diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java index 662ace3..edc54a2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionPackageProgressService.java @@ -1,8 +1,9 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.station.function; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService; -import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.MesPackageNoGenerateStepService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.IMesPackageNoGenerateStepService; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageDataContext; +import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesProduceSnPrintModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseSwsService; import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.function.IFsmModuleFunctionService; @@ -12,9 +13,13 @@ 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 cn.estsh.i3plus.pojo.mes.model.StepResult; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; 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.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -24,6 +29,7 @@ import java.util.stream.Collectors; /** * @Description : 工位参数按钮事件接口实现【打包进度】 **/ +@Slf4j @Service public class MesFunctionPackageProgressService extends BaseSwsService implements IFsmModuleFunctionService { @@ -31,7 +37,7 @@ public class MesFunctionPackageProgressService extends BaseSwsService implements private IMesProductionCustomContextStepService productionCustomContextStepService; @Autowired - private MesPackageNoGenerateStepService packageNoGenerateStepService; + private IMesPackageNoGenerateStepService packageNoGenerateStepService; @Override public Object doCustomApiDispatch(StationRequestBean reqBean, StationResultBean resultBean, ButtonDynamicModel buttonDynamicModel) { @@ -69,11 +75,12 @@ public class MesFunctionPackageProgressService extends BaseSwsService implements resultMap.put(MesPcnExtConstWords.DATA, resultList); if (StringUtils.isEmpty(buttonDynamicModel.getFunctionValue())) return resultMap; - resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(buttonDynamicModel.getFunctionValue()); - resultMap.put(MesPcnExtConstWords.DATA_TYPE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT.getValue()); MesPackageDataContext packageDataContext = JSONObject.parseObject(buttonDynamicModel.getFunctionValue(), MesPackageDataContext.class); + + resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PICK.getValue()).scanInfo(packageDataContext.getPackageNo()); + if (null == packageDataContext) { return packResultMap(reqBean, resultBean, resultMap, String.format("生产线[%s]工位[%s]强制打包失败,参数异常!", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode())); @@ -97,13 +104,18 @@ public class MesFunctionPackageProgressService extends BaseSwsService implements } StepResult stepResult = StepResult.getSuccessComplete(); - doForcePrint(reqBean, resultBean, stepResult, packageDataContextList, packageDb); + try { + packageNoGenerateStepService.doForcePrint(reqBean, resultBean, stepResult, packageDataContextList, packageDb); + } catch (ImppBusiException e) { + stepResult.msg(e.getMessage()); + } catch (Exception e) { + stepResult.msg(e.getMessage()); + } if (!StringUtils.isEmpty(stepResult.getMsg())) { return packResultMap(reqBean, resultBean, resultMap, String.format("生产线[%s]工位[%s]强制打包失败,%s", reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), stepResult.getMsg())); } - // 保存打包数据 packageDataContextMap.remove(packageDataContext.getPartNo()); productionCustomContextStepService.dispatchPackageDataContext(reqBean, packageDataContextMap); @@ -121,11 +133,10 @@ public class MesFunctionPackageProgressService extends BaseSwsService implements return resultMap; } - private void doForcePrint(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List packageDataContextList, MesPackage packageDb) { - packageNoGenerateStepService.savePackageDb(reqBean, packageDb, packageDataContextList.size(), true); - List packageList = new ArrayList<>(); - packageList.add(packageDb); - packageNoGenerateStepService.execPrint(reqBean, resultBean, stepResult, packageDataContextList.get(0), null, null, packageList, true); + private void doForcePrint(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, + List packageDataContextList, MesPackage packageDb, Map packageDataContextMap) { + + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java index 134e8f8..0ff1e78 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesPackageNoGenerateStepService.java @@ -7,6 +7,8 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepServi 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.apiservice.serviceimpl.print.IPrintTemplateStrategyService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method.IMesPackageNoGenerateStepService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageDataContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageRuleContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext; @@ -50,7 +52,7 @@ import java.util.stream.Collectors; **/ @Slf4j @Service("mesPackageNoGenerateStepService") -public class MesPackageNoGenerateStepService extends BaseStepService { +public class MesPackageNoGenerateStepService extends BaseStepService implements IMesPackageNoGenerateStepService { @Autowired private IMesProductionProcessContextStepService productionProcessContextStepService; @@ -177,7 +179,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService { //判断存在包装信息则进行打印 if (!CollectionUtils.isEmpty(stepResult.getDataCollection())) { - execPrint(reqBean, resultBean, stepResult, packageRuleContext, labelTemplate, strategyService, (List) stepResult.getDataCollection(), false); + doPrintPackageNo(reqBean, resultBean, stepResult, packageRuleContext, labelTemplate, strategyService, (List) stepResult.getDataCollection(), false); } } @@ -301,7 +303,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService { //判断当前是否满包 Boolean isSealed = curQty >= packageRuleContext.getPackSpecQty().intValue(); //判断包装条码是否存在ID进行新增或者更新操作, 如果满足标包则标记满包状态跟打印状态 - packageDb = savePackageDb(reqBean, packageDb, curQty, isSealed); + packageDb = savePackageDb(reqBean, packageDb, curQty, isSealed, true); //判断统计方式,是否生成包装明细信息, 返回当前未满包的包装条码明细数据 List resultList = insertPackageDetailAndBackUnSealedResultList(reqBean, packageRuleContext, packageDb, productSnList2Cur, isSealed); @@ -321,6 +323,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService { } //根据ID查询包装信息 + @Override public MesPackage getMesPackage(String organizeCode, Long packageId) { return packageExtService.getMesPackage(organizeCode, packageId); } //生成包装条码信息 @@ -350,7 +353,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService { } //判断包装条码是否存在ID进行新增或者更新操作, 如果满足标包则标记满包状态跟打印状态 - public MesPackage savePackageDb(StationRequestBean reqBean, MesPackage packageDb, Integer curQty, Boolean isSealed) { + private MesPackage savePackageDb(StationRequestBean reqBean, MesPackage packageDb, Integer curQty, Boolean isSealed, Boolean isSave) { if (!StringUtils.isEmpty(packageDb.getId())) { //下面直接根据ID进行修改, 所以此处置为游离态 @@ -365,8 +368,16 @@ public class MesPackageNoGenerateStepService extends BaseStepService { packageDb.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue()); } + if (!isSave) return packageDb; + if (StringUtils.isEmpty(packageDb.getId())) return packageRepository.insert(packageDb); + savePackageDbById(reqBean, packageDb); + + return packageDb; + } + + private void savePackageDbById(StationRequestBean reqBean, MesPackage packageDb) { packageRepository.updateByPropertiesNoSync( new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.ID}, new Object[]{reqBean.getOrganizeCode(), packageDb.getId()}, @@ -374,8 +385,6 @@ public class MesPackageNoGenerateStepService extends BaseStepService { MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME}, new Object[]{packageDb.getQty(), packageDb.getIsSealed(), packageDb.getPrintStatus(), packageDb.getLotNo(), packageDb.getModifyUser(), packageDb.getModifyDatetime(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY}); - - return packageDb; } //判断统计方式,是否生成包装明细信息, 返回当前未满包的包装条码明细数据 @@ -443,7 +452,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService { return null; } - public void execPrint(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, + private void doPrintPackageNo(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, MesPackageRuleContext packageRuleContext, MesLabelTemplate labelTemplate, IPrintTemplateStrategyService strategyService, List packageList, Boolean isAsyn) { if (null == strategyService) { //查询模版信息 @@ -452,10 +461,7 @@ public class MesPackageNoGenerateStepService extends BaseStepService { } if (null == strategyService) { if (!isAsyn) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("零件编码[%s]未配置有效的包装条码模版[%s]信息!", packageRuleContext.getPartNo(), packageRuleContext.getPackageTemplate())); - else { - stepResult.msg(String.format("零件编码[%s]未配置有效的包装条码模版[%s]信息!", packageRuleContext.getPartNo(), packageRuleContext.getPackageTemplate())); - return; - } + else MesPcnException.throwBusiException("零件编码[%s]未配置有效的包装条码模版[%s]信息!", packageRuleContext.getPartNo(), packageRuleContext.getPackageTemplate()); } MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel(); @@ -472,20 +478,14 @@ public class MesPackageNoGenerateStepService extends BaseStepService { printModel = strategyService.execute(null, mesProduceSnPrintModel, null, stepResult, reqBean, true); } catch (ImppBusiException e) { if (!isAsyn) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), e.getErrorDetail()); - else { - stepResult.msg(e.getErrorDetail()); - return; - } + else MesPcnException.throwBusiException(e.getErrorDetail()); } catch (Exception e) { String webMsg = String.format("零件编码[%s]包装条码模版[%s]打印包装条码%s", packageRuleContext.getPartNo(), packageRuleContext.getPackageTemplate(), fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode())); if (!isAsyn) { 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(); - } else { - stepResult.msg(webMsg); - return; - } + } else MesPcnException.throwBusiException("%s %s!", webMsg, e.toString()); } if (CollectionUtils.isEmpty(printModel.getPrintContextList())) return; @@ -502,4 +502,13 @@ public class MesPackageNoGenerateStepService extends BaseStepService { printedSnLogRepository.saveAll(printModel.getMesPrintedSnLogList()); } + @Override + public void doForcePrint(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List packageDataContextList, MesPackage packageDb) { + savePackageDb(reqBean, packageDb, packageDataContextList.size(), true, false); + List packageList = new ArrayList<>(); + packageList.add(packageDb); + doPrintPackageNo(reqBean, resultBean, stepResult, packageDataContextList.get(0), null, null, packageList, true); + savePackageDbById(reqBean, packageDb); + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java new file mode 100644 index 0000000..ac30557 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/method/IMesPackageNoGenerateStepService.java @@ -0,0 +1,20 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method; + +import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesPackageDataContext; +import cn.estsh.i3plus.pojo.mes.bean.MesPackage; +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 org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +public interface IMesPackageNoGenerateStepService { + + MesPackage getMesPackage(String organizeCode, Long packageId); + + @Transactional(propagation = Propagation.NESTED, rollbackFor = {ImppBusiException.class, Exception.class}) + void doForcePrint(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List packageDataContextList, MesPackage packageDb); +}