From 7bf84cc2aa82dad5d50ae039d186bb7f6e36ebf3 Mon Sep 17 00:00:00 2001 From: "[li_she]" <[li.she@xujiesoft.com]> Date: Wed, 30 Mar 2022 18:10:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8D=A2=E5=8C=85=E8=A3=85=20sxm=202022?= =?UTF-8?q?=E5=B9=B43=E6=9C=8830=E6=97=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScheduleController.java | 64 ++++- .../schedule/mapper/ScheduleMapper.java | 9 + .../schedule/service/ScheduleService.java | 34 +++ .../service/impl/ScheduleServiceImpl.java | 242 +++++++++++++++++- .../mapper/schedule/ScheduleMapper.xml | 5 + 5 files changed, 352 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 ba81fb2..3ac07f8 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -7,7 +7,7 @@ import com.gaotao.modules.schedule.data.dto.ScheduleDateShifDto; import com.gaotao.modules.schedule.data.dto.WorkbenchPostinspection; import com.gaotao.modules.schedule.service.ScheduleService; import com.gaotao.modules.shopOrder.entity.OperatorData; -import oracle.jdbc.proxy.annotation.Post; +import com.gaotao.modules.shopOrder.entity.ShopOrderData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -1528,4 +1528,66 @@ public class ScheduleController { } + /** + * @Author sxm + * @Description 换包装校验 + * @Date 2022/3/30 16:14 + * @Param + * @return + **/ + @RequestMapping(value = "checkRepackFinishRollWithNoFqc") + public R checkRepackFinishRollWithNoFqc(@RequestBody Map inMap){ + Map resultMap = scheduleService.checkRepackFinishRollWithNoFqc(inMap); + return R.ok() + .put("resultMap", resultMap); + } + + /** + * @Author sxm + * @Description 换包装结束卷 + * @Date 2022/3/30 16:26 + * @Param + * @return + **/ + @RequestMapping(value = "repackFinishRollWithNoFqc") + public R repackFinishRollWithNoFqc(@RequestBody Map inMap){ + scheduleService.repackFinishRollWithNoFqc(inMap); + return R.ok() + .put("code", 200) + .put("success", true) + .put("msg", "操作成功!"); + } + + + /** + * @Author sxm + * @Description 结束换包装 fqc + * @Date 2022/3/30 16:30 + * @Param + * @return + **/ + @RequestMapping(value = "repackFinishScheduleWithNoFqc") + public R repackFinishScheduleWithNoFqc(@RequestBody SearchScheduleData inData) { + scheduleService.repackFinishScheduleWithNoFqc(inData); + return R.ok() + .put("code", 200) + .put("msg", "操作成功!"); + } + + /** + * @Author sxm + * @Description 获取订单类型 + * @Date 2022/3/30 17:37 + * @Param + * @return + **/ + @PostMapping("getShopOrderType") + public R getShopOrderType(@RequestBody SearchScheduleData inData){ + String shopOrderType = scheduleService.getShopOrderType(inData); + return R.ok() + .put("data", shopOrderType) + .put("msg", "操作成功!"); + } + + } diff --git a/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMapper.java b/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMapper.java index f762265..c237499 100644 --- a/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMapper.java +++ b/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleMapper.java @@ -534,4 +534,13 @@ public interface ScheduleMapper { * @return **/ void repairSOFlagProduceOrder(SearchScheduleData inData); + + /** + * @Author sxm + * @Description 获取订单信息 + * @Date 2022/3/30 17:39 + * @Param + * @return + **/ + String getShopOrderType(SearchScheduleData inData); } 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 317e5be..57e58f4 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java @@ -902,5 +902,39 @@ public interface ScheduleService { R soscheduleNewReinspectjob(SearchScheduleData inData); + /** + * @Author sxm + * @Description 换包装结束卷校验 + * @Date 2022/3/30 15:59 + * @Param + * @return + **/ + Map checkRepackFinishRollWithNoFqc(Map inMap); + + /** + * @Author sxm + * @Description 换包装结束卷 + * @Date 2022/3/30 15:59 + * @Param + * @return + **/ + void repackFinishRollWithNoFqc(Map inMap); + /** + * @Author sxm + * @Description 换包装结单 + * @Date 2022/3/30 16:32 + * @Param + * @return + **/ + void repackFinishScheduleWithNoFqc(SearchScheduleData inData); + + /** + * @Author sxm + * @Description 获取生产订单类型 + * @Date 2022/3/30 17:37 + * @Param + * @return + **/ + String getShopOrderType(SearchScheduleData inData); } \ 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 a1f252f..a9188b1 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 @@ -1954,7 +1954,7 @@ public class ScheduleServiceImpl implements ScheduleService { //2.调用存储过程 校验是否可以下机卷 todo sxm 2022-3-15 添加参数 CreateNewRollFlag Map checkMap2 = this.checkFinishRollWithSfdcRoll(site, orderNo, itemNo, seqNo, rollNo, pageData.getCreateNewRollFlag()); - //判断是否检验成功 + //判断是否检验成功+ String code2 = String.valueOf(checkMap2.get("resultCode")); if ("400".equalsIgnoreCase(code2)) { String msg = String.valueOf(checkMap2.get("resultMsg")); @@ -3997,4 +3997,244 @@ public class ScheduleServiceImpl implements ScheduleService { } return R.ok("操作成功!"); } + + + @Override + public Map checkRepackFinishRollWithNoFqc(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.getUsername(); + String operatorId = pageData.getOperatorId(); + Float approvedQty = pageData.getApprovedQty(); + Float editReportQty = pageData.getSfdcReportedQty(); + Float editTotalReportQty = pageData.getTotalQty();//总数量 + Float editTotalApprovedQty = pageData.getApprovedQty();//总量数量 + Float otherRollQty = pageData.getOtherRollQty(); + Float editNewRollQty = pageData.getEditNewRollQty(); + String scheduledDate = pageData.getScheduledDate(); + String shiftDesc = pageData.getShiftDesc(); + String shiftNo = pageData.getShiftNo(); + + //判断报工的数量是否为正整数 + Double remainderQty = approvedQty % 1.0; + if (remainderQty > 0) { + throw new RRException("总良品数量不允许输入小数!"); + } + + //判断是否有主材上机 + if (sfdcMaterialList.size() == 0) { + throw new RRException("为扫描主材不可结束卷!"); + } + //1.调用存储过程 校验工单 派工单 上机卷 信息是否符合条件 + Map checkMap1 = this.checkFinishRollWithScheduleOpsShift(site, orderNo, itemNo, seqNo, rollNo, scheduledDate, shiftNo); + //判断是否检验成功 + String code1 = String.valueOf(checkMap1.get("resultCode")); + if ("400".equalsIgnoreCase(code1)) { + String msg = String.valueOf(checkMap1.get("resultMsg")); + throw new RRException(msg); + } + //4.调用存储过程 上机的主材依次校验 + //先循环验证参数是否符合规则 + for (int i = 0; i < sfdcMaterialList.size(); i++) { + SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0); + Float transQty = sfdcMaterialData.getTransQty(); + Float netIssueQty = sfdcMaterialData.getNetIssueQty(); + Integer histSeqNo = sfdcMaterialData.getHistSeqNo(); + //判断是否符合规则 + if (netIssueQty == null) { + throw new RRException("材料上本卷耗用数量不能为空!"); + } + if (netIssueQty <= 0) { + throw new RRException("材料上本卷耗用数量必须大于0!"); + } + if (netIssueQty > transQty) { + throw new RRException("材料上本卷耗用数量大于发料数量!"); + } + //调用存储过程校验每一个卷的数量 + Map resultMap = this.checkRepackFinishRollWithSfdcMaterialHist (site, orderNo, itemNo, rollNo, seqNo, editTotalReportQty, otherRollQty, editNewRollQty, netIssueQty, histSeqNo, username); + //区分是否抛出异常的信息 + String resultCode = String.valueOf(resultMap.get("resultCode")); + if ("400".equalsIgnoreCase(resultCode)) { + String msg = String.valueOf(resultMap.get("resultMsg")); + throw new RRException(msg); + } + + return resultMap; + } + return null; + } + + + /** + * @return java.util.Map + * @Author LR + * @Description 存储过程校验 单个材料的校验数据 + * @DateTime 2022/1/25 15:05 + * @Param [site, orderNo, itemNo, rollNo, seqNo, editTotalReportQty, otherRollQty, editNewRollQty, netIssueQty, histSeqNo] + **/ + public Map checkRepackFinishRollWithSfdcMaterialHist (String site, String orderNo, Integer itemNo, String rollNo, String seqNo, Float editTotalReportQty, Float otherRollQty, + Float editNewRollQty, Float netIssueQty, Integer histSeqNo, String username) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(editTotalReportQty); + params.add(otherRollQty); + params.add(editNewRollQty); + params.add(netIssueQty); + params.add(histSeqNo); + params.add(username); + //执行存储过程 + List> resultList = procedureMapper.getProcedureData("checkFinishRollWithSfdcMaterialHist", params); + //返回执行的结果 + return resultList.get(0); + } + + + @Override + @Transactional + public void repackFinishRollWithNoFqc(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.getUsername(); + String operatorId = pageData.getOperatorId(); + String operatorName = pageData.getOperatorName(); + Float editTotalReportQty = pageData.getTotalQty();//总数量 + Float totalApprovedQty = pageData.getApprovedQty();//总良数量 + Float otherRollQty = pageData.getOtherRollQty(); + Float defectedQty = pageData.getDefectedQty(); + + Float editNewRollQty = pageData.getEditNewRollQty(); + String reportedTime = pageData.getReportedTime(); + Float sfdcReportedQty = pageData.getSfdcReportedQty();//报告数量 + Float sfdcApprovedQty = pageData.getSfdcApprovedQty();//合格数量 + Float sfdcSetupTime = pageData.getSfdcSetupTime();//调机时间 + Float sfdcProdTime = pageData.getSfdcProdTime(); //生产时间 + Float sfdcDownTime = pageData.getSfdcDownTime();//停机时间 + String eventTime = pageData.getEventTime();//开工时间 + String tillTime = pageData.getTillTime();//完工时间 + String remark = pageData.getRemark();//备注 + Float sfdcSetupDownTime = pageData.getSfdcSetupDownTime();//调机停机 + Float sfdcProdSetupTime = pageData.getSfdcProdSetupTime();//生产调机 + Float sfdcManufactureTime = pageData.getSfdcManufactureTime();//制造时间 + String exceptionFlag = pageData.getExceptionFlag(); + String exceptionReason = pageData.getExceptionReason(); + //首先调用校验的方法 + this.checkRepackFinishRollWithNoFqc(inMap); + + //1.调用存储过程 处理SfdcTimeHist的信息 + this.finishRollProcessSfdcTimeHist(site, orderNo, itemNo, seqNo, rollNo, operatorId, reportedTime); + //2.调用存储过程 处理SfdcToolHist的信息 + this.finishRollProcessSfdcToolHist(site, orderNo, itemNo, seqNo, rollNo, editTotalReportQty, operatorId, operatorName, reportedTime); + //3.调用存储过程 处理SfdcMaterialHist的信息 --主材 + //循环for循环处理 + for (int i = 0; i < sfdcMaterialList.size(); i++) { + SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0); + Float netIssueQty = sfdcMaterialData.getNetIssueQty(); + Integer histSeqNo = sfdcMaterialData.getHistSeqNo(); + this.finishRollProcessSfdcMaterialHistWithKeyRm(site, orderNo, itemNo, seqNo, rollNo, netIssueQty, histSeqNo, operatorId, reportedTime); + } + //4.调用存储过程 处理SfdcMaterialHist的信息 --非主材 + this.finishRollProcessSfdcMaterialHistWithNotKeyRm(site, orderNo, itemNo, seqNo, rollNo, operatorId, reportedTime); + //5.调用存储过程 处理SfdcRoll和SfdcRoollOps todo sxm 2022 -3 -15 添加参数 是否创建新卷 + this.finishRollProcessSfdcRollAndOps(site, orderNo, itemNo, seqNo, rollNo, totalApprovedQty, sfdcApprovedQty, defectedQty, operatorName, reportedTime, pageData.getCreateNewRollFlag()); + //6.调用存储过程 处理Sfdc和派工单 + this.finishRollProcessSfdcAndSchedule(site, orderNo, itemNo, seqNo, rollNo, sfdcReportedQty, sfdcApprovedQty, + sfdcSetupTime, sfdcProdTime, sfdcDownTime, eventTime, tillTime, remark, + sfdcSetupDownTime, sfdcProdSetupTime, defectedQty, sfdcManufactureTime, operatorId, reportedTime); + //7.正常结束卷还是 异常下机 + if ("Y".equalsIgnoreCase(exceptionFlag)) { + this.finishRollProcessException(site, orderNo, itemNo, seqNo, rollNo, exceptionReason, username); + } + // 调用未结生产生产订单下机卷 + if ("Y".equals(pageData.getCreateNewRollFlag())) { + this.finishRollProcessSFDCNewRoll(site, orderNo, itemNo, seqNo, rollNo, pageData.getNewCreateRollQty(), pageData.getOperatorId()); + } + } + + @Override + @Transactional + public void repackFinishScheduleWithNoFqc(SearchScheduleData inData) { + //公共参数 + String site = inData.getSite(); + String orderNo = inData.getOrderNo(); + Integer itemNo = inData.getItemNo(); + String seqNo = inData.getSeqNo(); + String scheduledDate = inData.getScheduledDate(); + String shiftDesc = inData.getShiftDesc(); + Float reportedQty = inData.getApprovedQty();//总良品数量 + Float defectedQty = inData.getDefectedQty();//总不良数量 + String username = inData.getUsername(); + String operatorId = inData.getOperatorId(); + String operatorName = inData.getOperatorName(); + String reportedTime = inData.getReportedTime(); + String exceptionFlag = inData.getExceptionFlag(); + String exceptionReason = inData.getExceptionReason(); + + //1.调用检查的方法 + this.checkFinishScheduleWithNoFqc(inData); + + //调用结束派工单的存储过程 + // 1. 调用存储过程 处理工具的信息 + this.finishScheduleProcessSfdcToolHist(site, orderNo, itemNo, seqNo, reportedTime); + // 2. 调用存储过程 处理时间的信息 + Map timeMap = this.finishScheduleProcessSfdcTimeHist(site, orderNo, itemNo, seqNo, operatorId, reportedTime); + //获取最后的序号 + int histSeqNo = Integer.parseInt(String.valueOf(timeMap.get("histSeqNo"))); + //3.调用存储过程处理 材料历史记录数据 以及原材料的数据 + this.finishScheduleProcessSfdcMaterialHist(site, orderNo, itemNo, seqNo, reportedTime); + //4.调用存储过程处理 派工单和sfdc的信息 + this.finishScheduleProcessSfdcAndSchedule(site, orderNo, itemNo, seqNo, histSeqNo, shiftDesc, username, operatorId, reportedTime, scheduledDate); + //5.调用存储过程处理 transHeader TransDetail TransDetailSub数据 + this.finishRepackScheduleProcessTransData(site, orderNo, itemNo, seqNo, username, operatorName, reportedTime); + //6.调用存储过程 处理异常信息 + if ("Y".equalsIgnoreCase(exceptionFlag)) { + this.finishScheduleProcessException(site, orderNo, itemNo, seqNo, exceptionReason, username, reportedTime); + } + //7.调用SAP 处理程序 + //8.反写交易记录表的SAP交易号 + } + + /** + * @return void + * @Author LR + * @Description 调用存储过程处理 transHeader TransDetail TransDetailSub数据 + * @DateTime 2022/2/8 14:12 + * @Param [site, orderNo, itemNo, seqNo, username, reportedTime] + **/ + public void finishRepackScheduleProcessTransData (String site, String orderNo, Integer itemNo, String seqNo, String username, String operatorName, String reportedTime) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(username); + params.add(operatorName); + params.add(reportedTime); + //调用存储过程 + procedureMapper.getProcedureData("finishRepackScheduleProcessTransData ", params); + } + + @Override + public String getShopOrderType(SearchScheduleData inData) { + return scheduleMapper.getShopOrderType(inData); + } } \ No newline at end of file diff --git a/src/main/resources/mapper/schedule/ScheduleMapper.xml b/src/main/resources/mapper/schedule/ScheduleMapper.xml index ef595aa..331cb12 100644 --- a/src/main/resources/mapper/schedule/ScheduleMapper.xml +++ b/src/main/resources/mapper/schedule/ScheduleMapper.xml @@ -1168,4 +1168,9 @@ + \ No newline at end of file