diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java index 6a95442..6a88e8c 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderService.java @@ -64,6 +64,9 @@ public interface IMesWorkOrderService { @ApiOperation("排序汇报job") void doMesWorkOrderSortReport(String organizeCode, Integer pageSize, String userName); + @ApiOperation("非排序汇报job") + void doMesWorkOrderNoSortReport(String organizeCode, Integer pageSize, String userName); + @ApiOperation("根据工单查询工单零件信息") List findMesWorkOrderPartByOrderNo(String organizeCode,List workOrderNoList); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProductionRecordDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProductionRecordDao.java index d5ecaab..9d4e76b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProductionRecordDao.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesProductionRecordDao.java @@ -15,5 +15,5 @@ import java.util.List; public interface IMesProductionRecordDao { @ApiOperation("查询汇报的加工记录") - List findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize); + List findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize, List workCenterList); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java index a888b3c..6696fc0 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java @@ -13,10 +13,7 @@ import org.springframework.util.StringUtils; import javax.persistence.EntityManager; import javax.persistence.Query; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.StringJoiner; +import java.util.*; /** * @Description : 批量新增数据拼接 @@ -54,7 +51,7 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao { public void insertMesRecyclablePackageBindingLogLimit(List logList, String organizeCode) { - String fieldStr = "`id`,`create_date_time`,`create_user`,`description`,`is_deleted`,`is_valid`,`organize_code`,`remark`,`system_sync_date_time`,`system_sync_status`,`hanger_code`,`hanger_package_sn`,`hanger_rule_code`,`lot_number`,`modify_type`,`order_code`,`package_sn`,`part_name`,`part_no`,`product_sn`,`qty`,`status`,`total_qty`,`type_code`"; + String fieldStr = "id,create_date_time,create_user,description,is_deleted,is_valid,organize_code,remark,system_sync_date_time,system_sync_status,hanger_code,hanger_package_sn,hanger_rule_code,lot_number,modify_type,order_code,package_sn,part_name,part_no,product_sn,qty,status,total_qty,type_code"; //拼接字段 StringBuilder fieldBuilder = new StringBuilder(); String[] splitField = fieldStr.split(MesPcnExtConstWords.COMMA); @@ -66,11 +63,9 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao { if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) insertStr.append(MesPcnExtConstWords.E_UNDERLINE).append(organizeCode.toLowerCase()); insertStr.append("(").append(fieldStr).append(") VALUES( "); //sql组装 - Map parameterMap = new HashMap<>(); - StringBuilder builder = new StringBuilder(); for (int i = MesPcnExtConstWords.ZERO; i < logList.size(); i++) { + Map parameterMap = new LinkedHashMap<>(); int j = MesPcnExtConstWords.ZERO; - builder.append(insertStr).append(fieldBuilder.substring(MesPcnExtConstWords.ZERO, fieldBuilder.lastIndexOf(MesPcnExtConstWords.COMMA) - MesPcnExtConstWords.ONE).replaceAll("%s", String.valueOf(i))).append(" ); "); parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), snowflakeIdMaker.nextId()); parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getCreateDatetime()); parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getCreateUser()); @@ -95,12 +90,12 @@ public class MesInsertBatchDaoImpl implements IMesInsertBatchDao { parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getStatus()); parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getTotalQty()); parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j]).add(String.valueOf(i)).toString(), logList.get(i).getTypeCode()); + Query queryObject = entityManager.createNativeQuery(insertStr + fieldBuilder.substring(MesPcnExtConstWords.ZERO, fieldBuilder.lastIndexOf(MesPcnExtConstWords.COMMA) - MesPcnExtConstWords.ONE).replaceAll("%s", String.valueOf(i)) + " ); "); + //数据填充 + for (String key : parameterMap.keySet()) { + queryObject.setParameter(key, parameterMap.get(key)); + } + queryObject.executeUpdate(); } - Query queryObject = entityManager.createNativeQuery(builder.toString()); - //数据填充 - for (String key : parameterMap.keySet()) { - queryObject.setParameter(key, parameterMap.get(key)); - } - queryObject.executeUpdate(); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProductionRecordImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProductionRecordImpl.java index 0818163..e0af0cf 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProductionRecordImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesProductionRecordImpl.java @@ -8,6 +8,7 @@ import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import groovy.util.logging.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.persistence.EntityManager; import javax.persistence.Query; @@ -31,12 +32,15 @@ public class MesProductionRecordImpl implements IMesProductionRecordDao { private EntityManager entityManager; @Override - public List findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize) { + public List findMesProductionRecordNoReport(String organizeCode, Integer workOrderType, Integer pageSize, List workCenterList) { StringBuilder hql = new StringBuilder(); hql.append(" select record from MesProductionRecord record left join MesWorkCenter center on record.workCenterCode = center.workCenterCode where 1=1"); hql.append(" and record.organizeCode = :organizeCode and record.isValid = :isValid and record.isDeleted = :isDeleted "); hql.append(" and center.organizeCode = :organizeCode and center.isValid = :isValid and center.isDeleted = :isDeleted "); hql.append(" and center.centerType = :centerType and record.reportStatus in (:reportStatus) and record.reportType != :reportType "); + if (!CollectionUtils.isEmpty(workCenterList)) { + hql.append(" and record.workCenterCode not in (:workCenterList)"); + } hql.append(" order by record.reportStatus asc,record.createDatetime asc "); Query hqlQuery = entityManager.createQuery(hql.toString(), MesProductionRecord.class); hqlQuery.setParameter("organizeCode", organizeCode); @@ -45,6 +49,9 @@ public class MesProductionRecordImpl implements IMesProductionRecordDao { hqlQuery.setParameter("centerType", workOrderType); hqlQuery.setParameter("reportType", MesExtEnumUtil.MES_REPORT_TYPE.NO_REPORT.getValue()); hqlQuery.setParameter("reportStatus", Stream.of(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue()).collect(Collectors.toList())); + if (!CollectionUtils.isEmpty(workCenterList)) { + hqlQuery.setParameter("workCenterList",workCenterList); + } hqlQuery.setFirstResult(MesPcnExtConstWords.ZERO).setMaxResults(Objects.isNull(pageSize) ? MesPcnExtConstWords.ONE_HUNDRED : pageSize); return hqlQuery.getResultList(); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProductReportJob.java similarity index 66% rename from modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java rename to modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProductReportJob.java index 3ea7347..dbeb440 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesProductReportJob.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel; import cn.estsh.impp.framework.boot.init.ApplicationProperties; @@ -24,14 +25,14 @@ import java.util.List; @Slf4j @DisallowConcurrentExecution @Component -@ApiOperation("排序报工job") -public class MesReportSortJob extends BaseMesScheduleJob { +@ApiOperation("MES汇报报工job") +public class MesProductReportJob extends BaseMesScheduleJob { @Autowired private IMesWorkOrderService workOrderService; - public MesReportSortJob() { - super(MesReportSortJob.class, "排序报工job"); + public MesProductReportJob() { + super(MesProductReportJob.class, "MES汇报报工job"); } @Override @@ -39,14 +40,24 @@ public class MesReportSortJob extends BaseMesScheduleJob { List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); if (!CollectionUtils.isEmpty(wmsJobParamModelList)) { for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) { + //排序汇报 try { long startTime = System.currentTimeMillis(); - workOrderService.doMesWorkOrderSortReport(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job"); + workOrderService.doMesWorkOrderSortReport(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), MesPcnExtConstWords.JOB); long endTime = System.currentTimeMillis(); log.info("工厂{}排序报工job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); } catch (Exception e) { log.info("工厂{}排序报工job 执行失败{}", wmsJobParamModel.getOrganizeCode(), e); } + //非排序汇报 + try { + long startTime = System.currentTimeMillis(); + workOrderService.doMesWorkOrderNoSortReport(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), MesPcnExtConstWords.JOB); + long endTime = System.currentTimeMillis(); + log.info("工厂{}非排序报工JOB --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); + } catch (Exception e) { + log.info("工厂{}非排序报工JOB 执行失败{}", wmsJobParamModel.getOrganizeCode(), e); + } } }else{ log.info("排序报工job 参数不能为空"); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index 26a5b45..c994a8f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -266,8 +266,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } private List getMesPackingDefineDetails(String organizeCode, String packCode) { - DdlPackBean ddlPackBean; - ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean); List defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean); if (CollectionUtils.isEmpty(defineDetails)) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index d95016c..b83fd58 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -206,7 +206,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService //查询发运单信息 发运跳过 DdlPackBean orderManagementPackBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(), "shippingCode", orderManagementPackBean); - DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean); +// DdlPreparedPack.getNumberSmallerPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", orderManagementPackBean); MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(orderManagementPackBean); if (StringUtils.isEmpty(orderManagement)) { throw new ImppBusiException(String.format("【%s】此发运单不存在,请检查数据!", shippingOrderManagement.getShippingCode())); @@ -247,15 +247,17 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService } DdlPreparedPack.getStringEqualPack(orderManagement.getShippingGroupCode(), "shippingGroupCode", orderManagementPackBean); DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.SHIPPING_ORDER_STATUS.CREATE.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPING.getValue(), MesExtEnumUtil.SHIPPING_ORDER_STATUS.PRINTED.getValue()).collect(Collectors.toList()), "status", orderManagementPackBean); - if (shippingOrderManagementRepository.isExitByHql(orderManagementPackBean)) { + DdlPreparedPack.getOrderBy("seq", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), orderManagementPackBean); + MesShippingOrderManagement shippingOrder = shippingOrderManagementRepository.getByProperty(orderManagementPackBean); + if (!Objects.isNull(shippingOrder)) { //1强过 if ((!Objects.isNull(shippingOrderManagement.getIsPass()) && Objects.equals(MesPcnExtConstWords.ONE, shippingOrderManagement.getIsPass()))) { orderManagement.setRemark(MesPcnExtConstWords.STRONGER_PASS); ConvertBean.serviceModelUpdate(orderManagement, shippingOrderManagement.getModifyUser()); vehiclesOrderRepository.update(orderManagement); } else { - throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单,请检查数据!", - orderManagement.getShippingCode(), orderManagement.getSeq())); + throw new ImppBusiException(String.format("【%s】发运单对应排序【%s】前存在未扫描发运的发运单【%s】序号【%s】,请检查数据!", + orderManagement.getShippingCode(), orderManagement.getSeq(),shippingOrder.getShippingCode(),shippingOrder.getSeq())); } } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 7b264ca..72bf7d6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -1080,6 +1080,38 @@ public class MesWorkOrderService implements IMesWorkOrderService { } } + @Override + public void doMesWorkOrderNoSortReport(String organizeCode, Integer pageSize, String userName) { + String workCenterCodes = configService.getCfgValue(organizeCode, "MES_PCN_REPORT_CENTER"); + //查询所有非排序工单 + List recordNoReportList = mesProductionRecordDao.findMesProductionRecordNoReport(organizeCode, MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue(), pageSize, !StringUtils.isEmpty(workCenterCodes) ? Arrays.asList(workCenterCodes.split(",")) : null); + if (CollectionUtils.isEmpty(recordNoReportList)) { + LOGGER.error("非排序加工单加工记录中没有数据,无需处理"); + return; + } + List recordNoReportNotHasOrderNoList = recordNoReportList.stream().filter(item -> StringUtils.isEmpty(item.getWorkOrderNo())).collect(Collectors.toList()); + List recordNoReportHasOrderNoList = recordNoReportList.stream().filter(item -> !StringUtils.isEmpty(item.getWorkOrderNo())).collect(Collectors.toList()); + //处理无工单加工记录 + if(!CollectionUtils.isEmpty(recordNoReportNotHasOrderNoList)){ + for (MesProductionRecord mesProductionRecord : recordNoReportNotHasOrderNoList) { + LOGGER.info("----------处理无工单加工记录报工开始-------{}", mesProductionRecord.getProductSn()); + doProductReportByRecord(mesProductionRecord, organizeCode, userName); + LOGGER.info("----------处理无工单加工记录报工结束-------{}", mesProductionRecord.getProductSn()); + } + } + //处理有工单加工记录 + if(!CollectionUtils.isEmpty(recordNoReportHasOrderNoList)){ + try { + for (MesProductionRecord mesProductionRecord : recordNoReportHasOrderNoList) { + LOGGER.info("----------处理有工单加工记录报工开始-------{}", mesProductionRecord.getProductSn()); + doProductHasOrderReportByRecord(mesProductionRecord, organizeCode, userName); + LOGGER.info("----------处理有工单加工记录报工结束-------{}", mesProductionRecord.getProductSn()); + } + } catch (ImppBusiException e) { + } + } + } + private MesProductVersion getProductVersion(String organizeCode,String partNo,String productVersion) { MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersion(organizeCode,partNo,productVersion); if (null == mesProductVersion) { @@ -1317,7 +1349,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } public MesWorkOrderSortReportModel initMesWorkOrderSortReportModel(String organizeCode, Integer pageSize, String userName) { - MesWorkOrderSortReportModel model = new MesWorkOrderSortReportModel(organizeCode, userName, mesProductionRecordDao.findMesProductionRecordNoReport(organizeCode, MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(), pageSize)); + MesWorkOrderSortReportModel model = new MesWorkOrderSortReportModel(organizeCode, userName, mesProductionRecordDao.findMesProductionRecordNoReport(organizeCode, MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue(), pageSize,null)); model.setMesWorkOrderList(workOrderExtService.getWorkOrderList(organizeCode, model.getWorkOrderList())); model.setMesMoveRuleList(mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(model.getPartProdGroupCodeList(), organizeCode)); model.setMesWorkOrderPartList(findMesWorkOrderPartByOrderNo(organizeCode, model.getWorkOrderList())); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AssemblyVisualListPrintStrategy.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AssemblyVisualListPrintStrategy.java index eb532eb..2d81c98 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AssemblyVisualListPrintStrategy.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/print/strategy/AssemblyVisualListPrintStrategy.java @@ -65,7 +65,7 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe // vinCode resultMap.put(MesPcnExtConstWords.VIN_CODE, workOrder.getVinCode()); // vinCode 后四位 - resultMap.put(MesPcnExtConstWords.VIN_CODE_AFTER_FOUR, workOrder.getVinCode()); + resultMap.put(MesPcnExtConstWords.VIN_CODE_AFTER_FOUR, !StringUtils.isEmpty(workOrder.getVinCode()) && workOrder.getVinCode().length() > MesPcnExtConstWords.FOUR ? workOrder.getVinCode().substring(workOrder.getVinCode().length() - MesPcnExtConstWords.FOUR) : workOrder.getVinCode()); // 总成零件号 resultMap.put(MesPcnExtConstWords.PART_NO, workOrder.getPartNo()); // 工单标识