import cn.estsh.i3plus.pojo.base.bean.DdlPackBean import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack 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.MesPartProdGroupRepository import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository 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 PiscesToMesWorkOrder { public static final Logger LOGGER = LoggerFactory.getLogger(PiscesToMesWorkOrder.class) @Autowired private MesWorkCenterRepository mesWorkCenterRepository; @Autowired private MesPartProdGroupRepository mesPartProdGroupRepository; @Autowired private MesProductVersionRepository mesProductVersionRepository; def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { if (srcData == null || srcData.size() == 0) { return srcData } 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) if (!Objects.isNull(mesWorkCenter)) { rowMap.put("WORK_CENTER_CODE", mesWorkCenter.getWorkCenterCode()) rowMap.put("REP_WORK_CENTER", mesWorkCenter.getErpWorkCenter()) } else { LOGGER.info("工作中心{},信息不存在", workCenterCode) } } //获取零件生产组 if (!StringUtils.isEmpty(rowMap.get("VERID"))) { MesPartProdGroup mesPartProdGroup = mesPartProdGroupRepository.getById(Long.parseLong(String.valueOf(rowMap.get("VERID")))) 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"))) } } //获取生产版本信息 if (!StringUtils.isEmpty(rowMap.get("part_no")) && !Objects.isNull(mesWorkCenter)) { MesProductVersion mesProductVersion = getMesProductVersion(mapper, rowMap, mesWorkCenter) if (!Objects.isNull(mesProductVersion)) { rowMap.put("PRODUCT_VERSION", mesProductVersion.getProductVersion()) } else { LOGGER.info("物料{},工作中心{},生产版本信息不存在", String.valueOf(rowMap.get("part_no")), mesWorkCenter.getErpWorkCenter()) } } } return srcData; } private MesWorkCenter getMesWorkCenter(MesInterfaceDataMapper mapper, String workCenterCode, MesWorkCenter mesWorkCenter) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mapper.getOrganizeCode()); 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); ddlPackBean.setOrderByStr(" order by createDatetime desc "); return mesProductVersionRepository.getByProperty(ddlPackBean); } }