jx 条码下线】

dev
王杰 2 years ago
parent bd24b50100
commit 8c01ab411c

@ -138,4 +138,12 @@ public interface IJxProdBusiStrategyService {
@ApiOperation(value = "验证流程工序", notes = "验证流程工序")
default StepResult checkSnProcessIsValid(JxProdBusiStrategyParamsBuilder params, StepResult stepResult) { return stepResult; }
/**
*
* @param params
* @return
*/
@ApiOperation(value = "验证班次启动", notes = "验证班次启动")
default StepResult checkShiftStart(JxProdBusiStrategyParamsBuilder params) {return StepResult.getSuccessComplete(); }
}

@ -1,6 +1,9 @@
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.IProduceSnTravelExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.ISxOutPutStatisticsTravelService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnMcRecordService;
@ -12,8 +15,11 @@ 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.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.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 lombok.extern.slf4j.Slf4j;
@ -66,6 +72,36 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
@Autowired
private IFsmRouteDataService fsmRouteDataService;
@Autowired
private IWorkCenterExtService workCenterExtService;
@Autowired
private IShiftExtService shiftExtService;
@Autowired
private IShiftProdCenterRecordService shiftProdCenterRecordService;
@Autowired
private ISxWorkOrderExtService workOrderExtService;
@Autowired
private MesWorkOrderExtRepository workOrderExtRepository;
@Autowired
private IOutPutStatisticsService outPutStatisticsService;
@Autowired
private MesOutPutStatisticsRepository outPutStatisticsRepository;
@Autowired
private ISxOutPutStatisticsTravelService outPutStatisticsTravelService;
@Autowired
private SxProductOffLineRepository productOffLineRepository;
@Autowired
private IPartExtService partExtService;
@Override
public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) {
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) queryBusiData4Mc(params.manageCode(params.getScanInfo()));
@ -529,11 +565,15 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
if (StringUtils.isEmpty(produceSnExt.getProcessCode()) && routeProcessList.get(0).getIsNecessary() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息未经过首道工序[%s],操作失败!", params.getScanName(), params.getScanInfo(), routeProcessList.get(0).getProcessCode()));
Optional<MesRouteProcess> completeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(reqBean.getProcessCode()))).findFirst();
if (null == completeProcessOp || !completeProcessOp.isPresent())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息已经过当前工序[%s],操作失败!", params.getScanName(), params.getScanInfo(), reqBean.getProcessCode()));
List<MesRouteProcess> unCompleteProcessList;
if (StringUtils.isEmpty(produceSnExt.getProcessCode())) unCompleteProcessList = routeProcessList;
else {
Optional<MesRouteProcess> completeProcessOp = routeProcessList.stream().filter(o -> (null != o && o.getProcessCode().equals(produceSnExt.getProcessCode()))).findFirst();
if (null == completeProcessOp || !completeProcessOp.isPresent())
return stepResult.isCompleted(false).msg(String.format("%s[%s]对应的产品条码信息已经过当前工序[%s],操作失败!", params.getScanName(), params.getScanInfo(), reqBean.getProcessCode()));
List<MesRouteProcess> unCompleteProcessList = routeProcessList.stream().filter(o -> (null != o && o.getSeq().compareTo(completeProcessOp.get().getSeq()) > 0)).collect(Collectors.toList());
unCompleteProcessList = routeProcessList.stream().filter(o -> (null != o && o.getSeq().compareTo(completeProcessOp.get().getSeq()) > 0)).collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(unCompleteProcessList)) return stepResult;
@ -547,7 +587,156 @@ public class JxProdBusiStrategyCommonService implements IJxProdBusiStrategyServi
}
@Override
public StepResult checkShiftStart(JxProdBusiStrategyParamsBuilder params) {
StepResult stepResult = StepResult.getNonComplete();
MesWorkCenterExt workCenterExtDb = workCenterExtService.getWorkCenterExtByWorkCenterCode(params.getOrganizeCode(), params.getWorkCenterCode());
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());
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());
if (StringUtils.isEmpty(workTime) || !workTime.equals(workCenterExtDb.getWorkTime())) return stepResult.msg(String.format("生产线[%s]需要重新启动班次,操作失败", params.getWorkCenterCode()));
params.workCenterExtDb(workCenterExtDb);
return stepResult.isCompleted(true);
}
private void getPartDb(JxProdBusiStrategyParamsBuilder params) {
MesPart partDb = partExtService.getPart(params.getOrganizeCode(), params.getOrderModel().getPartNo());
if (null != partDb) params.setPartDb(partDb);
}
@Override
public StepResult execLineOff(JxProdBusiStrategyParamsBuilder params) {
return null;
StepResult stepResult = checkShiftStart(params);
if (!stepResult.isCompleted()) return stepResult;
getPartDb(params);
saveWorkOrder4LineOff(params);
saveProduceSnLineOff(params);
insertProduceSnTravel(params);
saveOutPutStatistics(params);
doProductOffLine(params);
return stepResult;
}
private void saveWorkOrder4LineOff(JxProdBusiStrategyParamsBuilder params) {
MesWorkOrderExt workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(params.getOrganizeCode(), params.getOrderModel().getOrderNo());
workOrderExt.setCompleteQty(StringUtils.isEmpty(workOrderExt.getCompleteQty()) ? new Double(1) : MathOperation.add(workOrderExt.getCompleteQty(), new Double(1)));
if (MathOperation.compareTo(workOrderExt.getCompleteQty(), workOrderExt.getQty()) == 0) workOrderExt.setWorkOrderStatus(MesPcnExtEnumUtil.WORK_ORDER_STATUS.CLOSE.getValue());
workOrderExt.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
ConvertBean.serviceModelUpdate(workOrderExt, params.getUserInfo());
new ConvertBeanExt(workOrderExt).convertBean(workOrderExt);
workOrderExtRepository.save(workOrderExt);
}
private void saveProduceSnLineOff(JxProdBusiStrategyParamsBuilder params) {
MesProduceSnExt produceSnExtDb = queryProduceSnInfo(params).getProduceSnExtDb();
produceSnExtDb.setSnStatus(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue());
ConvertBean.serviceModelUpdate(produceSnExtDb, params.getUserInfo());
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) packProduceSnLineOff(params, produceSnExtDb);
produceSnExtService.doPackSnExtProcess((StationRequestBean) params.getObj(), produceSnExtDb);
produceSnExtDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
new ConvertBeanExt(produceSnExtDb).convertBean(produceSnExtDb);
params.produceSnExtDb(produceSnExtRepository.save(produceSnExtDb));
}
private void packProduceSnLineOff(JxProdBusiStrategyParamsBuilder params, MesProduceSnExt produceSnExtDb) {
produceSnExtDb.setOutWorkCenterTime(produceSnExtDb.getModifyDatetime());
produceSnExtDb.setWorkTime(params.getWorkCenterExtDb().getWorkTime());
produceSnExtDb.setShiftCode(params.getWorkCenterExtDb().getShiftCode());
produceSnExtDb.setLotNo(produceSnExtDb.getWorkTime());
}
private void saveOutPutStatistics(JxProdBusiStrategyParamsBuilder params) {
MesOutPutStatistics outPutStatistics = outPutStatisticsService.getOutPutStatisticsByTimeAndOrderNo(
params.getOrganizeCode(), params.getOrderModel().getOrderNo(), params.getWorkCenterExtDb().getWorkTime(), params.getWorkCenterExtDb().getShiftCode());
if (null == outPutStatistics) {
outPutStatistics = new MesOutPutStatistics();
outPutStatistics.setWorkCenterCode(params.getWorkCenterCode());
outPutStatistics.setWorkOrderNo(params.getOrderModel().getOrderNo());
outPutStatistics.setPartNo(params.getOrderModel().getPartNo());
outPutStatistics.setPartNameRdd(params.getOrderModel().getPartNameRdd());
outPutStatistics.setShiftCode(params.getWorkCenterExtDb().getShiftCode());
outPutStatistics.setWorkTime(params.getWorkCenterExtDb().getWorkTime());
outPutStatistics.setOrderStartTime(params.getOrderModel().getStartTime());
outPutStatistics.setQty(new Double(1));
outPutStatistics.setPlanQty(params.getOrderModel().getQty());
outPutStatistics.setRemakeQty(new Double(0));
outPutStatistics.setWorkOrderType(params.getOrderModel().getWorkOrderType());
outPutStatistics.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
outPutStatistics.setOrganizeCode(params.getOrganizeCode());
ConvertBean.serviceModelInitialize(outPutStatistics, params.getUserInfo());
outPutStatistics.setStartTime(outPutStatistics.getModifyDatetime());
outPutStatistics.setEndTime(outPutStatistics.getStartTime());
outPutStatistics = outPutStatisticsRepository.insert(outPutStatistics);
} else {
outPutStatistics.setQty(MathOperation.add(outPutStatistics.getQty(), new Double(1)));
ConvertBean.serviceModelUpdate(outPutStatistics, params.getUserInfo());
outPutStatistics.setEndTime(outPutStatistics.getModifyDatetime());
outPutStatistics.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
outPutStatistics = outPutStatisticsRepository.save(outPutStatistics);
}
outPutStatisticsTravelService.insertOutPutStatisticsTravel(outPutStatistics);
}
private void doProductOffLine(JxProdBusiStrategyParamsBuilder params) {
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) return;
SxProductOffLine productOffLine = new SxProductOffLine();
productOffLine.setWorkOrderNo(params.getOrderModel().getOrderNo());
productOffLine.setPackageNo(params.getProductSn());
productOffLine.setSerialNumber(params.getSerialNumber());
productOffLine.setPartNo(params.getOrderModel().getPartNo());
productOffLine.setPartName(params.getOrderModel().getPartNameRdd());
productOffLine.setQty(new Double(1));
productOffLine.setLotNo(params.getWorkCenterExtDb().getWorkTime());
productOffLine.setShiftCode(params.getWorkCenterExtDb().getShiftCode());
productOffLine.setWorkCenterCode(params.getWorkCenterCode());
productOffLine.setErpWarehouse(params.getOrderModel().getErpWarehouse());
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() != params.getOrderModel().getWorkOrderType()) productOffLine.setSnType(params.getProduceSnExtDb().getSnType());
else productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.REWORK_SN.getValue());
if (null != params.getPartDb()) {
productOffLine.setUnit(params.getPartDb().getUnit());
productOffLine.setProdType(getProdType(params.getPartDb().getCategoryCode1()));
}
productOffLine.setSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
productOffLine.setOrganizeCode(params.getOrganizeCode());
ConvertBean.serviceModelInitialize(productOffLine, params.getUserInfo());
productOffLineRepository.insert(productOffLine);
}
private Integer getProdType(String categoryCode1) {
try {
if (StringUtils.isEmpty(categoryCode1)) return null;
else return Integer.valueOf(categoryCode1);
} catch (NumberFormatException e) {
return null;
}
}
}

@ -1,10 +1,15 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.jx;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnRepairService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBusiStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnRepair;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.jx.JxProdBusiStrategyParamsBuilder;
import cn.estsh.i3plus.ext.mes.pcn.pojo.repository.MesProduceSnRepairRepository;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtEnumUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
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 org.springframework.util.StringUtils;
@ -17,6 +22,12 @@ import org.springframework.util.StringUtils;
@Service
public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyService {
@Autowired
private IProduceSnRepairService produceSnRepairService;
@Autowired
private MesProduceSnRepairRepository produceSnRepairRepository;
@Override
public StepResult checkLineOn(JxProdBusiStrategyParamsBuilder params) {
@ -69,7 +80,25 @@ public class JxProdBusiStrategyRepairService implements IJxProdBusiStrategyServi
@Override
public StepResult execLineOff(JxProdBusiStrategyParamsBuilder params) {
return null;
StepResult stepResult = ((IJxProdBusiStrategyService) params.getStrategyService()).execLineOff(params);
if (!stepResult.isCompleted()) return stepResult;
saveProduceSnRepair(params);
return stepResult;
}
private void saveProduceSnRepair(JxProdBusiStrategyParamsBuilder params) {
MesProduceSnRepair produceSnRepairDb = produceSnRepairService.getProduceSnRepairBySnAndOrderNo(params.getOrganizeCode(), params.getProduceSnExtDb().getSerialNumber(), params.getOrderModel().getOrderNo());
ConvertBean.serviceModelUpdate(produceSnRepairDb, params.getUserInfo());
produceSnRepairDb.setOutWorkCenterTime(produceSnRepairDb.getModifyDatetime());
produceSnRepairDb.setWorkTime(params.getWorkCenterExtDb().getWorkTime());
produceSnRepairDb.setShiftCode(params.getWorkCenterExtDb().getShiftCode());
produceSnRepairDb.setLotNo(produceSnRepairDb.getWorkTime());
produceSnRepairDb.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
produceSnRepairRepository.save(produceSnRepairDb);
}
}

@ -277,7 +277,7 @@ public class JxProdBusiStrategyStandardService implements IJxProdBusiStrategySer
@Override
public StepResult execLineOff(JxProdBusiStrategyParamsBuilder params) {
return null;
return ((IJxProdBusiStrategyService) params.getStrategyService()).execLineOff(params);
}
}

@ -3,7 +3,6 @@ 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.IWorkOrderProcessBomService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProdBindRecordExtService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.station.jx.JxSnLineOnModuleService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProcessBom;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProdBindRecordExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt;
@ -15,6 +14,7 @@ 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.IFsmCommonService;
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.BaseStepService;
import cn.estsh.i3plus.mes.pcn.util.LocaleUtil;
@ -58,9 +58,6 @@ import java.util.stream.Collectors;
public class JxBindKeyPartStepService extends BaseStepService {
@Autowired
private JxSnLineOnModuleService snLineOnModuleService;
@Autowired
private ISxWorkOrderExtService workOrderExtService;
@Autowired
@ -81,7 +78,8 @@ public class JxBindKeyPartStepService extends BaseStepService {
@Autowired
private IFsmCommonService fsmCommonService;
private static final String METHOD = "doHandleBindKeyPartData";
@Autowired
private IFsmRouteDataService routeDataService;
private static final String VALIDATION_CODE = "VALIDATION_CODE";
private static final String SHOW_KPSN_RULE = "SHOW_KPSN_RULE";
@ -104,7 +102,7 @@ public class JxBindKeyPartStepService extends BaseStepService {
if (!StringUtils.isEmpty(doHandleBindKeyPartData(reqBean, resultBean, moduleService, method, 1, MesPcnExtConstWords.BIND_KEY_PART, null))) return stepResult;
String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean);
String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean, moduleService);
WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo);
@ -160,7 +158,7 @@ public class JxBindKeyPartStepService extends BaseStepService {
List<MesKpsnRule> kpsnRuleList = getKpsnRuleList(reqBean, pbList);
String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean);
String curExecWorkOrderNo = getCurExecWorkOrderNo(reqBean, resultBean, moduleService);
WorkOrderExtModel orderModel = getWorkOrderExtModel(reqBean, resultBean, curExecWorkOrderNo);
@ -467,10 +465,10 @@ public class JxBindKeyPartStepService extends BaseStepService {
private Method getModuleServiceMethod(StationRequestBean reqBean, StationResultBean resultBean, Object moduleService) {
Method method = null;
try {
method = moduleService.getClass().getMethod(METHOD, reqBean.getClass(), Integer.class, String.class, String.class);
method = moduleService.getClass().getMethod(MesPcnExtConstWords.doHandleBindKeyPartData, reqBean.getClass(), Integer.class, String.class, String.class);
} catch (Exception e) {
}
if (null == method) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("展示组件缺失[%s]方法", METHOD));
if (null == method) execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("展示组件缺失[%s]方法", MesPcnExtConstWords.doHandleBindKeyPartData));
return method;
}
@ -479,13 +477,22 @@ public class JxBindKeyPartStepService extends BaseStepService {
try {
obj = method.invoke(moduleService, reqBean, flag, item, data);
} catch (Exception e) {
execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("参数ITEM[%s]FLAG[%s]调用展示组件[%s]方法执行异常:[%s]", item, flag, METHOD, e.getMessage()));
execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("参数ITEM[%s]FLAG[%s]调用展示组件[%s]方法执行异常:[%s]", item, flag, MesPcnExtConstWords.doHandleBindKeyPartData, e.getMessage()));
}
return obj;
}
private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) {
String curExecWorkOrderNo = (String) snLineOnModuleService.doHandleCurExecWorkOrder(reqBean, 1, null);
private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, Object moduleService) {
String curExecWorkOrderNo = null;
try {
Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.doHandleCurExecWorkOrder, reqBean.getClass(), Integer.class, String.class);
method.setAccessible(true);
curExecWorkOrderNo = (String) method.invoke(moduleService, reqBean, 1, null);
} catch (Exception e) {
execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]参数[flag=1,value=null]出现异常:%s", MesPcnExtConstWords.doHandleCurExecWorkOrder, e.getMessage()));
}
if (StringUtils.isEmpty(curExecWorkOrderNo)) execExpSendMsgAndThrowEx(reqBean, resultBean, "此前操作的工单号已丢失,请选择启动状态的生产工单!");
return curExecWorkOrderNo;
}
@ -504,6 +511,5 @@ public class JxBindKeyPartStepService extends BaseStepService {
return orderModel;
}
}

@ -43,10 +43,6 @@ public class JxInitOrderStepService extends BaseStepService {
@Autowired
private ISxWorkOrderExtService workOrderExtService;
private final String doHandleSelectWorkOrderNo = "doHandleSelectWorkOrderNo";
private final String doHandleCurExecWorkOrder = "doHandleCurExecWorkOrder";
private final String execStateModule = "execStateModule";
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -56,10 +52,10 @@ public class JxInitOrderStepService extends BaseStepService {
StationResultBean resultBean = new StationResultBean();
String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, doHandleSelectWorkOrderNo, 1, null);
String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, doHandleCurExecWorkOrder, 1, null);
String selectWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 1, null);
String curExecWorkOrderNo = (String) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 1, null);
if (!StringUtils.isEmpty(selectWorkOrderNo)) doHandleModuleObjectMethod(reqBean, resultBean, doHandleSelectWorkOrderNo, 3, null);
if (!StringUtils.isEmpty(selectWorkOrderNo)) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleSelectWorkOrderNo, 3, null);
if (!StringUtils.isEmpty(selectWorkOrderNo) && !StringUtils.isEmpty(curExecWorkOrderNo)) {
if (selectWorkOrderNo.equals(curExecWorkOrderNo)) selectWorkOrderNo = null;
else curExecWorkOrderNo = null;
@ -88,7 +84,7 @@ public class JxInitOrderStepService extends BaseStepService {
}
private void doCacheCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, String selectWorkOrderNo) {
Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, doHandleCurExecWorkOrder, 2, selectWorkOrderNo);
Boolean flag = (Boolean) doHandleModuleObjectMethod(reqBean, resultBean, MesPcnExtConstWords.doHandleCurExecWorkOrder, 2, selectWorkOrderNo);
if (!flag) execNonCompleteAndSendMsg(reqBean, resultBean, stepResult, String.format("选择的工单号[%s]初始化失败!", selectWorkOrderNo));
else {
execStateModule(reqBean, resultBean);
@ -122,7 +118,7 @@ public class JxInitOrderStepService extends BaseStepService {
IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT));
Method method = moduleService.getClass().getDeclaredMethod(methodStr, reqBean.getClass(), Integer.class, String.class);
method.setAccessible(true);
return method.invoke(this, reqBean, flag, value);
return method.invoke(moduleService, reqBean, flag, value);
} catch (Exception e) {
execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]参数[flag=%s,value=%s]出现异常:%s", methodStr, flag, value, e.getMessage()));
return null;
@ -133,11 +129,11 @@ public class JxInitOrderStepService extends BaseStepService {
if (CollectionUtils.isEmpty(reqBean.getWcpcMap())) reqBean.setWcpcMap(routeDataService.doHandleFsmWcpcMapData(reqBean));
try {
IModuleService moduleService = (IModuleService) SpringContextsUtil.getBean(reqBean.getWcpcMap().get(MesPcnConstWords.MODULE_OBJECT));
Method method = moduleService.getClass().getDeclaredMethod(execStateModule, reqBean.getClass(), List.class, Map.class);
Method method = moduleService.getClass().getDeclaredMethod(MesPcnExtConstWords.execStateModule, reqBean.getClass(), List.class, Map.class);
method.setAccessible(true);
return method.invoke(this, reqBean, null, null);
return method.invoke(moduleService, reqBean, null, null);
} catch (Exception e) {
execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]出现异常:%s", execStateModule, e.getMessage()));
execExpSendMsgAndThrowEx(reqBean, resultBean, String.format("执行展示组件内部方法[%s]出现异常:%s", MesPcnExtConstWords.execStateModule, e.getMessage()));
return null;
}
}

@ -106,6 +106,7 @@ public class JxSnLineOffCheckPsStepService extends BaseStepService {
.location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())
.routeProcess(reqBean.getRouteCode(), reqBean.getProcessCode())
.orderModel(orderModel)
.obj(reqBean)
.build();
StepResult result = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz())).checkLineOff(params);

@ -9,7 +9,6 @@ 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;
@ -22,7 +21,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description : 线
* @Description : 线
* @Reference :
* @Author : wangjie
* @CreateDate : 2019-07-11
@ -53,7 +52,7 @@ public class JxSnLineOffCompleteStepService extends BaseStepService {
log.info("工厂{}生产线{}工位{}: --- STEP EXECUTE --- JxSnLineOffCompleteStepService --- SUCCESS --- ", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode());
return stepResult;
return execSuccessCompleteAndSendMsgReturn(reqBean, resultBean, stepResult, String.format("产品条码[%s]下线完成!", reqBean.getProductSn()));
}
private String getCurExecWorkOrderNo(StationRequestBean reqBean, StationResultBean resultBean) {
@ -78,18 +77,21 @@ public class JxSnLineOffCompleteStepService extends BaseStepService {
private StepResult execLineOff(StationRequestBean reqBean, StationResultBean resultBean, WorkOrderExtModel orderModel) {
StepResult result = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.valueOfClazz(orderModel.getWorkOrderType()))).execLineOff(
StepResult stepResult = ((IJxProdBusiStrategyService) SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.valueOfClazz(orderModel.getWorkOrderType()))).execLineOff(
new JxProdBusiStrategyParamsBuilder.builder()
.organizeCode(reqBean.getOrganizeCode())
.userInfo(reqBean.getUserInfo())
.location(reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())
.serialNumber(reqBean.getSerialNumber())
.productSn(reqBean.getProductSn())
.orderModel(orderModel)
.obj(reqBean)
.strategyService(SpringContextsUtil.getBean(MesPcnExtEnumUtil.JX_PROD_BUSI_STRATEGY.COMMON.getClazz()))
.build());
this.sendMessage(reqBean, resultBean, result.getMsg(), MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, result.isCompleted() ? MesPcnEnumUtil.STATION_DATA_TYPE.TEXT : MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
if (!stepResult.isCompleted()) execExpSendMsgAndThrowEx(reqBean, resultBean, stepResult.getMsg());
return result;
return stepResult;
}
}

@ -163,6 +163,11 @@ public class JxProdBusiStrategyParamsBuilder implements Serializable {
return this;
}
public JxProdBusiStrategyParamsBuilder workCenterExtDb(MesWorkCenterExt workCenterExtDb) {
this.workCenterExtDb = workCenterExtDb;
return this;
}
public JxProdBusiStrategyParamsBuilder manageCode() {
this.manageCode = null;
return this;

@ -901,5 +901,10 @@ public class MesPcnExtConstWords {
public static final String JX_SN_LINE_OFF_MODULE = "JX_SN_LINE_OFF_MODULE";
public static final String JX_SN_LINE_OFF_DATA = "JX_SN_LINE_OFF_DATA";
public static final String doHandleBindKeyPartData = "doHandleBindKeyPartData";
public static final String doHandleSelectWorkOrderNo = "doHandleSelectWorkOrderNo";
public static final String doHandleCurExecWorkOrder = "doHandleCurExecWorkOrder";
public static final String execStateModule = "execStateModule";
}

Loading…
Cancel
Save