From 9317426969b3e946ad91374fe05e81f7d413a336 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Mon, 30 Dec 2024 18:43:43 +0800 Subject: [PATCH 1/3] =?UTF-8?q?44255-=E4=BC=98=E5=8C=96=EF=BC=9A=E9=9D=9E?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=89=80=E6=9C=89=E8=B7=AF=E7=BA=BF=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=89=B9=E9=87=8F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/base/MesCraftRouteController.java | 109 +++++++++++++++++++++ .../base/MesEquipmentSpotCheckPartService.java | 18 +++- .../base/MesProdCraftRouteServiceImpl.java | 45 ++++++++- 3 files changed, 166 insertions(+), 6 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java index 3f522a7..810ef49 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java @@ -1,13 +1,122 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteDetailService; +import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCraftDao; +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.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.MesCraftRoute; +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail; +import cn.estsh.i3plus.pojo.mes.repository.MesCraftRouteRepository; +import cn.estsh.i3plus.pojo.model.wms.WmsAgImportModel; +import cn.estsh.i3plus.pojo.wms.bean.*; +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 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; @Api(description = "工艺路线") @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCraftRoute") public class MesCraftRouteController extends BaseMesController { + + public static final Logger LOGGER = LoggerFactory.getLogger(MesCraftRouteController.class); + + @Autowired + private IMesCraftRouteDetailService mesCraftRouteDetailService; + @Autowired + private MesCraftRouteRepository mesCraftRouteRepository; + + @PostMapping(value = "/all/import") + @ApiOperation(value = "流程导入") + public ResultBean allImport(@RequestParam("file") MultipartFile file, String organizeCode) { + ValidatorBean.checkNotNull(organizeCode, "参数organizeCode(工厂代码)不可为空或长度为0的字符串"); + try { + //数据空校验以及转换 + ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); + List routeList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), + MesCraftRoute.class, "MesCraftRoute", true); + List routeDetailList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), + MesCraftRouteDetail.class, "MesCraftRouteDetail", true); + //String userName = AuthUtil.getSessionUser().getUserName(); + String userName ="zxw"; + routeList.forEach(mesCraftRoute -> { + mesCraftRoute.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(mesCraftRoute,userName); + + DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(mesCraftRoute.getCraftRouteCode(), "craftRouteCode", roadPackBean); + + boolean flg = mesCraftRouteRepository.isExitByHql(roadPackBean); + if (flg) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工艺路线代码【%s】已经存在,请检查数据", mesCraftRoute.getCraftRouteCode()) + .build(); + } + }); + routeDetailList.forEach(mesCraftRouteDetail -> { + mesCraftRouteDetail.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(mesCraftRouteDetail,userName); + }); + baseService.insertBatch(routeList); + + mesCraftRouteDetailService.insertBatch(routeDetailList); + + 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; + } + + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckPartService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckPartService.java index 7b03982..d72ef83 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckPartService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentSpotCheckPartService.java @@ -11,7 +11,10 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheck; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckPart; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentSpotCheckRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; +import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +28,8 @@ public class MesEquipmentSpotCheckPartService extends BaseMesService beanList) { - + String organizeCode = AuthUtil.getOrganizeCode(); for (MesEquipmentSpotCheckPart item : beanList) { // 数据校验 if (StringUtil.isEmpty(item.getPid())) { ValidatorBean.checkNotNull(item.getSpotCheckCode(), "点检项目代码不能为空"); - DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(item.getSpotCheckCode(), "spotCheckCode", seriesPackBean); MesEquipmentSpotCheck itemFlg = equipmentSpotCheckRepository.getByProperty(seriesPackBean); if (StringUtil.isEmpty(itemFlg)) { MesException.throwMesBusiException("点检项目代码【%s】不存在,请检查数据", item.getSpotCheckCode()); } item.setPid(itemFlg.getId()); + + DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(item.getPartNo(),"partNo", partPackBean); + MesPart mesPart = mesPartRepository.getByProperty(partPackBean); + if (mesPart == null) { + MesException.throwMesBusiException("零件号【%s】不存在", item.getPartNo()); + } + item.setPartName(mesPart.getPartName()); + } else { ValidatorBean.checkNotNull(item.getPid(), "点检项目id不能为空"); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java index e54a3cd..b47fda3 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java @@ -4,18 +4,20 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.api.base.IMesProdCraftRouteService; import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.util.MesConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; -import cn.estsh.i3plus.pojo.mes.bean.MesPart; -import cn.estsh.i3plus.pojo.mes.bean.MesProdCraftRoute; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProdRouteCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -24,6 +26,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -42,6 +45,8 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService validateReturnImport(List beanList) { + if (CollectionUtils.isEmpty(beanList)) return beanList; + String organizeCode = AuthUtil.getOrganizeCode(); + String userName = AuthUtil.getSessionUser().getUserName(); + for (MesProdCraftRoute item : beanList) { + ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空"); + ValidatorBean.checkNotNull(item.getCraftRouteName(), "工艺路线名称不能为空"); + ValidatorBean.checkNotNull(item.getCraftRouteType(), "工艺路线类型不能为空"); + + DdlPackBean centePackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(),"workCenterCode", centePackBean); + MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(centePackBean); + if (mesWorkCenter == null) { + MesException.throwMesBusiException("产线代码【%s】不存在", item.getWorkCenterCode()); + } + item.setAreaCode(mesWorkCenter.getAreaCode()); + + if (!StringUtils.isEmpty(item.getPartNo())) { + DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(),"workCenterCode", partPackBean); + MesPart mesPart = mesPartRepository.getByProperty(partPackBean); + if (mesPart == null) { + MesException.throwMesBusiException("零件号【%s】不存在", item.getPartNo()); + } + item.setPartName(mesPart.getPartName()); + } + item.setOrganizeCode(organizeCode); + ConvertBean.serviceModelInitialize(item, userName); + } + return beanList; + } @Override protected void onUpdateBean(MesProdCraftRoute item) { From 191704bbae2fa76a9fb49d1c3f3c334484b7fb81 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Mon, 30 Dec 2024 19:16:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?44255-=E4=BC=98=E5=8C=96=EF=BC=9A=E9=9D=9E?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=89=80=E6=9C=89=E8=B7=AF=E7=BA=BF=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=89=B9=E9=87=8F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/apiservice/controller/base/MesCraftRouteController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java index 810ef49..b342631 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteController.java @@ -54,9 +54,9 @@ public class MesCraftRouteController extends BaseMesController { @PostMapping(value = "/all/import") @ApiOperation(value = "流程导入") - public ResultBean allImport(@RequestParam("file") MultipartFile file, String organizeCode) { - ValidatorBean.checkNotNull(organizeCode, "参数organizeCode(工厂代码)不可为空或长度为0的字符串"); + public ResultBean allImport(@RequestParam("file") MultipartFile file) { try { + String organizeCode = AuthUtil.getOrganizeCode(); //数据空校验以及转换 ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis()); List routeList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(), From c735e3068cf3d8f50bdd733a9b4faebfb4431876 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Fri, 3 Jan 2025 15:06:39 +0800 Subject: [PATCH 3/3] =?UTF-8?q?44255-=E4=BC=98=E5=8C=96=EF=BC=9A=E9=9D=9E?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=89=80=E6=9C=89=E8=B7=AF=E7=BA=BF=E4=B8=BB=E8=A1=A8?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=89=B9=E9=87=8F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java index b47fda3..4ca1692 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java @@ -87,7 +87,7 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService