diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCorssOrganizeErrorProofingService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCorssOrganizeErrorProofingService.java deleted file mode 100644 index 40d67a8..0000000 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCorssOrganizeErrorProofingService.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.estsh.i3plus.ext.mes.api.base; - -import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing; -import io.swagger.annotations.ApiOperation; - -/** - * @Description : 跨工厂防错 - * @Reference : - * @Author : junsheng.li - * @CreateDate 2024/7/4 16:49 - * @Modify: - **/ -public interface IMesCorssOrganizeErrorProofingService extends IBaseMesService { - - @ApiOperation("跨工厂防错JOB") - void doMesCorssOrganizeErrorProofing(String organizeCode ,Integer pageSize,String userName); -} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCrossOrganizeCfgService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCrossOrganizeCfgService.java new file mode 100644 index 0000000..304ed01 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCrossOrganizeCfgService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg; +import io.swagger.annotations.ApiOperation; + +/** + * @Description : 跨工厂防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/4 16:49 + * @Modify: + **/ +public interface IMesCrossOrganizeCfgService extends IBaseMesService { + + @ApiOperation("跨工厂防错JOB") + void doMesCrossOrganizeCfg(String organizeCode ,Integer pageSize,String userName); +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java new file mode 100644 index 0000000..1b5f617 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java @@ -0,0 +1,13 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; + +/** + * @Description : 打印模板 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/10 13:40 + * @Modify: + **/ +public interface IMesLabelTemplateService extends IBaseMesService { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/MesSpotCheckOrderToSap.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/MesSpotCheckOrderToSap.groovy index 3273231..23dc456 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/MesSpotCheckOrderToSap.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/MesSpotCheckOrderToSap.groovy @@ -6,6 +6,7 @@ import lombok.Setter import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate +import org.springframework.util.StringUtils import javax.annotation.Resource import java.sql.Connection @@ -54,10 +55,10 @@ class MesSpotCheckOrderToSap { checkMap.put("task_item_name",objectMap.get("task_item_name")); checkMap.put("max_value",objectMap.get("max_value")); checkMap.put("min_value",objectMap.get("min_value")); - checkMap.put("task_item_type",objectMap.get("data_type")); - checkMap.put("item_task_result",objectMap.get("spot_check_result")); + checkMap.put("task_item_type",StringUtils.isEmpty(objectMap.get("data_type"))?"":"10".equals(objectMap.get("data_type"))?"1":"2"); + checkMap.put("item_task_result",StringUtils.isEmpty(objectMap.get("spot_check_result"))?"":"OK".equals(objectMap.get("spot_check_result"))?"True":"False"); checkMap.put("task_value",objectMap.get("spot_check_real_value")); - checkMap.put("IsAuto",objectMap.get("spot_check_item_type")); + checkMap.put("IsAuto",StringUtils.isEmpty(objectMap.get("spot_check_item_type"))?"":"10".equals(objectMap.get("spot_check_item_type"))?"1":"2"); checkMap.put("ConfigValue",objectMap.get("spot_check_set_value")); checkMap.put("Remark",objectMap.get("remark")); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCorssOrganizeErrorProofingController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCrossOrganizeCfgController.java similarity index 63% rename from modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCorssOrganizeErrorProofingController.java rename to modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCrossOrganizeCfgController.java index ef311c9..48f0135 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCorssOrganizeErrorProofingController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCrossOrganizeCfgController.java @@ -1,7 +1,7 @@ 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.MesCorssOrganizeErrorProofing; +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -15,6 +15,6 @@ import org.springframework.web.bind.annotation.RestController; **/ @Api(tags = "跨工厂防错") @RestController -@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCorssOrganizeErrorProofing") -public class MesCorssOrganizeErrorProofingController extends BaseMesController { +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCrossOrganizeCfg") +public class MesCrossOrganizeCfgController extends BaseMesController { } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java new file mode 100644 index 0000000..eb82a7a --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java @@ -0,0 +1,20 @@ +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.MesLabelTemplate; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Description : 打印模板 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/10 13:39 + * @Modify: + **/ +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesLabelTemplate") +@Api(tags = "打印模板") +public class MesLabelTemplateController extends BaseMesController { +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java index 3b0ba8c..91f8564 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/MesWhiteListController.java @@ -67,7 +67,7 @@ public class MesWhiteListController extends MesBaseController { private IMesQmsSuspiciousService qmsSuspiciousService; @Autowired - private IMesCorssOrganizeErrorProofingService mesCorssOrganizeErrorProofingService; + private IMesCrossOrganizeCfgService mesCrossOrganizeCfgService; @PostMapping(value = "/meter/main-data") @ApiOperation(value = "Maximo仪表主数据", notes = "Maximo仪表主数据") @@ -113,12 +113,12 @@ public class MesWhiteListController extends MesBaseController { return ResultBean.success().setSuccess(true); } - @GetMapping(value = "/doMesCorssOrganizeErrorProofing") + @GetMapping(value = "/doMesCrossOrganizeCfg") @ApiOperation(value = "跨工厂防错JOB") - public ResultBean doMesCorssOrganizeErrorProofing(String organizeCode, Integer pageSize) { + public ResultBean doMesCrossOrganizeCfg(String organizeCode, Integer pageSize) { //统计数据 try { - mesCorssOrganizeErrorProofingService.doMesCorssOrganizeErrorProofing(organizeCode, pageSize, "job"); + mesCrossOrganizeCfgService.doMesCrossOrganizeCfg(organizeCode, pageSize, "job"); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/PiscesProperties.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/PiscesProperties.java new file mode 100644 index 0000000..0484ec2 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/PiscesProperties.java @@ -0,0 +1,69 @@ +package cn.estsh.i3plus.ext.mes.apiservice.cus_suit; + +import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy; +import lombok.Getter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.TimeUnit; + +/** + * @Description : pisces数据源配置 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/9 11:14 + * @Modify: + **/ +@Configuration +public class PiscesProperties { + + public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); + + /*********************** + * pisces数据源配置 + */ + @Value("${impp.pisces.datasource.isopen}") + @Getter + private boolean piscesIsOpen; + + @Value("${impp.pisces.datasource.driver-class-name}") + @Getter + private String piscesDriverClassName; + + @Value("${impp.pisces.datasource.alias}") + @Getter + private String piscesDsAlias; + + @Value("${impp.pisces.datasource.jdbc-url}") + @Getter + private String piscesDsJdbcUrl; + + @Value("${impp.pisces.datasource.username}") + @Getter + private String piscesDsUsername; + + @Value("${impp.pisces.datasource.password}") + @Getter + private String piscesDsPassword; + + @ConditionalOnExpression("'${impp.pisces.datasource.isopen:false}' == 'true'") + @Bean(name = "piscesDataSource") + public DynamicDataSourceProxy initPiscesCustomerSet(){ + LOGGER.info("【初始化客户定制化...】"); + + /** + * 注册客户定制数据源 + */ + LOGGER.info("【客户定制化:pisces数据源加载...】"); + //安道拓定制业务 + DynamicDataSourceProxy piscesDataSource = DynamicDataSourceProxy.initDataSourceFactory(this.getPiscesDriverClassName(), + this.getPiscesDsJdbcUrl(),this.getPiscesDsUsername(),this.getPiscesDsPassword(),TimeUnit.MINUTES.toMillis(30)); + + return piscesDataSource; + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCorssOrganizeErrorProofingDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCrossOrganizeCfgDao.java similarity index 68% rename from modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCorssOrganizeErrorProofingDao.java rename to modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCrossOrganizeCfgDao.java index f8ad8fd..dcb64d8 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCorssOrganizeErrorProofingDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCrossOrganizeCfgDao.java @@ -1,6 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.dao; -import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing; +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import io.swagger.annotations.ApiOperation; @@ -13,8 +13,8 @@ import java.util.List; * @CreateDate 2024/7/4 18:03 * @Modify: **/ -public interface IMesCorssOrganizeErrorProofingDao { +public interface IMesCrossOrganizeCfgDao { @ApiOperation("根据工厂物料,查询产品条码信息") - List findMesProduceSnByOrganizeCodeAndPart(MesCorssOrganizeErrorProofing mesCorssOrganizeErrorProofing, Integer pageSize); + List findMesProduceSnByOrganizeCodeAndPart(MesCrossOrganizeCfg mesCrossOrganizeCfg, Integer pageSize); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCorssOrganizeErrorProofingDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCrossOrganizeCfgDaoImpl.java similarity index 69% rename from modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCorssOrganizeErrorProofingDaoImpl.java rename to modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCrossOrganizeCfgDaoImpl.java index 8899536..98e9d5d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCorssOrganizeErrorProofingDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCrossOrganizeCfgDaoImpl.java @@ -1,9 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; -import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCorssOrganizeErrorProofingDao; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCrossOrganizeCfgDao; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofing; +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,13 +22,13 @@ import java.util.List; * @Modify: **/ @Service -public class MesCorssOrganizeErrorProofingDaoImpl implements IMesCorssOrganizeErrorProofingDao { +public class MesCrossOrganizeCfgDaoImpl implements IMesCrossOrganizeCfgDao { @Autowired private EntityManager entityManager; @Override - public List findMesProduceSnByOrganizeCodeAndPart(MesCorssOrganizeErrorProofing mesCorssOrganizeErrorProofing, Integer pageSize) { + public List findMesProduceSnByOrganizeCodeAndPart(MesCrossOrganizeCfg mesCrossOrganizeCfg, Integer pageSize) { String sql = "select srcSn from MesProduceSn srcSn left join MesProduceSn destSn on srcSn.serialNumber = destSn.serialNumber " + " and destSn.organizeCode=:destOrganizeCode and destSn.isDeleted=:isDeleted and destSn.isValid = :isValid " + " where srcSn.createDatetime >= :createDatetime and srcSn.organizeCode = :srcOrganizeCode " + @@ -36,15 +36,15 @@ public class MesCorssOrganizeErrorProofingDaoImpl implements IMesCorssOrganizeEr " and srcSn.snStatus in (10,20) and srcSn.qcStatus in (10,15) and destSn.serialNumber is null " + " order by srcSn.createDatetime asc"; Query query = entityManager.createQuery(sql, MesProduceSn.class); - query.setParameter("srcOrganizeCode", mesCorssOrganizeErrorProofing.getSrcOrganizeCode()); - query.setParameter("destOrganizeCode", mesCorssOrganizeErrorProofing.getOrganizeCode()); + query.setParameter("srcOrganizeCode", mesCrossOrganizeCfg.getSrcOrganizeCode()); + query.setParameter("destOrganizeCode", mesCrossOrganizeCfg.getOrganizeCode()); query.setParameter("isValid", CommonEnumUtil.VALID); query.setParameter("isDeleted", CommonEnumUtil.FALSE); - query.setParameter("partNo", mesCorssOrganizeErrorProofing.getPartNo()); - if (StringUtils.isEmpty(mesCorssOrganizeErrorProofing.getLastCreateDatetime())) { + query.setParameter("partNo", mesCrossOrganizeCfg.getPartNo()); + if (StringUtils.isEmpty(mesCrossOrganizeCfg.getLastCreateDatetime())) { query.setParameter("createDatetime", TimeTool.pareDateToString(new Date(0))); } else { - query.setParameter("createDatetime", mesCorssOrganizeErrorProofing.getLastCreateDatetime()); + query.setParameter("createDatetime", mesCrossOrganizeCfg.getLastCreateDatetime()); } query.setFirstResult(0).setMaxResults(pageSize); return query.getResultList(); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java index 540bb51..970fbe6 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/report/MesYfReportDaoImpl.java @@ -36,7 +36,7 @@ public class MesYfReportDaoImpl implements IMesYfReportDao { dataQuerySql.append("select new ") .append(MesDeviceDataQueryReportResultModel.class.getName()) .append("(organizeCode, workCenterCode, workCellCode, workOrderNo, serialNumber, ") - .append("logType, message, errorType, equipmentCode, equipmentName, createDatetime, createUser, " + + .append("logType, message, equipmentCode, equipmentName, createDatetime, createUser, " + "modifyDatetime, modifyUser) "); countQuerySql.append("select count(1) "); commonQuerySql.append("from MesWorkCellScanMonitorLog " + diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/MesSAPDbAdapter.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/MesSAPDbAdapter.java index a2d28fe..d829e26 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/MesSAPDbAdapter.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dbinterface/MesSAPDbAdapter.java @@ -47,6 +47,9 @@ public class MesSAPDbAdapter { @Resource(name = "mesDataSource") private DynamicDataSourceProxy mesDataSourceProxy; + @Resource(name = "piscesDataSource") + private DynamicDataSourceProxy piscesDataSourceProxy; + @Value("${sync.redis.time:1800}") private Integer redisTime; @@ -73,7 +76,8 @@ public class MesSAPDbAdapter { private WmsSAPDbWriter buildWriter(String groupName, DynamicDataSourceProxy sapDataSourceProxy, - DynamicDataSourceProxy mesDataSourceProxy) throws Exception { + DynamicDataSourceProxy mesDataSourceProxy, + DynamicDataSourceProxy piscesDataSourceProxy) throws Exception { WmsSAPDbWriter wmsSAPDbWriter = null; @@ -85,6 +89,14 @@ public class MesSAPDbAdapter { wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, sapDataSourceProxy); } + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES2MES.getName())) { + wmsSAPDbWriter = new WmsSAPDbWriter(piscesDataSourceProxy, mesDataSourceProxy); + } + + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES.getName())) { + wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, piscesDataSourceProxy); + } + @@ -115,7 +127,8 @@ public class MesSAPDbAdapter { private WmsSAPDbReader buildReader(String groupName, DynamicDataSourceProxy sapDataSourceProxy, - DynamicDataSourceProxy mesDataSourceProxy) { + DynamicDataSourceProxy mesDataSourceProxy, + DynamicDataSourceProxy piscesDataSourceProxy) { WmsSAPDbReader wmsSAPDbReader = null; @@ -127,6 +140,14 @@ public class MesSAPDbAdapter { wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy); } + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES2MES.getName())) { + wmsSAPDbReader = new WmsSAPDbReader(piscesDataSourceProxy); + } + + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES.getName())) { + wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy); + } + // if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.WMS2MES.getName())) { // wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy); // } @@ -179,11 +200,11 @@ public class MesSAPDbAdapter { // 不需要在这里处理 //initConnection(); - writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy); + writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); writer.setSrcConn(this.srcConn); writer.setDestConn(this.destConn); - reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy); + reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); reader.setSrcConn(this.srcConn); @@ -340,11 +361,11 @@ public class MesSAPDbAdapter { // 不需要在这里处理 //initConnection(); - writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy); + writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); writer.setSrcConn(this.srcConn); writer.setDestConn(this.destConn); - reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy); + reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); reader.setSrcConn(this.srcConn); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesCorssOrganizeErrorProofingJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesCrossOrganizeCfgJob.java similarity index 75% rename from modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesCorssOrganizeErrorProofingJob.java rename to modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesCrossOrganizeCfgJob.java index 44fa415..aa41e42 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesCorssOrganizeErrorProofingJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesCrossOrganizeCfgJob.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; -import cn.estsh.i3plus.ext.mes.api.base.IMesCorssOrganizeErrorProofingService; +import cn.estsh.i3plus.ext.mes.api.base.IMesCrossOrganizeCfgService; import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel; @@ -27,13 +27,13 @@ import java.util.List; @DisallowConcurrentExecution @Component @ApiOperation("跨工厂防错JOB") -public class MesCorssOrganizeErrorProofingJob extends BaseMesScheduleJob { +public class MesCrossOrganizeCfgJob extends BaseMesScheduleJob { @Autowired - private IMesCorssOrganizeErrorProofingService mesCorssOrganizeErrorProofingService; + private IMesCrossOrganizeCfgService mesCrossOrganizeCfgService; - public MesCorssOrganizeErrorProofingJob() { - super(MesCorssOrganizeErrorProofingJob.class, "跨工厂防错JOB"); + public MesCrossOrganizeCfgJob() { + super(MesCrossOrganizeCfgJob.class, "跨工厂防错JOB"); } @Override @@ -41,10 +41,9 @@ public class MesCorssOrganizeErrorProofingJob extends BaseMesScheduleJob { List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class); if (!CollectionUtils.isEmpty(wmsJobParamModelList)) { for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) { - //统计数据 try { long startTime = System.currentTimeMillis(); - mesCorssOrganizeErrorProofingService.doMesCorssOrganizeErrorProofing(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job"); + mesCrossOrganizeCfgService.doMesCrossOrganizeCfg(wmsJobParamModel.getOrganizeCode(), wmsJobParamModel.getPageSize(), "job"); long endTime = System.currentTimeMillis(); log.info("工厂{}跨工厂防错job --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime); } catch (Exception e) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java new file mode 100644 index 0000000..a706904 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesSendOutTimeReworkOrderEmailJob.java @@ -0,0 +1,99 @@ +package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; + + +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.mes.api.iservice.base.IMessagePushService; +import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; +import cn.estsh.i3plus.mes.apiservice.util.DateUtil; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask; +import cn.estsh.i3plus.pojo.mes.repository.MesReworkTaskRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.JobExecutionContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @Description : 返工单超过时不处理发邮件通知 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/8 14:43 + * @Modify: + **/ +@Slf4j +@DisallowConcurrentExecution +@Component +@ApiOperation("返工单超过时不处理发邮件通知") +public class MesSendOutTimeReworkOrderEmailJob extends BaseMesScheduleJob { + + @Autowired + private IMessagePushService messagePushService; + + @Autowired + private IMesConfigService mesConfigService; + + @Autowired + private MesReworkTaskRepository mesReworkTaskRepository; + + + public MesSendOutTimeReworkOrderEmailJob() { + super(MesSendOutTimeReworkOrderEmailJob.class, "返工单超过时不处理发邮件通知JOB"); + } + + @Override + public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) { + String jobParam = this.getJobParam(); + + if (StringUtils.isBlank(jobParam)) { + throw new IllegalArgumentException("job参数为空,请检查参数"); + } + for (String organizeCode : jobParam.split(",")) { + try { + //超时时间 + int minutes = Integer.parseInt(mesConfigService.getCfgValue(organizeCode, MesCommonConstant.OUT_TIME_REWORK_ORDER_MINUTES)); + //查询超时返工单 + List mesReworkTaskList = findMesReworkTaskList(organizeCode, minutes); + if (CollectionUtils.isEmpty(mesReworkTaskList)) { + continue; + } + messagePushService.pushEmail(getContent(minutes, mesReworkTaskList), "返工单超时提醒", "系统管理员", Arrays.asList(mesConfigService.getCfgValue(organizeCode, MesCommonConstant.OUT_TIME_REWORK_ORDER_SEND_URL).split(","))); + long startTime = System.currentTimeMillis(); + long endTime = System.currentTimeMillis(); + log.info("工厂{}返工单超过时不处理发邮件通知JOB --- END --- 耗时: {} ms", organizeCode, endTime - startTime); + } catch (Exception e) { + log.info("工厂{}返工单超过时不处理发邮件通知JOB 执行失败{}", organizeCode, e); + } + } + } + + private String getContent(int minutes, List mesReworkTaskList) { + StringBuilder content = new StringBuilder("

尊敬的用户

您好!

        下述返工工单超过" + minutes + "分钟未处理,请及时处理!

"); + for (MesReworkTask mesReworkTask : mesReworkTaskList) { + content.append("

返工工单号:").append(mesReworkTask.getReworkOrder()).append("零件号:").append(mesReworkTask.getPartNo()).append(",返工数量:").append(mesReworkTask.getReworkedQty()).append(",创建时间:").append(mesReworkTask.getCreateDatetime()).append("

"); + } + log.info(content.toString()); + return content.toString(); + } + + private List findMesReworkTaskList(String organizeCode, int minutes) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue(), "status", packBean); + packBean.setWhereAppend(packBean.getWhereAppend() + " and model.createDatetime <= '" + TimeTool.pareDateToString(DateUtil.addMinutes(new Date(), -minutes)) + "'"); + List mesReworkTaskList = mesReworkTaskRepository.findByHqlWhere(packBean); + return mesReworkTaskList; + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCorssOrganizeErrorProofingServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCrossOrganizeCfgServiceImpl.java similarity index 58% rename from modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCorssOrganizeErrorProofingServiceImpl.java rename to modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCrossOrganizeCfgServiceImpl.java index c9caca2..0596067 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCorssOrganizeErrorProofingServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCrossOrganizeCfgServiceImpl.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.api.base.IMesCorssOrganizeErrorProofingService; -import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCorssOrganizeErrorProofingDao; +import cn.estsh.i3plus.ext.mes.api.base.IMesCrossOrganizeCfgService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCrossOrganizeCfgDao; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -9,10 +9,10 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool; 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.MesCorssOrganizeErrorProofing; -import cn.estsh.i3plus.pojo.mes.bean.MesCorssOrganizeErrorProofingLog; +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesCrossOrganizeCfgLog; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; -import cn.estsh.i3plus.pojo.mes.repository.IMesCorssOrganizeErrorProofingLogRepository; +import cn.estsh.i3plus.pojo.mes.repository.IMesCrossOrganizeCfgLogRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; import java.util.List; /** @@ -34,26 +33,26 @@ import java.util.List; **/ @Service @Slf4j -public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService implements IMesCorssOrganizeErrorProofingService { +public class MesCrossOrganizeCfgServiceImpl extends BaseMesService implements IMesCrossOrganizeCfgService { @Autowired - private IMesCorssOrganizeErrorProofingDao mesCorssOrganizeErrorProofingDao; + private IMesCrossOrganizeCfgDao mesCrossOrganizeCfgDao; @Autowired private MesProduceSnRepository mesProduceSnRepository; @Autowired - private IMesCorssOrganizeErrorProofingLogRepository mesCorssOrganizeErrorProofingLogRepository; + private IMesCrossOrganizeCfgLogRepository mesCrossOrganizeCfgLogRepository; @Override - protected void setPackQueryBean(MesCorssOrganizeErrorProofing bean, DdlPackBean packBean) { + protected void setPackQueryBean(MesCrossOrganizeCfg bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getSrcOrganizeCode(), "srcOrganizeCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartName(), "partName", packBean); } @Override - protected void onInsertBean(MesCorssOrganizeErrorProofing item) { + protected void onInsertBean(MesCrossOrganizeCfg item) { // 数据校验 checkData(item); @@ -66,7 +65,7 @@ public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService corssOrganizeErrorProofingList = baseRDao.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode)); - if (CollectionUtils.isEmpty(corssOrganizeErrorProofingList)) { + public void doMesCrossOrganizeCfg(String organizeCode, Integer pageSize, String userName) { + List crossOrganizeCfgList = baseRDao.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode)); + if (CollectionUtils.isEmpty(crossOrganizeCfgList)) { return; } //循环处理数据 - for (MesCorssOrganizeErrorProofing organizeErrorProofing : corssOrganizeErrorProofingList) { + for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) { //查询待同步的数据 - List produceSnList = mesCorssOrganizeErrorProofingDao.findMesProduceSnByOrganizeCodeAndPart(organizeErrorProofing, pageSize); + List produceSnList = mesCrossOrganizeCfgDao.findMesProduceSnByOrganizeCodeAndPart(crossOrganizeCfg, pageSize); int transSize = 0; if (!CollectionUtils.isEmpty(produceSnList)) { //插入条码 - insertMesProduceSn(organizeErrorProofing, produceSnList); + insertMesProduceSn(crossOrganizeCfg, produceSnList); //最后同步条码创建时间 String createDatetime = produceSnList.get(produceSnList.size() - 1).getCreateDatetime(); - organizeErrorProofing.setLastCreateDatetime(TimeTool.pareDateToString(DateUtil.addMinutes(TimeTool.parseDate(createDatetime), -10))); + crossOrganizeCfg.setLastCreateDatetime(TimeTool.pareDateToString(DateUtil.addMinutes(TimeTool.parseDate(createDatetime), -10))); transSize = produceSnList.size(); } - organizeErrorProofing.setLastExeTime(TimeTool.getNowTime(true)); + crossOrganizeCfg.setLastExeTime(TimeTool.getNowTime(true)); //更新数据 - baseRDao.update(organizeErrorProofing); + baseRDao.update(crossOrganizeCfg); //保存记录 - saveLog(userName, organizeErrorProofing, transSize); + saveLog(userName, crossOrganizeCfg, transSize); } } - private void checkData(MesCorssOrganizeErrorProofing item) { + private void checkData(MesCrossOrganizeCfg item) { ValidatorBean.checkNotNull(item.getSrcOrganizeCode(), "源工厂代码不能为空"); ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空"); if (item.getSrcOrganizeCode().equalsIgnoreCase(item.getOrganizeCode())) { @@ -114,21 +113,21 @@ public class MesCorssOrganizeErrorProofingServiceImpl extends BaseMesService produceSnList) { + private void insertMesProduceSn(MesCrossOrganizeCfg crossOrganizeCfg, List produceSnList) { //数据持久化 for (MesProduceSn produceSn : produceSnList) { MesProduceSn saveDbProduceSn = new MesProduceSn(); BeanUtils.copyProperties(produceSn, saveDbProduceSn, "id"); - saveDbProduceSn.setOrganizeCode(organizeErrorProofing.getOrganizeCode()); - saveDbProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.CORSS_ORGANIZE.getValue()); + saveDbProduceSn.setOrganizeCode(crossOrganizeCfg.getOrganizeCode()); + saveDbProduceSn.setSnType(MesExtEnumUtil.PRODUCE_SN_TYPE.CROSS_ORGANIZE.getValue()); saveDbProduceSn.setDescription(produceSn.getOrganizeCode()); saveDbProduceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); mesProduceSnRepository.insert(saveDbProduceSn); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java new file mode 100644 index 0000000..efa6298 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java @@ -0,0 +1,28 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesLabelTemplateService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Description : 打印模板 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/10 13:43 + * @Modify: + **/ +@Service +@Slf4j +public class MesLabelTemplateServiceImpl extends BaseMesService implements IMesLabelTemplateService { + + @Override + protected void setPackQueryBean(MesLabelTemplate bean, DdlPackBean packBean) { + packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getStringLikerPack(bean.getTemplateCode(), "templateCode", packBean); + DdlPreparedPack.getStringLikerPack(bean.getTemplateName(), "templateName", packBean); + DdlPreparedPack.getOrderBy(bean.getOrderByParam(), bean.getAscOrDesc(), packBean); + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTypePictureService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTypePictureService.java deleted file mode 100644 index 934d899..0000000 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTypePictureService.java +++ /dev/null @@ -1,13 +0,0 @@ -package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; - -import cn.estsh.i3plus.ext.mes.api.base.IBaseMesService; -import cn.estsh.i3plus.pojo.mes.bean.MesPartTypePicture; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -@Service -@Slf4j -public class MesPartTypePictureService extends BaseMesService implements IBaseMesService { - - -} \ 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/MesPartTypePictureServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTypePictureServiceImpl.java new file mode 100644 index 0000000..814ed15 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartTypePictureServiceImpl.java @@ -0,0 +1,47 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesPartTypePictureService; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesPartTypePicture; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class MesPartTypePictureServiceImpl extends BaseMesService implements IMesPartTypePictureService { + + @Override + protected void setPackQueryBean(MesPartTypePicture bean, DdlPackBean packBean) { + DdlPreparedPack.getStringLikerPack(bean.getPartTypeCode(), "partTypeCode", packBean); + DdlPreparedPack.getStringLikerPack(bean.getPartTypeName(), "partTypeName", packBean); + } + + @Override + protected void onInsertBean(MesPartTypePicture item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getPartTypeCode(), "零件类型代码不能为空"); + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "partTypeCode", packBean); + if (baseRDao.isExitByHql(packBean)) { + MesException.throwMesBusiException("【%s】零件类型代码已经存在,请检查数据", item.getPartTypeCode()); + } + } + + @Override + protected void onUpdateBean(MesPartTypePicture item) { + // 数据校验 + ValidatorBean.checkNotNull(item.getPartTypeCode(), "零件类型代码不能为空"); + + DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "partTypeCode", packBean); + DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", packBean); + if (baseRDao.isExitByHql(packBean)) { + MesException.throwMesBusiException("【%s】零件类型代码已经存在,请检查数据", item.getPartTypeCode()); + } + } + +} \ 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/MesShiftGroupService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftGroupService.java index 8b76c4a..aa58f9a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftGroupService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftGroupService.java @@ -20,7 +20,7 @@ import org.springframework.stereotype.Service; public class MesShiftGroupService extends BaseMesService implements IMesShiftGroupService { protected void setPackQueryBean(MesShiftGroup bean, DdlPackBean packBean) { - DdlPreparedPack.getStringEqualPack(bean.getShiftGroup(), "shiftGroup", packBean); + DdlPreparedPack.getStringLikerPack(bean.getShiftGroup(), "shiftGroup", packBean); DdlPreparedPack.getStringLikerPack(bean.getShiftGroupName(), "shiftGroupName", packBean); } 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 847c8ef..57aa71e 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 @@ -113,7 +113,7 @@ public class MesWorkOrderService extends BaseMesService implements public MesWorkOrder insert(MesWorkOrder bean) { //校验产线与工位的关系 boolean relationResult = checkWorkCenterPartRelation(bean.getWorkCenterCode(), bean.getPartNo()); - if (!relationResult){ + if (!relationResult && (StringUtil.isEmpty(bean.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag()))){ MesException.throwMesBusiException(String.format("工单产线【%s】与工单零件【%s】没有维护产线零件关系",bean.getWorkCenterCode(),bean.getPartNo())); } //获取相同类型 相同标识 生产序号最大值的 @@ -305,11 +305,7 @@ public class MesWorkOrderService extends BaseMesService implements MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue())); } - //获取生产版本 - MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter); - item.setProductVersion(mesProductVersion.getProductVersion()); - //获取bom信息 - List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + //校验VIN号是否重复 if (!StringUtil.isEmpty(item.getVinCode())) { //校验vin号是否重复 ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); @@ -320,11 +316,10 @@ public class MesWorkOrderService extends BaseMesService implements } //排序工单数量为1 item.setQty(1d); - //是否自动发布 - isAuto(item, saveMesWorkOrderToWms, bomList); + //发送工单给WMS + sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms); } else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); - ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空"); if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { MesException.throwMesBusiException("生产数量不能小于等于0"); } @@ -341,26 +336,25 @@ public class MesWorkOrderService extends BaseMesService implements , MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue())); } - //校验物料生产版本是否存在 - MesProductVersion mesProductVersion = checkMesProductVersion(item); - //获取bom信息 - List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); - //发送工单信息给WMS - saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); + //非试制单 + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { + ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空"); + //校验物料生产版本是否存在 + MesProductVersion mesProductVersion = checkMesProductVersion(item); + //获取bom信息 + List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + //发送工单信息给WMS + saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); + } } else { ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { MesException.throwMesBusiException("生产数量不能小于等于0"); } - //获取生产版本 - MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter); - item.setProductVersion(mesProductVersion.getProductVersion()); - //获取bom信息 - List bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); - //是否自动发布 - isAuto(item, saveMesWorkOrderToWms, bomList); + //发送工单给WMS + sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms); } //物料名称不存在,从物料信息中获取 MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode()); @@ -381,6 +375,20 @@ public class MesWorkOrderService extends BaseMesService implements } } + private void sendToWms(MesWorkOrder item, MesWorkCenter mesWorkCenter, List saveMesWorkOrderToWms) { + //非试制单 + List bomList = null; + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { + //获取生产版本 + MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter); + item.setProductVersion(mesProductVersion.getProductVersion()); + //获取bom信息 + bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + } + //是否自动发布 + isAuto(item, saveMesWorkOrderToWms, bomList); + } + private void isAuto(MesWorkOrder item, List saveMesWorkOrderToWms, List bomList) { MesPartProdGroup mesPartProdGroup = null; if(StringUtil.isEmpty(item.getPartProdGroupCode())){ @@ -400,7 +408,9 @@ public class MesWorkOrderService extends BaseMesService implements if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) { item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //发送工单信息给WMS - saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); + if(!Objects.isNull(bomList)){ + saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList)); + } } else { item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); } @@ -868,6 +878,7 @@ public class MesWorkOrderService extends BaseMesService implements } else { mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } + mesWorkOrderDb.setCompleteQty(mesWorkOrderDb.getReportedQty()); } else { //报工调整数量加- mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getAdjustQty()))); @@ -913,12 +924,27 @@ public class MesWorkOrderService extends BaseMesService implements double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) { - MesException.throwMesBusiException("工单报工数量大于工单数量【%s】,不允许报工", mesWorkOrder.getQty()); + //查询产线信息 + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean); + MesWorkCenter workCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); + // 以下则是超工单逻辑 + // 如果产线中没有配置超工单,则直接阻断 + if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) { + MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); + } + // 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断 + double rate = (mesWorkOrder.getReportedQty() - mesWorkOrder.getQty())/mesWorkOrder.getQty(); + if (rate > workCenter.getOrderRate()) { + MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), workCenter.getOrderRate()); + } + mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) { mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else { mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } + mesWorkOrder.setCompleteQty(mesWorkOrder.getReportedQty()); } else { //报工调整数量加- mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrderNew.getNum(), mesWorkOrder.getAdjustQty()))); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 73883e7..c7bf125 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -381,6 +381,8 @@ public class MesSpotCheckOrderService extends BaseMesService DdlPreparedPack.getNumEqualPack(bean.getStatus(),"status",packBean); DdlPreparedPack.getNumEqualPack(bean.getSpotCheckOrderResult(),"spotCheckOrderResult",packBean); DdlPreparedPack.getStringLikerPack(bean.getEquipName(),"equipName",packBean); + DdlPreparedPack.getStringBiggerPack(bean.getModifyDateTimeStart(), "spotCheckTime", packBean); + DdlPreparedPack.getStringSmallerPack(bean.getModifyDateTimeEnd(), "spotCheckTime", packBean); DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean); } 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 8a31abc..6231149 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 @@ -35,4 +35,12 @@ impp.yfas.datasource.password=estsh123 #impp.sweb.datasource.driver-class-name=com.mysql.jdbc.Driver #impp.sweb.datasource.jdbc-url=jdbc:mysql://dbmaster:3306/impp_i3_wms?autoReconnect=true&useSSL=false&characterEncoding=utf-8 #impp.sweb.datasource.username=root -#impp.sweb.datasource.password=estsh123 \ No newline at end of file +#impp.sweb.datasource.password=estsh123 + +#Pisces数据源 +impp.pisces.datasource.isopen=true +impp.pisces.datasource.alias=piscesDataSource +impp.pisces.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver +impp.pisces.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113;SelectMethod=cursor;DatabaseName=Pisces +impp.pisces.datasource.username=sa +impp.pisces.datasource.password=sahasnopassword \ No newline at end of file diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java index 76cfb44..4dd1f03 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java @@ -49,4 +49,8 @@ public class MesCommonConstant { //字体位置 public static final String FONDS_TEMP_PATH = File.separator+"usr" + File.separator+ "share" + File.separator+ "fonts" + File.separator+ "myfonts" + File.separator; + //返工单超过时不处理发邮件通知 + public static final String OUT_TIME_REWORK_ORDER_SEND_URL = "OUT_TIME_REWORK_ORDER_SEND_URL"; + public static final String OUT_TIME_REWORK_ORDER_MINUTES = "OUT_TIME_REWORK_ORDER_MINUTES"; + } diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java index 11ef034..a7b7fb9 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/model/report/MesDeviceDataQueryReportResultModel.java @@ -47,10 +47,6 @@ public class MesDeviceDataQueryReportResultModel { @AnnoOutputColumn(name = "日志内容") private String message; - @ApiParam(value = "错误类型") - @AnnoOutputColumn(name = "错误类型") - private String errorType; - @ApiParam(value = "设备编号") @AnnoOutputColumn(name = "设备编号") private String equipmentCode; @@ -77,7 +73,7 @@ public class MesDeviceDataQueryReportResultModel { public MesDeviceDataQueryReportResultModel(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo, String serialNumber, Integer logType, - String message, String errorType, String equipmentCode, + String message, String equipmentCode, String equipmentName, String createDatetime, String createUser, String modifyDatetime, String modifyUser) { this.organizeCode = organizeCode; @@ -87,7 +83,6 @@ public class MesDeviceDataQueryReportResultModel { this.serialNumber = serialNumber; this.logType = logType; this.message = message; - this.errorType = errorType; this.equipmentCode = equipmentCode; this.equipmentName = equipmentName; this.createDatetime = createDatetime;