diff --git a/.gitignore b/.gitignore index 013ac695..206cbe1d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ -.idea/ -logs/ -target/ -gyoa-java.iml -*.http -*.env.json -*.json -/src/test/ +.idea/ +logs/ +target/ +gyoa-java.iml +*.http +*.env.json +*.json +/src/test/ +questionnaire.iml diff --git a/src/main/java/com/qs/serve/modules/bms/common/FactoryIdOperation.java b/src/main/java/com/qs/serve/modules/bms/common/FactoryIdOperation.java new file mode 100644 index 00000000..459b708c --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/common/FactoryIdOperation.java @@ -0,0 +1,6 @@ +package com.qs.serve.modules.bms.common; + +public interface FactoryIdOperation { + String Add = "Add"; + String Del = "del"; +} diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java index abf9b530..750944dc 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java @@ -6,7 +6,11 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.common.FactoryIdOperation; +import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.goods.service.GoodsSpecValueService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -31,6 +35,7 @@ import java.util.List; public class BmsFactoryController { private BmsFactoryService bmsFactoryService; + private BmsRegionService bmsRegionService; private GoodsSpecValueService goodsSpecValueService; /** @@ -85,6 +90,7 @@ public class BmsFactoryController { @PreAuthorize("hasRole('bms:factory:insert')") public R save(@RequestBody @Valid BmsFactory param){ boolean result = bmsFactoryService.save(param); + bmsRegionService.updateAllFactoryIdsByFactoryId(param.getId(), FactoryIdOperation.Add); return R.isTrue(result); } @@ -96,8 +102,9 @@ public class BmsFactoryController { @DeleteMapping("/deleteById/{id}") @SysLog(module = SystemModule.BASE, title = "工厂产地", biz = BizType.DELETE) @PreAuthorize("hasRole('bms:factory:delete')") - public R deleteById(@PathVariable("id") Long id){ + public R deleteById(@PathVariable("id") String id){ boolean result = bmsFactoryService.removeById(id); + bmsRegionService.updateAllFactoryIdsByFactoryId(id, FactoryIdOperation.Del); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java index 39fda273..aaa32be7 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java @@ -292,7 +292,7 @@ public class BmsRegion2Controller { return R.error("地区含有网点无法删除"); } //删除商品限制 - bmsRuleRegionService.removeByRegionId(Long.parseLong(id)); + bmsRuleRegionService.removeByRegionId(id); boolean result = bmsRegion2Service.removeById(id); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index 34f3e95e..2e3eb605 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java @@ -175,18 +175,12 @@ public class BmsRegionController { List defaultFactories = bmsFactoryService.list(); if(CollectionUtil.isNotEmpty(bmsRegion.getFactoryIds())){ List factories = new ArrayList<>(); - for (BmsFactory factory : defaultFactories) { - boolean exist = false; - for (String factoryId : bmsRegion.getFactoryIds()) { + for (String factoryId : bmsRegion.getFactoryIds()) { + for (BmsFactory factory : defaultFactories) { if(factory.getId().equals(factoryId)){ factories.add(factory); - exist = true; - break; } } - if(!exist){ - factories.add(factory); - } } bmsRegion.setFactoryInfos(factories); }else { @@ -306,7 +300,7 @@ public class BmsRegionController { return R.error("地区含有网点无法删除"); } //删除商品限制 - bmsRuleRegionService.removeByRegionId(Long.parseLong(id)); + bmsRuleRegionService.removeByRegionId(id); boolean result = bmsRegionService.removeById(id); //清空临时表 hisUserSupplierService.cleanTable(); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java index 1293fb35..607d713a 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java @@ -68,6 +68,12 @@ public class BmsSubjectController { @PreAuthorize("hasRole('bms:subject:query')") public R getById(@PathVariable("id") String id){ BmsSubject bmsSubject = bmsSubjectService.getById(id); + if(bmsSubject.getPid()!=null && bmsSubject.getPid()!=0L){ + BmsSubject par = bmsSubjectService.getById(id); + if(par!=null){ + bmsSubject.setParName(par.getSubjectName()); + } + } return R.ok(bmsSubject); } @@ -98,11 +104,14 @@ public class BmsSubjectController { } private void commonEdit(BmsSubject subject){ + if(subject.getId()==null){ + bmsSubjectService.save(subject); + } if(subject.getPid()==null||subject.getPid().equals(0L)){ subject.setPid(0L); subject.setLevel(1); subject.setPathNames(subject.getSubjectName()); - bmsSubjectService.save(subject); + bmsSubjectService.updateById(subject); }else { BmsSubject parent = bmsSubjectService.getById(subject.getPid()); BmsSubject ori = bmsSubjectService.getById(subject.getId()); @@ -125,7 +134,7 @@ public class BmsSubjectController { @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.DELETE) @PreAuthorize("hasRole('bms:subject:delete')") public R deleteById(@PathVariable("id") Long id){ - boolean result = bmsSubjectService.removeById(id); + boolean result = bmsSubjectService.removeSelfAndChildById(id); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index b1cd0dab..52cd0c88 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -279,7 +279,7 @@ public class BmsSupplierController { supplierParam.setUserName(sysUser.getName()); supplierParam.setUserCode(sysUser.getCode()); if(CollectionUtil.isNotEmpty(supplier.getOtherUserIds())){ - List otherUserIds = Arrays.asList(supplier.getOtherUserIds()); + List otherUserIds = new ArrayList<>(Arrays.asList(supplier.getOtherUserIds())); if(supplier.getUserId() != null){ otherUserIds.add(supplier.getUserId()); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java index e090f6ad..43597bb7 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java @@ -34,6 +34,8 @@ public class BmsSubject implements Serializable { @Length(max = 50,message = "科目名称长度不能超过50字") private String subjectName; + + private String pathNames; /** 科目编码 */ @@ -45,6 +47,9 @@ public class BmsSubject implements Serializable { @NotNull(message = "父级id不能为空") private Long pid; + @TableField(exist = false) + private String parName; + private Integer level; /** 备注 */ diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java index 89d4f048..ab55c859 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java @@ -29,5 +29,7 @@ public interface BmsRegionService extends IService { boolean saveBmsRegion(BmsRegion param); boolean updateBmsRegionById(BmsRegion param); + + void updateAllFactoryIdsByFactoryId(String id,String addOrDel); } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleRegionService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleRegionService.java index 345d076d..6338227a 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleRegionService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleRegionService.java @@ -15,7 +15,7 @@ public interface BmsRuleRegionService extends IService { * @param regionId * @return */ - boolean removeByRegionId(Long regionId); + boolean removeByRegionId(String regionId); } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java index 78f976fe..efc83613 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java @@ -3,6 +3,8 @@ package com.qs.serve.modules.bms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.bms.entity.BmsSubject; +import java.util.List; + /** * 科目 服务接口 * @author YenHex @@ -10,9 +12,12 @@ import com.qs.serve.modules.bms.entity.BmsSubject; */ public interface BmsSubjectService extends IService { + List listChild(Long pid); + void updatePathNameByParent(BmsSubject subject); BmsSubject getByName(String name); + boolean removeSelfAndChildById(Long id); } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java index 3aeb6165..55c4c017 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java @@ -4,22 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.model.dto.TreeNode; import com.qs.serve.common.util.*; -import com.qs.serve.modules.bms.entity.BmsRegion2; -import com.qs.serve.modules.bms.entity.BmsRegionUser; -import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.common.FactoryIdOperation; +import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper; +import com.qs.serve.modules.bms.mapper.BmsFactoryMapper; +import com.qs.serve.modules.bms.service.BmsFactoryService; import com.qs.serve.modules.bms.service.BmsRegionUserService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -36,10 +37,17 @@ public class BmsRegionServiceImpl extends ServiceImpl private BmsRegionUserService bmsRegionUserService; private SysUserService sysUserService; private BmsChannelPointMapper bmsChannelPointMapper; + private BmsFactoryService bmsFactoryService; @Override public boolean saveBmsRegion(BmsRegion param){ param = this.flushLevel(param); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.orderByAsc(BmsFactory::getCode); + String[] FactoryIds = bmsFactoryService.list(lqw).stream().map(a->a.getId()).toArray(String[]::new); + + param.setFactoryIds(FactoryIds); return this.save(param); } @@ -218,5 +226,40 @@ public class BmsRegionServiceImpl extends ServiceImpl } } } + + public void updateAllFactoryIdsByFactoryId(String id, String addOrDel){ + List regionList = this.list(); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.orderByAsc(BmsFactory::getCode); + String[] FactoryIds = bmsFactoryService.list(lqw).stream().map(a->a.getId()).toArray(String[]::new); + + for(BmsRegion region:regionList){ + if(CollectionUtil.isNotEmpty(region.getFactoryIds())) { + if (addOrDel.equals(FactoryIdOperation.Add)) { + region = AddOneFactoryIds(region, id); + } else { + region = delOneFactoryIds(region, id); + } + }else { + region.setFactoryIds(FactoryIds); + } + } + this.updateBatchById(regionList); + } + + private BmsRegion delOneFactoryIds(BmsRegion region,String id){ + String[] newIds = Arrays.stream(region.getFactoryIds()) + .filter(e -> !e.equals(id)).toArray(String[]::new); + region.setFactoryIds(newIds); + return region; + } + + private BmsRegion AddOneFactoryIds(BmsRegion region,String id){ + List newIds = new ArrayList<>(Arrays.asList(region.getFactoryIds())); + newIds.add(id); + region.setFactoryIds(newIds.stream().toArray(String[]::new)); + return region; + } } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleRegionServiceImpl.java index 91013051..4d1276e4 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleRegionServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleRegionServiceImpl.java @@ -20,7 +20,7 @@ import com.qs.serve.modules.bms.mapper.BmsRuleRegionMapper; public class BmsRuleRegionServiceImpl extends ServiceImpl implements BmsRuleRegionService { @Override - public boolean removeByRegionId(Long regionId) { + public boolean removeByRegionId(String regionId) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(BmsRuleRegion::getRegionId,regionId); return this.remove(lqw); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java index 5878e0f7..ad353ff7 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java @@ -25,6 +25,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class BmsSubjectServiceImpl extends ServiceImpl implements BmsSubjectService { + @Override public List listChild(Long pid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(BmsSubject::getPid,pid); @@ -52,5 +53,17 @@ public class BmsSubjectServiceImpl extends ServiceImpl list = listChild(id); + for(BmsSubject subject:list){ + boolean result = removeSelfAndChildById(subject.getId()); + if(!result){ + return false; + } + } + return this.removeById(id); + } } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index d43d6995..fbf66549 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -231,7 +231,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl and `bms_supplier`.`update_by` = #{query.updateBy} and `bms_supplier`.`tenant_id` = #{query.tenantId} and `bms_supplier`.`del_flag` = #{query.delFlag} + and `bms_supplier`.`del_flag` = '0' and (`bms_supplier`.`user_id` = #{query.currUserId} or FIND_IN_SET(#{query.currUserId},`bms_supplier`.`other_user_ids`) )