From 36e4f7d8257c0b81d9db87d087cc6fae84a89ad9 Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 16 May 2024 21:51:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E9=A1=B5=E9=9D=A2=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/base/IMesCustomerCarModelService.java | 4 + .../ext/mes/api/base/IMesCustomerPartService.java | 5 +- .../ext/mes/api/base/IMesPartProdGroupService.java | 5 +- .../controller/base/BaseMesController.java | 2 +- .../base/MesCustomerCarModelController.java | 33 ++ .../controller/base/MesCustomerPartController.java | 31 + .../base/MesPartProdGroupController.java | 32 ++ .../apiservice/daoimpl/MesWorkOrderDaoImpl.java | 6 +- .../base/MesCustomerCarModelService.java | 30 +- .../serviceimpl/base/MesCustomerPartService.java | 29 +- .../serviceimpl/base/MesPartProdGroupService.java | 27 +- .../serviceimpl/base/MesShiftService.java | 1 + .../serviceimpl/base/MesWorkOrderService.java | 123 +++- .../excel/MesWorkOrderBtoExcelServiceImpl.java | 630 ++++++++------------- 14 files changed, 539 insertions(+), 419 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelService.java index 5b6b0c9..e88c12e 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerCarModelService.java @@ -1,6 +1,9 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail; + +import java.util.List; /** * @Description: @@ -10,4 +13,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; public interface IMesCustomerCarModelService extends IBaseMesService { + List findMesCustomerCarModel(MesCustomerCarModelDetail mesPartProdGroupDetail); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerPartService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerPartService.java index b9516a8..357bdeb 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerPartService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCustomerPartService.java @@ -1,8 +1,10 @@ package cn.estsh.i3plus.ext.mes.api.base; -import cn.estsh.i3plus.pojo.mes.bean.MesArea; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import java.util.List; + /** * @Description: * @CreateDate 2024/04/16 @@ -10,5 +12,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; */ public interface IMesCustomerPartService extends IBaseMesService { + List findMesCustomerPart(MesCustomerCarModelDetail mesPartProdGroupDetail); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartProdGroupService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartProdGroupService.java index c378d48..6334af6 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartProdGroupService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesPartProdGroupService.java @@ -1,6 +1,9 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail; + +import java.util.List; /** * @Description: @@ -9,5 +12,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; */ public interface IMesPartProdGroupService extends IBaseMesService { - + List findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java index 8382c41..b367403 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java @@ -236,7 +236,7 @@ public abstract class BaseMesController extends BaseControll @PostMapping(value = "/update-list") @ApiOperation(value = "批量修改信息", notes = "批量修改信息") - public ResultBean updateList(List beans) { + public ResultBean updateList(@RequestBody List beans) { try { String organizeCode = AuthUtilExt.getOrganizeCode(); for (T bean : beans) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerCarModelController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerCarModelController.java index 05f0997..06e37d4 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerCarModelController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerCarModelController.java @@ -1,11 +1,25 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService; +import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail; +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.RestController; +import java.util.List; + /** * 客户车型配置 */ @@ -13,4 +27,23 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCustomerCarModel") public class MesCustomerCarModelController extends BaseMesController{ + + @Autowired + private IMesCustomerCarModelService mesCustomerCarModelService; + + @GetMapping(value = "/find-mes-customer-car-model") + @ApiOperation(value = "查询客户车型") + public ResultBean findMesCustomerCarModel(MesCustomerCarModelDetail mesPartProdGroupDetail) { + try { + mesPartProdGroupDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + //查询汇总工单数量 + List mesPartProdGroupList = mesCustomerCarModelService.findMesCustomerCarModel(mesPartProdGroupDetail); + return ResultBean.success("查询成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(mesPartProdGroupList); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerPartController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerPartController.java index dc319ab..371f84e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerPartController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCustomerPartController.java @@ -1,12 +1,25 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService; +import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerPartService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesArea; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.RestController; +import java.util.List; + /** * 客户零件号 */ @@ -14,4 +27,22 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCustomerPart") public class MesCustomerPartController extends BaseMesController{ + @Autowired + private IMesCustomerPartService mesCustomerPartService; + + @GetMapping(value = "/find-mes-customer-part") + @ApiOperation(value = "查询客户零件") + public ResultBean findMesCustomerPart(MesCustomerCarModelDetail mesPartProdGroupDetail) { + try { + mesPartProdGroupDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + //查询汇总工单数量 + List mesCustomerPartList = mesCustomerPartService.findMesCustomerPart(mesPartProdGroupDetail); + return ResultBean.success("查询成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(mesCustomerPartList); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesPartProdGroupController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesPartProdGroupController.java index b8674b1..25a261e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesPartProdGroupController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesPartProdGroupController.java @@ -1,11 +1,24 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * 零件生产组 */ @@ -13,4 +26,23 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPartProdGroup") public class MesPartProdGroupController extends BaseMesController{ + + @Autowired + private IMesPartProdGroupService mesPartProdGroupService; + + @GetMapping(value = "/find-mes-part-prod-group") + @ApiOperation(value = "查询零件生产组") + public ResultBean findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail) { + try { + mesPartProdGroupDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + //查询汇总工单数量 + List mesPartProdGroupList = mesPartProdGroupService.findMesPartProdGroup(mesPartProdGroupDetail); + return ResultBean.success("查询成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(mesPartProdGroupList); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } } 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 578666c..4b7bd80 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 @@ -27,9 +27,9 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { @Override public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { - StringBuffer hql = new StringBuffer("select new MesWorkOrder(partNo,planStartTime,sum(qty)) from MesWorkOrder " + - "where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + - "and workOrderStatus not in(:statusList) group by partNo,planStartTime"); + StringBuffer hql = new StringBuffer("select new MesWorkOrder(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " + + " from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + + "and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion"); Query query = entityManager.createQuery(hql.toString(), MesWorkOrder.class); query.setParameter("organizeCode",organizeCode); query.setParameter("isValid",CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java index 5c61cb1..ef35c8b 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerCarModelService.java @@ -6,18 +6,26 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesBom; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomer; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomerRoad; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelDetailRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelRepository; 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; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; @Service @Slf4j public class MesCustomerCarModelService extends BaseMesService implements IMesCustomerCarModelService { + + @Autowired + private MesCustomerCarModelDetailRepository mesCustomerCarModelDetailRDao; protected void setPackQueryBean(MesCustomerCarModel bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCustomerOrganizeCode(), "customerOrganizeCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCarModelCode(), "carModelCode", packBean); @@ -59,4 +67,18 @@ public class MesCustomerCarModelService extends BaseMesService findMesCustomerCarModel(MesCustomerCarModelDetail mesPartProdGroupDetail) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean); + List mesCustomerCarModelDetails = mesCustomerCarModelDetailRDao.findByHqlWhere(ddlPackBean); + if(CollectionUtils.isEmpty(mesCustomerCarModelDetails)){ + return new ArrayList<>(); + } + List carModelCodeList = mesCustomerCarModelDetails.stream().map(MesCustomerCarModelDetail::getCarModelCode).collect(Collectors.toList()); + ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); + DdlPreparedPack.getInPackList(carModelCodeList,"carModelCode",ddlPackBean); + return baseRDao.findByHqlWhere(ddlPackBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerPartService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerPartService.java index 941918a..1a89c6e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerPartService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCustomerPartService.java @@ -1,18 +1,22 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService; import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerPartService; import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerService; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomer; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomerOriganze; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelDetailRepository; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @Description: @@ -23,6 +27,10 @@ import java.util.List; @Service public class MesCustomerPartService extends BaseMesService implements IMesCustomerPartService { + + @Autowired + private MesCustomerCarModelDetailRepository mesCustomerCarModelDetailRDao; + protected void setPackQueryBean(MesCustomerPart bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCustomerPartNo(), "customerPartNo", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); @@ -30,4 +38,19 @@ public class MesCustomerPartService extends BaseMesService impl } + @Override + public List findMesCustomerPart(MesCustomerCarModelDetail mesPartProdGroupDetail) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getCarModelCode(),"carModelCode",ddlPackBean); + List mesCustomerCarModelDetails = mesCustomerCarModelDetailRDao.findByHqlWhere(ddlPackBean); + if(CollectionUtils.isEmpty(mesCustomerCarModelDetails)){ + return new ArrayList<>(); + } + List customerPartNoList = mesCustomerCarModelDetails.stream().map(MesCustomerCarModelDetail::getCustomerPartNo).collect(Collectors.toList()); + ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); + DdlPreparedPack.getInPackList(customerPartNoList,"customerPartNo",ddlPackBean); + return baseRDao.findByHqlWhere(ddlPackBean); + } + } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartProdGroupService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartProdGroupService.java index 04f320e..b49e922 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartProdGroupService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartProdGroupService.java @@ -1,13 +1,38 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.api.base.IMesEquitmentService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail; +import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupDetailRepository; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; @Service @Slf4j public class MesPartProdGroupService extends BaseMesService implements IMesPartProdGroupService { + @Autowired + private MesPartProdGroupDetailRepository mesPartProdGroupDetailRDao; + + public List findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail){ + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getWorkCenterCode(),"workCenterCode",ddlPackBean); + List mesPartProdGroupDetails = mesPartProdGroupDetailRDao.findByHqlWhere(ddlPackBean); + if(CollectionUtils.isEmpty(mesPartProdGroupDetails)){ + return new ArrayList<>(); + } + List partProdGroupNoList = mesPartProdGroupDetails.stream().map(MesPartProdGroupDetail::getPartProdGroupNo).collect(Collectors.toList()); + ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode()); + DdlPreparedPack.getInPackList(partProdGroupNoList,"partProdGroupNo",ddlPackBean); + return baseRDao.findByHqlWhere(ddlPackBean); + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftService.java index 243e513..a245cbb 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesShiftService.java @@ -16,6 +16,7 @@ public class MesShiftService extends BaseMesService implements IMesShi DdlPreparedPack.getNumEqualPack(bean.getIsValid(), "isValid", packBean); DdlPreparedPack.getStringEqualPack(bean.getShiftCode(), "shiftCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean); DdlPreparedPack.getStringLikeEqualPack(bean.getShiftName(), "shiftName", packBean); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index a39d277..7b462b2 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 @@ -1,13 +1,17 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; -import cn.estsh.i3plus.ext.mes.api.base.*; +import cn.estsh.i3plus.ext.mes.api.base.IMesPartService; +import cn.estsh.i3plus.ext.mes.api.base.IMesProductOffLineService; +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.dao.IMesWorkOrderDao; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; -import cn.estsh.i3plus.pojo.mes.unit.MesExtEnumUtil; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; +import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.MathOperation; +import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; @@ -16,6 +20,9 @@ import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.repository.MesBomRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesShiftRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; +import cn.estsh.i3plus.pojo.mes.unit.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; @@ -25,7 +32,9 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -48,6 +57,10 @@ public class MesWorkOrderService extends BaseMesService implements private IMesProductOffLineService mesProductOffLineService; @Autowired private IMesWorkOrderDao mesWorkOrderDao; + @Autowired + private MesWorkCenterRepository mesWorkCenterRDao; + @Autowired + private MesShiftRepository mesShiftRDao; @Override public MesWorkOrder insert(MesWorkOrder bean) { @@ -80,7 +93,7 @@ public class MesWorkOrderService extends BaseMesService implements BeanUtils.copyProperties(bean, copyMesWorkOrder); copyMesWorkOrder.setProduceSeq(produceSeq + 1); copyMesWorkOrder.setQty(1D); - copyMesWorkOrder.setOrderNo(resultList.get(0)+"_"+copyMesWorkOrder.getOrganizeCode()); + copyMesWorkOrder.setOrderNo(resultList.get(0) + "_" + copyMesWorkOrder.getOrganizeCode()); ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser()); MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); @@ -110,7 +123,7 @@ public class MesWorkOrderService extends BaseMesService implements } genSerialNoModel.setPartNo(bean.getPartNo()); List resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); - bean.setOrderNo(resultList.get(0)+"_"+bean.getOrganizeCode()); + bean.setOrderNo(resultList.get(0) + "_" + bean.getOrganizeCode()); bean.setQty(bean.getQty()); ConvertBean.serviceModelInitialize(bean, bean.getCreateUser()); @@ -160,17 +173,20 @@ public class MesWorkOrderService extends BaseMesService implements } result.setQty(bean.getQty()); - //更新完成数量 - if (bean.getCompleteQty() > 0) { - result.setCompleteQty(bean.getCompleteQty()); + //更新已汇报 + if (bean.getReportedQty() >= 0) { + result.setReportedQty(bean.getReportedQty()); } - if (bean.getUnCompleteQty() > 0) { + if (bean.getUnCompleteQty() >= 0) { result.setUnCompleteQty(bean.getUnCompleteQty()); } + if (bean.getAdjustQty() > 0) { + result.setAdjustQty(bean.getAdjustQty()); + } //更新状态 if (bean.getWorkOrderStatus() > 0) { - if(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus()){ - if(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue() != result.getWorkOrderStatus()){ + if (MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus()) { + if (MesExtEnumUtil.ORDER_STATUS.CREATE.getValue() != result.getWorkOrderStatus()) { MesException.throwMesBusiException(String.format("工单状态为【%s】不为创建,不允许发布", MesExtEnumUtil.ORDER_TYPE.valueOfDescription(result.getWorkOrderStatus()))); } @@ -222,10 +238,17 @@ public class MesWorkOrderService extends BaseMesService implements //ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空"); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean); + if (!mesWorkCenterRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode()); + } //校验标识 //若工单类型为排序 if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); + ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); + ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); //若工单类型为排序 标识为 N E P S if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() && item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() && @@ -241,9 +264,16 @@ public class MesWorkOrderService extends BaseMesService implements .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .build(); } + //校验vin号是否重复 + ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean); + if (baseRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode()); + } } else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); + ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空"); if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() && item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()) { throw ImppExceptionBuilder.newInstance() @@ -254,6 +284,44 @@ public class MesWorkOrderService extends BaseMesService implements .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .build(); } + if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) { + ValidatorBean.checkNotNull(item.getPlanDate(), "计划日期不能为空"); + ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空"); + //查询班次信息 + ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(item.getShiftCode(), "shiftCode", ddlPackBean); + MesShift mesShift = mesShiftRDao.getByProperty(ddlPackBean); + if (Objects.isNull(mesShift)) { + MesException.throwMesBusiException("产线【%s】班次【%s】信息不存在", item.getWorkCenterCode(), item.getShiftCode()); + } + item.setShiftName(mesShift.getShiftName()); + //拼接 + item.setPlanStartTime(item.getPlanDate() + " " + mesShift.getStartTime()); + item.setPlanEndTime(item.getPlanDate() + " " + mesShift.getEndTime()); + try { + int windowStartEndTimeCompare = this.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime()); + if (windowStartEndTimeCompare > 0) { + item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(),1))); + } + } catch (Exception e) { + MesException.throwMesBusiException("时间格式异常"); + } + } + //校验物料生产版本是否存在 + ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(item.getProductVersion(), "productVersion", ddlPackBean); + if (!mesProductVersionRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", item.getPartNo(), item.getProductVersion()); + } + + } else { + ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); + ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); + //拼接 + item.setPlanStartTime(item.getPlanStartTime() + " " + "00:00:00"); + item.setPlanEndTime(item.getPlanEndTime() + " " + "23:59:59"); } //物料名称不存在,从物料信息中获取 if (StringUtil.isEmpty(item.getPartNameRdd())) { @@ -267,6 +335,13 @@ public class MesWorkOrderService extends BaseMesService implements } + public int compareDateTime(String formatStr, String startTimeStr, String endTimeStr) throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat(formatStr); + Date startTime = sdf.parse(startTimeStr); + Date endTime = sdf.parse(endTimeStr); + return startTime.compareTo(endTime); + } + @Override public void doProductReport(MesWorkOrder mesWorkOrder) { //查询物料信息 @@ -288,25 +363,28 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion()); } //报工类型 - if(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()){ - mesWorkOrder.setCompleteQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty())); - }else{ + if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) { + mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty())); + } else { //冲销数量大于工单完成数量报错 - if(mesWorkOrder.getNum() > mesWorkOrder.getCompleteQty()){ + if (mesWorkOrder.getNum() > mesWorkOrder.getReportedQty()) { MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销", - mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty()); + mesWorkOrder.getNum(), mesWorkOrder.getReportedQty()); } - mesWorkOrder.setCompleteQty(MathOperation.sub(mesWorkOrder.getCompleteQty(),mesWorkOrder.getNum())); + //报工调整数量加- + mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getAdjustQty()))); + //已汇报数量减一 + mesWorkOrder.setReportedQty(MathOperation.sub(mesWorkOrder.getReportedQty(), mesWorkOrder.getNum())); } //更新工单状态 - double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getCompleteQty()); + double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); - if (mesWorkOrder.getCompleteQty() > mesWorkOrder.getQty()) { + if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) { MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工", - mesWorkOrder.getCompleteQty(), mesWorkOrder.getQty()); - }else if(Objects.equals(mesWorkOrder.getCompleteQty(),mesWorkOrder.getQty())){ + mesWorkOrder.getReportedQty(), mesWorkOrder.getQty()); + } else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) { mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); - }else { + } else { mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue()); } update(mesWorkOrder); @@ -338,6 +416,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); + newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); mesProductOffLineList.add(newMesProductOffLine); @@ -350,7 +429,7 @@ public class MesWorkOrderService extends BaseMesService implements public List sumMesWorkOrderQtyToSap(String organizeCode) { List statusList = new ArrayList<>(); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); - statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); +// statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); //查询汇总工单数量 return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesWorkOrderBtoExcelServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesWorkOrderBtoExcelServiceImpl.java index d89ddf6..01f6239 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesWorkOrderBtoExcelServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesWorkOrderBtoExcelServiceImpl.java @@ -1,392 +1,256 @@ -package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel; - -import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService; -import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService; -import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil; -import cn.estsh.i3plus.platform.common.convert.ConvertBean; -import cn.estsh.i3plus.pojo.mes.bean.MesPartPtr; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; -import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel; -import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel; -import cn.estsh.i3plus.pojo.mes.repository.MesPartPtrRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; -import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; -import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @Description : MES工单导入,BTO - * @Reference : - * @Author : junsheng.li - * @CreateDate 2024/5/16 14:14 - * @Modify: - **/ -@Service -@Slf4j -public class MesWorkOrderBtoExcelServiceImpl implements IExcelImportService { - - @Autowired - private CommonService commonService; - @Autowired - private MesPartRepository partRepository; - @Autowired - private MesWorkOrderRepository mesWorkOrderRDao; - - @Override - public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) { - - //读取表格 - ExcelImportResultModel excelImportResultModel = this.sheetExtractMesWorkOrder(workbook.getSheetAt(0), organizeCode, userName); - //数据入库 - this.insertExcelMesWorkOrder(excelImportResultModel); - return excelImportResultModel; -// return null; - } - - /** - * 工位BOM表导入-读取表格 - * - * @param sheetAt - * @param organizeCode - * @param userName - * @return - */ - private ExcelImportResultModel sheetExtractMesWorkOrder(Sheet sheetAt, String organizeCode, String userName) { - - //从0行开始读取 - int totalNumberOfRows = sheetAt.getLastRowNum() + 1; - - //MesStationBom集合 - List partPtrList = new ArrayList<>(); - - //成功数量 - Integer successRowNum = 0; - //失败数量 - Integer failRowNum = 0; - //错误的行号 - String errorRows = ""; - - //错误行信息集合 - List excelImportErrorModels = new ArrayList<>(); - - // 查询物料表 - Map partCodeEntityMap; - try { - partCodeEntityMap = MesCommonUtil.getCodeEntityMap(partRepository, "partNo", organizeCode, "物料表"); - } catch (Exception e) { - partCodeEntityMap = null; - } - -// //查询关键件条码校验规则表 -// List partPtrList = partPtrRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED}, -// new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); -// Map> preventionMap = -// partPtrList.stream().collect(Collectors.groupingBy(k -> k.getPreventionObjectCode() + "&" + k.getPartNo())); - - - Map map = new HashMap<>(); - - for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) { - Row row = sheetAt.getRow(i); - //空行跳过 - if (null == row) { - continue; - } - //获取总列数 - Short lastCellNum = row.getLastCellNum(); - if (lastCellNum > 0) { - - int rowNum = i + 1; //当前行号 - int errorNum = 0; //错误数量 - String cellNum = ""; //错误列号 - String errorInfo = ""; //错误信息 - - //产线编号 - String workCenterCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - - //开始时间 - String startTime = null; - try { - row.getCell(1).setCellType(CellType.STRING); - startTime = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - //结束时间 - String endTime = null; - try { - row.getCell(2).setCellType(CellType.STRING); - endTime = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - //PTR车辆数量 - String prtVehicleCount = null; - try { - row.getCell(3).setCellType(CellType.STRING); - prtVehicleCount = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //PTR车辆实际数量 - String prtVehicleActualCount = null; - try { - row.getCell(4).setCellType(CellType.STRING); - prtVehicleActualCount = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - //原零件号 - String sourcePartNo = null; - try { - row.getCell(5).setCellType(CellType.STRING); - sourcePartNo = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //替换零件号 - String targetPartNo = null; - try { - row.getCell(6).setCellType(CellType.STRING); - targetPartNo = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //是否客户 发送PTR信息 - String isCustomerSendPrtInfo = null; - try { - row.getCell(7).setCellType(CellType.STRING); - isCustomerSendPrtInfo = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - //排序信息PTR零件号 - String seqInfoPrtPart = null; - try { - row.getCell(8).setCellType(CellType.STRING); - seqInfoPrtPart = row.getCell(8, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //PTR项目编号 - String ptrProjectNo = null; - try { - row.getCell(9).setCellType(CellType.STRING); - ptrProjectNo = row.getCell(9, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //替换零件条码规则 - String targetPartNoSnRuleCode = null; - try { - row.getCell(10).setCellType(CellType.STRING); - targetPartNoSnRuleCode = row.getCell(10, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //总成类型 - String partTypeCode = null; - try { - row.getCell(11).setCellType(CellType.STRING); - partTypeCode = row.getCell(11, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //总成类型 - String isInterPrt = null; - try { - row.getCell(12).setCellType(CellType.STRING); - isInterPrt = row.getCell(12, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //目视单显示项 - String visualSingleDisplayItem = null; - try { - row.getCell(13).setCellType(CellType.STRING); - visualSingleDisplayItem = row.getCell(13, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //起始序号 - String startSeq = null; - try { - row.getCell(14).setCellType(CellType.STRING); - startSeq = row.getCell(14, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //目视单替换位置 - String visualSingleReplacePosition = null; - try { - row.getCell(14).setCellType(CellType.STRING); - visualSingleReplacePosition = row.getCell(14, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //硬件版本号 - String hardwareVersionNo = null; - try { - row.getCell(15).setCellType(CellType.STRING); - hardwareVersionNo = row.getCell(15, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //软件版本号 - String softwareVersionNo = null; - try { - row.getCell(16).setCellType(CellType.STRING); - softwareVersionNo = row.getCell(16, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //软件版本号 - String status = null; - try { - row.getCell(17).setCellType(CellType.STRING); - status = row.getCell(17, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - //软件版本号 - String memo = null; - try { - row.getCell(18).setCellType(CellType.STRING); - memo = row.getCell(18, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); - } catch (Exception e) { - } - - -// if (!map.containsKey(preventionObjectCode + "&" + partNo)) { -// map.put(preventionObjectCode + "&" + partNo, String.valueOf(rowNum)); -// } else { +//package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel; +// +//import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService; +//import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService; +//import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil; +//import cn.estsh.i3plus.platform.common.convert.ConvertBean; +//import cn.estsh.i3plus.pojo.mes.bean.MesPartPtr; +//import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +//import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel; +//import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel; +//import cn.estsh.i3plus.pojo.mes.repository.MesPartPtrRepository; +//import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; +//import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; +//import cn.estsh.i3plus.pojo.mes.unit.MesExtEnumUtil; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.poi.ss.usermodel.CellType; +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +//import org.springframework.util.CollectionUtils; +//import org.springframework.util.StringUtils; +// +//import java.util.ArrayList; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +// +///** +// * @Description : MES工单导入,BTO +// * @Reference : +// * @Author : junsheng.li +// * @CreateDate 2024/5/16 14:14 +// * @Modify: +// **/ +//@Service +//@Slf4j +//public class MesWorkOrderBtoExcelServiceImpl implements IExcelImportService { +// +// @Autowired +// private CommonService commonService; +// @Autowired +// private MesPartRepository partRepository; +// @Autowired +// private MesWorkOrderRepository mesWorkOrderRDao; +// +// @Override +// public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) { +// +// //读取表格 +// ExcelImportResultModel excelImportResultModel = this.sheetExtractMesWorkOrder(workbook.getSheetAt(0), organizeCode, userName); +// //数据入库 +// this.insertExcelMesWorkOrder(excelImportResultModel); +// return excelImportResultModel; +//// return null; +// } +// +// /** +// * 工位BOM表导入-读取表格 +// * +// * @param sheetAt +// * @param organizeCode +// * @param userName +// * @return +// */ +// private ExcelImportResultModel sheetExtractMesWorkOrder(Sheet sheetAt, String organizeCode, String userName) { +// +// //从0行开始读取 +// int totalNumberOfRows = sheetAt.getLastRowNum() + 1; +// +// //MesStationBom集合 +// List partPtrList = new ArrayList<>(); +// +// //成功数量 +// Integer successRowNum = 0; +// //失败数量 +// Integer failRowNum = 0; +// //错误的行号 +// String errorRows = ""; +// +// //错误行信息集合 +// List excelImportErrorModels = new ArrayList<>(); +// +// // 查询物料表 +// Map partCodeEntityMap; +// try { +// partCodeEntityMap = MesCommonUtil.getCodeEntityMap(partRepository, "partNo", organizeCode, "物料表"); +// } catch (Exception e) { +// partCodeEntityMap = null; +// } +// +//// //查询关键件条码校验规则表 +//// List partPtrList = partPtrRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED}, +//// new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); +//// Map> preventionMap = +//// partPtrList.stream().collect(Collectors.groupingBy(k -> k.getPreventionObjectCode() + "&" + k.getPartNo())); +// +// +// Map map = new HashMap<>(); +// +// for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) { +// Row row = sheetAt.getRow(i); +// //空行跳过 +// if (null == row) { +// continue; +// } +// //获取总列数 +// Short lastCellNum = row.getLastCellNum(); +// if (lastCellNum > 0) { +// +// int rowNum = i + 1; //当前行号 +// int errorNum = 0; //错误数量 +// String cellNum = ""; //错误列号 +// String errorInfo = ""; //错误信息 +// +// //生产线代码 +// String workCenterCode = null; +// try { +// row.getCell(0).setCellType(CellType.STRING); +// workCenterCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); +// } catch (Exception e) { +// } +// //ERP总成零件号 +// String partNo = null; +// try { +// row.getCell(1).setCellType(CellType.STRING); +// partNo = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); +// } catch (Exception e) { +// } +// //计划开始时间(yyyy-MM-dd) +// String startTime = null; +// try { +// row.getCell(2).setCellType(CellType.STRING); +// startTime = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); +// } catch (Exception e) { +// } +// //计划结束时间(yyyy-MM-dd) +// String endTime = null; +// try { +// row.getCell(3).setCellType(CellType.STRING); +// endTime = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); +// } catch (Exception e) { +// } +// +// //数量 +// String qty = null; +// try { +// row.getCell(4).setCellType(CellType.STRING); +// qty = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); +// } catch (Exception e) { +// } +// +// //校验产线编号 +// if (StringUtils.isEmpty(workCenterCode)) { // errorNum++; -// cellNum += "A;C;"; -// errorInfo += "第A列数据:" + preventionObjectCode + ",第C列数据:" + partNo; +// cellNum += "A;"; +// errorInfo += "第A列数据必填;"; // } // -// //校验物料号 +// //ERP总成零件号 // if (StringUtils.isEmpty(partNo)) { // errorNum++; +// cellNum += "B;"; +// errorInfo += "第B列数据必填;"; +// } +// //计划开始时间(yyyy-MM-dd) +// if (StringUtils.isEmpty(startTime)) { +// errorNum++; // cellNum += "C;"; // errorInfo += "第C列数据必填;"; +// } +// //校验替换零件号 +// if (StringUtils.isEmpty()) { +// errorNum++; +// cellNum += "J;"; +// errorInfo += "第J列数据必填;"; +// } +// //校验总成类型 +// if (StringUtils.isEmpty(partTypeCode)) { +// errorNum++; +// cellNum += "L;"; +// errorInfo += "第L列数据必填;"; +// } +// +// +// //没有错误的时候,封装MesStationBom +// if (errorNum == 0) { +// +// MesPartPtr partPtr; +//// if (preventionMap.containsKey(preventionObjectCode + "&" + partNo)) { +//// itemPartErrorPrevention = preventionMap.get(partNo).get(0); +//// ConvertBean.serviceModelUpdate(itemPartErrorPrevention, userName); +//// } else { +// partPtr = new MesPartPtr(); +// ConvertBean.serviceModelInitialize(partPtr, userName); +//// } +// partPtr.setWorkCenterCode(workCenterCode); +// partPtr.setStartTime(startTime); +// partPtr.setEndTime(endTime); +// partPtr.setPrtVehicleCount(Integer.parseInt(prtVehicleCount)); +// partPtr.setPrtVehicleActualCount(Integer.parseInt(prtVehicleActualCount)); +// partPtr.setSourcePartNo(sourcePartNo); +// partPtr.setTargetPartNo(targetPartNo); +// partPtr.setIsCustomerSendPrtInfo(Integer.parseInt(isCustomerSendPrtInfo)); +// partPtr.setSeqInfoPrtPart(seqInfoPrtPart); +// partPtr.setPtrProjectNo(ptrProjectNo); +// partPtr.setTargetPartNoSnRuleCode(targetPartNoSnRuleCode); +// partPtr.setPartTypeCode(Integer.parseInt(partTypeCode)); +// partPtr.setIsInterPrt(Integer.parseInt(isInterPrt)); +// partPtr.setVisualSingleDisplayItem(visualSingleDisplayItem); +// partPtr.setStartSeq(startSeq); +// partPtr.setVisualSingleReplacePosition(visualSingleReplacePosition); +// partPtr.setHardwareVersionNo(hardwareVersionNo); +// partPtr.setSoftwareVersionNo(softwareVersionNo); +// partPtr.setStatus(Integer.parseInt(status)); +// partPtr.setMemo(memo); +// partPtrList.add(partPtr); +// successRowNum++; // } else { -// if (CollectionUtils.isEmpty(partCodeEntityMap) || -// (!CollectionUtils.isEmpty(partCodeEntityMap) && !partCodeEntityMap.containsKey(partNo))) { -// errorNum++; -// cellNum += "C;"; -// errorInfo += "第C列数据无效;"; -// } +// //封装错误行信息ExcelImportErrorModel +// excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo); +// +// errorRows += rowNum + ";"; +// failRowNum++; // } - - //校验产线编号 - if (StringUtils.isEmpty(workCenterCode)) { - errorNum++; - cellNum += "A;"; - errorInfo += "第A列数据必填;"; - } - - //校验原零件号 - if (StringUtils.isEmpty(sourcePartNo)) { - errorNum++; - cellNum += "F;"; - errorInfo += "第F列数据必填;"; - } - //校验产线编号 - if (StringUtils.isEmpty(targetPartNo)) { - errorNum++; - cellNum += "G;"; - errorInfo += "第G列数据必填;"; - } - //校验替换零件号 - if (StringUtils.isEmpty(ptrProjectNo)) { - errorNum++; - cellNum += "J;"; - errorInfo += "第J列数据必填;"; - } - //校验总成类型 - if (StringUtils.isEmpty(partTypeCode)) { - errorNum++; - cellNum += "L;"; - errorInfo += "第L列数据必填;"; - } - - - //没有错误的时候,封装MesStationBom - if (errorNum == 0) { - - MesPartPtr partPtr; -// if (preventionMap.containsKey(preventionObjectCode + "&" + partNo)) { -// itemPartErrorPrevention = preventionMap.get(partNo).get(0); -// ConvertBean.serviceModelUpdate(itemPartErrorPrevention, userName); -// } else { - partPtr = new MesPartPtr(); - ConvertBean.serviceModelInitialize(partPtr, userName); -// } - partPtr.setWorkCenterCode(workCenterCode); - partPtr.setStartTime(startTime); - partPtr.setEndTime(endTime); - partPtr.setPrtVehicleCount(Integer.parseInt(prtVehicleCount)); - partPtr.setPrtVehicleActualCount(Integer.parseInt(prtVehicleActualCount)); - partPtr.setSourcePartNo(sourcePartNo); - partPtr.setTargetPartNo(targetPartNo); - partPtr.setIsCustomerSendPrtInfo(Integer.parseInt(isCustomerSendPrtInfo)); - partPtr.setSeqInfoPrtPart(seqInfoPrtPart); - partPtr.setPtrProjectNo(ptrProjectNo); - partPtr.setTargetPartNoSnRuleCode(targetPartNoSnRuleCode); - partPtr.setPartTypeCode(Integer.parseInt(partTypeCode)); - partPtr.setIsInterPrt(Integer.parseInt(isInterPrt)); - partPtr.setVisualSingleDisplayItem(visualSingleDisplayItem); - partPtr.setStartSeq(startSeq); - partPtr.setVisualSingleReplacePosition(visualSingleReplacePosition); - partPtr.setHardwareVersionNo(hardwareVersionNo); - partPtr.setSoftwareVersionNo(softwareVersionNo); - partPtr.setStatus(Integer.parseInt(status)); - partPtr.setMemo(memo); - partPtrList.add(partPtr); - successRowNum++; - } else { - //封装错误行信息ExcelImportErrorModel - excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo); - - errorRows += rowNum + ";"; - failRowNum++; - } - - } - } - - //校验EXCEL数据 - commonService.checkExcelData(failRowNum, successRowNum, errorRows); - //封装返回结果 - ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows); - excelImportResultModel.setExcelList((failRowNum > 0) ? null : partPtrList); - return excelImportResultModel; - } - - private void insertExcelMesWorkOrder(ExcelImportResultModel excelImportResultModel) { - if (excelImportResultModel == null) { - return; - } - List partPtrList = excelImportResultModel.getExcelList(); - if (CollectionUtils.isEmpty(partPtrList)) { - return; - } - - partPtrList.forEach(k -> { - if (StringUtils.isEmpty(k.getId())) { - mesWorkOrderRDao.insert(k); - } else { - mesWorkOrderRDao.update(k); - } - }); - } -} +// +// } +// } +// +// //校验EXCEL数据 +// commonService.checkExcelData(failRowNum, successRowNum, errorRows); +// //封装返回结果 +// ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows); +// excelImportResultModel.setExcelList((failRowNum > 0) ? null : partPtrList); +// return excelImportResultModel; +// } +// +// private void insertExcelMesWorkOrder(ExcelImportResultModel excelImportResultModel) { +// if (excelImportResultModel == null) { +// return; +// } +// List partPtrList = excelImportResultModel.getExcelList(); +// if (CollectionUtils.isEmpty(partPtrList)) { +// return; +// } +// +// partPtrList.forEach(k -> { +// if (StringUtils.isEmpty(k.getId())) { +// mesWorkOrderRDao.insert(k); +// } else { +// mesWorkOrderRDao.update(k); +// } +// }); +// } +//}