Browse Source

开始生产存储过程和业务逻辑

master
rui_li 4 years ago
parent
commit
0db3517c18
  1. 31
      src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java
  2. 20
      src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java
  3. 160
      src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java

31
src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java

@ -720,6 +720,37 @@ public class ScheduleController {
.put("resultMap", resultMap);
}
/**
* TODO 开始生产的业务
* @author LR
* @date 2022/1/6 17:24
* @param inData
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "startProduce")
public R startProduce(@RequestBody SearchScheduleData inData){
scheduleService.startProduce(inData);
return R.ok()
.put("code", 200)
.put("success", true)
.put("msg", "操作成功!");
}
/**
* TODO 结束调机和开始生产
* @author LR
* @date 2022/1/12 14:01
* @param inMap
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "endTuningAndStartProduce")
public R endTuningAndStartProduce(@RequestBody Map<String, Object> inMap){
scheduleService.endTuningAndStartProduce(inMap);
return R.ok()
.put("code", 200)
.put("success", true)
.put("msg", "操作成功!");
}

20
src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java

@ -400,4 +400,22 @@ public interface ScheduleService {
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
Map<String, Object> checkStartProduce(SearchScheduleData inData);
}
/**
* TODO 开始生产的业务
* @author LR
* @date 2022/1/6 17:24
* @param inData
* @return void
**/
void startProduce(SearchScheduleData inData);
/**
* TODO 结束调机和开始生产
* @author LR
* @date 2022/1/12 14:02
* @param inMap
* @return void
**/
void endTuningAndStartProduce(Map<String, Object> inMap);
}

160
src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java

@ -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);
}
}
}
Loading…
Cancel
Save