diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy new file mode 100644 index 0000000..f152686 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesProductSn.groovy @@ -0,0 +1,66 @@ +import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.repository.IMesCrossOrganizeCfgRepository +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate +import org.springframework.util.CollectionUtils + +import javax.annotation.Resource + +/** + * @Description : 跨工厂防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/22 11:03 + * @Modify: + * */ +class MesToPiscesProductSn { + + public static final Logger LOGGER = LoggerFactory.getLogger(MesToPiscesProductSn.class) + + @Autowired + private IMesCrossOrganizeCfgRepository mesCrossOrganizeCfgRepository; + + @Resource(name = "mesDataSource") + private DynamicDataSourceProxy mesDataSource; + + def readData(MesInterfaceDataMapper mapper) throws Exception { + String organizeCode = mapper.getOrganizeCode(); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.CROSS_ORGANIZE_CFG_TYPE.REVERSE_SYNC.getValue(), "type", packBean) + List crossOrganizeCfgList = mesCrossOrganizeCfgRepository.findByHqlWhere(packBean); + if (CollectionUtils.isEmpty(crossOrganizeCfgList)) { + LOGGER.info("未查询到跨工厂配置"); + return new ArrayList<>(); + } + List> srcData = new ArrayList<>(); + //循环处理数据 + for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) { + Map params = new HashMap<>(); + params.put("srcOrganizeCode", crossOrganizeCfg.getOrganizeCode()) + params.put("partNo", crossOrganizeCfg.getPartNo()) + String sql = "select * from " + mapper.getSrcTableName() + " where organize_code = :srcOrganizeCode and part_no = :partNo and " + mapper.getSrcWhere() + " order by " + mapper.getSrcOrderBy() + " limit " + mapper.getSrcGetLimit() + //查询待同步的数据 + List> dataList = queryDataTable(sql, params); + if (!CollectionUtils.isEmpty(dataList)) { + //目标工厂 + for (Map rowMap : dataList) { + rowMap.put("DEST_ORGANIZE_CODE", crossOrganizeCfg.getSrcOrganizeCode()) + } + srcData.addAll(dataList); + } + } + return srcData; + } + + private List> queryDataTable(String sql, Map params) { + NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(mesDataSource.getDataSource()) + return namedJdbcTemplate.queryForList(sql, params); + } +} \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy index bbd4bc4..37e54f0 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy @@ -1,8 +1,10 @@ import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy import cn.estsh.i3plus.pojo.base.bean.DdlPackBean +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper import cn.estsh.i3plus.pojo.mes.repository.IMesCrossOrganizeCfgRepository +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired @@ -30,7 +32,9 @@ class PiscesToMesProductSn { def readData(MesInterfaceDataMapper mapper) throws Exception { String organizeCode = mapper.getOrganizeCode(); - List crossOrganizeCfgList = mesCrossOrganizeCfgRepository.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode)); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.CROSS_ORGANIZE_CFG_TYPE.SYNC.getValue(),"type",packBean) + List crossOrganizeCfgList = mesCrossOrganizeCfgRepository.findByHqlWhere(packBean); if (CollectionUtils.isEmpty(crossOrganizeCfgList)) { LOGGER.info("未查询到跨工厂配置"); return new ArrayList<>();