From 6aa74526fbd551da7e5482551d247c8d3259f6b0 Mon Sep 17 00:00:00 2001 From: jun Date: Sun, 12 May 2024 17:56:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesCraftRouteService.java | 13 +++ .../src/groovy/mesWorkOrderToSap.groovy | 92 ++++++++++++++++++++++ .../controller/base/MesCraftRouteController.java | 13 +++ .../dbinterface/WmsSAPDbInterfaceController.java | 2 +- .../serviceimpl/base/MesCraftRouteServiceImpl.java | 63 +++++++++++++++ .../serviceimpl/base/MesWorkOrderService.java | 2 + .../src/main/resources/application-71.properties | 4 +- .../main/resources/application-cus-71.properties | 4 +- 8 files changed, 188 insertions(+), 5 deletions(-) create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/groovy/mesWorkOrderToSap.groovy create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java new file mode 100644 index 0000000..e8e9ca9 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; + +/** + * @Description :工艺路线 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/8 16:48 + * @Modify: + **/ +public interface IMesCraftRouteService extends IBaseMesService { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/mesWorkOrderToSap.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/mesWorkOrderToSap.groovy new file mode 100644 index 0000000..a769785 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/mesWorkOrderToSap.groovy @@ -0,0 +1,92 @@ +import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy +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 javax.annotation.Resource +import java.sql.Connection + +/** + * @Description : MES发送SAP生产工单数据 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/12 15:43 + * @Modify: + * */ +class mesWorkOrderToSap { + + public static final Logger LOGGER = LoggerFactory.getLogger(mesWorkOrderToSap.class) + + @Autowired + private MesWorkOrderToSapRepository mesWorkOrderToSapRDao; + + @Resource(name = "yfasDataSource") + private DynamicDataSourceProxy yfasDataSource; + + @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 + } + Map> destMapData = new HashMap<>(); + LOGGER.info("-------- filterData Start MES发送SAP生产工单数据 ---------------") + List updateSqlList = new ArrayList<>(); + //过滤相同物料,结束时间的数据 + for (Map rowMap : srcData) { + String partNo = String.valueOf(rowMap.get("plmat")); + String organizeCode = String.valueOf(rowMap.get("organize_code")); + String endData = String.valueOf(rowMap.get("pedtr")); + String key = organizeCode+partNo+endData; + if(!destMapData.containsKey(key)){ + destMapData.put(key,rowMap) + } + } + //汇总 + List> destData = new ArrayList<>(); + for (Map rowMap : destMapData.values()) { + String partNo = String.valueOf(rowMap.get("plmat")); + String organizeCode = String.valueOf(rowMap.get("organize_code")); + String endData = String.valueOf(rowMap.get("pedtr")); + String qty = String.valueOf(rowMap.get("gsmng")); + Map sqlParams = new HashMap<>(4) + sqlParams.put("organizeCode",organizeCode); + sqlParams.put("plmat", partNo); + sqlParams.put("pedtr", endData); + sqlParams.put("gsmng", qty); + StringBuffer sql = new StringBuffer("select * from mes_plan_order where " + + " PLWRK=:organizeCode and plmat=:plmat and pedtr=:pedtr and gsmng = :gsmng"); + List> resultMap = this.queryDataTable(sql.toString(), sqlParams) + if (resultMap.size() > 0) { + LOGGER.info("--------mesWorkOrderToSapRDao.updateByHqlWhere ---------------") + updateSqlList.add("update mes_work_order_to_sap set system_sync_status = 1, " + + "modify_user = 'MES发送SAP生产工单' where organize_code= '"+organizeCode+"' and plmat= '"+partNo+"' and pedtr='"+endData+"'"); + }else{ + destData.add(rowMap); + } + } + //更新同步标识 + this.mesConn = mesDataSource.getWriteConnectionWithoutPool(); + mesDataSource.executeAsBatch(updateSqlList,mesConn) + mesDataSource.closeConnectionWithoutPoll(this.mesConn) + return destData; + } + + private List> queryDataTable(String sql, Map params) { + NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(yfasDataSource.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/controller/base/MesCraftRouteController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java new file mode 100644 index 0000000..3f522a7 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base; + +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(description = "工艺路线") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCraftRoute") +public class MesCraftRouteController extends BaseMesController { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/dbinterface/WmsSAPDbInterfaceController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/dbinterface/WmsSAPDbInterfaceController.java index ced5e8c..e12510f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/dbinterface/WmsSAPDbInterfaceController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/dbinterface/WmsSAPDbInterfaceController.java @@ -63,7 +63,7 @@ public class WmsSAPDbInterfaceController { @GetMapping(value = "sync-data-id/do") @ApiOperation(value = "按ID单个执行接口数据同步,支持的参数:SAP2MES, MES2SAP ") - public ResultBean doSyncSAPData(String syncParam,String o, String id) { + public ResultBean doSyncSAPData(String syncParam, String id) { try { // 判断作业参数是否支持 if (MesInterfaceEnumUtil.DIRECTION_TYPE.nameOf(syncParam) == -1) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java new file mode 100644 index 0000000..692c668 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java @@ -0,0 +1,63 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +/** + * @Description : 工艺路线 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/12 15:13 + * @Modify: + **/ +@Service +@Slf4j +public class MesCraftRouteServiceImpl extends BaseMesService implements IMesCraftRouteService { + + protected void setPackQueryBean(MesCraftRoute bean, DdlPackBean packBean) { + DdlPreparedPack.getStringEqualPack(bean.getCraftRouteCode(), "craftRouteCode", packBean); + DdlPreparedPack.getStringLikerPack(bean.getCraftRouteName(), "craftRouteName", packBean); + DdlPreparedPack.getNumEqualPack(bean.getCraftRouteType(), "craftRouteType", packBean); + } + + protected void onInsertBean(MesCraftRoute item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空"); + + DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getCraftRouteCode(), "craftRouteCode", roadPackBean); + + boolean flg = baseRDao.isExitByHql(roadPackBean); + if (flg) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工艺路线代码【%s】已经存在,请检查数据", item.getCraftRouteCode()) + .build(); + } + } + + protected void onUpdateBean(MesCraftRoute item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空"); + + DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getCraftRouteCode(), "craftRouteCode", roadPackBean); + DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", roadPackBean); + boolean flg = baseRDao.isExitByHql(roadPackBean); + if (flg) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工艺路线代码【%s】已经存在,请检查数据", item.getCraftRouteCode()) + .build(); + } + } +} 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 6e4b14b..7876553 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 @@ -309,6 +309,8 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo()); newMesProductOffLine.setItemPartNameRdd(mesBom.getItemPartName()); newMesProductOffLine.setItemQty(mesBom.getItemQty()); + newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint()); + newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint()); newMesProductOffLine.setQty(1d); newMesProductOffLine.setReportSn(sn); newMesProductOffLine.setBomVersion(mesBom.getBomVersion()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties index 2b896dc..220f79c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties +++ b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-71.properties @@ -241,12 +241,12 @@ spring.shardingsphere.datasource.slave.connection-test-query=select 1 spring.shardingsphere.datasource.slave.keep-alive-time=3500000 impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.write.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true +impp.write.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true impp.write.datasource.username=root impp.write.datasource.password=estsh123 impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.read.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true +impp.read.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3336/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true impp.read.datasource.username=root impp.read.datasource.password=estsh123 diff --git a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-71.properties b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-71.properties index 9c79730..8a31abc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-71.properties +++ b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-71.properties @@ -5,7 +5,7 @@ impp.mes.datasource.isopen=true #\u6570\u636E\u6E90\u7684\u522B\u540D impp.mes.datasource.alias=mesDataSource impp.mes.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.mes.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true +impp.mes.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true #impp.mes.datasource.jdbc-url=jdbc:sqlserver://139.224.200.147:20037;DatabaseName=impp_i3_mes; impp.mes.datasource.username=root #impp.mes.datasource.password=Test123! @@ -16,7 +16,7 @@ impp.mes.datasource.password=estsh123 #\u6570\u636E\u6E90\u7684\u522B\u540D impp.yfas.datasource.alias=yfasDataSource impp.yfas.datasource.driver-class-name=com.mysql.jdbc.Driver -impp.yfas.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3306/impp_i3_wms_sap_if?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true +impp.yfas.datasource.jdbc-url=jdbc:mysql://10.195.88.71:3316/impp_i3_wms_sap_if?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true #impp.yfas.datasource.jdbc-url=jdbc:sqlserver://139.224.200.147:20037;DatabaseName=impp_i3_mes; impp.yfas.datasource.username=root impp.yfas.datasource.password=estsh123