diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartShippingGroupService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartShippingGroupService.java index 3aba057..d330fcd 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartShippingGroupService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartShippingGroupService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; +import io.swagger.annotations.ApiOperation; /** * @Description: @@ -9,5 +10,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; */ public interface IMesPartShippingGroupService extends IBaseMesService { + @ApiOperation(value = "查询发运组数据") + MesPartShippingGroup getMesPartShippingGroup(String organizeCode,String shippingGroupCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkCenterService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkCenterService.java index 3a2c7a4..9a46397 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkCenterService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkCenterService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import io.swagger.annotations.ApiOperation; /** * @Description: @@ -10,5 +11,10 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; */ public interface IMesWorkCenterService extends IBaseMesService { + @ApiOperation(value = "根据生产线代码查询生产线信息") + MesWorkCenter getWorkCenterDb(String organizeCode, String workCenterCode); + + @ApiOperation(value = "根据生产线代码查询生产线信息的ERP生产线代码") + String getErpWorkCenterCode(String organizeCode, String workCenterCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesFileService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesFileService.java new file mode 100644 index 0000000..0e92929 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesFileService.java @@ -0,0 +1,33 @@ +package cn.estsh.i3plus.ext.mes.api.base.file; + +import cn.estsh.i3plus.pojo.platform.bean.SysFile; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * @Description : + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/19 11:54 + * @Modify: + **/ +public interface IMesFileService { + + /** + * 上传文件 + * @param file 文件 + * @return 文件信息 + */ + @ApiOperation(value = "上传文件", notes = "上传文件") + SysFile uploadFile(MultipartFile file); + + /** + * 获取文件 + * @param resp + * @param fileUrl 文件url + * @return 文件流 + */ + void getFileByUrl(HttpServletResponse resp, String fileUrl); +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesInputDefectRecordService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesInputDefectRecordService.java new file mode 100644 index 0000000..7923660 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IMesInputDefectRecordService.java @@ -0,0 +1,17 @@ +package cn.estsh.i3plus.ext.mes.api.busi; + +import cn.estsh.i3plus.pojo.mes.bean.MesDefectType; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import io.swagger.annotations.ApiOperation; +/** + * @Description :缺陷记录 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/19 15:32 + * @Modify: + **/ +public interface IMesInputDefectRecordService { + + @ApiOperation(value = "生成缺陷记录") + void savePartInspection(MesProduceSn mesProduceSn, String userName, MesDefectType mesDefect,String defectLocation); +} diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy new file mode 100644 index 0000000..4f359d3 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Mes2Pisces/MesToPiscesMesJisShipping.groovy @@ -0,0 +1,62 @@ +import cn.estsh.i3plus.platform.common.tool.MathOperation +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack +import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement +import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.util.StringUtils + +/** + * @Description : MES2PISCES-发运单 + * @Reference : + * @Author : gsz + * @CreateDate 2024/7/14 10:59 + * @Modify: + * */ +class MesToPiscesMesJisShipping { + + public static final Logger LOGGER = LoggerFactory.getLogger(MesToPiscesMesJisShipping.class) + + @Autowired + private MesShippingOrderManagementRepository mesShippingOrderManagementRepository; + + def filterData(MesInterfaceDataMapper mapper, List> srcData) throws Exception { + if (srcData == null || srcData.size() == 0) { + return srcData + } + Map mesPartShippingGroupMap = new HashMap<>(); + String organizeCode = mapper.getOrganizeCode(); + Map> destData = new HashMap<>(); + for (Map rowMap : srcData) { + if (!StringUtils.isEmpty(rowMap.get("shipping_order_code"))) { + MesShippingOrderManagement mesShipping = getMesShipping(organizeCode, String.valueOf(rowMap.get("shipping_order_code")), mesPartShippingGroupMap) + if (!Objects.isNull(mesShipping)) { + rowMap.put("HANDLE_FID", mesShipping.getFid()) + } else { + LOGGER.info("shipping_order_code:{}信息不存在", String.valueOf(rowMap.get("shipping_order_code"))) + } + } + //数据汇总 + String key = String.valueOf(rowMap.get("HANDLE_FID")) + String.valueOf("part_no") + if (destData.containsKey(key)) { + destData.get(key).put("quantity_per_car", MathOperation.add(Double.valueOf(destData.get(key).get("quantity_per_car") + ""), Double.valueOf(rowMap.get("quantity_per_car") + ""))) + } else { + destData.put(key, rowMap) + } + } + return new ArrayList<>(destData.values()); + } + + private MesShippingOrderManagement getMesShipping(String organizeCode, String shippingCode, Map mesPartShippingGroupMap) { + if (Objects.isNull(mesPartShippingGroupMap) || !mesPartShippingGroupMap.containsKey(shippingCode)) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(shippingCode, "shippingCode", ddlPackBean); + mesPartShippingGroupMap.put(shippingCode, mesShippingOrderManagementRepository.getByProperty(ddlPackBean)) + } + return mesPartShippingGroupMap.get(shippingCode); + } + +} \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy new file mode 100644 index 0000000..bbd4bc4 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/Pisces2Mes/PiscesToMesProductSn.groovy @@ -0,0 +1,58 @@ +import cn.estsh.i3plus.platform.plugin.datasource.DynamicDataSourceProxy +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean +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 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 + +/** + * @Description : 跨工厂防错 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/22 11:03 + * @Modify: + * */ +class PiscesToMesProductSn { + + public static final Logger LOGGER = LoggerFactory.getLogger(PiscesToMesProductSn.class) + + @Autowired + private IMesCrossOrganizeCfgRepository mesCrossOrganizeCfgRepository; + + @Resource(name = "pisces1DataSource") + private DynamicDataSourceProxy pisces1DataSource; + + def readData(MesInterfaceDataMapper mapper) throws Exception { + String organizeCode = mapper.getOrganizeCode(); + List crossOrganizeCfgList = mesCrossOrganizeCfgRepository.findByHqlWhere(DdlPackBean.getDdlPackBean(organizeCode)); + if (CollectionUtils.isEmpty(crossOrganizeCfgList)) { + LOGGER.info("未查询到跨工厂配置"); + return new ArrayList<>(); + } + List> srcData = new ArrayList<>(); + //循环处理数据 + for (MesCrossOrganizeCfg crossOrganizeCfg : crossOrganizeCfgList) { + Map params = new HashMap<>(); + params.put("srcOrganizeCode", crossOrganizeCfg.getSrcOrganizeCode()) + params.put("partNo", crossOrganizeCfg.getPartNo()) + String sql = "select top "+mapper.getSrcGetLimit()+" * from " + mapper.getSrcTableName() + " where PLANT = :srcOrganizeCode and PART_NO = :partNo and " + mapper.getSrcWhere() + " order by "+mapper.getSrcOrderBy() + //查询待同步的数据 + List> dataList = queryDataTable(sql, params); + if (!CollectionUtils.isEmpty(dataList)) { + srcData.addAll(dataList); + } + } + return srcData; + } + + private List> queryDataTable(String sql, Map params) { + NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(pisces1DataSource.getDataSource()) + return namedJdbcTemplate.queryForList(sql, params); + } +} \ No newline at end of file diff --git a/modules/i3plus-ext-mes-apiservice/src/groovy/ccscTask/sapToMesCcscTaskResult.groovy b/modules/i3plus-ext-mes-apiservice/src/groovy/ccscTask/sapToMesCcscTaskResult.groovy index d4baeae..b80cf7a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/groovy/ccscTask/sapToMesCcscTaskResult.groovy +++ b/modules/i3plus-ext-mes-apiservice/src/groovy/ccscTask/sapToMesCcscTaskResult.groovy @@ -1,10 +1,18 @@ +import cn.estsh.i3plus.ext.mes.api.busi.IMesInputDefectRecordService 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.codemaker.SnowflakeIdMaker +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack +import cn.estsh.i3plus.pojo.mes.bean.MesDefectType +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn import cn.estsh.i3plus.pojo.mes.dbinterface.MesInterfaceDataMapper +import cn.estsh.i3plus.pojo.mes.repository.MesDefectTypeRepository +import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderToSapRepository import lombok.Getter import lombok.Setter +import org.apache.commons.collections.CollectionUtils import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired @@ -33,6 +41,15 @@ class sapToMesCcscTaskResult { @Resource(name = "mesDataSource") private DynamicDataSourceProxy mesDataSource; + @Autowired + private MesProduceSnRepository mesProduceSnRepository; + + @Autowired + private IMesInputDefectRecordService mesInputDefectRecordService; + + @Autowired + private MesDefectTypeRepository mesDefectTypeRepository; + @Getter @Setter private Connection mesConn; @@ -46,6 +63,7 @@ class sapToMesCcscTaskResult { List> destData = new ArrayList<>(); List insertSqlList = new ArrayList<>(); + MesDefectType mesDefect = null; for (Map rowMap : srcData) { String organizeCode = String.valueOf(rowMap.get("WERKS")); String taskNo = rowMap.get("task_no").toString(); @@ -89,12 +107,18 @@ class sapToMesCcscTaskResult { , part_no, part_no, part_no, 1, work_cell_code, work_center_code, snowflakeIdMaker.nextId(), organizeCode, TimeTool.getNowTime(true), "CCSC_SAP"); insertSqlList.add(insertSql); - //更新所有条码为可疑品 - String sqlWorkSn = "update mes_produce_sn set qc_status=30 " + - " where organize_code= '"+organizeCode+"' and work_center_code= '"+work_center_code+"' " + - " and work_cell_code= '"+work_cell_code+"' "+ - " and part_no= '"+part_no+"'; "; - insertSqlList.add(sqlWorkSn); + //查询所有条码信息 + List mesProduceSnList = getMesProduceSn(organizeCode, work_center_code, work_cell_code, part_no) + if(CollectionUtils.isNotEmpty(mesProduceSnList)){ + if(Objects.isNull(mesDefect)){ + mesDefect = getMesDefect(organizeCode) + } + //更新所有条码为可疑品 生成可疑品记录 + for (MesProduceSn mesProduceSn : mesProduceSnList) { + mesInputDefectRecordService.savePartInspection(mesProduceSn, "JOB",mesDefect,"A01") + } + } + } } @@ -114,6 +138,20 @@ class sapToMesCcscTaskResult { return destData; } + private MesDefectType getMesDefect(String organizeCode) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode) + DdlPreparedPack.getStringEqualPack("CCSC", "defectTypeCode", packBean); + return mesDefectTypeRepository.getByProperty(packBean) + } + + private List getMesProduceSn(String organizeCode, String work_center_code, String work_cell_code, String part_no) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode) + DdlPreparedPack.getStringEqualPack(work_center_code, "workCenterCode", packBean); + DdlPreparedPack.getStringEqualPack(work_cell_code, "workCellCode", packBean); + DdlPreparedPack.getStringEqualPack(part_no, "partNo", packBean); + return mesProduceSnRepository.findByHqlWhere(packBean) + } + private List> queryDataTable(String sql, Map params) { NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(mesDataSource.getDataSource()) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java index 054b419..4ef7d1b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java @@ -326,7 +326,7 @@ public class ExtProdOrgController extends MesBaseController { .notNull(MesConstWords.WORK_CENTER_CODE, workCell.getWorkCenterCode()) .notNull(MesCommConstWords.AREA_CODE, workCell.getAreaCode()); - mesWorkCellService.update(workCell); + prodOrgService.updateMesWorkCell(workCell); return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/Pisces1Properties.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/Pisces1Properties.java new file mode 100644 index 0000000..5286f1a --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/Pisces1Properties.java @@ -0,0 +1,68 @@ +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 : pisces1数据源配置 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/9 11:14 + * @Modify: + **/ +@Configuration +public class Pisces1Properties { + + public static final Logger LOGGER = LoggerFactory.getLogger(CommonConstWords.SYSTEM_LOG); + + /*********************** + * pisces1数据源配置 + */ + @Value("${impp.pisces1.datasource.isopen}") + @Getter + private boolean piscesIsOpen; + + @Value("${impp.pisces1.datasource.driver-class-name}") + @Getter + private String piscesDriverClassName; + + @Value("${impp.pisces1.datasource.alias}") + @Getter + private String piscesDsAlias; + + @Value("${impp.pisces1.datasource.jdbc-url}") + @Getter + private String piscesDsJdbcUrl; + + @Value("${impp.pisces1.datasource.username}") + @Getter + private String piscesDsUsername; + + @Value("${impp.pisces1.datasource.password}") + @Getter + private String piscesDsPassword; + + @ConditionalOnExpression("'${impp.pisces1.datasource.isopen:false}' == 'true'") + @Bean(name = "pisces1DataSource") + public DynamicDataSourceProxy initPiscesCustomerSet(){ + LOGGER.info("【初始化客户定制化...】"); + + /** + * 注册客户定制数据源 + */ + LOGGER.info("【客户定制化:pisces1数据源加载...】"); + 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/cus_suit/PiscesProperties.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/cus_suit/PiscesProperties.java index 0484ec2..2677039 100644 --- 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 @@ -60,7 +60,6 @@ public class PiscesProperties { * 注册客户定制数据源 */ LOGGER.info("【客户定制化:pisces数据源加载...】"); - //安道拓定制业务 DynamicDataSourceProxy piscesDataSource = DynamicDataSourceProxy.initDataSourceFactory(this.getPiscesDriverClassName(), this.getPiscesDsJdbcUrl(),this.getPiscesDsUsername(),this.getPiscesDsPassword(),TimeUnit.MINUTES.toMillis(30)); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java index bfc1c0b..131222d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java @@ -69,7 +69,12 @@ public class MesModuleExcelDaoImpl implements IMesModuleExcelDao { hql.append(" and mem.isValid = :isValid "); hql.append(" and mem.isDeleted = :isDeleted "); if (!StringUtils.isEmpty(mesModuleExcel.getModuleCode())) { - hql.append(" and mem.moduleCode like :moduleCode "); + //主数据单独下载模版时不能模糊查询 + if (!StringUtils.isEmpty(mesModuleExcel.getQueryIsAllowLike()) && mesModuleExcel.getQueryIsAllowLike().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) { + hql.append(" and mem.moduleCode like :moduleCode "); + } else { + hql.append(" and mem.moduleCode = :moduleCode "); + } } if (!StringUtils.isEmpty(mesModuleExcel.getModuleName())) { hql.append(" and mem.moduleName like :moduleName "); @@ -82,7 +87,11 @@ public class MesModuleExcelDaoImpl implements IMesModuleExcelDao { query.setParameter(MesExtConstWords.IS_VALID1, CommonEnumUtil.IS_VAILD.VAILD.getValue()); query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); if (!StringUtils.isEmpty(mesModuleExcel.getModuleCode())) { - query.setParameter(MesExtConstWords.MODULE_CODE, "%" + mesModuleExcel.getModuleCode() + "%"); + if (!StringUtils.isEmpty(mesModuleExcel.getQueryIsAllowLike()) && mesModuleExcel.getQueryIsAllowLike().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) { + query.setParameter(MesExtConstWords.MODULE_CODE, "%" + mesModuleExcel.getModuleCode() + "%"); + } else { + query.setParameter(MesExtConstWords.MODULE_CODE, mesModuleExcel.getModuleCode()); + } } if (!StringUtils.isEmpty(mesModuleExcel.getModuleName())) { query.setParameter(MesExtConstWords.MODULE_NAME, "%" + mesModuleExcel.getModuleName() + "%"); 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 d829e26..7b95f66 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 @@ -50,6 +50,10 @@ public class MesSAPDbAdapter { @Resource(name = "piscesDataSource") private DynamicDataSourceProxy piscesDataSourceProxy; + @Resource(name = "pisces1DataSource") + private DynamicDataSourceProxy pisces1DataSourceProxy; + + @Value("${sync.redis.time:1800}") private Integer redisTime; @@ -77,7 +81,8 @@ public class MesSAPDbAdapter { private WmsSAPDbWriter buildWriter(String groupName, DynamicDataSourceProxy sapDataSourceProxy, DynamicDataSourceProxy mesDataSourceProxy, - DynamicDataSourceProxy piscesDataSourceProxy) throws Exception { + DynamicDataSourceProxy piscesDataSourceProxy, + DynamicDataSourceProxy pisces1DataSourceProxy) throws Exception { WmsSAPDbWriter wmsSAPDbWriter = null; @@ -97,7 +102,13 @@ public class MesSAPDbAdapter { wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, piscesDataSourceProxy); } - + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES12MES.getName())) { + wmsSAPDbWriter = new WmsSAPDbWriter(pisces1DataSourceProxy, mesDataSourceProxy); + } + + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES1.getName())) { + wmsSAPDbWriter = new WmsSAPDbWriter(mesDataSourceProxy, pisces1DataSourceProxy); + } // new 的对象需要手工注入 bean @@ -128,7 +139,8 @@ public class MesSAPDbAdapter { private WmsSAPDbReader buildReader(String groupName, DynamicDataSourceProxy sapDataSourceProxy, DynamicDataSourceProxy mesDataSourceProxy, - DynamicDataSourceProxy piscesDataSourceProxy) { + DynamicDataSourceProxy piscesDataSourceProxy, + DynamicDataSourceProxy pisces1DataSourceProxy) { WmsSAPDbReader wmsSAPDbReader = null; @@ -148,6 +160,14 @@ public class MesSAPDbAdapter { wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy); } + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.PISCES12MES.getName())) { + wmsSAPDbReader = new WmsSAPDbReader(pisces1DataSourceProxy); + } + + if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.MES2PISCES1.getName())) { + wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy); + } + // if (groupName.equals(MesInterfaceEnumUtil.DIRECTION_TYPE.WMS2MES.getName())) { // wmsSAPDbReader = new WmsSAPDbReader(mesDataSourceProxy); // } @@ -200,11 +220,11 @@ public class MesSAPDbAdapter { // 不需要在这里处理 //initConnection(); - writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); + writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy); writer.setSrcConn(this.srcConn); writer.setDestConn(this.destConn); - reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); + reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy); reader.setSrcConn(this.srcConn); @@ -361,11 +381,11 @@ public class MesSAPDbAdapter { // 不需要在这里处理 //initConnection(); - writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); + writer = buildWriter(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy); writer.setSrcConn(this.srcConn); writer.setDestConn(this.destConn); - reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy); + reader = buildReader(groupName, sapDataSourceProxy, mesDataSourceProxy,piscesDataSourceProxy,pisces1DataSourceProxy); reader.setSrcConn(this.srcConn); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java index e083810..33c6e8c 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java @@ -85,7 +85,7 @@ public class MesEquipmentVariableService extends BaseMesService implem if (CollectionUtils.isEmpty(produceSnList)) { MesException.throwMesBusiException("条码【%s】信息不存在", sn); } - return produceSnList; + return produceSnList.stream().filter(o -> null != o).sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementService.java index 5f606f6..75a06e9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShippingOrderManagementService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService; +import cn.estsh.i3plus.ext.mes.api.base.IMesPartShippingGroupService; import cn.estsh.i3plus.ext.mes.api.base.IMesShippingOrderManagementService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -28,6 +29,7 @@ import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.stream.Collectors; @Service @@ -60,6 +62,8 @@ public class MesShippingOrderManagementService extends BaseMesService> detailMap = detailDeleteList.stream().collect(Collectors.groupingBy(k -> k.getPartNo())); List jisShippingList = new ArrayList<>(); + MesPartShippingGroup mesPartShippingGroup = mesPartShippingGroupService.getMesPartShippingGroup(bean.getOrganizeCode(), originBean.getShippingGroupCode()); detailMap.forEach((k, v) -> { MesPartSap part = partService.getMesPartSapByPartNo(v.get(0).getPartNo(), bean.getOrganizeCode()); @@ -303,7 +308,7 @@ public class MesShippingOrderManagementService extends BaseMesService implements IMesWorkCenterService { + @Autowired + private MesWorkCenterRepository workCenterRepository; + @Override protected void setPackQueryBean(MesWorkCenter bean, DdlPackBean packBean) { DdlPreparedPack.getStringLikerPack(bean.getErpWorkCenter(), "erpWorkCenter", packBean); @@ -19,4 +27,18 @@ public class MesWorkCenterService extends BaseMesService implemen DdlPreparedPack.getNumEqualPack(bean.getCenterType(), "centerType", packBean); } + @Override + public MesWorkCenter getWorkCenterDb(String organizeCode, String workCenterCode) { + if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null; + return workCenterRepository.getByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.WORK_CENTER_CODE}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode}); + } + + @Override + public String getErpWorkCenterCode(String organizeCode, String workCenterCode) { + MesWorkCenter workCenterDb = getWorkCenterDb(organizeCode, workCenterCode); + return null != workCenterDb ? workCenterDb.getErpWorkCenter() : null; + } + } 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 87edbd9..40de38e 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 @@ -2,8 +2,8 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.*; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; -import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; @@ -108,6 +108,9 @@ public class MesWorkOrderService extends BaseMesService implements private MesPartRepository mesPartRDao; @Autowired + private IMesWorkCenterService workCenterService; + + @Autowired private MesWorkCenterPartRelationRepository partRelationRao; @Override public MesWorkOrder insert(MesWorkOrder bean) { @@ -990,7 +993,7 @@ public class MesWorkOrderService extends BaseMesService implements } //成品移库 if (isMove) { - MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), mesWorkOrderNew.getNum(), sn, MesExtEnumUtil.MOVE_TYPE.FINISH_PRODUCTS_MOVE.getValue()); + MesMove move = createMove(mesPartSap, mesProdRuleSortCfg.getSrcErpLocation(), mesProdRuleSortCfg.getDestErpLocation(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getWorkCenterCode(), mesWorkOrderNew.getNum(), sn, MesExtEnumUtil.MOVE_TYPE.FINISH_PRODUCTS_MOVE.getValue()); move.setMatnr(mesWorkOrder.getPartNo()); mesMoveList.add(move); } @@ -1136,7 +1139,7 @@ public class MesWorkOrderService extends BaseMesService implements if (mesPartSapMap.containsKey(mesBom.getItemPartNo())) { mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next(); } - MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesBom.getItemQty(), "", MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue()); + MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesWorkOrder.getWorkCenterCode(), mesBom.getItemQty(), "", MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue()); move.setMatnr(mesBom.getItemPartNo()); mesMoveList.add(move); } @@ -1237,7 +1240,7 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderRDao.findByHqlWhere(packBean); } - private MesMove createMove(MesPartSap mesPart, String source, String target, String org, double qty, String sn, Integer moveType) { + private MesMove createMove(MesPartSap mesPart, String source, String target, String org, String workCenterCode, double qty, String sn, Integer moveType) { MesMove move = new MesMove(); if (!Objects.isNull(mesPart)) { move.setMeins(mesPart.getUnit()); @@ -1251,6 +1254,7 @@ public class MesWorkOrderService extends BaseMesService implements move.setProductSn(sn); move.setMoveType(moveType); move.setPostTime(TimeTool.getTimeShortWithColon()); + move.setWorkCenter(workCenterService.getErpWorkCenterCode(org, workCenterCode)); ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName()); return move; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesFileServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesFileServiceImpl.java new file mode 100644 index 0000000..b2d97ab --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesFileServiceImpl.java @@ -0,0 +1,136 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file; + +import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysFile; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * @Description :文件上传 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/19 11:55 + * @Modify: + **/ +@Slf4j +@Service +public class MesFileServiceImpl implements IMesFileService { + + @Autowired + private ImppFileService imppFileService; + + @Override + public SysFile uploadFile(MultipartFile file) { + SysFile sysFile; + try { + log.info("文件大小{}", file.getBytes().length); + sysFile = save2FastDfs(file); + log.info("after save2FastDfs {}", sysFile); + } catch (IOException e) { + log.error("FastDFS上传文件出错:{}", e.getMessage() + "\r" + e.getStackTrace()); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) + .setErrorDetail("上传文件至文件服务器出错了。信息为:%s", e.getMessage()) + .build(); + } + if (null == sysFile) { + log.error("FastDFS上传文件出错"); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) + .setErrorDetail("FastDFS上传文件出错") + .build(); + } + if (StringUtils.isEmpty(sysFile.getFileTypeId())) { + log.error("FastDFS上传文件出错:{}", "未在字典中定义该文件类型,无法上传成功,请先添加file_type字典"); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) + .setErrorDetail("未在字典中定义该文件类型,无法上传成功,请先添加file_type字典") + .build(); + } + return sysFile; + } + + /** + * 上传文件至FastDfs,目前私有,因为没有别的地方进行调用。 + * + * @param multipartFile 文件 + * @return 带有URL地址的对象 + * @throws IOException + */ + private SysFile save2FastDfs(MultipartFile multipartFile) throws IOException { + SysFile sysFile = imppFileService.upload(multipartFile, CommonEnumUtil.SOFT_TYPE.MES.getValue()); + return sysFile; + } + + @Override + public void getFileByUrl(HttpServletResponse resp, String fileUrl) { + InputStream inputStream = getInputStream(fileUrl); + writeFile(resp, inputStream); + } + + private static InputStream getInputStream(String urlPath) { + InputStream inputStream = null; + HttpURLConnection httpURLConnection; + try { + URL url = new URL(urlPath); + httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setConnectTimeout(3000); + httpURLConnection.setDoInput(true); + httpURLConnection.setRequestMethod("GET"); + int responseCode = httpURLConnection.getResponseCode(); + System.out.println("responseCode is:" + responseCode); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = httpURLConnection.getInputStream(); + } else { + inputStream = httpURLConnection.getErrorStream(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return inputStream; + } + + private static void writeFile(HttpServletResponse resp, InputStream inputStream) { + OutputStream out = null; + try { + out = resp.getOutputStream(); + int len; + byte[] b = new byte[1024]; + while ((len = inputStream.read(b)) != -1) { + out.write(b, 0, len); + } + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java index 48f75e3..8568d9d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java @@ -1,11 +1,10 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file; +import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; import cn.estsh.i3plus.ext.mes.api.base.file.IMesModuleExcelService; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesModuleExcelDao; import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; -import cn.estsh.i3plus.ext.mes.apiservice.utils.HuaWeiOBSUtil; -import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.sqlpack.MesExtHqlPack; import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -18,14 +17,13 @@ import cn.estsh.i3plus.pojo.mes.bean.MesFile; import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel; import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel; import cn.estsh.i3plus.pojo.mes.repository.MesFileRepository; -import com.obs.services.model.PutObjectResult; +import cn.estsh.i3plus.pojo.platform.bean.SysFile; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; import java.util.List; /** @@ -45,6 +43,9 @@ public class MesModuleExcelServiceImpl extends BaseMesService im @Autowired private MesFileRepository mesFileRDao; + @Autowired + private IMesFileService mesFileService; + @Override public ListPager queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) { pager = PagerHelper.getPager(pager, mesModuleExcelDao.queryModuleExcelCount(mesModuleExcel)); @@ -93,21 +94,20 @@ public class MesModuleExcelServiceImpl extends BaseMesService im } private MesFile getMesFile(MultipartFile file, MesModuleExcel mesModuleExcel) { - String fileName = file.getOriginalFilename(); - PutObjectResult putObjectResult = null; - try { - putObjectResult = HuaWeiOBSUtil.putObjectByMultipartFile(MesCommonConstant.OBS_BUCKET_NAME, fileName, file); - } catch (IOException e) { - MesException.throwMesBusiException("文件上传失败"); + SysFile sysFile = mesFileService.uploadFile(file); + if (sysFile.getFileTypeId() == null) { + MesException.throwMesBusiException("未在字典中定义该文件类型,无法上传成功,请先添加file_type字典"); } + MesFile mesFile = new MesFile(); mesFile.setOrganizeCode(mesModuleExcel.getOrganizeCode()); - mesFile.setFileName(fileName); - mesFile.setFileUrl(putObjectResult.getObjectUrl()); - mesFile.setFileSize(String.valueOf(file.getSize())); - mesFile.setGroupName(putObjectResult.getBucketName()); - mesFile.setFileType(fileName != null && fileName.contains(".") ? fileName.substring(fileName.indexOf(".") + 1) : ""); - mesFile.setFileOriginName(fileName); + mesFile.setFileName(sysFile.getDfsFileName()); + mesFile.setFileUrl(sysFile.getFilePath()); + mesFile.setFileSize(String.valueOf(sysFile.getFileSize())); + mesFile.setFileType(String.valueOf(sysFile.getFileTypeName())); + mesFile.setFileOriginName(sysFile.getFileOriginalName()); + mesFile.setGroupName(sysFile.getDfsGroupName()); + mesFile.setSyncTag(0); ConvertBean.serviceModelInitialize(mesFile, mesModuleExcel.getCreateUser()); return mesFile; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesInputDefectRecordServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesInputDefectRecordServiceImpl.java new file mode 100644 index 0000000..b23f189 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesInputDefectRecordServiceImpl.java @@ -0,0 +1,145 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; +import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService; +import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCenterService; +import cn.estsh.i3plus.ext.mes.api.busi.IMesInputDefectRecordService; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.mes.bean.MesDefectType; +import cn.estsh.i3plus.pojo.mes.bean.MesMove; +import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection; +import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.repository.MesMoveRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesPartInspectionDetailRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesPartInspectionRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.util.ResultBean; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.Objects; + +/** + * @Description : 缺陷记录 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/7/19 15:52 + * @Modify: + **/ + +@Service +@Slf4j +public class MesInputDefectRecordServiceImpl implements IMesInputDefectRecordService { + @Autowired + private MesMoveRepository moveRepository; + + @Autowired + private MesPartInspectionRepository partInspectionRepository; + + @Autowired + private MesPartInspectionDetailRepository partInspectionDetailRepository; + + @Autowired + private IMesConfigService configService; + + @Autowired + private ISyncFuncService syncFuncService; + + @Autowired + private MesProduceSnRepository mesProduceSnRepository; + + @Autowired + private IMesPartSapService mesPartSapService; + + @Autowired + private IMesWorkCenterService workCenterService; + + @Override + public void savePartInspection(MesProduceSn mesProduceSn, String userName, MesDefectType mesDefect,String defectLocation) { + MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesProduceSn.getPartNo(), mesProduceSn.getOrganizeCode()); + MesPartInspection mesPartInspection = partInspectionRepository.insert(createPartInspection(mesPartSap, mesProduceSn.getProductSn(), mesProduceSn.getOrganizeCode(), userName)); + saveDetail(mesProduceSn.getOrganizeCode(), mesDefect, mesPartInspection.getId(), userName,defectLocation); + //更新条码状态 + mesProduceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); + ConvertBean.serviceModelInitialize(mesProduceSn, userName); + mesProduceSnRepository.update(mesProduceSn); + //移库 + createMove(mesPartSap, mesPartInspection.getId(), configService.getCfgValue(mesProduceSn.getOrganizeCode(), "LGORT"), configService.getCfgValue(mesProduceSn.getOrganizeCode(), "UMLGO"), mesProduceSn); + } + + private void saveDetail(String organizeCode, MesDefectType mesDefect, long partInspectionId, String userName,String defectLocation) { + MesPartInspectionDetail detail = new MesPartInspectionDetail(); + if (!Objects.isNull(mesDefect)) { + detail.setDefectTypeId(mesDefect.getId()); + BeanUtils.copyProperties(mesDefect, detail); + } + detail.setId(null); + detail.setDefectLocation(defectLocation); + detail.setFrontBack(MesExtEnumUtil.DEFECT_ALARM_CONFIG_SIDES.FRONT.getValue()); + detail.setOrganizeCode(organizeCode); + detail.setPid(partInspectionId); + ConvertBean.serviceModelInitialize(detail, userName); + partInspectionDetailRepository.insert(detail); + } + + private MesPartInspection createPartInspection(MesPartSap mesPartSap, String sn, String org, String userName) { + MesPartInspection partInspection = new MesPartInspection(); + partInspection.setOrganizeCode(org); + partInspection.setPartNo(mesPartSap.getPartNo()); + partInspection.setPartName(mesPartSap.getPartName()); + partInspection.setInspectionDate(TimeTool.getToday()); + partInspection.setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue()); + partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue()); + partInspection.setSn(sn); + partInspection.setQty(MesCommonConstant.TRUE_INTEGER); + partInspection.setSourceType(MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()); + ConvertBean.serviceModelInitialize(partInspection, userName); + return partInspection; + } + + /** + * 移库 + * + * @param source 来源 + * @param target 目标 + * @return + */ + private void createMove(MesPartSap mesPartSap, long partInspectionId, String source, String target, MesProduceSn mesProduceSn) { + GenSerialNoModel serialNoModel = new GenSerialNoModel("INPUT_DEFECT_ZRSUM"); + serialNoModel.setPartNo(mesPartSap.getPartNo()); + ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, AuthUtil.getSessionUser().getUserName(), mesProduceSn.getOrganizeCode(), 1); + String zrsum = ""; + if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) { + zrsum = (rb.getResultList().get(0)).toString(); + } + + MesMove move = new MesMove(); + move.setMatnr(mesPartSap.getPartNo()); + move.setOrganizeCode(mesProduceSn.getOrganizeCode()); + move.setFactoryCode(mesProduceSn.getOrganizeCode()); + move.setLgort(source); + move.setUmlgo(target); + move.setMenge(1d); + move.setMeins(mesPartSap.getUnit()); + move.setZrsum(zrsum); + move.setPostDate(TimeTool.getToday()); + move.setPostTime(TimeTool.getTimeShortWithColon()); + move.setPartInspectionId(partInspectionId); + move.setMoveType(MesExtEnumUtil.MOVE_TYPE.SUSPICIOUS_MOVE.getValue()); + move.setProductSn(mesProduceSn.getProductSn()); + move.setWorkCenter(workCenterService.getErpWorkCenterCode(mesProduceSn.getOrganizeCode(), mesProduceSn.getWorkCenterCode())); + ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName()); + moveRepository.insert(move); + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java index 7179345..21e8694 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.api.busi.IProdExtOrgService; import cn.estsh.i3plus.ext.mes.apiservice.dao.IEquipmentExtDao; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.api.iservice.base.IEnumService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; @@ -21,6 +22,7 @@ import cn.estsh.i3plus.pojo.mes.model.ProdOrgModel; import cn.estsh.i3plus.pojo.mes.model.SysOrganizeModel; import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.sqlpack.MesHqlPack; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -62,6 +64,10 @@ public class ProdExtOrgService implements IProdExtOrgService { private MesWorkCellParamRepository workCellParamRepository; @Autowired private IEnumService enumService; + @Autowired + private MesWorkModuleRepository workModuleRepository; + @Autowired + private MesWorkCellModuleRepository workCellModuleRepository; @Override public List queryMesDataTree(String organizeCode) { @@ -172,7 +178,6 @@ public class ProdExtOrgService implements IProdExtOrgService { if (MesEnumUtil.PROD_ORG_LEVEL.LEVEL_THREE.getValue() == prodOrgModel.getLevel()) { MesWorkCell workCell = new MesWorkCell(); BeanUtils.copyProperties(prodOrgModel, workCell); - //checkWorkCell(workCell); //唯一性校验 MesWorkCell mesWorkCell = workCellRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, "workCellCode", "workCenterCode"}, new Object[]{workCell.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCell.getWorkCellCode(), workCell.getWorkCenterCode()}); @@ -186,12 +191,12 @@ public class ProdExtOrgService implements IProdExtOrgService { .build(); } workCell.setGrade(prodOrgModel.getGrade()); + insertWorkCellModule(workCell); return workCellRepository.insert(workCell); } return null; } - @Override public ListPager queryMesAreaByPager(MesArea mesArea, Pager pager) { @@ -395,23 +400,12 @@ public class ProdExtOrgService implements IProdExtOrgService { workCell.getAreaCode(), workCell.getWorkCenterCode(), workCell.getWorkCellCode()) .build(); } - /*if (MesEnumUtil.MES_WORK_CELL_TYPE.REWORK.getValue() == workCell.getWorkCellType()) { - MesWorkCell mesWorkCell = workCellRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "workCenterCode", "workCellType"}, - new Object[]{workCell.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCell.getWorkCenterCode(), workCell.getWorkCellType()}); - if (mesWorkCell != null && !mesWorkCell.getId().equals(workCellDb.getId())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("工位代码为【%s】,工位类型为【%s】的记录已存在", mesWorkCell.getWorkCellCode(), MesEnumUtil.MES_WORK_CELL_TYPE.valueOfDescription(workCell.getWorkCellType())) - .build(); - } - }*/ - workCellDb.setSeq(workCell.getSeq()); - workCellDb.setWorkCellName(workCell.getWorkCellName()); - workCellDb.setGrade(workCell.getGrade()); - ConvertBean.serviceModelUpdate(workCellDb, AuthUtil.getSessionUser().getUserName()); - return workCellRepository.save(workCellDb); + ConvertBean.serviceModelUpdate(workCell, AuthUtil.getSessionUser().getUserName()); + + insertWorkCellModule(workCell); + + return workCellRepository.save(workCell); } @Override @@ -598,4 +592,31 @@ public class ProdExtOrgService implements IProdExtOrgService { new Object[]{status, userName, TimeTool.getNowTime(true)}); } + private void insertWorkCellModule(MesWorkCell workCell) { + if (StringUtils.isEmpty(workCell.getGrade()) || workCell.getGrade().compareTo(MesExtEnumUtil.WORK_CELL_GRADE.SCAN.getValue()) != 0) return; + List workCellModuleList = getWorkCellModuleButtonList(workCell.getOrganizeCode(), workCell.getWorkCenterCode(), workCell.getWorkCellCode()); + if (!CollectionUtils.isEmpty(workCellModuleList)) return; + List workModuleList = getWorkModuleButtonList(workCell.getOrganizeCode()); + if (CollectionUtils.isEmpty(workModuleList)) return; + for (MesWorkModule workModule : workModuleList) { + if (null == workModule) continue; + MesWorkCellModule workCellModule = new MesWorkCellModule(); + BeanUtils.copyProperties(workCell, workCellModule, MesExtConstWords.ID); + workCellModule.setModuleCode(workModule.getModuleCode()); + workCellModuleRepository.insert(workCellModule); + } + } + + private List getWorkCellModuleButtonList(String organizeCode, String workCenterCode, String workCellCode) { + return workCellModuleRepository.findByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.WORK_CENTER_CODE, MesExtConstWords.WORK_CELL_CODE}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCenterCode, workCellCode}); + } + + private List getWorkModuleButtonList(String organizeCode) { + return workModuleRepository.findByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.MODULE_TYPE}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), MesEnumUtil.WORK_MODULE_TYPE.BUTTON_MODULE.getValue()}); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java index f7bcfff..3372eb5 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/report/MesYfReportServiceImpl.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report; import cn.estsh.i3plus.ext.mes.api.base.IMesProduceSnService; import cn.estsh.i3plus.ext.mes.api.base.IMesProductionRecordService; +import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesYfReportDao; import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt; @@ -10,6 +11,7 @@ import cn.estsh.i3plus.ext.mes.apiservice.utils.MesTraceabilityTemp; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportConditionModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesDeviceDataQueryReportResultModel; import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProdRuleReportConditionModel; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; @@ -74,11 +76,17 @@ public class MesYfReportServiceImpl implements IMesYfReportService { private MesProductionAssemblyRepository mesProductionAssemblyRepository; @Autowired - private MesWorkCellScanMonitorLogRepository mesWorkCellScanMonitorLogRepository; + private MesWorkCellScanMonitorLogRepository workCellScanMonitorLogRepository; @Autowired private MesProcessRepository mesProcessRepository; + @Autowired + private MesWorkCenterRepository workCenterRepository; + + @Autowired + private IMesFileService mesFileService; + @Override public ListPager queryMesDeviceDataByPager(MesDeviceDataQueryReportConditionModel queryReportModel, Pager pager) { ListPager mesDeviceDataQueryReportResultModelListPager = @@ -138,7 +146,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { public List findTraceabilityReport(MesProduceSn mesProduceSn) { DdlPackBean packBean = getDdlPackBean(mesProduceSn); //查询条码记录表 - MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).iterator().next(); + MesProduceSn produceSn = mesProduceSnService.findMesProduceSn(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()).get(0); //设备加工记录表 List productionRecordList = mesProductionRecordService.findMesProductionRecord(mesProduceSn.getOrganizeCode(), mesProduceSn.getProductSn()); List processCodeList = productionRecordList.stream().map(MesProductionRecord::getProcessCode).filter(StringUtil::isNotEmpty).collect(Collectors.toList()); @@ -146,7 +154,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { List productionAssemblyList = mesProductionAssemblyRepository.findByHqlWhere(packBean); Map> productionAssemblyMap = CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); //工位扫描监控日志 - List mesWorkCellScanMonitorLogs = mesWorkCellScanMonitorLogRepository.findByHqlWhere(packBean); + List mesWorkCellScanMonitorLogs = getWorkCellScanMonitorLogList(productionRecordList); Map> mesWorkCellScanMonitorMap = CollectionUtils.isEmpty(mesWorkCellScanMonitorLogs) ? null : mesWorkCellScanMonitorLogs.stream().collect(Collectors.groupingBy(t -> t.getWorkCenterCode() + t.getWorkCellCode() + t.getEquipmentCode())); //查询工序名称 Map processMap = getMesProcessMap(mesProduceSn, processCodeList); @@ -154,7 +162,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { List mesTraceabilityReportModelList = new ArrayList<>(); MesTraceabilityReportModel mesTraceabilityReportModel = new MesTraceabilityReportModel(); BeanUtils.copyProperties(produceSn, mesTraceabilityReportModel); - mesTraceabilityReportModel.setProdType(MesExtEnumUtil.TRACEABILITY_REPORT_PROD_TYPE.NO_SORT.getValue()); + mesTraceabilityReportModel.setProdType(getWorkCenter(produceSn).getCenterType()); int duration = 0; for (MesProductionRecord mesProductionRecord : productionRecordList) { MesTraceabilityReportDataModel dataModel = new MesTraceabilityReportDataModel(); @@ -199,7 +207,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { //生成PDF文件并上传 try { - mesTraceabilityReportModel.setUrl(MesTraceabilityTemp.getMesTraceabilityTemp(mesTraceabilityReportModel)); + mesTraceabilityReportModel.setUrl(MesTraceabilityTemp.getMesTraceabilityTemp(mesFileService,mesTraceabilityReportModel)); } catch (IOException e) { MesException.throwMesBusiException("删除文件:生成PDF文件失败"); } @@ -209,6 +217,30 @@ public class MesYfReportServiceImpl implements IMesYfReportService { return mesTraceabilityReportModelList; } + private MesWorkCenter getWorkCenter(MesProduceSn produceSn) { + MesWorkCenter workCenter = workCenterRepository.getByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.WORK_CENTER_CODE}, + new Object[]{produceSn.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), produceSn.getWorkCenterCode()}); + if (null == workCenter) MesException.throwMesBusiException("条码[%s]关联的生产线[%s]信息不存在", produceSn.getProductSn(), produceSn.getWorkCenterCode()); + return workCenter; + } + + private List getWorkCellScanMonitorLogList(List productionRecordList) { + if (CollectionUtils.isEmpty(productionRecordList)) return null; + List workCellScanMonitorLogList = new ArrayList<>(); + for (MesProductionRecord productionRecord : productionRecordList) { + if (null == productionRecord) continue; + //云端 MesWorkCellScanMonitorLog 按照 工厂+生产线 分表 只能根据开模ID查询, 条码字段是产出条码 不是主条码, 一模多腔场景存的是多个条码分号分隔 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(productionRecord.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(productionRecord.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean); + DdlPreparedPack.getStringEqualPack(productionRecord.getWorkCellCode(), MesExtConstWords.WORK_CELL_CODE, packBean); + DdlPreparedPack.getNumEqualPack(productionRecord.getMouldRecordId(), MesExtConstWords.MOULD_RECORD_ID, packBean); + List itemList = workCellScanMonitorLogRepository.findByHqlWhere(packBean); + if (!CollectionUtils.isEmpty(itemList)) workCellScanMonitorLogList.addAll(itemList); + } + return workCellScanMonitorLogList; + } + private Map getMesProcessMap(MesProduceSn mesProduceSn, List processCodeList) { Map processMap = null; if(!CollectionUtils.isEmpty(processCodeList)){ diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java index db325da..1cb8dd9 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/utils/MesTraceabilityTemp.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.utils; +import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellScanMonitorLog; @@ -26,7 +27,7 @@ import static cn.estsh.i3plus.ext.mes.apiservice.dbinterface.WmsSAPDbQuery.lz; public class MesTraceabilityTemp { - public static String getMesTraceabilityTemp(MesTraceabilityReportModel mesTraceabilityReportModel) throws IOException { + public static String getMesTraceabilityTemp(IMesFileService mesFileService,MesTraceabilityReportModel mesTraceabilityReportModel) throws IOException { String url = ""; File file = new File(System.getProperty("java.io.tmpdir") + File.separator + "追溯报表orgPdf" + mesTraceabilityReportModel.getProductSn() + "-" + mesTraceabilityReportModel.getPartNo() + ".PDF"); File destFile = null; @@ -615,22 +616,6 @@ public class MesTraceabilityTemp { equtable.addCell(equcontentCell21); index++; } - } else { - // 构建每一列 - PdfPCell equcontentCell00 = new PdfPCell(new Paragraph("", tableValueFont)); - equcontentCell00.setHorizontalAlignment(Element.ALIGN_LEFT); - equcontentCell00.setBorder(Rectangle.NO_BORDER); - equcontentCell00.setColspan(1); - equtable.addCell(equcontentCell00); - - PdfPCell equcontentCell11 = new PdfPCell(new Paragraph(" ", tableValueFont)); - equcontentCell11.setHorizontalAlignment(Element.ALIGN_CENTER); - equcontentCell11.setVerticalAlignment(Element.ALIGN_MIDDLE); - equcontentCell11.setPaddingBottom(3); - equcontentCell11.setPaddingTop(1); - equcontentCell11.setBackgroundColor(new BaseColor(253, 239, 192));//黄色 - equcontentCell11.setColspan(8); - equtable.addCell(equcontentCell11); } document.add(equtable); @@ -640,7 +625,7 @@ public class MesTraceabilityTemp { //添加分页 destFile = new File(PageNumPdfPageEvent.addPageNum(file.getPath(), file.getPath().replace("追溯报表orgPdf", "追溯报表"))); //文件上传 - url = HuaWeiOBSUtil.putObjectByMultipartFile(MesCommonConstant.OBS_BUCKET_NAME, destFile.getName(), convert(destFile)).getObjectUrl(); + url = mesFileService.uploadFile(convert(destFile)).getFilePath(); } catch (DocumentException | IOException e) { MesException.throwMesBusiException("生成PDF文件失败"); } finally { diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java index 3d25b9f..cdc4f64 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtConstWords.java @@ -129,6 +129,8 @@ public class MesExtConstWords { public static final String MESSAGE_TYPE = "messageType"; //枚举代码 public static final String ENUM_CODE = "enumCode"; + //组件类型 + public static final String MODULE_TYPE = "moduleType"; //时间[开始/结束]条件 public static final String START_TIME_START = "startTimeStart";