From 2925350865d38366fb2f4d9a8e908413fccfb7aa Mon Sep 17 00:00:00 2001 From: ShiJiuZhou <15315423958@163.com> Date: Thu, 23 Apr 2026 11:14:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blade-ops/blade-develop/pom.xml | 4 - .../desk/basic/feign/IBasicClazzClient.java | 32 ++++ .../desk/energy/feign/IHttpRequestClient.java | 42 ++++ .../desk/produce/feign/IWorkPlanClient.java | 29 +++ .../desk/quality/feign/IPlanTestClient.java | 41 ++++ .../quality/feign/IWorkPlanItemClient.java | 31 +++ .../desk/basic/feign/BasicClazzClient.java | 28 +++ .../desk/energy/feign/HttpRequestClient.java | 26 +++ .../desk/energy/util/HttpRequestService.java | 6 +- .../controller/PrWorkOrderController.java | 37 ---- .../service/IPrWorkOrderService.java | 15 -- .../logistics/service/IPrWorkPlanService.java | 26 --- .../service/impl/PrWorkOrderServiceImpl.java | 27 --- .../service/impl/PrWorkPlanServiceImpl.java | 176 ----------------- .../controller/PrWorkPlanController.java | 39 +--- .../desk/produce/feign/WorkPlanClient.java | 25 +++ .../desk/quality/feign/PlanTestClient.java | 32 ++++ .../quality/feign/WorkPlanItemClient.java | 27 +++ .../service/impl/PlanTestServiceImpl.java | 12 +- blade-service/blade-scheduling/pom.xml | 6 + .../controller/WorkOrderController.java | 35 ++++ .../scheduling/service/IWorkOrderService.java | 32 +++- .../service/impl/WorkOrderServiceImpl.java | 181 ++++++++++++++++++ 23 files changed, 577 insertions(+), 332 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/feign/IBasicClazzClient.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/energy/feign/IHttpRequestClient.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkPlanClient.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IPlanTestClient.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IWorkPlanItemClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/BasicClazzClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/energy/feign/HttpRequestClient.java delete mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkPlanClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/PlanTestClient.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/WorkPlanItemClient.java diff --git a/blade-ops/blade-develop/pom.xml b/blade-ops/blade-develop/pom.xml index 8782bc69..1839b9d0 100644 --- a/blade-ops/blade-develop/pom.xml +++ b/blade-ops/blade-develop/pom.xml @@ -41,10 +41,6 @@ org.springblade blade-dict-api - - org.springblade - blade-develop-api - diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/feign/IBasicClazzClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/feign/IBasicClazzClient.java new file mode 100644 index 00000000..9b150c86 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/feign/IBasicClazzClient.java @@ -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 list(LambdaQueryWrapper lambdaQueryWrapper); +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/energy/feign/IHttpRequestClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/energy/feign/IHttpRequestClient.java new file mode 100644 index 00000000..ef0adf0c --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/energy/feign/IHttpRequestClient.java @@ -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; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkPlanClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkPlanClient.java new file mode 100644 index 00000000..e7fe83a6 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IWorkPlanClient.java @@ -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); +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IPlanTestClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IPlanTestClient.java new file mode 100644 index 00000000..35392333 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IPlanTestClient.java @@ -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); +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IWorkPlanItemClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IWorkPlanItemClient.java new file mode 100644 index 00000000..200c966e --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/IWorkPlanItemClient.java @@ -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 listByWoId(Long woId); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/BasicClazzClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/BasicClazzClient.java new file mode 100644 index 00000000..18f7f68c --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/feign/BasicClazzClient.java @@ -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 list(LambdaQueryWrapper lambdaQueryWrapper) { + return basicClazzService.list(lambdaQueryWrapper); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/feign/HttpRequestClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/feign/HttpRequestClient.java new file mode 100644 index 00000000..5c03a4f9 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/feign/HttpRequestClient.java @@ -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); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java index 4a521853..bf596f09 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java @@ -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 { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java deleted file mode 100644 index c14baa33..00000000 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java +++ /dev/null @@ -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> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) { - return R.data(prWorkOrderService.queryAllocationMess(allocationMessPageDTO)); - } -} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java index 25734adb..f885ed67 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java @@ -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 { - - /** - * 查询分配信息 - * @param dto 查询条件 - * @return 分配信息 - */ - Map queryAllocationMess(AllocationMessPageDTO dto); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java index d25a927e..42b7916e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java @@ -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 { - - /** - * 根据订单id查询 - * @param woId 订单id - * @return 是否符合转试条件 - */ - Boolean isTransferTest(Long woId); - - /** - * 试转项目列表 - * @return 试转项目列表 - */ - List> trialItemList(); - - /** - * 发起试转 - * @param data 试转数据 - * @param user 用户 - */ - void launchTest(Map data, BladeUser user) throws Exception; } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java index d769cec2..58cae3a1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java @@ -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 implements IPrWorkOrderService { - - @Resource - private IErpDataLogisticsClient erpDataLogisticsClient; - - @Override - public Map queryAllocationMess(AllocationMessPageDTO dto) { - List allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData(); - int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData(); - Map result = new HashMap<>(3); - result.put("current",dto.getPageNum()); - result.put("record",allocationMessList); - result.put("total",totalAllocationMessNum); - return result; - } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java index 9fb27963..4a7c2951 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java @@ -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 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 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> trialItemList() { - // 构造 SQL 查询语句 - List basicClazzList = basicClazzMapper.selectList(new LambdaQueryWrapper() - .eq(BasicClazz::getBizType, 11)); - List nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList()); - List> mapList = erpDataProduceClient.trialItemList(nameList).getData(); - // 转换查询结果 - List> result = new ArrayList<>(); - if (mapList != null && !mapList.isEmpty()) { - for (Map map : mapList) { - Map 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 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 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); - } - } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java index 20914ed7..fcac541c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java @@ -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 pages = workPlanService.queryWorkPlan(Condition.getPage(query), cardNo); return R.data(pages); } - - /** - * [转试记录] 判断是否符合转试条件 - */ - @PostMapping("/isTransferTest") - @ApiOperationSupport(order = 72) - @Operation(summary = "是否符合转试条件", description = "Long woId 订单id") - public R isTransferTest(@RequestParam("woId") Long woId) { - return R.data(prWorkPlanService.isTransferTest(woId)); - } - - @PostMapping("/trialItemList") - @ApiOperationSupport(order = 73) - @Operation(summary = "获取转试的试验计划", description = "无需传参") - public R>> trialItemList() { - return R.data(prWorkPlanService.trialItemList()); - } - - @PostMapping("/launchTest") - @ApiOperationSupport(order = 73) - @Operation(summary = "发起试验计划", description = "无需传参") - public R launchTest(@RequestBody Map data, HttpServletRequest request) throws Exception { - BladeUser user = AuthUtil.getUser(); - prWorkPlanService.launchTest(data, user); - return R.success(); - } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkPlanClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkPlanClient.java new file mode 100644 index 00000000..cc5046ff --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/WorkPlanClient.java @@ -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); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/PlanTestClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/PlanTestClient.java new file mode 100644 index 00000000..3546f5eb --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/PlanTestClient.java @@ -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); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/WorkPlanItemClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/WorkPlanItemClient.java new file mode 100644 index 00000000..fc7dbb14 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/WorkPlanItemClient.java @@ -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 listByWoId(Long woId) { + return workPlanItemService.listByWoId(woId); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java index fdc8816c..091d310b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java @@ -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 prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper() - .eq(PrWorkOrder::getWpId, planTest.getWpId())); + List prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper() + .eq(WorkOrder::getWpId, planTest.getWpId())); if (prWorkOrderList == null || prWorkOrderList.isEmpty()){ return null; } @@ -188,8 +186,8 @@ public class PlanTestServiceImpl extends BaseServiceImpl prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper() - .eq(PrWorkOrder::getWpId, prPlanTest.getWpId())); + List prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper() + .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"); diff --git a/blade-service/blade-scheduling/pom.xml b/blade-service/blade-scheduling/pom.xml index 8915f1b8..4b65ed54 100644 --- a/blade-service/blade-scheduling/pom.xml +++ b/blade-service/blade-scheduling/pom.xml @@ -51,6 +51,12 @@ 4.6.0.RELEASE compile + + org.springblade + blade-erpdata-api + 4.6.0.RELEASE + compile + diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java index 369d4b77..84c99153 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java @@ -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 isTransferTest(@RequestParam("woId") Long woId) { + return R.data(workOrderService.isTransferTest(woId)); + } + + @PostMapping("/trialItemList") + @ApiOperationSupport(order = 73) + @Operation(summary = "获取转试的试验计划", description = "无需传参") + public R>> trialItemList() { + return R.data(workOrderService.trialItemList()); + } + + @PostMapping("/launchTest") + @ApiOperationSupport(order = 73) + @Operation(summary = "发起试验计划", description = "无需传参") + public R launchTest(@RequestBody Map 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> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) { + return R.data(workOrderService.queryAllocationMess(allocationMessPageDTO)); + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java index 797aaa11..48cfe17e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java @@ -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 { * 自定义分页 * * @param page 分页参数 - * @param WorkOrder 查询参数 + * @param workOrder 查询参数 * @return IPage */ IPage selectWorkOrderPage(IPage page, WorkOrderVO workOrder); @@ -118,4 +121,31 @@ public interface IWorkOrderService extends BaseService { void test(); + /** + * 根据订单id查询 + * @param woId 订单id + * @return 是否符合转试条件 + */ + Boolean isTransferTest(Long woId); + + /** + * 试转项目列表 + * @return 试转项目列表 + */ + List> trialItemList(); + + /** + * 发起试转 + * @param data 试转数据 + * @param user 用户 + * @throws Exception + */ + void launchTest(Map data, BladeUser user) throws Exception; + + /** + * 查询分配信息 + * @param dto 查询条件 + * @return 分配信息 + */ + Map queryAllocationMess(AllocationMessPageDTO dto); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index c2b69bb5..ea89e594 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -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(mergeMap.values()); } + + @Override + public Boolean isTransferTest(Long woId) { + List 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> trialItemList() { + // 构造 SQL 查询语句 + List basicClazzList = basicClazzClient.list(new LambdaQueryWrapper() + .eq(BasicClazz::getBizType, 11)); + List nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList()); + List> mapList = erpDataProduceClient.trialItemList(nameList).getData(); + // 转换查询结果 + List> result = new ArrayList<>(); + if (mapList != null && !mapList.isEmpty()) { + for (Map map : mapList) { + Map 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 queryAllocationMess(AllocationMessPageDTO dto) { + List allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData(); + int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData(); + Map result = new HashMap<>(3); + result.put("current",dto.getPageNum()); + result.put("record",allocationMessList); + result.put("total",totalAllocationMessNum); + return result; + } + + @Override + public void launchTest(Map 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 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); + } }