QMS同步MES_CCSC任务检测结果

tags/yfai-mes-ext-v1.0
gsz 12 months ago
parent 67f1953f20
commit a1a59e6c7e

@ -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 : QMSMES_CCSC
* @Reference :
* QMSMES_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)

@ -1,17 +1,20 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.api.base.IMesCcscTaskService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.api.busi.IMaximoService;
import cn.estsh.i3plus.ext.mes.pojo.model.MaximoParamModel;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.impp.framework.base.controller.MesBaseController;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@ -23,6 +26,11 @@ public class MesWhiteListController extends MesBaseController {
@Autowired
private IMaximoService maximoService;
@Autowired
private IMesWorkOrderService mesWorkOrderService;
@Autowired
private IMesCcscTaskService mesCcscTaskService;
@PostMapping(value = "/meter/main-data")
@ApiOperation(value = "Maximo仪表主数据", notes = "Maximo仪表主数据")
public Map doMeterMainData(@RequestBody MaximoParamModel paramModel) {
@ -56,5 +64,14 @@ public class MesWhiteListController extends MesBaseController {
// return ResultBean.success().setResultMap(resultMap).setSuccess((Boolean) resultMap.get("success"));
}
@GetMapping(value = "/ccscTest")
@ApiOperation(value = "ccsc", notes = " ")
public ResultBean doCcscTest(String organizeCode) {
List<MesWorkOrder> mesWorkOrderList = mesWorkOrderService.queryMesWorkOrderProcessToSap(organizeCode);
if (!CollectionUtils.isEmpty(mesWorkOrderList)){
mesCcscTaskService.doCcscTaskByMesWorkOrder(organizeCode,mesWorkOrderList);
}
return ResultBean.success().setSuccess(true);
}
}

@ -18,6 +18,8 @@ import cn.estsh.i3plus.pojo.mes.repository.MesCcscRuleRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesCcscTaskRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -28,6 +30,7 @@ import java.util.stream.Collectors;
@Service
@Slf4j
public class MesCcscTaskServiceImpl extends BaseMesService<MesCcscTask> implements IMesCcscTaskService {
public static final Logger LOGGER = LoggerFactory.getLogger(MesCcscTaskServiceImpl.class);
@Autowired
private MesCcscRuleRepository ccscRuleRDao;
@ -58,6 +61,7 @@ public class MesCcscTaskServiceImpl extends BaseMesService<MesCcscTask> implemen
@Override
public void doCcscTaskByMesWorkOrder(String organizeCode, List<MesWorkOrder> mesWorkOrderList) {
//查ccsc规则表
LOGGER.info("-------- doCcscTaskByMesWorkOrder---{}",organizeCode);
DdlPackBean ddlPackBeanRule = DdlPackBean.getDdlPackBean(organizeCode);
List<MesCcscRule> ccscRuleList = ccscRuleRDao.findByHqlWhere(ddlPackBeanRule);
Map<String, List<MesCcscRule>> ccscRulePartMap = ccscRuleList.stream().collect(Collectors.groupingBy(MesCcscRule::getPartNo));
@ -70,13 +74,16 @@ public class MesCcscTaskServiceImpl extends BaseMesService<MesCcscTask> implemen
//每一个加工的工单 1.查QMS同步过来的质量ccsc检查规则表
String nowTime = TimeTool.getNowTime(true);
if (StringUtil.isEmpty(ccscRulePartMap.get(mesWorkOrder.getPartNo()))) {
if (CollectionUtils.isEmpty(ccscRulePartMap.get(mesWorkOrder.getPartNo()))) {
continue;
}
LOGGER.info("-------- doCcscTaskByMesWorkOrder--80-{}",ccscRulePartMap.get(mesWorkOrder.getPartNo()));
MesCcscRule ccscRule = ccscRulePartMap.get(mesWorkOrder.getPartNo()).iterator().next();
if (nowTime.compareTo(ccscRule.getNextExeTime()) > 0) {
Integer frequency = ccscRule.getFrequency();
Integer rule = ccscRule.getRule();
LOGGER.info("-------- doCcscTaskByMesWorkOrder--83-{}",rule);
List<MesWorkOrder> mesWorkOrderToTask=new ArrayList<>();
//首件取第一个工单?还是全部工单都同步,取工单明细条码的首件条码?
switch (rule) {
@ -97,6 +104,7 @@ public class MesCcscTaskServiceImpl extends BaseMesService<MesCcscTask> implemen
default:
break;
}
LOGGER.info("-------- doCcscTaskByMesWorkOrder--105-");
String orderNo;
//新增质量检验任务 MesCcscTask 工单+物料查询发送Sap的数据
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -118,9 +126,11 @@ public class MesCcscTaskServiceImpl extends BaseMesService<MesCcscTask> implemen
.setErrorSolution("【CCSC_TASK_NO】请重新操作或查看服务")
.build();
}
LOGGER.info("-------- doCcscTaskByMesWorkOrder--129-insert");
insert(workOrder, orderNo, frequency, rule);
}
}
LOGGER.info("-------- doCcscTaskByMesWorkOrder--133-ccscRuleRDao.save");
//按照班次更新下次执行时间
ccscRule.setNextExeTime(CronUtil.getRecentTriggerTime(ccscRule.getCron()));
//设置末次执行时间

Loading…
Cancel
Save