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 17027cc..9078e49 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -752,15 +752,34 @@ public class ScheduleController { .put("msg", "操作成功!"); } + /** + * TODO 检查是否可以结束卷操作 + * @author LR + * @date 2022/1/13 16:55 + * @param inMap + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "checkFinishRoll") + public R checkFinishRoll(@RequestBody Map inMap){ + Map resultMap = scheduleService.checkFinishRoll(inMap); + return R.ok() + .put("resultMap", resultMap); + } - - - - - - - - - + /** + * TODO 结束卷操作 + * @author LR + * @date 2022/1/13 17:38 + * @param inMap + * @return com.gaotao.common.utils.R + **/ + @RequestMapping(value = "finishRoll") + public R finishRoll(@RequestBody Map inMap){ + scheduleService.finishRoll(inMap); + return R.ok() + .put("code", 200) + .put("success", true) + .put("msg", "操作成功!"); + } } 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 929353a..c931d0e 100644 --- a/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java +++ b/src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java @@ -67,6 +67,8 @@ public class SearchScheduleData extends BaseData { private String defectCode;//不良代码 private Float defectQty;//不良的数量 private String toolInstanceId;//工具实例的编码 + private String shiftNo;//班次信息 + private Float approvedQty;//良品的总数量 public SearchScheduleData() { } @@ -382,4 +384,20 @@ public class SearchScheduleData extends BaseData { public void setToolInstanceId(String toolInstanceId) { this.toolInstanceId = toolInstanceId; } + + public String getShiftNo() { + return shiftNo; + } + + public void setShiftNo(String shiftNo) { + this.shiftNo = shiftNo; + } + + public Float getApprovedQty() { + return approvedQty; + } + + public void setApprovedQty(Float approvedQty) { + this.approvedQty = approvedQty; + } } \ No newline at end of file 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 4d31e75..c410daa 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java @@ -2,6 +2,7 @@ package com.gaotao.modules.schedule.service; import com.gaotao.modules.schedule.data.*; import com.gaotao.modules.shopOrder.entity.OperatorData; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -418,4 +419,22 @@ public interface ScheduleService { * @return void **/ void endTuningAndStartProduce(Map inMap); + + /** + * TODO 检查是否可以结束卷操作 + * @author LR + * @date 2022/1/13 16:56 + * @param inMap + * @return java.util.Map + **/ + Map checkFinishRoll(@RequestBody Map inMap); + + /** + * TODO 结束卷操作 + * @author LR + * @date 2022/1/13 17:39 + * @param inMap + * @return void + **/ + void finishRoll(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 d79ac1e..6af57b5 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,8 +12,8 @@ import com.gaotao.modules.shopOrder.entity.OperatorData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; -import javax.xml.transform.Result; import java.math.BigDecimal; import java.util.*; @@ -377,7 +377,7 @@ public class ScheduleServiceImpl implements ScheduleService { //查询数据 List> resultList = scheduleMapper.getSfdcTimeData(inData); //判断是否查询到结果数据 - if(resultList.size() > 0){ + if(resultList.size() > 0 && resultList.get(0) != null){ result = resultList.get(0); String strReportedSetupTime = String.valueOf(result.get("reportedSetupTime")); //判断null @@ -465,7 +465,7 @@ public class ScheduleServiceImpl implements ScheduleService { //按照条件查询当前的数据 List resultList = scheduleMapper.getSfdcDataByCon(inData); //判断是否查询到结果 - if(resultList.size() > 0){ + if(resultList.size() > 0 && resultList.get(0) != null){ return resultList.get(0); }else{ return new SfdcData(); @@ -1481,5 +1481,122 @@ public class ScheduleServiceImpl implements ScheduleService { procedureMapper.execProduceData("endTuning", params); } + @Override + public Map checkFinishRoll(@RequestBody 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 resourceId = pageData.getResourceId(); + String shiftNo = pageData.getShiftNo(); + Float approvedQty = pageData.getApprovedQty(); + Date scheduleDate = pageData.getScheduleDate(); + String scheduleTime = DateUtil.getStringDate(scheduleDate, "yyyy-MM-dd"); + //判断报工的数量是否为正整数 + Double remainderQty = approvedQty % 1.0; + if(remainderQty > 0){ + throw new RRException("总良品数量不允许输入小数!"); + } + //先循环验证参数是否符合规则 + 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 materialMap = this.checkCompleteMaterialRoll(site, orderNo, itemNo, seqNo, rollNo); + //判断是否可以 + String materialCode = String.valueOf(materialMap.get("resultCode")); + if (!"200".equalsIgnoreCase(materialCode)){ + String materialMsg = String.valueOf(materialMap.get("resultMsg")); + throw new RRException(materialMsg); + } + + //其次检查工具是否可以开始生产 + Map toolMap = this.checkCompleteToolId(site, orderNo, itemNo, seqNo, rollNo); + //判断是否可以 + String toolCode = String.valueOf(materialMap.get("resultCode")); + if (!"200".equalsIgnoreCase(toolCode)){ + String toolMsg = String.valueOf(toolMap.get("resultMsg")); + throw new RRException(toolMsg); + } + + //检查是否可以开始生产 + Map resultMap = this.checkFinishRoll(site, orderNo, itemNo, seqNo, rollNo, scheduleTime, resourceId, shiftNo); + //判断是否是异常 + String resultCode = String.valueOf(resultMap.get("resultCode")); + if ("400".equalsIgnoreCase(resultCode)){ + String resultMsg = String.valueOf(resultMap.get("resultMsg")); + throw new RRException(resultMsg); + } + return resultMap; + } + + /** + * TODO 结束卷校验 + * @author LR + * @date 2022/1/13 18:11 + * @return java.util.Map + **/ + public Map checkFinishRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String scheduleTime, String resourceId, String shiftNo) { + List params = new ArrayList<>(); + params.add(site); + params.add(orderNo); + params.add(itemNo); + params.add(seqNo); + params.add(rollNo); + params.add(scheduleTime); + params.add(resourceId); + params.add(shiftNo); + //执行存储过程 + List> resultList = procedureMapper.getProcedureData("checkFinishRoll", params); + //返回执行的结果 + return resultList.get(0); + } + + + @Override + @Transactional + public void finishRoll(Map inMap) { + //先验证是否可以结束卷的操作 + this.checkFinishRoll(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(); + Float approvedQty = pageData.getApprovedQty(); + Date scheduleDate = pageData.getScheduleDate(); + String scheduleTime = DateUtil.getStringDate(scheduleDate, "yyyy-MM-dd"); + //判断报工的数量是否为正整数 + Double remainderQty = approvedQty % 1.0; + if(remainderQty > 0){ + throw new RRException("总良品数量不允许输入小数!"); + } + } } \ 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 f616f0b..7897600 100644 --- a/src/main/resources/mapper/schedule/ScheduleMapper.xml +++ b/src/main/resources/mapper/schedule/ScheduleMapper.xml @@ -690,7 +690,7 @@ - SELECT MAX(finishtime) finishTime, SUM(ReportedSetupTime) reportedSetupTime, SUM(ReportedManfTime) reportedManfTime, SUM(Downtime) downTime, SUM(ReportedSetupDowntime) reportedSetupDowntime, SUM(ReportedManfDowntime) reportedManfDowntime FROM SFDC