|
|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.gaotao.modules.schedule.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.gaotao.common.exception.RRException; |
|
|
|
import com.gaotao.common.utils.DateUtil; |
|
|
|
import com.gaotao.common.utils.DateUtils; |
|
|
|
@ -1323,5 +1324,162 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
return resultList.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void startProduce(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 reportDate = inData.getReportDate(); |
|
|
|
String reportTime = inData.getReportTime(); |
|
|
|
String operateTime = reportDate+ " "+reportTime.substring(0, 5); |
|
|
|
//首先调用方法检测是否可以开始生产 |
|
|
|
this.checkStartProduce(inData); |
|
|
|
|
|
|
|
//如果可以开始生产在调用存储过程 |
|
|
|
this.startProduce(site, orderNo, itemNo, seqNo, rollNo, username, operateTime); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 调用存储过程执行开始生产 |
|
|
|
* @author LR |
|
|
|
* @date 2022/1/6 17:29 |
|
|
|
* @return void |
|
|
|
**/ |
|
|
|
public void startProduce(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String username, String operateTime) { |
|
|
|
List<Object> params = new ArrayList<>(); |
|
|
|
params.add(site); |
|
|
|
params.add(orderNo); |
|
|
|
params.add(itemNo); |
|
|
|
params.add(seqNo); |
|
|
|
params.add(rollNo); |
|
|
|
params.add(username); |
|
|
|
params.add(operateTime); |
|
|
|
//执行存储过程 |
|
|
|
procedureMapper.execProduceData("startProduce", params); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void endTuningAndStartProduce(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(); |
|
|
|
String reportDate = pageData.getReportDate(); |
|
|
|
String reportTime = pageData.getReportTime(); |
|
|
|
String currentTime = reportDate + " " + reportTime; |
|
|
|
//先循环验证参数是否符合规则 |
|
|
|
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<String, Object> tuningMap = this.checkEndTuning(site, orderNo, itemNo, seqNo, rollNo, currentTime); |
|
|
|
//判断是否继续 |
|
|
|
String tuningCode = String.valueOf(tuningMap.get("resultCode")); |
|
|
|
if(!"200".equalsIgnoreCase(tuningCode)){ |
|
|
|
String tuningMsg = String.valueOf(tuningMap.get("resultMsg")); |
|
|
|
throw new RRException(tuningMsg); |
|
|
|
} |
|
|
|
|
|
|
|
//验证是否可以开始生产 |
|
|
|
Map<String, Object> produceMap = this.checkStartProduce(site, orderNo, itemNo, seqNo, rollNo); |
|
|
|
//判断是否继续 |
|
|
|
String produceCode = String.valueOf(produceMap.get("resultCode")); |
|
|
|
if("400".equalsIgnoreCase(produceCode)){ |
|
|
|
String produceMsg = String.valueOf(produceMap.get("resultMsg")); |
|
|
|
throw new RRException(produceMsg); |
|
|
|
} |
|
|
|
|
|
|
|
//验证通过循环执行结束调机操作 |
|
|
|
for (int i = 0; i < sfdcMaterialList.size(); i++){ |
|
|
|
SfdcMaterialData sfdcMaterialData = sfdcMaterialList.get(0); |
|
|
|
String rmRollNo = sfdcMaterialData.getRmRollNo(); |
|
|
|
String rmPartNo = sfdcMaterialData.getPartNo(); |
|
|
|
int histSeqNo = sfdcMaterialData.getHistSeqNo(); |
|
|
|
String sapBomItemNo = sfdcMaterialData.getsAPBOMItemNo(); |
|
|
|
String startFromRollNo = sfdcMaterialData.getStartFromRollNo(); |
|
|
|
String keyRMFlag = sfdcMaterialData.getKeyRMFlag(); |
|
|
|
Float transQty = sfdcMaterialData.getTransQty(); |
|
|
|
Float netIssueQty = sfdcMaterialData.getNetIssueQty(); |
|
|
|
//调用存储过程结束当前材料卷的调机过程 |
|
|
|
this.endTuning(site, orderNo, itemNo, seqNo, rollNo, rmRollNo, rmPartNo, histSeqNo, transQty, netIssueQty, keyRMFlag, sapBomItemNo, startFromRollNo, username, currentTime); |
|
|
|
} |
|
|
|
|
|
|
|
//执行开始生产的存储过程 |
|
|
|
this.startProduce(site, orderNo, itemNo, seqNo, rollNo, username, currentTime); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 添加注释 |
|
|
|
* @author LR |
|
|
|
* @date 2022/1/13 11:15 |
|
|
|
* @return java.util.Map<java.lang.String, java.lang.Object> |
|
|
|
**/ |
|
|
|
public Map<String, Object> checkEndTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String currentTime) { |
|
|
|
List<Object> params = new ArrayList<>(); |
|
|
|
params.add(site); |
|
|
|
params.add(orderNo); |
|
|
|
params.add(itemNo); |
|
|
|
params.add(seqNo); |
|
|
|
params.add(rollNo); |
|
|
|
params.add(currentTime); |
|
|
|
//执行存储过程 |
|
|
|
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkEndTuning", params); |
|
|
|
//返回执行的结果 |
|
|
|
return resultList.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 执行结束调机的操作(针对单个材料的主材) |
|
|
|
* @author LR |
|
|
|
* @date 2022/1/13 11:33 |
|
|
|
* @return void |
|
|
|
**/ |
|
|
|
public void endTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String rmRollNo, String rmPartNo, int histSeqNo, Float transQty, Float netIssueQty, |
|
|
|
String keyRMFlag, String sapBomItemNo, String startFromRollNo, String username, String currentTime) { |
|
|
|
List<Object> params = new ArrayList<>(); |
|
|
|
params.add(site); |
|
|
|
params.add(orderNo); |
|
|
|
params.add(itemNo); |
|
|
|
params.add(seqNo); |
|
|
|
params.add(rollNo); |
|
|
|
params.add(rmRollNo); |
|
|
|
params.add(rmPartNo); |
|
|
|
params.add(histSeqNo); |
|
|
|
params.add(transQty); |
|
|
|
params.add(netIssueQty); |
|
|
|
params.add(keyRMFlag); |
|
|
|
params.add(sapBomItemNo); |
|
|
|
params.add(startFromRollNo); |
|
|
|
params.add(username); |
|
|
|
params.add(currentTime); |
|
|
|
//执行存储过程 |
|
|
|
procedureMapper.execProduceData("endTuning", params); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |