From ddd22117b101865bf42c82bab76a6c13ee63c923 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 18 Jul 2024 21:19:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesWorkOrderLogService.java | 3 +- .../src/groovy/MesProductionRecordToPisces.groovy | 53 ++++++++++++++++++---- .../serviceimpl/base/MesWorkOrderLogService.java | 5 +- .../serviceimpl/base/MesWorkOrderService.java | 14 +++--- 4 files changed, 58 insertions(+), 17 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java index 084fd23..da31f79 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; /** * @Description: @@ -10,5 +11,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; */ public interface IMesWorkOrderLogService extends IBaseMesService { - void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder); + void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder, MesExtEnumUtil.WORK_ORDER_LOG_TYPE type,double qty); } diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy index bf348f1..1a2bb5f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/MesProductionRecordToPisces.groovy @@ -1,3 +1,4 @@ +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 @@ -7,9 +8,16 @@ 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 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 : 加工记录同步 MES2PISCES @@ -31,19 +39,35 @@ class MesProductionRecordToPisces { @Autowired private MesWorkOrderRepository workOrderRepository; + @Resource(name = "piscesDataSource") + private DynamicDataSourceProxy piscesDataSource; + + @Resource(name = "mesDataSource") + private DynamicDataSourceProxy mesDataSource; + + @Getter + @Setter + private Connection mesConn; + def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { if (srcData == null || srcData.size() == 0) { return srcData } - + List updateList = new ArrayList<>(); + List> destData = new ArrayList<>(); for (Map rowMap : srcData) { - String productSn = String.valueOf(rowMap.get("product_sn")); - String partNo = String.valueOf(rowMap.get("part_no")); - - MesProduceSn produceSnDb = getProduceSnDb(mapper.getOrganizeCode(), productSn, partNo); - if (!Objects.isNull(produceSnDb)) { - rowMap.put("BARCODE_ID", produceSnDb.getId()) + Map 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> dataMap = queryDataTable(sql,params); + + 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{ + continue } String workOrderNo = String.valueOf(rowMap.get("work_order_no")); @@ -57,10 +81,17 @@ class MesProductionRecordToPisces { if (!Objects.isNull(equipmentDb)) { rowMap.put("EQUIPMENT_ID", equipmentDb.getEquipId()) } + destData.add(rowMap); + } + //更新同步标识 + if(!CollectionUtils.isEmpty(updateList) && updateList.size() > 0){ + this.mesConn = mesDataSource.getWriteConnectionWithoutPool(); + mesDataSource.executeAsBatch(updateList,mesConn) + mesDataSource.closeConnectionWithoutPoll(this.mesConn) } - return srcData; + return destData; } def getProduceSnDb(String organizeCode, String productSn, String partNo) { @@ -85,4 +116,10 @@ class MesProductionRecordToPisces { return equipmentDb; } + private List> queryDataTable(String sql, Map params) { + NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(piscesDataSource.getDataSource()) + List> dataMap = namedJdbcTemplate.queryForList(sql, params) + return dataMap; + } + } \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java index e92e1c2..8c9fa57 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderLogService; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -12,9 +13,11 @@ import org.springframework.stereotype.Service; public class MesWorkOrderLogService extends BaseMesService implements IMesWorkOrderLogService { @Override - public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) { + public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder, MesExtEnumUtil.WORK_ORDER_LOG_TYPE type, double qty) { MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); BeanUtils.copyProperties(mesWorkOrder, workOrderLog, "id"); + workOrderLog.setType(type.getValue()); + workOrderLog.setModifyQty(qty); baseRDao.insert(workOrderLog); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index 8c967f5..87edbd9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -139,7 +139,7 @@ public class MesWorkOrderService extends BaseMesService implements ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser()); baseRDao.insert(copyMesWorkOrder); - workOrderLogService.saveMesWorkOrderLog(copyMesWorkOrder); + workOrderLogService.saveMesWorkOrderLog(copyMesWorkOrder,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,copyMesWorkOrder.getQty()); return bean; }else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()){ //生产工单-非排序手工插单,关闭该零件当天之前日期非排序工单 @@ -159,7 +159,7 @@ public class MesWorkOrderService extends BaseMesService implements bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(bean, bean.getCreateUser()); - workOrderLogService.saveMesWorkOrderLog(bean); + workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty()); bean = baseRDao.insert(bean); return bean; } @@ -203,7 +203,7 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrderToWmsService.insertBatch(mesWorkOrderToWmsService.saveMesWorkOrderToWms(result, bomList)); } } - updateMesWorkOrder(result); + updateMesWorkOrder(result,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.UPDATE,0); return result; } @@ -884,7 +884,7 @@ public class MesWorkOrderService extends BaseMesService implements } } //更新工单 - updateMesWorkOrder(mesWorkOrderDb); + updateMesWorkOrder(mesWorkOrderDb,(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrder.getNum()); //试制单不报工 if(Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())){ String sn = getStringList(mesWorkOrder); @@ -1009,7 +1009,7 @@ public class MesWorkOrderService extends BaseMesService implements } //更新工单 - updateMesWorkOrder(mesWorkOrder); + updateMesWorkOrder(mesWorkOrder, (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrderNew.getNum()); //保存报工记录 试制单不报工 if (CollectionUtils.isNotEmpty(mesProductOffLineList) && (Objects.isNull(mesWorkOrder.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrder.getOrderFlag()))) { @@ -1049,13 +1049,13 @@ public class MesWorkOrderService extends BaseMesService implements mesProductOffLineService.insertBatch(mesProductOffLineList); } - private void updateMesWorkOrder(MesWorkOrder mesWorkOrder) { + private void updateMesWorkOrder(MesWorkOrder mesWorkOrder,MesExtEnumUtil.WORK_ORDER_LOG_TYPE type,double qty) { //修改工单,需要重新同步 mesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelUpdate(mesWorkOrder, AuthUtil.getSessionUser().getUserName()); baseRDao.update(mesWorkOrder); //保存记录 - workOrderLogService.saveMesWorkOrderLog(mesWorkOrder); + workOrderLogService.saveMesWorkOrderLog(mesWorkOrder,type,qty); } private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom) {