From ce9596a61fcae49c736444bc89a31be8133f1015 Mon Sep 17 00:00:00 2001 From: jing's Date: Fri, 19 Jan 2024 17:56:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/MBomApi.java | 13 +- .../constant/VirtualPackageTypeEnum.java | 2 +- .../pojo/query/BomNewEbomMaterialQuery.java | 9 ++ .../service/BomNewEbomParentService.java | 26 +++- .../BomNewMbomBackMaterialService.java | 130 ++++++++++-------- .../service/BomNewPbomParentService.java | 15 +- .../mapper/master/BomNewMbomDetailMapper.xml | 8 +- .../mapper/master/BomNewMbomParentMapper.xml | 14 +- 8 files changed, 141 insertions(+), 76 deletions(-) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/MBomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/MBomApi.java index 135a206f..86509e3b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/MBomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/MBomApi.java @@ -193,12 +193,17 @@ public class MBomApi extends BaseApi { public ResultVO confirmBack(@RequestBody List rowIds){ VUtils.isTure(CollectionUtil.isEmpty(rowIds)).throwMessage("选择行数据操作"); - bomNewMbomBackMaterialService.confirmBack(rowIds); - return ResultVO.success(true); + try { + bomNewMbomBackMaterialService.confirmBack(rowIds); + + return ResultVO.success(true); + + }catch (Exception e){ + + throw new NflgBusinessException(STATE.Error,"联系管理员,"+e.getMessage()); + } } - - } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java index fcb67483..b331bc83 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/constant/VirtualPackageTypeEnum.java @@ -9,7 +9,7 @@ import lombok.Getter; public enum VirtualPackageTypeEnum implements ValueEnum{ //1-发货包 2-制作包 4-直发包 8-发货前装配包 - UN_VIRTUAL_PACKAGE(1,"非虚拟包","" ,"", ""), + UN_VIRTUAL_PACKAGE(0,"非虚拟包","" ,"", ""), DELIVERY_PACKAGE(1,"发货包","发货" ,"201101", ""), MAKING_PACKAGE(2,"制作包","制作","201101",""), DIRECT_DELIVERY_PACKAGE(4,"直发包","直发","201101","F"), diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomMaterialQuery.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomMaterialQuery.java index b836a28f..df7041ca 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomMaterialQuery.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/pojo/query/BomNewEbomMaterialQuery.java @@ -30,6 +30,15 @@ public class BomNewEbomMaterialQuery implements Serializable { */ @ApiModelProperty(value = "物料编码") private String materialNo; + + + @ApiModelProperty(value = "上级rowId") + private Long bomRowId; + + @ApiModelProperty(value = "当前行rowId") + private Long rowId; + + diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index 97477e42..04936285 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -1212,18 +1212,36 @@ public class BomNewEbomParentService extends ServiceImpl backList){ /** * 驳回 + * 1010工厂处理 * @param rowIds */ @Transactional(rollbackFor = Exception.class) @@ -129,6 +135,11 @@ private void checkBackStatus( List backList){ checkBackStatus(backList); + List facList=SpringUtil.getBean(UserRoleService.class).getUserOfFactory(); + if(!facList.contains(MAIN_FACTORY_CODE_1010)){ + throw new NflgBusinessException(STATE.BusinessError,StrUtil.format("你不是{}工厂用户不能操作",MAIN_FACTORY_CODE_1010)); + } + //修改物料退回 for ( BomNewMbomBackMaterialEntity entity: @@ -160,7 +171,7 @@ private void checkBackStatus( List backList){ /** * 申请退回 - * + *只能退回1020工厂的 */ @Transactional(rollbackFor = Exception.class) public void applyBack(BomNewMbomApplyBackMaterialDTO dto ){ @@ -177,9 +188,16 @@ private void checkBackStatus( List backList){ List backRowId=rowIds.stream().map(BomNewMbomBackMaterialDTO::getRowId).collect(Collectors.toList()); QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.lambda().in(BomNewMbomBackMaterialEntity::getDetailRowId,backRowId); - + queryWrapper.lambda().eq(BomNewMbomBackMaterialEntity::getBackStatus,MBomConstantEnum.MBomBackStatusEnum.REJECT_2.getValue()); List backList=getBaseMapper().selectList(queryWrapper); - checkBackStatus(backList); + + if(CollectionUtil.isNotEmpty(backList)){ + throw new NflgBusinessException(STATE.BusinessError,"选择数据申请退回中或已处理退回"); + } + + + + @@ -192,6 +210,12 @@ private void checkBackStatus( List backList){ throw new NflgBusinessException(STATE.BusinessError,"虚拟包数据不能进行退回"); } + if(detailEntityList.get(0).getFacCode().equals(FactoryCodeEnum.FACTORY_1010.getValue())){ + throw new NflgBusinessException(STATE.BusinessError,StrUtil.format("{}({}) 工厂数据不能退回",FactoryCodeEnum.FACTORY_1010.getDescription(),FactoryCodeEnum.FACTORY_1010.getValue())); + } + + + //订单号 String orderNo; if(CollectionUtil.isNotEmpty(detailEntityList)){ @@ -217,8 +241,6 @@ private void checkBackStatus( List backList){ for (BomNewMbomBackMaterialEntity item: backMaterialEntityList) { - - item.setBackUserName(SessionUtil.getRealName()); item.setBackUserCode(SessionUtil.getUserCode()); item.setCreatedTime(LocalDateTime.now()); @@ -226,16 +248,17 @@ private void checkBackStatus( List backList){ item.setReasonMsg(dto.getReasonMsg()); item.setOrderNo(orderNo); item.setBackStatus(MBomConstantEnum.MBomBackStatusEnum.APPLY_0.getValue()); - if(item.getProjectType().equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue())){ - item.setGroupRowId(SpringUtil.getBean(BomNewMbomDetailService.class).getGroupRowId(item.getDetailRowId())); - }else{ + if (item.getProjectType().equals(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_Q.getValue())) { + item.setGroupRowId(SpringUtil.getBean(BomNewMbomDetailService.class).getGroupRowId(item.getDetailRowId())); + } else { item.setGroupRowId(SpringUtil.getBean(BomNewMbomDetailService.class).getGroupRowId(findRootRowId(item.getDetailRowId()))); } - saveBackList.add(beanBack); - }); + this.save(item); + SpringUtil.getBean(BomNewMbomDetailService.class).getBaseMapper().updateBackStatus(item.getGroupRowId(), + MBomConstantEnum.MaterialBackStatusEnum.DEAL_1.getValue()); - this.saveBatch(saveBackList); + } } @@ -250,15 +273,16 @@ private void checkBackStatus( List backList){ */ private Long findRootRowId(Long rowId){ + //向上到根 List childList = SpringUtil.getBean(BomNewMbomParentService.class).getBaseMapper() .searchList(rowId); BomNewMbomMiddleVO root=listToTree(childList); for (;root!=null;) { - + //查找根。非虚拟包 if(root.getVirtualPartType()!=null&& - root.getVirtualPartType().intValue()== VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getValue()){ + root.getVirtualPartType().intValue()== VirtualPackageTypeEnum.UN_VIRTUAL_PACKAGE.getValue().intValue()){ return root.getRowId(); } if(CollectionUtil.isNotEmpty(root.getChildNodes())){ @@ -301,58 +325,52 @@ private void checkBackStatus( List backList){ * @param rowIds */ @Transactional(rollbackFor = Exception.class) - public void confirmBack(List rowIds ){ + public void confirmBack(List rowIds ) throws ExecutionException, InterruptedException { QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.lambda().in(BomNewMbomBackMaterialEntity::getRowId,rowIds); List backList=getBaseMapper().selectList(queryWrapper); - Map> groupBackMap=backList.stream().collect(Collectors.groupingBy(BomNewMbomBackMaterialEntity::getBackStatus)); - if(CollectionUtil.isNotEmpty(groupBackMap.get(MBomConstantEnum.MBomBackStatusEnum.DEAL_1.getValue()))){ - throw new NflgBusinessException(STATE.BusinessError,"选择数据存在已确认退回"); + + checkBackStatus(backList); + + List facList=SpringUtil.getBean(UserRoleService.class).getUserOfFactory(); + if(!facList.contains(MAIN_FACTORY_CODE_1010)){ + throw new NflgBusinessException(STATE.BusinessError,StrUtil.format("你不是{}工厂用户不能操作",MAIN_FACTORY_CODE_1010)); } - if(CollectionUtil.isNotEmpty(groupBackMap.get(MBomConstantEnum.MBomBackStatusEnum.REJECT_2.getValue()))){ - throw new NflgBusinessException(STATE.BusinessError,"选择数据存在已驳回"); + + // Map> groupBackMap=backList.stream().collect(Collectors.groupingBy(BomNewMbomBackMaterialEntity::getBackStatus)); + + + for (BomNewMbomBackMaterialEntity item: + backList) { + + BomNewMbomParentEntity parentEntity= SpringUtil.getBean(BomNewMbomParentService.class).getById(item.getBomRowId()); + + QueryWrapper queryWrapper1=new QueryWrapper<>(); + queryWrapper1.lambda().in(BomNewMbomDetailEntity::getRowId,item.getGroupRowId()); + List detailEntityList= SpringUtil.getBean(BomNewMbomDetailService.class).list(queryWrapper1); + + + SpringUtil.getBean(BomNewMbomDetailService.class).getBaseMapper().updateBackStatus(item.getGroupRowId(), + MBomConstantEnum.MaterialBackStatusEnum.REJECT_2.getValue()); + + List sourceIds= detailEntityList.stream().map(BomNewMbomDetailEntity::getSourceRowId).collect(Collectors.toList()); + //重新发布 + SpringUtil.getBean(BomNewPbomParentService.class).reConvertToMBom(parentEntity.getSourceRowId(),sourceIds); + + BomNewMbomBackMaterialEntity bean=new BomNewMbomBackMaterialEntity(); + bean.setRowId(item.getRowId()); + bean.setBackStatus(MBomConstantEnum.MBomBackStatusEnum.DEAL_1.getValue()); + bean.setConfirmTime(LocalDateTime.now()); + bean.setModifyTime(LocalDateTime.now()); + bean.setConfirmUserName(SessionUtil.getUserName()); + bean.setConfirmUserName(SessionUtil.getUserName()); + updateById(bean); + } - //退回逻辑 - - //同一个bom下退回的物料 - Map> groupBackMap2=backList.stream().collect(Collectors.groupingBy(BomNewMbomBackMaterialEntity::getBomRowId)); - - groupBackMap2.forEach((bomRowId,val)->{ - - BomNewMbomParentEntity parentEntity=SpringUtil.getBean(BomNewMbomParentService.class).getById(bomRowId); - if(parentEntity==null){ - throw new NflgBusinessException(STATE.BusinessError , StrUtil.format("{} 数据不存在 退回生成异常",bomRowId)); - } - - List updateSourceIdList=val.stream().map(BomNewMbomBackMaterialEntity::getSourceRowId).collect(Collectors.toList()); - //重新发布 - //SpringUtil.getBean(BomNewPbomParentService.class).reConvertToMBom(parentEntity.getSourceRowId(),updateSourceIdList); - - - - //更新状态 - List updateIdList=val.stream().map(BomNewMbomBackMaterialEntity::getRowId).collect(Collectors.toList()); - UpdateWrapper updateWrapper=new UpdateWrapper(); - updateWrapper.lambda().in(BomNewMbomBackMaterialEntity::getRowId,updateIdList); - - updateWrapper.lambda().set(BomNewMbomBackMaterialEntity::getBackStatus, MBomConstantEnum.MBomBackStatusEnum.DEAL_1.getValue()); - updateWrapper.lambda(). set(BomNewMbomBackMaterialEntity::getConfirmTime,LocalDateTime.now()); - updateWrapper.lambda(). set(BomNewMbomBackMaterialEntity::getConfirmUserName,SessionUtil.getUserName()); - updateWrapper.lambda(). set(BomNewMbomBackMaterialEntity::getConfirmUserCode,SessionUtil.getUserCode()); - - update(updateWrapper); - - }); - - - - - - diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java index e7b0fd42..2d620682 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewPbomParentService.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; import com.alibaba.excel.enums.BooleanEnum; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -679,14 +680,20 @@ public class BomNewPbomParentService extends ServiceImpl backRowId) { - + /** + * 修改生产工厂 + * 重新发布 + * + */ + public void reConvertToMBom(Long bomRowId, List sourceRowId) throws ExecutionException, InterruptedException { UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.lambda().set(BomNewPbomChildEntity::getProductionFactoryCode, backRowId); - updateWrapper.lambda().in(BomNewPbomChildEntity::getRowId, backRowId); + updateWrapper.lambda().set(BomNewPbomChildEntity::getProductionFactoryCode, FactoryCodeEnum.FACTORY_1010.getValue()); + updateWrapper.lambda().in(BomNewPbomChildEntity::getRowId, sourceRowId); + SpringUtil.getBean(BomNewPbomChildService.class).update(updateWrapper); + convertToMBomFor1020(bomRowId); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomDetailMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomDetailMapper.xml index a7cdb2f8..99bb030e 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomDetailMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomDetailMapper.xml @@ -56,7 +56,13 @@ + diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomParentMapper.xml index a45d1373..f9a2c9e9 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewMbomParentMapper.xml @@ -106,12 +106,12 @@