tags/yfai-pcn-ext-v1.0
王杰 11 months ago
parent 594edc20ae
commit a249d62688

@ -10,4 +10,7 @@ public interface IMesWorkOrderExtService {
@ApiOperation(value = "根据生产工单号集合 查询生产工单数据")
List<MesWorkOrder> getWorkOrderList(String organizeCode, List<String> workOrderNoList);
@ApiOperation(value = "根据生产工单ID查询生产工单信息")
MesWorkOrder getWorkOrder(String organizeCode, Long id);
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository;
@ -38,4 +39,13 @@ public class MesWorkOrderExtService implements IMesWorkOrderExtService {
}
//根据生产工单ID查询生产工单信息
@Override
public MesWorkOrder getWorkOrder(String organizeCode, Long id) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(id)) return null;
return workOrderRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ID},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), id});
}
}

@ -103,8 +103,10 @@ public class MesAssemblyScanStepService extends BaseStepService {
if (!CollectionUtils.isEmpty(cachedEquipVariableCollectContextList) && cachedEquipVariableCollectContextList.size() > needQty)
execSendGuideAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("当前上下文中的装配件条码数量[%s]已经超过设备腔数[%s]每腔个数[%s]配置,请重新扫描装配件条码!", cachedEquipVariableCollectContextList.size(), cellEquipContext.getCavity(), cellEquipContext.getBindQty()));
if (!CollectionUtils.isEmpty(cachedEquipVariableCollectContextList) && cachedEquipVariableCollectContextList.size() == needQty) equipVariableCollectContextList = cachedEquipVariableCollectContextList;
else equipVariableCollectContextList.addAll(cachedEquipVariableCollectContextList);
if (!CollectionUtils.isEmpty(cachedEquipVariableCollectContextList)) {
if (cachedEquipVariableCollectContextList.size() == needQty) equipVariableCollectContextList = cachedEquipVariableCollectContextList;
else equipVariableCollectContextList.addAll(cachedEquipVariableCollectContextList);
}
}

@ -189,6 +189,9 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
if (CollectionUtils.isEmpty(filterList) || filterList.size() > 1) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format(
"请检查非排序产品加工规则信息,根据设备[%s]进料零件条码[%s]查询到[%s]条加工规则配置信息,无法显示出装配件清单!", cellEquipContext.getEquipmentCode(), productionPsInContext.getProductSn(), CollectionUtils.isEmpty(filterList) ? MesPcnExtConstWords.ZERO : filterList.size()));
//TODO 验证时效性
//if (!StringUtils.isEmpty(productionPsInContext.getPartNo()) && !时效性接口(productionPsInContext.produceSn, filterList.get(0).getId))
//【非排序线】获取产品加工规则对应的装配件信息
prodRuleContextList.add(prodRuleCfgExtService.getProdRuleNosortContext(new MesProdRuleContext(
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode())

@ -160,11 +160,10 @@ public class MesProductSnGenerateStepService extends BaseStepService {
produceSn.setCustSn(produceSn.getProductSn());
produceSn.setQty(new Double(1));
if (null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) {
produceSn.setWorkOrderNo(productionPartContext.getWorkOrderNo());
produceSn.setCustCode(productionPartContext.getCustCode());
produceSn.setCustPartNo(productionPartContext.getCustPartNo());
}
//未知状态的需要重置工单相关字段
produceSn.setWorkOrderNo((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getWorkOrderNo() : null);
produceSn.setCustCode((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getCustCode() : null);
produceSn.setCustPartNo((null != productionPartContext && !StringUtils.isEmpty(productionPartContext.getWorkOrderNo())) ? productionPartContext.getCustPartNo() : null);
produceSn.setAreaCode(reqBean.getAreaCode());
produceSn.setWorkCenterCode(reqBean.getWorkCenterCode());

@ -9,8 +9,6 @@ import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;
/**
* @Description :
* @Author : wangjie
@ -32,35 +30,20 @@ public class MesProductionDataSaveStepService extends BaseStepService {
//保存零件条码信息工步
((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).execute(reqBean);
try {
TimeUnit.MILLISECONDS.sleep(5000L);
} catch (InterruptedException e) {
}
//加工异常处理工步【此工步未整改】
//((IStepService) SpringContextsUtil.getBean("mesProductResultErrorHandleStepService")).execute(reqBean);
//生成加工记录工步
((IStepService) SpringContextsUtil.getBean("mesProductionRecordGenerateStepService")).execute(reqBean);
try {
TimeUnit.MILLISECONDS.sleep(5000L);
} catch (InterruptedException e) {
}
//保存装配记录工步
((IStepService) SpringContextsUtil.getBean("mesAssemblySaveStepService")).execute(reqBean);
try {
TimeUnit.MILLISECONDS.sleep(5000L);
} catch (InterruptedException e) {
}
//生产汇报工步 【此工步未整改】
//((IStepService) SpringContextsUtil.getBean("mesReportGenerateStepService")).execute(reqBean);
//保存工单信息工步
//((IStepService) SpringContextsUtil.getBean("")).execute(reqBean);
// 保存工单信息工步
// ((IStepService) SpringContextsUtil.getBean("mesWorkOrderSaveStepService")).execute(reqBean);
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存加工结果成功!");

@ -127,16 +127,16 @@ public class MesWorkOrderCheckStepService extends BaseStepService {
List<MesWorkOrder> workOrderDbList = CollectionUtils.isEmpty(workOrderMap) ? null : workOrderMap.get(workOrderNo);
if (CollectionUtils.isEmpty(workOrderDbList))
return stepResult.isCompleted(false).msg(String.format("加工单号[%s]无效!", workOrderNo));
return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单号[%s]无效!", workOrderNo));
if (workOrderDbList.size() != 1)
return stepResult.isCompleted(false).msg(String.format("请检查生产工单信息,加工单号[%s]存在重复!", workOrderNo));
if (!MesExtEnumUtil.ORDER_STATUS.checkAllowStatus(workCenter.getCenterType(), workOrderDbList.get(0).getWorkOrderStatus()))
return stepResult.isCompleted(false).msg(String.format("加工单[%s]信息工单状态[%s]!", workOrderNo, MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrderDbList.get(0).getWorkOrderStatus())));
return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", workOrderNo, MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrderDbList.get(0).getWorkOrderStatus())));
if (!workOrderDbList.get(0).getWorkCenterCode().equals(reqBean.getWorkCenterCode()))
return stepResult.isCompleted(false).msg(String.format("加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", workOrderNo, workOrderDbList.get(0).getWorkCenterCode(), reqBean.getWorkCenterCode()));
return stepResult.isCompleted(false).msg(String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", workOrderNo, workOrderDbList.get(0).getWorkCenterCode(), reqBean.getWorkCenterCode()));
}
}

@ -1,71 +1,146 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : Castle
* @CreateDate : 2024/6/11 18:50
* @Modify:
**/
@Slf4j
@Service("mesWorkOrderSaveStepService")
public class MesWorkOrderSaveStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//1. 获取上下文中的MesProductionPartContext 产出零件
List<MesProductionPartContext> productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean);
if (productionPartContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
// 判断为空腔 isFinishedCode = true 就是空腔
// stream 过滤 isFinishedCode = false 并且 foreignKey != null 并且 加工单code 为不为空;
List<MesProductionPartContext> filteredPartContext = productionPartContext.stream().filter(item -> item.getIsFinishCode() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() && item.getForeignKey() != null && item.getWorkOrderNo() != null).collect(Collectors.toList());
if (filteredPartContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "过滤后,没有可保存的加工单信息");
}
// 怎么判断条码生成过了? 看产出零件和入料in 要判端relateId有值也需要新增, out生成条码 上下文
// 如果没有in 需要加,
// 如果有out条码,则判断id是否为空不为空则是新生成的
//2. 判断是否为空,id是否为空如果没有则返回,id为工单id
List<MesProductionPartContext> collectContext = productionPartContext.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
//3. 如果id不为空查询工单信息
if (collectContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
//4. 判断当前产出的零件MesProductionPsOutContext中是否有id如果有就是新生成的
List<MesProductionPsOutContext> productionPsOutContext = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
//过滤出新生成的条码没有条码id就是新生成的
List<MesProductionPsOutContext> produceSnList = productionPsOutContext.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
if (produceSnList.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
// productionPsOutContext.stream().collect(Collectors.groupingBy(MesProductionPsOutContext::getId))
//5. 修改完成数量,完成数量大于计划数量,就需要修改工单的状态为完成
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存加工单信息成功");
}
}
//package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
//
//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
//import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
//import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
//import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
//import cn.estsh.i3plus.platform.common.tool.MathOperation;
//import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
//import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
//import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
//import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
//import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
//import cn.estsh.i3plus.pojo.mes.model.StepResult;
//import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.util.CollectionUtils;
//import org.springframework.util.StringUtils;
//
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @Description : 保存加工单信息工步
// * @Reference :
// * @Author : wangjie
// * @CreateDate : 2024/6/11 18:50
// * @Modify:
// **/
//@Slf4j
//@Service("mesWorkOrderSaveStepService")
//public class MesWorkOrderSaveStepService extends BaseStepService {
//
// @Autowired
// private IMesProductionProcessContextStepService productionProcessContextStepService;
//
// @Autowired
// private IMesProductionDispatchContextStepService productionDispatchContextStepService;
//
// @Autowired
// private IMesWorkOrderExtService workOrderExtService;
//
// @Override
// public StepResult execute(StationRequestBean reqBean) {
//
// StationResultBean resultBean = new StationResultBean();
//
// StepResult stepResult = StepResult.getSuccessComplete();
//
// //获取上下文信息
// MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getCurCellEquipment(reqBean);
//
// //配置错误 抛出异常
// if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
//
// //存储生产过程上下文对象
// productionProcessContextStepService.saveProductionProcessContext(reqBean, productionProcessContext);
//
// //获取上下文产品加工规则数据信息集合
// List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
//
// if (CollectionUtils.isEmpty(prodRuleContextList)) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "上下文中不存在加工规则信息,请重置工序解决!");
//
// //获取上下文产出零件数据信息集合
// List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
//
// //没有产出零件或者没有工单
// if (CollectionUtils.isEmpty(productionPartContextList) || StringUtils.isEmpty(
// productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).findFirst().get().getWorkOrderNo())) return stepResult;
//
// //获取上下文产出零件数据信息集合
// List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
//
// //从上下文中取出生产线对象
// MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
//
// //保存生产工单数据
// doHandleWorkOrderData(reqBean, resultBean, productionPartContextList, prodRuleContextList, productionPsOutContextList, workCenter);
//
// }
//
// //保存生产工单数据
// private void doHandleWorkOrderData(StationRequestBean reqBean, StationResultBean resultBean, List<MesProductionPartContext> productionPartContextList, List<MesProdRuleContext> prodRuleContextList, List<MesProductionPsOutContext> productionPsOutContextList, MesWorkCenter workCenter) {
//
// //根据生产工单分组
// Map<String, List<MesProductionPartContext>> ppMap = productionPartContextList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProductionPartContext::getWorkOrderNo));
//
// //根据生产工单分组
// Map<String, List<MesProductionPsOutContext>> proMap = productionPsOutContextList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesProductionPsOutContext::getWorkOrderNo));
//
// Map<Integer, MesProdRuleContext> prMap = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProdRuleContext::getForeignKey, o -> o));
//
// for(Map.Entry<String, List<MesProductionPartContext>> entry : ppMap.entrySet()) {
//
// if (null == entry) continue;
//
// List<MesProductionPsOutContext> produceSnContextList = proMap.get(entry.getKey());
//
// Integer calcCompleteQty = 0;
// Integer reportQty = 0;
//
// for (MesProductionPsOutContext productionPsOutContext : produceSnContextList) {
//
// if (null == productionPsOutContext) continue;
//
// if (productionPsOutContext.getIsCalcCompleteQty() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) calcCompleteQty += 1;
// if (prMap.get(productionPsOutContext.getForeignKey()).getReportType().compareTo(MesExtEnumUtil.NOSORT_REPORT_TYPE.NO_REPORT.getValue()) != 0) reportQty += 1;
//
// }
//
// if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) == 0 && reportQty.compareTo(MesPcnExtConstWords.ZERO) == 0) continue;
//
// MesWorkOrder workOrder = workOrderExtService.getWorkOrder(reqBean.getOrganizeCode(), entry.getValue().get(0).getId());
// if (null == workOrder) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息不存在!", entry.getKey()));
//
// if (!MesExtEnumUtil.ORDER_STATUS.checkAllowStatus(workCenter.getCenterType(), workOrder.getWorkOrderStatus()))
// execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", entry.getKey(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
//
// if (!workOrder.getWorkCenterCode().equals(reqBean.getWorkCenterCode()))
// execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", entry.getKey(), workOrder.getWorkCenterCode(), reqBean.getWorkCenterCode()));
//
// if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0 && (StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) || workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) && workOrder.getCompleteQty().compareTo(workOrder.getQty()) >= 0)
// execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息及生产线信息,生产线[%s]不允许超工单生产,且加工单[%s]信息已完成数量[%s]累加当前完成数量[%s]将超过计划数量[%s]!", entry.getKey(), reqBean.getWorkCenterCode(), workOrder.getCompleteQty(), calcCompleteQty, workOrder.getQty()));
//
// if (reportQty.compareTo(MesPcnExtConstWords.ZERO) > 0 && (!StringUtils.isEmpty(workCenter.getIsCheckOrderQty()) && workCenter.getIsCheckOrderQty().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) &&
// workOrder.getReportedQty().compareTo(MathOperation.mul(workOrder.getQty(), MathOperation.div(MathOperation.add(workCenter.getOrderRate(), new Double(100)), new Double(100)))) >= 0)
// execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息及生产线信息,生产线[%s]允许超工单生产,且加工单[%s]信息已汇报数量[%s]已满足计划数量[%s]超出比例[%s]!",
// reqBean.getWorkCenterCode(), entry.getKey(), workOrder.getReportedQty(), workOrder.getQty(), workCenter.getOrderRate() + MesPcnExtConstWords.PERCENT));
//
// workOrder.setCompleteQty(MathOperation.add());
//
// }
//
//
//
//
// }
//
//}

@ -0,0 +1,71 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : Castle
* @CreateDate : 2024/6/11 18:50
* @Modify:
**/
@Slf4j
@Service("mesWorkOrderSaveStepServiceBak")
public class MesWorkOrderSaveStepServiceBak extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Override
public StepResult execute(StationRequestBean reqBean) {
StationResultBean resultBean = new StationResultBean();
StepResult stepResult = StepResult.getSuccessComplete();
//1. 获取上下文中的MesProductionPartContext 产出零件
List<MesProductionPartContext> productionPartContext = productionDispatchContextStepService.getProductionPartContext(reqBean);
if (productionPartContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
// 判断为空腔 isFinishedCode = true 就是空腔
// stream 过滤 isFinishedCode = false 并且 foreignKey != null 并且 加工单code 为不为空;
List<MesProductionPartContext> filteredPartContext = productionPartContext.stream().filter(item -> item.getIsFinishCode() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() && item.getForeignKey() != null && item.getWorkOrderNo() != null).collect(Collectors.toList());
if (filteredPartContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "过滤后,没有可保存的加工单信息");
}
// 怎么判断条码生成过了? 看产出零件和入料in 要判端relateId有值也需要新增, out生成条码 上下文
// 如果没有in 需要加,
// 如果有out条码,则判断id是否为空不为空则是新生成的
//2. 判断是否为空,id是否为空如果没有则返回,id为工单id
List<MesProductionPartContext> collectContext = productionPartContext.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
//3. 如果id不为空查询工单信息
if (collectContext.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
//4. 判断当前产出的零件MesProductionPsOutContext中是否有id如果有就是新生成的
List<MesProductionPsOutContext> productionPsOutContext = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
//过滤出新生成的条码没有条码id就是新生成的
List<MesProductionPsOutContext> produceSnList = productionPsOutContext.stream().filter(item -> item.getId() != null).collect(Collectors.toList());
if (produceSnList.isEmpty()){
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "没有可保存的加工单信息");
}
// productionPsOutContext.stream().collect(Collectors.groupingBy(MesProductionPsOutContext::getId))
//5. 修改完成数量,完成数量大于计划数量,就需要修改工单的状态为完成
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "保存加工单信息成功");
}
}

@ -88,9 +88,6 @@ public class MesProdRuleContext implements Serializable {
@ApiParam(name = "汇报方式")
private Integer reportType;
@ApiParam(name = "是否验证加工单数量")
private Integer isCheckOrderQty;
@ApiParam(name = "是否包装")
private Integer isPackage;

@ -214,6 +214,8 @@ public class MesPcnExtConstWords {
public static final String COMMA = ",";
// :
public static final String COLON = ":";
// %
public static final String PERCENT = "%";
//过程条码默认生成规则
public static final String DEFAULT_SERIAL_NUMBER_RULE = "DEFAULT_SERIAL_NUMBER_RULE";

Loading…
Cancel
Save