问题清单修复

tags/yfai-mes-ext-v1.1
jun 9 months ago
parent d81c9d9cc3
commit c4d113ce05

@ -1,3 +1,4 @@
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.tool.DdlPreparedPack
@ -5,13 +6,17 @@ 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 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 org.springframework.util.StringUtils
import javax.annotation.Resource
import java.sql.Connection
/**
* @Description :
@ -30,6 +35,10 @@ class MesToPiscesProductSn {
@Resource(name = "mesDataSource")
private DynamicDataSourceProxy mesDataSource;
@Getter
@Setter
private Connection mesConn;
def readData(MesInterfaceDataMapper mapper) throws Exception {
String organizeCode = mapper.getOrganizeCode();
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -40,12 +49,19 @@ class MesToPiscesProductSn {
return new ArrayList<>();
}
List<Map<String, Object>> srcData = new ArrayList<>();
List<String> updateList = new ArrayList<>();
//
for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) {
Map<String, Object> 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()
if (StringUtils.isEmpty(crossOrganizeCfg.getLastCreateDatetime())) {
params.put("createDateTime", TimeTool.pareDateToString(new Date(0)));
} else {
params.put("createDateTime", crossOrganizeCfg.getLastCreateDatetime())
}
String sql = "select * from " + mapper.getSrcTableName() + " where organize_code = :srcOrganizeCode and part_no = :partNo and create_date_time >= :createDateTime and " + mapper.getSrcWhere() + " order by " + mapper.getSrcOrderBy() + " limit " + mapper.getSrcGetLimit()
//
List<Map<String, Object>> dataList = queryDataTable(sql, params);
if (!CollectionUtils.isEmpty(dataList)) {
@ -54,8 +70,17 @@ class MesToPiscesProductSn {
rowMap.put("DEST_ORGANIZE_CODE", crossOrganizeCfg.getSrcOrganizeCode())
}
srcData.addAll(dataList);
String createDateTime = dataList.iterator().next().get("create_date_time")
//
updateList.add("update mes_cross_organize_cfg set last_create_date_time = '"+createDateTime+"',last_exe_time = '"+ TimeTool.getNowTime(true)+"' where id= " + crossOrganizeCfg.getId() + " ;")
}
}
//
if (!CollectionUtils.isEmpty(updateList) && updateList.size() > 0) {
this.mesConn = mesDataSource.getWriteConnectionWithoutPool();
mesDataSource.executeAsBatch(updateList, mesConn)
mesDataSource.closeConnectionWithoutPoll(this.mesConn)
}
return srcData;
}

@ -1,13 +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.MesEquipment
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder
import cn.estsh.i3plus.pojo.base.util.StringUtil
import cn.estsh.i3plus.pojo.mes.bean.*
import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository
import cn.estsh.i3plus.pojo.mes.repository.*
import lombok.Getter
import lombok.Setter
import org.slf4j.Logger
@ -51,24 +48,37 @@ class MesProductionRecordToPisces {
@Setter
private Connection mesConn;
@Autowired
private MesWorkCenterRepository mesWorkCenterRepository;
@Autowired
private MesWorkCellRepository mesWorkCellRepository;
@Autowired
private MesProcessRepository mesProcessRepository;
def filterData(MesInterfaceDataMapper mapper, List<Map<String, Object>> srcData) throws Exception {
if (srcData == null || srcData.size() == 0) {
return srcData
}
String organizeCode = mapper.getOrganizeCode();
Map<String, MesWorkCenter> mesWorkCenterMap = new HashMap<>();
Map<String, MesWorkCell> mesWorkCellMap = new HashMap<>();
Map<String, MesProcess> mesProcessMap = new HashMap<>();
List<String> updateList = new ArrayList<>();
List<Map<String, Object>> destData = new ArrayList<>();
for (Map<String, Object> rowMap : srcData) {
Map<String, Object> params = new HashMap<>();
params.put("partNo",rowMap.get("part_no"))
params.put("productSn",rowMap.get("product_sn"))
String sql = "select ID from MES.TT_PC_PART_BARCODE where PART_NO = :partNo and BARCODE = :productSn order by GENERATION_TIME desc";
List<Map<String, Object>> dataMap = queryDataTable(sql,params);
params.put("partNo", rowMap.get("part_no"))
params.put("productSn", rowMap.get("product_sn"))
String sql = "select top 1 ID from MES.TT_PC_PART_BARCODE where PART_NO = :partNo and BARCODE = :productSn order by GENERATION_TIME desc";
List<Map<String, Object>> dataMap = queryDataTable(sql, params);
if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() >0) {
if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() > 0) {
rowMap.put("BARCODE_ID", dataMap.iterator().next().get("ID"))
updateList.add("update mes_production_record set system_sync_status = 1 where id= "+rowMap.get("id")+" ;")
}else{
updateList.add("update mes_production_record set system_sync_status = 1 where id= " + rowMap.get("id") + " ;")
} else {
continue
}
String workCenterCode = String.valueOf(rowMap.get("work_center_code"));
@ -83,6 +93,48 @@ class MesProductionRecordToPisces {
} else {
rowMap.put("WORK_ORDER_FID", null)
}
//
MesWorkCenter mesWorkCenter = getMesWorkCenter(organizeCode, workCenterCode, mesWorkCenterMap)
if (!Objects.isNull(mesWorkCenter)) {
rowMap.put("work_center_code", mesWorkCenter.getDescription())
} else {
LOGGER.info("工作中心{},信息不存在", workCenterCode)
}
//
if (!StringUtil.isEmpty(rowMap.get("work_cell_code"))) {
String workCellCode = String.valueOf(rowMap.get("work_cell_code"));
MesWorkCell mesWorkCell = getMesWorkCell(organizeCode, workCellCode, mesWorkCellMap)
if (!Objects.isNull(mesWorkCell)) {
rowMap.put("work_cell_code", mesWorkCell.getDescription())
} else {
LOGGER.info("工位{},信息不存在", workCellCode)
}
}
//
if (!StringUtil.isEmpty(rowMap.get("process_code"))) {
String processCode = String.valueOf(rowMap.get("process_code"));
MesProcess mesProcess = getMesProcess(organizeCode, processCode, mesProcessMap)
if (!Objects.isNull(mesProcess)) {
rowMap.put("process_code", mesProcess.getDescription())
} else {
LOGGER.info("工序{},信息不存在", processCode)
}
}
//
if (!StringUtil.isEmpty(rowMap.get("work_center_code")) && !StringUtil.isEmpty(rowMap.get("process_code")) && !StringUtil.isEmpty(rowMap.get("shift_code"))) {
params = new HashMap<>();
params.put("workCenterCode", rowMap.get("work_center_code"))
params.put("processCode", rowMap.get("process_code"))
params.put("shiftCode", 1 == Integer.parseInt(rowMap.get("shift_code").toString()).intValue() ? "早班" : "晚班")
sql = "select top 1 ID from MES.TL_PS_SHIFT_START where ASSEMBLY_LINE = :workCenterCode and SHIFT_NAME = :shiftCode and SHIFT_GROUP_CODE = :processCode order by ID desc";
dataMap = queryDataTable(sql, params);
if (!CollectionUtils.isEmpty(dataMap) && dataMap.size() > 0) {
rowMap.put("SHIFT_START_ID", dataMap.iterator().next().get("ID"))
}
}
if (StringUtil.isEmpty(rowMap.get("SHIFT_START_ID"))) {
rowMap.put("SHIFT_START_ID", null)
}
String equipmentCode = String.valueOf(rowMap.get("equipment_code"));
MesEquipment equipmentDb = getEquipmentDb(mapper.getOrganizeCode(), equipmentCode);
@ -93,23 +145,15 @@ class MesProductionRecordToPisces {
}
//
if(!CollectionUtils.isEmpty(updateList) && updateList.size() > 0){
if (!CollectionUtils.isEmpty(updateList) && updateList.size() > 0) {
this.mesConn = mesDataSource.getWriteConnectionWithoutPool();
mesDataSource.executeAsBatch(updateList,mesConn)
mesDataSource.executeAsBatch(updateList, mesConn)
mesDataSource.closeConnectionWithoutPoll(this.mesConn)
}
return destData;
}
def getProduceSnDb(String organizeCode, String productSn, String partNo) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(productSn, "productSn", ddlPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
MesProduceSn produceSnDb = produceSnRepository.getByProperty(ddlPackBean);
return produceSnDb;
}
MesWorkOrder getWorkOrderDb(String organizeCode, String workOrderNo) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", ddlPackBean);
@ -130,4 +174,32 @@ class MesProductionRecordToPisces {
return dataMap;
}
private MesWorkCenter getMesWorkCenter(String organizeCode, String workCenterCode, Map<String, MesWorkCenter> mesWorkCenterMap) {
if (Objects.isNull(mesWorkCenterMap) || !mesWorkCenterMap.containsKey(workCenterCode)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean);
mesWorkCenterMap.put(workCenterCode, mesWorkCenterRepository.getByProperty(ddlPackBean))
}
return mesWorkCenterMap.get(workCenterCode);
}
private MesWorkCell getMesWorkCell(String organizeCode, String workCenterCell, Map<String, MesWorkCell> mesWorkCellMap) {
if (Objects.isNull(mesWorkCellMap) || !mesWorkCellMap.containsKey(workCenterCell)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workCenterCell, "workCellCode", ddlPackBean);
mesWorkCellMap.put(workCenterCell, mesWorkCellRepository.getByProperty(ddlPackBean))
}
return mesWorkCellMap.get(workCenterCell);
}
private MesProcess getMesProcess(String organizeCode, String processCode, Map<String, MesProcess> mesProcessMap) {
if (Objects.isNull(mesProcessMap) || !mesProcessMap.containsKey(processCode)) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(processCode, "processCode", ddlPackBean);
mesProcessMap.put(processCode, mesProcessRepository.getByProperty(ddlPackBean))
}
return mesProcessMap.get(processCode);
}
}

@ -119,6 +119,7 @@ public class WmsSAPDbQuery {
* @throws Exception
*/
public String partName(String organizeCode, String partNo) throws Exception {
if(StringUtil.isEmpty(partNo) || StringUtil.isEmpty(organizeCode)) return "";
String sqlString = "select part_name from mes_part where organize_code='" + organizeCode
+ "' and part_no='" + partNo + "'";
@ -138,9 +139,12 @@ public class WmsSAPDbQuery {
* @throws Exception
*/
public String getColumnDateBySql(String sql, String params, String column) throws Exception {
if(StringUtil.isEmpty(sql)) return "";
String[] split = null;
if (!StringUtil.isEmpty(params)) {
split = params.split(",");
}else{
if(sql.contains("?")) return "";
}
List<Map<String, Object>> result = mesDataSourceProxy.queryMapList(srcConn, sql, split);
if (CollectionUtils.isNotEmpty(result)) {

@ -232,11 +232,14 @@ public class MesYfReportServiceImpl implements IMesYfReportService {
}
private Map<String, List<MesEquipmentLogDetail>> getMesEquipmentLogDetailMap(String organizeCode, List<MesProductionRecord> productionRecordList, List<String> organizeCodeEquipList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(organizeCodeEquipList, MesExtConstWords.ORG_EQUIP_ID, packBean);
DdlPreparedPack.getInPackList(productionRecordList.stream().map(MesProductionRecord::getMouldRecordId).distinct().collect(Collectors.toList()), "mouldRecordId", packBean);
DdlPreparedPack.getInPackArray(new Object[]{MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS.getValue()}, "variableType", packBean);
List<MesEquipmentLogDetail> mesEquipmentLogDetailList = mesEquipmentLogDetailRepository.findByHqlWhere(packBean);
List<MesEquipmentLogDetail> mesEquipmentLogDetailList = new ArrayList<>();
for (String organizeCodeEquip : organizeCodeEquipList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(organizeCodeEquip, MesExtConstWords.ORG_EQUIP_ID, packBean);
DdlPreparedPack.getInPackList(productionRecordList.stream().map(MesProductionRecord::getMouldRecordId).distinct().collect(Collectors.toList()), "mouldRecordId", packBean);
DdlPreparedPack.getInPackArray(new Object[]{MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS.getValue()}, "variableType", packBean);
mesEquipmentLogDetailList.addAll(mesEquipmentLogDetailRepository.findByHqlWhere(packBean));
}
if (CollectionUtils.isEmpty(mesEquipmentLogDetailList)) return null;
return mesEquipmentLogDetailList.stream().collect(Collectors.groupingBy(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getMouldRecordId().toString()).add(t.getWorkCenterCode()).add(t.getWorkCellCode()).add(t.getEquipmentCode()).toString()));
}

Loading…
Cancel
Save