|
|
|
@ -1,45 +1,32 @@
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean
|
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool
|
|
|
|
|
import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesComunicationLog
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesCcscTask
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesCcscTaskRepository
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesComunicationLogRepository
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository
|
|
|
|
|
import cn.estsh.i3plus.pojo.wms.dbinterface.WmsInterfaceDataMapper
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderToSapRepository
|
|
|
|
|
import lombok.Getter
|
|
|
|
|
import lombok.Setter
|
|
|
|
|
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
|
|
|
|
|
import java.sql.Connection
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description : QMS同步MES_CCSC任务检测结果
|
|
|
|
|
* @Reference :
|
|
|
|
|
* QMS同步MES_CCSC任务检测结果
|
|
|
|
|
* @Author : gsz
|
|
|
|
|
* @CreateDate 2024/5/23 9:58
|
|
|
|
|
* @Modify:
|
|
|
|
|
* */
|
|
|
|
|
*/
|
|
|
|
|
class sapToMesCcscTaskResult {
|
|
|
|
|
|
|
|
|
|
public static final Logger LOGGER = LoggerFactory.getLogger(sapToMesCcscTaskResult.class)
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesCcscTaskRepository mesCcscTaskRDao;
|
|
|
|
|
private SnowflakeIdMaker snowflakeIdMaker;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesComunicationLogRepository mesComunicationLogRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnRepository mesProduceSnRDao;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesWorkOrderRepository mesWorkOrderRDao;
|
|
|
|
|
private MesWorkOrderToSapRepository mesWorkOrderToSapRDao;
|
|
|
|
|
|
|
|
|
|
@Resource(name = "yfasDataSource")
|
|
|
|
|
private DynamicDataSourceProxy yfasDataSource;
|
|
|
|
|
|
|
|
|
@ -50,80 +37,85 @@ class sapToMesCcscTaskResult {
|
|
|
|
|
@Setter
|
|
|
|
|
private Connection mesConn;
|
|
|
|
|
|
|
|
|
|
def filterData(WmsInterfaceDataMapper mapper, List<Map<String, Object>> srcData) {
|
|
|
|
|
def filterData(MesInterfaceDataMapper mapper, List<Map<String, Object>> srcData) throws Exception {
|
|
|
|
|
if (srcData == null || srcData.size() == 0) {
|
|
|
|
|
LOGGER.error("----QMS同步MES_CCSC任务检测结果 no data to filter----");
|
|
|
|
|
return srcData;
|
|
|
|
|
return srcData
|
|
|
|
|
}
|
|
|
|
|
String organizeCode = mapper.getOrganizeCode();
|
|
|
|
|
|
|
|
|
|
for (Map<String, Object> map : srcData) {
|
|
|
|
|
String taskNo = map.get("task_no").toString();
|
|
|
|
|
String taskResult = map.get("task_result").toString(); //1:合格 2:不合格
|
|
|
|
|
//查询 mesCcscTask
|
|
|
|
|
MesCcscTask mesCcscTask = mesCcscTaskRDao.getByProperty(
|
|
|
|
|
["taskNo", "organizeCode", "isValid", "isDeleted"] as String[],
|
|
|
|
|
[taskNo, organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue()] as Object[]);
|
|
|
|
|
|
|
|
|
|
if (null == mesCcscTask) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
LOGGER.info("QMS同步MES_CCSC任务检测结果 taskNo:{}", taskNo);
|
|
|
|
|
|
|
|
|
|
//根据任务工单号和物料查工单表
|
|
|
|
|
MesWorkOrder mesWorkOrder = mesWorkOrderRDao.getByProperty(
|
|
|
|
|
["workOrderNo", "partNo", "organizeCode", "isValid", "isDeleted"] as String[],
|
|
|
|
|
[mesCcscTask.getWorkOrderNo(), mesCcscTask.getPartNo(), organizeCode,
|
|
|
|
|
CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue()] as Object[]);
|
|
|
|
|
Map<String, Map<String, Object>> destMapData = new HashMap<>();
|
|
|
|
|
LOGGER.info("-------- filterData Start QMS同步MES_CCSC任务检测结果 ---------------")
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> destData = new ArrayList<>();
|
|
|
|
|
List<String> insertSqlList = new ArrayList<>();
|
|
|
|
|
for (Map<String, Object> rowMap : srcData) {
|
|
|
|
|
String organizeCode = String.valueOf(rowMap.get("WERKS"));
|
|
|
|
|
String taskNo = rowMap.get("task_no").toString();
|
|
|
|
|
String taskResult = rowMap.get("task_result").toString(); //1:合格 2:不合格
|
|
|
|
|
|
|
|
|
|
Map<String, Object> sqlParams = new HashMap<>(6)
|
|
|
|
|
sqlParams.put("organizeCode", organizeCode);
|
|
|
|
|
sqlParams.put("task_no", taskNo);
|
|
|
|
|
StringBuffer sql = new StringBuffer("select * from mes_ccsc_task where " +
|
|
|
|
|
" organize_code=:organizeCode and task_no=:task_no ; ");
|
|
|
|
|
List<Map<String, Object>> resultMap = this.queryDataTable(sql.toString(), sqlParams)
|
|
|
|
|
|
|
|
|
|
insertSqlList.add("update mes_ccsc_task set task_result = '"+taskResult+ "' " +
|
|
|
|
|
" where organize_code= '"+organizeCode+"' and task_no= '"+taskNo+"'; ");
|
|
|
|
|
|
|
|
|
|
LOGGER.info("-------- filterData Start QMS同步MES_CCSC任务检测结果 60----------")
|
|
|
|
|
|
|
|
|
|
if (resultMap.size() > 0) {
|
|
|
|
|
sqlParams.put("work_order_no", resultMap.get(0).get("work_order_no"));
|
|
|
|
|
String part_no = resultMap.get(0).get("part_no")
|
|
|
|
|
sqlParams.put("part_no", part_no);
|
|
|
|
|
StringBuffer sqlWork = new StringBuffer("select * from mes_work_order where " +
|
|
|
|
|
" organize_code=:organizeCode and work_order_no=:work_order_no and part_no=:part_no ; ");
|
|
|
|
|
List<Map<String, Object>> resultWorkMap = this.queryDataTable(sqlWork.toString(), sqlParams)
|
|
|
|
|
|
|
|
|
|
if (resultWorkMap.size() > 0) {
|
|
|
|
|
String work_center_code = resultWorkMap.get(0).get("work_center_code")
|
|
|
|
|
String work_cell_code = resultWorkMap.get(0).get("work_cell_code")
|
|
|
|
|
|
|
|
|
|
LOGGER.info("-------- filterData Start QMS同步MES_CCSC任务检测结果 70{}",work_center_code)
|
|
|
|
|
String logUpdateSql="update mes_comunication_log set is_deleted = 1 " +
|
|
|
|
|
" where organize_code= '"+organizeCode+"' and work_center_code= '"+work_center_code+"' " +
|
|
|
|
|
" and work_cell_code= '"+work_cell_code+"' and parameter_name= '"+part_no+"'; "
|
|
|
|
|
insertSqlList.add(logUpdateSql);
|
|
|
|
|
|
|
|
|
|
if (null == mesWorkOrder) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesComunicationLog comunicationLog = mesComunicationLogRDao.getByProperty(
|
|
|
|
|
["workCenterCode", "workOrderNo", "value", "organizeCode", "isValid", "isDeleted"] as String[],
|
|
|
|
|
[mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getWorkCellCode(), mesCcscTask.getPartNo(),
|
|
|
|
|
organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue()] as Object[]);
|
|
|
|
|
//软删记录 不合格时新增一条
|
|
|
|
|
if (null != comunicationLog) {
|
|
|
|
|
mesComunicationLogRDao.deleteWeaklyById(comunicationLog.getId())
|
|
|
|
|
}
|
|
|
|
|
if (taskResult.equals("2")) { //1:合格 2:不合格
|
|
|
|
|
MesComunicationLog mesComunicationLog = new MesComunicationLog();
|
|
|
|
|
mesComunicationLog.setOrganizeCode(organizeCode);
|
|
|
|
|
mesComunicationLog.setWorkCellCode(mesCcscTask.getWorkOrderNo());
|
|
|
|
|
mesComunicationLog.setWorkCenterCode(mesCcscTask.getWorkOrderNo());
|
|
|
|
|
mesComunicationLog.setStatus(1);
|
|
|
|
|
mesComunicationLog.setParameterName(mesCcscTask.getPartNo());
|
|
|
|
|
mesComunicationLog.setParameterDesc(mesCcscTask.getPartNameRdd());
|
|
|
|
|
mesComunicationLog.setValue(mesCcscTask.getPartNo());
|
|
|
|
|
ConvertBean.serviceModelInitialize(mesComunicationLog, "CCSC_SAP");
|
|
|
|
|
mesComunicationLogRDao.save(mesComunicationLog);
|
|
|
|
|
String insertSql = String.format(" INSERT INTO mes_comunication_log " +
|
|
|
|
|
"(`parameter_name`,`parameter_desc`,`value`,`status`,`work_cell_code`,`work_center_code`, " +
|
|
|
|
|
"`id`,`organize_code`,`create_date_time`,`create_user` )" +
|
|
|
|
|
"VALUES('%s', '%s','%s','%s','%s','%s','%s','%s','%s','%s') ; "
|
|
|
|
|
, part_no, part_no, part_no, 1, work_cell_code, work_center_code,
|
|
|
|
|
snowflakeIdMaker.nextId(), organizeCode, TimeTool.getNowTime(true), "CCSC_SAP");
|
|
|
|
|
insertSqlList.add(insertSql);
|
|
|
|
|
//更新所有条码为可疑品
|
|
|
|
|
List<MesProduceSn> mesProduceSnList = mesProduceSnRDao.findByProperty(
|
|
|
|
|
["workCenterCode", "workOrderNo", "partNo", "organizeCode", "isValid", "isDeleted"] as String[],
|
|
|
|
|
[mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getWorkCellCode(), mesCcscTask.getPartNo(),
|
|
|
|
|
organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue()] as Object[]);
|
|
|
|
|
if (!CollectionUtils.isEmpty(mesProduceSnList)) {//todo 可疑品状态?
|
|
|
|
|
mesProduceSnList.forEach(
|
|
|
|
|
{
|
|
|
|
|
sn ->
|
|
|
|
|
sn.setQcStatus(30)
|
|
|
|
|
ConvertBean.serviceModelUpdate(sn, "CCSC_SAP")
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
destData.add(rowMap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 过滤逻辑处理完后一定要把数据集返回,否则后续的处理逻辑不会执行
|
|
|
|
|
LOGGER.info("[----QMS同步MES_CCSC任务检测结果srcData:{}", srcData);
|
|
|
|
|
return srcData;
|
|
|
|
|
//更新同步标识
|
|
|
|
|
this.mesConn = mesDataSource.getWriteConnectionWithoutPool();
|
|
|
|
|
mesDataSource.executeAsBatch(insertSqlList, mesConn)
|
|
|
|
|
mesDataSource.closeConnectionWithoutPoll(this.mesConn)
|
|
|
|
|
|
|
|
|
|
//更新同步标识
|
|
|
|
|
// this.mesConn = yfasDataSource.getWriteConnectionWithoutPool();
|
|
|
|
|
// yfasDataSource.executeAsBatch(updateSqlList,mesConn)
|
|
|
|
|
// yfasDataSource.closeConnectionWithoutPoll(this.mesConn)
|
|
|
|
|
return destData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<Map<String, Object>> queryDataTable(String sql, Map<String, Object> params) {
|
|
|
|
|
NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(yfasDataSource.getDataSource())
|
|
|
|
|
NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(mesDataSource.getDataSource())
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> dataMap = namedJdbcTemplate.queryForList(sql, params)
|
|
|
|
|
|
|
|
|
|