From 0db3517c18dd781af8fee17a01d7cf3a4f0a68a3 Mon Sep 17 00:00:00 2001 From: rui_li <877258667@qq.com> Date: Thu, 13 Jan 2022 13:26:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E7=94=9F=E4=BA=A7=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E8=BF=87=E7=A8=8B=E5=92=8C=E4=B8=9A=E5=8A=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScheduleController.java | 31 ++++ .../schedule/service/ScheduleService.java | 20 ++- .../service/impl/ScheduleServiceImpl.java | 160 +++++++++++++++++- 3 files changed, 209 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java index 1895f76..17027cc 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -720,6 +720,37 @@ public class ScheduleController { .put("resultMap", resultMap); } + /** + * TODO 开始生产的业务 + * @author LR + * @date 2022/1/6 17:24 + * @param inData + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "startProduce") + public R startProduce(@RequestBody SearchScheduleData inData){ + scheduleService.startProduce(inData); + return R.ok() + .put("code", 200) + .put("success", true) + .put("msg", "操作成功!"); + } + + /** + * TODO 结束调机和开始生产 + * @author LR + * @date 2022/1/12 14:01 + * @param inMap + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "endTuningAndStartProduce") + public R endTuningAndStartProduce(@RequestBody Map inMap){ + scheduleService.endTuningAndStartProduce(inMap); + return R.ok() + .put("code", 200) + .put("success", true) + .put("msg", "操作成功!"); + } diff --git a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java index 9b1f9ca..4d31e75 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java @@ -400,4 +400,22 @@ public interface ScheduleService { * @return java.util.Map **/ Map checkStartProduce(SearchScheduleData inData); -} + + /** + * TODO 开始生产的业务 + * @author LR + * @date 2022/1/6 17:24 + * @param inData + * @return void + **/ + void startProduce(SearchScheduleData inData); + + /** + * TODO 结束调机和开始生产 + * @author LR + * @date 2022/1/12 14:02 + * @param inMap + * @return void + **/ + void endTuningAndStartProduce(Map inMap); +} \ No newline at end of file diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java index d64393b..d79ac1e 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java @@ -1,5 +1,6 @@ package com.gaotao.modules.schedule.service.impl; +import com.alibaba.fastjson.JSON; import com.gaotao.common.exception.RRException; import com.gaotao.common.utils.DateUtil; import com.gaotao.common.utils.DateUtils; @@ -1323,5 +1324,162 @@ public class ScheduleServiceImpl implements ScheduleService { return resultList.get(0); } + @Override + public void startProduce(SearchScheduleData inData) { + //公共参数 + String site = inData.getSite(); + String orderNo = inData.getOrderNo(); + Integer itemNo = inData.getItemNo(); + String seqNo = inData.getSeqNo(); + String rollNo = inData.getRollNo(); + String username = inData.getOperatorId(); + String reportDate = inData.getReportDate(); + String reportTime = inData.getReportTime(); + String operateTime = reportDate+ " "+reportTime.substring(0, 5); + //首先调用方法检测是否可以开始生产 + this.checkStartProduce(inData); + + //如果可以开始生产在调用存储过程 + this.startProduce(site, orderNo, itemNo, seqNo, rollNo, username, operateTime); + } + + /** + * TODO 调用存储过程执行开始生产 + * @author LR + * @date 2022/1/6 17:29 + * @return void + **/ + public void startProduce(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String username, String operateTime) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(username); + params.add(operateTime); + //执行存储过程 + procedureMapper.execProduceData("startProduce", params); + } + + @Override + @Transactional + public void endTuningAndStartProduce(Map inMap) { + String strPageData = String.valueOf(inMap.get("pageData")); + SearchScheduleData pageData = JSON.parseObject(strPageData, SearchScheduleData.class); + String strSfdcMaterialList = String.valueOf(inMap.get("materialList")); + List sfdcMaterialList = JSON.parseArray(strSfdcMaterialList, SfdcMaterialData.class); + //公共参数 + String site = pageData.getSite(); + String orderNo = pageData.getOrderNo(); + Integer itemNo = pageData.getItemNo(); + String seqNo = pageData.getSeqNo(); + String rollNo = pageData.getRollNo(); + String username = pageData.getOperatorId(); + String reportDate = pageData.getReportDate(); + String reportTime = pageData.getReportTime(); + String currentTime = reportDate + " " + reportTime; + //先循环验证参数是否符合规则 + for (int i = 0; i < sfdcMaterialList.size(); i++){ + SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0); + Float transQty = sfdcMaterialData.getTransQty(); + Float netIssueQty = sfdcMaterialData.getNetIssueQty(); + //判断是否符合规则 + if (netIssueQty == null){ + throw new RRException("材料上本卷耗用数量不能为空!"); + } + if (netIssueQty <= 0){ + throw new RRException("材料上本卷耗用数量必须大于0!"); + } + if (netIssueQty > transQty){ + throw new RRException("材料上本卷耗用数量大于发料数量!"); + } + } + + //验证是否结束调机 + Map tuningMap = this.checkEndTuning(site, orderNo, itemNo, seqNo, rollNo, currentTime); + //判断是否继续 + String tuningCode = String.valueOf(tuningMap.get("resultCode")); + if(!"200".equalsIgnoreCase(tuningCode)){ + String tuningMsg = String.valueOf(tuningMap.get("resultMsg")); + throw new RRException(tuningMsg); + } + + //验证是否可以开始生产 + Map produceMap = this.checkStartProduce(site, orderNo, itemNo, seqNo, rollNo); + //判断是否继续 + String produceCode = String.valueOf(produceMap.get("resultCode")); + if("400".equalsIgnoreCase(produceCode)){ + String produceMsg = String.valueOf(produceMap.get("resultMsg")); + throw new RRException(produceMsg); + } + + //验证通过循环执行结束调机操作 + for (int i = 0; i < sfdcMaterialList.size(); i++){ + SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0); + String rmRollNo = sfdcMaterialData.getRmRollNo(); + String rmPartNo = sfdcMaterialData.getPartNo(); + int histSeqNo = sfdcMaterialData.getHistSeqNo(); + String sapBomItemNo = sfdcMaterialData.getsAPBOMItemNo(); + String startFromRollNo = sfdcMaterialData.getStartFromRollNo(); + String keyRMFlag = sfdcMaterialData.getKeyRMFlag(); + Float transQty = sfdcMaterialData.getTransQty(); + Float netIssueQty = sfdcMaterialData.getNetIssueQty(); + //调用存储过程结束当前材料卷的调机过程 + this.endTuning(site, orderNo, itemNo, seqNo, rollNo, rmRollNo, rmPartNo, histSeqNo, transQty, netIssueQty, keyRMFlag, sapBomItemNo, startFromRollNo, username, currentTime); + } + + //执行开始生产的存储过程 + this.startProduce(site, orderNo, itemNo, seqNo, rollNo, username, currentTime); + } + + /** + * TODO 添加注释 + * @author LR + * @date 2022/1/13 11:15 + * @return java.util.Map + **/ + public Map checkEndTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String currentTime) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(currentTime); + //执行存储过程 + List> resultList = procedureMapper.getProcedureData("checkEndTuning", params); + //返回执行的结果 + return resultList.get(0); + } + + /** + * TODO 执行结束调机的操作(针对单个材料的主材) + * @author LR + * @date 2022/1/13 11:33 + * @return void + **/ + public void endTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String rmRollNo, String rmPartNo, int histSeqNo, Float transQty, Float netIssueQty, + String keyRMFlag, String sapBomItemNo, String startFromRollNo, String username, String currentTime) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(rmRollNo); + params.add(rmPartNo); + params.add(histSeqNo); + params.add(transQty); + params.add(netIssueQty); + params.add(keyRMFlag); + params.add(sapBomItemNo); + params.add(startFromRollNo); + params.add(username); + params.add(currentTime); + //执行存储过程 + procedureMapper.execProduceData("endTuning", params); + } + -} +} \ No newline at end of file