diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelDetailService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelDetailService.java index e062b64..22ac6b6 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelDetailService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelDetailService.java @@ -1,6 +1,5 @@ package cn.estsh.i3plus.ext.mes.api.base; -import cn.estsh.i3plus.pojo.mes.bean.MesBom; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail; /** diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java index 9aa6a4e..5da2525 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesProduceSnService.java @@ -19,4 +19,7 @@ public interface IMesProduceSnService extends IBaseMesService { @ApiOperation(value = "查询条码信息") List findMesProduceSnList(String organizeCode, List snList); + + @ApiOperation("根据客户条码查询产品条码表") + MesProduceSn getMesProduceSnByCustSn(String organizeCode, String custSn); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderAssemblyService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderAssemblyService.java index 52cfdbd..0ba3cd9 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderAssemblyService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderAssemblyService.java @@ -2,6 +2,9 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; +import io.swagger.annotations.ApiOperation; + +import java.util.List; /** * @Description : 工单装配件 @@ -11,4 +14,8 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; * @Modify: **/ public interface IMesWorkOrderAssemblyService extends IBaseMesService { + + @ApiOperation("根据工单号查询排序线排产装配目视项") + List findMesWorkOrderAssembly(String workOrderNo, String organizeCode); + } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java index bb3e200..1470608 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java @@ -5,6 +5,9 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import io.swagger.annotations.ApiOperation; + +import java.util.List; /** * @Description: @@ -16,4 +19,7 @@ public interface IMesWorkOrderLogService extends IBaseMesService findMesWorkOrderLog(String workOrderNo, String organizeCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderPartService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderPartService.java index 0b88442..7e23216 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderPartService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderPartService.java @@ -2,6 +2,9 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; +import io.swagger.annotations.ApiOperation; + +import java.util.List; /** * @Description : 工单零件 @@ -11,4 +14,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; * @Modify: **/ public interface IMesWorkOrderPartService extends IBaseMesService { + + @ApiOperation("根据工单号查询工单零件") + List findMesWorkOrderPart(String workOrderNo, String organizeCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToWmsService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToWmsService.java index e394bb4..37634ef 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToWmsService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToWmsService.java @@ -18,4 +18,7 @@ public interface IMesWorkOrderToWmsService extends IBaseMesService saveMesWorkOrderToWms(MesWorkOrder mesWorkOrder, List mesBomList); + + @ApiOperation("根据工单号查询工单发送给WMS数据") + List findMesWorkOrderToWms(String workOrderNo, String organizeCode); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java index 897a674..af25b75 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java @@ -1,7 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report; import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao; -import cn.estsh.i3plus.ext.mes.pojo.model.MesShippingOrderManagementDetailModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -124,7 +123,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { Query countQuery = entityManager.createQuery("select count(1) " + commonHql); setParameter(mesGeneralExportReportModel, countQuery); //数据 - Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getOrderBy(mesGeneralExportReportModel)).toString(), MesShippingOrderManagementDetailModel.class); + Query dataQuery = entityManager.createQuery(dataHql.append(commonHql).append(getOrderBy(mesGeneralExportReportModel)).toString(), MesGeneralExportReportModel.class); setParameter(mesGeneralExportReportModel, dataQuery); if (Objects.isNull(pager)) return new ListPager<>(dataQuery.getResultList(), pager); @@ -150,7 +149,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { model.setOrderByParam("createDatetime"); model.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); } - return orderBy.append(" order by d.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString(); + return orderBy.append(" order by assembly.").append(model.getOrderByParam()).append(" ").append(CommonEnumUtil.ASC_OR_DESC.DESC.getValue() == model.getAscOrDesc() ? "desc" : "asc").toString(); } private String getCommonHql(MesGeneralExportReportModel model) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCutSchemeEquipmentServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCutSchemeEquipmentServiceImpl.java index 8cd43e3..58aa8fd 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCutSchemeEquipmentServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCutSchemeEquipmentServiceImpl.java @@ -45,13 +45,8 @@ public class MesCutSchemeEquipmentServiceImpl extends BaseMesService im ValidatorBean.checkNotNull(item.getId(), "主键不能为空"); ValidatorBean.checkNotNull(item.getCutCode(), "裁片方案代码不能为空"); } + + @Override + protected void setPackQueryBean(MesCutSchemeFg bean, DdlPackBean packBean) { + DdlPreparedPack.getStringEqualPack(bean.getCutCode(), MesExtConstWords.CUT_CODE, packBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java index 706961f..9ce81aa 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java @@ -9,9 +9,9 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateParam; -import cn.estsh.i3plus.pojo.mes.bean.MesSpotCheckOrder; import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateParamRepository; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.util.CollectionUtils; @@ -66,6 +66,7 @@ public class MesLabelTemplateServiceImpl extends BaseMesService im public List findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail){ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getProductPartNo(),"productPartNo",ddlPackBean); DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getWorkCenterCode(),"workCenterCode",ddlPackBean); List mesPartProdGroupDetails = mesPartProdGroupDetailRDao.findByHqlWhere(ddlPackBean); if(CollectionUtils.isEmpty(mesPartProdGroupDetails)){ diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java index d474b1a..e9108d2 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProduceSnServiceImpl.java @@ -48,4 +48,11 @@ public class MesProduceSnServiceImpl extends BaseMesService implem } return produceSnList.stream().filter(Objects::nonNull).sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()); } + + @Override + public MesProduceSn getMesProduceSnByCustSn(String organizeCode, String custSn) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(custSn, "custSn", packBean); + return baseRDao.getByProperty(packBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderAssemblyServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderAssemblyServiceImpl.java index 9504cc9..ce5e2ae 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderAssemblyServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderAssemblyServiceImpl.java @@ -4,10 +4,13 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderAssemblyService; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderAssembly; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Description : 工单装配件 * @Reference : @@ -25,4 +28,12 @@ public class MesWorkOrderAssemblyServiceImpl extends BaseMesService findMesWorkOrderAssembly(String workOrderNo, String organizeCode) { + if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo,"workOrderNo",packBean); + return baseRDao.findByHqlWhere(packBean); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java index 500cd23..a80ec8b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java @@ -2,9 +2,11 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderLogService; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanUtil; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; @@ -134,4 +136,12 @@ public class MesWorkOrderLogService extends BaseMesService impl return new ListPager(mesWorkOrderLogList, pager); } + + @Override + public List findMesWorkOrderLog(String workOrderNo, String organizeCode) { + if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo,"workOrderNo",packBean); + return baseRDao.findByHqlWhere(packBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderPartServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderPartServiceImpl.java index d3cd1ca..54610e9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderPartServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderPartServiceImpl.java @@ -3,10 +3,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderPartService; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderPart; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Description : 工单零件 * @Reference : @@ -23,4 +26,11 @@ public class MesWorkOrderPartServiceImpl extends BaseMesService findMesWorkOrderPart(String workOrderNo, String organizeCode) { + if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo,"workOrderNo",packBean); + return baseRDao.findByHqlWhere(packBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index cc51fa0..0523adc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -66,14 +66,10 @@ public class MesWorkOrderService extends BaseMesService implements @Autowired private IMesWorkOrderDao mesWorkOrderDao; @Autowired - private MesWorkOrderRepository mesWorkOrderRDao; - @Autowired private MesWorkCenterRepository mesWorkCenterRDao; @Autowired private MesShiftRepository mesShiftRDao; @Autowired - private MesProductPlanRepository mesProductPlanRDao; - @Autowired private IMesPartProdGroupService mesPartProdGroupService; @Autowired private MesCustomerPartRepository mesCustomerPartRDao; @@ -148,54 +144,68 @@ public class MesWorkOrderService extends BaseMesService implements @Autowired private SnowflakeIdMaker snowflakeIdMaker; + @Autowired + private MesPartPtrRepository partPtrRao; + + @Autowired + private MesPartPtrDetailRepository partPtrDetailRao; + + @Autowired + private MesWorkOrderPartRepository workOrderPartRao; + + @Autowired + private MesProdRuleSortCfgRepository mesProdRuleSortCfgRao; + + @Autowired + private MesQueueOrderRepository queueOrderRao; + + @Autowired + private IMesWorkOrderAssemblyService mesWorkOrderAssemblyService; + + @Autowired + private IMesWorkOrderPartService mesWorkOrderPartService; + + @Autowired + private IMesProduceSnService mesProduceSnService; + @Override public MesWorkOrder insert(MesWorkOrder bean) { + // 数据校验 + ValidatorBean.checkNotNull(bean.getWorkOrderType(), "工单类型不能为空"); + ValidatorBean.checkNotNull(bean.getWorkCenterCode(), "产线不能为空"); + ValidatorBean.checkNotNull(bean.getPartNo(), "零件号不能为空"); + ValidatorBean.checkNotNull(bean.getShiftCode(), "班次不能为空"); //校验产线与工位的关系 boolean relationResult = checkWorkCenterPartRelation(bean.getWorkCenterCode(), bean.getPartNo()); if (!relationResult && (StringUtil.isEmpty(bean.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag()))){ MesException.throwMesBusiException(String.format("工单产线【%s】与工单零件【%s】没有维护产线零件关系",bean.getWorkCenterCode(),bean.getPartNo())); } - //获取相同类型 相同标识 生产序号最大值的 - DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); - DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", orderPackBean); - DdlPreparedPack.getStringEqualPack(bean.getOrderFlag(), "orderFlag", orderPackBean); - DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"productSeq"}, orderPackBean); - MesWorkOrder result = baseRDao.getByProperty(orderPackBean); - - //插入前构造数据 - onInsertBean(bean); - - //若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1 + //排序生成个数 默认1,数量为生成工单的个数 + Double generateQty = bean.getQty(); + MesWorkCenter mesWorkCenter = workCenterService.getWorkCenterDb(bean.getOrganizeCode(), bean.getWorkCenterCode()); + if (Objects.isNull(mesWorkCenter)) { + MesException.throwMesBusiException("产线【%s】不存在", bean.getWorkCenterCode()); + } + bean.setErpWorkCenter(mesWorkCenter.getErpWorkCenter()); + bean.setAreaCode(mesWorkCenter.getAreaCode()); + //客户物料信息 + if (StringUtil.isEmpty(bean.getCustPartNo())) { + getCustomerPart(bean); + } + //排序 if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { - Long productSeq = 0L; - if (null != result && result.getProductSeq() != null) { - productSeq = (long) Math.toIntExact(result.getProductSeq()); - } - MesWorkOrder copyMesWorkOrder = new MesWorkOrder(); - BeanUtils.copyProperties(bean, copyMesWorkOrder); - copyMesWorkOrder.setProductSeq((long) (productSeq + 1)); - copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser()); - - baseRDao.insert(copyMesWorkOrder); - workOrderLogService.saveMesWorkOrderLog(copyMesWorkOrder,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,copyMesWorkOrder.getQty()); - return bean; - } else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()) { - Long productSeq = 0L; - if (null != result && result.getProductSeq() != null) { - productSeq = (long) Math.toIntExact(result.getProductSeq()); - } - bean.setProductSeq(productSeq + 1); - GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ); - List resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(bean.getOrganizeCode()), bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); - bean.setWorkOrderSeq(resultList.get(0)); + insertSortWorkOrderNo(bean, mesWorkCenter); + //生成数量大于1 + if (generateQty > 1) { + insertBatchWorkOrder(bean, generateQty); + } + //非排序 + } else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { + insertUnSortWorkOrder(bean, mesWorkCenter); + //bto + } else { + insertBtoWorkOrder(bean, mesWorkCenter); } - bean.setQty(bean.getQty()); - bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - ConvertBean.serviceModelInitialize(bean, bean.getCreateUser()); - - workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty()); - bean = baseRDao.insert(bean); return bean; } @@ -272,7 +282,7 @@ public class MesWorkOrderService extends BaseMesService implements DdlPreparedPack.getStringSmallerPack(bean.getStartTimeEnd(), "planStartTime", packBean); DdlPreparedPack.getStringBiggerPack(bean.getEndTimeStart(), "planEndTime", packBean); DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean); - packBean.setOrderByStr(" order by createDatetime desc,workOrderSeq asc,workOrderNo asc "); + packBean.setOrderByStr(" order by createDatetime desc,workOrderSeq asc,productSeq asc,workOrderNo asc "); } @Override @@ -295,153 +305,191 @@ public class MesWorkOrderService extends BaseMesService implements } - @Override - protected void onInsertBean(MesWorkOrder item) { - - // 数据校验 - ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空"); - ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空"); - ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空"); - ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空"); - - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean); - MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); - if (Objects.isNull(mesWorkCenter)) { - MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode()); - } - item.setErpWorkCenter(mesWorkCenter.getErpWorkCenter()); - //客户物料信息 - if (StringUtil.isEmpty(item.getCustPartNo())) { - getCustomerPart(item); - } - //生成工单号 - List orderList=new ArrayList<>(); - if(item.getWorkOrderType() != MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()){ + private String getOrderNo(MesWorkOrder item) { + String orderNo; + if(item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()){ + GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_ORDER_NO_WU_HAN"); + List resultList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList(); + String serialNo = resultList.get(0).replace("MES_WORK_ORDER_NO_WU_HAN", ""); + orderNo = item.getOrganizeCode() + item.getOrderFlag() + item.getShiftCode() + serialNo; + }else if(item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()){ GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_CENTER_ORDER_NO); genSerialNoModel.setPartNo(item.getWorkCenterCode()); - orderList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList(); + orderNo = (String)syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList().get(0); }else { GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO); - orderList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList(); + orderNo = (String)syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(item.getOrganizeCode()), item.getCreateUser(), item.getOrganizeCode(), 1).getResultList().get(0); } - String orderNo = orderList.get(0); DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean); if (baseRDao.isExitByHql(orderPackBean)) { MesException.throwMesBusiException("单号流水码生成重复"); } - item.setWorkOrderNo(orderNo); - //校验标识 - //若工单类型为排序 - List saveMesWorkOrderToWms = new ArrayList<>(); - if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { - ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); - //校验产线类型和工单类型是否匹配 - if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.SORT.getValue())) { - MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择排序产线", mesWorkCenter.getWorkCenterCode(), - MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType())); - } - //若工单类型为排序 标识为 N E P S - if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(item.getOrderFlag()) && - !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(item.getOrderFlag()) && - !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue().equals(item.getOrderFlag()) && - !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { - MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识", - item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() - , MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(), - MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(), - MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue())); - } - //校验VIN号是否重复 - if (!StringUtil.isEmpty(item.getVinCode())) { - //校验vin号是否重复 - ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean); - if (baseRDao.isExitByHql(ddlPackBean)) { - MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode()); + return orderNo; + } + + private void insertMesWorkOrder(MesWorkOrder item, List orderPartList) { + /** + * 总成拆bom,变成子零件 + * 替换子零件,通过替换后的零件,去找排序工艺 + */ + Map ptrRuleListMap = new HashMap<>(); + //是否修改为P单 + boolean isModifyPOrder = false; + //查询mes_part_ptr表,根据物料清单查找ptr替换信息 + if (!CollectionUtils.isEmpty(orderPartList)){ + Map orderPartMap = orderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity())); + //先替换客户的ptr信息 + String ptrInfo = item.getPtrInfo(); + if (!StringUtils.isEmpty(ptrInfo)) { + List ptrInfoList = Arrays.asList(ptrInfo.replace("_", "").split("\\|")); + if (!ptrInfoList.isEmpty()){ + List custPartPtrList = getCustPartPtrList(ptrInfoList, item.getOrganizeCode()); + for (MesPartPtr mesPartPtr : custPartPtrList) { + //根据mesPartPtr的目标零件号,找到零件信息 + String destPartNo = mesPartPtr.getDestPartNo(); + MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, item.getOrganizeCode()); + //更新物料清单 + MesWorkOrderPart orderPart = orderPartMap.get(destPartNo); + if (orderPart != null) { + orderPart.setPartNo(mesPartSap.getPartNo()); + orderPart.setPartName(mesPartSap.getPartName()); + orderPart.setShippingPartNo(mesPartSap.getPartNo()); + if (!isModifyPOrder){ + isModifyPOrder = true; + } + } + } } } - //排序工单数量为1 - item.setQty(1d); - //发送工单给WMS - sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms); - } else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { - ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); - if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { - MesException.throwMesBusiException("生产数量不能小于等于0"); - } - //校验产线类型和工单类型是否匹配 - if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue())) { - MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择非排序产线", mesWorkCenter.getWorkCenterCode(), - MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType())); - } - if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(item.getOrderFlag()) && - !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(item.getOrderFlag()) && - !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { - MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】 标识", - item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() - , MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(), - MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue())); - } - item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); - //非试制单 - if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { - ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空"); - //校验物料生产版本是否存在 - MesProductVersion mesProductVersion = checkMesProductVersion(item); - item.setErpWorkCenter(mesProductVersion.getWorkCenterCode()); - //获取bom信息 - List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); - //发送工单信息给WMS - saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); - } - } else { - ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); - ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); - if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { - MesException.throwMesBusiException("生产数量不能小于等于0"); + List partNoList = orderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList()); + List partPtrList = getPartPtrList(item.getOrganizeCode(), item.getWorkCenterCode(), partNoList); + //装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号,value 是规则 + + for (MesPartPtr mesPartPtr : partPtrList) { + //根据mesPartPtr的目标零件号,找到零件信息 + String destPartNo = mesPartPtr.getDestPartNo(); + String srcPartNo = mesPartPtr.getSrcPartNo(); + MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(destPartNo, item.getOrganizeCode()); + //更新物料清单 + MesWorkOrderPart orderPart = orderPartMap.get(srcPartNo); + if (orderPart != null) { + orderPart.setPartNo(mesPartSap.getPartNo()); + orderPart.setPartName(mesPartSap.getPartName()); + orderPart.setShippingPartNo(mesPartSap.getPartNo()); + ptrRuleListMap.put(mesPartSap.getPartNo(), mesPartPtr.getReplacePartSnRule()); + if (!isModifyPOrder){ + isModifyPOrder = true; + } + //更新mes_part_ptr的实际数量 + 1 + mesPartPtr.setPrtVehicleActualCount(mesPartPtr.getPrtVehicleActualCount() + 1); + ConvertBean.saveOrUpdate(mesPartPtr, item.getModifyUser()); + partPtrRao.update(mesPartPtr); + DdlPackBean partPtrDetailPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",partPtrDetailPackBean); + DdlPreparedPack.getStringEqualPack(item.getPartNo(),"totalPartNo",partPtrDetailPackBean); + List partPtrDetailList = partPtrDetailRao.findByHqlWhere(partPtrDetailPackBean); + if (!partPtrDetailList.isEmpty()){ + MesPartPtrDetail mesPartPtrDetail = partPtrDetailList.get(0); + mesPartPtrDetail.setQty(mesPartPtrDetail.getQty() + 1); + ConvertBean.saveOrUpdate(mesPartPtrDetail, item.getModifyUser()); + partPtrDetailRao.update(mesPartPtrDetail); + } + //更新mes_part_ptr_detail 的workOrder.partNo 数量加 1 ;替换了几次还是什么 + } } - //发送工单给WMS - sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms); } - //物料名称不存在,从物料信息中获取 - MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode()); - item.setPartName(mesPart.getPartName()); - item.setUnit(mesPart.getUnit()); - //生产时间新增取当天 - if (StringUtil.isEmpty(item.getProduceTime())) { - item.setProduceTime(TimeTool.getToday()); - item.setProductTime(item.getProduceTime()); + + // 生成装配件清单 + if (isModifyPOrder){ + item.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue()); } - item.setUnCompleteQty(item.getQty()); - item.setFid(UUID.randomUUID().toString()); - //保存发送WMS数据 - if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) { - mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms); + + if (!CollectionUtils.isEmpty(orderPartList)) { + for (MesWorkOrderPart orderPart : orderPartList) { + orderPart.setOrganizeCode(item.getOrganizeCode()); + orderPart.setWorkOrderNo(item.getWorkOrderNo()); + ConvertBean.saveOrUpdate(orderPart, item.getModifyUser()); + } + workOrderPartRao.saveAll(orderPartList); } + List assemblyList = getAssemblyList(item.getWorkCenterCode(), item.getCarModelCode(), orderPartList, item.getOrganizeCode()); + if (!CollectionUtils.isEmpty(assemblyList)) { + for (MesWorkOrderAssembly orderAssembly : assemblyList) { + if (ptrRuleListMap.get(orderAssembly.getPartNo()) != null){ + orderAssembly.setMatchRule(ptrRuleListMap.get(orderAssembly.getPartNo())); + } + orderAssembly.setPartNo(item.getPartNo()); + orderAssembly.setPartName(item.getPartName()); + orderAssembly.setWorkOrderNo(item.getWorkOrderNo()); + orderAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()); + orderAssembly.setOrganizeCode(item.getOrganizeCode()); + orderAssembly.setProductSn(item.getWorkOrderNo()); + orderAssembly.setAreaCode(item.getAreaCode()); + ConvertBean.saveOrUpdate(orderAssembly, item.getCreateUser()); + } + workOrderAssemblyRepository.saveAll(assemblyList); + + List cellCodeList = assemblyList.stream().map(MesWorkOrderAssembly::getWorkCellCode).distinct().collect(Collectors.toList()); + Map> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode)); + for (String cellCode : cellCodeList) { + MesQueueOrder mesQueueOrder = new MesQueueOrder(); + BeanUtils.copyProperties(item,mesQueueOrder,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); + mesQueueOrder.setWorkCellCode(cellCode); + mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq()); + mesQueueOrder.setSerialNumber(item.getWorkOrderNo()); + mesQueueOrder.setProductSn(item.getWorkOrderNo()); + mesQueueOrder.setStatus(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue()); + ConvertBean.saveOrUpdate(mesQueueOrder, item.getCreateUser()); + queueOrderRao.insert(mesQueueOrder); + } + } + + //生成条码表 + MesProduceSn mesProduceSn = new MesProduceSn(); + mesProduceSn.setProductSn(item.getWorkOrderNo()); + mesProduceSn.setCustSn(item.getCustSn()); + mesProduceSn.setWorkOrderNo(item.getWorkOrderNo()); + mesProduceSn.setOrganizeCode(item.getOrganizeCode()); + mesProduceSn.setFid(UUID.randomUUID().toString()); + mesProduceSn.setCustCode(item.getCustCode()); + mesProduceSn.setCustPartNo(item.getCustPartNo()); + mesProduceSn.setPartNo(item.getPartNo()); + mesProduceSn.setPartName(item.getPartName()); + mesProduceSn.setShiftCode(item.getShiftCode()); + mesProduceSn.setWorkCenterCode(item.getWorkCenterCode()); + mesProduceSn.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue()); + mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + mesProduceSn.setQty(1.0); + mesProduceSn.setSerialNumber(item.getWorkOrderNo()); + mesProduceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()); + mesProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.STANDARD.getValue()); + mesProduceSn.setFid(UUID.randomUUID().toString()); + mesProduceSn.setAreaCode(item.getAreaCode()); + ConvertBean.saveOrUpdate(mesProduceSn, item.getCreateUser()); + mesProduceSnRao.insert(mesProduceSn); } - private void sendToWms(MesWorkOrder item, MesWorkCenter mesWorkCenter, List saveMesWorkOrderToWms) { + private List sendToWms(MesWorkOrder item, MesWorkCenter mesWorkCenter, List saveMesWorkOrderToWms) { //非试制单 List bomList = null; + MesProductVersion mesProductVersion = null; if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { //获取生产版本 - MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter); + mesProductVersion = getMesProductVersion(item, mesWorkCenter); item.setProductVersion(mesProductVersion.getProductVersion()); //获取bom信息 bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + item.setBomCode(bomList.iterator().next().getBomCode()); } //是否自动发布 - isAuto(item, saveMesWorkOrderToWms, bomList); + return isAuto(item, saveMesWorkOrderToWms, bomList, mesProductVersion); } - private void isAuto(MesWorkOrder item, List saveMesWorkOrderToWms, List bomList) { + private List isAuto(MesWorkOrder item, List saveMesWorkOrderToWms, List bomList,MesProductVersion mesProductVersion) { MesPartProdGroup mesPartProdGroup = null; if(StringUtil.isEmpty(item.getPartProdGroupCode())){ mesPartProdGroup = getMesPartProdGroup(item); - item.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode()); - item.setPartProdGroupName(mesPartProdGroup.getPartProdGroupName()); }else{ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean); @@ -450,6 +498,9 @@ public class MesWorkOrderService extends BaseMesService implements MesException.throwMesBusiException("零件生产组【%s】信息不存在",item.getPartProdGroupCode()); } } + item.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode()); + item.setPartProdGroupName(mesPartProdGroup.getPartProdGroupName()); + item.setCustCode(mesPartProdGroup.getCustCode()); //自动发布 if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) { @@ -465,6 +516,13 @@ public class MesWorkOrderService extends BaseMesService implements } else { item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); } + + // 打散bom + List workOrderPartList = new ArrayList<>(); + if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && !Objects.isNull(mesProductVersion)) { + workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),mesProductVersion.getAlternativePartList()), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo()); + } + return workOrderPartList; } private MesPrintQueue insertPrintQueue(MesWorkOrder workOrder) { @@ -483,15 +541,14 @@ public class MesWorkOrderService extends BaseMesService implements private MesPartProdGroup getMesPartProdGroup(MesWorkOrder item) { MesPartProdGroupDetail mesPartProdGroupDetail = new MesPartProdGroupDetail(); mesPartProdGroupDetail.setWorkCenterCode(item.getWorkCenterCode()); - mesPartProdGroupDetail.setPartNo(item.getPartNo()); + mesPartProdGroupDetail.setProductPartNo(item.getPartNo()); mesPartProdGroupDetail.setOrganizeCode(item.getOrganizeCode()); List mesPartProdGroupList = mesPartProdGroupService.findMesPartProdGroup(mesPartProdGroupDetail); if (CollectionUtils.isEmpty(mesPartProdGroupList)) { MesException.throwMesBusiException("生产线代码【%s】零件号【%s】对应的零件生产组信息没有维护", item.getWorkCenterCode(), item.getPartNo()); } - MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.iterator().next(); - return mesPartProdGroup; + return mesPartProdGroupList.iterator().next(); } private void getCustomerPart(MesWorkOrder item) { @@ -517,8 +574,7 @@ public class MesWorkOrderService extends BaseMesService implements } private MesProductVersion getMesProductVersion(MesWorkOrder item, MesWorkCenter mesWorkCenter) { - DdlPackBean ddlPackBean; - ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean); //DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean); ddlPackBean.setOrderByStr(" order by createDatetime desc "); @@ -611,7 +667,7 @@ public class MesWorkOrderService extends BaseMesService implements baseRDao.insert(copyMesWorkOrder); //保存记录 MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); - BeanUtils.copyProperties(item, workOrderLog, "id"); + BeanUtils.copyProperties(item, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); mesWorkOrderLogList.add(workOrderLog); // 如果工单为发布状态则新增打印队列 @@ -633,7 +689,7 @@ public class MesWorkOrderService extends BaseMesService implements index++; //保存记录 MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); - BeanUtils.copyProperties(item, workOrderLog, "id"); + BeanUtils.copyProperties(item, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); mesWorkOrderLogList.add(workOrderLog); } //保存发送WMS数据 @@ -1256,15 +1312,12 @@ public class MesWorkOrderService extends BaseMesService implements } MesLabelTemplate labelTemplate = labelTemplateService.getLabelTemplate(printTemplate, organizeCode); - - //根据反射获取策略类--封装打印数据 - String methodCode = labelTemplate.getMethodCode(); - //模板信息丢失抛出异常 - if (StringUtils.isEmpty(labelTemplate.getMethodCode())) { + if (Objects.isNull(labelTemplate) || StringUtils.isEmpty(labelTemplate.getMethodCode())) { MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】打印模板【%s】为空", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode(), labelTemplate.getTemplateCode()); } - + //根据反射获取策略类--封装打印数据 + String methodCode = labelTemplate.getMethodCode(); Map modelMap = new HashMap<>(); modelMap.put("mesWorkOrder", mesWorkOrder); modelMap.put("mesPartProdGroup", mesPartProdGroup); @@ -1367,7 +1420,7 @@ public class MesWorkOrderService extends BaseMesService implements private List getMesWorkOrderList(Long[] ids, String organizeCode) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getInPackArray(ids,"id",packBean); + DdlPreparedPack.getInPackArray(ids,MesExtConstWords.ID,packBean); List mesWorkOrderList = baseRDao.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(mesWorkOrderList)) { MesException.throwMesBusiException("选择工单信息不存在"); @@ -1547,7 +1600,7 @@ public class MesWorkOrderService extends BaseMesService implements private MesProductOffLine getMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, String sn, MesBom mesBom,Double itemQty, boolean isItemReport,String nowTime) { MesProductOffLine newMesProductOffLine = new MesProductOffLine(); - BeanUtils.copyProperties(mesBom, newMesProductOffLine, "id","systemSyncStatus"); + BeanUtils.copyProperties(mesBom, newMesProductOffLine,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); newMesProductOffLine.setReportPartNo(mesBom.getPartNo()); newMesProductOffLine.setReportPartNameRdd(mesBom.getPartName()); newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); @@ -1638,7 +1691,7 @@ public class MesWorkOrderService extends BaseMesService implements DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getInPackList(statusList, "workOrderStatus", packBean); - return mesWorkOrderRDao.findByHqlWhere(packBean); + return baseRDao.findByHqlWhere(packBean); } private MesMove createMove(MesPartSap mesPart, String source, String target, String org, String workCenterCode, double qty, String sn, Integer moveType) { @@ -1722,7 +1775,7 @@ public class MesWorkOrderService extends BaseMesService implements String orderNo = orderList.get(0); DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean); - if (mesWorkOrderRDao.isExitByHql(orderPackBean)) { + if (baseRDao.isExitByHql(orderPackBean)) { MesException.throwMesBusiException("单号流水码生成重复"); } item.setWorkOrderNo(orderNo); @@ -1771,13 +1824,171 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderList; } + private void insertSortWorkOrderNo(MesWorkOrder bean, MesWorkCenter mesWorkCenter) { + ValidatorBean.checkNotNull(bean.getOrderFlag(), "标识不能为空"); + ValidatorBean.checkNotNull(bean.getCustPartNo(), "客户物料号不能为空"); + + //校验产线类型和工单类型是否匹配 + if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.SORT.getValue())) { + MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择排序产线", mesWorkCenter.getWorkCenterCode(), + MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType())); + } + //若工单类型为排序 标识为 N E P S + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(bean.getOrderFlag()) && + !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(bean.getOrderFlag()) && + !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue().equals(bean.getOrderFlag()) && + !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag())) { + MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识", + bean.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() + , MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(), + MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(), + MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue())); + } + //校验VIN号是否重复 + if (!StringUtil.isEmpty(bean.getVinCode())) { + //校验vin号是否重复 + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(bean.getVinCode(), "vinCode", ddlPackBean); + if (baseRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("vin号【%s】重复", bean.getVinCode()); + } + } + + List saveMesWorkOrderToWms = new ArrayList<>(); + //排序工单数量为1 + bean.setQty(1d); + //生成工单号 + bean.setWorkOrderNo(getOrderNo(bean)); + //发送工单给WMS + List orderPartList = sendToWms(bean, mesWorkCenter, saveMesWorkOrderToWms); + //顺序号 + bean.setProductSeq(getMaxMesWorkOrderProductSeq(bean)); + //生成客户条码 + bean.setCustSn(getCustSn(bean.getCustPartNo(), bean.getOrganizeCode(), bean.getCreateUser())); + //生成工单零件 工单装配件 + insertMesWorkOrder(bean, orderPartList); + + //物料名称不存在,从物料信息中获取 + MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode()); + bean.setPartName(mesPart.getPartName()); + bean.setUnit(mesPart.getUnit()); + //生产时间新增取当天 + if (StringUtil.isEmpty(bean.getProduceTime())) { + bean.setProduceTime(TimeTool.getToday()); + bean.setProductTime(bean.getProduceTime()); + } + bean.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + bean.setUnCompleteQty(bean.getQty()); + bean.setFid(UUID.randomUUID().toString()); + //保存发送WMS数据 + if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) { + saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(bean.getWorkOrderNo())); + mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms); + } + + baseRDao.insert(bean); + workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty()); + } + + private void insertUnSortWorkOrder(MesWorkOrder bean, MesWorkCenter mesWorkCenter) { + ValidatorBean.checkNotNull(bean.getOrderFlag(), "标识不能为空"); + if (Objects.isNull(bean.getQty()) || bean.getQty() <= 0d) { + MesException.throwMesBusiException("生产数量不能小于等于0"); + } + //校验产线类型和工单类型是否匹配 + if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue())) { + MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择非排序产线", mesWorkCenter.getWorkCenterCode(), + MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType())); + } + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(bean.getOrderFlag()) && + !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(bean.getOrderFlag()) && + !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag())) { + MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】 标识", + bean.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() + , MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(), + MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue())); + } + bean.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); + List saveMesWorkOrderToWms = new ArrayList<>(); + //非试制单 + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag())) { + ValidatorBean.checkNotNull(bean.getProductVersion(), "生产版本不能为空"); + //校验物料生产版本是否存在 + MesProductVersion mesProductVersion = checkMesProductVersion(bean); + bean.setErpWorkCenter(mesProductVersion.getWorkCenterCode()); + //获取bom信息 + List bomList = mesBomService.findMesBomByPartNoAndBomVersion(bean.getPartNo(), bean.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + //发送工单信息给WMS + saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(bean, bomList)); + } + //物料名称不存在,从物料信息中获取 + MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode()); + bean.setPartName(mesPart.getPartName()); + bean.setUnit(mesPart.getUnit()); + //生产时间新增取当天 + if (StringUtil.isEmpty(bean.getProduceTime())) { + bean.setProduceTime(TimeTool.getToday()); + bean.setProductTime(bean.getProduceTime()); + } + bean.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + bean.setUnCompleteQty(bean.getQty()); + bean.setFid(UUID.randomUUID().toString()); + bean.setWorkOrderNo(getOrderNo(bean)); + //保存发送WMS数据 + if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) { + saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(bean.getWorkOrderNo())); + mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms); + } + + baseRDao.insert(bean); + workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty()); + } + + private void insertBtoWorkOrder(MesWorkOrder bean, MesWorkCenter mesWorkCenter) { + ValidatorBean.checkNotNull(bean.getPlanStartTime(), "计划开始时间不能为空"); + ValidatorBean.checkNotNull(bean.getPlanEndTime(), "计划结束时间不能为空"); + if (Objects.isNull(bean.getQty()) || bean.getQty() <= 0d) { + MesException.throwMesBusiException("生产数量不能小于等于0"); + } + List saveMesWorkOrderToWms = new ArrayList<>(); + //顺序号 + bean.setProductSeq(getMaxMesWorkOrderProductSeq(bean)); + //生成工单号 + bean.setWorkOrderNo(getOrderNo(bean)); + //发送工单给WMS + sendToWms(bean, mesWorkCenter, saveMesWorkOrderToWms); + //物料名称不存在,从物料信息中获取 + MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode()); + bean.setPartName(mesPart.getPartName()); + bean.setUnit(mesPart.getUnit()); + //生产时间新增取当天 + if (StringUtil.isEmpty(bean.getProduceTime())) { + bean.setProduceTime(TimeTool.getToday()); + bean.setProductTime(bean.getProduceTime()); + } + bean.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()); + bean.setUnCompleteQty(bean.getQty()); + bean.setFid(UUID.randomUUID().toString()); + //保存发送WMS数据 + if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) { + saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(bean.getWorkOrderNo())); + mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms); + } + //生成WorkOrderSeq + GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ); + List resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(bean.getOrganizeCode()), bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); + bean.setWorkOrderSeq(resultList.get(0)); + baseRDao.insert(bean); + workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty()); + } + public List saveMesWorkOrderToWms(MesWorkOrder mesWorkOrder, List mesBomList) { List mesWorkOrderToWmsList = new ArrayList<>(); MesWorkOrderToWms mesWorkOrderToWms = null; for (MesBom mesBom : mesBomList) { mesWorkOrderToWms = new MesWorkOrderToWms(); - BeanUtils.copyProperties(mesWorkOrder, mesWorkOrderToWms, "id"); + BeanUtils.copyProperties(mesWorkOrder, mesWorkOrderToWms,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); mesWorkOrderToWms.setUnit(mesBom.getUnit()); mesWorkOrderToWms.setItemPartNo(mesBom.getItemPartNo()); mesWorkOrderToWms.setItemPartName(mesBom.getItemPartName()); @@ -1862,7 +2073,7 @@ public class MesWorkOrderService extends BaseMesService implements } public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) { MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); - BeanUtils.copyProperties(mesWorkOrder, workOrderLog, "id"); + BeanUtils.copyProperties(mesWorkOrder, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS); mesWorkOrderLogRepository.insert(workOrderLog); } public List findBomList(String organizeCode, MesPart mesPart, String bomVersion) { @@ -1953,4 +2164,392 @@ public class MesWorkOrderService extends BaseMesService implements return count > 0; } + private String getCustSn(String partNo,String organizeCode,String userName){ + Calendar custCalendar = Calendar.getInstance(); + custCalendar.setTime(new Date()); + GenSerialNoModel custGenSerialNoModel= new GenSerialNoModel("WH_CUST_SN_RULE"); + String prefix = partNo.substring(0, partNo.length() - 4); + String partNo4 = partNo.substring(partNo.length() - 4).toUpperCase(); + custGenSerialNoModel.setPartNo(prefix+partNo4); + String year = custCalendar.get(Calendar.YEAR)+""; + custGenSerialNoModel.setYear(year.substring(2)); + custGenSerialNoModel.setDay(String.format("%03d",custCalendar.get(Calendar.DAY_OF_YEAR))); + List custNumRuleList = syncFuncService.syncSerialNo(custGenSerialNoModel, userName, organizeCode, 1).getResultList(); + // [)>%RS%06%GS%Y,4110000000000X,%GS%P,%GS%12V,545238347,%GS%T1A,A2B4C,%RS%%EOT% + //截取替换为ascii码 + String snOriginal = custNumRuleList.get(0); + String[] split = snOriginal.split("%RS%"); + StringBuilder rsStr = new StringBuilder(); + for (int i = 0; i < split.length-1; i++) { + rsStr.append(split[i]).append((char) 30); + } + rsStr.append(split[split.length - 1]); + StringBuilder gsStr = new StringBuilder(); + String[] split1 = rsStr.toString().split("%GS%"); + for (int i = 0; i < split1.length-1; i++) { + gsStr.append(split1[i]).append((char) 29); + } + gsStr.append(split1[split1.length-1]); + String[] split2 = gsStr.toString().split("%EOT%"); + return split2[0]+(char)4; + } + + private List dismantleBom(List bomList, double qty,String organizeCode, String workCellCode, String workOrderNo) { + List orderPartList = new ArrayList<>(); + + //1.根据bomList中的subPartNo 查询零件清单 partList + List partNoList = bomList.stream().map(MesBom::getItemPartNo).distinct().collect(Collectors.toList()); + + List partSapList = mesPartSapService.findMesPartSapByPartNoList(partNoList,organizeCode); + Map partMap = partSapList.stream().collect(Collectors.toMap(MesPartSap::getPartNo, Function.identity())); + + //2.遍历bomList + for (MesBom bom : bomList) { + MesWorkOrderPart orderPart = new MesWorkOrderPart(); + MesPartSap partSap = partMap.get(bom.getItemPartNo()); + if (partSap == null) { + MesException.throwMesBusiException("工厂【%s】零件号【%s】未查到零件信息", organizeCode, bom.getItemPartNo()); + } + List orderParts = orderPartList.stream().filter(item -> item.getPartNo().equals(partSap.getPartNo())).collect(Collectors.toList()); + if (!orderParts.isEmpty()) { + MesWorkOrderPart tempPart = orderParts.get(0); + tempPart.setItemQty(tempPart.getItemQty() + bom.getItemQty() * qty); + continue; + } + orderPart.setPartName(partSap.getPartName()); + orderPart.setPartNo(partSap.getPartNo()); + orderPart.setItemQty(bom.getItemQty() * qty); + orderPart.setItemUnit(partSap.getUnit()); + orderPart.setSourceId(bom.getId()); + orderPart.setShippingPartNo(partSap.getPartNo()); + orderPart.setWorkOrderNo(workOrderNo); + orderPart.setWorkCellCode(workCellCode); + orderPartList.add(orderPart); + } + return orderPartList; + } + + private List getPartPtrList(String organizeCode,String workCenterCode, List partNoList) { + DdlPackBean partPtrPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", partPtrPackBean); + DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean); + DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", partPtrPackBean); + DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "endTime", partPtrPackBean); + DdlPreparedPack.getIsNotNull("prtVehicleCount", partPtrPackBean); + List partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean); + partPtrList = partPtrList.stream().filter(item -> item.getPrtVehicleCount() != null && item.getPrtVehicleCount() > 0) + .filter(item-> item.getPrtVehicleCount() > item.getPrtVehicleActualCount()) + .collect(Collectors.toList()); + return partPtrList; + } + + //根据排序信息PTR零件号 获取 ptr信息 + private List getCustPartPtrList(List ptrInfoList,String organizeCode){ + DdlPackBean partPtrPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(ptrInfoList, "seqInfoPrtPart", partPtrPackBean); + return partPtrRao.findByHqlWhere(partPtrPackBean); + } + + private List getAssemblyList(String workCenterCode, String vehicleNo, List workOrderPartList, String organizeCode) { + //TM_BAS_WORK_ORDER_ASSEMBLY_SETTING 对应 mes_prod_rule_sort_cfg 排序生产规则 + + List workOrderAssemblyList = new ArrayList<>(); + List partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList()); + DdlPackBean prodRuleSortPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", prodRuleSortPackBean); + DdlPreparedPack.getInPackList(partNoList, "assemblyPartNo", prodRuleSortPackBean); + //查询当前产线的所有排序生产规则--分为当前工单清单的装配件 + List sortCfgList = mesProdRuleSortCfgRao.findByHqlWhere(prodRuleSortPackBean); + List sortCfgListFilter = sortCfgList.stream().filter(item -> partNoList.contains(item.getAssemblyPartNo())).collect(Collectors.toList()); + Map> orderPartMap = workOrderPartList.stream().collect(Collectors.groupingBy(MesWorkOrderPart::getPartNo)); + //遍历排序生产规则 + for (MesProdRuleSortCfg sortCfg : sortCfgListFilter) { + List orderPartList = orderPartMap.get(sortCfg.getAssemblyPartNo()); + MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly(); + MesWorkOrderPart orderPart = orderPartList.get(0); + //1.逻辑储量程序sortCfg.isLogicNum + if ((sortCfg.getIsLogicNum() !=null && sortCfg.getIsLogicNum() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) && (sortCfg.getLogicNum()!=null && sortCfg.getLogicNum() >0 )){ + Double total = orderPartList.stream().map(MesWorkOrderPart::getItemQty).reduce(Double::sum).get(); + if (!total.equals(sortCfg.getLogicNum())){ + log.info("零件号:{}的数量:{}对应排序规则{}的逻辑数量:{}不一致",orderPart.getPartNo(),total,sortCfg.getWorkCenterCode(),sortCfg.getLogicNum()); + continue; + } + } + //2.当排序规则的车型不为空时,则需要与参数匹配,如果不符合 则不加这个装配项 + if (!StringUtils.isEmpty(sortCfg.getVehicleNo()) && !sortCfg.getVehicleNo().equals(vehicleNo)){ + continue; + } + orderAssembly.setAssemblyPartNo(sortCfg.getAssemblyPartNo()); + orderAssembly.setAssemblyPartName(sortCfg.getAssemblyPartName()); + orderAssembly.setProcessName(sortCfg.getProcessName()); + orderAssembly.setWorkCenterCode(sortCfg.getWorkCenterCode()); + orderAssembly.setDisplayRule(sortCfg.getDisplayRule()); + orderAssembly.setMatchRule(sortCfg.getMatchRule()); + orderAssembly.setMatchType(sortCfg.getMatchType()); + orderAssembly.setPrintType(sortCfg.getPrintType()); + orderAssembly.setProcessCode(sortCfg.getProcessCode()); + orderAssembly.setDisplaySeq(sortCfg.getDisplaySeq()); + orderAssembly.setDisplayValue(sortCfg.getDisplayValue()); + orderAssembly.setProcessSeq(sortCfg.getProcessSeq()); + orderAssembly.setCraftName(sortCfg.getCraftName()); + orderAssembly.setCraftCode(sortCfg.getCraftCode()); + orderAssembly.setRouteSeq(sortCfg.getRouteSeq()); + orderAssembly.setWorkCellCode(sortCfg.getWorkCellCode()); + orderAssembly.setOrderPartId(orderPart.getId().toString()); + orderAssembly.setEquipmentCode(sortCfg.getEquipmentCode()); + orderAssembly.setReportType(sortCfg.getReportType()); + if (sortCfg.getReportType() != null && sortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){ + orderAssembly.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue()); + }else { + orderAssembly.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue()); + } + orderAssembly.setReportPartNo(sortCfg.getReportPartNo()); + orderAssembly.setImageFileId(sortCfg.getImageFileId()); + orderAssembly.setCraftCode(sortCfg.getCraftCode()); + orderAssembly.setCraftName(sortCfg.getCraftName()); + orderAssembly.setPartTypeCode(sortCfg.getPartTypeCode()); + orderAssembly.setShowColor(sortCfg.getShowColor()); + orderAssembly.setProductPartNo(sortCfg.getProductPartNo()); + orderAssembly.setPid(sortCfg.getId()); + orderAssembly.setWorkCenterCode(workCenterCode); + orderAssembly.setPreCraftCode(sortCfg.getPreCraftCode()); + workOrderAssemblyList.add(orderAssembly); + } + + //车型不为空的逻辑--用于报工 + DdlPackBean reportRuleSortPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", reportRuleSortPackBean); + DdlPreparedPack.getStringEqualPack(vehicleNo, "vehicleNo", reportRuleSortPackBean); + DdlPreparedPack.getNotInPack(partNoList, "assemblyPartNo", reportRuleSortPackBean); + //查询当前产线的所有排序生产规则--分为当前工单清单的装配件 + List prodCfgList = mesProdRuleSortCfgRao.findByHqlWhere(reportRuleSortPackBean); + for (MesProdRuleSortCfg ruleSortCfg : prodCfgList) { + MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly(); + orderAssembly.setAssemblyPartNo(ruleSortCfg.getAssemblyPartNo()); + orderAssembly.setAssemblyPartName(ruleSortCfg.getAssemblyPartName()); + orderAssembly.setProcessName(ruleSortCfg.getProcessName()); + orderAssembly.setWorkCenterCode(ruleSortCfg.getWorkCenterCode()); + + orderAssembly.setDisplayRule(ruleSortCfg.getDisplayRule()); + orderAssembly.setMatchRule(ruleSortCfg.getMatchRule()); + orderAssembly.setMatchType(ruleSortCfg.getMatchType()); + orderAssembly.setPrintType(ruleSortCfg.getPrintType()); + orderAssembly.setProcessCode(ruleSortCfg.getProcessCode()); + orderAssembly.setWorkCellCode(ruleSortCfg.getWorkCellCode()); + orderAssembly.setProcessCode(ruleSortCfg.getProcessCode()); + orderAssembly.setProcessName(ruleSortCfg.getProcessName()); + orderAssembly.setCraftCode(ruleSortCfg.getCraftCode()); + orderAssembly.setRouteSeq(ruleSortCfg.getRouteSeq()); + orderAssembly.setEquipmentCode(ruleSortCfg.getEquipmentCode()); + orderAssembly.setReportType(ruleSortCfg.getReportType()); + if (ruleSortCfg.getReportType() != null && ruleSortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){ + orderAssembly.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue()); + }else { + orderAssembly.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue()); + } + orderAssembly.setReportPartNo(ruleSortCfg.getReportPartNo()); + orderAssembly.setProcessSeq(ruleSortCfg.getProcessSeq()); + orderAssembly.setPid(ruleSortCfg.getId()); + orderAssembly.setImageFileId(ruleSortCfg.getImageFileId()); + orderAssembly.setPartTypeCode(ruleSortCfg.getPartTypeCode()); + orderAssembly.setMaxValue(ruleSortCfg.getMaxValue()); + orderAssembly.setMinValue(ruleSortCfg.getMinValue()); + orderAssembly.setProductPartNo(ruleSortCfg.getProductPartNo()); + orderAssembly.setPreCraftCode(ruleSortCfg.getPreCraftCode()); + workOrderAssemblyList.add(orderAssembly); + } + //查询所有共用的零件 且没有零件号,多用于螺钉---查询排序加工规则 + DdlPackBean prodRuleSortPublicPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", prodRuleSortPublicPackBean); + DdlPreparedPack.getIsNull("assemblyPartNo", prodRuleSortPublicPackBean); + List ruleSortCfgs = mesProdRuleSortCfgRao.findByHqlWhere(prodRuleSortPublicPackBean); + for (MesProdRuleSortCfg ruleSortCfg : ruleSortCfgs) { + MesWorkOrderAssembly orderAssembly = new MesWorkOrderAssembly(); + orderAssembly.setAssemblyPartNo(ruleSortCfg.getAssemblyPartNo()); + orderAssembly.setAssemblyPartName(ruleSortCfg.getAssemblyPartName()); + orderAssembly.setProcessName(ruleSortCfg.getProcessName()); + orderAssembly.setWorkCenterCode(ruleSortCfg.getWorkCenterCode()); + orderAssembly.setDisplayRule(ruleSortCfg.getDisplayRule()); + orderAssembly.setMatchRule(ruleSortCfg.getMatchRule()); + orderAssembly.setMatchType(ruleSortCfg.getMatchType()); + orderAssembly.setPrintType(ruleSortCfg.getPrintType()); + orderAssembly.setProcessCode(ruleSortCfg.getProcessCode()); + orderAssembly.setWorkCellCode(ruleSortCfg.getWorkCellCode()); + orderAssembly.setProcessCode(ruleSortCfg.getProcessCode()); + orderAssembly.setProcessName(ruleSortCfg.getProcessName()); + orderAssembly.setCraftCode(ruleSortCfg.getCraftCode()); + orderAssembly.setRouteSeq(ruleSortCfg.getRouteSeq()); + orderAssembly.setEquipmentCode(ruleSortCfg.getEquipmentCode()); + orderAssembly.setReportType(ruleSortCfg.getReportType()); + if (ruleSortCfg.getReportType() != null && ruleSortCfg.getReportType() == MesExtEnumUtil.MES_REPORT_TYPE.REPORT.getValue()){ + orderAssembly.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_30.getValue()); + }else { + orderAssembly.setReportStatus(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue()); + } + orderAssembly.setReportPartNo(ruleSortCfg.getReportPartNo()); + orderAssembly.setProcessSeq(ruleSortCfg.getProcessSeq()); + orderAssembly.setPid(ruleSortCfg.getId()); + orderAssembly.setImageFileId(ruleSortCfg.getImageFileId()); + orderAssembly.setPartTypeCode(ruleSortCfg.getPartTypeCode()); + orderAssembly.setMaxValue(ruleSortCfg.getMaxValue()); + orderAssembly.setMinValue(ruleSortCfg.getMinValue()); + orderAssembly.setProductPartNo(ruleSortCfg.getProductPartNo()); + orderAssembly.setPreCraftCode(ruleSortCfg.getPreCraftCode()); + workOrderAssemblyList.add(orderAssembly); + } + return workOrderAssemblyList; + } + + private void insertBatchWorkOrder(MesWorkOrder workOrder, Double generateQty) { + //查询数据 + List orderAssemblyList = mesWorkOrderAssemblyService.findMesWorkOrderAssembly(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode()); + List orderPartList = mesWorkOrderPartService.findMesWorkOrderPart(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode()); + List toWmsList = mesWorkOrderToWmsService.findMesWorkOrderToWms(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode()); + List orderLogList = workOrderLogService.findMesWorkOrderLog(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode()); + List queueOrderList = findMesQueueOrder(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode()); + MesProduceSn mesProduceSn = mesProduceSnService.getMesProduceSnByCustSn(workOrder.getOrganizeCode(), workOrder.getCustSn()); + MesPrintQueue printQueue = getMesPrintQuanOrder(workOrder.getOrganizeCode(), workOrder.getCustSn()); + //数据处理 + List newWrkOrderList = new ArrayList<>(); + List newOrderAssemblyList = new ArrayList<>(); + List newOrderPartList = new ArrayList<>(); + List newToWmsList = new ArrayList<>(); + List newOrderLogList = new ArrayList<>(); + List newProduceSnList = new ArrayList<>(); + List newQueueOrderList = new ArrayList<>(); + List newPrintQueueList = new ArrayList<>(); + MesWorkOrderAssembly newOrderAssembly = null; + MesWorkOrderPart newOrderPart = null; + MesWorkOrderToWms newOrderPartToWms = null; + MesWorkOrderLog orderLog = null; + MesProduceSn newProduceSn = null; + MesQueueOrder newQueueOrder = null; + MesPrintQueue newPrintQueue = null; + for (int i = 1; i < generateQty; i++) { + //工单 + MesWorkOrder newWorkOrder = new MesWorkOrder(); + BeanUtils.copyProperties(workOrder, newWorkOrder, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newWorkOrder.setWorkOrderNo(getOrderNo(newWorkOrder)); + newWorkOrder.setProductSeq(newWorkOrder.getProductSeq() + i); + newWorkOrder.setCustSn(getCustSn(workOrder.getCustPartNo(), workOrder.getOrganizeCode(), workOrder.getCreateUser())); + newWorkOrder.setFid(UUID.randomUUID().toString()); + newWrkOrderList.add(newWorkOrder); + // + //工单装配件 + if (!CollectionUtils.isEmpty(orderAssemblyList)) { + for (MesWorkOrderAssembly assembly : orderAssemblyList) { + newOrderAssembly = new MesWorkOrderAssembly(); + BeanUtils.copyProperties(assembly, newOrderAssembly, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newOrderAssembly.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + newOrderAssembly.setProductSn(newWorkOrder.getWorkOrderNo()); + newOrderAssemblyList.add(newOrderAssembly); + } + } + //工单零件 + if (!CollectionUtils.isEmpty(orderPartList)) { + for (MesWorkOrderPart part : orderPartList) { + newOrderPart = new MesWorkOrderPart(); + BeanUtils.copyProperties(part, newOrderPart, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newOrderPart.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + newOrderPartList.add(newOrderPart); + } + } + //工单发送给WMS数据 + if (!CollectionUtils.isEmpty(toWmsList)) { + for (MesWorkOrderToWms toWms : toWmsList) { + newOrderPartToWms = new MesWorkOrderToWms(); + BeanUtils.copyProperties(toWms, newOrderPartToWms, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newOrderPartToWms.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + newToWmsList.add(newOrderPartToWms); + } + } + //生产工单日志 + if (!CollectionUtils.isEmpty(orderLogList)) { + for (MesWorkOrderLog mesWorkOrderLog : orderLogList) { + orderLog = new MesWorkOrderLog(); + BeanUtils.copyProperties(mesWorkOrderLog, orderLog, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + orderLog.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + orderLog.setFid(UUID.randomUUID().toString()); + newOrderLogList.add(orderLog); + } + } + //生产队列主表 + if (!CollectionUtils.isEmpty(queueOrderList)) { + for (MesQueueOrder queueOrder : queueOrderList) { + newQueueOrder = new MesQueueOrder(); + BeanUtils.copyProperties(queueOrder, newQueueOrder, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newQueueOrder.setCustSn(newWorkOrder.getCustSn()); + newQueueOrder.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + newQueueOrder.setSerialNumber(newWorkOrder.getWorkOrderNo()); + newQueueOrder.setProductSn(newWorkOrder.getWorkOrderNo()); + newQueueOrder.setProductSeq(newWorkOrder.getProductSeq()); + newQueueOrderList.add(newQueueOrder); + } + } + //产品条码表 + if (!Objects.isNull(mesProduceSn)) { + newProduceSn = new MesProduceSn(); + BeanUtils.copyProperties(mesProduceSn, newProduceSn, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newProduceSn.setCustSn(newWorkOrder.getCustSn()); + newProduceSn.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + newProduceSn.setSerialNumber(newWorkOrder.getWorkOrderNo()); + newProduceSn.setProductSn(newWorkOrder.getWorkOrderNo()); + newProduceSn.setFid(UUID.randomUUID().toString()); + newProduceSnList.add(newProduceSn); + } + //装配目视单打印 + if (!Objects.isNull(printQueue)) { + newPrintQueue = new MesPrintQueue(); + BeanUtils.copyProperties(printQueue, newPrintQueue, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS); + newPrintQueue.setWorkOrderNo(newWorkOrder.getWorkOrderNo()); + newPrintQueueList.add(newPrintQueue); + } + } + //数据持久化 + baseRDao.saveAll(newWrkOrderList); + if (!CollectionUtils.isEmpty(newOrderAssemblyList)) { + mesWorkOrderAssemblyService.insertBatch(newOrderAssemblyList); + } + if (!CollectionUtils.isEmpty(newOrderPartList)) { + mesWorkOrderPartService.insertBatch(newOrderPartList); + } + if (!CollectionUtils.isEmpty(newOrderLogList)) { + workOrderLogService.insertBatch(newOrderLogList); + } + if (!CollectionUtils.isEmpty(newToWmsList)) { + mesWorkOrderToWmsService.insertBatch(newToWmsList); + } + if (!CollectionUtils.isEmpty(newQueueOrderList)) { + queueOrderRao.saveAll(newQueueOrderList); + } + if (!CollectionUtils.isEmpty(newProduceSnList)) { + mesProduceSnService.insertBatch(newProduceSnList); + } + if (!CollectionUtils.isEmpty(newPrintQueueList)) { + printQueueRepository.saveAll(newPrintQueueList); + } + } + + public List findMesQueueOrder(String workOrderNo, String organizeCode) { + if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean); + return queueOrderRao.findByHqlWhere(packBean); + } + + public MesPrintQueue getMesPrintQuanOrder(String workOrderNo, String organizeCode) { + if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean); + return printQueueRepository.getByProperty(packBean); + } + + private Long getMaxMesWorkOrderProductSeq(MesWorkOrder bean) { + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), "workOrderType", orderPackBean); + DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"productSeq"}, orderPackBean); + MesWorkOrder workOrder = baseRDao.getByProperty(orderPackBean); + return (long) (Objects.isNull(workOrder) || StringUtils.isEmpty(workOrder.getProductSeq()) ? 0d : Math.toIntExact(workOrder.getProductSeq().toString().endsWith("9") ? workOrder.getProductSeq() + 2 : workOrder.getProductSeq()+1)); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToWmsServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToWmsServiceImpl.java index 45bba95..95229fc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToWmsServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToWmsServiceImpl.java @@ -3,6 +3,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToWmsService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.MathOperation; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesBom; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToWms; @@ -41,4 +44,12 @@ public class MesWorkOrderToWmsServiceImpl extends BaseMesService findMesWorkOrderToWms(String workOrderNo, String organizeCode) { + if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workOrderNo,"workOrderNo",packBean); + return baseRDao.findByHqlWhere(packBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index d8ce013..7a0fee7 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -282,7 +282,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkCellCode(), "workCellCode", packBean); DdlPreparedPack.getStringBiggerPack(mesProductionRecord.getCompleteDateTimeStart(), "completeDateTime", packBean); DdlPreparedPack.getStringSmallerPack(mesProductionRecord.getCompleteDateTimeEnd(), "completeDateTime", packBean); - DdlPreparedPack.getStringEqualPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentCode(), "equipmentCode", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getEquipmentName(), "equipmentName", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getMouldNo(), "mouldNo", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getShiftGroup(), "shiftGroup", packBean); @@ -290,8 +290,8 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportStatus(), "reportStatus", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportType(), "reportType", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); - DdlPreparedPack.getStringEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); - DdlPreparedPack.getStringEqualPack(mesProductionRecord.getPartNo(), "partNo", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getIsTest(), "isTest", packBean); + DdlPreparedPack.getStringLikerPack(mesProductionRecord.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getPartName(), "partName", packBean); return packBean; }