From 42721ff26b98163480d66a905742a63d5603689c Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Thu, 9 Jan 2025 19:20:16 +0800 Subject: [PATCH] =?UTF-8?q?44270=20=E9=9D=9E=E6=8E=92=E5=BA=8F=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E5=8A=A0=E5=B7=A5=E8=A7=84=E5=88=99=E7=9A=84=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/MesProdRuleNosortCfgController.java | 123 ++++++++++++++++++++- 1 file changed, 121 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProdRuleNosortCfgController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProdRuleNosortCfgController.java index 0364793..8d581fd 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProdRuleNosortCfgController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesProdRuleNosortCfgController.java @@ -1,11 +1,41 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; -import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg; -import cn.estsh.i3plus.pojo.mes.bean.MesTimeEfficientCfg; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.ExcelTool; +import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.repository.MesAssemblyNosortCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesTimeEfficientCfgRepository; +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 io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; 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.multipart.MultipartFile; + +import java.io.InputStream; +import java.util.List; +import java.util.Map; +import java.util.stream.Collector; +import java.util.stream.Collectors; /** * 非排序产品加工规则配置 @@ -14,4 +44,93 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesProdRuleNosortCfg") public class MesProdRuleNosortCfgController extends BaseMesController{ + + public static final Logger LOGGER = LoggerFactory.getLogger(MesProdRuleNosortCfgController.class); + @Autowired + private MesAssemblyNosortCfgRepository assemblyNosortCfgRepository; + + @Autowired + private MesEquipmentProdParamCfgRepository equipmentProdParamCfgRepository; + + @Autowired + private MesTimeEfficientCfgRepository timeEfficientCfgRepository; + + @PostMapping(value = "/all/import") + @ApiOperation(value = "流程导入") + public ResultBean allImport(@RequestParam("file") MultipartFile file) { + try { + //String organizeCode = AuthUtil.getOrganizeCode(); + String organizeCode = "CK01"; + //数据空校验以及转换 + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + List ruleNosortCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), + MesProdRuleNosortCfg.class, "MesProdRuleNosortCfg", true); + List assemblyNosortCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), + MesAssemblyNosortCfg.class, "MesAssemblyNosortCfg", true); + List equipmentProdParamCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), + MesEquipmentProdParamCfg.class, "MesEquipmentProdParamCfg", true); + List timeEfficientCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), + MesTimeEfficientCfg.class, "MesTimeEfficientCfg", true); + //String userName = AuthUtil.getSessionUser().getUserName(); + String userName ="zxw"; + ruleNosortCfgList.forEach(ruleNosortCfg -> { + ruleNosortCfg.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(ruleNosortCfg,userName); + }); + List ruleNosortCfgs = baseService.insertBatch(ruleNosortCfgList); + Map> ruleNosortCfgMap = ruleNosortCfgs.stream().collect(Collectors.groupingBy(MesProdRuleNosortCfg::getNo)); + + assemblyNosortCfgList.forEach(assemblyNosortCfg -> { + List mesProdRuleNosortCfgs = ruleNosortCfgMap.get(assemblyNosortCfg.getNo()); + assemblyNosortCfg.setPid(mesProdRuleNosortCfgs.get(0).getId()); + assemblyNosortCfg.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(assemblyNosortCfg,userName); + }); + assemblyNosortCfgRepository.saveAll(assemblyNosortCfgList); + + equipmentProdParamCfgList.forEach(equipmentProdParamCfg -> { + List mesProdRuleNosortCfgs = ruleNosortCfgMap.get(equipmentProdParamCfg.getNo()); + equipmentProdParamCfg.setSourceId(mesProdRuleNosortCfgs.get(0).getId()); + equipmentProdParamCfg.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(equipmentProdParamCfg,userName); + }); + equipmentProdParamCfgRepository.saveAll(equipmentProdParamCfgList); + + timeEfficientCfgList.forEach(timeEfficientCfg -> { + List mesProdRuleNosortCfgs = ruleNosortCfgMap.get(timeEfficientCfg.getNo()); + timeEfficientCfg.setSourceId(mesProdRuleNosortCfgs.get(0).getId()); + timeEfficientCfg.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(timeEfficientCfg,userName); + }); + timeEfficientCfgRepository.saveAll(timeEfficientCfgList); + + + return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + /** + * SHEET初始校验 + * + * @param excelTool + * @param fileName + * @param inputStream + * @param dataBean + * @param sheetName + * @param + * @return + * @throws Exception + */ + private List getDataAndInitValid(ExcelTool excelTool, String fileName, InputStream inputStream, + Class dataBean, String sheetName, boolean isCheckDataEmpty) throws Exception { + List beanList = excelTool.importData(fileName, inputStream, dataBean, sheetName); + LOGGER.info("导入的【" + sheetName + "】数据" + JsonUtilTool.getJSONArrayByList(beanList)); + if (isCheckDataEmpty && CollectionUtils.isEmpty(beanList)) { + MesException.throwBusiException(String.format("导入的【%s】数据为空", sheetName)); + } + return beanList; + } }