|
|
|
@ -1954,7 +1954,7 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
|
|
|
|
//2.调用存储过程 校验是否可以下机卷 todo sxm 2022-3-15 添加参数 CreateNewRollFlag |
|
|
|
Map<String, Object> 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<String, Object> checkRepackFinishRollWithNoFqc(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.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<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); |
|
|
|
} |
|
|
|
//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.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<java.lang.String, java.lang.Object> |
|
|
|
* @Author LR |
|
|
|
* @Description 存储过程校验 单个材料的校验数据 |
|
|
|
* @DateTime 2022/1/25 15:05 |
|
|
|
* @Param [site, orderNo, itemNo, rollNo, seqNo, editTotalReportQty, otherRollQty, editNewRollQty, netIssueQty, histSeqNo] |
|
|
|
**/ |
|
|
|
public Map<String, Object> checkRepackFinishRollWithSfdcMaterialHist (String site, String orderNo, Integer itemNo, String rollNo, String seqNo, Float editTotalReportQty, Float otherRollQty, |
|
|
|
Float editNewRollQty, Float netIssueQty, Integer histSeqNo, String username) { |
|
|
|
List<Object> 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<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkFinishRollWithSfdcMaterialHist", params); |
|
|
|
//返回执行的结果 |
|
|
|
return resultList.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void repackFinishRollWithNoFqc(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.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<String, Object> 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<Object> 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); |
|
|
|
} |
|
|
|
} |