From 6b4f6691234acd3d678906c79db2c1bdb316bef7 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 9 Mar 2023 10:19:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A7=91=E7=9B=AE=E9=80=82?= =?UTF-8?q?=E7=94=A8=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bms/controller/BmsSubjectController.java | 67 ++++++++++--- .../serve/modules/bms/entity/BmsSubject.java | 23 ++++- .../modules/bms/entity/BmsSubjectRegion.java | 96 +++++++++++++++++++ .../bms/mapper/BmsSubjectRegionMapper.java | 14 +++ .../bms/service/BmsSubjectRegionService.java | 29 ++++++ .../impl/BmsSubjectRegionServiceImpl.java | 41 ++++++++ .../impl/BmsSupplierApplicationService.java | 18 ++++ 7 files changed, 275 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectRegion.java create mode 100644 src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectRegionMapper.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java create mode 100644 src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java index 6b44f75e..67148782 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java @@ -6,17 +6,17 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.TreeUtil; -import com.qs.serve.modules.bms.entity.BmsCostCenter; -import com.qs.serve.modules.bms.entity.BmsSubjectForm; +import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo; import com.qs.serve.modules.bms.mapper.BmsSubjectMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; -import com.qs.serve.modules.bms.service.BmsSubjectFormService; +import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.tbs.entity.TbsActivitySubject; import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import lombok.AllArgsConstructor; @@ -25,10 +25,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import com.qs.serve.modules.bms.entity.BmsSubject; -import com.qs.serve.modules.bms.service.BmsSubjectService; - import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -47,6 +45,9 @@ public class BmsSubjectController { private BmsSubjectMapper bmsSubjectMapper; private TbsActivitySubjectService activitySubjectService; private BmsSubjectFormService bmsSubjectFormService; + private BmsSubjectRegionService bmsSubjectRegionService; + private BmsRegionService bmsRegionService; + private BmsRegion2Service bmsRegion2Service; /** * 树查询 @@ -88,6 +89,14 @@ public class BmsSubjectController { BmsSubjectForm subjectForm = bmsSubjectFormService.getById(bmsSubject.getFormId()); bmsSubject.setSubjectFormInfo(subjectForm); } + if(bmsSubject.getSaleRegionFlag().equals(1)){ + List subjectRegionList = bmsSubjectRegionService.listBySubjectId(bmsSubject.getId(),0); + bmsSubject.setSaleRegionInfos(subjectRegionList); + } + if(bmsSubject.getBizRegionFlag().equals(1)){ + List subjectRegionList = bmsSubjectRegionService.listBySubjectId(bmsSubject.getId(),1); + bmsSubject.setBizRegionInfos(subjectRegionList); + } return R.ok(bmsSubject); } @@ -100,6 +109,9 @@ public class BmsSubjectController { @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.UPDATE) @PreAuthorize("hasRole('bms:subject:update')") public R updateById(@RequestBody @Valid BmsSubject param){ + if(param.getId()==null){ + return R.error("资源不存在或被移除"); + } commonEdit(param); return R.ok(); } @@ -113,6 +125,7 @@ public class BmsSubjectController { @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.INSERT) @PreAuthorize("hasRole('bms:subject:insert')") public R save(@RequestBody @Valid BmsSubject param){ + param.setId(null); commonEdit(param); return R.ok(); } @@ -120,25 +133,55 @@ public class BmsSubjectController { @Transactional(rollbackFor = Exception.class) public void commonEdit(BmsSubject subject){ - if(subject.getId()==null){ - bmsSubjectService.save(subject); - } if(subject.getPid()==null||subject.getPid().equals(0L)){ subject.setPid(0L); subject.setLevel(1); subject.setPathNames(subject.getSubjectName()); - bmsSubjectService.updateById(subject); }else { BmsSubject parent = bmsSubjectService.getById(subject.getPid()); - //todo 判断父级节点是否存有已存数据 - BmsSubject ori = bmsSubjectService.getById(subject.getId()); subject.setLevel(parent.getLevel()+1); subject.setPathNames(parent.getPathNames()+"_"+subject.getSubjectName()); + } + if(subject.getId()==null){ + bmsSubjectService.save(subject); + }else { + //异常历史的适用区域 + bmsSubjectRegionService.removeBySubjectId(subject.getId(),0); + bmsSubjectRegionService.removeBySubjectId(subject.getId(),1); + BmsSubject ori = bmsSubjectService.getById(subject.getId()); bmsSubjectService.updateById(subject); if(!subject.getSubjectName().equals(ori.getSubjectName())) { bmsSubjectService.updatePathNameByParent(subject); } } + if(subject.getSaleRegionFlag().equals(1)){ + List saleRegionList = bmsRegionService.listByIds(subject.getSaleRegionIds()); + List subjectRegionList = saleRegionList.stream().map(region->{ + BmsSubjectRegion subjectRegion = new BmsSubjectRegion(); + subjectRegion.setSubjectId(subject.getId()); + subjectRegion.setRegionId(region.getId()); + subjectRegion.setRegionName(region.getName()); + subjectRegion.setType(0); + return subjectRegion; + }).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(subjectRegionList)){ + bmsSubjectRegionService.saveBatch(subjectRegionList); + } + } + if(subject.getBizRegionFlag().equals(1)){ + List bizRegionList = bmsRegion2Service.listByIds(subject.getBizRegionIds()); + List subjectRegionList = bizRegionList.stream().map(region->{ + BmsSubjectRegion subjectRegion = new BmsSubjectRegion(); + subjectRegion.setSubjectId(subject.getId()); + subjectRegion.setRegionId(region.getId()); + subjectRegion.setRegionName(region.getName()); + subjectRegion.setType(1); + return subjectRegion; + }).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(subjectRegionList)){ + bmsSubjectRegionService.saveBatch(subjectRegionList); + } + } if(subject.getFormId()==null){ bmsSubjectMapper.removeFormId(subject.getId()); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java index 3d49df87..7f01cd3d 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java @@ -13,7 +13,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import javax.validation.constraints.NotBlank; - +import java.util.List; /** * 科目 实体类 * @author YenHex @@ -47,6 +47,12 @@ public class BmsSubject implements Serializable { @NotNull(message = "父级id不能为空") private Long pid; + /** 销售区域:0全部可见;1-部分可见;2-全部不可见 */ + private Integer saleRegionFlag; + + /** 行政区域:0全部可见;1-部分可见;2-全部不可见 */ + private Integer bizRegionFlag; + @TableField(exist = false) private String parName; @@ -92,5 +98,20 @@ public class BmsSubject implements Serializable { @TableField(exist = false) private Object subjectFormInfo; + /** 销售区域id */ + @TableField(exist = false) + private List saleRegionIds; + + /** 行政区域id */ + @TableField(exist = false) + private List bizRegionIds; + + /** 销售区域 */ + @TableField(exist = false) + private List saleRegionInfos; + + /** 行政区域 */ + @TableField(exist = false) + private List bizRegionInfos; } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectRegion.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectRegion.java new file mode 100644 index 00000000..97c5912f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectRegion.java @@ -0,0 +1,96 @@ +package com.qs.serve.modules.bms.entity; + +import java.io.Serializable; +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 2023-03-09 + */ +@Data +@TableName("bms_subject_region") +public class BmsSubjectRegion implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 类型:0=销售区域;1=行政区域 */ + @NotNull(message = "类型:0=销售区域;1=行政区域不能为空") + private Integer type; + + /** 区域id */ + @NotBlank(message = "区域id不能为空") + @Length(max = 32,message = "区域id长度不能超过32字") + private String regionId; + + /** 区域 */ + private String regionName; + + /** 客户id */ + @NotBlank(message = "客户id不能为空") + @Length(max = 32,message = "客户id长度不能超过32字") + private Long subjectId; + + /** 创建时间 */ + @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; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 租户id */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 删除标识 */ + @JsonIgnore + @JsonProperty + private Boolean delFlag; + + + public static BmsSubjectRegion toNewObject(BmsSubjectRegion source){ + BmsSubjectRegion subjectRegion = new BmsSubjectRegion(); + subjectRegion.setId(source.getId()); + subjectRegion.setType(source.getType()); + subjectRegion.setRegionId(source.getRegionId()); + subjectRegion.setSubjectId(source.getSubjectId()); + subjectRegion.setCreateTime(source.getCreateTime()); + subjectRegion.setCreateBy(source.getCreateBy()); + subjectRegion.setUpdateTime(source.getUpdateTime()); + subjectRegion.setUpdateBy(source.getUpdateBy()); + subjectRegion.setTenantId(source.getTenantId()); + subjectRegion.setDelFlag(source.getDelFlag()); + return subjectRegion; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectRegionMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectRegionMapper.java new file mode 100644 index 00000000..ab62e654 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectRegionMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.bms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.bms.entity.BmsSubjectRegion; + +/** + * 客户适用区域 Mapper + * @author YenHex + * @date 2023-03-09 + */ +public interface BmsSubjectRegionMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java new file mode 100644 index 00000000..34d066a2 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java @@ -0,0 +1,29 @@ +package com.qs.serve.modules.bms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.bms.entity.BmsSubjectRegion; +import java.util.List; +/** + * 客户适用区域 服务接口 + * @author YenHex + * @date 2023-03-09 + */ +public interface BmsSubjectRegionService extends IService { + + /** + * 移除适用区域 + * @param subjectId + * @param regionType 类型:0=销售区域;1=行政区域 + */ + void removeBySubjectId(Long subjectId,Integer regionType); + + /** + * 获取适用区域 + * @param subjectId + * @param regionType 类型:0=销售区域;1=行政区域 + * @return + */ + List listBySubjectId(Long subjectId,Integer regionType); + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java new file mode 100644 index 00000000..41f13eb9 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java @@ -0,0 +1,41 @@ +package com.qs.serve.modules.bms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.bms.entity.BmsSubjectRegion; +import com.qs.serve.modules.bms.service.BmsSubjectRegionService; +import com.qs.serve.modules.bms.mapper.BmsSubjectRegionMapper; + +import java.util.List; + +/** + * 客户适用区域 服务实现类 + * @author YenHex + * @since 2023-03-09 + */ +@Slf4j +@Service +@AllArgsConstructor +public class BmsSubjectRegionServiceImpl extends ServiceImpl implements BmsSubjectRegionService { + + @Override + public void removeBySubjectId(Long subjectId, Integer regionType) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSubjectRegion::getSubjectId,subjectId); + lqw.eq(BmsSubjectRegion::getType,regionType); + this.remove(lqw); + } + + @Override + public List listBySubjectId(Long subjectId, Integer regionType) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSubjectRegion::getSubjectId,subjectId); + lqw.eq(BmsSubjectRegion::getType,regionType); + return this.list(lqw); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java index 1c3def5a..33b3c31f 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java @@ -48,6 +48,24 @@ public class BmsSupplierApplicationService { private TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; private TbsActivityMapper activityMapper; + /** + * 客户更新区域时,预算政策统计 + * @param supplierId + * @param regionType + * @param orgRegionId + * @param newRegionId + */ + public void migratePolicyBudget(String supplierId, String regionType, String orgRegionId, String newRegionId){ + + } + + /** + * 客户更新区域时,预算统计调整 + * @param supplierId + * @param regionType + * @param orgRegionId + * @param newRegionId + */ public void migrateRegion(String supplierId, String regionType, String orgRegionId, String newRegionId) { //if(1==1){return;} LocalDateTime nowTime = LocalDateTime.now();