|
|
|
@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import javax.xml.transform.Result; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
@ -755,27 +756,73 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void feedingMaterialRoll(SearchScheduleData inData) { |
|
|
|
public Map<String, Object> checkFeedingMaterialRoll(SearchScheduleData inData) { |
|
|
|
Map<String, Object> resultMap = new HashMap<>(); |
|
|
|
//公共参数 |
|
|
|
String site = inData.getSite(); |
|
|
|
String orderNo = inData.getOrderNo(); |
|
|
|
Integer itemNo = inData.getItemNo(); |
|
|
|
String seqNo = inData.getSeqNo(); |
|
|
|
String rollNo = inData.getRollNo(); |
|
|
|
String currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
//判断上机的物料是否相同 验证BOM是否发生变化 |
|
|
|
String rmRollNo = inData.getRmRollNo(); |
|
|
|
Integer bomItemNo = inData.getBomItemNo(); |
|
|
|
Integer histSeqNo = inData.getHistSeqNo(); |
|
|
|
String currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
if (histSeqNo > 0){ |
|
|
|
throw new RRException("请选择换料功能!"); |
|
|
|
resultMap.put("code", 400); |
|
|
|
resultMap.put("msg", "请选择换料功能!"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
//调用存储过程判断是否处于调剂或者停机--上/换材料 |
|
|
|
String resultCode = this.checkProcessMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, currentTime); |
|
|
|
if ("N".equalsIgnoreCase(resultCode)){ |
|
|
|
throw new RRException("当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!"); |
|
|
|
resultMap.put("code", 400); |
|
|
|
resultMap.put("msg", "当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!"); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
//继续判断是否继续 |
|
|
|
Map<String, Object> checkMap = this.checkFeedingMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, rmRollNo, bomItemNo); |
|
|
|
String code = String.valueOf(checkMap.get("resultCode")); |
|
|
|
String msg = String.valueOf(checkMap.get("resultMsg")); |
|
|
|
resultMap.put("code", code); |
|
|
|
resultMap.put("msg", msg); |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
//调用存储过程判断是否可以上料功能 |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 调用检查的是否可以上料的存储过程 |
|
|
|
* @author LR |
|
|
|
* @date 2021/12/22 13:49 |
|
|
|
* @return java.util.Map<java.lang.String, java.lang.Object> |
|
|
|
**/ |
|
|
|
public Map<String, Object> checkFeedingMaterialRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String rmRollNo, Integer bomItemNo) { |
|
|
|
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(bomItemNo); |
|
|
|
//执行存储过程 |
|
|
|
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkFeedingMaterialRoll", params); |
|
|
|
//返回执行的结果 |
|
|
|
return resultList.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void feedingMaterialRoll(SearchScheduleData inData) { |
|
|
|
//先调用检查方法是否通过 |
|
|
|
Map<String, Object> checkMap = this.checkFeedingMaterialRoll(inData); |
|
|
|
//判断检查是否通过 |
|
|
|
String code = String.valueOf(checkMap.get("code")); |
|
|
|
if ("400".equalsIgnoreCase(code)){ |
|
|
|
String msg = String.valueOf(checkMap.get("msg")); |
|
|
|
throw new RRException(msg); |
|
|
|
} |
|
|
|
//调用存储过程执行上料方法 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -799,75 +846,163 @@ public class ScheduleServiceImpl implements ScheduleService { |
|
|
|
//获取返回的结果 |
|
|
|
Map<String, Object> resultMap = resultList.get(0); |
|
|
|
//处理返回的结果 |
|
|
|
String resultCode = String.valueOf(resultMap.get("resultCode")); |
|
|
|
return resultCode; |
|
|
|
return String.valueOf(resultMap.get("resultCode")); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void connectMaterialRoll(SearchScheduleData inData) { |
|
|
|
//判断上机的物料是否相同 验证BOM是否发生变化 |
|
|
|
//公共参数 |
|
|
|
String site = inData.getSite(); |
|
|
|
String orderNo = inData.getOrderNo(); |
|
|
|
Integer itemNo = inData.getItemNo(); |
|
|
|
String seqNo = inData.getSeqNo(); |
|
|
|
String rollNo = inData.getRollNo(); |
|
|
|
String rmRollNo = inData.getRmRollNo(); |
|
|
|
Integer bomItemNo = inData.getBomItemNo(); |
|
|
|
Integer histSeqNo = inData.getHistSeqNo(); |
|
|
|
String currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
if (histSeqNo == 0){ |
|
|
|
throw new RRException("请选择上料功能!"); |
|
|
|
} |
|
|
|
//判断派工单是否关闭 |
|
|
|
Integer countNums = scheduleMapper.checkScheduleStatus(inData); |
|
|
|
if (null == countNums || countNums == 0){ |
|
|
|
throw new RRException("该派工单上不存在或者已经被关闭,不能进行相关的操作!"); |
|
|
|
//调用存储过程判断是否处于调剂或者停机--上/换材料 |
|
|
|
String resultCode = this.checkProcessMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, currentTime); |
|
|
|
if ("N".equalsIgnoreCase(resultCode)){ |
|
|
|
throw new RRException("当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!"); |
|
|
|
} |
|
|
|
//查询材料卷号的数据 |
|
|
|
CRollInfoOutData cRollInfo = scheduleMapper.getCRollInfoByRollNo(inData); |
|
|
|
//空值判断 |
|
|
|
if (null == cRollInfo){ |
|
|
|
throw new RRException("该材料卷号不存在,请重新扫描!"); |
|
|
|
} |
|
|
|
//判断是否被冻结 |
|
|
|
String frozenFlag = cRollInfo.getFrozenFlag(); |
|
|
|
if (frozenFlag.equalsIgnoreCase("Y")){ |
|
|
|
throw new RRException("该材料卷号已经被冻结,请重新扫描!"); |
|
|
|
} |
|
|
|
//判断是在库 |
|
|
|
String statusDb = cRollInfo.getStatusDb(); |
|
|
|
if (statusDb.equalsIgnoreCase("N")){ |
|
|
|
throw new RRException("该材料卷号尚未入库,请重新扫描!"); |
|
|
|
} |
|
|
|
if (statusDb.equalsIgnoreCase("I")){ |
|
|
|
throw new RRException("该材料卷号已入库但是尚未移到车间仓库,请重新扫描!"); |
|
|
|
} |
|
|
|
if (statusDb.equalsIgnoreCase("P") || statusDb.equalsIgnoreCase("D")){ |
|
|
|
//查询当前卷的上级记录 |
|
|
|
List<Map<String, Object>> materialHists = scheduleMapper.getSfdcMaterialHistByRollNo(inData); |
|
|
|
String orderInfo = String.valueOf(materialHists.get(0).get("orderInfo")); |
|
|
|
throw new RRException("该材料卷号已经在其他的订单上使用或者消耗完,订单号/工序号/派工单单号:"+orderInfo+",请重新扫描!"); |
|
|
|
} |
|
|
|
//清空卷号 设置上机的材料料号 |
|
|
|
inData.setRollNo(""); |
|
|
|
String rmPartNo = cRollInfo.getPartNo(); |
|
|
|
inData.setRmPartNo(rmPartNo); |
|
|
|
|
|
|
|
//暂时去掉序号 |
|
|
|
inData.setHistSeqNo(0); |
|
|
|
List<SfdcMaterialData> sfdcMaterialDataList = scheduleMapper.getSfdcMaterialByCon(inData); |
|
|
|
String tempRmPartNo = sfdcMaterialDataList.get(0).getPartNo(); |
|
|
|
if (!tempRmPartNo.equalsIgnoreCase(rmPartNo)){ |
|
|
|
throw new RRException("新上的卷与BOM中该行号之前扫描的卷不是同一个物料!"); |
|
|
|
} |
|
|
|
//判断该材料是否属于该订单的 通过物料来判断 |
|
|
|
List<Map<String, Object>> bomList = scheduleMapper.getBomItemNosByPartNo(inData); |
|
|
|
if (bomList.size() == 0){ |
|
|
|
throw new RRException("该材料不是该订单的!"); |
|
|
|
} |
|
|
|
//判断是否是换料 |
|
|
|
if (histSeqNo > 0){ |
|
|
|
inData.setHistSeqNo(histSeqNo); |
|
|
|
inData.setBomItemNo(-1); |
|
|
|
sfdcMaterialDataList = scheduleMapper.getSfdcMaterialByCon(inData); |
|
|
|
tempRmPartNo = sfdcMaterialDataList.get(0).getPartNo(); |
|
|
|
if (!tempRmPartNo.equalsIgnoreCase(rmPartNo)){ |
|
|
|
throw new RRException("新上的卷与原来的卷不属于同一个物料!"); |
|
|
|
//继续判断是否继续 |
|
|
|
Map<String, Object> checkMap = this.checkConnectMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, rmRollNo, bomItemNo, histSeqNo); |
|
|
|
String code = String.valueOf(checkMap.get("resultCode")); |
|
|
|
//判断是否可以接料 |
|
|
|
if("400".equalsIgnoreCase(code)){ |
|
|
|
String msg = String.valueOf(checkMap.get("resultMsg")); |
|
|
|
throw new RRException(msg); |
|
|
|
} |
|
|
|
//继续则执行换料的存储过程 |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional |
|
|
|
public void startTuning(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 currentTime = DateUtil.getStringDate(new Date(), "yyyy-MM-dd HH:mm:ss"); |
|
|
|
|
|
|
|
//首先校验是否可以开始调机 |
|
|
|
this.checkStartTuning(site, orderNo, itemNo, seqNo, rollNo); |
|
|
|
|
|
|
|
//执行存储过程开始调机 |
|
|
|
this.startTuning(site, orderNo, itemNo, seqNo, rollNo, username, currentTime); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 校验是否可以开始调机 |
|
|
|
* @author LR |
|
|
|
* @date 2021/12/27 15:15 |
|
|
|
* @return void |
|
|
|
**/ |
|
|
|
public void checkStartTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo) { |
|
|
|
List<Object> params = new ArrayList<>(); |
|
|
|
params.add(site); |
|
|
|
params.add(orderNo); |
|
|
|
params.add(itemNo); |
|
|
|
params.add(seqNo); |
|
|
|
params.add(rollNo); |
|
|
|
//执行存储过程 |
|
|
|
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkStartTuning", params); |
|
|
|
//处理检查结果 |
|
|
|
Map<String, Object> resultMap = resultList.get(0); |
|
|
|
String code = String.valueOf(resultMap.get("resultCode")); |
|
|
|
//判断是否存在异常 |
|
|
|
if (!"200".equalsIgnoreCase(code)){ |
|
|
|
String msg = String.valueOf(resultMap.get("resultMsg")); |
|
|
|
throw new RRException(msg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 开始调机的操作 |
|
|
|
* @author LR |
|
|
|
* @date 2021/12/27 15:21 |
|
|
|
* @return void |
|
|
|
**/ |
|
|
|
public void startTuning(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, 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(username); |
|
|
|
params.add(currentTime); |
|
|
|
//执行存储过程 |
|
|
|
procedureMapper.execProduceData("startTuning", params); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 调用存储过程判断是否可以接换料功能 |
|
|
|
* @author LR |
|
|
|
* @date 2021/12/22 15:39 |
|
|
|
* @return java.util.Map<java.lang.String, java.lang.Object> |
|
|
|
**/ |
|
|
|
public Map<String, Object> checkConnectMaterialRoll(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String rmRollNo, Integer bomItemNo, Integer histSeqNo) { |
|
|
|
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(bomItemNo); |
|
|
|
params.add(histSeqNo); |
|
|
|
//执行存储过程 |
|
|
|
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkConnectMaterialRoll", params); |
|
|
|
//返回执行的结果 |
|
|
|
return resultList.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Map<String, Object> checkDownTimeCode(SearchScheduleData inData) { |
|
|
|
//公共参数 |
|
|
|
String site = inData.getSite(); |
|
|
|
String orderNo = inData.getOrderNo(); |
|
|
|
Integer itemNo = inData.getItemNo(); |
|
|
|
String seqNo = inData.getSeqNo(); |
|
|
|
String rollNo = inData.getRollNo(); |
|
|
|
String downTimeCode = inData.getDownTimeCode(); |
|
|
|
Map<String, Object> resultMap = this.checkDownTimeCode(site, orderNo, itemNo, seqNo, rollNo, downTimeCode); |
|
|
|
//判断是否检验成功 |
|
|
|
String code = String.valueOf(resultMap.get("resultCode")); |
|
|
|
if (!"200".equalsIgnoreCase(code)){ |
|
|
|
String msg = String.valueOf(resultMap.get("resultMsg")); |
|
|
|
throw new RRException(msg); |
|
|
|
} |
|
|
|
return resultMap; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* TODO 调用存储过程返回停机代码的结果 |
|
|
|
* @author LR |
|
|
|
* @date 2021/12/27 11:55 |
|
|
|
* @return java.util.Map<java.lang.String, java.lang.Object> |
|
|
|
**/ |
|
|
|
public Map<String, Object> checkDownTimeCode(String site, String orderNo, Integer itemNo, String seqNo, String rollNo, String downTimeCode) { |
|
|
|
List<Object> params = new ArrayList<>(); |
|
|
|
params.add(site); |
|
|
|
params.add(orderNo); |
|
|
|
params.add(itemNo); |
|
|
|
params.add(seqNo); |
|
|
|
params.add(rollNo); |
|
|
|
params.add(downTimeCode); |
|
|
|
List<Map<String, Object>> resultList = procedureMapper.getProcedureData("checkDownTimeCode", params); |
|
|
|
return resultList.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|