修改接口

liweidong
ShiJiuZhou 3 weeks ago
parent 78f7e0b558
commit 2925350865
  1. 4
      blade-ops/blade-develop/pom.xml
  2. 32
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/feign/IBasicClazzClient.java
  3. 42
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/energy/feign/IHttpRequestClient.java
  4. 29
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkPlanClient.java
  5. 41
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IPlanTestClient.java
  6. 31
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IWorkPlanItemClient.java
  7. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/BasicClazzClient.java
  8. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/feign/HttpRequestClient.java
  9. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
  10. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java
  11. 15
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java
  12. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java
  13. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java
  14. 176
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java
  15. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java
  16. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkPlanClient.java
  17. 32
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/PlanTestClient.java
  18. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/WorkPlanItemClient.java
  19. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java
  20. 6
      blade-service/blade-scheduling/pom.xml
  21. 35
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java
  22. 32
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java
  23. 181
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -41,10 +41,6 @@
<groupId>org.springblade</groupId>
<artifactId>blade-dict-api</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-develop-api</artifactId>
</dependency>
</dependencies>
<build>

@ -0,0 +1,32 @@
package org.springblade.desk.basic.feign;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:20
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IBasicClazzClient {
String API_PREFIX = "/feign/client/basic/basicClazz";
String LIST = API_PREFIX + "/list";
/**
* 查询
* @param lambdaQueryWrapper
* @return
*/
@GetMapping(LIST)
List<BasicClazz> list(LambdaQueryWrapper<BasicClazz> lambdaQueryWrapper);
}

@ -0,0 +1,42 @@
package org.springblade.desk.energy.feign;
import com.alibaba.fastjson.JSONObject;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.secure.BladeUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:47
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IHttpRequestClient {
String API_PREFIX = "/feign/client/energy/httpRequest";
String LAUNCH_TEST = API_PREFIX + "/launchTest";
/**
* 发起测试
* @param batchNo 批次号
* @param quantity 数量
* @param woCode 工单号
* @param remark 备注
* @param value
* @param label 标签
* @param i 次数
* @param curUserInfo 当前用户信息
* @param partCode 零件号
* @param partName 零件名称
* @param productType 产品类型
* @param pptCode 产品型号
* @return 返回结果
* @throws Exception
*/
@PostMapping(LAUNCH_TEST)
JSONObject launchTest(String batchNo, Integer quantity, String woCode, String remark, String value, String label, int i, BladeUser curUserInfo, String partCode, String partName, String productType, String pptCode) throws Exception;
}

@ -0,0 +1,29 @@
package org.springblade.desk.produce.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:38
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IWorkPlanClient {
String API_PREFIX = "/feign/client/QA/workPlan";
String SELECT_BY_ID = API_PREFIX + "/selectById";
/**
* 查询车间计划
* @param wpId id
* @return 车间计划
*/
@GetMapping(SELECT_BY_ID)
WorkPlan selectById(Long wpId);
}

@ -0,0 +1,41 @@
package org.springblade.desk.quality.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.Date;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:28
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IPlanTestClient {
String API_PREFIX = "/feign/client/QA/planTest";
String GET_LATEST_DATA = API_PREFIX + "/getLatestData";
String SAVE = API_PREFIX + "/save";
/**
* 获取最新的转试记录
* @param currentDate 当前日期
* @return 转试记录
*/
@GetMapping(GET_LATEST_DATA)
PlanTest getLatestData(Date currentDate);
/**
* 保存转试记录
* @param planTest 转试记录
*/
@PostMapping(SAVE)
void save(PlanTest planTest);
}

@ -0,0 +1,31 @@
package org.springblade.desk.quality.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:11
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IWorkPlanItemClient {
String API_PREFIX = "/feign/client/QA/workPlanItem";
String LIST_BY_WO_ID = API_PREFIX + "/listByWoId";
/**
* 根据工单id查询工序检验项
* @param woId 工单id
* @return 工序检验项
*/
@GetMapping(LIST_BY_WO_ID)
List<WorkPlanItem> listByWoId(Long woId);
}

@ -0,0 +1,28 @@
package org.springblade.desk.basic.feign;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.basic.service.IBasicClazzService;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:25
*/
@RestController
@Hidden()
public class BasicClazzClient implements IBasicClazzClient{
@Resource
private IBasicClazzService basicClazzService;
@Override
public List<BasicClazz> list(LambdaQueryWrapper<BasicClazz> lambdaQueryWrapper) {
return basicClazzService.list(lambdaQueryWrapper);
}
}

@ -0,0 +1,26 @@
package org.springblade.desk.energy.feign;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.energy.util.HttpRequestService;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:54
*/
@RestController
@Hidden()
public class HttpRequestClient implements IHttpRequestClient{
@Resource
private HttpRequestService httpRequestService;
@Override
public JSONObject launchTest(String batchNo, Integer quantity, String woCode, String remark, String value, String label, int i, BladeUser curUserInfo, String partCode, String partName, String productType, String pptCode) throws Exception {
return httpRequestService.launchTest(batchNo,quantity,woCode,remark,value,label,i,curUserInfo,partCode,partName,productType,pptCode);
}
}

@ -6,9 +6,6 @@ import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.secure.BladeUser;
import org.springframework.beans.factory.annotation.Value;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.service.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
@ -21,6 +18,9 @@ import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.List;
/**
* @author 石玖洲
*/
@Service
@RequiredArgsConstructor
public class HttpRequestService {

@ -1,37 +0,0 @@
package org.springblade.desk.logistics.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.service.IPrWorkOrderService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:00
*/
@RestController
@AllArgsConstructor
@RequestMapping("/prWorkOrder")
@Tag(name = "车间订单->视图", description = "车间订单->视图")
public class PrWorkOrderController {
@Resource
private IPrWorkOrderService prWorkOrderService;
@PostMapping(value = "/queryAllocationMess")
@ApiOperationSupport(order = 1)
@Operation(summary = "加载配套信息", description = "filterContext 查询参数")
private R<Map<String,Object>> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) {
return R.data(prWorkOrderService.queryAllocationMess(allocationMessPageDTO));
}
}

@ -26,15 +26,7 @@
package org.springblade.desk.logistics.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.logistics.pojo.entity.WeighData;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* 车间订单 服务类
@ -43,11 +35,4 @@ import java.util.Map;
* @since 2025-11-12
*/
public interface IPrWorkOrderService extends IService<PrWorkOrder> {
/**
* 查询分配信息
* @param dto 查询条件
* @return 分配信息
*/
Map<String,Object> queryAllocationMess(AllocationMessPageDTO dto);
}

@ -26,14 +26,8 @@
package org.springblade.desk.logistics.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.logistics.pojo.entity.PrWorkPlan;
import java.util.List;
import java.util.Map;
/**
* 车间订单序号 服务类
*
@ -41,24 +35,4 @@ import java.util.Map;
* @since 2025-11-12
*/
public interface IPrWorkPlanService extends IService<PrWorkPlan> {
/**
* 根据订单id查询
* @param woId 订单id
* @return 是否符合转试条件
*/
Boolean isTransferTest(Long woId);
/**
* 试转项目列表
* @return 试转项目列表
*/
List<Map<String,String>> trialItemList();
/**
* 发起试转
* @param data 试转数据
* @param user 用户
*/
void launchTest(Map<String,Object> data, BladeUser user) throws Exception;
}

@ -26,26 +26,13 @@
package org.springblade.desk.logistics.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.logistics.mapper.PrWorkOrderMapper;
import org.springblade.desk.logistics.mapper.WeighDataMapper;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.logistics.pojo.entity.WeighData;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springblade.desk.logistics.service.IPrWorkOrderService;
import org.springblade.desk.logistics.service.IWeighDataService;
import org.springblade.erpdata.feign.IErpDataLogisticsClient;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 车间订单 服务实现类
*
@ -56,18 +43,4 @@ import java.util.Map;
@Slf4j
@AllArgsConstructor
public class PrWorkOrderServiceImpl extends ServiceImpl<PrWorkOrderMapper, PrWorkOrder> implements IPrWorkOrderService {
@Resource
private IErpDataLogisticsClient erpDataLogisticsClient;
@Override
public Map<String,Object> queryAllocationMess(AllocationMessPageDTO dto) {
List<AllocationMessVO> allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData();
int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData();
Map<String,Object> result = new HashMap<>(3);
result.put("current",dto.getPageNum());
result.put("record",allocationMessList);
result.put("total",totalAllocationMessNum);
return result;
}
}

@ -1,35 +1,13 @@
package org.springblade.desk.logistics.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.basic.mapper.BasicClazzMapper;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.energy.util.HttpRequestService;
import org.springblade.desk.logistics.mapper.PrWorkPlanMapper;
import org.springblade.desk.logistics.pojo.entity.PrWorkPlan;
import org.springblade.desk.logistics.service.IPrWorkPlanService;
import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* 车间订单 服务实现类
*
@ -40,158 +18,4 @@ import java.util.stream.Collectors;
@Slf4j
@AllArgsConstructor
public class PrWorkPlanServiceImpl extends ServiceImpl<PrWorkPlanMapper, PrWorkPlan> implements IPrWorkPlanService {
private final IWorkPlanItemService prWorkPlanItemService;
@Resource
private final BasicClazzMapper basicClazzMapper;
@Resource
private final IErpDataProduceClient erpDataProduceClient;
private final IPlanTestService planTestService;
@Resource
private final PrWorkPlanMapper prWorkplanMapper;
private final HttpRequestService httpRequestService;
@Override
public Boolean isTransferTest(Long woId) {
List<WorkPlanItem> prWorkPlanItems = prWorkPlanItemService.listByWoId(woId);
// 没有试验项目,不能转试
if (!(prWorkPlanItems != null && !prWorkPlanItems.isEmpty())) {
return false;
}
boolean flag = false;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
// 如果试验项目中包含 承压检测 则代表可以发起转试 24/8/5 牛营杰确认
if ("承压检测".equals(prWorkPlanItem.getItemName())) {
if (prWorkPlanItem.getCheckResult() == -1) {
flag = true;
}
}
}
return flag;
}
@Override
public List<Map<String, String>> trialItemList() {
// 构造 SQL 查询语句
List<BasicClazz> basicClazzList = basicClazzMapper.selectList(new LambdaQueryWrapper<BasicClazz>()
.eq(BasicClazz::getBizType, 11));
List<String> nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList());
List<Map<String, String>> mapList = erpDataProduceClient.trialItemList(nameList).getData();
// 转换查询结果
List<Map<String, String>> result = new ArrayList<>();
if (mapList != null && !mapList.isEmpty()) {
for (Map<String,String> map : mapList) {
Map<String, String> item = new HashMap<>();
item.put("value", map.get("key") != null ? map.get("key") : "");
item.put("label", map.get("value") != null ? map.get("value") : "");
result.add(item);
}
}
return result;
}
@Override
public void launchTest(Map<String, Object> data, BladeUser user) throws Exception {
// 提取参数
String batchNo = (String) data.get("batchNo");
Integer quantity = Integer.parseInt(data.get("quantity").toString());
String woCode = (String) data.get("woCode");
String remark = (String) data.get("remark");
String partCode = (String) data.get("partCode");
String productType = (String) data.get("productType");
String partName = (String) data.get("partName");
Object testListObj = data.get("testList");
JSONArray testList = (JSONArray) JSON.toJSON(testListObj);
Long woId = Long.parseLong(data.get("woId").toString());
// 生成转试单号
String pptCode = generatePptCode();
// 获取相关工序
PrWorkPlan prWorkPlan = findRelevantWorkPlan(woId);
// 处理每个测试项
processTestItems(testList, batchNo, quantity, woCode, remark, partCode, partName, productType, pptCode, prWorkPlan, user);
}
private String generatePptCode() {
Calendar c = Calendar.getInstance();
Date currentDate = new Date();
c.setTime(currentDate);
String year = String.valueOf(c.get(Calendar.YEAR));
int month = c.get(Calendar.MONTH) + 1;
String formattedMonth = month < 10 ? "0" + month : String.valueOf(month);
PlanTest latestData = planTestService.getLatestData(currentDate);
StringBuilder pptCode = new StringBuilder("LCR" + year + "-" + formattedMonth);
if (latestData != null && latestData.getId() != null) {
if (StringUtils.isNotBlank(latestData.getCode())) {
String numStr = String.valueOf(Integer.parseInt(latestData.getCode().substring(10)) + 1);
pptCode.append("0".repeat(Math.max(0, 6 - numStr.length())));
pptCode.append(numStr);
}
} else {
pptCode.append("000001");
}
return pptCode.toString();
}
private PrWorkPlan findRelevantWorkPlan(Long woId) {
List<WorkPlanItem> prWorkPlanItems = prWorkPlanItemService.listByWoId(woId);
PrWorkPlan prWorkPlan = null;
for (WorkPlanItem item : prWorkPlanItems) {
if ("承压检测".equals(item.getItemName()) || "承压测试".equals(item.getItemName()) || "承压测试检测".equals(item.getItemName())) {
if (item.getCheckResult() == -1) {
prWorkPlan = prWorkplanMapper.selectById(item.getWpId());
}
}
}
return prWorkPlan;
}
private void processTestItems(JSONArray testList, String batchNo, Integer quantity, String woCode, String remark,
String partCode, String partName, String productType, String pptCode,
PrWorkPlan prWorkPlan, BladeUser user) throws Exception {
for (int i = 0; i < testList.size(); i++) {
JSONObject object = testList.getObject(i, JSONObject.class);
String value = object.getString("value");
String label = object.getString("label");
JSONObject response = httpRequestService.launchTest(
batchNo, quantity, woCode, remark, value, label, i + 1, user, partCode, partName, productType, pptCode
);
if (response != null) {
saveTestRecord(prWorkPlan, user, value, label, pptCode, response, i + 1);
} else {
throw new BusinessException("LIMS系统接口调用失败,请联系相关负责人处理。");
}
}
}
private void saveTestRecord(PrWorkPlan prWorkPlan, BladeUser user, String testKey, String testName,
String pptCode, JSONObject response, int sequence) {
PlanTest prPlanTest = new PlanTest();
prPlanTest.setWpId(prWorkPlan.getPpsId());
prPlanTest.setTestUserId(user.getUserId());
prPlanTest.setTestUserName(user.getUserName());
prPlanTest.setTestTime(LocalDateTime.now());
prPlanTest.setTestNo((long) sequence);
prPlanTest.setWpCode(testKey);
prPlanTest.setTestName(testName);
prPlanTest.setTestStatus("已送");
prPlanTest.setCode(pptCode);
prPlanTest.setErpId(response.getString("id"));
prPlanTest.setDataId(response.getString("str1"));
planTestService.save(prPlanTest);
}
}

@ -4,21 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.service.IPrWorkPlanService;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 车间作业计划 控制器
@ -34,8 +29,6 @@ public class PrWorkPlanController extends BladeController {
private final IWorkPlanService workPlanService;
private final IPrWorkPlanService prWorkPlanService;
/**
* 车间作业计划
*/
@ -46,30 +39,4 @@ public class PrWorkPlanController extends BladeController {
IPage<WorkPlanVO> pages = workPlanService.queryWorkPlan(Condition.getPage(query), cardNo);
return R.data(pages);
}
/**
* [转试记录] 判断是否符合转试条件
*/
@PostMapping("/isTransferTest")
@ApiOperationSupport(order = 72)
@Operation(summary = "是否符合转试条件", description = "Long woId 订单id")
public R<Boolean> isTransferTest(@RequestParam("woId") Long woId) {
return R.data(prWorkPlanService.isTransferTest(woId));
}
@PostMapping("/trialItemList")
@ApiOperationSupport(order = 73)
@Operation(summary = "获取转试的试验计划", description = "无需传参")
public R<List<Map<String,String>>> trialItemList() {
return R.data(prWorkPlanService.trialItemList());
}
@PostMapping("/launchTest")
@ApiOperationSupport(order = 73)
@Operation(summary = "发起试验计划", description = "无需传参")
public R launchTest(@RequestBody Map<String,Object> data, HttpServletRequest request) throws Exception {
BladeUser user = AuthUtil.getUser();
prWorkPlanService.launchTest(data, user);
return R.success();
}
}

@ -0,0 +1,25 @@
package org.springblade.desk.produce.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:41
*/
@RestController
@Hidden()
public class WorkPlanClient implements IWorkPlanClient{
@Resource
private IWorkPlanService workPlanService;
@Override
public WorkPlan selectById(Long wpId) {
return workPlanService.getById(wpId);
}
}

@ -0,0 +1,32 @@
package org.springblade.desk.quality.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:32
*/
@RestController
@Hidden()
public class PlanTestClient implements IPlanTestClient{
@Resource
private IPlanTestService planTestService;
@Override
public PlanTest getLatestData(Date currentDate) {
return planTestService.getLatestData(currentDate);
}
@Override
public void save(PlanTest planTest) {
planTestService.save(planTest);
}
}

@ -0,0 +1,27 @@
package org.springblade.desk.quality.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-23 10:16
*/
@RestController
@Hidden()
public class WorkPlanItemClient implements IWorkPlanItemClient{
@Resource
private IWorkPlanItemService workPlanItemService;
@Override
public List<WorkPlanItem> listByWoId(Long woId) {
return workPlanItemService.listByWoId(woId);
}
}

@ -15,8 +15,6 @@ import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.desk.energy.util.HttpRequestService;
import org.springblade.desk.logistics.mapper.PrWorkOrderMapper;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
@ -77,7 +75,7 @@ public class PlanTestServiceImpl extends BaseServiceImpl<PlanTestMapper, PlanTes
private HttpRequestService httpRequestService;
@Resource
private PrWorkOrderMapper prWorkOrderMapper;
private WorkOrderMapper prWorkOrderMapper;
@Override
public JSONArray detailPage(PlanTest prPlanTest) {
@ -169,8 +167,8 @@ public class PlanTestServiceImpl extends BaseServiceImpl<PlanTestMapper, PlanTes
@Override
public JSONArray detail(PlanTest planTest) {
// 查询woId
List<PrWorkOrder> prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper<PrWorkOrder>()
.eq(PrWorkOrder::getWpId, planTest.getWpId()));
List<WorkOrder> prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper<WorkOrder>()
.eq(WorkOrder::getWpId, planTest.getWpId()));
if (prWorkOrderList == null || prWorkOrderList.isEmpty()){
return null;
}
@ -188,8 +186,8 @@ public class PlanTestServiceImpl extends BaseServiceImpl<PlanTestMapper, PlanTes
.isNull(PlanTest::getResult));
if (planTestList != null && !planTestList.isEmpty()) {
for (PlanTest prPlanTest : planTestList) {
List<PrWorkOrder> prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper<PrWorkOrder>()
.eq(PrWorkOrder::getWpId, prPlanTest.getWpId()));
List<WorkOrder> prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper<WorkOrder>()
.eq(WorkOrder::getWpId, prPlanTest.getWpId()));
JSONObject obj = httpRequestService.testRec(prWorkOrderList.get(0).getWoCode(), prPlanTest.getErpId(),prPlanTest.getDataId());
if (obj != null) {
JSONObject data = obj.getJSONObject("data");

@ -51,6 +51,12 @@
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-erpdata-api</artifactId>
<version>4.6.0.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -32,6 +32,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
@ -41,10 +42,12 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.scheduling.scheduling.dto.WorkOrderDto;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel;
@ -331,4 +334,36 @@ public class WorkOrderController extends BladeController {
return R.success();
}
/**
* [转试记录] 判断是否符合转试条件
*/
@PostMapping("/isTransferTest")
@ApiOperationSupport(order = 72)
@Operation(summary = "是否符合转试条件", description = "Long woId 订单id")
public R<Boolean> isTransferTest(@RequestParam("woId") Long woId) {
return R.data(workOrderService.isTransferTest(woId));
}
@PostMapping("/trialItemList")
@ApiOperationSupport(order = 73)
@Operation(summary = "获取转试的试验计划", description = "无需传参")
public R<List<Map<String,String>>> trialItemList() {
return R.data(workOrderService.trialItemList());
}
@PostMapping("/launchTest")
@ApiOperationSupport(order = 73)
@Operation(summary = "发起试验计划", description = "无需传参")
public R launchTest(@RequestBody Map<String,Object> data, HttpServletRequest request) throws Exception {
BladeUser user = AuthUtil.getUser();
workOrderService.launchTest(data, user);
return R.success();
}
@PostMapping(value = "/queryAllocationMess")
@ApiOperationSupport(order = 1)
@Operation(summary = "加载配套信息", description = "filterContext 查询参数")
private R<Map<String,Object>> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) {
return R.data(workOrderService.queryAllocationMess(allocationMessPageDTO));
}
}

@ -28,6 +28,8 @@ package org.springblade.scheduling.scheduling.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.scheduling.pojo.vo.WorkOrderVO;
import org.springblade.scheduling.scheduling.dto.WorkOrderDto;
@ -36,6 +38,7 @@ import org.springblade.scheduling.scheduling.excel.WorkOrderExcel;
import org.springblade.scheduling.scheduling.vo.WorkPlanVO;
import java.util.List;
import java.util.Map;
/**
* 车间订单表 服务类
@ -48,7 +51,7 @@ public interface IWorkOrderService extends BaseService<WorkOrderEntity> {
* 自定义分页
*
* @param page 分页参数
* @param WorkOrder 查询参数
* @param workOrder 查询参数
* @return IPage<WorkOrderVO>
*/
IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderVO workOrder);
@ -118,4 +121,31 @@ public interface IWorkOrderService extends BaseService<WorkOrderEntity> {
void test();
/**
* 根据订单id查询
* @param woId 订单id
* @return 是否符合转试条件
*/
Boolean isTransferTest(Long woId);
/**
* 试转项目列表
* @return 试转项目列表
*/
List<Map<String,String>> trialItemList();
/**
* 发起试转
* @param data 试转数据
* @param user 用户
* @throws Exception
*/
void launchTest(Map<String,Object> data, BladeUser user) throws Exception;
/**
* 查询分配信息
* @param dto 查询条件
* @return 分配信息
*/
Map<String,Object> queryAllocationMess(AllocationMessPageDTO dto);
}

@ -26,6 +26,8 @@
package org.springblade.scheduling.scheduling.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -34,20 +36,35 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.jackson.JsonUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.basic.feign.IBasicClazzClient;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.entity.DsPartVersionEntity;
import org.springblade.desk.energy.feign.IHttpRequestClient;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.produce.feign.IWorkPlanClient;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.quality.feign.IPlanTestClient;
import org.springblade.desk.quality.feign.IWorkPlanItemClient;
import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.erpdata.feign.IErpDataLogisticsClient;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.scheduling.pojo.entity.*;
import org.springblade.scheduling.pojo.enums.WorkOrderEnum;
import org.springblade.scheduling.pojo.vo.WorkOrderVO;
@ -110,7 +127,22 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final ICraftAbilityService craftAbilityService;
private final IPartVersionService partVersionService;
private final IPartRelationService partRelationService;
@Resource
private final StGlassCakeOutClient glassCakeOutClient;
@Resource
private final IWorkPlanItemClient workPlanItemClient;
@Resource
private final IBasicClazzClient basicClazzClient;
@Resource
private final IErpDataProduceClient erpDataProduceClient;
@Resource
private final IPlanTestClient planTestClient;
@Resource
private final IWorkPlanClient workPlanClient;
@Resource
private final IHttpRequestClient httpRequestClient;
@Resource
private IErpDataLogisticsClient erpDataLogisticsClient;
@Value("${business.oldMes.url}")
private String oldMesUrl;
@ -2390,4 +2422,153 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 将Map的值转换为List返回
return new ArrayList<>(mergeMap.values());
}
@Override
public Boolean isTransferTest(Long woId) {
List<WorkPlanItem> prWorkPlanItems = workPlanItemClient.listByWoId(woId);
// 没有试验项目,不能转试
if (!(prWorkPlanItems != null && !prWorkPlanItems.isEmpty())) {
return false;
}
boolean flag = false;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
// 如果试验项目中包含 承压检测 则代表可以发起转试 24/8/5 牛营杰确认
if ("承压检测".equals(prWorkPlanItem.getItemName())) {
if (prWorkPlanItem.getCheckResult() == -1) {
flag = true;
}
}
}
return flag;
}
@Override
public List<Map<String, String>> trialItemList() {
// 构造 SQL 查询语句
List<BasicClazz> basicClazzList = basicClazzClient.list(new LambdaQueryWrapper<BasicClazz>()
.eq(BasicClazz::getBizType, 11));
List<String> nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList());
List<Map<String, String>> mapList = erpDataProduceClient.trialItemList(nameList).getData();
// 转换查询结果
List<Map<String, String>> result = new ArrayList<>();
if (mapList != null && !mapList.isEmpty()) {
for (Map<String,String> map : mapList) {
Map<String, String> item = new HashMap<>();
item.put("value", map.get("key") != null ? map.get("key") : "");
item.put("label", map.get("value") != null ? map.get("value") : "");
result.add(item);
}
}
return result;
}
@Override
public Map<String,Object> queryAllocationMess(AllocationMessPageDTO dto) {
List<AllocationMessVO> allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData();
int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData();
Map<String,Object> result = new HashMap<>(3);
result.put("current",dto.getPageNum());
result.put("record",allocationMessList);
result.put("total",totalAllocationMessNum);
return result;
}
@Override
public void launchTest(Map<String, Object> data, BladeUser user) throws Exception {
// 提取参数
String batchNo = (String) data.get("batchNo");
Integer quantity = Integer.parseInt(data.get("quantity").toString());
String woCode = (String) data.get("woCode");
String remark = (String) data.get("remark");
String partCode = (String) data.get("partCode");
String productType = (String) data.get("productType");
String partName = (String) data.get("partName");
Object testListObj = data.get("testList");
JSONArray testList = (JSONArray) JSON.toJSON(testListObj);
Long woId = Long.parseLong(data.get("woId").toString());
// 生成转试单号
String pptCode = generatePptCode();
// 获取相关工序
WorkPlan workPlan = findRelevantWorkPlan(woId);
// 处理每个测试项
processTestItems(testList, batchNo, quantity, woCode, remark, partCode, partName, productType, pptCode, workPlan, user);
}
private String generatePptCode() {
Calendar c = Calendar.getInstance();
Date currentDate = new Date();
c.setTime(currentDate);
String year = String.valueOf(c.get(Calendar.YEAR));
int month = c.get(Calendar.MONTH) + 1;
String formattedMonth = month < 10 ? "0" + month : String.valueOf(month);
PlanTest latestData = planTestClient.getLatestData(currentDate);
StringBuilder pptCode = new StringBuilder("LCR" + year + "-" + formattedMonth);
if (latestData != null && latestData.getId() != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(latestData.getCode())) {
String numStr = String.valueOf(Integer.parseInt(latestData.getCode().substring(10)) + 1);
pptCode.append("0".repeat(Math.max(0, 6 - numStr.length())));
pptCode.append(numStr);
}
} else {
pptCode.append("000001");
}
return pptCode.toString();
}
private WorkPlan findRelevantWorkPlan(Long woId) {
List<WorkPlanItem> prWorkPlanItems = workPlanItemClient.listByWoId(woId);
WorkPlan prWorkPlan = null;
for (WorkPlanItem item : prWorkPlanItems) {
if ("承压检测".equals(item.getItemName()) || "承压测试".equals(item.getItemName()) || "承压测试检测".equals(item.getItemName())) {
if (item.getCheckResult() == -1) {
prWorkPlan = workPlanClient.selectById(item.getWpId());
}
}
}
return prWorkPlan;
}
private void processTestItems(JSONArray testList, String batchNo, Integer quantity, String woCode, String remark,
String partCode, String partName, String productType, String pptCode,
WorkPlan workPlan, BladeUser user) throws Exception {
for (int i = 0; i < testList.size(); i++) {
JSONObject object = testList.getObject(i, JSONObject.class);
String value = object.getString("value");
String label = object.getString("label");
JSONObject response = httpRequestClient.launchTest(
batchNo, quantity, woCode, remark, value, label, i + 1, user, partCode, partName, productType, pptCode
);
if (response != null) {
saveTestRecord(workPlan, user, value, label, pptCode, response, i + 1);
} else {
throw new BusinessException("LIMS系统接口调用失败,请联系相关负责人处理。");
}
}
}
private void saveTestRecord(WorkPlan workPlan, BladeUser user, String testKey, String testName,
String pptCode, JSONObject response, int sequence) {
PlanTest prPlanTest = new PlanTest();
prPlanTest.setWpId(workPlan.getId());
prPlanTest.setTestUserId(user.getUserId());
prPlanTest.setTestUserName(user.getUserName());
prPlanTest.setTestTime(LocalDateTime.now());
prPlanTest.setTestNo((long) sequence);
prPlanTest.setWpCode(testKey);
prPlanTest.setTestName(testName);
prPlanTest.setTestStatus("已送");
prPlanTest.setCode(pptCode);
prPlanTest.setErpId(response.getString("id"));
prPlanTest.setDataId(response.getString("str1"));
planTestClient.save(prPlanTest);
}
}

Loading…
Cancel
Save