From 78bb4870259a93d40dcd4151626f951ed53d16aa Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 16 Aug 2024 03:23:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E6=B1=87=E6=80=BB=E5=8F=91?= =?UTF-8?q?=E9=80=81SAP=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4=EF=BC=8C?= =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E6=9D=A1=E7=A0=81=E7=8A=B6=E6=80=81=EF=BC=8C?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E8=AE=B0=E5=BD=95=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/ext/mes/api/base/IMesConfigService.java | 6 ++ .../ext/mes/api/base/IMesWorkOrderService.java | 2 +- .../mes/api/base/IMesWorkOrderToSapService.java | 2 +- .../controller/base/BaseExtDataController.java | 101 ++++++++++++++++++++- .../controller/base/MesWorkOrderController.java | 20 +++- .../controller/report/MesBusiReportController.java | 2 - .../ext/mes/apiservice/dao/IMesWorkOrderDao.java | 2 +- .../apiservice/daoimpl/MesWorkOrderDaoImpl.java | 9 +- .../schedulejob/MesWorkOrderToSapJob.java | 23 ++++- .../serviceimpl/base/MesConfigService.java | 13 +++ .../serviceimpl/base/MesWorkOrderService.java | 4 +- .../base/MesWorkOrderToSapServiceImpl.java | 46 +++++++--- .../serviceimpl/report/MesYfReportServiceImpl.java | 24 +++-- 13 files changed, 214 insertions(+), 40 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java index c1cb297..99f8fd1 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesConfigService.java @@ -18,6 +18,9 @@ public interface IMesConfigService { @ApiOperation(value = "获取配置表模板代码") MesConfig getCfgValueByCode(String key); + @ApiOperation(value = "获取配置表模板代码") + MesConfig getCfgValueByCode(String organizeCode,String key); + @ApiOperation(value = "获取系统配置集合") List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType); @@ -33,4 +36,7 @@ public interface IMesConfigService { @ApiOperation(value = "查询分表配置") List findShardingTablesObjectCfg(String organizeCode, String cfgKey, List itemList); + @ApiOperation(value = "更新配置") + void update(MesConfig mesConfig,String userName); + } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index 5d6ae89..6da2132 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -31,7 +31,7 @@ public interface IMesWorkOrderService extends IBaseMesService { void deleteUnSortOrder(String organizeCode, List partNoList); @ApiOperation("汇总工单给SAP") - List sumMesWorkOrderQtyToSap(String organizeCode); + List sumMesWorkOrderQtyToSap(String organizeCode,String lastSendToSapTime); @ApiOperation("ccscTest") List queryMesWorkOrderProcessToSap(String organizeCode); diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java index fcf463e..a0a49be 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java @@ -15,5 +15,5 @@ import java.util.List; public interface IMesWorkOrderToSapService extends IBaseMesService { MesWorkOrderToSap insert(MesWorkOrderModel mesWorkOrder); - void doMesWorkOrder(String organizeCode,List mesWorkOrderList); + void doMesWorkOrder(String organizeCode,String userName,List mesWorkOrderList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java index ac45590..78e1601 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseExtDataController.java @@ -1,23 +1,37 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; import cn.estsh.i3plus.ext.mes.api.base.IMesEnumExtService; +import cn.estsh.i3plus.ext.mes.api.busi.report.IMesYfReportService; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.i3plus.pojo.model.common.ExportDataModel; import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import javax.persistence.EntityManager; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.util.LinkedHashMap; import java.util.Map; +import java.util.Objects; /** * @Description: @@ -35,6 +49,12 @@ public class BaseExtDataController extends MesBaseController { @Autowired private IMesEnumExtService enumService; + @Autowired + private IMesYfReportService mesYfReportService; + + @Autowired + private EntityManager entityManager; + @GetMapping(value = "/enumlist") @ApiOperation(value = "获取MES系统所有枚举") public ResultBean enumlist(@RequestParam(name = "enumName") String enumName) { @@ -81,5 +101,78 @@ public class BaseExtDataController extends MesBaseController { } } + @ApiOperation(value = "导出", notes = "导出") + @PostMapping("/data-export") + public ResultBean doDataExport(@RequestBody ExportDataModel exportDataModel, HttpServletResponse response) { + try { + ValidatorBean.beginValid(exportDataModel) + .notNull("exportCol", exportDataModel.getExportCol()) + .notNull("selectWhere", exportDataModel.getSelectWhere()) + .notNull("exportMode", exportDataModel.getExportMode()); + File excelFile = null; + + ExcelTool excelTool = new ExcelTool(this.entityManager, RedisCacheTool.getImppRedis()); + Class mesClass = null; + ListPager listPager = null; + + switch (MesExtEnumUtil.DATA_EXPORT.valueOfCode(exportDataModel.getExportMode())){ + case MES_PRODUCE_SN_DATA_EXPORT: + mesClass = MesProduceSn.class; + //查询数据 + listPager = mesYfReportService.queryMesProduceSn(JSON.parseObject(exportDataModel.getSelectWhere(), MesProduceSn.class),null);break; + case MES_PRODUCTION_RECORD_DATA_EXPORT: + mesClass = MesProductionRecord.class; + //查询数据 + listPager = mesYfReportService.queryMesProductionRecord(JSON.parseObject(exportDataModel.getSelectWhere(), MesProductionRecord.class),null);break; + default: + break; + } + + if(Objects.isNull(listPager) || CollectionUtils.isEmpty(listPager.getObjectList())){ + MesException.throwMesBusiException("未查询到有效数据"); + } + + LinkedHashMap exportCol = (LinkedHashMap) JSON.parseObject(exportDataModel.getExportCol(), LinkedHashMap.class); + excelFile = new File(System.getProperty("java.io.tmpdir") + File.separator + mesClass.getSimpleName() + ".xls"); + excelFile.createNewFile(); + excelTool.exportData(excelFile, listPager.getObjectList(), mesClass, exportCol); + + + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(excelFile.getName(), "UTF-8")); + response.flushBuffer(); + BufferedInputStream bis = null; + + try { + bis = new BufferedInputStream(new FileInputStream(excelFile)); + OutputStream os = response.getOutputStream(); + byte[] buffer = new byte[1024]; + + for(int i = bis.read(buffer); i != -1; i = bis.read(buffer)) { + os.write(buffer, 0, i); + } + } catch (Exception var28) { + var28.printStackTrace(); + } finally { + if (bis != null) { + try { + bis.close(); + excelFile.delete(); + } catch (IOException var27) { + var27.printStackTrace(); + } + } + + } + + return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException var30) { + return ResultBean.fail(var30); + } catch (Exception var31) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(var31); + } + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index be8bf01..3709d9e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; @@ -7,9 +8,11 @@ import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesConfig; import cn.estsh.i3plus.pojo.mes.bean.MesProductVersion; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; @@ -31,6 +34,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -46,6 +50,9 @@ public class MesWorkOrderController extends BaseMesController { @Autowired private IMesWorkOrderToSapService mesWorkOrderToSapService; + @Autowired + private IMesConfigService mesConfigService; + @ApiOperation(value = "查询生产版本", notes = "查询生产版本") @GetMapping("/mesProductVersion/query") public ResultBean queryMesProdRuleByPager(MesProductVersion mesProductVersion, Pager pager){ @@ -151,10 +158,19 @@ public class MesWorkOrderController extends BaseMesController { @ApiOperation(value = "发送给sap") public ResultBean sendToSap(String organizeCode) { try { + MesConfig sendToSap = mesConfigService.getCfgValueByCode(organizeCode, "LAST_SEND_TO_SAP_TIME"); + String lastSendToSapTime = null; + if (Objects.isNull(sendToSap) || StringUtils.isEmpty(sendToSap.getCfgValue())) { + lastSendToSapTime = TimeTool.pareDateToString(new Date(0)); + } else { + lastSendToSapTime = sendToSap.getCfgValue(); + sendToSap.setCfgValue(TimeTool.getNowTime(true)); + mesConfigService.update(sendToSap, ""); + } //查询汇总工单数量 - List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); + List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode,lastSendToSapTime); if (!CollectionUtils.isEmpty(mesWorkOrderList)){ - mesWorkOrderToSapService.doMesWorkOrder(organizeCode,mesWorkOrderList); + mesWorkOrderToSapService.doMesWorkOrder(organizeCode,"",mesWorkOrderList); } return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java index b486e42..c91616f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/report/MesBusiReportController.java @@ -51,7 +51,6 @@ public class MesBusiReportController extends MesBaseController { @GetMapping("/mesProduceSn/query") public ResultBean queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) { try { - mesProduceSn.setOrganizeCode(AuthUtilExt.getOrganizeCode()); return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProduceSn(mesProduceSn,pager)); } catch (ImppBusiException e) { return ResultBean.fail(e); @@ -65,7 +64,6 @@ public class MesBusiReportController extends MesBaseController { @GetMapping("/mesProductionRecord/query") public ResultBean queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) { try { - mesProductionRecord.setOrganizeCode(AuthUtilExt.getOrganizeCode()); return ResultBean.success("查询成功").setListPager(mesYfReportService.queryMesProductionRecord(mesProductionRecord,pager)); } catch (ImppBusiException e) { return ResultBean.fail(e); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java index d80ef90..65dc524 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java @@ -13,5 +13,5 @@ import java.util.List; **/ public interface IMesWorkOrderDao { - List sumMesWorkOrderQtyToSap(String organizeCode, List statusList); + List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,String lastSendToSapTime); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index d4b947b..5a1f70f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -31,17 +31,18 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { private EntityManager entityManager; @Override - public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { - StringBuffer hql = new StringBuffer("select part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + + public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList,String lastSendToSapTime) { + StringBuffer hql = new StringBuffer("select organize_Code as organizeCode,part_No as partNo, plan_Start_Time as planStartTime, product_Version as productVersion, " + " sum( CASE WHEN work_Order_Status = 40 THEN complete_Qty ELSE qty END ) AS qty " + " from Mes_Work_Order where is_Deleted=:isDeleted and is_Valid = :isValid and organize_Code = :organizeCode " + - " and work_order_type = 20 and order_flag !='P' "+ - "and work_Order_Status not in(:statusList) group by part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); + " and work_order_type = 20 and order_flag !='P' and modify_date_time >= :modifyDatetime "+ + " and work_Order_Status not in(:statusList) group by organize_code,part_No, date_format( plan_Start_Time, '%Y-%m-%d' ), product_Version "); Query query = entityManager.createNativeQuery(hql.toString()); query.setParameter("organizeCode", organizeCode); query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); query.setParameter("statusList", statusList); + query.setParameter("modifyDatetime", lastSendToSapTime); query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List> hashMaps = query.getResultList(); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java index 3386444..ada84ee 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java @@ -1,8 +1,12 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; +import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; 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.mes.bean.MesConfig; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import cn.estsh.impp.framework.boot.init.ApplicationProperties; import io.swagger.annotations.ApiOperation; @@ -15,7 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.CollectionUtils; +import java.util.Date; import java.util.List; +import java.util.Objects; /** * @Description : 汇总工单给SAP @@ -39,6 +45,9 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob { @Autowired private IMesWorkOrderToSapService mesWorkOrderToSapService; + @Autowired + private IMesConfigService mesConfigService; + @Value("${server.port}") private String serverPort; @Value("${impp.server.ip}") @@ -59,11 +68,21 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob { } String[] organizeCodeList = jobParam.split(","); LOGGER.info("汇总工单给SAP开始 -----start"); + String userName = "job"; for (String organizeCode : organizeCodeList) { - List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); + MesConfig sendToSap = mesConfigService.getCfgValueByCode(organizeCode,"LAST_SEND_TO_SAP_TIME"); + String lastSendToSapTime = null; + if(Objects.isNull(sendToSap) || StringUtils.isEmpty(sendToSap.getCfgValue())){ + lastSendToSapTime = TimeTool.pareDateToString(new Date(0)); + }else{ + lastSendToSapTime = sendToSap.getCfgValue(); + sendToSap.setCfgValue(TimeTool.pareDateToString(DateUtil.addMinutes(new Date(), -10))); + mesConfigService.update(sendToSap,userName); + } + List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode,lastSendToSapTime); if (!CollectionUtils.isEmpty(mesWorkOrderList)) { - mesWorkOrderToSapService.doMesWorkOrder(organizeCode, mesWorkOrderList); + mesWorkOrderToSapService.doMesWorkOrder(organizeCode,userName, mesWorkOrderList); } } LOGGER.info("汇总工单给SAP开始结束 ----- end"); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java index 83c20d9..2e9a4f7 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesConfigService.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.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; @@ -51,6 +52,12 @@ public class MesConfigService implements IMesConfigService { } @Override + public MesConfig getCfgValueByCode(String organizeCode,String cfgCode) { + return this.configRepository.getByProperty(new String[]{"organizeCode","isDeleted", "isValid", "cfgCode"}, + new Object[]{organizeCode,CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), cfgCode}); + } + + @Override public List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(cfgCode, MesExtConstWords.CFG_CODE, packBean); @@ -93,4 +100,10 @@ public class MesConfigService implements IMesConfigService { return findCfgValueContainItem(organizeCode, MesExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES.name(), MesExtConstWords.COMMA, itemList); } + @Override + public void update(MesConfig mesConfig,String userName) { + ConvertBean.serviceModelUpdate(mesConfig,userName); + configRepository.update(mesConfig); + } + } 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 b6b8b89..4702273 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 @@ -1260,12 +1260,12 @@ public class MesWorkOrderService extends BaseMesService implements } @Override - public List sumMesWorkOrderQtyToSap(String organizeCode) { + public List sumMesWorkOrderQtyToSap(String organizeCode,String lastSendToSapTime) { List statusList = new ArrayList<>(); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); // statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); //查询汇总工单数量 - return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList); + return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList,lastSendToSapTime); } @Override diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java index d71be93..cfc38b1 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java @@ -1,9 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; -import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap; import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; @@ -11,8 +11,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Service @Slf4j @@ -28,25 +28,41 @@ public class MesWorkOrderToSapServiceImpl extends BaseMesService mesWorkOrderList) { - Pager pager = new Pager(1,1); - DdlPackBean ddlPackBean = null; + public void doMesWorkOrder(String organizeCode,String userName,List mesWorkOrderList) { + //查询表里原有数据 + Map workOrderToSapMap = getStringMesWorkOrderToSapMap(organizeCode, mesWorkOrderList); + //数据处理 for (MesWorkOrderModel mesWorkOrder : mesWorkOrderList) { - mesWorkOrder.setOrganizeCode(organizeCode); - mesWorkOrder.setModifyUser("job"); + String key = new StringJoiner(MesExtConstWords.COMMA).add(mesWorkOrder.getPartNo()).add(mesWorkOrder.getPlanStartTime()).toString(); + mesWorkOrder.setModifyUser(userName); //计划开始时间+物料查询发送Sap的数据 - ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPlanStartTime(),"pedtr",ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"plmat",ddlPackBean); - ddlPackBean.setOrderByStr(" order by createDatetime desc "); - List workOrderToSapList = baseRDao.findByHqlPage(ddlPackBean,pager); - if(CollectionUtils.isEmpty(workOrderToSapList)){ + if(!workOrderToSapMap.containsKey(key)){ insert(mesWorkOrder); }else{ - if(!Objects.equals(workOrderToSapList.iterator().next().getGsmng(),mesWorkOrder.getQty())){ + if(!Objects.equals(workOrderToSapMap.get(key).getGsmng(),mesWorkOrder.getQty())){ insert(mesWorkOrder); } } } } + + private Map getStringMesWorkOrderToSapMap(String organizeCode, List mesWorkOrderList) { + List partNoList = mesWorkOrderList.stream().map(MesWorkOrderModel::getPartNo).distinct().collect(Collectors.toList()); + List planStartTime = mesWorkOrderList.stream().map(MesWorkOrderModel::getPlanStartTime).distinct().collect(Collectors.toList()); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getInPackList(planStartTime,"pedtr",ddlPackBean); + DdlPreparedPack.getInPackList(partNoList,"plmat",ddlPackBean); + ddlPackBean.setOrderByStr(" order by createDatetime desc "); + List workOrderToSapList = baseRDao.findByHqlWhere(ddlPackBean); + Map workOrderToSapMap = new HashMap<>(); + if(!CollectionUtils.isEmpty(workOrderToSapList)){ + for (MesWorkOrderToSap mesWorkOrderToSap : workOrderToSapList) { + String key = new StringJoiner(MesExtConstWords.COMMA).add(mesWorkOrderToSap.getPlmat()).add(mesWorkOrderToSap.getPedtr()).toString(); + if(!workOrderToSapMap.containsKey(key)){ + workOrderToSapMap.put(key,mesWorkOrderToSap); + } + } + } + return workOrderToSapMap; + } } 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 a8028e3..e510f6f 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 @@ -230,14 +230,28 @@ public class MesYfReportServiceImpl implements IMesYfReportService { @Override public ListPager queryMesProduceSn(MesProduceSn mesProduceSn, Pager pager) { DdlPackBean packBean = getMesProduceSnPackBean(mesProduceSn); - + if(Objects.isNull(pager)){ + DdlPreparedPack.getOrderBy(mesProduceSn.getOrderByParam(),mesProduceSn.getAscOrDesc(),packBean); + return new ListPager<>(mesProduceSnRDao.findByHqlWhere(packBean), pager); + } pager = PagerHelper.getPager(pager, mesProduceSnRDao.findByHqlWhereCount(packBean)); - List list = mesProduceSnRDao.findByHqlWherePage(packBean, pager); - return new ListPager<>(list, pager); + DdlPreparedPack.getOrderBy(mesProduceSn.getOrderByParam(),mesProduceSn.getAscOrDesc(),packBean); + return new ListPager<>(mesProduceSnRDao.findByHqlWherePage(packBean, pager), pager); } @Override public ListPager queryMesProductionRecord(MesProductionRecord mesProductionRecord, Pager pager) { + DdlPackBean packBean = getDdlPackBeanMesProductionRecord(mesProductionRecord); + if(Objects.isNull(pager)){ + DdlPreparedPack.getOrderBy(mesProductionRecord.getOrderByParam(),mesProductionRecord.getAscOrDesc(),packBean); + return new ListPager<>(mesProductionRecordRepository.findByHqlWhere(packBean), pager); + } + pager = PagerHelper.getPager(pager, mesProductionRecordRepository.findByHqlWhereCount(packBean)); + DdlPreparedPack.getOrderBy(mesProductionRecord.getOrderByParam(),mesProductionRecord.getAscOrDesc(),packBean); + return new ListPager<>(mesProductionRecordRepository.findByHqlWherePage(packBean, pager), pager); + } + + private DdlPackBean getDdlPackBeanMesProductionRecord(MesProductionRecord mesProductionRecord) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesProductionRecord.getOrganizeCode()); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getProductSn(), "productSn", packBean); DdlPreparedPack.getStringLikerPack(mesProductionRecord.getWorkOrderNo(), "workOrderNo", packBean); @@ -254,9 +268,7 @@ public class MesYfReportServiceImpl implements IMesYfReportService { DdlPreparedPack.getNumEqualPack(mesProductionRecord.getReportType(), "reportType", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsComplete(), "isComplete", packBean); DdlPreparedPack.getNumEqualPack(mesProductionRecord.getIsTest(), "isTest", packBean); - pager = PagerHelper.getPager(pager, mesProductionRecordRepository.findByHqlWhereCount(packBean)); - List list = mesProductionRecordRepository.findByHqlWherePage(packBean, pager); - return new ListPager<>(list, pager); + return packBean; } private DdlPackBean getMesProduceSnPackBean(MesProduceSn mesProduceSn) {