dev
王杰 2 years ago
parent ce7f728764
commit 19f6fa6a1f

@ -24,6 +24,14 @@ public interface IJxProdBusiStrategyService {
StepResult execLineOnBindMc(JxProdBusiStrategyParamsBuilder params);
/**
*
* @param params
* @return
*/
@ApiOperation(value = "加工验证", notes = "加工验证")
StepResult checkProcessing(JxProdBusiStrategyParamsBuilder params);
/**
*
* @param params
* @return
@ -48,11 +56,11 @@ public interface IJxProdBusiStrategyService {
StepResult checkLineOff(JxProdBusiStrategyParamsBuilder params);
/**
* 线
* 线
* @param params
* @return
*/
@ApiOperation(value = "完成下线", notes = "完成下线")
@ApiOperation(value = "下线完成", notes = "下线完成")
StepResult execLineOff(JxProdBusiStrategyParamsBuilder params);
/**
@ -146,4 +154,11 @@ public interface IJxProdBusiStrategyService {
@ApiOperation(value = "验证班次启动", notes = "验证班次启动")
default StepResult checkShiftStart(JxProdBusiStrategyParamsBuilder params) {return StepResult.getSuccessComplete(); }
/**
*
* @param params
*/
@ApiOperation(value = "加工完成", notes = "加工完成")
default void execProcessing(JxProdBusiStrategyParamsBuilder params) {}
}

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.jx;
import cn.estsh.i3plus.ext.mes.pcn.api.base.*;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IOutPutStatisticsService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IPackageExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnTravelExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.ISxOutPutStatisticsTravelService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService;
@ -14,14 +15,19 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.util.ConvertBeanExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.busi.dispatch.cachedispatch.WorkCellDataCacheDispatch;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPackageDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesRouteProcess;
import cn.estsh.i3plus.pojo.mes.bean.MesShift;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.repository.MesPackageDetailRepository;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -31,6 +37,7 @@ import org.springframework.util.StringUtils;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.StringJoiner;
import java.util.stream.Collectors;
/**
@ -102,8 +109,21 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
@Autowired
private IPartExtService partExtService;
@Autowired
private MesPackageExtRepository packageExtRepository;
@Autowired
private MesPackageDetailRepository packageDetailRepository;
@Autowired
private IPackageExtService packageExtService;
@Override
public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) {
StepResult stepResult = checkShiftStart(params);
if (!stepResult.isCompleted()) return stepResult;
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) queryBusiData4Mc(params.manageCode(params.getScanInfo()));
else queryProduceSnInfo(params.productSn(params.getScanInfo())).scanName();
return StepResult.getSuccessComplete();
@ -223,8 +243,6 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExtDb.getOperateType()) return stepResult.isCompleted(false).msg(String.format("过程条码[%s]产品条码[%s]对应的信息当前业务状态[返修]!", params.getSerialNumber(), params.getProductSn()));
//if (MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue() <= produceSnExtDb.getSnStatus()) return stepResult;
produceSnExtDb.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue());
produceSnExtService.doPackSnExtProcess((StationRequestBean) params.getObj(), produceSnExtDb);
ConvertBean.serviceModelUpdate(produceSnExtDb, params.getUserInfo());
@ -271,9 +289,14 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
public StepResult execLineOnBindMc(JxProdBusiStrategyParamsBuilder params) { return StepResult.getSuccessComplete(); }
@Override
public StepResult checkProcessing(JxProdBusiStrategyParamsBuilder params) { return StepResult.getSuccessComplete(); }
@Override
public StepResult checkFinalInspection(JxProdBusiStrategyParamsBuilder params) {
StepResult stepResult = StepResult.getSuccessComplete();
StepResult stepResult = checkShiftStart(params);
if (!stepResult.isCompleted()) return stepResult;
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) queryBusiData4Mc(params.manageCode(params.getScanInfo()));
else queryProduceSnInfo(params.productSn(params.getScanInfo())).scanName();
@ -295,9 +318,6 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnExtDb().getOperateType())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo()));
if (MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue() == params.getProduceSnExtDb().getQcStatus())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息当前质量状态[不合格],验证失败!", params.getScanName(), params.getScanInfo()));
return stepResult;
}
@ -595,7 +615,24 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
if (null == workCenterExtDb) return stepResult.msg(String.format("生产线[%s]信息不存在,操作失败", params.getWorkCenterCode()));
if (StringUtils.isEmpty(workCenterExtDb.getWorkTime()) || StringUtils.isEmpty(workCenterExtDb.getShiftCode())) return stepResult.msg(String.format("生产线[%s]未启动班次,操作失败", params.getWorkCenterCode()));
MesShift shiftDb = shiftExtService.getShiftByShiftCodeAndCenterCode(params.getOrganizeCode(), params.getWorkCenterCode(), workCenterExtDb.getShiftCode());
WorkCellDataCacheDispatch dispatch = new WorkCellDataCacheDispatch.builder()
.key(new StringJoiner(MesPcnExtConstWords.COLON).add(params.getOrganizeCode()).add(MesPcnExtConstWords.JX_PROD_SHIFT_DATA).toString())
.item(new StringJoiner(MesPcnExtConstWords.AND).add(params.getWorkCenterCode()).add(workCenterExtDb.getShiftCode()).toString())
.org(params.getOrganizeCode()).build().get();
MesShift shiftDb;
if (null != dispatch && !StringUtils.isEmpty(dispatch.getValue())) shiftDb = JSONObject.parseObject(dispatch.getValue(), MesShift.class);
else {
shiftDb = shiftExtService.getShiftByShiftCodeAndCenterCode(params.getOrganizeCode(), params.getWorkCenterCode(), workCenterExtDb.getShiftCode());
if (null != shiftDb && !StringUtils.isEmpty(shiftDb.getStartTime()) && !StringUtils.isEmpty(shiftDb.getEndTime()))
new WorkCellDataCacheDispatch.builder()
.key(new StringJoiner(MesPcnExtConstWords.COLON).add(params.getOrganizeCode()).add(MesPcnExtConstWords.JX_PROD_SHIFT_DATA).toString())
.item(new StringJoiner(MesPcnExtConstWords.AND).add(params.getWorkCenterCode()).add(workCenterExtDb.getShiftCode()).toString())
.value(JSONObject.toJSONString(shiftDb))
.timeSecond(MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue())
.org(params.getOrganizeCode()).build().save();
}
if (null == shiftDb || (StringUtils.isEmpty(shiftDb.getStartTime()) || StringUtils.isEmpty(shiftDb.getEndTime()))) return stepResult.msg(String.format("未配置有效的生产线[%s]班次代码[%s]信息,操作失败", params.getWorkCenterCode(), workCenterExtDb.getShiftCode()));
String workTime = shiftProdCenterRecordService.getWorkTime(shiftDb.getStartTime(), shiftDb.getEndTime());
@ -626,6 +663,8 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
insertProduceSnTravel(params);
savePackageInfo(params);
saveOutPutStatistics(params);
doProductOffLine(params);
@ -667,6 +706,50 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
produceSnExtDb.setLotNo(produceSnExtDb.getWorkTime());
}
private void savePackageInfo(JxProdBusiStrategyParamsBuilder params) {
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) {
MesPackageExt pack = new MesPackageExt();
pack.setPackageNo(params.getProduceSnExtDb().getProductSn());
pack.setPartNo(params.getProduceSnExtDb().getPartNo());
pack.setPartNameRdd(params.getProduceSnExtDb().getPartNameRdd());
pack.setQty(new Double(1));
pack.setPackSpecQty(new Double(1));
pack.setUnit(params.getPartDb().getUnit());
pack.setIsSealed(MesPcnEnumUtil.PACKAGE_IS_SEALED.SEALED.getValue());
pack.setPrintStatus(MesPcnEnumUtil.PACKAGE_PRINT_STATUS.PRINTED.getValue());
pack.setPackLevel(MesPcnEnumUtil.PACKAGE_PACKLEVEL.FIRST.getValue());
pack.setWorkOrderNo(params.getProduceSnExtDb().getWorkOrderNo());
pack.setLastWorkOrderNo(pack.getWorkOrderNo());
pack.setWorkCenterCode(params.getWorkCenterCode());
pack.setWorkCellCode(params.getWorkCellCode());
pack.setLotNo(params.getProduceSnExtDb().getLotNo());
pack.setWorkTime(params.getProduceSnExtDb().getWorkTime());
pack.setShiftCode(params.getProduceSnExtDb().getShiftCode());
pack.setOrganizeCode(params.getOrganizeCode());
ConvertBean.serviceModelInitialize(pack, params.getUserInfo());
pack.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
new ConvertBeanExt(pack).convertBean(pack);
packageExtRepository.insert(pack);
MesPackageDetail packageDetail = new MesPackageDetail();
packageDetail.setPackageNo(pack.getPackageNo());
packageDetail.setSerialNumber(params.getProduceSnExtDb().getSerialNumber());
packageDetail.setPartNo(pack.getPartNo());
packageDetail.setPartNameRdd(pack.getPartNameRdd());
packageDetail.setOrganizeCode(params.getOrganizeCode());
packageDetail.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
ConvertBean.serviceModelInitialize(packageDetail, params.getUserInfo());
packageDetailRepository.insert(packageDetail);
} else {
MesPackageExt pack = packageExtService.getPackageByPackNo(params.getOrganizeCode(), params.getProduceSnExtDb().getProductSn());
pack.setLastWorkOrderNo(params.getOrderModel().getOrderNo());
pack.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
ConvertBean.serviceModelUpdate(pack, params.getUserInfo());
packageExtRepository.save(pack);
}
}
private void saveOutPutStatistics(JxProdBusiStrategyParamsBuilder params) {
MesOutPutStatistics outPutStatistics = outPutStatisticsService.getOutPutStatisticsByTimeAndOrderNo(
@ -738,5 +821,12 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
}
}
@Override
public void execProcessing(JxProdBusiStrategyParamsBuilder params) {
queryProduceSnInfo(params);
}
}

@ -31,11 +31,11 @@ public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyServi
@Override
public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) {
((IJxProdBusiStrategyService) params.getStrategyService()).checkLineOn(params);
StepResult stepResult = ((IJxProdBusiStrategyService) params.getStrategyService()).checkLineOn(params);
StepResult stepResult = StepResult.getNonComplete();
if (!stepResult.isCompleted()) return stepResult;
if (null == params.getProduceSnExtDb()) return stepResult.msg(String.format("%s[%s]未匹配到有效的产品条码信息,验证失败!", params.getScanName(), params.getScanInfo()));
if (null == params.getProduceSnExtDb()) return stepResult.isCompleted(false).msg(String.format("%s[%s]未匹配到有效的产品条码信息,验证失败!", params.getScanName(), params.getScanInfo()));
return checkLineOn4Ps(params, stepResult);
@ -43,6 +43,8 @@ public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyServi
private StepResult checkLineOn4Ps(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) {
stepResult.isCompleted(false);
if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()))
return stepResult.msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo()));
@ -60,6 +62,9 @@ public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyServi
public StepResult execLineOnBindMc(JxProdBusiStrategyParamsBuilder params) { return StepResult.getSuccessComplete(); }
@Override
public StepResult checkProcessing(JxProdBusiStrategyParamsBuilder params) { return this.checkFinalInspection(params); }
@Override
public StepResult checkFinalInspection(JxProdBusiStrategyParamsBuilder params) {
StepResult stepResult = ((IJxProdBusiStrategyService) params.getStrategyService()).checkFinalInspection(params);

@ -64,11 +64,11 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer
@Override
public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) {
((IJxProdBusiStrategyService) params.getStrategyService()).checkLineOn(params);
StepResult stepResult = ((IJxProdBusiStrategyService) params.getStrategyService()).checkLineOn(params);
StepResult stepResult = StepResult.getNonComplete();
if (!stepResult.isCompleted()) return stepResult;
if (null == params.getManageCodeDb() && null == params.getProduceSnExtDb()) return stepResult.msg(String.format("%s[%s]未匹配到有效的管理编码或产品条码信息,验证失败!", params.getScanName(), params.getScanInfo()));
if (null == params.getManageCodeDb() && null == params.getProduceSnExtDb()) return stepResult.isCompleted(false).msg(String.format("%s[%s]未匹配到有效的管理编码或产品条码信息,验证失败!", params.getScanName(), params.getScanInfo()));
if (null != params.getProduceSnExtDb()) return checkLineOn4Ps(params, stepResult);
@ -78,6 +78,8 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer
private StepResult checkLineOn4Ps(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) {
stepResult.isCompleted(false);
if (!params.getProduceSnExtDb().getLastWorkOrderNo().equals(params.getOrderModel().getOrderNo()))
return stepResult.msg(String.format("%s[%s]对应的产品条码信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnExtDb().getLastWorkOrderNo(), params.getOrderModel().getOrderNo()));
@ -99,6 +101,8 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer
private StepResult checkLineOn4Mc(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) {
stepResult.isCompleted(false);
if (null != params.getProduceSnMcRecordDb() && !params.getProduceSnMcRecordDb().getWorkOrderNo().equals(params.getOrderModel().getOrderNo()))
return stepResult.msg(String.format("%s[%s]已绑定其他生产工单[%s],验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnMcRecordDb().getWorkOrderNo()));
@ -179,6 +183,9 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer
}
@Override
public StepResult checkProcessing(JxProdBusiStrategyParamsBuilder params) { return this.checkFinalInspection(params); }
@Override
public StepResult checkFinalInspection(JxProdBusiStrategyParamsBuilder params) {
StepResult stepResult = ((IJxProdBusiStrategyService) params.getStrategyService()).checkFinalInspection(params);
@ -200,9 +207,6 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer
if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == params.getProduceSnMcRecordDb().getOperateType())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前业务类型[返修],验证失败!", params.getScanName(), params.getScanInfo()));
if (MesPcnExtEnumUtil.MC_RECORD_QC_STATUS.FALSE.getValue() == params.getProduceSnMcRecordDb().getQcStatus())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的管理编码与工单条码关系信息当前质量状态[不合格],验证失败!", params.getScanName(), params.getScanInfo()));
if (!params.getProduceSnMcRecordDb().getWorkOrderNo().equals(params.getOrderModel().getOrderNo()))
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的管理编码与工单条码关系信息关联的工单号[%s]与当前生产的工单号[%s]不一致,验证失败!", params.getScanName(), params.getScanInfo(), params.getProduceSnMcRecordDb().getWorkOrderNo(), params.getOrderModel().getOrderNo()));

@ -0,0 +1,284 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxSnWorkCellScanModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.IShippingDispatchService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseModuleService;
import cn.estsh.i3plus.mes.pcn.util.PojoAttrUtil;
import cn.estsh.i3plus.platform.common.util.MesPcnConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesRouteProcess;
import cn.estsh.i3plus.pojo.mes.bean.MesStateMachineStatus;
import cn.estsh.i3plus.pojo.mes.model.AttrBean;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.impp.framework.boot.util.ImppRedis;
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 org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author :wangjie
* @CreateDate : 2020-06-26 11:18
* @Modify:
**/
@Slf4j
@Service("jxSnProcessingModuleService")
public class JxSnProcessingModuleService extends BaseModuleService {
@Autowired
private ISxWorkOrderExtService workOrderExtService;
@Autowired
private IProduceSnExtService produceSnExtService;
@Autowired
private IShippingDispatchService shippingDispatchService;
@Autowired
private IFsmRouteDataService fsmRouteDataService;
@Resource(name = MesPcnExtConstWords.REDIS_RES_PCN)
private ImppRedis redisMesPcn;
@Override
public void init(StationRequestBean reqBean) {
MesWorkOrderExt workOrderExt = getCurExecWorkOrder(reqBean);
doLoadData(reqBean, workOrderExt);
}
@Override
public boolean execStateModule(StationRequestBean reqBean, List<MesStateMachineStatus> states, Map<String, String> wcpcMap) {
String curExecWorkOrder = (String) doHandleCurExecWorkOrder(reqBean, 1, null);
if (StringUtils.isEmpty(curExecWorkOrder)) return true;
MesWorkOrderExt workOrderExtDb = getCachedWorkOrder(reqBean, curExecWorkOrder);
if (null == workOrderExtDb) return true;
doLoadData(reqBean, workOrderExtDb);
return true;
}
private MesWorkOrderExt getCurExecWorkOrder(StationRequestBean reqBean) {
String curExecWorkOrder = (String) doHandleCurExecWorkOrder(reqBean, 1, null);
MesWorkOrderExt workOrderExtDb = StringUtils.isEmpty(curExecWorkOrder) ? null : getCachedWorkOrder(reqBean, curExecWorkOrder);
return workOrderExtDb;
}
private String getDataKey(StationRequestBean reqBean) {
return new StringJoiner(MesPcnExtConstWords.COLON).add(reqBean.getOrganizeCode())
.add(MesPcnExtConstWords.JX_SN_PROCESSING_DATA).add(reqBean.getWorkCenterCode()).add(reqBean.getWorkCellCode()).toString();
}
private MesWorkOrderExt getCachedWorkOrder(StationRequestBean reqBean, String curExecWorkOrder) {
return workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), curExecWorkOrder);
}
private List<AttrBean> packDataAttrList() {
List<AttrBean> attrBeanList = new ArrayList<>();
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.INDEX, "序号");
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MANAGE_CODE, "(源)管理码");
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.STATUS_NAME, "工序状态");
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.SERIAL_NUMBER, "过程条码");
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.PRODUCT_SN, "产品条码");
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_DATE_TIME, "操作时间");
PojoAttrUtil.loadPojoAttrs(attrBeanList, MesPcnExtConstWords.MODIFY_USER, "操作人");
return attrBeanList;
}
private void doLoadData(StationRequestBean reqBean, MesWorkOrderExt workOrderExt) {
StationResultBean resultBean = new StationResultBean();
resultBean.setBusiType(MesPcnEnumUtil.STATION_BUSI_TYPE.MODULE_CONTENT.getValue());
resultBean.setDataType(MesPcnEnumUtil.STATION_DATA_TYPE.CUSTOM.getValue());
resultBean.setCustomPageName(MesPcnExtConstWords.JX_SN_PROCESSING_MODULE);
resultBean.setDataAttrList(packDataAttrList());
resultBean.setSpecialDisplayData(getStepColIndent(reqBean));
if (null != workOrderExt) {
List<MesProduceSnExt> produceSnList;
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != workOrderExt.getWorkOrderType())
produceSnList = produceSnExtService.getProduceSnExtListByOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo());
else
produceSnList = produceSnExtService.getProduceSnExtListByLastOrderNo(reqBean.getOrganizeCode(), workOrderExt.getOrderNo());
List<String> processCodeList = getProcessCodeList(reqBean);
resultBean.setResultMap(packResultMap(workOrderExt, getCompleteQtyByType(reqBean, produceSnList, processCodeList)));
resultBean.setResultList(packResultListByType(produceSnList, processCodeList));
}
this.sendMessage(reqBean, resultBean);
}
private List<String> getProcessCodeList(StationRequestBean reqBean) {
if (StringUtils.isEmpty(reqBean.getRouteCode()) || StringUtils.isEmpty(reqBean.getProcessCode())) return null;
List<MesRouteProcess> routeProcessList = fsmRouteDataService.getCachedFsmRouteProcessData(reqBean);
Optional<MesRouteProcess> routeProcessOp = CollectionUtils.isEmpty(routeProcessList) ? null :
routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(reqBean.getProcessCode()) && o.getRouteCode().equals(reqBean.getRouteCode()))).findFirst();
if (null == routeProcessOp || !routeProcessOp.isPresent()) return null;
return routeProcessList.stream().filter(o -> (null != o && o.getSeq().compareTo(routeProcessOp.get().getSeq()) >= 0)).map(MesRouteProcess::getProcessCode).collect(Collectors.toList());
}
private Integer getCompleteQtyByType(StationRequestBean reqBean, List<MesProduceSnExt> produceSnList, List<String> processCodeList) {
if (StringUtils.isEmpty(reqBean.getProcessCode()) || CollectionUtils.isEmpty(processCodeList)) return MesPcnExtConstWords.ZERO;
List<MesProduceSnExt> completeList = CollectionUtils.isEmpty(produceSnList) ? null : produceSnList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getProcessCode()) && processCodeList.contains(o.getProcessCode()))).collect(Collectors.toList());
return CollectionUtils.isEmpty(completeList) ? MesPcnExtConstWords.ZERO : completeList.size();
}
private List<JxSnWorkCellScanModel> packResultListByType(List<MesProduceSnExt> produceSnList, List<String> processCodeList) {
if (CollectionUtils.isEmpty(produceSnList) || CollectionUtils.isEmpty(processCodeList)) return null;
List<JxSnWorkCellScanModel> resultList = null;
produceSnList = produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getModifyDatetime).reversed()).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(produceSnList) && produceSnList.size() > 50) produceSnList = produceSnList.subList(0, 50);
Integer index = 1;
for (MesProduceSnExt produceSnExt : produceSnList) {
if (null == produceSnExt) continue;
if (CollectionUtils.isEmpty(resultList)) resultList = new ArrayList<>();
JxSnWorkCellScanModel result = new JxSnWorkCellScanModel();
BeanUtils.copyProperties(produceSnExt, result);
if (!StringUtils.isEmpty(produceSnExt.getProcessCode()) && processCodeList.contains(produceSnExt.getProcessCode())) result.statusName("已完成").color(MesPcnExtConstWords.GREEN);
else if (MesPcnExtEnumUtil.SN_OPERATE_TYPE.REPAIR.getValue() == produceSnExt.getOperateType()) result.statusName("返修中").color(MesPcnExtConstWords.YELLOW);
else result.statusName("未完成");
resultList.add(result.manageCode(produceSnExt.getTrayNo()).index(index));
index ++;
}
return resultList;
}
private Map<String, Object> packResultMap(MesWorkOrderExt workOrderExt, Integer completeQty) {
Map<String, Object> resultMap = new HashMap<>();
resultMap.put(MesPcnExtConstWords.CUR_WORK_ORDER_NO, workOrderExt.getOrderNo());
resultMap.put(MesPcnExtConstWords.PART_NO, workOrderExt.getPartNo());
resultMap.put(MesPcnExtConstWords.PART_NAME_RDD, workOrderExt.getPartNameRdd());
resultMap.put(MesPcnExtConstWords.WORK_ORDER_TYPE, workOrderExt.getWorkOrderType());
resultMap.put(MesPcnExtConstWords.WORK_ORDER_TYPE_NAME, MesPcnExtEnumUtil.WORK_ORDER_TYPE.valueOfDescription(workOrderExt.getWorkOrderType()));
resultMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, workOrderExt.getWorkOrderStatus());
resultMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS_NAME, MesPcnExtEnumUtil.WORK_ORDER_STATUS.valueOfDescription(workOrderExt.getWorkOrderStatus()));
resultMap.put(MesPcnExtConstWords.QTY, workOrderExt.getQty().intValue());
resultMap.put(MesPcnExtConstWords.COMPLETE_QTY, completeQty);
return resultMap;
}
@Override
public boolean doFunction(StationRequestBean reqBean) {
Boolean result = false;
Map<String, Object> dataMap = reqBean.getDataMap();
String command = (String) dataMap.get(MesPcnExtConstWords.COMMAND);
Object value = dataMap.get(MesPcnExtConstWords.VALUE);
if (StringUtils.isEmpty(command)) {
this.sendMessage(reqBean, null, "后端未获取到业务功能指令", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
switch (command) {
case MesPcnExtConstWords.CMD_WORK_ORDER :
if (StringUtils.isEmpty(value)) {
this.sendMessage(reqBean, null, "请选择启动状态的生产工单", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
String selectWorkOrderNo = (String) doHandleSelectWorkOrderNo(reqBean, 1, null);
if (!StringUtils.isEmpty(selectWorkOrderNo) && selectWorkOrderNo.equals(value)) return result;
reqBean.setForceJumpProcess(true);
if (StringUtils.isEmpty(selectWorkOrderNo)) {
if ((Boolean) doHandleSelectWorkOrderNo(reqBean, 2, value.toString())) result = true;
else {
this.sendMessage(reqBean, null, String.format("切换的生产工单[%s]缓存失败,请重试", value), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
}
break;
case MesPcnExtConstWords.CMD_FORCE_CENTER_PASS :
if (StringUtils.isEmpty(value)) {
this.sendMessage(reqBean, null, "入参缺少产线强制放行的工步代码", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
return result;
}
reqBean.setForceSpecStepCode(value.toString());
result = true;
break;
default:
break;
}
if (!result) this.sendMessage(reqBean, null, "操作太频繁", MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
else {
//跳过工序
reqBean.setClientInfo(shippingDispatchService.getActorClientInfo(reqBean));
reqBean.setInterfaceType(MesPcnConstWords.SHIPPING);
reqBean.setBusiType(MesPcnConstWords.WS_CMD_DO_SCAN);
shippingDispatchService.doSendScanQueueNextExec(reqBean);
}
return result;
}
public synchronized Object doHandleCurExecWorkOrder(StationRequestBean reqBean, Integer flag, String curExecWorkOrder) {
switch (flag) {
case 1:
return redisMesPcn.getHash(getDataKey(reqBean), MesPcnExtConstWords.CUR_EXEC_WORK_ORDER);
case 2:
return redisMesPcn.putHash(getDataKey(reqBean), MesPcnExtConstWords.CUR_EXEC_WORK_ORDER, curExecWorkOrder, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue());
case 3:
redisMesPcn.deleteHash(getDataKey(reqBean), MesPcnExtConstWords.CUR_EXEC_WORK_ORDER);
return true;
default:
return null;
}
}
public synchronized Object doHandleSelectWorkOrderNo(StationRequestBean reqBean, Integer flag, String selectWorkOrderNo) {
switch (flag) {
case 1:
return redisMesPcn.getHash(getDataKey(reqBean), MesPcnExtConstWords.CMD_WORK_ORDER);
case 2:
return redisMesPcn.putHash(getDataKey(reqBean), MesPcnExtConstWords.CMD_WORK_ORDER, selectWorkOrderNo, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue());
case 3:
redisMesPcn.deleteHash(getDataKey(reqBean), MesPcnExtConstWords.CMD_WORK_ORDER);
return true;
default:
return null;
}
}
public Object doHandleBindKeyPartData(StationRequestBean reqBean, Integer flag, String item, String data) {
switch (flag) {
case 1:
return redisMesPcn.getHash(getDataKey(reqBean), item);
case 2:
return redisMesPcn.putHash(getDataKey(reqBean), item, data, MesPcnEnumUtil.EXPIRE_TIME.NEVER.getValue());
case 3:
String[] itemArr = item.split(MesPcnExtConstWords.COMMA);
for (String s : itemArr) {
redisMesPcn.deleteHash(getDataKey(reqBean), s);
}
return true;
default:
return null;
}
}
}

@ -78,9 +78,6 @@ public class JxBindKeyPartStepService extends BaseStepService {
@Autowired
private IFsmCommonService fsmCommonService;
@Autowired
private IFsmRouteDataService routeDataService;
private static final String VALIDATION_CODE = "VALIDATION_CODE";
private static final String SHOW_KPSN_RULE = "SHOW_KPSN_RULE";
private static final String RELOAD_KEY_PART_CODE = "RELOAD_KEY_PART_CODE";

@ -5,7 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmCommonService;
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IModuleService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
@ -19,7 +19,6 @@ 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 org.springframework.util.StringUtils;
import java.lang.reflect.Method;
@ -38,7 +37,7 @@ import java.util.Map;
public class JxInitOrderStepService extends BaseStepService {
@Autowired
private IFsmRouteDataService routeDataService;
private IFsmCommonService fsmCommonService;
@Autowired
private ISxWorkOrderExtService workOrderExtService;
@ -113,7 +112,7 @@ public class JxInitOrderStepService extends BaseStepService {
}
private Object doHandleModuleObjectMethod(StationRequestBean reqBean, StationResultBean resultBean, String methodStr, Integer flag, String value) {
if (CollectionUtils.isEmpty(reqBean.getWcpcMap())) reqBean.setWcpcMap(routeDataService.doHandleFsmWcpcMapData(reqBean));
fsmCommonService.checkWcpcMapForDoScan(reqBean);
try {
IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT));
Method method = moduleService.getClass().getDeclaredMethod(methodStr, reqBean.getClass(), Integer.class, String.class);
@ -126,7 +125,7 @@ public class JxInitOrderStepService extends BaseStepService {
}
private Object execStateModule(StationRequestBean reqBean, StationResultBean resultBean) {
if (CollectionUtils.isEmpty(reqBean.getWcpcMap())) reqBean.setWcpcMap(routeDataService.doHandleFsmWcpcMapData(reqBean));
fsmCommonService.checkWcpcMapForDoScan(reqBean);
try {
IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT));
Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.execStateModule, reqBean.getClass(), List.class, Map.class);

@ -0,0 +1,127 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx;
import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnLineOnModuleService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.WorkOrderExtModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
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.util.SpringContextsUtil;
import com.alibaba.fastjson.JSONObject;
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.StringUtils;
import java.util.StringJoiner;
/**
* @Description :
* @Reference :
* @Author : wangjie
* @CreateDate : 2019-07-11
* @Modify:
**/
@Slf4j
@Service("jxSnProcessingCheckMcOrPsStepService")
public class JxSnProcessingCheckMcOrPsStepService extends BaseStepService {
@Autowired
private JxSnLineOnModuleService snLineOnModuleService;
@Autowired
private ISxWorkOrderExtService workOrderExtService;
@Override
public StepResult guide(StationRequestBean reqBean) {
return execSuccessCompleteAndSendGuideReturn(reqBean, new StationResultBean(), "请扫描管理编码或产品条码!");
}
@Override
public StepResult init(StationRequestBean reqBean) {
reqBean.setSerialNumber(null);
reqBean.setProductSn(null);
reqBean.setTray(null);
clearStepContent(reqBean);
snLineOnModuleService.doHandleBindKeyPartData(reqBean, 3, new StringJoiner(MesPcnExtConstWords.COMMA).add(MesPcnExtConstWords.BIND_KEY_PART).add(MesPcnExtConstWords.EXEC_BIND_KEY).toString(), null);
return super.init(reqBean);
}
@Override
public StepResult execute(StationRequestBean reqBean) {
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCheckMcOrPsStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
StepResult stepResult = StepResult.getSuccessComplete();
StationResultBean resultBean = new StationResultBean();
if (StringUtils.isEmpty(reqBean.getScanInfo())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "入参缺少管理编码或产品条码!");
String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean);
WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo);
checkScanInfoIsValid(reqBean, resultBean, stepResult, orderModel);
reqBean.setScanInfo(null);
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCheckMcOrPsStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
return stepResult;
}
private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) {
String curExecWorkOrderNo = (String) snLineOnModuleService.doHandleCurExecWorkOrder(reqBean, 1, null);
if (StringUtils.isEmpty(curExecWorkOrderNo)) execExpSendMsgAndThrowEx(reqBean, resultBean, "此前操作的工单号已丢失,请选择启动状态的生产工单!");
return curExecWorkOrderNo;
}
private WorkOrderExtModel getWorkOrderExtModel(StationRequestBean reqBean, StationResultBean resultBean, String curExecWorkOrderNo) {
WorkOrderExtModel orderModel = !reqBean.getDataMap().containsKey(MesPcnExtConstWords.WORK_ORDER) ? null :
JSONObject.parseObject(JSONObject.toJSONString(reqBean.getDataMap().get(MesPcnExtConstWords.WORK_ORDER)), WorkOrderExtModel.class);
if (null == orderModel) {
MesWorkOrderExt workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(reqBean.getOrganizeCode(), curExecWorkOrderNo);
if (null != workOrderExt) {
orderModel = new WorkOrderExtModel();
BeanUtils.copyProperties(workOrderExt, orderModel, MesPcnExtConstWords.ID);
}
}
if (null == orderModel) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("此前操作的工单号[%s]对应的信息不存在!", curExecWorkOrderNo));
return orderModel;
}
private StepResult checkScanInfoIsValid(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, WorkOrderExtModel orderModel) {
JxProdBusiStrategyParamsBuilder params = new JxProdBusiStrategyParamsBuilder.builder()
.organizeCode(reqBean.getOrganizeCode())
.scanInfo(reqBean.getScanInfo())
.location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())
.orderModel(orderModel)
.strategyService(SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz()))
.build();
StepResult result = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.valueOfClazz(orderModel.getWorkOrderType()))).checkProcessing(params);
this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
stepResult.setCompleted(result.isCompleted());
reqBean.setSerialNumber(params.getSerialNumber());
reqBean.setProductSn(params.getProductSn());
reqBean.setTray(null == params.getProduceSnMcRecordDb() ? params.getManageCode() : new StringJoiner(MesPcnExtConstWords.AND).add(params.getProduceSnMcRecordDb().getManageCode()).add(params.getProduceSnMcRecordDb().getId().toString()).toString());
if (result.isCompleted() && (null != params.getProduceSnMcRecordDb() || null != params.getProduceSnExtDb())) stepResult.nextTriggerEvent(MesPcnExtConstWords.BIND_KEY_PART).isCompleted(false);
return stepResult;
}
}

@ -0,0 +1,54 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.step.jx;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.mes.pcn.serviceimpl.base.BaseStepService;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
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.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description :
* @Reference :
* @Author : wangjie
* @CreateDate : 2019-07-11
* @Modify:
**/
@Slf4j
@Service("jxSnProcessingCompleteStepService")
public class JxSnProcessingCompleteStepService extends BaseStepService {
@Override
public StepResult execute(StationRequestBean reqBean) {
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCompleteStepService --- START --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
StepResult stepResult = StepResult.getSuccessComplete();
StationResultBean resultBean = new StationResultBean();
if (StringUtils.isEmpty(reqBean.getSerialNumber()) && StringUtils.isEmpty(reqBean.getProductSn())) return execNonCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, "入参缺少过程条码或产品条码!");
((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz()))
.checkProcessing(new JxProdBusiStrategyParamsBuilder.builder()
.organizeCode(reqBean.getOrganizeCode())
.userInfo(reqBean.getUserInfo())
.location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())
.serialNumber(reqBean.getSerialNumber())
.productSn(reqBean.getProductSn())
.obj(reqBean)
.build());
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnProcessingCompleteStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, true, MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO,
MesPcnEnumUtil.STATION_DATA_TYPE.TEXT, String.format("管理编码[%s]过程条码[%s]产品条码[%s]加工完成!", reqBean.getTray(), reqBean.getSerialNumber(), reqBean.getProductSn()));
}
}

@ -906,5 +906,10 @@ public class MesPcnExtConstWords {
public static final String doHandleCurExecWorkOrder = "doHandleCurExecWorkOrder";
public static final String execStateModule = "execStateModule";
public static final String JX_PROD_SHIFT_DATA = "JX_PROD_SHIFT_DATA";
public static final String JX_SN_PROCESSING_MODULE = "JX_SN_PROCESSING_MODULE";
public static final String JX_SN_PROCESSING_DATA = "JX_SN_PROCESSING_DATA";
}

Loading…
Cancel
Save