diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy new file mode 100644 index 0000000..4a17a4e --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesRawPartCharging.groovy @@ -0,0 +1,69 @@ +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackage +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackageDetail +import cn.estsh.i3plus.pojo.mes.bean.MesRawPackagePart +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.repository.MesRawPackageDetailRepository +import cn.estsh.i3plus.pojo.mes.repository.MesRawPackagePartRepository +import cn.estsh.i3plus.pojo.mes.repository.MesRawPackageRepository +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.util.StringUtils + +/** + * @Description : 加料防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/13 13:03 + * @Modify: + **/ +class MesToPiscesRawPartCharging { + + public static final Logger LOGGER = LoggerFactory.getLogger(MesToPiscesRawPartCharging.class) + + @Autowired + private MesRawPackageRepository mesRawPackageRepository; + + @Autowired + private MesRawPackageDetailRepository mesRawPackageDetailRepository; + + @Autowired + private MesRawPackagePartRepository mesRawPackagePartRepository; + + def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { + if (srcData == null || srcData.size() == 0) { + return srcData + } + for (Map rowMap : srcData) { + //原材料容器 + if (!StringUtils.isEmpty(rowMap.get("PACKAGE_ID"))) { + MesRawPackage mesRawPackage = mesRawPackageRepository.getById(Long.parseLong(String.valueOf(rowMap.get("PACKAGE_ID")))) + if (!Objects.isNull(mesRawPackage)) { + rowMap.put("PACKAGE_NAME", mesRawPackage.getName()) + rowMap.put("PACKAGE_FID", mesRawPackage.getFid()) + } else { + LOGGER.info("原材料容器id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("PACKAGE_ID")))) + } + } + //防错配置明细 + if (!StringUtils.isEmpty(rowMap.get("package_detail_id"))) { + MesRawPackageDetail mesRawPackageDetail = mesRawPackageDetailRepository.getById(Long.parseLong(String.valueOf(rowMap.get("package_detail_id")))) + if (!Objects.isNull(mesRawPackageDetail)) { + rowMap.put("PACKAGE_DETAIL_FID", mesRawPackageDetail.getFid()) + } else { + LOGGER.info("原材料容器明细id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("package_detail_id")))) + } + } + //原材料容器零件关系表 + if (!StringUtils.isEmpty(rowMap.get("package_part_id"))) { + MesRawPackagePart mesRawPackagePart = mesRawPackagePartRepository.getById(Long.parseLong(String.valueOf(rowMap.get("package_part_id")))) + if (!Objects.isNull(mesRawPackagePart)) { + rowMap.put("PACKAGE_PART_FID", mesRawPackagePart.getFid()) + } else { + LOGGER.info("原材料容器明细id:{},信息不存在", String.valueOf(rowMap.get(rowMap.get("package_detail_id")))) + } + } + } + return srcData; + } +} \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesWorkOrder.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesWorkOrder.groovy new file mode 100644 index 0000000..721fa27 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesWorkOrder.groovy @@ -0,0 +1,105 @@ +import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup +import cn.estsh.i3plus.pojo.mes.bean.MesPartSap +import cn.estsh.i3plus.pojo.mes.bean.MesProductVersion +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelRepository +import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupRepository +import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.util.StringUtils + +/** + * @Description : 工单同步 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/12 12:28 + * @Modify: + * */ +class MesToPiscesWorkOrder { + + public static final Logger LOGGER = LoggerFactory.getLogger(MesToPiscesWorkOrder.class) + + @Autowired + private MesPartProdGroupRepository mesPartProdGroupRepository; + + @Autowired + private MesProductVersionRepository mesProductVersionRepository; + + @Autowired + private IMesPartSapService mesPartSapService; + + @Autowired + private MesCustomerCarModelRepository mesCustomerCarModelRepository; + + def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { + if (srcData == null || srcData.size() == 0) { + return srcData + } + String organizeCode = mapper.getOrganizeCode(); + for (Map rowMap : srcData) { + if (!StringUtils.isEmpty(rowMap.get("PART_NO")) && !StringUtils.isEmpty(rowMap.get("PRODUCT_VERSION")) && !StringUtils.isEmpty(rowMap.get("ERP_WORK_CENTER"))) { + MesProductVersion mesProductVersion = getMesProductVersion(organizeCode, String.valueOf(rowMap.get(rowMap.get("PART_NO"))), String.valueOf(rowMap.get("PRODUCT_VERSION")), String.valueOf(rowMap.get("ERP_WORK_CENTER"))) + if (!Objects.isNull(mesProductVersion)) { + rowMap.put("BOM_CODE", mesProductVersion.getAlternativePartList()) + } else { + LOGGER.info("物料{}生产版本{}工作中心{},信息不存在", String.valueOf(rowMap.get(rowMap.get("PART_NO"))), String.valueOf(rowMap.get(rowMap.get("PRODUCT_VERSION"))), String.valueOf(rowMap.get(rowMap.get("ERP_WORK_CENTER")))) + } + } + //获取物料信息 + if (!StringUtils.isEmpty(rowMap.get("PART_NO"))) { + try { + MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(String.valueOf(rowMap.get(rowMap.get("PART_NO"))), organizeCode) + rowMap.put("UOM", mesPartSap.getUnit()) + } catch (Exception e) { + LOGGER.info("物料{},信息不存在", String.valueOf(rowMap.get("PART_NO"))) + } + } + //获取零件生产组 + if (!StringUtils.isEmpty(rowMap.get("PART_PROD_GROUP_CODE"))) { + MesPartProdGroup mesPartProdGroup = getMesPartProdGroup(organizeCode, String.valueOf(rowMap.get(rowMap.get("PART_PROD_GROUP_CODE")))); + if (!Objects.isNull(mesPartProdGroup)) { + rowMap.put("PRODUCT_GROUP_ID", mesPartProdGroup.getId()) + } else { + LOGGER.info("零件生产组{}信息不存在", String.valueOf(rowMap.get("PART_PROD_GROUP_CODE"))) + } + } + + //获取车型名称 + if (!StringUtils.isEmpty(rowMap.get("CAR_MODEL_CODE"))) { + MesCustomerCarModel mesCustomerCarModel = getMesCustomerCarModel(organizeCode, String.valueOf(rowMap.get(rowMap.get("CAR_MODEL_CODE")))) + if (!Objects.isNull(mesCustomerCarModel)) { + rowMap.put("VEHICLE_NAME", mesCustomerCarModel.getCarModelName()) + } else { + LOGGER.info("车型代码{}信息不存在", String.valueOf(rowMap.get("CAR_MODEL_CODE"))) + } + } + } + return srcData; + } + + private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String workCenterCode, String productVersion) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(productVersion, "productVersion", ddlPackBean); + return mesProductVersionRepository.getByProperty(ddlPackBean); + } + + private MesPartProdGroup getMesPartProdGroup(String organizeCode, String partProdGroupCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partProdGroupCode, "partProdGroupCode", ddlPackBean); + return mesPartProdGroupRepository.getByProperty(ddlPackBean); + } + + private MesCustomerCarModel getMesCustomerCarModel(String organizeCode, String carModelCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(carModelCode, "carModelCode", ddlPackBean); + return mesCustomerCarModelRepository.getByProperty(ddlPackBean); + } +} \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesWorkOrder.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesWorkOrder.groovy index 66f711c..d7a0891 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesWorkOrder.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesWorkOrder.groovy @@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup import cn.estsh.i3plus.pojo.mes.bean.MesProductVersion import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelRepository import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupRepository import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository @@ -36,11 +37,13 @@ class PiscesToMesWorkOrder { if (srcData == null || srcData.size() == 0) { return srcData } + String organizeCode = mapper.getOrganizeCode(); for (Map rowMap : srcData) { + //赋值 MesWorkCenter mesWorkCenter = null; if (!StringUtils.isEmpty(rowMap.get("ASSEMBLY_LINE"))) { String workCenterCode = String.valueOf(rowMap.get("ASSEMBLY_LINE")); - mesWorkCenter = getMesWorkCenter(mapper, workCenterCode, mesWorkCenter) + mesWorkCenter = getMesWorkCenter(organizeCode, workCenterCode) if (!Objects.isNull(mesWorkCenter)) { rowMap.put("WORK_CENTER_CODE", mesWorkCenter.getWorkCenterCode()) rowMap.put("ERP_WORK_CENTER", mesWorkCenter.getErpWorkCenter()) @@ -49,18 +52,18 @@ class PiscesToMesWorkOrder { } } //获取零件生产组 - if (!StringUtils.isEmpty(rowMap.get("VERID"))) { - MesPartProdGroup mesPartProdGroup = mesPartProdGroupRepository.getById(Long.parseLong(String.valueOf(rowMap.get("VERID")))) + if (!StringUtils.isEmpty(rowMap.get("PRODUCT_GROUP_ID"))) { + MesPartProdGroup mesPartProdGroup = mesPartProdGroupRepository.getById(Long.parseLong(String.valueOf(rowMap.get("PRODUCT_GROUP_ID")))) if (!Objects.isNull(mesPartProdGroup)) { rowMap.put("PART_PROD_GROUP_CODE", mesPartProdGroup.getPartProdGroupCode()) rowMap.put("PART_PROD_GROUP_NAME", mesPartProdGroup.getPartProdGroupName()) } else { - LOGGER.info("id:{}零件生产组信息不存在", String.valueOf(rowMap.get("VERID"))) + LOGGER.info("id:{}零件生产组信息不存在", String.valueOf(rowMap.get("PRODUCT_GROUP_ID"))) } } //获取生产版本信息 if (!StringUtils.isEmpty(rowMap.get("part_no")) && !Objects.isNull(mesWorkCenter)) { - MesProductVersion mesProductVersion = getMesProductVersion(mapper, rowMap, mesWorkCenter) + MesProductVersion mesProductVersion = getMesProductVersion(organizeCode, String.valueOf(rowMap.get("part_no")), mesWorkCenter.getErpWorkCenter()) if (!Objects.isNull(mesProductVersion)) { rowMap.put("PRODUCT_VERSION", mesProductVersion.getProductVersion()) } else { @@ -71,17 +74,17 @@ class PiscesToMesWorkOrder { return srcData; } - private MesWorkCenter getMesWorkCenter(MesInterfaceDataMapper mapper, String workCenterCode, MesWorkCenter mesWorkCenter) { - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mapper.getOrganizeCode()); + private MesWorkCenter getMesWorkCenter(String organizeCode, String workCenterCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean); return mesWorkCenterRepository.getByProperty(ddlPackBean); } - private MesProductVersion getMesProductVersion(MesInterfaceDataMapper mapper, Map rowMap, MesWorkCenter mesWorkCenter) { - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mapper.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(String.valueOf(rowMap.get("part_no")), "partNo", ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean); + private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String erpWorkCenter) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(erpWorkCenter, "workCenterCode", ddlPackBean); ddlPackBean.setOrderByStr(" order by createDatetime desc "); return mesProductVersionRepository.getByProperty(ddlPackBean); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java index 8750057..854c57d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/WmsSAPDbQuery.java @@ -3,9 +3,11 @@ package cn.estsh.i3plus.ext.mes.apiservice.dbinterface; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.impp.framework.boot.util.LocaleUtils; import lombok.Getter; import lombok.Setter; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,6 +91,9 @@ public class WmsSAPDbQuery { * @throws Exception */ public String strFormat(String value, String srcFormat, String destFormat) throws Exception { + if(StringUtil.isEmpty(value)){ + return ""; + } return TimeTool.parseStringFormat(value, srcFormat, destFormat); } /** @@ -124,4 +129,24 @@ public class WmsSAPDbQuery { } return result.get(0).get("part_name").toString(); } + + /** + * 根据sql查询信息 + * + * @param sql + * @return + * @throws Exception + */ + public String getColumnDateBySql(String sql, String params, String column) throws Exception { + String[] split = null; + if (!StringUtil.isEmpty(params)) { + split = params.split(","); + } + List> result = mesDataSourceProxy.queryMapList(srcConn, sql, split); + if (CollectionUtils.isNotEmpty(result)) { + return result.get(0).get(column).toString(); + } else { + return ""; + } + } } 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 89521f7..381e050 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 @@ -365,6 +365,7 @@ public class MesWorkOrderService extends BaseMesService implements item.setProduceTime(TimeTool.getToday()); } item.setUnCompleteQty(item.getQty()); + item.setFid(UUID.randomUUID().toString()); //保存发送WMS数据 if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) { mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms); @@ -760,6 +761,7 @@ public class MesWorkOrderService extends BaseMesService implements sendToWms(mesProductVersionMap, mesBomMap, mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesWorkCenter); } item.setUnCompleteQty(item.getQty()); + item.setFid(UUID.randomUUID().toString()); index++; } return mesWorkOrderToWmsList; @@ -1342,6 +1344,7 @@ public class MesWorkOrderService extends BaseMesService implements } item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + item.setFid(UUID.randomUUID().toString()); ConvertBean.serviceModelInitialize(item, userName); MesWorkOrder mesWorkOrder = workOrderRepository.insert(item); //保存发送WMS数据