forked from I3-YF/i3plus-mes-pcn-yfai
裁片功能-》弹框展示成品列表Function
parent
023203efaf
commit
f105f37d7f
@ -0,0 +1,19 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.api.base;
|
||||
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
|
||||
/**
|
||||
* @Description : 客户物料信息
|
||||
* @Reference :
|
||||
* @Author : xinwang.yi
|
||||
* @CreateDate 2024/9/12 15:18
|
||||
* @Modify:
|
||||
**/
|
||||
public interface IMesCustomerPartService {
|
||||
|
||||
@ApiOperation(value = "根据物料代码、客户代码查询物料信息")
|
||||
MesCustomerPart getMesCustomerPartByPartNo(String erpPartNo, String custCode, String organizeCode);
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.api.base;
|
||||
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
|
||||
/**
|
||||
* @Description : 包装定义信息
|
||||
* @Reference :
|
||||
* @Author : junsheng.li
|
||||
* @CreateDate 2024/6/13 15:18
|
||||
* @Modify:
|
||||
**/
|
||||
public interface IMesPackingDefineService {
|
||||
|
||||
@ApiOperation(value = "查询包装定义信息")
|
||||
MesPackingDefine getMesPackingDefine(String packCode, String organizeCode);
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesCustomerPartRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* @PROJECT_NAME: i3plus-mes-yfai
|
||||
* @DESCRIPTION:
|
||||
* @USER: xinwang.yi
|
||||
* @DATE: 2024-09-12 20:41
|
||||
*/
|
||||
@Service
|
||||
public class MesCustomerPartService implements IMesCustomerPartService {
|
||||
|
||||
@Autowired
|
||||
private MesCustomerPartRepository customerPartRepository;
|
||||
|
||||
@Override
|
||||
public MesCustomerPart getMesCustomerPartByPartNo(String erpPartNo, String custCode, String organizeCode) {
|
||||
|
||||
if (StringUtils.isEmpty(erpPartNo) || StringUtils.isEmpty(custCode) || StringUtils.isEmpty(organizeCode)) return null;
|
||||
|
||||
return customerPartRepository.getByProperty(
|
||||
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ERP_PART_NO, MesPcnExtConstWords.CUST_CODE},
|
||||
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), erpPartNo, custCode});
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPackingDefineService;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefine;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesPackingDefineRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @PROJECT_NAME: i3plus-mes-yfai
|
||||
* @DESCRIPTION:
|
||||
* @USER: xinwang.yi
|
||||
* @DATE: 2024-09-12 16:53
|
||||
*/
|
||||
@Service
|
||||
public class MesPackingDefineService implements IMesPackingDefineService {
|
||||
|
||||
@Autowired
|
||||
private MesPackingDefineRepository packingDefineRepository;
|
||||
|
||||
@Override
|
||||
public MesPackingDefine getMesPackingDefine(String packCode, String organizeCode) {
|
||||
return packingDefineRepository.getByProperty(
|
||||
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACK_CODE},
|
||||
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packCode});
|
||||
}
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function;
|
||||
|
||||
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.MesProductionProcessContext;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IShippingDispatchService;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService;
|
||||
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
|
||||
import cn.estsh.i3plus.pojo.mes.model.ButtonDynamicModel;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
||||
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* @Description : 工位参数按钮事件接口实现【选择工单】
|
||||
**/
|
||||
@Service
|
||||
public class MesFunctionCutOrderDialogPrintService extends BaseSwsService implements IFsmModuleFunctionService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IShippingDispatchService shippingDispatchService;
|
||||
|
||||
@Override
|
||||
public Boolean doFunction(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) {
|
||||
|
||||
//获取生产过程上下文对象
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.getProductionProcessContext(reqBean);
|
||||
|
||||
if (!productionProcessContext.getSuccess()) return false;
|
||||
|
||||
MesWorkCell workCell = productionProcessContext.getWorkCell();
|
||||
|
||||
if (StringUtils.isEmpty(buttonDynamicModel.getFunctionValue())) {
|
||||
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()),
|
||||
String.format("生产线[%s]工位[%s]%s失败,裁片方案成品[%s]的有效性!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), buttonDynamicModel.getButtonName(), buttonDynamicModel.getFunctionValue()),
|
||||
MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean));
|
||||
reqBean.setInterfaceType(MesPcnConstWords.SHIPPING);
|
||||
reqBean.setBusiType(MesPcnEnumUtil.ACTOR_RECEIVE_STRATEGY.WS_CMD_DO_SCAN.getCode());
|
||||
reqBean.setForceJumpProcess(true);
|
||||
shippingDispatchService.sendScanQueueNextExec(reqBean);
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object stepDialogDispatch(StationRequestBean reqBean, String customPageName) {
|
||||
return productionDispatchContextStepService.getMesWorkOrderCutFgDataContext(reqBean);
|
||||
}
|
||||
}
|
@ -0,0 +1,167 @@
|
||||
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.*;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel;
|
||||
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
|
||||
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.*;
|
||||
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
||||
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.impp.framework.boot.exception.ImppBusiException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description : 保存裁片工单包装条码工步
|
||||
* @Author : wangjie
|
||||
**/
|
||||
@Slf4j
|
||||
@Service("mesWorkOrderCutPackageSnSaveStepService")
|
||||
public class MesWorkOrderCutPackageSnSaveStepService extends BaseStepService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
@Autowired
|
||||
private ISyncFuncService syncFuncService;
|
||||
|
||||
@Autowired
|
||||
private IFsmRouteDataService fsmRouteDataService;
|
||||
|
||||
@Override
|
||||
public StepResult execute(StationRequestBean reqBean) {
|
||||
|
||||
StationResultBean resultBean = new StationResultBean();
|
||||
|
||||
//获取上下文信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||
|
||||
//配置错误 抛出异常
|
||||
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
||||
|
||||
//存储生产过程上下文对象
|
||||
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
|
||||
|
||||
// 获取产成零件信息
|
||||
Map<String, MesPartContext> partDataContext = productionDispatchContextStepService.getPartDataExtContext(reqBean);
|
||||
|
||||
//从上下文中取出工位对象
|
||||
MesWorkCell workCell = productionProcessContext.getWorkCell();
|
||||
|
||||
// 重新收集打印裁片箱条码
|
||||
List<MesWorkOrderCutDetailModel> newWorkOrderCutFgDataContextList = new ArrayList<>();
|
||||
|
||||
// 最后一个工位才生成箱条码
|
||||
if (workCell.getIsEndWorkCell() != null && workCell.getIsEndWorkCell() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
|
||||
List<MesWorkOrderCutDetailModel> workOrderCutFgDataContextList = productionDispatchContextStepService.getMesWorkOrderCutFgDataContext(reqBean);
|
||||
|
||||
if (CollectionUtils.isEmpty(workOrderCutFgDataContextList))
|
||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "缺失裁片工单箱条码配置信息!");
|
||||
|
||||
for (MesWorkOrderCutDetailModel workOrderCutDetailModel : workOrderCutFgDataContextList) {
|
||||
BigDecimal[] bigDecimals = divideAndRemainder(workOrderCutDetailModel);
|
||||
|
||||
// 获取 商 根据商的决定生成条码次数
|
||||
double num = bigDecimals[0].doubleValue();
|
||||
|
||||
/* 如果余数 大于0 则 分为两种情况
|
||||
1、产成数量 不大于 标包数量
|
||||
2、剩余产成数量 生成尾数箱条码
|
||||
*/
|
||||
double remainder = bigDecimals[1].doubleValue();
|
||||
|
||||
List<MesWorkOrderCutPackage> workOrderCutPackages = new ArrayList<>();
|
||||
|
||||
// 商大于 0 则
|
||||
while (num > 0) {
|
||||
// 满箱直接取标包数量
|
||||
packWorkOrderPackageList(reqBean, resultBean, workOrderCutDetailModel, partDataContext,
|
||||
workOrderCutDetailModel.getPackageQty(), workOrderCutPackages, newWorkOrderCutFgDataContextList);
|
||||
num--;
|
||||
}
|
||||
|
||||
if (remainder > 0) {
|
||||
// 尾数箱取剩余产成数量
|
||||
packWorkOrderPackageList(reqBean, resultBean, workOrderCutDetailModel, partDataContext,
|
||||
remainder, workOrderCutPackages, newWorkOrderCutFgDataContextList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
productionDispatchContextStepService.dispatchMesWorkOrderCutFgDataContext(reqBean, newWorkOrderCutFgDataContextList);
|
||||
|
||||
}
|
||||
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "保存裁片工单箱条码成功!");
|
||||
|
||||
}
|
||||
|
||||
private void packWorkOrderPackageList(StationRequestBean reqBean, StationResultBean resultBean,
|
||||
MesWorkOrderCutDetailModel workOrderCutDetailModel,
|
||||
Map<String, MesPartContext> partDataContext,
|
||||
Double qty, List<MesWorkOrderCutPackage> workOrderCutPackages,
|
||||
List<MesWorkOrderCutDetailModel> newWorkOrderCutFgDataContextList) {
|
||||
|
||||
MesPartContext mesPartContext = partDataContext.get(workOrderCutDetailModel.getPartNo());
|
||||
String nowTime = TimeTool.getNowTime(false);
|
||||
MesWorkOrderCutPackage cutPackage = new MesWorkOrderCutPackage();
|
||||
ConvertBean.serviceModelInitialize(cutPackage, reqBean.getUserInfo());
|
||||
cutPackage.setOrganizeCode(reqBean.getOrganizeCode());
|
||||
BeanUtils.copyProperties(workOrderCutDetailModel, cutPackage);
|
||||
cutPackage.setQty(qty);
|
||||
cutPackage.setLotNo(nowTime);
|
||||
cutPackage.setSn(doGenerateSerialNo(reqBean, resultBean, mesPartContext.getPackageSnRule(), mesPartContext));
|
||||
|
||||
MesWorkOrderCutDetailModel newWorkOrderCutDetailModel = new MesWorkOrderCutDetailModel();
|
||||
BeanUtils.copyProperties(workOrderCutDetailModel, newWorkOrderCutDetailModel);
|
||||
newWorkOrderCutDetailModel.setQty(qty);
|
||||
newWorkOrderCutDetailModel.setCreateDatetime(cutPackage.getCreateDatetime());
|
||||
|
||||
workOrderCutPackages.add(cutPackage);
|
||||
newWorkOrderCutFgDataContextList.add(newWorkOrderCutDetailModel);
|
||||
}
|
||||
|
||||
private BigDecimal[] divideAndRemainder(MesWorkOrderCutDetailModel workOrderCutDetailModel) {
|
||||
BigDecimal dividend = new BigDecimal(workOrderCutDetailModel.getQty().toString());
|
||||
BigDecimal divisor = new BigDecimal(workOrderCutDetailModel.getPackageQty().toString());
|
||||
return dividend.divideAndRemainder(divisor);
|
||||
}
|
||||
|
||||
private String doGenerateSerialNo(StationRequestBean reqBean, StationResultBean resultBean, String ruleCode, MesPart part) {
|
||||
try {
|
||||
return syncFuncService.syncSerialNo(
|
||||
new GenSerialNoModel(ruleCode).prodLocation(reqBean.getWorkCenterCode()).partNo(part.getPartNo()).putDataMap(MesPart.class.getSimpleName(), part).organizeCode(reqBean.getOrganizeCode()),
|
||||
reqBean.getUserInfo(), reqBean.getOrganizeCode(), 1).getResultList().get(0).toString();
|
||||
} catch (ImppBusiException e) {
|
||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), e.getErrorDetail());
|
||||
} catch (Exception e) {
|
||||
String webMsg = String.format("零件编码[%s]编码规则代码[%s]生成零件条码%s", part.getPartNo(), ruleCode, fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode()));
|
||||
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.ERROR.getValue()), webMsg, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||
this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true);
|
||||
foundExThrowNoShowMsg();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,303 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesWorkOrderCutDetailModel;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
|
||||
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.IStepService;
|
||||
import cn.estsh.i3plus.mes.pcn.util.StringUtil;
|
||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
|
||||
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
||||
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.repository.MesProductionAssemblyRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderCutRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
|
||||
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
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.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description : 保存裁片工单条码工步
|
||||
* @Author : wangjie
|
||||
**/
|
||||
@Slf4j
|
||||
@Service("mesWorkOrderCutProductSnSaveStepService")
|
||||
public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionCustomContextStepService productionCustomContextStepService;
|
||||
|
||||
@Autowired
|
||||
private MesWorkOrderCutRepository workOrderCutRepository;
|
||||
|
||||
@Autowired
|
||||
private IMesProduceSnExtService produceSnExtService;
|
||||
|
||||
@Autowired
|
||||
private ISyncFuncService syncFuncService;
|
||||
|
||||
@Autowired
|
||||
private IFsmRouteDataService fsmRouteDataService;
|
||||
|
||||
@Autowired
|
||||
private MesProductionAssemblyRepository productionAssemblyRepository;
|
||||
|
||||
@Override
|
||||
public StepResult execute(StationRequestBean reqBean) {
|
||||
|
||||
StationResultBean resultBean = new StationResultBean();
|
||||
|
||||
//获取上下文信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||
|
||||
//配置错误 抛出异常
|
||||
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
||||
|
||||
//存储生产过程上下文对象
|
||||
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
|
||||
|
||||
//获取上下文生产扫/读信息:加工单
|
||||
List<MesEquipVariableCollectContext> equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean);
|
||||
|
||||
String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
|
||||
|
||||
//看是否修改裁片工单状态
|
||||
//获取上下文进料零件条码信息集合
|
||||
List<MesProductionPsInContext> productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean);
|
||||
|
||||
//获取上下文产成零件条码信息集合
|
||||
List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
|
||||
|
||||
//获取上下文产出零件数据信息集合
|
||||
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
||||
|
||||
//获取上下文产品加工规则数据信息集合
|
||||
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
||||
|
||||
if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在加工规则信息,请重置工序解决!");
|
||||
|
||||
// 根据产出零件号分组加工规则
|
||||
Map<String, MesProdRuleContext> prodRuleContextMapByOutPartNo = prodRuleContextList.stream().collect(Collectors.toMap(MesProdRuleContext::getOutPartNo, Function.identity(), (x, y) -> y));
|
||||
|
||||
// 获取产成零件信息
|
||||
Map<String, MesPart> partDataContext = productionDispatchContextStepService.getPartDataContext(reqBean);
|
||||
|
||||
//从上下文中取出工位对象
|
||||
MesWorkCell workCell = productionProcessContext.getWorkCell();
|
||||
|
||||
// 无进料条码则生成条码
|
||||
if (CollectionUtils.isEmpty(productionPsInContextList)) {
|
||||
|
||||
productionPsOutContextList = new ArrayList<>();
|
||||
|
||||
//获取生产线的当前班组班次信息
|
||||
MesProdShiftContext prodShiftContext = productionCustomContextStepService.getMesProdShiftKvBean(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode());
|
||||
|
||||
if (null == prodShiftContext) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在生产开班记录,请重新开班!");
|
||||
|
||||
for (MesProductionPartContext mesProductionPartContext : productionPartContextList) {
|
||||
|
||||
MesPart part = partDataContext.get(mesProductionPartContext.getPartNo());
|
||||
|
||||
MesProdRuleContext mesProdRuleContext = prodRuleContextMapByOutPartNo.get(part.getPartNo());
|
||||
|
||||
MesProduceSn produceSn = new MesProduceSn();
|
||||
ConvertBean.serviceModelInitialize(produceSn, reqBean.getUserInfo());
|
||||
produceSn.setOrganizeCode(reqBean.getOrganizeCode());
|
||||
produceSn.setProductSn(cutWorkOrderNo);
|
||||
produceSn.setRouteCode(reqBean.getRouteCode());
|
||||
produceSn.setProcessCode(reqBean.getProcessCode());
|
||||
produceSn.setCraftCode(productionProcessContext.getCraftCode());
|
||||
|
||||
produceSn.setCustSn(produceSn.getCustSn());
|
||||
produceSn.setSerialNumber(doGenerateSerialNo(reqBean, resultBean, MesPcnExtConstWords.DEFAULT_SERIAL_NUMBER_RULE, part));
|
||||
produceSn.setQty(mesProductionPartContext.getQty());
|
||||
|
||||
produceSn.setWorkOrderNo(mesProductionPartContext.getWorkOrderNo());
|
||||
produceSn.setCustCode(mesProductionPartContext.getCustCode());
|
||||
produceSn.setCustPartNo(mesProductionPartContext.getCustPartNo());
|
||||
|
||||
produceSn.setAreaCode(workCell.getAreaCode());
|
||||
produceSn.setWorkCenterCode(workCell.getWorkCenterCode());
|
||||
produceSn.setWorkCellCode(workCell.getWorkCellCode());
|
||||
|
||||
produceSn.setPartNo(mesProductionPartContext.getPartNo());
|
||||
produceSn.setPartName(mesProductionPartContext.getPartName());
|
||||
produceSn.setProcessLabelTemplate(part.getProcessLabelTemplate());
|
||||
produceSn.setProdLabelTemplate(part.getProductLabelTemplate());
|
||||
produceSn.setCustLabelTemplate(part.getCustLabelTemplate());
|
||||
|
||||
produceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.STANDARD.getValue());
|
||||
produceSn.setSnStatus(workCell.getIsEndWorkCell() != null && workCell.getIsEndWorkCell() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() ? MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue() : MesExtEnumUtil.PRODUCE_SN_STATUS.PROCESSING.getValue());
|
||||
produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
|
||||
|
||||
produceSn.setShiftCode(prodShiftContext.getShiftCode());
|
||||
produceSn.setShiftGroup(prodShiftContext.getShiftGroup());
|
||||
|
||||
produceSn.setPrintCount(MesPcnExtConstWords.ZERO);
|
||||
produceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
|
||||
|
||||
if (StringUtils.isEmpty(produceSn.getInWorkCenterTime())) produceSn.setInWorkCenterTime(produceSn.getModifyDatetime());
|
||||
produceSn.setLotNo(produceSn.getModifyDatetime().substring(0, 10));
|
||||
|
||||
produceSn.setFid(UUID.randomUUID().toString());
|
||||
produceSn = produceSnExtService.insert(produceSn);
|
||||
|
||||
MesProductionPsOutContext productionPsOutContext = new MesProductionPsOutContext().copy(produceSn, mesProdRuleContext.getForeignKey());
|
||||
|
||||
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- MesProduceSn:{} --- MesProductionPsOutContext:{}",
|
||||
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
|
||||
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), JSONObject.toJSONString(produceSn), JSONObject.toJSONString(productionPsOutContext));
|
||||
|
||||
productionPsOutContextList.add(productionPsOutContext);
|
||||
|
||||
// 新增装配件加工记录
|
||||
//saveProductionAssembly(reqBean, productionProcessContext, cellEquipContext, mesProdRuleContext, productionPsOutContext);
|
||||
|
||||
}
|
||||
|
||||
//保存上下文产出条码数据信息集合
|
||||
productionDispatchContextStepService.dispatchProductionPsOutContext(reqBean, productionPsOutContextList);
|
||||
|
||||
} else {
|
||||
|
||||
if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在加工规则信息,请重置工序解决!");
|
||||
|
||||
//保存零件条码信息工步
|
||||
((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).executeInState(reqBean);
|
||||
|
||||
for (MesProductionPartContext mesProductionPartContext : productionPartContextList) {
|
||||
|
||||
Map<String, MesProductionPsOutContext> productionPsOutContextMap = productionPsOutContextList.stream().collect(Collectors.toMap(MesProductionPsOutContext::getPartNo, Function.identity(), (x, y) -> y));
|
||||
|
||||
MesProductionPsOutContext productionPsOutContext = productionPsOutContextMap.get(mesProductionPartContext.getPartNo());
|
||||
|
||||
if (productionPsOutContext == null)
|
||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("产出零件号[%s]不存在,请重置工序解决!", mesProductionPartContext.getPartNo()));
|
||||
|
||||
//MesProdRuleContext mesProdRuleContext = prodRuleContextMapByOutPartNo.get(mesProductionPartContext.getPartNo());
|
||||
|
||||
// 新增装配件加工记录
|
||||
//saveProductionAssembly(reqBean, productionProcessContext, cellEquipContext, mesProdRuleContext, productionPsOutContext);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "保存裁片工单条码成功!");
|
||||
|
||||
}
|
||||
|
||||
private void insertWorkOrderCutPackage(StationRequestBean reqBean, StationResultBean resultBean) {
|
||||
|
||||
List<MesWorkOrderCutDetailModel> workOrderCutFgDataContextList = productionDispatchContextStepService.getMesWorkOrderCutFgDataContext(reqBean);
|
||||
|
||||
if (CollectionUtils.isEmpty(workOrderCutFgDataContextList))
|
||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "缺失裁片工单箱条码配置信息!");
|
||||
|
||||
for (MesWorkOrderCutDetailModel workOrderCutDetailModel : workOrderCutFgDataContextList) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void saveProductionAssembly(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext,
|
||||
MesCellEquipContext cellEquipContext, MesProdRuleContext mesProdRuleContext,
|
||||
MesProductionPsOutContext productionPsOutContext) {
|
||||
|
||||
MesProductionAssembly productionAssembly = new MesProductionAssembly();
|
||||
|
||||
productionAssembly.setAssemblySn("");
|
||||
productionAssembly.setDataSource(MesExtEnumUtil.PRODUCTION_ASSEMBLY_DATA_SOURCE.NOSORT.getValue());
|
||||
productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
||||
productionAssembly.setIsSkip(CommonEnumUtil.FALSE);
|
||||
|
||||
productionAssembly.setAreaCode(reqBean.getWorkCenterCode());
|
||||
productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode());
|
||||
productionAssembly.setWorkCellCode(reqBean.getWorkCellCode());
|
||||
productionAssembly.setProcessCode(reqBean.getProcessCode());
|
||||
|
||||
productionAssembly.setProcessName(productionProcessContext.getProcessName());
|
||||
productionAssembly.setCraftCode(productionProcessContext.getCraftCode());
|
||||
productionAssembly.setCraftName(productionProcessContext.getCraftName());
|
||||
|
||||
productionAssembly.setEquipmentCode(cellEquipContext.getEquipmentCode());
|
||||
|
||||
productionAssembly.setProductionRecordId(mesProdRuleContext.getProductionRecordId());
|
||||
productionAssembly.setMouldNo(mesProdRuleContext.getMouldNo());
|
||||
|
||||
if (null != productionPsOutContext) {
|
||||
productionAssembly.setPartNo(productionPsOutContext.getPartNo());
|
||||
productionAssembly.setPartName(productionPsOutContext.getPartName());
|
||||
productionAssembly.setSerialNumber(productionPsOutContext.getSerialNumber());
|
||||
productionAssembly.setProductSn(productionPsOutContext.getProductSn());
|
||||
productionAssembly.setCustSn(productionPsOutContext.getCustSn());
|
||||
}
|
||||
|
||||
MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true);
|
||||
if (null != scanMonitorContext) productionAssembly.setMouldRecordId(scanMonitorContext.getMouldRecordId());
|
||||
|
||||
productionAssembly.setOrganizeCode(reqBean.getOrganizeCode());
|
||||
ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo());
|
||||
|
||||
productionAssembly.setFid(UUID.randomUUID().toString());
|
||||
|
||||
productionAssemblyRepository.insert(productionAssembly);
|
||||
}
|
||||
|
||||
private void updateWorkOrderCutStatus(StationRequestBean reqBean, String cutWorkOrderNo, Integer status) {
|
||||
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||
DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, MesPcnExtConstWords.CUT_WORK_ORDER_NO, packBean);
|
||||
workOrderCutRepository.updateByProperties(new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.WORK_ORDER_STATUS},
|
||||
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), status},
|
||||
packBean);
|
||||
}
|
||||
|
||||
private String doGenerateSerialNo(StationRequestBean reqBean, StationResultBean resultBean, String ruleCode, MesPart part) {
|
||||
try {
|
||||
return syncFuncService.syncSerialNo(
|
||||
new GenSerialNoModel(ruleCode).prodLocation(reqBean.getWorkCenterCode()).partNo(part.getPartNo()).putDataMap(MesPart.class.getSimpleName(), part).organizeCode(reqBean.getOrganizeCode()),
|
||||
reqBean.getUserInfo(), reqBean.getOrganizeCode(), 1).getResultList().get(0).toString();
|
||||
} catch (ImppBusiException e) {
|
||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), e.getErrorDetail());
|
||||
} catch (Exception e) {
|
||||
String webMsg = String.format("零件编码[%s]编码规则代码[%s]生成零件条码%s", part.getPartNo(), ruleCode, fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode()));
|
||||
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.ERROR.getValue()), webMsg, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||
this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true);
|
||||
foundExThrowNoShowMsg();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,133 @@
|
||||
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
||||
|
||||
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
|
||||
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
||||
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
|
||||
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
|
||||
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
|
||||
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
||||
import cn.estsh.i3plus.platform.common.tool.MathOperation;
|
||||
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
||||
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
||||
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
||||
import cn.estsh.i3plus.pojo.mes.bean.*;
|
||||
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
||||
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.repository.MesWorkOrderCutRepository;
|
||||
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
|
||||
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description : 保存加工结果工步
|
||||
* @Author : wangjie
|
||||
**/
|
||||
@Slf4j
|
||||
@Service("mesWorkOrderCutWorkOrderSaveStepService")
|
||||
public class MesWorkOrderCutWorkOrderSaveStepService extends BaseStepService {
|
||||
|
||||
@Autowired
|
||||
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
||||
|
||||
@Autowired
|
||||
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
||||
|
||||
@Autowired
|
||||
private MesWorkOrderCutRepository workOrderCutRepository;
|
||||
|
||||
@Autowired
|
||||
private ISyncFuncService syncFuncService;
|
||||
|
||||
@Autowired
|
||||
private IFsmRouteDataService fsmRouteDataService;
|
||||
|
||||
@Autowired
|
||||
private IMesWorkOrderExtService workOrderExtService;
|
||||
|
||||
@Override
|
||||
public StepResult execute(StationRequestBean reqBean) {
|
||||
|
||||
StationResultBean resultBean = new StationResultBean();
|
||||
|
||||
//获取上下文信息
|
||||
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
||||
|
||||
//配置错误 抛出异常
|
||||
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
||||
|
||||
//存储生产过程上下文对象
|
||||
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
|
||||
|
||||
//获取上下文生产扫/读信息:加工单
|
||||
List<MesEquipVariableCollectContext> equipVariableCollectContextList = productionDispatchContextStepService.getScanWorkOrderNoContext(reqBean);
|
||||
|
||||
String cutWorkOrderNo = equipVariableCollectContextList.get(0).getEquipVariableValue();
|
||||
|
||||
//获取上下文产出零件数据信息集合
|
||||
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
|
||||
|
||||
//从上下文中取出工位对象
|
||||
MesWorkCell workCell = productionProcessContext.getWorkCell();
|
||||
|
||||
// 为最后一个工位则将工单更新为完成 并 新增裁片工单包装条码
|
||||
if (workCell.getIsEndWorkCell() != null && workCell.getIsEndWorkCell() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
|
||||
|
||||
updateWorkOrderCutStatus(reqBean, cutWorkOrderNo, MesExtEnumUtil.CUT_ORDER_STATUS.COMPLETE.getValue());
|
||||
|
||||
for (MesProductionPartContext mesProductionPartContext : productionPartContextList) {
|
||||
MesWorkOrder workOrder = workOrderExtService.getWorkOrder(reqBean.getOrganizeCode(), mesProductionPartContext.getWorkOrderNo());
|
||||
workOrder.setCompleteQty(MathOperation.add(workOrder.getCompleteQty(), mesProductionPartContext.getQty()));
|
||||
if (MathOperation.compareTo(workOrder.getCompleteQty(), workOrder.getQty()) >= 0 && workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()) != 0)
|
||||
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
||||
else
|
||||
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
||||
ConvertBean.serviceModelUpdate(workOrder, reqBean.getUserInfo());
|
||||
workOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date()));
|
||||
workOrderExtService.update(workOrder);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
updateWorkOrderCutStatus(reqBean, cutWorkOrderNo, MesExtEnumUtil.CUT_ORDER_STATUS.PROCESS.getValue());
|
||||
|
||||
}
|
||||
|
||||
return stepSuccessCompleteAndSendMsgReturn(reqBean, new StationResultBean().writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), "保存裁片工单成功!");
|
||||
|
||||
}
|
||||
|
||||
private void updateWorkOrderCutStatus(StationRequestBean reqBean, String cutWorkOrderNo, Integer status) {
|
||||
DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
|
||||
DdlPreparedPack.getStringEqualPack(cutWorkOrderNo, MesPcnExtConstWords.CUT_WORK_ORDER_NO, packBean);
|
||||
workOrderCutRepository.updateByProperties(new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.WORK_ORDER_STATUS},
|
||||
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), status},
|
||||
packBean);
|
||||
}
|
||||
|
||||
private String doGenerateSerialNo(StationRequestBean reqBean, StationResultBean resultBean, String ruleCode, MesPart part) {
|
||||
try {
|
||||
return syncFuncService.syncSerialNo(
|
||||
new GenSerialNoModel(ruleCode).prodLocation(reqBean.getWorkCenterCode()).partNo(part.getPartNo()).putDataMap(MesPart.class.getSimpleName(), part).organizeCode(reqBean.getOrganizeCode()),
|
||||
reqBean.getUserInfo(), reqBean.getOrganizeCode(), 1).getResultList().get(0).toString();
|
||||
} catch (ImppBusiException e) {
|
||||
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), e.getErrorDetail());
|
||||
} catch (Exception e) {
|
||||
String webMsg = String.format("零件编码[%s]编码规则代码[%s]生成零件条码%s", part.getPartNo(), ruleCode, fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode()));
|
||||
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.ERROR.getValue()), webMsg, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
|
||||
this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true);
|
||||
foundExThrowNoShowMsg();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue