From b3df55fbb2aae2ccb49dda614129b8679c828d81 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 16 Nov 2022 10:54:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/bms/common/MasterUserType.java | 2 + .../controller/BmsCostCenterController.java | 87 ++++++++++- .../controller/BmsMasterUserController.java | 29 +++- .../bms/controller/BmsRegion2Controller.java | 82 +++++++++- .../bms/controller/BmsRegionController.java | 84 +++++++++- .../bms/controller/BmsSupplierController.java | 4 - .../modules/bms/entity/BmsCostCenter.java | 5 + .../modules/bms/entity/BmsMasterUser.java | 2 +- .../serve/modules/bms/entity/BmsRegion.java | 6 + .../serve/modules/bms/entity/BmsRegion2.java | 5 + .../serve/modules/bms/entity/BmsSupplier.java | 6 + .../bms/entity/vo/BmsMasterUserCenterVo.java | 21 +++ .../bms/mapper/BmsMasterUserMapper.java | 8 + .../controller/GoodsCategoryController.java | 17 ++ .../goods/controller/GoodsSpuController.java | 17 ++ .../modules/goods/entity/GoodsCategory.java | 4 + .../serve/modules/goods/entity/GoodsSpu.java | 6 +- .../goods/entity/bo/GoodsCategoryTreeVo.java | 1 + .../modules/his/entity/HisUserSupplier.java | 61 ++++++++ .../his/mapper/HisUserSupplierMapper.java | 14 ++ .../his/service/HisUserSupplierService.java | 29 ++++ .../impl/HisUserSupplierServiceImpl.java | 130 ++++++++++++++++ .../tbs/controller/TbsBudgetController.java | 60 +++++-- .../tbs/controller/TbsScheduleController.java | 1 + .../serve/modules/tbs/entity/TbsBudget.java | 1 + .../modules/tbs/entity/bo/TbsBudgetBo.java | 1 + .../modules/tbs/entity/so/TbsBudgetSo.java | 57 ++----- .../modules/tbs/entity/vo/TbsBudgetVo.java | 72 +++++++++ .../modules/tbs/mapper/TbsBudgetMapper.java | 11 ++ .../tbs/service/TbsBudgetConditionMapper.java | 14 -- .../service/impl/TbsBudgetServiceImpl.java | 34 ++-- .../mapper/bms/BmsMasterUserMapper.xml | 28 ++++ .../resources/mapper/bms/GoodsSpuMapper.xml | 2 + .../mapper/tbs/TbsBudgetConditionMapper.xml | 2 +- .../resources/mapper/tbs/TbsBudgetMapper.xml | 147 ++++++++++++++++++ 35 files changed, 948 insertions(+), 102 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserCenterVo.java create mode 100644 src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java create mode 100644 src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java create mode 100644 src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java create mode 100644 src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java create mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java delete mode 100644 src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetConditionMapper.java create mode 100644 src/main/resources/mapper/tbs/TbsBudgetMapper.xml diff --git a/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java b/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java index 7630550d..debe71da 100644 --- a/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java +++ b/src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java @@ -10,4 +10,6 @@ public interface MasterUserType { String Point = "point"; + String Center = "center"; + } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java index 5d82ed61..3cf71309 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java @@ -6,12 +6,15 @@ 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.CopierUtil; -import com.qs.serve.common.util.PageUtil; -import com.qs.serve.common.util.TreeUtil; +import com.qs.serve.common.util.*; +import com.qs.serve.modules.bms.common.MasterUserType; +import com.qs.serve.modules.bms.entity.BmsMasterUser; import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo; import com.qs.serve.modules.bms.entity.vo.BmsCostCenterTreeVo; +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserCenterVo; import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo; +import com.qs.serve.modules.bms.service.BmsMasterUserService; +import com.qs.serve.modules.sys.entity.SysUser; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -21,7 +24,9 @@ import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.service.BmsCostCenterService; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -36,15 +41,19 @@ import java.util.stream.Collectors; public class BmsCostCenterController { private BmsCostCenterService bmsCostCenterService; - + private BmsMasterUserService bmsMasterUserService; /** * 树查询 + * @param loadByCurrent 值=1,过滤当前用户负责数据 * @return */ @GetMapping("/tree") @PreAuthorize("hasRole('bms:costCenter:query')") - public R> getTree(){ + public R> getTree(Integer loadByCurrent){ + if(loadByCurrent!=null&&loadByCurrent.equals(1)){ + return getTreeByCurrentUser(); + } List list = bmsCostCenterService.list(); List treeVoList = list.stream().map(obj->{ BmsCostCenterTreeVo treeNode = CopierUtil.copy(obj,new BmsCostCenterTreeVo()); @@ -56,6 +65,74 @@ public class BmsCostCenterController { return R.ok(TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING)); } + + public R> getTreeByCurrentUser(){ + String userId = AuthContextUtils.getSysUserId(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsMasterUser::getUserId,userId); + lqw.eq(BmsMasterUser::getType, MasterUserType.Center); + List masterUsers = bmsMasterUserService.list(lqw); + List centerIds = masterUsers.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList()); + if(centerIds.size()>0){ + List costCenters = bmsCostCenterService.listByIds(centerIds); + Map> listMap = costCenters.stream().collect(Collectors.groupingBy(BmsCostCenter::getLevel)); + List list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1); + List list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2); + List list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3); + list3.forEach(obj3->{ + boolean exist = false; + for (BmsCostCenter obj2 : list2) { + if(obj2.getId().equals(obj3.getPid())){ + List childList = obj2.getChildNode()==null?new ArrayList<>():obj2.getChildNode(); + childList.add(obj3); + obj2.setChildNode(childList); + exist = true; + break; + } + } + if(!exist){ + list2.add(obj3); + } + }); + list2.forEach(obj2->{ + boolean exist = false; + for (BmsCostCenter obj1 : list1) { + if(obj1.getId().equals(obj2.getPid())){ + List childList = obj1.getChildNode()==null?new ArrayList<>():obj1.getChildNode(); + childList.add(obj2); + obj1.setChildNode(childList); + exist = true; + break; + } + } + if(!exist){ + list1.add(obj2); + } + }); + List treeVoList = toTreeNode(list1); + return R.ok(treeVoList); + } + return R.ok(); + } + + private List toTreeNode(List list){ + List treeVoList = new ArrayList<>(); + for (BmsCostCenter costCenter : list) { + BmsCostCenterTreeVo treeNode = CopierUtil.copy(costCenter,new BmsCostCenterTreeVo()); + treeNode.setId(costCenter.getId().toString()); + treeNode.setParentId(costCenter.getPid().toString()); + treeNode.setSort(0); + if(CollectionUtil.isNotEmpty(costCenter.getChildNode())){ + List childList = toTreeNode(costCenter.getChildNode()); + for (BmsCostCenterTreeVo treeVo : childList) { + treeNode.addChildren(treeVo); + } + } + treeVoList.add(treeNode); + } + return treeVoList; + } + /** * 根据ID查询 * @param id diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java index ac48066b..6d29b22c 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java @@ -13,6 +13,7 @@ import com.qs.serve.modules.bms.common.MasterUserType; import com.qs.serve.modules.bms.entity.BmsChannel; import com.qs.serve.modules.bms.entity.BmsChannelPoint; import com.qs.serve.modules.bms.entity.BmsRegionUser; +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserCenterVo; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserChannelVo; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserPointVo; import com.qs.serve.modules.bms.mapper.BmsMasterUserMapper; @@ -57,7 +58,6 @@ public class BmsMasterUserController { * @return */ @GetMapping("/list4Channel") - @PreAuthorize("hasRole('bms:masterUser:query')") public R> getList(BmsMasterUserChannelVo userChannel){ PageUtil.startPage(); List list = bmsMasterUserMapper.selectChannelMasterUserList(userChannel); @@ -70,7 +70,6 @@ public class BmsMasterUserController { * @return */ @GetMapping("/page4Channel") - @PreAuthorize("hasRole('bms:masterUser:query')") public R> getPage(BmsMasterUserChannelVo userChannel){ PageUtil.startPage(); List list = bmsMasterUserMapper.selectChannelMasterUserList(userChannel); @@ -83,7 +82,6 @@ public class BmsMasterUserController { * @return */ @GetMapping("/list4Point") - @PreAuthorize("hasRole('bms:masterUser:query')") public R> list4Point(BmsMasterUserPointVo param){ PageUtil.startPage(); List list = bmsMasterUserMapper.selectPointMasterUserList(param); @@ -96,13 +94,36 @@ public class BmsMasterUserController { * @return */ @GetMapping("/page4Point") - @PreAuthorize("hasRole('bms:masterUser:query')") public R> page4Point(BmsMasterUserPointVo param){ PageUtil.startPage(); List list = bmsMasterUserMapper.selectPointMasterUserList(param); return R.byPageHelperList(list); } + /** + * 负责人列表(成本中心) + * @param param + * @return + */ + @GetMapping("/list4center") + public R> list4center(BmsMasterUser param){ + PageUtil.startPage(); + List list = bmsMasterUserMapper.selectCenterMasterUserList(param); + return R.ok(list); + } + + /** + * 负责人翻页(成本中心) + * @param param + * @return + */ + @GetMapping("/page4center") + public R> page4center(BmsMasterUser param){ + PageUtil.startPage(); + List list = bmsMasterUserMapper.selectCenterMasterUserList(param); + return R.byPageHelperList(list); + } + /** * ID查询 * @param id 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 218107f0..c4197f13 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 @@ -8,7 +8,9 @@ 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.*; +import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; +import com.qs.serve.modules.bms.entity.BmsRegionUser; import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.service.*; @@ -19,7 +21,10 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 基础档案 行政区域 @@ -36,6 +41,7 @@ public class BmsRegion2Controller { private BmsSupplierService bmsSupplierService; private BmsRuleRegionService bmsRuleRegionService; private BmsChannelPointService bmsChannelPointService; + private BmsRegionUserService bmsRegionUserService; /** * 列表 @@ -50,6 +56,58 @@ public class BmsRegion2Controller { return R.ok(list); } + /** + * 树查询(当前负责人) + * @return + */ + private List treeByCurrentUser(){ + String userId = AuthContextUtils.getSysUserId(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsRegionUser::getType,0); + lqw.eq(BmsRegionUser::getUserId,userId); + List regionUsers = bmsRegionUserService.list(lqw); + List regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); + if(regionIds.size()>0){ + List regionList = bmsRegion2Service.listByIds(regionIds); + Map> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel)); + List list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1); + List list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2); + List list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3); + list3.forEach(obj3->{ + boolean exist = false; + for (BmsRegion2 obj2 : list2) { + if(obj2.getId().equals(obj3.getPid())){ + List childList = obj2.getChildNodes()==null?new ArrayList<>():obj2.getChildNodes(); + childList.add(obj3); + obj2.setChildNodes(childList); + exist = true; + break; + } + } + if(!exist){ + list2.add(obj3); + } + }); + list2.forEach(obj2->{ + boolean exist = false; + for (BmsRegion2 obj1 : list1) { + if(obj1.getId().equals(obj2.getPid())){ + List childList = obj1.getChildNodes()==null?new ArrayList<>():obj1.getChildNodes(); + childList.add(obj2); + obj1.setChildNodes(childList); + exist = true; + break; + } + } + if(!exist){ + list1.add(obj2); + } + }); + return toTreeNodeList(list1); + } + return null; + } + /** * 翻页查询 * @param param @@ -66,14 +124,36 @@ public class BmsRegion2Controller { /** * 树查询 + * @param loadByCurrent * @return */ @GetMapping("/tree") @PreAuthorize("hasRole('bms:region:query')") - public R> getTree(Integer listUserFlag){ + public R> getTree(Integer listUserFlag,Integer loadByCurrent){ + if(loadByCurrent!=null&&loadByCurrent.equals(1)){ + return R.ok(treeByCurrentUser()); + } return R.ok(bmsRegion2Service.getTree(listUserFlag!=null&&listUserFlag.equals(1))); } + private List toTreeNodeList(List list){ + List treeVoList = new ArrayList<>(); + for (BmsRegion2 region2 : list) { + BmsRegionTreeVo treeNode = CopierUtil.copy(region2,new BmsRegionTreeVo()); + treeNode.setId(region2.getId()); + treeNode.setParentId(region2.getPid()); + treeNode.setSort(0); + if(CollectionUtil.isNotEmpty(region2.getChildNodes())){ + List childList = toTreeNodeList(region2.getChildNodes()); + for (BmsRegionTreeVo treeVo : childList) { + treeNode.addChildren(treeVo); + } + } + treeVoList.add(treeNode); + } + return treeVoList; + } + /** * 根据ID查询 * @param id 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 7cd8d118..7e545b13 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 @@ -8,8 +8,7 @@ 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.*; -import com.qs.serve.modules.bms.entity.BmsFactory; -import com.qs.serve.modules.bms.entity.BmsRegion2; +import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.service.*; @@ -19,11 +18,12 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import com.qs.serve.modules.bms.entity.BmsRegion; - import javax.validation.Valid; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 基础档案 销售区域 @@ -41,6 +41,7 @@ public class BmsRegionController { private BmsRuleRegionService bmsRuleRegionService; private BmsFactoryService bmsFactoryService; private BmsChannelPointService bmsChannelPointService; + private BmsRegionUserService bmsRegionUserService; /** * 列表 @@ -71,14 +72,87 @@ public class BmsRegionController { /** * 树查询 + * @param listUserFlag + * @param loadByCurrent 值=1,过滤当前用户负责数据 * @return */ @GetMapping("/tree") @PreAuthorize("hasRole('bms:region:query')") - public R> getTree(Integer listUserFlag){ + public R> getTree(Integer listUserFlag,Integer loadByCurrent){ + if(loadByCurrent!=null&&loadByCurrent.equals(1)){ + return R.ok(treeByCurrentUser()); + } return R.ok(bmsRegionService.getTree(listUserFlag!=null&&listUserFlag.equals(1))); } + + public List treeByCurrentUser(){ + String userId = AuthContextUtils.getSysUserId(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsRegionUser::getType,0); + lqw.eq(BmsRegionUser::getUserId,userId); + List regionUsers = bmsRegionUserService.list(lqw); + List regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); + if(regionIds.size()>0){ + List regionList = bmsRegionService.listByIds(regionIds); + Map> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion::getLevel)); + List list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1); + List list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2); + List list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3); + list3.forEach(obj3->{ + boolean exist = false; + for (BmsRegion obj2 : list2) { + if(obj2.getId().equals(obj3.getPid())){ + List childList = obj2.getChildNodes()==null?new ArrayList<>():obj2.getChildNodes(); + childList.add(obj3); + obj2.setChildNodes(childList); + exist = true; + break; + } + } + if(!exist){ + list2.add(obj3); + } + }); + list2.forEach(obj2->{ + boolean exist = false; + for (BmsRegion obj1 : list1) { + if(obj1.getId().equals(obj2.getPid())){ + List childList = obj1.getChildNodes()==null?new ArrayList<>():obj1.getChildNodes(); + childList.add(obj2); + obj1.setChildNodes(childList); + exist = true; + break; + } + } + if(!exist){ + list1.add(obj2); + } + }); + + return toTreeNodeList(list1); + } + return null; + } + + private List toTreeNodeList(List list){ + List treeVoList = new ArrayList<>(); + for (BmsRegion region : list) { + BmsRegionTreeVo treeNode = CopierUtil.copy(region,new BmsRegionTreeVo()); + treeNode.setId(region.getId()); + treeNode.setParentId(region.getPid()); + treeNode.setSort(0); + if(CollectionUtil.isNotEmpty(region.getChildNodes())){ + List childList = toTreeNodeList(region.getChildNodes()); + for (BmsRegionTreeVo treeVo : childList) { + treeNode.addChildren(treeVo); + } + } + treeVoList.add(treeNode); + } + return treeVoList; + } + /** * 根据ID查询 * @param id 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 f09f04df..5fe2f2fe 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 @@ -82,10 +82,6 @@ public class BmsSupplierController { @PreAuthorize("hasRole('bms:supplier:query')") public R> getPage(BmsSupplier param){ PageUtil.startPage(); -// LambdaQueryWrapper supplierWrapper = new LambdaQueryWrapper<>(param); -// if(CollectionUtil.isNotEmpty(param.getRegionIds())){ -// supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); -// } List list = bmsSupplierService.selectSupplierList(param); initSupplierList(list); initParentList(list); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java index e6a3732c..fbe198b2 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java @@ -4,6 +4,7 @@ import java.time.LocalDate; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; @@ -83,5 +84,9 @@ public class BmsCostCenter implements Serializable { @TableField(fill = FieldFill.UPDATE) private String updateBy; + /** 子节点 */ + @TableField(exist = false) + List childNode; + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java index ed525b76..a48f885c 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java @@ -31,7 +31,7 @@ public class BmsMasterUser implements Serializable { @TableId(type = IdType.AUTO) private Long id; - /** 类型:channel、point */ + /** 类型:channel、point、center */ @NotBlank(message = "类型不能为空") @Length(max = 10,message = "类型长度不能超过10字") private String type; diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java index 93e24dc7..9d22b805 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java @@ -97,5 +97,11 @@ public class BmsRegion implements Serializable { @TableField(exist = false) private Object parentInfo; + /** + * 子节点 + */ + @TableField(exist = false) + List childNodes; + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java index aa9d4a79..5f2d8620 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java @@ -86,5 +86,10 @@ public class BmsRegion2 implements Serializable { @TableField(exist = false) private Object parentInfo; + /** + * 子节点 + */ + @TableField(exist = false) + List childNodes; } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index a6d77b56..1f2983d9 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java @@ -171,5 +171,11 @@ public class BmsSupplier implements Serializable { @TableField(exist = false) private String searchUserCode; + /** + * 值=1,过滤当前用户负责数据 + */ + @TableField(exist = false) + private Integer loadByCurrent; + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserCenterVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserCenterVo.java new file mode 100644 index 00000000..68b4df31 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserCenterVo.java @@ -0,0 +1,21 @@ +package com.qs.serve.modules.bms.entity.vo; + +import com.qs.serve.modules.bms.entity.BmsMasterUser; +import lombok.Data; + +/** + * @author YenHex + * @since 2022/11/15 + */ +@Data +public class BmsMasterUserCenterVo extends BmsMasterUser { + + private String userCode; + + private String userName; + + private String centerCode; + + private String centerName; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java index 51806bd6..51b69863 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.bms.entity.BmsMasterUser; +import com.qs.serve.modules.bms.entity.vo.BmsMasterUserCenterVo; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserChannelVo; import com.qs.serve.modules.bms.entity.vo.BmsMasterUserPointVo; import org.apache.ibatis.annotations.Param; @@ -29,5 +30,12 @@ public interface BmsMasterUserMapper extends BaseMapper { */ List selectPointMasterUserList(@Param("query") BmsMasterUserPointVo userChannel); + /** + * 查询成本中心负责人 + * @param userChannel + * @return + */ + List selectCenterMasterUserList(@Param("query") BmsMasterUser userChannel); + } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java index 5bd611bc..bda2289e 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java @@ -9,9 +9,11 @@ import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.TreeUtil; +import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.bo.GoodsCategoryBo; import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo; import com.qs.serve.modules.goods.entity.bo.GoodsCategoryTreeVo; +import com.qs.serve.modules.goods.service.GoodsSpuService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -36,6 +38,7 @@ import java.util.stream.Collectors; public class GoodsCategoryController { private GoodsCategoryService goodsCategoryService; + private GoodsSpuService goodsSpuService; /** * 翻页查询 @@ -72,6 +75,7 @@ public class GoodsCategoryController { @GetMapping("/tree") @PreAuthorize("hasRole('goods:category:query')") public R> getTree(GoodsCategory param){ + final boolean loadSpuData = param.getLoadSpuData()!=null&¶m.getLoadSpuData().equals(1); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); List list = goodsCategoryService.list(lqw); List treeVoList = list.stream().map(cate->{ @@ -79,6 +83,19 @@ public class GoodsCategoryController { treeNode.setId(cate.getId()+""); treeNode.setParentId(cate.getParentId().toString()); treeNode.setSort(0); + if(loadSpuData && cate.getLevel().equals(3)){ + LambdaQueryWrapper spuLqw = new LambdaQueryWrapper<>(); + spuLqw.eq(GoodsSpu::getCategoryThird,cate.getId()); + List spuList = goodsSpuService.list(spuLqw); + for (GoodsSpu goodsSpu : spuList) { + GoodsCategoryTreeVo spuNode = new GoodsCategoryTreeVo(); + spuNode.setId(goodsSpu.getId()+""); + spuNode.setEnable("1"); + spuNode.setCode(goodsSpu.getSpuCode()); + spuNode.setName(goodsSpu.getName()); + treeNode.addChildren(spuNode); + } + } return treeNode; }).collect(Collectors.toList()); treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java index f819029e..9e564c33 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java @@ -47,6 +47,18 @@ public class GoodsSpuController { private GoodsSpuSpecService goodsSpuSpecService; private GoodsSkuSpecValueService goodsSkuSpecValueService; + /** + * 翻页搜索 + * @param param + * @return + */ + @GetMapping("/list") + @PreAuthorize("hasRole('goods:spu:query')") + public R> getList(GoodsSpu param){ + List spuList = goodsSpuService.selectSpuList(param); + return R.ok(spuList); + } + /** * 翻页搜索 * @param param @@ -57,6 +69,11 @@ public class GoodsSpuController { public R> getPage(GoodsSpu param){ PageUtil.startPage(); List list = goodsSpuService.selectSpuList(param); + for (GoodsSpu goodsSpu : list) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(GoodsSku::getSpuId,goodsSpu.getId()); + goodsSkuService.list(lqw); + } return R.byPageHelperList(list); } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java index c7ba9ad2..e94d42cc 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java @@ -95,5 +95,9 @@ public class GoodsCategory implements Serializable { @TableField(exist = false) private Object parentInfo; + /** 加载spu */ + @TableField(exist = false) + private Integer loadSpuData; + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 71bad93c..6d5dcab4 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java @@ -15,7 +15,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import javax.validation.constraints.NotBlank; - +import java.util.List; /** * spu 实体类 * @author YenHex @@ -112,5 +112,9 @@ public class GoodsSpu implements Serializable { @TableField(exist = false) private String cateThirdLabel; + /** 搜索值,搜索sku标题及编码 */ + @TableField(exist = false) + private String searchValue; + } diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java index 59e81660..9cc1f3fc 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java @@ -48,4 +48,5 @@ public class GoodsCategoryTreeVo extends TreeNode { /** 等级 */ private Integer level; + } diff --git a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java new file mode 100644 index 00000000..16273b6b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java @@ -0,0 +1,61 @@ +package com.qs.serve.modules.his.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 供应商负责人 实体类 + * @author YenHex + * @since 2022-11-15 + */ +@Data +@TableName("his_user_supplier") +public class HisUserSupplier implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 用户id */ + @NotBlank(message = "用户id不能为空") + @Length(max = 32,message = "用户id长度不能超过32字") + private String userId; + + /** 供应商id */ + @NotNull(message = "供应商id不能为空") + private Long supplierId; + + /** 类型:0=销售区域;1=行政区域 */ + private Integer type; + + /** 区域id */ + @Length(max = 32,message = "区域id长度不能超过32字") + private String regionId; + + /** 主要负责人 */ + @NotNull(message = "主要负责人不能为空") + private Integer masterFlag; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + +} + diff --git a/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java b/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java new file mode 100644 index 00000000..5458121f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.his.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.his.entity.HisUserSupplier; + +/** + * 供应商负责人 Mapper + * @author YenHex + * @date 2022-11-15 + */ +public interface HisUserSupplierMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java b/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java new file mode 100644 index 00000000..cc5dfec2 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java @@ -0,0 +1,29 @@ +package com.qs.serve.modules.his.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.his.entity.HisUserSupplier; + +import java.io.Serializable; + +/** + * 供应商负责人 服务接口 + * @author YenHex + * @date 2022-11-15 + */ +public interface HisUserSupplierService extends IService { + + /** + * 初始化 + * @param userId + * @return + */ + boolean initByUserId(String userId); + + /** + * 删除 + * @return + */ + void cleanTable(); + +} + diff --git a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java new file mode 100644 index 00000000..f59ce583 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java @@ -0,0 +1,130 @@ +package com.qs.serve.modules.his.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.modules.bms.entity.BmsRegion; +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.service.BmsRegion2Service; +import com.qs.serve.modules.bms.service.BmsRegionService; +import com.qs.serve.modules.bms.service.BmsRegionUserService; +import com.qs.serve.modules.bms.service.BmsSupplierService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.his.entity.HisUserSupplier; +import com.qs.serve.modules.his.service.HisUserSupplierService; +import com.qs.serve.modules.his.mapper.HisUserSupplierMapper; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 供应商负责人 服务实现类 + * @author YenHex + * @since 2022-11-15 + */ +@Slf4j +@Service +@AllArgsConstructor +public class HisUserSupplierServiceImpl extends ServiceImpl implements HisUserSupplierService { + + private BmsSupplierService bmsSupplierService; + private BmsRegionService saleRegionService; + private BmsRegion2Service bizRegionService; + private BmsRegionUserService regionUserService; + + @Override + public boolean initByUserId(String userId) { + LambdaQueryWrapper lqwExist = new LambdaQueryWrapper<>(); + lqwExist.eq(HisUserSupplier::getUserId,userId); + long count = this.count(lqwExist); + if(count>0L){ + return true; + } + BmsSupplier param = new BmsSupplier(); + param.setCurrUserId(userId); + List list = bmsSupplierService.selectSupplierList(param); + List userSuppliers = new ArrayList<>(); + for (BmsSupplier supplier : list) { + HisUserSupplier userSupplier = new HisUserSupplier(); + userSupplier.setUserId(userId); + userSupplier.setSupplierId(Long.parseLong(supplier.getId())); + userSupplier.setType(3); + userSupplier.setMasterFlag(supplier.getMasterFlag()); + userSuppliers.add(userSupplier); + } + LambdaQueryWrapper regionUserLqw = new LambdaQueryWrapper<>(); + regionUserLqw.eq(BmsRegionUser::getUserId,userId); + List regionUsers = regionUserService.list(regionUserLqw); + List regionSaleIds = regionUsers.stream() + .filter(a->a.getType().equals(0)) + .map(BmsRegionUser::getRegionId) + .collect(Collectors.toList()); + if(regionSaleIds.size()>0){ + List saleRegions = saleRegionService.listByIds(regionSaleIds); + Map> saleRegionsMap = saleRegions.stream().collect(Collectors.groupingBy(BmsRegion::getLevel)); + List regionIds01 = saleRegionsMap.get(1).stream().map(BmsRegion::getId).collect(Collectors.toList()); + List regionIds02 = saleRegionsMap.get(2).stream().map(BmsRegion::getId).collect(Collectors.toList()); + List regionIds03 = saleRegionsMap.get(3).stream().map(BmsRegion::getId).collect(Collectors.toList()); + toHisUserSupplier(userSuppliers,regionIds01,1,userId); + toHisUserSupplier(userSuppliers,regionIds02,2,userId); + toHisUserSupplier(userSuppliers,regionIds03,3,userId); + } + List regionBizIds = regionUsers.stream() + .filter(a->a.getType().equals(1)) + .map(BmsRegionUser::getRegionId) + .collect(Collectors.toList()); + if(regionBizIds.size()>0){ + List bizRegions = bizRegionService.listByIds(regionBizIds); + Map> saleRegionsMap = bizRegions.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel)); + List regionIds01 = saleRegionsMap.get(1).stream().map(BmsRegion2::getId).collect(Collectors.toList()); + List regionIds02 = saleRegionsMap.get(2).stream().map(BmsRegion2::getId).collect(Collectors.toList()); + List regionIds03 = saleRegionsMap.get(3).stream().map(BmsRegion2::getId).collect(Collectors.toList()); + toHisUserSupplier(userSuppliers,regionIds01,1,userId); + toHisUserSupplier(userSuppliers,regionIds02,2,userId); + toHisUserSupplier(userSuppliers,regionIds03,3,userId); + } + if(userSuppliers.size()>0){ + this.saveBatch(userSuppliers); + }else { + HisUserSupplier userSupplier = new HisUserSupplier(); + userSupplier.setUserId(userId); + userSupplier.setSupplierId(0L); + userSupplier.setType(9); + this.save(userSupplier); + } + return false; + } + + private void toHisUserSupplier(List userSuppliers,List regionIds,Integer level,String userId){ + if(regionIds.size()>0){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if(level.equals(1)){ + lqw.in(BmsSupplier::getRegionFirst,regionIds); + }else if(level.equals(2)){ + lqw.in(BmsSupplier::getRegionSecond,regionIds); + }else if(level.equals(3)){ + lqw.in(BmsSupplier::getRegionThird,regionIds); + } + List supplierList = bmsSupplierService.list(lqw); + for (BmsSupplier supplier : supplierList) { + HisUserSupplier userSupplier = new HisUserSupplier(); + userSupplier.setUserId(userId); + userSupplier.setSupplierId(Long.parseLong(supplier.getId())); + userSupplier.setType(0); + userSupplier.setMasterFlag(supplier.getMasterFlag()); + userSuppliers.add(userSupplier); + } + } + } + + @Override + public void cleanTable() { + this.remove(new QueryWrapper<>()); + } +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index 6ddf4f60..64000e02 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -9,6 +9,13 @@ import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.tbs.common.TbsGoodsType; +import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; +import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; +import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo; +import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; +import com.qs.serve.modules.tbs.service.TbsBudgetConditionService; +import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -20,7 +27,10 @@ import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.service.TbsBudgetService; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 预算 预算 @@ -34,6 +44,9 @@ import java.util.List; public class TbsBudgetController { private TbsBudgetService tbsBudgetService; + private TbsBudgetConditionService tbsBudgetConditionService; + private TbsBudgetMapper tbsBudgetMapper; + private TbsScheduleItemBudgetService tbsScheduleItemBudgetService; /** * 列表 @@ -43,11 +56,12 @@ public class TbsBudgetController { @GetMapping("/list") @PreAuthorize("hasRole('tbs:budget:query')") public R> getList(TbsBudgetSo param){ - TbsBudget entity = CopierUtil.copy(param,new TbsBudget()); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); - PageUtil.startPage(); - List list = tbsBudgetService.list(lqw); - return R.ok(list); + List budgetIds = tbsBudgetMapper.selectBudgetId(param); + if(budgetIds.size()>0){ + List list = tbsBudgetService.listByIds(budgetIds); + return R.ok(list); + } + return R.ok(); } /** @@ -57,12 +71,32 @@ public class TbsBudgetController { */ @GetMapping("/page") @PreAuthorize("hasRole('tbs:budget:query')") - public R> getPage(TbsBudgetSo param){ - TbsBudget entity = CopierUtil.copy(param,new TbsBudget()); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); - PageUtil.startPage(); - List list = tbsBudgetService.list(lqw); - return R.byPageHelperList(list); + public R> getPage(TbsBudgetSo param){ + List budgetIds = tbsBudgetMapper.selectBudgetId(param); + if(budgetIds.size()>0){ + PageUtil.startPage(); + List list = tbsBudgetService.listByIds(budgetIds); + List voList = new ArrayList<>(); + for (TbsBudget budget : list) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId()); + List budgetConditions = tbsBudgetConditionService.list(lqw); + Map> listMap = budgetConditions.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType)); + TbsBudgetVo budgetVo = CopierUtil.copy(budget,new TbsBudgetVo()); + budgetVo.setBrandConditions(listMap.get(TbsGoodsType.brand.name())); + budgetVo.setCategoryConditions(listMap.get(TbsGoodsType.category.name())); + budgetVo.setSeriesConditions(listMap.get(TbsGoodsType.series.name())); + budgetVo.setSkuConditions(listMap.get(TbsGoodsType.sku.name())); + budgetVo.setSpuConditions(listMap.get(TbsGoodsType.spu.name())); + LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId()); + List scheduleItemBudgets = tbsScheduleItemBudgetService.list(lqw2); + budgetVo.setScheduleItem(scheduleItemBudgets); + voList.add(budgetVo); + } + return R.byPageHelperList(list,voList); + } + return R.byEmptyList(); } /** @@ -87,6 +121,9 @@ public class TbsBudgetController { @SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.UPDATE) @PreAuthorize("hasRole('tbs:budget:update')") public R updateById(@RequestBody @Valid TbsBudgetBo param){ + if(param.getId()==null){ + return R.error("缺少参数"); + } tbsBudgetService.modify(param); return R.ok(); } @@ -100,6 +137,7 @@ public class TbsBudgetController { @SysLog(module = SystemModule.Budget, title = "预算", biz = BizType.INSERT) @PreAuthorize("hasRole('tbs:budget:insert')") public R save(@RequestBody @Valid TbsBudgetBo param){ + param.setId(null); tbsBudgetService.modify(param); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java index c590f773..98c5c9e5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java @@ -42,6 +42,7 @@ public class TbsScheduleController { private TbsScheduleService tbsScheduleService; private TbsScheduleItemService tbsScheduleItemService; private TbsBudgetService tbsBudgetService; + /** * 列表 * @param param diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index 4c2dbb55..3e89b7ff 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -110,5 +110,6 @@ public class TbsBudget implements Serializable { @JsonProperty private String delFlag; + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java index 8c88a491..f14e801b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java @@ -43,6 +43,7 @@ public class TbsBudgetBo implements Serializable { @NotNull(message = "考核期id不能为空") private Long scheduleId; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java index bb449316..89438007 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java @@ -23,28 +23,26 @@ import javax.validation.constraints.NotBlank; @Data public class TbsBudgetSo implements Serializable { - private static final long serialVersionUID = 1L; + /** 科目编码搜索值 */ + private String subjectValue; - /** id */ - private Long id; + /** 成本中心搜索值 */ + private String centerValue; - /** 科目id */ - private Long subjectId; + /** 品牌搜索值 */ + private String brandValue; - /** 科目编码 */ - private String subjectCode; + /** 品类搜索值 */ + private String categoryValue; - /** 科目名称 */ - private String subjectName; + /** 系列搜索值 */ + private String seriesValue; - /** 成本中心id */ - private Long centerId; + /** sku搜索值 */ + private String skuValue; - /** 成本中心编码 */ - private String centerCode; - - /** 成本中心名称 */ - private String centerName; + /** 商品搜索值 */ + private String spuValue; /** 考核期id */ private Long scheduleId; @@ -55,32 +53,5 @@ public class TbsBudgetSo implements Serializable { /** 考核期名称 */ private String scheduleName; - /** 备注 */ - private String remark; - - /** 创建时间 */ - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; - - /** 最后更新时间 */ - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime updateTime; - - /** 所属租户 */ - @JsonIgnore - @JsonProperty - private String tenantId; - - /** 创建人 */ - private String createBy; - - /** 更新人 */ - private String updateBy; - - /** 逻辑删除标记(0:显示;1:隐藏) */ - @JsonIgnore - @JsonProperty - private String delFlag; - } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java new file mode 100644 index 00000000..aef9fa32 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java @@ -0,0 +1,72 @@ +package com.qs.serve.modules.tbs.entity.vo; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; +import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 预算 实体类 + * @author YenHex + * @since 2022-11-12 + */ +@Data +public class TbsBudgetVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 科目id */ + private Long subjectId; + + /** 科目编码 */ + private String subjectCode; + + /** 科目名称 */ + private String subjectName; + + /** 成本中心id */ + private Long centerId; + + private String centerType; + + /** 成本中心编码 */ + private String centerCode; + + /** 成本中心名称 */ + private String centerName; + + /** 考核期id */ + private Long scheduleId; + + /** 考核期编码 */ + private String scheduleCode; + + /** 考核期名称 */ + private String scheduleName; + + /** 备注 */ + private String remark; + + private List brandConditions; + private List categoryConditions; + private List seriesConditions; + private List skuConditions; + private List spuConditions; + private List scheduleItem; + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java index 8b15b515..42707e54 100644 --- a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java @@ -2,6 +2,10 @@ package com.qs.serve.modules.tbs.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.tbs.entity.TbsBudget; +import com.qs.serve.modules.tbs.entity.so.TbsBudgetSo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 预算 Mapper @@ -10,5 +14,12 @@ import com.qs.serve.modules.tbs.entity.TbsBudget; */ public interface TbsBudgetMapper extends BaseMapper { + /** + * 查询费用id + * @param budgetSo + * @return + */ + List selectBudgetId(@Param("query") TbsBudgetSo budgetSo); + } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetConditionMapper.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetConditionMapper.java deleted file mode 100644 index 8703ddeb..00000000 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetConditionMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.qs.serve.modules.tbs.service; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; - -/** - * 预算条件 Mapper - * @author YenHex - * @date 2022-11-08 - */ -public interface TbsBudgetConditionMapper extends BaseMapper { - -} - diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 29d99b6a..0ad80c00 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -16,18 +16,13 @@ import com.qs.serve.modules.goods.service.GoodsCategoryService; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.tbs.common.TbsGoodsType; -import com.qs.serve.modules.tbs.entity.TbsActivityGoods; -import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; -import com.qs.serve.modules.tbs.entity.TbsSchedule; +import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.TbsActivityGoodsBo; import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo; -import com.qs.serve.modules.tbs.service.TbsBudgetConditionService; -import com.qs.serve.modules.tbs.service.TbsScheduleService; +import com.qs.serve.modules.tbs.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import com.qs.serve.modules.tbs.entity.TbsBudget; -import com.qs.serve.modules.tbs.service.TbsBudgetService; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import java.util.*; @@ -45,13 +40,17 @@ public class TbsBudgetServiceImpl extends ServiceImpl private final BmsSubjectService subjectService; private final BmsCostCenterService costCenterService; + private final TbsScheduleService scheduleService; private final TbsBudgetConditionService budgetConditionService; + private final TbsScheduleItemBudgetService scheduleItemBudgetService; + private final TbsScheduleItemService scheduleItemService; private final GoodsSkuService goodsSkuService; private final GoodsSpuService goodsSpuService; private final GoodsCategoryService goodsCategoryService; + @Override public void modify(TbsBudgetBo budgetBo) { TbsBudget budget; @@ -80,8 +79,19 @@ public class TbsBudgetServiceImpl extends ServiceImpl LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId()); budgetConditionService.remove(lqw); + //删除 费用项 + LambdaQueryWrapper lqw2 = new LambdaQueryWrapper<>(); + lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId()); + scheduleItemBudgetService.remove(lqw2); + }else { this.saveOrUpdate(budget); } + //保存 费用项 + List scheduleItems = scheduleItemService.listByScheduleId(schedule.getId()); + for (TbsScheduleItem scheduleItem : scheduleItems) { + TbsScheduleItemBudget itemBudget = CopierUtil.copy(scheduleItem,new TbsScheduleItemBudget()); + + } //设置条件 List budgetConditions = new ArrayList<>(); if(CollectionUtil.isNotEmpty(budgetBo.getSkuIds())){ @@ -119,9 +129,9 @@ public class TbsBudgetServiceImpl extends ServiceImpl budgetConditions.add(condition); } } - budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getSeriesIds())); - budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getCategoryIds())); - budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getBrandIds())); + budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getSeriesIds(),TbsGoodsType.series.name())); + budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getCategoryIds(),TbsGoodsType.category.name())); + budgetConditions.addAll(buildCategoryCondition(budget.getId(),budgetBo.getBrandIds(),TbsGoodsType.brand.name())); budgetConditionService.saveBatch(budgetConditions); } @@ -131,14 +141,14 @@ public class TbsBudgetServiceImpl extends ServiceImpl * @param categoryIds * @return */ - public List buildCategoryCondition(Long budgetId,List categoryIds){ + public List buildCategoryCondition(Long budgetId,List categoryIds,String targetType){ List budgetConditions = new ArrayList<>(); if(CollectionUtil.isNotEmpty(categoryIds)){ List categoryList = goodsCategoryService.listByIds(categoryIds); for (GoodsCategory category : categoryList) { TbsBudgetCondition condition = new TbsBudgetCondition(); condition.setBudgetId(budgetId); - condition.setTargetType(TbsGoodsType.series.name()); + condition.setTargetType(targetType); condition.setTargetId(category.getId()); condition.setTargetCode(category.getCode()); condition.setTargetName(category.getName()); diff --git a/src/main/resources/mapper/bms/BmsMasterUserMapper.xml b/src/main/resources/mapper/bms/BmsMasterUserMapper.xml index 2883044a..d988f6ea 100644 --- a/src/main/resources/mapper/bms/BmsMasterUserMapper.xml +++ b/src/main/resources/mapper/bms/BmsMasterUserMapper.xml @@ -38,6 +38,13 @@ + + + + + + + bms_master_user.`id`, bms_master_user.`type`, @@ -84,6 +91,7 @@ LEFT JOIN `sys_user` ON `sys_user`.`id` = `bms_master_user`.`user_id` LEFT JOIN `bms_channel` ON `bms_channel`.`id` = `bms_master_user`.`target_id` + and `bms_master_user`.`type` = 'channel' and `sys_user`.`code` LIKE CONCAT('%',#{query.userCode},'%') and `sys_user`.`name` LIKE CONCAT('%',#{query.userName},'%') @@ -109,6 +117,7 @@ LEFT JOIN `bms_channel_point` ON `bms_channel_point`.`id` = `bms_master_user`.`target_id` LEFT JOIN `bms_channel` ON `bms_channel_point`.`channel_id` = `bms_channel`.`id` + and `bms_master_user`.`type` = 'point' and `sys_user`.`code` LIKE CONCAT('%',#{query.userCode},'%') and `sys_user`.`name` LIKE CONCAT('%',#{query.userName},'%') @@ -123,4 +132,23 @@ + + diff --git a/src/main/resources/mapper/bms/GoodsSpuMapper.xml b/src/main/resources/mapper/bms/GoodsSpuMapper.xml index 71dea681..701411c3 100644 --- a/src/main/resources/mapper/bms/GoodsSpuMapper.xml +++ b/src/main/resources/mapper/bms/GoodsSpuMapper.xml @@ -78,6 +78,8 @@ and `goods_spu`.`update_by` = #{query.updateBy} and `goods_spu`.`tenant_id` = #{query.tenantId} and `goods_spu`.`del_flag` = #{query.delFlag} + + and (`goods_spu`.`name` like concat('%',#{query.searchValue},'%') or `goods_spu`.`goods_spu` like concat('%',#{query.searchValue},'%')) diff --git a/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml index 60dedea7..51177d16 100644 --- a/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml +++ b/src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml @@ -45,7 +45,7 @@ FROM `tbs_budget_condition` `tbs_budget_condition` and `tbs_budget_condition`.`id` = #{query.id} - and `tbs_budget_condition`.`budgt_id` = #{query.budgtId} + and `tbs_budget_condition`.`budgt_id` = #{query.budgtId} and `tbs_budget_condition`.`target_type` = #{query.targetType} and `tbs_budget_condition`.`target_id` = #{query.targetId} and `tbs_budget_condition`.`target_code` = #{query.targetCode} diff --git a/src/main/resources/mapper/tbs/TbsBudgetMapper.xml b/src/main/resources/mapper/tbs/TbsBudgetMapper.xml new file mode 100644 index 00000000..9faa72d6 --- /dev/null +++ b/src/main/resources/mapper/tbs/TbsBudgetMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + tbs_budget.`id`, + tbs_budget.`subject_id`, + tbs_budget.`subject_code`, + tbs_budget.`subject_name`, + tbs_budget.`center_type`, + tbs_budget.`center_id`, + tbs_budget.`center_code`, + tbs_budget.`center_name`, + tbs_budget.`schedule_id`, + tbs_budget.`schedule_code`, + tbs_budget.`schedule_name`, + tbs_budget.`remark`, + tbs_budget.`create_time`, + tbs_budget.`update_time`, + tbs_budget.`tenant_id`, + tbs_budget.`create_by`, + tbs_budget.`update_by`, + tbs_budget.`del_flag` + + + + + +