From 269151a6e45900f78ae386cf7f5fc8e7692f4088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Thu, 23 Apr 2026 18:52:04 +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/TransferOrderProcessor.java | 30 ++++ .../desk/produce/feign/IDisTaskingClient.java | 7 + .../produce/pojo/entity/HandoverRecord.java | 3 + .../produce/pojo/vo/HandoverRecordVO.java | 77 +++++++++ .../erpdata/feign/IErpDataProduceClient.java | 40 ++++- .../feign/IErpDataProduceClientFallback.java | 21 ++- .../erpdata/pojo/vo/ErpReturnDataVO.java | 23 +++ .../controller/AiWebApiController.java | 55 +++++++ .../controller/DisTaskingController.java | 2 +- .../desk/produce/feign/DisTaskingClient.java | 8 + .../produce/mapper/HandoverRecordMapper.java | 7 + .../produce/mapper/HandoverRecordMapper.xml | 54 +++++++ .../service/IHandoverRecordService.java | 2 + .../produce/service/IWorkOrderService.java | 2 +- .../impl/HandoverRecordServiceImpl.java | 58 +++++++ .../service/impl/WorkOrderServiceImpl.java | 12 +- .../impl/InspectionTaskServiceImpl.java | 2 +- .../erpdata/feign/ErpDataProduceClient.java | 21 ++- .../service/IErpDataProduceService.java | 12 +- .../impl/ErpDataProduceServiceImpl.java | 150 +++++++++++++++++- 20 files changed, 555 insertions(+), 31 deletions(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/TransferOrderProcessor.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/HandoverRecordVO.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ErpReturnDataVO.java create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/AiWebApiController.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/TransferOrderProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/TransferOrderProcessor.java new file mode 100644 index 00000000..a2d6bd55 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/TransferOrderProcessor.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; + +/** + * 已完成订单同步给erp + * + * @author litao + */ +@Component +@Data +@Slf4j +public class TransferOrderProcessor implements BasicProcessor { + + @Resource + private IDisTaskingClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("已完成订单同步给erp开始"); + return new ProcessResult(client.rbTransferOrder()); + } +} 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 7d2eae52..96db40e2 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 @@ -18,6 +18,7 @@ public interface IDisTaskingClient { String SYNC_DIS_TASKING = API_PREFIX + "/syncDisTasking"; String RECEIVE_ORDER = API_PREFIX + "/receiveOrder"; + String RB_TRANSFER_ORDER = API_PREFIX + "/rbTransferOrder"; /** @@ -32,4 +33,10 @@ public interface IDisTaskingClient { */ @GetMapping(RECEIVE_ORDER) boolean receiveOrder(); + + /** + * 已完成订单同步给erp + */ + @GetMapping(RB_TRANSFER_ORDER) + boolean rbTransferOrder(); } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java index 772262ef..a96a6e17 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/HandoverRecord.java @@ -98,6 +98,9 @@ public class HandoverRecord extends BaseEntity { @Schema(description = "外协交件单号") private String deliverKey; + @Schema(description = "发送erp标记") + private Integer sentFlag; + @TableField(exist = false) @Schema(description = "移交类型") private String hrTypeName; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/HandoverRecordVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/HandoverRecordVO.java new file mode 100644 index 00000000..976657b1 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/HandoverRecordVO.java @@ -0,0 +1,77 @@ +package org.springblade.desk.produce.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; + +/** + * 未发送erp订单信息 视图实体类 + * + * @author BladeX + * @since 2026-02-04 + */ +@Data +public class HandoverRecordVO { + + @Schema(description = "移交记录id") + private Long hrId; + + @Schema(description = "单号") + private String hrCode; + + @Schema(description = "计划单号") + private String ypCode; + + @Schema(description = "车间订单号") + private String woCode; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "流程卡号") + private String cardNo; + + @Schema(description = "mes流程卡号") + private String mesCardNo; + + @Schema(description = "生产标识") + private String prodIdent; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "移交部门") + private String handoverUnit; + + @Schema(description = "移交数量") + private Integer handoverQty; + + @Schema(description = "B号") + private String roamNo; + + @Schema(description = "接收部门") + private String recDept; + + @Schema(description = "备注") + private String memo; + + @Schema(description = "创建时间") + private Date createTime; + + @Schema(description = "创建人") + private String createMan; + + @Schema(description = "外协交件单号") + private String deliverKey; + + @Schema(description = "试验数量") + private Integer testQty; + + @Schema(description = "消耗数量") + private Integer lossQty; + + @Schema(description = "报废数量") + private Integer scrapQty; + +} 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 521908ee..ca157471 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 @@ -4,15 +4,12 @@ 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.desk.produce.pojo.entity.OrderDeclare; -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.pojo.vo.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; +import java.util.Date; import java.util.List; import java.util.Map; @@ -43,8 +40,9 @@ public interface IErpDataProduceClient { String LOAD_REWORK_NO_PROCESS = API_PREFIX + "/loadReworkNoProcess"; String SIGN_DELETE = API_PREFIX + "/signDelete"; String SAVE_DECLARE = API_PREFIX + "/saveDeclare"; - String TRAIL_ITEM_LIST = API_PREFIX + "/trialItemList"; + String CHECK_COMPLETE = API_PREFIX + "/checkComplete"; + /** * 缺件申报-通过零件号获取批次号 @@ -181,4 +179,34 @@ public interface IErpDataProduceClient { */ @GetMapping(TRAIL_ITEM_LIST) R>> trialItemList(List nameList); + + @GetMapping(CHECK_COMPLETE) + R checkCompleteErpBackFill(@RequestParam(value = "woCode") String woCode, @RequestParam(value = "deliverKey", required = false) String deliverKey, + @RequestParam(value = "workQty") Double workQty, @RequestParam(value = "unqualifiedQty") int unqualifiedQty, + @RequestParam(value = "userName") String userName); + + + /** + * 入库单发送erp + */ + R proRbinviogen(@RequestParam(value = "hrCode") String hrCode, @RequestParam(value = "partCode") String partCode, + @RequestParam(value = "handoverQty") Integer handoverQty, @RequestParam(value = "prodIdent", required = false) String prodIdent, + @RequestParam(value = "batchNo") String batchNo, @RequestParam(value = "ypCode") String ypCode, + @RequestParam(value = "woCode") String woCode, @RequestParam(value = "handoverUnit", required = false) String handoverUnit, + @RequestParam(value = "createMan") String createMan, @RequestParam(value = "recDept", required = false) String recDept, + @RequestParam(value = "memo", required = false) String memo, @RequestParam(value = "deliverKey", required = false) String deliverKey, + @RequestParam(value = "testQty") Integer testQty, @RequestParam(value = "lossQty") Integer lossQty, + @RequestParam(value = "scrapQty") Integer scrapQty); + + /** + * 转工单发送erp + */ + R proRbtransferlev(@RequestParam(value = "hrCode") String hrCode, @RequestParam(value = "ypCode") String ypCode, + @RequestParam(value = "woCode") String woCode, @RequestParam(value = "cardNo") String cardNo, + @RequestParam(value = "partCode") String partCode, @RequestParam(value = "batchNo") String batchNo, + @RequestParam(value = "createMan") String createMan, @RequestParam(value = "createTime") Date createTime, + @RequestParam(value = "handoverUnit", required = false) String handoverUnit, @RequestParam(value = "handoverQty") Integer handoverQty, + @RequestParam(value = "recDept", required = false) String recDept, @RequestParam(value = "roamNo", required = false) String roamNo, + @RequestParam(value = "deliverKey", required = false) String deliverKey, @RequestParam(value = "testQty") Integer testQty, + @RequestParam(value = "lossQty") Integer lossQty, @RequestParam(value = "scrapQty") Integer scrapQty); } 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 1ae44cf7..3e1bbffe 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 @@ -3,12 +3,10 @@ package org.springblade.erpdata.feign; import org.springblade.core.tool.api.R; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.entity.OrderDeclare; -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.pojo.vo.*; import org.springframework.stereotype.Component; +import java.util.Date; import java.util.List; import java.util.Map; @@ -106,4 +104,19 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { return R.fail("获取数据失败"); } + @Override + public R checkCompleteErpBackFill(String woCode, String deliverKey, Double workQty, int i, String userName) { + return R.fail("获取数据失败"); + } + + @Override + public R proRbinviogen(String hrCode, String partCode, Integer handoverQty, String prodIdent, String batchNo, String ypCode, String woCode, String handoverUnit, String createMan, String recDept, String memo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty) { + return R.fail("获取数据失败"); + } + + @Override + public R proRbtransferlev(String hrCode, String ypCode, String woCode, String cardNo, String partCode, String batchNo, String createMan, Date createTime, String handoverUnit, Integer handoverQty, String recDept, String roamNo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty) { + return R.fail("获取数据失败"); + } + } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ErpReturnDataVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ErpReturnDataVO.java new file mode 100644 index 00000000..670f48f2 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/ErpReturnDataVO.java @@ -0,0 +1,23 @@ +package org.springblade.erpdata.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * erp存储过程返回数据 视图实体类 + * + * @author litao + */ +@Data +public class ErpReturnDataVO { + + @Schema(description = "返回信息") + private String excnote; + + @Schema(description = "状态码") + private String excflag; + + @Schema(description = "数据") + private String sqlerrm; + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/AiWebApiController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/AiWebApiController.java new file mode 100644 index 00000000..71658e0a --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/AiWebApiController.java @@ -0,0 +1,55 @@ +package org.springblade.desk.produce.controller; + +import com.alibaba.fastjson.JSONObject; +import com.google.protobuf.ServiceException; +import lombok.extern.slf4j.Slf4j; +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.desk.oldv1.constant.Constant; +import org.springblade.desk.oldv1.pojo.ResultInfo; +import org.springblade.desk.produce.pojo.vo.*; +import org.springblade.desk.quality.service.IReviewSheetService; +import org.springframework.web.bind.annotation.*; + +/** + * aiwebapi接口 控制器 + * + * @author BladeX + */ +@Slf4j +@RestController +@AllArgsConstructor +@RequestMapping("/aiWebapi") +@Tag(name = "aiWebapi接口", description = "供外部调用接口") +public class AiWebApiController extends BladeController { + + private final IReviewSheetService qcReviewSheetService; + + @PostMapping("/reviewResult") + @Operation(summary = "审理结束回调接口") + public ResultInfo reviewResult(HttpServletRequest request) throws Exception { + JSONObject params = (JSONObject) request.getAttribute(Constant.WEBAPI_REQUEST_PARAMETERS); + if (params == null || params.isEmpty()) { + throw new ServiceException("参数传递异常!"); + } + try { + String trialId = params.getString("trialId"); + Short resultStatus = params.getShort("resultStatus"); + String reviewMan = params.getString("reviewMan"); + String liabilityPart = params.getString("liabilityPart"); + Integer scrapQty = params.getInteger("scrapQty"); + Integer reworkQty = params.getInteger("reworkQty"); + Integer concedeQty = params.getInteger("concedeQty"); + String memo = params.getString("memo"); + qcReviewSheetService.reviewResult(trialId, resultStatus, reviewMan, liabilityPart, scrapQty, reworkQty, concedeQty, memo); + log.error("审理结束回调接口{}", params.toJSONString()); + } catch (Exception e) { + log.error("审理结束回调接口{}", params.toJSONString(), e); + } + return ResultInfo.ok(); + } + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java index 382fdd9e..0aa584db 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java @@ -111,7 +111,7 @@ public class DisTaskingController extends BladeController { @ApiOperationSupport(order = 5) @Operation(summary = "车间作业计划修改日志", description = "workPlanLog") public R> workPlanLogPage(WorkPlanLog workPlanLog, Query query) { - IPage workPlanLogIPage = workPlanLogService.page(Condition.getPage(query), Wrappers.lambdaQuery(workPlanLog)); + IPage workPlanLogIPage = workPlanLogService.page(Condition.getPage(query), Wrappers.lambdaQuery(workPlanLog).orderByDesc(WorkPlanLog::getCreateTime)); workPlanLogIPage.getRecords().forEach(log -> { User user = UserCache.getUser(log.getCreateUser()); log.setAdjustName(user != null ? user.getRealName() : ""); 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 a1983a7d..c3932fae 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.IHandoverRecordService; import org.springblade.desk.produce.service.IPdaSaveService; import org.springframework.web.bind.annotation.RestController; @@ -22,6 +23,8 @@ public class DisTaskingClient implements IDisTaskingClient { private final IPdaSaveService pdaSaveServiceImpl; + private final IHandoverRecordService handoverRecordService; + @Override public boolean syncDisTasking() { return disTaskingService.syncDisTasking(false); @@ -31,4 +34,9 @@ public class DisTaskingClient implements IDisTaskingClient { public boolean receiveOrder() { return pdaSaveServiceImpl.receiveNoProcessOrder(); } + + @Override + public boolean rbTransferOrder() { + return handoverRecordService.rbTransferOrder(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java index 2e95d572..a62a036f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.java @@ -3,6 +3,9 @@ package org.springblade.desk.produce.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springblade.desk.produce.pojo.entity.HandoverRecord; +import org.springblade.desk.produce.pojo.vo.HandoverRecordVO; + +import java.util.List; /** * 移交记录 Mapper 接口 @@ -12,4 +15,8 @@ import org.springblade.desk.produce.pojo.entity.HandoverRecord; public interface HandoverRecordMapper extends BaseMapper { Double getPaSumWeight(Long id); + + List selectReceiptDoc(); + + List selectTransfer(); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml index 3a6e4ecb..8cf50a57 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/HandoverRecordMapper.xml @@ -5,4 +5,58 @@ + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java index 1398f441..7257032a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IHandoverRecordService.java @@ -22,4 +22,6 @@ public interface IHandoverRecordService extends BaseService { void saveHandoverRecord(List woList); String nextCode(String codePattern); + + boolean rbTransferOrder(); } 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 69a561e7..df76fe20 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 @@ -217,7 +217,7 @@ public interface IWorkOrderService extends BaseService { * @param wp 工单计划 * @param wo 工单 */ - void qualified(WorkPlan wp, WorkOrder wo); + void qualified(WorkPlan wp, WorkOrder wo, String userName); /** *

方法名: setRbFilePreserveData

diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java index f1de7e67..bdad4999 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/HandoverRecordServiceImpl.java @@ -18,12 +18,14 @@ import org.springblade.desk.produce.mapper.HandoverRecordMapper; import org.springblade.desk.produce.pojo.entity.HandoverRecord; import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; +import org.springblade.desk.produce.pojo.vo.HandoverRecordVO; import org.springblade.desk.produce.pojo.vo.PrintWarehousingVO; import org.springblade.desk.produce.service.IHandoverRecordService; import org.springblade.desk.produce.service.IWorkOrderRunService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.erpdata.feign.IErpDataProduceClient; +import org.springblade.erpdata.pojo.vo.ErpReturnDataVO; import org.springblade.system.cache.UserCache; import org.springblade.system.pojo.entity.User; import org.springframework.stereotype.Service; @@ -224,6 +226,62 @@ public class HandoverRecordServiceImpl extends BaseServiceImpl handoverRecords = new ArrayList<>(); + List receiptDocs = baseMapper.selectReceiptDoc(); + if (CollectionUtils.isNotEmpty(receiptDocs)) { + for (HandoverRecordVO receiptDoc : receiptDocs) { + ErpReturnDataVO erpReturn = erpDataProduceClient.proRbinviogen(receiptDoc.getHrCode(), receiptDoc.getPartCode(), receiptDoc.getHandoverQty(), + receiptDoc.getProdIdent(), receiptDoc.getBatchNo(), receiptDoc.getYpCode(), receiptDoc.getWoCode(), receiptDoc.getHandoverUnit(), + receiptDoc.getCreateMan(), receiptDoc.getRecDept(), receiptDoc.getMemo(), receiptDoc.getDeliverKey(), + receiptDoc.getTestQty(), receiptDoc.getLossQty(), receiptDoc.getScrapQty()).getData(); + log.info("发送入库单返回:{},{}", erpReturn.getExcflag(), erpReturn.getExcnote()); + try { + HandoverRecord handoverRecord = this.getById(receiptDoc.getHrId()); + if ("1".equals(erpReturn.getExcflag())) { + handoverRecord.setHrCode(receiptDoc.getHrCode()); + handoverRecord.setStatus(HandoverRecord.RUN_STATUS_COMPLETE); + } else { + log.error("入库单异常,订单号{},错误信息{}", receiptDoc.getWoCode(), erpReturn.getExcflag() + "-" + erpReturn.getExcnote() + "-" + erpReturn.getSqlerrm()); + } + handoverRecord.setSentFlag(1); + handoverRecords.add(handoverRecord); + } catch (Exception e) { + log.error("入库单异常E,订单号{},错误信息{}", receiptDoc.getWoCode(), erpReturn.getExcflag() + "-" + erpReturn.getExcnote() + "-" + erpReturn.getSqlerrm(), e); + } + } + } + // 查询未发送的转工单 + List transfers = baseMapper.selectTransfer(); + if (CollectionUtils.isNotEmpty(transfers)) { + for (HandoverRecordVO transfer : transfers) { + ErpReturnDataVO erpReturn = erpDataProduceClient.proRbtransferlev(transfer.getHrCode(), transfer.getYpCode(), transfer.getWoCode(), + transfer.getCardNo(), transfer.getPartCode(), transfer.getBatchNo(), transfer.getCreateMan(), transfer.getCreateTime(), + transfer.getHandoverUnit(), transfer.getHandoverQty(), transfer.getRecDept(), transfer.getRoamNo(), transfer.getDeliverKey(), + transfer.getTestQty(), transfer.getLossQty(), transfer.getScrapQty()).getData(); + log.info("发送转工单(出)返回:{},{}", erpReturn.getExcflag(), erpReturn.getExcnote()); + try { + HandoverRecord handoverRecord = this.getById(transfer.getHrId()); + if ("1".equals(erpReturn.getExcflag())) { + handoverRecord.setStatus(HandoverRecord.RUN_STATUS_COMPLETE); + } else { + log.error("转工单(出)异常,订单号{},错误信息{}", transfer.getWoCode(), erpReturn.getExcflag() + "-" + erpReturn.getExcnote() + "-" + erpReturn.getSqlerrm()); + } + handoverRecord.setSentFlag(1); + handoverRecords.add(handoverRecord); + } catch (Exception e) { + log.error("转工单(出)异常E,订单号{},错误信息{}", transfer.getWoCode(), erpReturn.getExcflag() + "-" + erpReturn.getExcnote() + "-" + erpReturn.getSqlerrm(), e); + } + } + } + if (CollectionUtils.isNotEmpty(handoverRecords)) { + return this.updateBatchById(handoverRecords); + } + return false; + } + private String getCustodianByRecDept(String partCode, String recDept) { R byPartCode = erpDataProduceClient.getCustodianByRecDept(partCode, recDept); return byPartCode.getData(); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index c2cb00d1..b0cbdc18 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -2120,7 +2120,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl= 0 && countNO <= itemList.size()) { // 不合格 diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index dbac4368..5729b924 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -6,14 +6,12 @@ import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.entity.OrderDeclare; -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.pojo.vo.*; import org.springblade.erpdata.service.IErpDataProduceService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Date; import java.util.List; import java.util.Map; @@ -116,4 +114,19 @@ public class ErpDataProduceClient implements IErpDataProduceClient { return R.data(erpDataProduceService.trialItemList(nameList)); } + @Override + public R checkCompleteErpBackFill(String woCode, String deliverKey, Double workQty, int unqualifiedQty, String userName) { + return R.data(erpDataProduceService.checkCompleteErpBackFill(woCode, deliverKey, workQty, unqualifiedQty, userName)); + } + + @Override + public R proRbinviogen(String hrCode, String partCode, Integer handoverQty, String prodIdent, String batchNo, String ypCode, String woCode, String handoverUnit, String createMan, String recDept, String memo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty) { + return R.data(erpDataProduceService.proRbinviogen(hrCode, partCode, handoverQty, prodIdent, batchNo, ypCode, woCode, handoverUnit, createMan, recDept, memo, deliverKey, testQty, lossQty, scrapQty)); + } + + @Override + public R proRbtransferlev(String hrCode, String ypCode, String woCode, String cardNo, String partCode, String batchNo, String createMan, Date createTime, String handoverUnit, Integer handoverQty, String recDept, String roamNo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty) { + return R.data(erpDataProduceService.proRbtransferlev(hrCode, ypCode, woCode, cardNo, partCode, batchNo, createMan, createTime, handoverUnit, handoverQty, recDept, roamNo, deliverKey, testQty, lossQty, scrapQty)); + } + } 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 cbec9949..5d53d05e 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,11 +1,9 @@ package org.springblade.erpdata.service; 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.springblade.erpdata.pojo.vo.*; +import java.util.Date; import java.util.List; import java.util.Map; @@ -55,4 +53,10 @@ public interface IErpDataProduceService { * @return 结果 */ List> trialItemList(List nameList); + + Boolean checkCompleteErpBackFill(String woCode, String deliverKey, Double workQty, int unqualifiedQty, String userName); + + ErpReturnDataVO proRbinviogen(String hrCode, String partCode, Integer handoverQty, String prodIdent, String batchNo, String ypCode, String woCode, String handoverUnit, String createMan, String recDept, String memo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty); + + ErpReturnDataVO proRbtransferlev(String hrCode, String ypCode, String woCode, String cardNo, String partCode, String batchNo, String createMan, Date createTime, String handoverUnit, Integer handoverQty, String recDept, String roamNo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty); } 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 c33f2270..8b667b5f 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 @@ -6,10 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.erpdata.mapper.ErpDataProduceMapper; -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.pojo.vo.*; import org.springblade.erpdata.service.IErpDataProduceService; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.SqlOutParameter; @@ -313,4 +310,149 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { public List> trialItemList(List nameList) { return erpDataProduceMapper.trialItemList(nameList); } + + @Override + public Boolean checkCompleteErpBackFill(String woCode, String deliverKey, Double workQty, int unqualifiedQty, String userName) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbwxdqmtn") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_sono", Types.VARCHAR), + new SqlParameter("v_deliverkey", Types.VARCHAR), + new SqlParameter("v_zkrecqty", Types.DOUBLE), + new SqlParameter("v_cntn", Types.INTEGER), + new SqlParameter("v_chkman", Types.VARCHAR), + new SqlParameter("v_chadate", Types.DATE), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_sono", woCode); + inParams.put("v_deliverkey", deliverKey); + inParams.put("v_zkrecqty", workQty); + inParams.put("v_cntn", unqualifiedQty); + inParams.put("v_chkman", userName); + inParams.put("v_chadate", new Date()); + // 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 ErpReturnDataVO proRbinviogen(String hrCode, String partCode, Integer handoverQty, String prodIdent, String batchNo, String ypCode, String woCode, String handoverUnit, String createMan, String recDept, String memo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty) { + ErpReturnDataVO erpReturnDataVO = new ErpReturnDataVO(); + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbinviogen") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_hr_code", Types.VARCHAR), + new SqlParameter("v_part_code", Types.VARCHAR), + new SqlParameter("v_handover_qty", Types.INTEGER), + new SqlParameter("v_prod_ident", Types.VARCHAR), + new SqlParameter("v_batch_no", Types.VARCHAR), + new SqlParameter("v_po_code", Types.VARCHAR), + new SqlParameter("v_wo_code", Types.VARCHAR), + new SqlParameter("v_handover_unit", Types.VARCHAR), + new SqlParameter("v_create_man", Types.VARCHAR), + new SqlParameter("v_rec_dept", Types.VARCHAR), + new SqlParameter("v_memo", Types.VARCHAR), + new SqlParameter("v_deliver_key", Types.VARCHAR), + new SqlParameter("v_test_qty", Types.INTEGER), + new SqlParameter("v_loss_qty", Types.INTEGER), + new SqlParameter("v_scrap_qty", Types.INTEGER), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_hr_code", hrCode); + inParams.put("v_part_code", partCode); + inParams.put("v_handover_qty", handoverQty); + inParams.put("v_prod_ident", prodIdent); + inParams.put("v_batch_no", batchNo); + inParams.put("v_po_code", ypCode); + inParams.put("v_wo_code", woCode); + inParams.put("v_handover_unit", handoverUnit); + inParams.put("v_create_man", createMan); + inParams.put("v_rec_dept", recDept); + inParams.put("v_memo", memo); + inParams.put("v_deliver_key", deliverKey); + inParams.put("v_test_qty", testQty); + inParams.put("v_loss_qty", lossQty); + inParams.put("v_scrap_qty", scrapQty); + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + erpReturnDataVO.setExcflag((String) resultMap.get("v_excflag")); + erpReturnDataVO.setExcnote((String) resultMap.get("v_excnote")); + return erpReturnDataVO; + } + + @Override + public ErpReturnDataVO proRbtransferlev(String hrCode, String ypCode, String woCode, String cardNo, String partCode, String batchNo, String createMan, Date createTime, String handoverUnit, Integer handoverQty, String recDept, String roamNo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty) { + ErpReturnDataVO erpReturnDataVO = new ErpReturnDataVO(); + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbtransferlev") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_hr_code", Types.VARCHAR), + new SqlParameter("v_po_code", Types.VARCHAR), + new SqlParameter("v_wo_code", Types.VARCHAR), + new SqlParameter("v_card_no", Types.VARCHAR), + new SqlParameter("v_part_code", Types.VARCHAR), + new SqlParameter("v_batch_no", Types.VARCHAR), + new SqlParameter("v_create_man", Types.VARCHAR), + new SqlParameter("v_create_time", Types.DATE), + new SqlParameter("v_handover_unit", Types.VARCHAR), + new SqlParameter("v_handover_qty", Types.INTEGER), + new SqlParameter("v_rec_dept", Types.VARCHAR), + new SqlParameter("v_roam_no", Types.VARCHAR), + new SqlParameter("v_deliver_key", Types.VARCHAR), + new SqlParameter("v_test_qty", Types.INTEGER), + new SqlParameter("v_loss_qty", Types.INTEGER), + new SqlParameter("v_scrap_qty", Types.INTEGER), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR) + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_hr_code", hrCode); + inParams.put("v_po_code", ypCode); + inParams.put("v_wo_code", woCode); + inParams.put("v_card_no", cardNo); + inParams.put("v_part_code", partCode); + inParams.put("v_batch_no", batchNo); + inParams.put("v_create_man", createMan); + inParams.put("v_create_time", createTime); + inParams.put("v_handover_unit", handoverUnit); + inParams.put("v_handover_qty", handoverQty); + inParams.put("v_rec_dept", recDept); + inParams.put("v_roam_no", roamNo); + inParams.put("v_deliver_key", deliverKey); + inParams.put("v_test_qty", testQty); + inParams.put("v_loss_qty", lossQty); + inParams.put("v_scrap_qty", scrapQty); + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + erpReturnDataVO.setExcflag((String) resultMap.get("v_excflag")); + erpReturnDataVO.setExcnote((String) resultMap.get("v_excnote")); + return erpReturnDataVO; + } }