From c7147943f3245575253121bebee605e5abd2fc58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Tue, 14 Apr 2026 19:42:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../produce/ReworkNoProcessProcessor.java | 30 ++ .../desk/produce/feign/IDisTaskingClient.java | 6 + .../erpdata/feign/IErpDataProduceClient.java | 55 ++++ .../feign/IErpDataProduceClientFallback.java | 34 +- .../erpdata/pojo/dto/ReworkProcessDTO.java | 3 + .../erpdata/pojo/vo/MesRbRedoVO.java | 115 +++++++ .../pojo/vo/PpmReportDetailModelVO.java | 185 +++++++++++ .../controller/YieldOrderController.java | 7 +- .../desk/order/mapper/YieldOrderMapper.java | 2 + .../desk/order/mapper/YieldOrderMapper.xml | 10 + .../order/service/IYieldOrderService.java | 6 + .../service/impl/YieldOrderServiceImpl.java | 33 +- .../controller/ReworkProcessController.java | 75 ++--- .../desk/produce/feign/DisTaskingClient.java | 8 + .../desk/produce/mapper/WorkOrderMapper.java | 2 + .../desk/produce/mapper/WorkOrderMapper.xml | 24 ++ .../desk/produce/service/IPdaSaveService.java | 7 +- .../produce/service/IWorkOrderService.java | 4 + .../service/impl/PdaSaveServiceImpl.java | 304 ++++++++++-------- .../service/impl/WorkOrderServiceImpl.java | 9 +- .../erpdata/feign/ErpDataProduceClient.java | 34 +- .../erpdata/mapper/ErpDataProduceMapper.java | 11 + .../erpdata/mapper/ErpDataProduceMapper.xml | 72 +++++ .../service/IErpDataProduceService.java | 17 +- .../impl/ErpDataProduceServiceImpl.java | 112 ++++++- .../controller/WorkOrderController.java | 2 +- .../controller/WorkPlanController.java | 2 +- 27 files changed, 960 insertions(+), 209 deletions(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/ReworkNoProcessProcessor.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MesRbRedoVO.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PpmReportDetailModelVO.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/ReworkNoProcessProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/ReworkNoProcessProcessor.java new file mode 100644 index 00000000..8af6ad85 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/ReworkNoProcessProcessor.java @@ -0,0 +1,30 @@ +package org.springblade.job.processor.produce; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.produce.feign.IDisTaskingClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 返工无工艺接收 + * + * @author litao + */ +@Component +@Data +@Slf4j +public class ReworkNoProcessProcessor implements BasicProcessor { + + @Resource + private IDisTaskingClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("返工无工艺定时接收"); + return new ProcessResult(client.receiveOrder()); + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java index e371b9a2..7d2eae52 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java @@ -17,6 +17,7 @@ public interface IDisTaskingClient { String API_PREFIX = "/feign/client/disTasking"; String SYNC_DIS_TASKING = API_PREFIX + "/syncDisTasking"; + String RECEIVE_ORDER = API_PREFIX + "/receiveOrder"; /** @@ -26,4 +27,9 @@ public interface IDisTaskingClient { @GetMapping(SYNC_DIS_TASKING) boolean syncDisTasking(); + /** + * 返工无工艺接收 + */ + @GetMapping(RECEIVE_ORDER) + boolean receiveOrder(); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index b257dc98..272c6380 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -3,6 +3,9 @@ package org.springblade.erpdata.feign; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; +import org.springblade.erpdata.pojo.vo.MesRbRedoVO; +import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springframework.cloud.openfeign.FeignClient; @@ -31,6 +34,12 @@ public interface IErpDataProduceClient { String CUSTODIAN = API_PREFIX + "/getCustodian"; String CHK_SJJD = API_PREFIX + "/chkSjjd"; String CHK_SHJH = API_PREFIX + "/chkShjh"; + String REVIEW_FORM_MESS = API_PREFIX + "/reviewFormMess"; + String LOAD_REWORK_PLAN = API_PREFIX + "/loadReworkPlan"; + String LOAD_REWORK_PLAN_SIZE = API_PREFIX + "/loadReworkPlanSize"; + String COMPLETE_ORDER = API_PREFIX + "/completeOrder"; + String RECEIVE_ORDER = API_PREFIX + "/receiveOrder"; + String LOAD_REWORK_NO_PROCESS = API_PREFIX + "/loadReworkNoProcess"; /** * 缺件申报-通过零件号获取批次号 @@ -55,6 +64,7 @@ public interface IErpDataProduceClient { R loadReworkOrderSize(@RequestParam(value = "reworkCode", required = false) String reworkCode, @RequestParam(value = "partCode", required = false) String partCode, @RequestParam(value = "batchNo", required = false) String batchNo); + /** * 获取产品区域 */ @@ -84,4 +94,49 @@ public interface IErpDataProduceClient { */ @GetMapping(CHK_SHJH) R chkShjh(@RequestParam("woCode") String woCode, @RequestParam("ypCode") String ypCode, @RequestParam("partCode") String partCode, @RequestParam("productIdent") String productIdent, @RequestParam("makeQty") Double makeQty, @RequestParam("memo") String memo); + + /** + * 查询erp审理单 + */ + @GetMapping(REVIEW_FORM_MESS) + R> reviewFormMess(@RequestParam(value = "queryType") Boolean queryType, + @RequestParam(value = "reworkCode", required = false) String reworkCode, + @RequestParam(value = "partCode", required = false) String partCode, + @RequestParam(value = "batchNo", required = false) String batchNo); + + /** + * 返工计划查询 + */ + @GetMapping(LOAD_REWORK_PLAN) + R> loadReworkPlan(@RequestParam(value = "reworkCode", required = false) String reworkCode, + @RequestParam(value = "partCode", required = false) String partCode, + @RequestParam(value = "batchNo", required = false) String batchNo, + @RequestParam(value = "current") Integer current, + @RequestParam(value = "size") Integer size); + + /** + * 返工计划数量 + */ + @GetMapping(LOAD_REWORK_PLAN_SIZE) + R loadReworkPlanSize(@RequestParam(value = "reworkCode", required = false) String reworkCode, + @RequestParam(value = "partCode", required = false) String partCode, + @RequestParam(value = "batchNo", required = false) String batchNo); + + /** + * 返工订单完成 + */ + @GetMapping(COMPLETE_ORDER) + R completeOrder(@RequestParam(value = "redono") String redono, @RequestParam(value = "seqno") Integer seqno, @RequestParam(value = "prtno") String prtno, @RequestParam(value = "splcode") String splcode, @RequestParam(value = "amount") Double amount, @RequestParam(value = "bfqty") Integer bfqty, @RequestParam(value = "userName") String userName); + + /** + * 返工无工艺 + */ + @GetMapping(RECEIVE_ORDER) + R receiveOrder(@RequestParam(value = "redono") String redono, @RequestParam(value = "seqno") Integer seqno, @RequestParam(value = "prtno") String prtno, @RequestParam(value = "splcode") String splcode, @RequestParam(value = "amount") Double amount, @RequestParam(value = "reqqty") String reqqty, @RequestParam(value = "userName") String userName, @RequestParam(value = "reworkgyFlag") int reworkgyFlag); + + /** + * 查询返工无工艺订单 + */ + @GetMapping(LOAD_REWORK_NO_PROCESS) + R> loadReworkNoProcess(); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index 5c6a8960..bd405278 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -1,7 +1,9 @@ package org.springblade.erpdata.feign; -import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.tool.api.R; +import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; +import org.springblade.erpdata.pojo.vo.MesRbRedoVO; +import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springframework.stereotype.Component; @@ -57,4 +59,34 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { public R chkShjh(String woCode, String ypCode, String partCode, String productIdent, Double makeQty, String memo) { return R.fail("获取数据失败"); } + + @Override + public R> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo) { + return R.fail("获取数据失败"); + } + + @Override + public R> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size) { + return R.fail("获取数据失败"); + } + + @Override + public R loadReworkPlanSize(String reworkCode, String partCode, String batchNo) { + return R.fail("获取数据失败"); + } + + @Override + public R completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName) { + return R.fail("获取数据失败"); + } + + @Override + public R receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag) { + return R.fail("获取数据失败"); + } + + @Override + public R> loadReworkNoProcess() { + return R.fail("获取数据失败"); + } } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/ReworkProcessDTO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/ReworkProcessDTO.java index 61a78593..08cc3812 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/ReworkProcessDTO.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/ReworkProcessDTO.java @@ -22,4 +22,7 @@ public class ReworkProcessDTO { private Query query; + @Schema(description = "查询类型") + private Boolean queryType; + } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MesRbRedoVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MesRbRedoVO.java new file mode 100644 index 00000000..46cb4479 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MesRbRedoVO.java @@ -0,0 +1,115 @@ +package org.springblade.erpdata.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 返工计划 视图实体类 + * + * @author litao + */ +@Data +public class MesRbRedoVO { + + /** + * 返修单号 + */ + @Schema(description = "返修单号") + private String redono; + /** + * 发生单位 + */ + @Schema(description = "发生单位") + private String usedept; + /** + * 物料号 + */ + @Schema(description = "物料号") + private String prtno; + /** + * 数量 + */ + @Schema(description = "数量") + private String amount; + /** + * 处理意见 + */ + @Schema(description = "处理意见") + private String detail; + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + /** + * 需求日期 + */ + @Schema(description = "需求日期") + private String reqdate; + /** + * 批次号 + */ + @Schema(description = "批次号") + private String splcode; + /** + * 生产标识 + */ + @Schema(description = "生产标识") + private String prtlotno; + /** + * 审理员 + */ + @Schema(description = "审理员") + private String cogncer; + /** + * 审理时间 + */ + @Schema(description = "审理时间") + private String cogncdat; + /** + * 型号 + */ + @Schema(description = "型号") + private String mtltmrk; + /** + * 承修部门 + */ + @Schema(description = "承修部门") + private String prtmdept; + /** + * 完成时间 + */ + @Schema(description = "完成时间") + private String udenddat; + /** + * 完成数量 + */ + @Schema(description = "完成数量") + private String udtotqty; + /** + * 报废数 + */ + @Schema(description = "报废数") + private String udwasqty; + /** + * 返工状态 0:等待,1:进行,2:完成 + */ + @Schema(description = "返工状态 0:等待,1:进行,2:完成") + private Short redostatus; + /** + * 工艺路线生成人 + */ + @Schema(description = "工艺路线生成人") + private String routgenman; + /** + * 工艺路线生成时间 + */ + @Schema(description = "工艺路线生成时间") + private String routgendat; + /** + * 工艺路线 + */ + @Schema(description = "工艺路线") + private String deptcode; + +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PpmReportDetailModelVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PpmReportDetailModelVO.java new file mode 100644 index 00000000..22e5a28c --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PpmReportDetailModelVO.java @@ -0,0 +1,185 @@ +package org.springblade.erpdata.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * erp审理单 视图实体类 + * + * @author litao + */ +@Data +public class PpmReportDetailModelVO { + + /** + * 班组 + */ + @Schema(description = "班组") + private String tsName; + /** + * 审理单号 + */ + @Schema(description = "审理单号") + private String sheetNo; + /** + * 审理单类型 + */ + @Schema(description = "审理单类型") + private String billmodel; + /** + * 审理单状态 + */ + @Schema(description = "审理单状态") + private String status; + /** + * 发生单位 + */ + @Schema(description = "发生单位") + private String deptcode; + /** + * 物料号 + */ + @Schema(description = "物料号") + private String prtno; + /** + * 物料名称 + */ + @Schema(description = "物料名称") + private String name; + /** + * 型号 + */ + @Schema(description = "型号") + private String type; + /** + * 质量等级 + */ + @Schema(description = "质量等级") + private String qstandno; + /** + * 批次号 + */ + @Schema(description = "批次号") + private String lotno; + /** + * 总数量 + */ + @Schema(description = "总数量") + private String cntt; + /** + * 不合格数 + */ + @Schema(description = "不合格数") + private String cntn; + /** + * 检验员 + */ + @Schema(description = "检验员") + private String checker; + /** + * 检验日期 + */ + @Schema(description = "检验日期") + private String checkdate; + /** + * 归档日期 + */ + @Schema(description = "归档日期") + private String finishdate; + /** + * 责任部门 + */ + @Schema(description = "责任部门") + private String layer1; + /** + * 审理单开始时间 + */ + @Schema(description = "审理单开始时间") + private String judgestart; + /** + * + */ + @Schema(description = "") + private String opinion; + /** + * 审理级别 + */ + @Schema(description = "审理级别") + private String userlevel; + /** + * 审理意见 + */ + @Schema(description = "审理意见") + private String dispose; + /** + * 审理人 + */ + @Schema(description = "审理人") + private String usercode; + /** + * 返修数 + */ + @Schema(description = "返修数") + private String p6layer3; + /** + * 返工数 + */ + @Schema(description = "返工数") + private String p6layer4; + /** + * 报废数 + */ + @Schema(description = "报废数") + private String p6layer5; + /** + * 订单号 + */ + @Schema(description = "订单号") + private String sono; + /** + * 完工数 + */ + @Schema(description = "完工数") + private String avlqty; + /** + * 完工日期 + */ + @Schema(description = "完工日期") + private String date1; + /** + * 责任零件 + */ + @Schema(description = "责任零件") + private String p5layer1; + /** + * 责任批次 + */ + @Schema(description = "责任批次") + private String p5layer3; + /** + * 发生工序 + */ + @Schema(description = "发生工序") + private String process; + /** + * 发生工序名称 + */ + @Schema(description = "发生工序名称") + private String processName; + /** + * 上级编号 + */ + @Schema(description = "上级编号") + private String precode; + /** + * 返修路线 + */ + @Schema(description = "返修路线") + private String reworkLine; + /** + * 故障描述 + */ + @Schema(description = "故障描述") + private String memo; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java index ae62d03e..fdc1228a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java @@ -1,6 +1,5 @@ package org.springblade.desk.order.controller; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Operation; @@ -260,8 +259,8 @@ public class YieldOrderController extends BladeController { @PostMapping(value = "/receiveOrderFromOldMes") @Operation(summary = "保存旧mes传过来的生产订单", description = "") public R receiveOrderFromOldMes(@RequestBody JSONObject dataObject) { - JSONArray dataList = dataObject.getJSONArray("dataList"); - yieldOrderService.receiveOrderFromOldMes(dataList); +// JSONArray dataList = dataObject.getJSONArray("dataList"); +// yieldOrderService.receiveOrderFromOldMes(dataList); return R.success(); } @@ -274,7 +273,7 @@ public class YieldOrderController extends BladeController { @PostMapping(value = "/receiveOrderStatusFromOldMes") @Operation(summary = "保存旧mes传过来的生产订单状态数据", description = "") public R receiveOrderStatusFromOldMes(@RequestBody JSONObject entity) { - yieldOrderService.receiveOrderStatusFromOldMes(entity.getString("cardNo"), entity.getInteger("status")); +// yieldOrderService.receiveOrderStatusFromOldMes(entity.getString("cardNo"), entity.getInteger("status")); return R.success(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java index c404146e..5fec8f8c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java @@ -40,4 +40,6 @@ public interface YieldOrderMapper extends BaseMapper { List yieldTypeList, List yieldStatusList); Long getWcId(Long orderId); + + YieldOrder getMaxByCodePattern(String codePattern); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml index 6f1e10ac..7702f763 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml @@ -112,4 +112,14 @@ WHERE yo.ID = #{orderId} AND ROWNUM = 1; + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index fe96c21f..abcd1aab 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -278,5 +278,11 @@ public interface IYieldOrderService extends BaseService { */ void saveOrder(List yieldOrderList); + String nextBatchNo(); + + String nextCardNo(); + + String nextCode(Object obj); + List getToolByPartCode(String partCode); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 797f9653..f4d922dc 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -1150,7 +1150,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl> page(ReworkProcessDTO prReworkProcess, Query query) { -// prReworkProcess.setQuery(query); -// IPage page = Condition.getPage(query); -// List records = new ArrayList<>(); -// ReworkProcessVO reworkProcessVO = new ReworkProcessVO(); -// reworkProcessVO.setRedono("返修单号"); -// reworkProcessVO.setSeqno(1); -// reworkProcessVO.setSeqdept("处理单位"); -// reworkProcessVO.setPrtno("物料号"); -// reworkProcessVO.setExcstatus(1); -// reworkProcessVO.setAmount(1.0); -// reworkProcessVO.setReqdate("2026-02-04"); -// reworkProcessVO.setReqqty("需求数量"); -// reworkProcessVO.setRecdate("2026-02-04"); -// reworkProcessVO.setRecman("接收人"); -// reworkProcessVO.setRecqty("接收数量"); -// reworkProcessVO.setEnddat("2026-02-04"); -// reworkProcessVO.setEndman("完成人"); -// reworkProcessVO.setEndqty("完成数量"); -// reworkProcessVO.setSplcode("批次号"); -// reworkProcessVO.setRemark("备注"); -// reworkProcessVO.setHrecdate("2026-02-04"); -// reworkProcessVO.setBfqty(1); -// reworkProcessVO.setUsedept("发生单位"); -// reworkProcessVO.setDetail("处理意见"); -// reworkProcessVO.setPrtlotno("生产标识"); -// reworkProcessVO.setDeptcode("工艺路线"); -// reworkProcessVO.setSono("开单车间订单号"); -// records.add(reworkProcessVO); -// page.setRecords(records); -// return R.data(page); IPage iPage = Condition.getPage(query); List process = erpDataProduceClient.loadReworkOrder(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo(), query.getCurrent(), query.getSize()).getData(); iPage.setRecords(process); @@ -79,27 +50,37 @@ public class ReworkProcessController extends BladeController { return R.data(iPage); } -// @GetMapping("/treeProcess") -// @ApiOperationSupport(order = 2) -// @Operation(summary = "查询返工工序树", description = "") -// public R taskComplete(@RequestBody ReworkProcessDTO prReworkProcess) { -// return R.data(reworkProcessService.treeProcess(prReworkProcess)); -// } - @PostMapping("/receiveOrder") @ApiOperationSupport(order = 2) - @Operation(summary = "订单接收", description = "传入prReworkProcess") - public R receiveOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) { - pdaSaveService.receiveOrder(mesRbRedoRoutDTO); - return R.success(); + @Operation(summary = "订单接收", description = "传入prReworkProcess") + public R receiveOrder(@RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) { + return R.status(pdaSaveService.receiveOrder(mesRbRedoRoutDTO)); } @PostMapping("/completeOrder") @ApiOperationSupport(order = 3) - @Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO") - public R completeOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) { - pdaSaveService.completeOrder(mesRbRedoRoutDTO, AuthUtil.getUser().getUserName()); - return R.success(); + @Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO") + public R completeOrder(@RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) { + return R.status(pdaSaveService.completeOrder(mesRbRedoRoutDTO, AuthUtil.getUserName())); + } + + @GetMapping("/reviewFormMess") + @ApiOperationSupport(order = 4) + @Operation(summary = "查询erp审理单") + public R> reviewFormMess(ReworkProcessDTO prReworkProcess) { + return erpDataProduceClient.reviewFormMess(prReworkProcess.getQueryType(), prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo()); + } + + @GetMapping("/loadReworkPlan") + @ApiOperationSupport(order = 5) + @Operation(summary = "返工计划查询") + public R> loadReworkPlan(ReworkProcessDTO prReworkProcess, Query query) { + IPage iPage = Condition.getPage(query); + List process = erpDataProduceClient.loadReworkPlan(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo(), query.getCurrent(), query.getSize()).getData(); + iPage.setRecords(process); + int size = erpDataProduceClient.loadReworkPlanSize(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo()).getData(); + iPage.setTotal(size); + return R.data(iPage); } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java index 49b14a2d..a1983a7d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Hidden; import lombok.RequiredArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.desk.produce.service.IDisTaskingService; +import org.springblade.desk.produce.service.IPdaSaveService; import org.springframework.web.bind.annotation.RestController; /** @@ -19,8 +20,15 @@ public class DisTaskingClient implements IDisTaskingClient { private final IDisTaskingService disTaskingService; + private final IPdaSaveService pdaSaveServiceImpl; + @Override public boolean syncDisTasking() { return disTaskingService.syncDisTasking(false); } + + @Override + public boolean receiveOrder() { + return pdaSaveServiceImpl.receiveNoProcessOrder(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java index 6d423958..6a0d4ac5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java @@ -60,4 +60,6 @@ public interface WorkOrderMapper extends BaseMapper { List listByYoId(Long fatherYoId); List getWorkInProcessByPartCode(Set partCodes); + + WorkOrder getWorkOrderUniqueRec(String prtno, String splcode, String sono); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml index 5eec0f75..e6c01c7f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml @@ -235,5 +235,29 @@ AND a.last_instore_time IS NULL AND a.run_status < 19; + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java index 43c33deb..d2317613 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java @@ -4,7 +4,6 @@ import org.springblade.core.mp.base.BaseService; import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO; -import org.springblade.desk.produce.pojo.entity.MacToolUse; import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.vo.MacToolUseVO; import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo; @@ -55,11 +54,13 @@ public interface IPdaSaveService extends BaseService { */ void sjDeviceUnBind(UnBingDeviceVo unBingDeviceVo); - void receiveOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO); + boolean receiveOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO); - void completeOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO, String user); + boolean completeOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO, String user); void uploadPlan(List workPlanList); void shiftTransfer(ShiftTransferDTO shiftTransferDTO); + + boolean receiveNoProcessOrder(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index addc0b8e..4209384d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -232,4 +232,8 @@ public interface IWorkOrderService extends BaseService { void addWorkOrder(WorkOrder newWo); Map> getWorkInProcessByPartCode(Set partCodes); + + WorkOrder getWorkOrderUniqueRec(String prtno, String splcode, String sono); + + List findCubByYoId(Long yoId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index ad1a26e0..8e9620e0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -6,16 +6,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; -import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity; -import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity; +import org.springblade.desk.dashboard.pojo.entity.*; import org.springblade.desk.dashboard.service.*; import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.FeiBaSetEntity; @@ -24,6 +24,9 @@ import org.springblade.desk.device.service.IEquipmentService; import org.springblade.desk.device.service.IFeiBaSetService; import org.springblade.desk.device.service.IRackSetService; import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.pojo.entity.YieldOrderCraft; +import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.order.service.IYieldOrderCraftService; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkPlanMapper; import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; @@ -36,12 +39,21 @@ import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo; import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo; import org.springblade.desk.produce.pojo.vo.UnBingVo; import org.springblade.desk.produce.service.*; +import org.springblade.desk.quality.pojo.entity.InspectionTask; +import org.springblade.desk.quality.pojo.entity.ReviewSheet; +import org.springblade.desk.quality.service.IInspectionTaskService; +import org.springblade.desk.quality.service.IReviewSheetService; +import org.springblade.erpdata.feign.IErpDataProduceClient; +import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -55,6 +67,8 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class PdaSaveServiceImpl extends BaseServiceImpl implements IPdaSaveService { + private static DateTimeFormatter defaultDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private final IBsProcedureTeamService bsProcedureTeamService; private final IBsProcessSetService bsProcessSetService; @@ -79,6 +93,18 @@ public class PdaSaveServiceImpl extends BaseServiceImpl rpList = dsPartService.selectReworkPartCraft(rr.getPrtno(), rr.getRedono(), rr.getSplcode(), String.valueOf(rr.getSeqno())); - if (rpList == null && rpList.isEmpty()) { + if (CollectionUtils.isEmpty(rpList)) { //修改erp返工单工艺状态为无工艺 - //prReworkProcessDao.receiveOrder(rr, user.getLdapName(), 0); + return erpDataProduceClient.receiveOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getReqqty(), AuthUtil.getUserName(), 0).getData(); } else { - //查询原订单 - WorkOrder wo = workOrderService.getOne(Wrappers.lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode())); - if (wo == null) { - wo = workOrderService.getOne(Wrappers.lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode())); - } - memo = memo + "物料号:" + rr.getPrtno() + "批次号:" + rr.getSplcode() + " 订单号:" + rr.getSono() + " ---- "; - YieldOrder yieldOrder; - WorkOrder newWo = new WorkOrder(); - //zxh 20250820 返修发现部门为3400的才进行原单覆盖 - if (wo != null && "3400".equals(rr.getUsedept())) { - memo = memo + "找到原单,woId:" + wo.getId() + " ---- "; - yieldOrder = yieldOrderService.getById(wo.getYoId()); - List wpList = null; - //返工路线是3400-3400内部返工的,需要COPY原订单且不更新上账时间和上账人,反之则走非车间内部返工处理 - if (StringUtils.isNotBlank(rr.getDeptcode()) && "3400-3400".equals(rr.getDeptcode().trim())) { - //顺延原WO号 - newWo.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode())); - newWo.setWpId(wo.getWpId()); - //zxh 20250520 返修路线为3400-3400的返修订单在车间订单级记录返修订单接收人 - newWo.setMemo("返工路线是3400-3400,记录返修接收人为" + rr.getRecman()); - //非3400返工 - memo = memo + "返工路线是3400-3400 ---- "; - log.info("3400-3400新车间订单:woCode:{},oldYoCode:{}", newWo.getWoCode(), yieldOrder.getYoCode()); - } else { - //copy原生产订单,更新单号和关键信息 - YieldOrder newYieldOrder = new YieldOrder(); - BeanUtils.copyProperties(yieldOrder, newYieldOrder); - newYieldOrder.setId(null); -// newYieldOrder.setDemandDate(rr.getReqdate()); - //如果接收人不为空,则默认此接收人和接收时间 - if (StringUtils.isNotBlank(rr.getRecman())) { - //user = epDosingRecDao.getUserByLdapName(rr.getRecman().trim()); - } - //zxh 20241128 接收人赋值为返修订单接收人 - newYieldOrder.setReceiveUser(Long.valueOf(rr.getRecman())); -// newYieldOrder.setFailureTime(StringUtils.isNotBlank(rr.getRecdate()) ? -// DateTime.parse(rr.getRecdate()) : new Date()); - newYieldOrder.setMemo(rr.getRemark()); - newYieldOrder.setReworkMemo(rr.getDetail()); - newYieldOrder.setYpQty(rr.getAmount()); - newYieldOrder.setPrimaryCraft(rr.getDeptcode()); - newYieldOrder.setReworkCode(rr.getRedono()); - newYieldOrder.setReworkNo(Long.valueOf(rr.getSeqno())); - newYieldOrder.setYoCode(rr.getRedono()); - //zxh 20250522 找到原单,非3400-3400,复制pj后不再更改pocode - //newYieldOrder.setPoCode(rr.getRedono()); - newYieldOrder.setProduceBool(Boolean.TRUE); - newYieldOrder.setStatus(YieldOrder.CUR_STATUS_PROCESSING); - //周新昊 20240912 返修订单找到原单复制pj后为使用部门代码赋值 - newYieldOrder.setUseDeptCode(rr.getUsedept()); - yieldOrderService.save(newYieldOrder); - log.info("不是厂内,保存新生产订单:yoId{},yoCode{}", newYieldOrder.getId(), newYieldOrder.getYoCode()); - //原订单已经入库,则更新接收人、接收时间并且车间订单号不顺延原订单号,反之则需要顺延原订单号 - if (wo.getPutStoreTime() != null) { - newWo.setWoCode(workOrderService.nextCode(rr.getRedono())); - newWo.setReInStore("1"); - newYieldOrder.setYpCode(rr.getRedono()); - } else { - newWo.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode())); - } - //绑定新车间订单的接收信息 - newWo.setYoId(newYieldOrder.getId()); - - //更新原生产订单状态为已关闭 - YieldOrder oldYo = yieldOrderService.getById(yieldOrder.getId()); - if (oldYo != null) { - oldYo.setStatus(YieldOrder.CUR_STATUS_VOIDED); - yieldOrderService.updateById(oldYo); - } - memo = memo + "新生产订单,yoId:" + newYieldOrder.getId() + " ---- "; - } - //返工订单流程卡号重新生成 - newWo.setCardNo(workOrderService.nextCardNo(yieldOrder.getYpCode(), wo.getCardNo())); - newWo.setBatchNo(rr.getSplcode()); - newWo.setMakeQty(rr.getAmount()); - newWo.setRunStatus(WorkOrder.RUN_STATUS_NORMAL); - newWo.setPriority(wo.getPriority()); - newWo.setReworkCode(rr.getRedono()); - newWo.setReworkNo(rr.getSeqno()); - newWo.setOem("0"); - newWo.setOemOut("1"); - newWo.setOemType(-1); - newWo.setPlanner(wo.getPlanner()); - newWo.setDispatcher(wo.getDispatcher()); - newWo.setReworkMemo(rr.getDetail()); -// newWo.setDemandDate(rr.getReqdate()); - workOrderService.addWorkOrder(newWo); - log.info("保存新车间订单:woId{},woCode{}", newWo.getId(), newWo.getWoCode()); - //组装生产工序 - wpList = new ArrayList<>(rpList.size()); - WorkPlan wp; - for (PrReworkProcessEntity rp : rpList) { - wp = new WorkPlan(); - wp.setOrders(rp.getProcessNo()); - wp.setHourQuota(rp.getHourQuota()); - wp.setMakeMemo(rp.getMakeMemo()); - wp.setStatus(WorkPlan.STATUS_NO_START); - wp.setPlanStartTime(rp.getStartTime().toInstant() - .atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认) - .toLocalDateTime()); - wp.setPlanEndTime(rp.getEndTime().toInstant() - .atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认) - .toLocalDateTime()); - wp.setRpId(rp.getId()); - if (rp.getMakeTeam() != null) { - wp.setMakeTeam(rp.getMakeTeam()); - wp.setOem("0"); - } else { - wp.setOem(rp.getOcName()); - wp.setOem("1"); - } - wpList.add(wp); - } - } + return this.receiveOrderAndSave(rr, rpList); } } - private List listByReworkCode(String redono, Integer seqno, String prtno, String splcode) { - List prReworkProcessList = new ArrayList<>(); - // 首先根据返工单号+零件号——批次号去查 - prReworkProcessList = null; //prReworkProcessDao.listByReworkCode(reworkCode, reworkNo, partCode, batchNo); - if (prReworkProcessList != null && prReworkProcessList.size() > 0) { - return prReworkProcessList; - } - return prReworkProcessList; + public boolean receiveOrderAndSave(MesRbRedoRoutDTO rr, List rpList) { + YieldOrder yieldOrder = new YieldOrder(); + String batchNo = rr.getSplcode(); + if (batchNo == null) { + batchNo = yieldOrderService.nextBatchNo(); + } + DsPartEntity part = dsPartService.selectDsPartByPatCodeAndVersion(rr.getPrtno().trim(), null); + if (part == null) { + throw new ServiceException("零件信息【" + rr.getPrtno() + "】不存在!"); + } + DsPartVersionEntity newPartVersion = dsPartService.getNewPartVersion(rr.getPrtno().trim()); + if (newPartVersion != null) { + throw new ServiceException("零件【" + rr.getPrtno() + "】的版本不存在!"); + } + yieldOrder.setPartVersion(newPartVersion.getPartVersion()); + yieldOrder.setRank("2"); + yieldOrder.setBatchNo(batchNo); + yieldOrder.setCardNo(yieldOrderService.nextCardNo()); + yieldOrder.setYoCode(yieldOrderService.nextCode(rr.getRedono())); + yieldOrder.setYpCode(rr.getRedono()); + yieldOrder.setPartCode(part.getPartCode()); + yieldOrder.setProductType(part.getProductType()); + yieldOrder.setPartName(part.getPartName()); + yieldOrder.setPlate(part.getPlate()); + yieldOrder.setProductIdent(rr.getPrtlotno()); + yieldOrder.setUseDept(rr.getUsedept()); + yieldOrder.setYpArea(part.getCraftWay().indexOf("封接") > 0 ? 0.0000000000 : part.getArea()); + + if (ObjectUtils.isEmpty(yieldOrder.getYpArea())) { + throw new ServiceException("零件面积不能为空,请联系工艺"); + } + yieldOrder.setDemandDate(this.dateParse(rr.getReqdate())); + yieldOrder.setPlanUser(rr.getRecman()); + yieldOrder.setReleaseDate(this.dateParse(rr.getRecdate())); + yieldOrder.setMemo(rr.getRemark()); + yieldOrder.setReworkMemo(rr.getDetail()); + yieldOrder.setYieldType("1".equals(part.getIsSintering()) ? YieldOrder.YIELD_TYPE_2 : YieldOrder.YIELD_TYPE_1); + yieldOrder.setYpQty(rr.getAmount()); + yieldOrder.setSiteWork(Boolean.FALSE); + yieldOrder.setPrimaryCraft(rr.getDeptcode()); + yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode()); + List users = userClient.listByNameNolike(rr.getRecman()); + yieldOrder.setReceiveUser(CollectionUtils.isNotEmpty(users) ? users.get(0).getId() : AuthUtil.getUserId()); + yieldOrder.setReceiveTime(new Date()); + yieldOrder.setReworkCode(rr.getRedono()); + yieldOrder.setReworkNo((long) rr.getSeqno()); + yieldOrder.setBusinessType(Integer.valueOf("-1")); + yieldOrderService.save(yieldOrder); + + //生产订单工艺 + List ycList = new ArrayList<>(rpList.size()); + YieldOrderCraft yc; + for (PrReworkProcessEntity rp : rpList) { + yc = new YieldOrderCraft(); + yc.setYoId(yieldOrder.getId()); + yc.setMakeTeam(rp.getMakeTeam()); + yc.setOcId(rp.getOcId()); + yc.setCaId(rp.getCaId()); + yc.setPpsId(rp.getPpsId()); + yc.setHourQuota(rp.getHourQuota().doubleValue()); + yc.setMakeMemo(rp.getMakeMemo()); + yc.setStartTime(rp.getStartTime()); + yc.setEndTime(rp.getEndTime()); + yc.setProcessNo(rp.getProcessNo()); + yc.setRpId(rp.getId()); + ycList.add(yc); + } + boolean saveResult = yieldOrderCraftService.saveBatch(ycList); + if (saveResult) { + // 修改erp返工单状态 + erpDataProduceClient.receiveOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getReqqty(), AuthUtil.getUserName(), 1).getData(); + } + return saveResult; } @Override - public void completeOrder(MesRbRedoRoutDTO rr, String userName) { - WorkOrder wo = workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class) - .eq(WorkOrder::getBatchNo, rr.getSplcode())); + @Transactional(rollbackFor = Exception.class) + public boolean completeOrder(MesRbRedoRoutDTO rr, String userName) { + WorkOrder wo = workOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono()); if (wo != null) { //记录返工单号 wo.setQcReworkCode(rr.getRedono()); //如果原车间订单状态小于已交接,就更改原订单状态为返工,否则不更改 if (wo.getRunStatus() < WorkOrder.RUN_STATUS_HANDOVER) { //修改旧订单状态 - workOrderService.updateStatus(null, WorkOrder.RUN_STATUS_REWORK, wo.getId(), null); + workOrderService.updateStatus(Collections.singletonList(wo.getId()), WorkOrder.RUN_STATUS_REWORK, AuthUtil.getUserId(), null); } // 如果有 FatherYoId 有值,则代表他是子件 修改部件状态为返工 YieldOrder pjYieldOrder = yieldOrderService.getById(wo.getYoId()); if (pjYieldOrder.getFatherYoId() != null) { List fatherPrWorkOrderList = workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, pjYieldOrder.getFatherYoId())); - if (fatherPrWorkOrderList != null && fatherPrWorkOrderList.size() > 0) { + if (fatherPrWorkOrderList != null && !fatherPrWorkOrderList.isEmpty()) { for (WorkOrder fatherPrWorkOrder : fatherPrWorkOrderList) { // 记录原状态 fatherPrWorkOrder.setOldRunStatus(fatherPrWorkOrder.getRunStatus()); @@ -651,9 +630,30 @@ public class PdaSaveServiceImpl extends BaseServiceImpl workOrderSubList = workOrderService.findCubByYoId(prWorkOrder.getYoId()); + if (workOrderSubList != null && !workOrderSubList.isEmpty()) { + for (WorkOrder workOrder : workOrderSubList) { + if (workOrder.getRunStatus() < WorkOrder.RUN_STATUS_COMPLETED) { + workOrder.setRunStatus(WorkOrder.RUN_STATUS_REWORK); + workOrderService.updateById(workOrder); + } + } + } + } + } } - this.completeOrder(rr, userName); + return erpDataProduceClient.completeOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getBfqty(), userName).getData(); } @Override @@ -723,6 +723,24 @@ public class PdaSaveServiceImpl extends BaseServiceImpl reworkNoProcessList = erpDataProduceClient.loadReworkNoProcess().getData(); + if (CollectionUtils.isEmpty(reworkNoProcessList)) { + return false; + } + for (MesRbRedoRoutDTO rr : reworkNoProcessList) { + List rpList = dsPartService.selectReworkPartCraft(rr.getPrtno(), rr.getRedono(), rr.getSplcode(), String.valueOf(rr.getSeqno())); + if (CollectionUtils.isEmpty(rpList)) { + continue; + } + this.receiveOrderAndSave(rr, rpList); + } + return true; + } + private void unBindBsRackSet(RackSetEntity bsRackSet) { if (bsRackSet != null) { bsRackSet.setBindQty((short) 0); @@ -776,5 +794,17 @@ public class PdaSaveServiceImpl extends BaseServiceImpl findCubByYoId(Long id) { + @Override + public List findCubByYoId(Long id) { return baseMapper.findCubByYoId(id); } @@ -889,6 +889,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo) { + return R.data(erpDataProduceService.reviewFormMess(queryType, reworkCode, partCode, batchNo)); + } + + @Override + public R> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size) { + return R.data(erpDataProduceService.loadReworkPlan(reworkCode, partCode, batchNo, current, size)); + } + + @Override + public R loadReworkPlanSize(String reworkCode, String partCode, String batchNo) { + return R.data(erpDataProduceService.loadReworkPlanSize(reworkCode, partCode, batchNo)); + } + + @Override + public R completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName) { + return R.status(erpDataProduceService.completeOrder(redono, seqno, prtno, splcode, amount, bfqty, userName)); + } + + @Override + public R receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag) { + return R.status(erpDataProduceService.receiveOrder(redono, seqno, prtno, splcode, amount, reqqty, userName, reworkgyFlag)); + } + + @Override + public R> loadReworkNoProcess() { + return R.data(erpDataProduceService.loadReworkNoProcess()); + } + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java index fb028b90..8ebe11c5 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java @@ -2,7 +2,10 @@ package org.springblade.erpdata.mapper; import com.baomidou.mybatisplus.core.mapper.Mapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.erpdata.pojo.dto.ReworkProcessDTO; +import org.springblade.erpdata.pojo.vo.MesRbRedoVO; +import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; @@ -27,4 +30,12 @@ public interface ErpDataProduceMapper extends Mapper { String getCustodianByRecDept(String partCode, String recDept); int loadReworkOrderSize(String reworkCode, String partCode, String batchNo); + + List reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo); + + List loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size); + + Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo); + + List loadReworkNoProcess(); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml index 3239c6e1..9162d66e 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml @@ -104,4 +104,76 @@ + + + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index 2c2b494c..32874b6f 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -1,7 +1,8 @@ package org.springblade.erpdata.service; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springblade.erpdata.pojo.dto.ReworkProcessDTO; +import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; +import org.springblade.erpdata.pojo.vo.MesRbRedoVO; +import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; @@ -31,4 +32,16 @@ public interface IErpDataProduceService { String chkShjh(String woCode, String ypCode, String partCode, String productIdent, Double makeQty, String memo); Integer loadReworkOrderSize(String reworkCode, String partCode, String batchNo); + + List reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo); + + List loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size); + + Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo); + + boolean completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName); + + boolean receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag); + + List loadReworkNoProcess(); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index 36a39a92..5382879c 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -1,12 +1,11 @@ package org.springblade.erpdata.service.impl; -import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.core.mp.support.Condition; -import org.springblade.core.mp.support.Query; +import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.erpdata.mapper.ErpDataProduceMapper; -import org.springblade.erpdata.pojo.dto.ReworkProcessDTO; +import org.springblade.erpdata.pojo.vo.MesRbRedoVO; +import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.ReworkProcessVO; import org.springblade.erpdata.service.IErpDataProduceService; @@ -17,10 +16,7 @@ import org.springframework.jdbc.core.simple.SimpleJdbcCall; import org.springframework.stereotype.Service; import java.sql.Types; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author litao @@ -136,4 +132,104 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { public Integer loadReworkOrderSize(String reworkCode, String partCode, String batchNo) { return erpDataProduceMapper.loadReworkOrderSize(reworkCode, partCode, batchNo); } + + @Override + public List reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo) { + return erpDataProduceMapper.reviewFormMess(queryType, reworkCode, partCode, batchNo); + } + + @Override + public List loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size) { + return erpDataProduceMapper.loadReworkPlan(reworkCode, partCode, batchNo, current, size); + } + + @Override + public Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo) { + return erpDataProduceMapper.loadReworkPlanSize(reworkCode, partCode, batchNo); + } + + @Override + public boolean completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("pro_rbmesredoend") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_redono", Types.VARCHAR), + new SqlParameter("v_seqno", Types.VARCHAR), + new SqlParameter("v_prtno", Types.VARCHAR), + new SqlParameter("v_splcode", Types.VARCHAR), + new SqlParameter("v_endqty", Types.VARCHAR), + new SqlParameter("v_enddat", Types.VARCHAR), + new SqlParameter("v_endman", Types.VARCHAR), + new SqlParameter("v_bfqty", Types.VARCHAR), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_redono", redono); + inParams.put("v_seqno", seqno); + inParams.put("v_prtno", prtno); + inParams.put("v_splcode", splcode); + inParams.put("v_endqty", amount); + inParams.put("v_enddat", new Date()); + inParams.put("v_endman", userName); + inParams.put("v_bfqty", bfqty); + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + return !"0".equals(excflag); + } + + @Override + public boolean receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("pro_rbmesredoend") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_redono", Types.VARCHAR), + new SqlParameter("v_seqno", Types.VARCHAR), + new SqlParameter("v_prtno", Types.VARCHAR), + new SqlParameter("v_splcode", Types.VARCHAR), + new SqlParameter("v_amount", Types.VARCHAR), + new SqlParameter("v_recqty", Types.VARCHAR), + new SqlParameter("v_recdate", Types.VARCHAR), + new SqlParameter("v_recman", Types.VARCHAR), + new SqlParameter("v_reworkgyflag", Types.VARCHAR), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_redono", redono); + inParams.put("v_seqno", seqno); + inParams.put("v_prtno", prtno); + inParams.put("v_splcode", splcode); + inParams.put("v_amount", amount); + inParams.put("v_recqty", Double.valueOf(reqqty)); + inParams.put("v_recdate", new Date()); + inParams.put("v_recman", userName); + inParams.put("v_reworkgyflag", reworkgyFlag); + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + return !"0".equals(excflag); + } + + @Override + public List loadReworkNoProcess() { + return erpDataProduceMapper.loadReworkNoProcess(); + } } 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 11e7445c..369d4b77 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 @@ -250,7 +250,7 @@ public class WorkOrderController extends BladeController { @PostMapping("/receiveDispatcherFromOldMes") @Operation(summary = "更新调度人员", description = "") public R receiveDispatcherFromOldMes(@RequestBody JSONObject entity) { - workOrderService.receiveDispatcherFromOldMes(entity.getLong("id"), entity.getLong("dispatcher")); +// workOrderService.receiveDispatcherFromOldMes(entity.getLong("id"), entity.getLong("dispatcher")); return R.success(); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java index 9c2e4588..7c637c80 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java @@ -164,7 +164,7 @@ public class WorkPlanController extends BladeController { @PostMapping("/updateWorkPlan") @Operation(summary = "更新作业计划", description = "") public R updateWorkPlan(@RequestBody JSONObject entity) { - workPlanService.updateWorkPlan(entity.getLong("id"), entity.getDate("factStartTime"), entity.getDate("factEndTime")); +// workPlanService.updateWorkPlan(entity.getLong("id"), entity.getDate("factStartTime"), entity.getDate("factEndTime")); return R.success(); } }