Browse Source

开始调机代码

master
rui_li 4 years ago
parent
commit
94f92ac9f2
  1. 45
      src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java
  2. 9
      src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java
  3. 28
      src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java
  4. 263
      src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java

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

@ -553,6 +553,20 @@ public class ScheduleController {
.put("rows", resultList);
}
/**
* TODO 检查是否可以上料
* @author LR
* @date 2021/12/22 11:57
* @param inData
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "checkFeedingMaterialRoll")
public R checkFeedingMaterialRoll(@RequestBody SearchScheduleData inData){
Map<String, Object> resultMap = scheduleService.checkFeedingMaterialRoll(inData);
return R.ok()
.put("resultMap", resultMap);
}
/**
* @Author LR
* @Description 保存材料上机的记录数据
@ -584,7 +598,36 @@ public class ScheduleController {
.put("success", true)
.put("msg", "操作成功!");
}
//
/**
* TODO 开始调机
* @author LR
* @date 2021/12/27 14:54
* @param inData
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "startTuning")
public R startTuning(@RequestBody SearchScheduleData inData){
scheduleService.startTuning(inData);
return R.ok()
.put("code", 200)
.put("success", true)
.put("msg", "操作成功!");
}
/**
* TODO 检验停机代码
* @author LR
* @date 2021/12/27 11:42
* @param inData
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "checkDownTimeCode")
public R checkDownTimeCode(@RequestBody SearchScheduleData inData){
Map<String, Object> resultMap = scheduleService.checkDownTimeCode(inData);
return R.ok()
.put("resultMap", resultMap);
}
//
//创建新卷的功能
//

9
src/main/java/com/gaotao/modules/schedule/data/SearchScheduleData.java

@ -60,6 +60,7 @@ public class SearchScheduleData extends BaseData {
private String rmPartNo;//材料料号
private Integer bomItemNo;//上机的行号
private Integer histSeqNo;//需要换料的行号
private String downTimeCode;//停机代码
public SearchScheduleData() {
}
@ -319,4 +320,12 @@ public class SearchScheduleData extends BaseData {
public void setHistSeqNo(Integer histSeqNo) {
this.histSeqNo = histSeqNo;
}
public String getDownTimeCode() {
return downTimeCode;
}
public void setDownTimeCode(String downTimeCode) {
this.downTimeCode = downTimeCode;
}
}

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

@ -302,6 +302,15 @@ public interface ScheduleService {
**/
List<Map<String, Object>> getBomItemNosByPartNo(SearchScheduleData inData);
/**
* TODO 检查是否可以上料
* @author LR
* @date 2021/12/22 13:09
* @param inData
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
Map<String, Object> checkFeedingMaterialRoll(SearchScheduleData inData);
/**
* @Author LR
* @Description 保存材料上机的记录数据
@ -319,4 +328,23 @@ public interface ScheduleService {
* @return void
**/
void connectMaterialRoll(SearchScheduleData inData);
/**
* TODO 添加注释
* @author LR
* @date 2021/12/27 14:54
* @param inData
* @return void
**/
void startTuning(SearchScheduleData inData);
/**
* TODO 检查停机代码
* @author LR
* @date 2021/12/27 11:42
* @param inData
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
Map<String, Object> checkDownTimeCode(SearchScheduleData inData);
}

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

@ -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("该派工单上不存在或者已经被关闭,不能进行相关的操作!");
}
//查询材料卷号的数据
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+",请重新扫描!");
//调用存储过程判断是否处于调剂或者停机--/换材料
String resultCode = this.checkProcessMaterialRoll(site, orderNo, itemNo, seqNo, rollNo, currentTime);
if ("N".equalsIgnoreCase(resultCode)){
throw new RRException("当前卷号不在调试过程中/不处于停机状态(停机原因是更换材料),不允许上/更换材料!");
}
//清空卷号 设置上机的材料料号
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中该行号之前扫描的卷不是同一个物料!");
//继续判断是否继续
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);
}
//判断该材料是否属于该订单的 通过物料来判断
List<Map<String, Object>> bomList = scheduleMapper.getBomItemNosByPartNo(inData);
if (bomList.size() == 0){
throw new RRException("该材料不是该订单的!");
//继续则执行换料的存储过程
}
@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);
}
//判断是否是换料
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("新上的卷与原来的卷不属于同一个物料!");
}
}
/**
* 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);
}

Loading…
Cancel
Save