Browse Source

预算

mssql
Yen 3 years ago
parent
commit
b3df55fbb2
  1. 2
      src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java
  2. 87
      src/main/java/com/qs/serve/modules/bms/controller/BmsCostCenterController.java
  3. 29
      src/main/java/com/qs/serve/modules/bms/controller/BmsMasterUserController.java
  4. 82
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  5. 84
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  6. 4
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  7. 5
      src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java
  8. 2
      src/main/java/com/qs/serve/modules/bms/entity/BmsMasterUser.java
  9. 6
      src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java
  10. 5
      src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java
  11. 6
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  12. 21
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsMasterUserCenterVo.java
  13. 8
      src/main/java/com/qs/serve/modules/bms/mapper/BmsMasterUserMapper.java
  14. 17
      src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java
  15. 17
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  16. 4
      src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java
  17. 6
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  18. 1
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java
  19. 61
      src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java
  20. 14
      src/main/java/com/qs/serve/modules/his/mapper/HisUserSupplierMapper.java
  21. 29
      src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java
  22. 130
      src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java
  23. 60
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  24. 1
      src/main/java/com/qs/serve/modules/tbs/controller/TbsScheduleController.java
  25. 1
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  26. 1
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsBudgetBo.java
  27. 57
      src/main/java/com/qs/serve/modules/tbs/entity/so/TbsBudgetSo.java
  28. 72
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetVo.java
  29. 11
      src/main/java/com/qs/serve/modules/tbs/mapper/TbsBudgetMapper.java
  30. 14
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetConditionMapper.java
  31. 34
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java
  32. 28
      src/main/resources/mapper/bms/BmsMasterUserMapper.xml
  33. 2
      src/main/resources/mapper/bms/GoodsSpuMapper.xml
  34. 2
      src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml
  35. 147
      src/main/resources/mapper/tbs/TbsBudgetMapper.xml

2
src/main/java/com/qs/serve/modules/bms/common/MasterUserType.java

@ -10,4 +10,6 @@ public interface MasterUserType {
String Point = "point";
String Center = "center";
}

87
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<List<BmsCostCenterTreeVo>> getTree(){
public R<List<BmsCostCenterTreeVo>> getTree(Integer loadByCurrent){
if(loadByCurrent!=null&&loadByCurrent.equals(1)){
return getTreeByCurrentUser();
}
List<BmsCostCenter> list = bmsCostCenterService.list();
List<BmsCostCenterTreeVo> 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<List<BmsCostCenterTreeVo>> getTreeByCurrentUser(){
String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsMasterUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsMasterUser::getUserId,userId);
lqw.eq(BmsMasterUser::getType, MasterUserType.Center);
List<BmsMasterUser> masterUsers = bmsMasterUserService.list(lqw);
List<String> centerIds = masterUsers.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList());
if(centerIds.size()>0){
List<BmsCostCenter> costCenters = bmsCostCenterService.listByIds(centerIds);
Map<Integer,List<BmsCostCenter>> listMap = costCenters.stream().collect(Collectors.groupingBy(BmsCostCenter::getLevel));
List<BmsCostCenter> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1);
List<BmsCostCenter> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsCostCenter> 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<BmsCostCenter> 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<BmsCostCenter> childList = obj1.getChildNode()==null?new ArrayList<>():obj1.getChildNode();
childList.add(obj2);
obj1.setChildNode(childList);
exist = true;
break;
}
}
if(!exist){
list1.add(obj2);
}
});
List<BmsCostCenterTreeVo> treeVoList = toTreeNode(list1);
return R.ok(treeVoList);
}
return R.ok();
}
private List<BmsCostCenterTreeVo> toTreeNode(List<BmsCostCenter> list){
List<BmsCostCenterTreeVo> 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<BmsCostCenterTreeVo> childList = toTreeNode(costCenter.getChildNode());
for (BmsCostCenterTreeVo treeVo : childList) {
treeNode.addChildren(treeVo);
}
}
treeVoList.add(treeNode);
}
return treeVoList;
}
/**
* 根据ID查询
* @param id

29
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<List<BmsMasterUserChannelVo>> getList(BmsMasterUserChannelVo userChannel){
PageUtil.startPage();
List<BmsMasterUserChannelVo> list = bmsMasterUserMapper.selectChannelMasterUserList(userChannel);
@ -70,7 +70,6 @@ public class BmsMasterUserController {
* @return
*/
@GetMapping("/page4Channel")
@PreAuthorize("hasRole('bms:masterUser:query')")
public R<PageVo<BmsMasterUserChannelVo>> getPage(BmsMasterUserChannelVo userChannel){
PageUtil.startPage();
List<BmsMasterUserChannelVo> list = bmsMasterUserMapper.selectChannelMasterUserList(userChannel);
@ -83,7 +82,6 @@ public class BmsMasterUserController {
* @return
*/
@GetMapping("/list4Point")
@PreAuthorize("hasRole('bms:masterUser:query')")
public R<List<BmsMasterUserPointVo>> list4Point(BmsMasterUserPointVo param){
PageUtil.startPage();
List<BmsMasterUserPointVo> list = bmsMasterUserMapper.selectPointMasterUserList(param);
@ -96,13 +94,36 @@ public class BmsMasterUserController {
* @return
*/
@GetMapping("/page4Point")
@PreAuthorize("hasRole('bms:masterUser:query')")
public R<PageVo<BmsMasterUserPointVo>> page4Point(BmsMasterUserPointVo param){
PageUtil.startPage();
List<BmsMasterUserPointVo> list = bmsMasterUserMapper.selectPointMasterUserList(param);
return R.byPageHelperList(list);
}
/**
* 负责人列表(成本中心)
* @param param
* @return
*/
@GetMapping("/list4center")
public R<List<BmsMasterUserCenterVo>> list4center(BmsMasterUser param){
PageUtil.startPage();
List<BmsMasterUserCenterVo> list = bmsMasterUserMapper.selectCenterMasterUserList(param);
return R.ok(list);
}
/**
* 负责人翻页(成本中心)
* @param param
* @return
*/
@GetMapping("/page4center")
public R<PageVo<BmsMasterUserCenterVo>> page4center(BmsMasterUser param){
PageUtil.startPage();
List<BmsMasterUserCenterVo> list = bmsMasterUserMapper.selectCenterMasterUserList(param);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id

82
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<BmsRegionTreeVo> treeByCurrentUser(){
String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegionUser::getType,0);
lqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw);
List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList());
if(regionIds.size()>0){
List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds);
Map<Integer,List<BmsRegion2>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel));
List<BmsRegion2> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1);
List<BmsRegion2> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsRegion2> 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<BmsRegion2> 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<BmsRegion2> 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<List<BmsRegionTreeVo>> getTree(Integer listUserFlag){
public R<List<BmsRegionTreeVo>> 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<BmsRegionTreeVo> toTreeNodeList(List<BmsRegion2> list){
List<BmsRegionTreeVo> 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<BmsRegionTreeVo> childList = toTreeNodeList(region2.getChildNodes());
for (BmsRegionTreeVo treeVo : childList) {
treeNode.addChildren(treeVo);
}
}
treeVoList.add(treeNode);
}
return treeVoList;
}
/**
* 根据ID查询
* @param id

84
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<List<BmsRegionTreeVo>> getTree(Integer listUserFlag){
public R<List<BmsRegionTreeVo>> 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<BmsRegionTreeVo> treeByCurrentUser(){
String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegionUser::getType,0);
lqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw);
List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList());
if(regionIds.size()>0){
List<BmsRegion> regionList = bmsRegionService.listByIds(regionIds);
Map<Integer,List<BmsRegion>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion::getLevel));
List<BmsRegion> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1);
List<BmsRegion> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsRegion> 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<BmsRegion> 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<BmsRegion> 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<BmsRegionTreeVo> toTreeNodeList(List<BmsRegion> list){
List<BmsRegionTreeVo> 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<BmsRegionTreeVo> childList = toTreeNodeList(region.getChildNodes());
for (BmsRegionTreeVo treeVo : childList) {
treeNode.addChildren(treeVo);
}
}
treeVoList.add(treeNode);
}
return treeVoList;
}
/**
* 根据ID查询
* @param id

4
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<PageVo<BmsSupplier>> getPage(BmsSupplier param){
PageUtil.startPage();
// LambdaQueryWrapper<BmsSupplier> supplierWrapper = new LambdaQueryWrapper<>(param);
// if(CollectionUtil.isNotEmpty(param.getRegionIds())){
// supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds());
// }
List<BmsSupplier> list = bmsSupplierService.selectSupplierList(param);
initSupplierList(list);
initParentList(list);

5
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<BmsCostCenter> childNode;
}

2
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;

6
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<BmsRegion> childNodes;
}

5
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<BmsRegion2> childNodes;
}

6
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;
}

21
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;
}

8
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<BmsMasterUser> {
*/
List<BmsMasterUserPointVo> selectPointMasterUserList(@Param("query") BmsMasterUserPointVo userChannel);
/**
* 查询成本中心负责人
* @param userChannel
* @return
*/
List<BmsMasterUserCenterVo> selectCenterMasterUserList(@Param("query") BmsMasterUser userChannel);
}

17
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<List<GoodsCategoryTreeVo>> getTree(GoodsCategory param){
final boolean loadSpuData = param.getLoadSpuData()!=null&&param.getLoadSpuData().equals(1);
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>(param);
List<GoodsCategory> list = goodsCategoryService.list(lqw);
List<GoodsCategoryTreeVo> 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<GoodsSpu> spuLqw = new LambdaQueryWrapper<>();
spuLqw.eq(GoodsSpu::getCategoryThird,cate.getId());
List<GoodsSpu> 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);

17
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<List<GoodsSpu>> getList(GoodsSpu param){
List<GoodsSpu> spuList = goodsSpuService.selectSpuList(param);
return R.ok(spuList);
}
/**
* 翻页搜索
* @param param
@ -57,6 +69,11 @@ public class GoodsSpuController {
public R<PageVo<GoodsSpu>> getPage(GoodsSpu param){
PageUtil.startPage();
List<GoodsSpu> list = goodsSpuService.selectSpuList(param);
for (GoodsSpu goodsSpu : list) {
LambdaQueryWrapper<GoodsSku> lqw = new LambdaQueryWrapper<>();
lqw.eq(GoodsSku::getSpuId,goodsSpu.getId());
goodsSkuService.list(lqw);
}
return R.byPageHelperList(list);
}

4
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;
}

6
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;
}

1
src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java

@ -48,4 +48,5 @@ public class GoodsCategoryTreeVo extends TreeNode {
/** 等级 */
private Integer level;
}

61
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;
}

14
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<HisUserSupplier> {
}

29
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<HisUserSupplier> {
/**
* 初始化
* @param userId
* @return
*/
boolean initByUserId(String userId);
/**
* 删除
* @return
*/
void cleanTable();
}

130
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<HisUserSupplierMapper,HisUserSupplier> implements HisUserSupplierService {
private BmsSupplierService bmsSupplierService;
private BmsRegionService saleRegionService;
private BmsRegion2Service bizRegionService;
private BmsRegionUserService regionUserService;
@Override
public boolean initByUserId(String userId) {
LambdaQueryWrapper<HisUserSupplier> 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<BmsSupplier> list = bmsSupplierService.selectSupplierList(param);
List<HisUserSupplier> 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<BmsRegionUser> regionUserLqw = new LambdaQueryWrapper<>();
regionUserLqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = regionUserService.list(regionUserLqw);
List<String> regionSaleIds = regionUsers.stream()
.filter(a->a.getType().equals(0))
.map(BmsRegionUser::getRegionId)
.collect(Collectors.toList());
if(regionSaleIds.size()>0){
List<BmsRegion> saleRegions = saleRegionService.listByIds(regionSaleIds);
Map<Integer,List<BmsRegion>> saleRegionsMap = saleRegions.stream().collect(Collectors.groupingBy(BmsRegion::getLevel));
List<String> regionIds01 = saleRegionsMap.get(1).stream().map(BmsRegion::getId).collect(Collectors.toList());
List<String> regionIds02 = saleRegionsMap.get(2).stream().map(BmsRegion::getId).collect(Collectors.toList());
List<String> 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<String> regionBizIds = regionUsers.stream()
.filter(a->a.getType().equals(1))
.map(BmsRegionUser::getRegionId)
.collect(Collectors.toList());
if(regionBizIds.size()>0){
List<BmsRegion2> bizRegions = bizRegionService.listByIds(regionBizIds);
Map<Integer,List<BmsRegion2>> saleRegionsMap = bizRegions.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel));
List<String> regionIds01 = saleRegionsMap.get(1).stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<String> regionIds02 = saleRegionsMap.get(2).stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<String> 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<HisUserSupplier> userSuppliers,List<String> regionIds,Integer level,String userId){
if(regionIds.size()>0){
LambdaQueryWrapper<BmsSupplier> 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<BmsSupplier> 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<>());
}
}

60
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<List<TbsBudget>> getList(TbsBudgetSo param){
TbsBudget entity = CopierUtil.copy(param,new TbsBudget());
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>(entity);
PageUtil.startPage();
List<TbsBudget> list = tbsBudgetService.list(lqw);
return R.ok(list);
List<Long> budgetIds = tbsBudgetMapper.selectBudgetId(param);
if(budgetIds.size()>0){
List<TbsBudget> 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<PageVo<TbsBudget>> getPage(TbsBudgetSo param){
TbsBudget entity = CopierUtil.copy(param,new TbsBudget());
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>(entity);
PageUtil.startPage();
List<TbsBudget> list = tbsBudgetService.list(lqw);
return R.byPageHelperList(list);
public R<PageVo<TbsBudgetVo>> getPage(TbsBudgetSo param){
List<Long> budgetIds = tbsBudgetMapper.selectBudgetId(param);
if(budgetIds.size()>0){
PageUtil.startPage();
List<TbsBudget> list = tbsBudgetService.listByIds(budgetIds);
List<TbsBudgetVo> voList = new ArrayList<>();
for (TbsBudget budget : list) {
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
List<TbsBudgetCondition> budgetConditions = tbsBudgetConditionService.list(lqw);
Map<String,List<TbsBudgetCondition>> 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<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId());
List<TbsScheduleItemBudget> 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();
}

1
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

1
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java

@ -110,5 +110,6 @@ public class TbsBudget implements Serializable {
@JsonProperty
private String delFlag;
}

1
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;

57
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;
}

72
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;
}

11
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<TbsBudget> {
/**
* 查询费用id
* @param budgetSo
* @return
*/
List<Long> selectBudgetId(@Param("query") TbsBudgetSo budgetSo);
}

14
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetConditionMapper.java

@ -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<TbsBudgetCondition> {
}

34
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<TbsBudgetMapper,TbsBudget>
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<TbsBudgetMapper,TbsBudget>
LambdaQueryWrapper<TbsBudgetCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsBudgetCondition::getBudgetId,budget.getId());
budgetConditionService.remove(lqw);
//删除 费用项
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>();
lqw2.eq(TbsScheduleItemBudget::getBudgetId,budget.getId());
scheduleItemBudgetService.remove(lqw2);
}else {
this.saveOrUpdate(budget);
}
//保存 费用项
List<TbsScheduleItem> scheduleItems = scheduleItemService.listByScheduleId(schedule.getId());
for (TbsScheduleItem scheduleItem : scheduleItems) {
TbsScheduleItemBudget itemBudget = CopierUtil.copy(scheduleItem,new TbsScheduleItemBudget());
}
//设置条件
List<TbsBudgetCondition> budgetConditions = new ArrayList<>();
if(CollectionUtil.isNotEmpty(budgetBo.getSkuIds())){
@ -119,9 +129,9 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget>
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<TbsBudgetMapper,TbsBudget>
* @param categoryIds
* @return
*/
public List<TbsBudgetCondition> buildCategoryCondition(Long budgetId,List<Long> categoryIds){
public List<TbsBudgetCondition> buildCategoryCondition(Long budgetId,List<Long> categoryIds,String targetType){
List<TbsBudgetCondition> budgetConditions = new ArrayList<>();
if(CollectionUtil.isNotEmpty(categoryIds)){
List<GoodsCategory> 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());

28
src/main/resources/mapper/bms/BmsMasterUserMapper.xml

@ -38,6 +38,13 @@
<result property="pointCode" column="point_code"/>
</resultMap>
<resultMap id="bmsMasterUserCenterMap" type="com.qs.serve.modules.bms.entity.vo.BmsMasterUserCenterVo" extends="bmsMasterUserChannelMap">
<result property="userCode" column="user_code"/>
<result property="userName" column="user_name"/>
<result property="centerName" column="center_name"/>
<result property="centerCode" column="center_code"/>
</resultMap>
<sql id="bmsMasterUserSql">
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`
<where>
and `bms_master_user`.`type` = 'channel'
<include refid="whereMasterUserBaseCondition"></include>
<if test="query.userCode != null and query.userCode != ''"> and `sys_user`.`code` LIKE CONCAT('%',#{query.userCode},'%') </if>
<if test="query.userName != null and query.userName != ''"> and `sys_user`.`name` LIKE CONCAT('%',#{query.userName},'%') </if>
@ -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`
<where>
and `bms_master_user`.`type` = 'point'
<include refid="whereMasterUserBaseCondition"></include>
<if test="query.userCode != null and query.userCode != ''"> and `sys_user`.`code` LIKE CONCAT('%',#{query.userCode},'%') </if>
<if test="query.userName != null and query.userName != ''"> and `sys_user`.`name` LIKE CONCAT('%',#{query.userName},'%') </if>
@ -123,4 +132,23 @@
</where>
</select>
<select id="selectCenterMasterUserList" resultType="com.qs.serve.modules.bms.entity.vo.BmsMasterUserCenterVo" resultMap="bmsMasterUserCenterMap">
SELECT
`sys_user`.`code` user_code,
`sys_user`.`name` user_name,
`bms_cost_center`.`name` center_name,
`bms_cost_center`.`code` center_code,
<include refid="bmsMasterUserSql"/>
FROM `bms_master_user` `bms_master_user`
LEFT JOIN `sys_user` ON `sys_user`.`id` = `bms_master_user`.`user_id`
LEFT JOIN `bms_cost_center` ON `bms_cost_center`.`id` = `bms_master_user`.`target_id`
<where>
and `bms_master_user`.`type` = 'center'
<include refid="whereMasterUserBaseCondition"></include>
and `bms_master_user`.`del_flag` = '0'
and `sys_user`.`del_flag` = '0'
and `bms_cost_center`.`del_flag` = '0'
</where>
</select>
</mapper>

2
src/main/resources/mapper/bms/GoodsSpuMapper.xml

@ -78,6 +78,8 @@
<if test="query.updateBy != null and query.updateBy != ''"> and `goods_spu`.`update_by` = #{query.updateBy}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `goods_spu`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `goods_spu`.`del_flag` = #{query.delFlag}</if>
<if test="query.searchValue != null and query.searchValue != ''"> and (`goods_spu`.`name` like concat('%',#{query.searchValue},'%') or `goods_spu`.`goods_spu` like concat('%',#{query.searchValue},'%')) </if>
</where>
</select>

2
src/main/resources/mapper/tbs/TbsBudgetConditionMapper.xml

@ -45,7 +45,7 @@
FROM `tbs_budget_condition` `tbs_budget_condition`
<where>
<if test="query.id != null"> and `tbs_budget_condition`.`id` = #{query.id}</if>
<if test="query.budgtId != null"> and `tbs_budget_condition`.`budgt_id` = #{query.budgtId}</if>
<if test="query.budgetId != null"> and `tbs_budget_condition`.`budgt_id` = #{query.budgtId}</if>
<if test="query.targetType != null and query.targetType != ''"> and `tbs_budget_condition`.`target_type` = #{query.targetType}</if>
<if test="query.targetId != null"> and `tbs_budget_condition`.`target_id` = #{query.targetId}</if>
<if test="query.targetCode != null and query.targetCode != ''"> and `tbs_budget_condition`.`target_code` = #{query.targetCode}</if>

147
src/main/resources/mapper/tbs/TbsBudgetMapper.xml

@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.tbs.mapper.TbsBudgetMapper">
<resultMap id="tbsBudgetMap" type="com.qs.serve.modules.tbs.entity.TbsBudget" >
<result property="id" column="id"/>
<result property="subjectId" column="subject_id"/>
<result property="subjectCode" column="subject_code"/>
<result property="subjectName" column="subject_name"/>
<result property="centerType" column="center_type"/>
<result property="centerId" column="center_id"/>
<result property="centerCode" column="center_code"/>
<result property="centerName" column="center_name"/>
<result property="scheduleId" column="schedule_id"/>
<result property="scheduleCode" column="schedule_code"/>
<result property="scheduleName" column="schedule_name"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="tbsBudgetSql">
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` </sql>
<select id="selectTbsBudgetList" parameterType="com.qs.serve.modules.tbs.entity.TbsBudget" resultMap="tbsBudgetMap">
SELECT <include refid="tbsBudgetSql"/> FROM `tbs_budget` `tbs_budget`
<where>
<if test="query.id != null"> and `tbs_budget`.`id` = #{query.id}</if>
<if test="query.subjectId != null"> and `tbs_budget`.`subject_id` = #{query.subjectId}</if>
<if test="query.subjectCode != null and query.subjectCode != ''"> and `tbs_budget`.`subject_code` = #{query.subjectCode}</if>
<if test="query.subjectName != null and query.subjectName != ''"> and `tbs_budget`.`subject_name` = #{query.subjectName}</if>
<if test="query.centerId != null"> and `tbs_budget`.`center_id` = #{query.centerId}</if>
<if test="query.centerCode != null and query.centerCode != ''"> and `tbs_budget`.`center_code` = #{query.centerCode}</if>
<if test="query.centerName != null and query.centerName != ''"> and `tbs_budget`.`center_name` = #{query.centerName}</if>
<if test="query.scheduleId != null"> and `tbs_budget`.`schedule_id` = #{query.scheduleId}</if>
<if test="query.scheduleCode != null and query.scheduleCode != ''"> and `tbs_budget`.`schedule_code` = #{query.scheduleCode}</if>
<if test="query.scheduleName != null and query.scheduleName != ''"> and `tbs_budget`.`schedule_name` = #{query.scheduleName}</if>
<if test="query.remark != null and query.remark != ''"> and `tbs_budget`.`remark` = #{query.remark}</if>
<if test="query.createTime != null"> and `tbs_budget`.`create_time` = #{query.createTime}</if>
<if test="query.updateTime != null"> and `tbs_budget`.`update_time` = #{query.updateTime}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `tbs_budget`.`tenant_id` = #{query.tenantId}</if>
<if test="query.createBy != null and query.createBy != ''"> and `tbs_budget`.`create_by` = #{query.createBy}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `tbs_budget`.`update_by` = #{query.updateBy}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `tbs_budget`.`del_flag` = #{query.delFlag}</if>
</where>
</select>
<select id="selectBudgetId" resultType="java.lang.Long">
SELECT `tbs_budget`.`id`
FROM `tbs_budget` `tbs_budget`
LEFT JOIN `tbs_budget_condition` `tbs_budget_condition` ON `tbs_budget`.`id` = `tbs_budget_condition`.`budget_id`
<where>
<if test="query.subjectValue != null and query.subjectValue != ''">
and (
`tbs_budget`.`subject_code` like concat('%',#{query.subjectValue},'%')
or
`tbs_budget`.`subject_name` like concat('%',#{query.subjectValue},'%')
)
</if>
<if test="query.centerValue != null and query.centerValue != ''">
and (
`tbs_budget`.`center_code` like concat('%',#{query.centerValue},'%')
or
`tbs_budget`.`center_name` like concat('%',#{query.centerValue},'%')
)
</if>
<if test="query.scheduleId != null"> and `tbs_budget`.`schedule_id` = #{query.scheduleId}</if>
<if test="query.scheduleCode != null and query.scheduleCode != ''"> and `tbs_budget`.`schedule_code` = #{query.scheduleCode}</if>
<if test="query.scheduleName != null and query.scheduleName != ''"> and `tbs_budget`.`schedule_name` = #{query.scheduleName}</if>
<if test="query.brandValue != null and query.brandValue != ''">
and (
`tbs_budget_condition`.`target_type` = 'brand'
and (
`tbs_budget_condition`.`target_name` like concat('%',#{query.brandValue},'%')
or
`tbs_budget_condition`.`target_code` like concat('%',#{query.brandValue},'%')
)
)
</if>
<if test="query.categoryValue != null and query.categoryValue != ''">
and (
`tbs_budget_condition`.`target_type` = 'category'
and (
`tbs_budget_condition`.`target_name` like concat('%',#{query.categoryValue},'%')
or
`tbs_budget_condition`.`target_code` like concat('%',#{query.categoryValue},'%')
)
)
</if>
<if test="query.seriesValue != null and query.seriesValue != ''">
and (
`tbs_budget_condition`.`target_type` = 'series'
and (
`tbs_budget_condition`.`target_name` like concat('%',#{query.seriesValue},'%')
or
`tbs_budget_condition`.`target_code` like concat('%',#{query.seriesValue},'%')
)
)
</if>
<if test="query.skuValue != null and query.skuValue != ''">
and (
`tbs_budget_condition`.`target_type` = 'sku'
and (
`tbs_budget_condition`.`target_name` like concat('%',#{query.skuValue},'%')
or
`tbs_budget_condition`.`target_code` like concat('%',#{query.skuValue},'%')
)
)
</if>
<if test="query.spuValue != null and query.spuValue != ''">
and (
`tbs_budget_condition`.`target_type` = 'spu'
and (
`tbs_budget_condition`.`target_name` like concat('%',#{query.spuValue},'%')
or
`tbs_budget_condition`.`target_code` like concat('%',#{query.spuValue},'%')
)
)
</if>
</where>
GROUP BY `tbs_budget`.`id`
</select>
</mapper>
Loading…
Cancel
Save