From 94f92ac9f2781346176a2a1e740e5204cc6fd588 Mon Sep 17 00:00:00 2001 From: rui_li <877258667@qq.com> Date: Mon, 27 Dec 2021 16:24:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E8=B0=83=E6=9C=BA=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScheduleController.java | 45 ++- .../schedule/data/SearchScheduleData.java | 9 + .../schedule/service/ScheduleService.java | 28 ++ .../service/impl/ScheduleServiceImpl.java | 263 +++++++++++++----- 4 files changed, 280 insertions(+), 65 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 1ff5923..4ed0119 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -553,6 +553,20 @@ public class ScheduleController { .put("rows", resultList); } + /** + * TODO 检查是否可以上料 + * @author LR + * @date 2021/12/22 11:57 + * @param inData + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "checkFeedingMaterialRoll") + public R checkFeedingMaterialRoll(@RequestBody SearchScheduleData inData){ + Map resultMap = scheduleService.checkFeedingMaterialRoll(inData); + return R.ok() + .put("resultMap", resultMap); + } + /** * @Author LR * @Description 保存材料上机的记录数据 @@ -584,7 +598,36 @@ public class ScheduleController { .put("success", true) .put("msg", "操作成功!"); } - // + + /** + * TODO 开始调机 + * @author LR + * @date 2021/12/27 14:54 + * @param inData + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "startTuning") + public R startTuning(@RequestBody SearchScheduleData inData){ + scheduleService.startTuning(inData); + return R.ok() + .put("code", 200) + .put("success", true) + .put("msg", "操作成功!"); + } + + /** + * TODO 检验停机代码 + * @author LR + * @date 2021/12/27 11:42 + * @param inData + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "checkDownTimeCode") + public R checkDownTimeCode(@RequestBody SearchScheduleData inData){ + Map resultMap = scheduleService.checkDownTimeCode(inData); + return R.ok() + .put("resultMap", resultMap); + } // //创建新卷的功能 // diff --git a/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java b/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java index c13886f..943aa3b 100644 --- a/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java +++ b/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java @@ -60,6 +60,7 @@ public class SearchScheduleData extends BaseData { private String rmPartNo;//材料料号 private Integer bomItemNo;//上机的行号 private Integer histSeqNo;//需要换料的行号 + private String downTimeCode;//停机代码 public SearchScheduleData() { } @@ -319,4 +320,12 @@ public class SearchScheduleData extends BaseData { public void setHistSeqNo(Integer histSeqNo) { this.histSeqNo = histSeqNo; } + + public String getDownTimeCode() { + return downTimeCode; + } + + public void setDownTimeCode(String downTimeCode) { + this.downTimeCode = downTimeCode; + } } 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 1e60c5a..988f64e 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java @@ -302,6 +302,15 @@ public interface ScheduleService { **/ List> getBomItemNosByPartNo(SearchScheduleData inData); + /** + * TODO 检查是否可以上料 + * @author LR + * @date 2021/12/22 13:09 + * @param inData + * @return java.util.Map + **/ + Map checkFeedingMaterialRoll(SearchScheduleData inData); + /** * @Author LR * @Description 保存材料上机的记录数据 @@ -319,4 +328,23 @@ public interface ScheduleService { * @return void **/ void connectMaterialRoll(SearchScheduleData inData); + + /** + * TODO 添加注释 + * @author LR + * @date 2021/12/27 14:54 + * @param inData + * @return void + **/ + void startTuning(SearchScheduleData inData); + + /** + * TODO 检查停机代码 + * @author LR + * @date 2021/12/27 11:42 + * @param inData + * @return java.util.Map + **/ + Map checkDownTimeCode(SearchScheduleData inData); + } 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 ae77a7c..119c642 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 @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.xml.transform.Result; import java.math.BigDecimal; import java.util.*; @@ -755,27 +756,73 @@ public class ScheduleServiceImpl implements ScheduleService { } @Override - @Transactional - public void feedingMaterialRoll(SearchScheduleData inData) { + public Map checkFeedingMaterialRoll(SearchScheduleData inData) { + Map resultMap = new HashMap<>(); //公共参数 String site = inData.getSite(); String orderNo = inData.getOrderNo(); Integer itemNo = inData.getItemNo(); String seqNo = inData.getSeqNo(); String rollNo = inData.getRollNo(); - String currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); - - //判断上机的物料是否相同 验证BOM是否发生变化 + String rmRollNo = inData.getRmRollNo(); + Integer bomItemNo = inData.getBomItemNo(); Integer histSeqNo = inData.getHistSeqNo(); + String currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); if (histSeqNo > 0){ - throw new RRException("请选择换料功能!"); + resultMap.put("code", 400); + resultMap.put("msg", "请选择换料功能!"); + return resultMap; } //调用存储过程判断是否处于调剂或者停机--上/换材料 String resultCode = this.checkProcessMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, currentTime); if ("N".equalsIgnoreCase(resultCode)){ - throw new RRException("当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!"); + resultMap.put("code", 400); + resultMap.put("msg", "当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!"); + return resultMap; + } + //继续判断是否继续 + Map checkMap = this.checkFeedingMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, rmRollNo, bomItemNo); + String code = String.valueOf(checkMap.get("resultCode")); + String msg = String.valueOf(checkMap.get("resultMsg")); + resultMap.put("code", code); + resultMap.put("msg", msg); + return resultMap; + } + + /** + * TODO 调用检查的是否可以上料的存储过程 + * @author LR + * @date 2021/12/22 13:49 + * @return java.util.Map + **/ + public Map checkFeedingMaterialRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String rmRollNo, Integer bomItemNo) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(rmRollNo); + params.add(bomItemNo); + //执行存储过程 + List> resultList = procedureMapper.getProcedureData("checkFeedingMaterialRoll", params); + //返回执行的结果 + return resultList.get(0); + } + + @Override + @Transactional + public void feedingMaterialRoll(SearchScheduleData inData) { + //先调用检查方法是否通过 + Map checkMap = this.checkFeedingMaterialRoll(inData); + //判断检查是否通过 + String code = String.valueOf(checkMap.get("code")); + if ("400".equalsIgnoreCase(code)){ + String msg = String.valueOf(checkMap.get("msg")); + throw new RRException(msg); } - //调用存储过程判断是否可以上料功能 + //调用存储过程执行上料方法 + } @@ -799,75 +846,163 @@ public class ScheduleServiceImpl implements ScheduleService { //获取返回的结果 Map resultMap = resultList.get(0); //处理返回的结果 - String resultCode = String.valueOf(resultMap.get("resultCode")); - return resultCode; + return String.valueOf(resultMap.get("resultCode")); } @Override @Transactional public void connectMaterialRoll(SearchScheduleData inData) { - //判断上机的物料是否相同 验证BOM是否发生变化 + //公共参数 + String site = inData.getSite(); + String orderNo = inData.getOrderNo(); + Integer itemNo = inData.getItemNo(); + String seqNo = inData.getSeqNo(); + String rollNo = inData.getRollNo(); + String rmRollNo = inData.getRmRollNo(); + Integer bomItemNo = inData.getBomItemNo(); Integer histSeqNo = inData.getHistSeqNo(); + String currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); if (histSeqNo == 0){ throw new RRException("请选择上料功能!"); } - //判断派工单是否关闭 - Integer countNums = scheduleMapper.checkScheduleStatus(inData); - if (null == countNums || countNums == 0){ - throw new RRException("该派工单上不存在或者已经被关闭,不能进行相关的操作!"); - } - //查询材料卷号的数据 - CRollInfoOutData cRollInfo = scheduleMapper.getCRollInfoByRollNo(inData); - //空值判断 - if (null == cRollInfo){ - throw new RRException("该材料卷号不存在,请重新扫描!"); - } - //判断是否被冻结 - String frozenFlag = cRollInfo.getFrozenFlag(); - if (frozenFlag.equalsIgnoreCase("Y")){ - throw new RRException("该材料卷号已经被冻结,请重新扫描!"); - } - //判断是在库 - String statusDb = cRollInfo.getStatusDb(); - if (statusDb.equalsIgnoreCase("N")){ - throw new RRException("该材料卷号尚未入库,请重新扫描!"); - } - if (statusDb.equalsIgnoreCase("I")){ - throw new RRException("该材料卷号已入库但是尚未移到车间仓库,请重新扫描!"); - } - if (statusDb.equalsIgnoreCase("P") || statusDb.equalsIgnoreCase("D")){ - //查询当前卷的上级记录 - List> materialHists = scheduleMapper.getSfdcMaterialHistByRollNo(inData); - String orderInfo = String.valueOf(materialHists.get(0).get("orderInfo")); - throw new RRException("该材料卷号已经在其他的订单上使用或者消耗完,订单号/工序号/派工单单号:"+orderInfo+",请重新扫描!"); + //调用存储过程判断是否处于调剂或者停机--上/换材料 + String resultCode = this.checkProcessMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, currentTime); + if ("N".equalsIgnoreCase(resultCode)){ + throw new RRException("当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!"); } - //清空卷号 设置上机的材料料号 - inData.setRollNo(""); - String rmPartNo = cRollInfo.getPartNo(); - inData.setRmPartNo(rmPartNo); - - //暂时去掉序号 - inData.setHistSeqNo(0); - List sfdcMaterialDataList = scheduleMapper.getSfdcMaterialByCon(inData); - String tempRmPartNo = sfdcMaterialDataList.get(0).getPartNo(); - if (!tempRmPartNo.equalsIgnoreCase(rmPartNo)){ - throw new RRException("新上的卷与BOM中该行号之前扫描的卷不是同一个物料!"); + //继续判断是否继续 + Map checkMap = this.checkConnectMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, rmRollNo, bomItemNo, histSeqNo); + String code = String.valueOf(checkMap.get("resultCode")); + //判断是否可以接料 + if("400".equalsIgnoreCase(code)){ + String msg = String.valueOf(checkMap.get("resultMsg")); + throw new RRException(msg); } - //判断该材料是否属于该订单的 通过物料来判断 - List> bomList = scheduleMapper.getBomItemNosByPartNo(inData); - if (bomList.size() == 0){ - throw new RRException("该材料不是该订单的!"); + //继续则执行换料的存储过程 + + + } + + @Override + @Transactional + public void startTuning(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 currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); + + //首先校验是否可以开始调机 + this.checkStartTuning(site, orderNo, itemNo, seqNo, rollNo); + + //执行存储过程开始调机 + this.startTuning(site, orderNo, itemNo, seqNo, rollNo, username, currentTime); + } + + /** + * TODO 校验是否可以开始调机 + * @author LR + * @date 2021/12/27 15:15 + * @return void + **/ + public void checkStartTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + //执行存储过程 + List> resultList = procedureMapper.getProcedureData("checkStartTuning", params); + //处理检查结果 + Map resultMap = resultList.get(0); + String code = String.valueOf(resultMap.get("resultCode")); + //判断是否存在异常 + if (!"200".equalsIgnoreCase(code)){ + String msg = String.valueOf(resultMap.get("resultMsg")); + throw new RRException(msg); } - //判断是否是换料 - if (histSeqNo > 0){ - inData.setHistSeqNo(histSeqNo); - inData.setBomItemNo(-1); - sfdcMaterialDataList = scheduleMapper.getSfdcMaterialByCon(inData); - tempRmPartNo = sfdcMaterialDataList.get(0).getPartNo(); - if (!tempRmPartNo.equalsIgnoreCase(rmPartNo)){ - throw new RRException("新上的卷与原来的卷不属于同一个物料!"); - } + } + + /** + * TODO 开始调机的操作 + * @author LR + * @date 2021/12/27 15:21 + * @return void + **/ + public void startTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, 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(username); + params.add(currentTime); + //执行存储过程 + procedureMapper.execProduceData("startTuning", params); + } + + /** + * TODO 调用存储过程判断是否可以接换料功能 + * @author LR + * @date 2021/12/22 15:39 + * @return java.util.Map + **/ + public Map checkConnectMaterialRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String rmRollNo, Integer bomItemNo, Integer histSeqNo) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(rmRollNo); + params.add(bomItemNo); + params.add(histSeqNo); + //执行存储过程 + List> resultList = procedureMapper.getProcedureData("checkConnectMaterialRoll", params); + //返回执行的结果 + return resultList.get(0); + } + + @Override + public Map checkDownTimeCode(SearchScheduleData inData) { + //公共参数 + String site = inData.getSite(); + String orderNo = inData.getOrderNo(); + Integer itemNo = inData.getItemNo(); + String seqNo = inData.getSeqNo(); + String rollNo = inData.getRollNo(); + String downTimeCode = inData.getDownTimeCode(); + Map resultMap = this.checkDownTimeCode(site, orderNo, itemNo, seqNo, rollNo, downTimeCode); + //判断是否检验成功 + String code = String.valueOf(resultMap.get("resultCode")); + if (!"200".equalsIgnoreCase(code)){ + String msg = String.valueOf(resultMap.get("resultMsg")); + throw new RRException(msg); } + return resultMap; + } + + /** + * TODO 调用存储过程返回停机代码的结果 + * @author LR + * @date 2021/12/27 11:55 + * @return java.util.Map + **/ + public Map checkDownTimeCode(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String downTimeCode) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(downTimeCode); + List> resultList = procedureMapper.getProcedureData("checkDownTimeCode", params); + return resultList.get(0); }