|
|
@ -3069,5 +3069,119 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
return resultList.get(0); |
|
|
return resultList.get(0); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public Map<String, Object> checkFinishPartRollWithNoFqc(Map<String, Object> inMap) { |
|
|
|
|
|
String strPageData = String.valueOf(inMap.get("pageData")); |
|
|
|
|
|
SearchScheduleData pageData = JSON.parseObject(strPageData, SearchScheduleData.class); |
|
|
|
|
|
String strSfdcMaterialList = String.valueOf(inMap.get("materialList")); |
|
|
|
|
|
List<SfdcMaterialData> 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(); |
|
|
|
|
|
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("总良品数量不允许输入小数!"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//首先检查材料是否可以开始生产 |
|
|
|
|
|
Map<String, Object> 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<String, Object> 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); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//判断是否有主材上机 |
|
|
|
|
|
if (sfdcMaterialList.size() == 0) { |
|
|
|
|
|
throw new RRException("为扫描主材不可结束卷!"); |
|
|
|
|
|
} |
|
|
|
|
|
//1.调用存储过程 校验工单 派工单 上机卷 信息是否符合条件 |
|
|
|
|
|
Map<String, Object> 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); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//2.调用存储过程 校验是否可以下机卷 |
|
|
|
|
|
Map<String, Object> checkMap2 = this.checkFinishRollWithSfdcRoll(site, orderNo, itemNo, seqNo, rollNo); |
|
|
|
|
|
//判断是否检验成功 |
|
|
|
|
|
String code2 = String.valueOf(checkMap2.get("resultCode")); |
|
|
|
|
|
if ("400".equalsIgnoreCase(code2)) { |
|
|
|
|
|
String msg = String.valueOf(checkMap2.get("resultMsg")); |
|
|
|
|
|
throw new RRException(msg); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//3.调用存储过程 校验不同工序间数量大小 |
|
|
|
|
|
Map<String, Object> checkMap3 = this.checkFinishRollWithSoRoutingQty(site, orderNo, itemNo, editReportQty); |
|
|
|
|
|
//判断是否检验成功 |
|
|
|
|
|
String code3 = String.valueOf(checkMap3.get("resultCode")); |
|
|
|
|
|
if ("400".equalsIgnoreCase(code3)) { |
|
|
|
|
|
String msg = String.valueOf(checkMap3.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<String, Object> resultMap = this.checkFinishRollWithSfdcMaterialHist(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; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
@Transactional |
|
|
|
|
|
public void finishPartRollWithNoFqc(Map<String, Object> inMap) { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |