数据同步脚本

tags/yfai-mes-ext-v1.0
jun 10 months ago
parent 15debc5dfb
commit ee3a6879cd

@ -0,0 +1,62 @@
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.mes.bean.shipping.MesShippingOrderManagement
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.util.StringUtils
/**
* @Description : MES2PISCES-
* @Reference :
* @Author : gsz
* @CreateDate 2024/7/14 10:59
* @Modify:
* */
class MesToPiscesMesJisShipping {
public static final Logger LOGGER = LoggerFactory.getLogger(MesToPiscesMesJisShipping.class)
@Autowired
private MesShippingOrderManagementRepository mesShippingOrderManagementRepository;
def filterData(MesInterfaceDataMapper mapper, List<Map<String, Object>> srcData) throws Exception {
if (srcData == null || srcData.size() == 0) {
return srcData
}
Map<String, MesShippingOrderManagement> mesPartShippingGroupMap = new HashMap<>();
String organizeCode = mapper.getOrganizeCode();
Map<String, Map<String, Object>> destData = new HashMap<>();
for (Map<String, Object> rowMap : srcData) {
if (!StringUtils.isEmpty(rowMap.get("shipping_order_code"))) {
MesShippingOrderManagement mesShipping = getMesShipping(organizeCode, String.valueOf(rowMap.get("shipping_order_code")), mesPartShippingGroupMap)
if (!Objects.isNull(mesShipping)) {
rowMap.put("HANDLE_FID", mesShipping.getFid())
} else {
LOGGER.info("shipping_order_code:{}信息不存在", String.valueOf(rowMap.get("shipping_order_code")))
}
}
//
String key = String.valueOf(rowMap.get("HANDLE_FID")) + String.valueOf("part_no")
if (destData.containsKey(key)) {
destData.get(key).put(key, MathOperation.add(Double.valueOf(destData.get(key).get("qty") + ""), Double.valueOf(rowMap.get("qty") + "")))
} else {
destData.put(key, rowMap)
}
}
return destData;
}
private MesShippingOrderManagement getMesShipping(String organizeCode, String shippingCode, Map<String, MesShippingOrderManagement> mesPartShippingGroupMap) {
if (Objects.isNull(mesPartShippingGroupMap) || !mesPartShippingGroupMap.containsKey(shippingCode)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(shippingCode, "shippingCode", ddlPackBean);
mesPartShippingGroupMap.put(shippingCode, mesShippingOrderManagementRepository.getByProperty(ddlPackBean))
}
return mesPartShippingGroupMap.get(shippingCode);
}
}

@ -0,0 +1,58 @@
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean
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 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 PiscesToMesProductSn {
public static final Logger LOGGER = LoggerFactory.getLogger(PiscesToMesProductSn.class)
@Autowired
private IMesCrossOrganizeCfgRepository mesCrossOrganizeCfgRepository;
@Resource(name = "pisces1DataSource")
private DynamicDataSourceProxy pisces1DataSource;
def readData(MesInterfaceDataMapper mapper) throws Exception {
String organizeCode = mapper.getOrganizeCode();
List<MesCrossOrganizeCfg> crossOrganizeCfgList = mesCrossOrganizeCfgRepository.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode));
if (CollectionUtils.isEmpty(crossOrganizeCfgList)) {
LOGGER.info("未查询到跨工厂配置");
return new ArrayList<>();
}
List<Map<String, Object>> srcData = new ArrayList<>();
//
for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) {
Map<String, Object> params = new HashMap<>();
params.put("srcOrganizeCode", crossOrganizeCfg.getSrcOrganizeCode())
params.put("partNo", crossOrganizeCfg.getPartNo())
String sql = "select top "+mapper.getSrcGetLimit()+" * from " + mapper.getSrcTableName() + " where PLANT = :srcOrganizeCode and PART_NO = :partNo and " + mapper.getSrcWhere() + " order by "+mapper.getSrcOrderBy()
//
List<Map<String, Object>> dataList = queryDataTable(sql, params);
if (!CollectionUtils.isEmpty(dataList)) {
srcData.addAll(dataList);
}
}
return srcData;
}
private List<Map<String, Object>> queryDataTable(String sql, Map<String, Object> params) {
NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(pisces1DataSource.getDataSource())
return namedJdbcTemplate.queryForList(sql, params);
}
}

@ -1,10 +1,18 @@
import cn.estsh.i3plus.ext.mes.api.busi.IMesInputDefectRecordService
import cn.estsh.i3plus.platform.common.tool.TimeTool
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack
import cn.estsh.i3plus.pojo.mes.bean.MesDefectType
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
import cn.estsh.i3plus.pojo.mes.repository.MesDefectTypeRepository
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderToSapRepository
import lombok.Getter
import lombok.Setter
import org.apache.commons.collections.CollectionUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
@ -33,6 +41,15 @@ class sapToMesCcscTaskResult {
@Resource(name = "mesDataSource")
private DynamicDataSourceProxy mesDataSource;
@Autowired
private MesProduceSnRepository mesProduceSnRepository;
@Autowired
private IMesInputDefectRecordService mesInputDefectRecordService;
@Autowired
private MesDefectTypeRepository mesDefectTypeRepository;
@Getter
@Setter
private Connection mesConn;
@ -46,6 +63,7 @@ class sapToMesCcscTaskResult {
List<Map<String, Object>> destData = new ArrayList<>();
List<String> insertSqlList = new ArrayList<>();
MesDefectType mesDefect = null;
for (Map<String, Object> rowMap : srcData) {
String organizeCode = String.valueOf(rowMap.get("WERKS"));
String taskNo = rowMap.get("task_no").toString();
@ -89,12 +107,18 @@ class sapToMesCcscTaskResult {
, part_no, part_no, part_no, 1, work_cell_code, work_center_code,
snowflakeIdMaker.nextId(), organizeCode, TimeTool.getNowTime(true), "CCSC_SAP");
insertSqlList.add(insertSql);
//
String sqlWorkSn = "update mes_produce_sn set qc_status=30 " +
" where organize_code= '"+organizeCode+"' and work_center_code= '"+work_center_code+"' " +
" and work_cell_code= '"+work_cell_code+"' "+
" and part_no= '"+part_no+"'; ";
insertSqlList.add(sqlWorkSn);
//
List<MesProduceSn> mesProduceSnList = getMesProduceSn(organizeCode, work_center_code, work_cell_code, part_no)
if(CollectionUtils.isNotEmpty(mesProduceSnList)){
if(Objects.isNull(mesDefect)){
mesDefect = getMesDefect(organizeCode)
}
//
for (MesProduceSn mesProduceSn : mesProduceSnList) {
mesInputDefectRecordService.savePartInspection(mesProduceSn, "JOB",mesDefect,"A01")
}
}
}
}
@ -114,6 +138,20 @@ class sapToMesCcscTaskResult {
return destData;
}
private MesDefectType getMesDefect(String organizeCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode)
DdlPreparedPack.getStringEqualPack("CCSC", "defectTypeCode", packBean);
return mesDefectTypeRepository.getByProperty(packBean)
}
private List<MesProduceSn> getMesProduceSn(String organizeCode, String work_center_code, String work_cell_code, String part_no) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode)
DdlPreparedPack.getStringEqualPack(work_center_code, "workCenterCode", packBean);
DdlPreparedPack.getStringEqualPack(work_cell_code, "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(part_no, "partNo", packBean);
return mesProduceSnRepository.findByHqlWhere(packBean)
}
private List<Map<String, Object>> queryDataTable(String sql, Map<String, Object> params) {
NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(mesDataSource.getDataSource())

@ -0,0 +1,68 @@
package cn.estsh.i3plus.ext.mes.apiservice.cus_suit;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy;
import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
/**
* @Description : pisces1
* @Reference :
* @Author : junsheng.li
* @CreateDate 2024/7/9 11:14
* @Modify:
**/
@Configuration
public class Pisces1Properties {
public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG);
/***********************
* pisces1
*/
@Value("${impp.pisces1.datasource.isopen}")
@Getter
private boolean piscesIsOpen;
@Value("${impp.pisces1.datasource.driver-class-name}")
@Getter
private String piscesDriverClassName;
@Value("${impp.pisces1.datasource.alias}")
@Getter
private String piscesDsAlias;
@Value("${impp.pisces1.datasource.jdbc-url}")
@Getter
private String piscesDsJdbcUrl;
@Value("${impp.pisces1.datasource.username}")
@Getter
private String piscesDsUsername;
@Value("${impp.pisces1.datasource.password}")
@Getter
private String piscesDsPassword;
@ConditionalOnExpression("'${impp.pisces1.datasource.isopen:false}' == 'true'")
@Bean(name = "pisces1DataSource")
public DynamicDataSourceProxy initPiscesCustomerSet(){
LOGGER.info("【初始化客户定制化...】");
/**
*
*/
LOGGER.info("【客户定制化pisces1数据源加载...】");
DynamicDataSourceProxy piscesDataSource = DynamicDataSourceProxy.initDataSourceFactory(this.getPiscesDriverClassName(),
this.getPiscesDsJdbcUrl(),this.getPiscesDsUsername(),this.getPiscesDsPassword(),TimeUnit.MINUTES.toMillis(30));
return piscesDataSource;
}
}

@ -60,7 +60,6 @@ public class PiscesProperties {
*
*/
LOGGER.info("【客户定制化pisces数据源加载...】");
//安道拓定制业务
DynamicDataSourceProxy piscesDataSource = DynamicDataSourceProxy.initDataSourceFactory(this.getPiscesDriverClassName(),
this.getPiscesDsJdbcUrl(),this.getPiscesDsUsername(),this.getPiscesDsPassword(),TimeUnit.MINUTES.toMillis(30));

@ -50,6 +50,10 @@ public class MesSAPDbAdapter {
@Resource(name = "piscesDataSource")
private DynamicDataSourceProxy piscesDataSourceProxy;
@Resource(name = "pisces1DataSource")
private DynamicDataSourceProxy pisces1DataSourceProxy;
@Value("${sync.redis.time:1800}")
private Integer redisTime;
@ -77,7 +81,8 @@ public class MesSAPDbAdapter {
private WmsSAPDbWriter buildWriter(String groupName,
DynamicDataSourceProxy sapDataSourceProxy,
DynamicDataSourceProxy mesDataSourceProxy,
DynamicDataSourceProxy piscesDataSourceProxy) throws Exception {
DynamicDataSourceProxy piscesDataSourceProxy,
DynamicDataSourceProxy pisces1DataSourceProxy) throws Exception {
WmsSAPDbWriter wmsSAPDbWriter = null;
@ -97,7 +102,13 @@ public class MesSAPDbAdapter {
wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, piscesDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES12MES.getName())) {
wmsSAPDbWriter = new WmsSAPDbWriter(pisces1DataSourceProxy, mesDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES1.getName())) {
wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, pisces1DataSourceProxy);
}
// new 的对象需要手工注入 bean
@ -128,7 +139,8 @@ public class MesSAPDbAdapter {
private WmsSAPDbReader buildReader(String groupName,
DynamicDataSourceProxy sapDataSourceProxy,
DynamicDataSourceProxy mesDataSourceProxy,
DynamicDataSourceProxy piscesDataSourceProxy) {
DynamicDataSourceProxy piscesDataSourceProxy,
DynamicDataSourceProxy pisces1DataSourceProxy) {
WmsSAPDbReader wmsSAPDbReader = null;
@ -148,6 +160,14 @@ public class MesSAPDbAdapter {
wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES12MES.getName())) {
wmsSAPDbReader = new WmsSAPDbReader(pisces1DataSourceProxy);
}
if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES1.getName())) {
wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy);
}
// if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.WMS2MES.getName())) {
// wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy);
// }
@ -200,11 +220,11 @@ public class MesSAPDbAdapter {
// 不需要在这里处理
//initConnection();
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy);
writer.setSrcConn(this.srcConn);
writer.setDestConn(this.destConn);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy);
reader.setSrcConn(this.srcConn);
@ -361,11 +381,11 @@ public class MesSAPDbAdapter {
// 不需要在这里处理
//initConnection();
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy);
writer.setSrcConn(this.srcConn);
writer.setDestConn(this.destConn);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy);
reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy);
reader.setSrcConn(this.srcConn);

@ -28,6 +28,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
@ -315,6 +316,7 @@ public class MesShippingOrderManagementService extends BaseMesService<MesShippin
jisShipping.setUnit(part.getUnit());
}
jisShipping.setOffTime(TimeTool.getNowTime(true));
jisShipping.setFid(UUID.randomUUID().toString());
ConvertBean.serviceModelInitialize(jisShipping, AuthUtil.getSessionUser().getUserName());
jisShippingList.add(jisShipping);
});

Loading…
Cancel
Save