Browse Source

添加科目适用区域

contract
Yen 2 years ago
parent
commit
6b4f669123
  1. 67
      src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java
  2. 23
      src/main/java/com/qs/serve/modules/bms/entity/BmsSubject.java
  3. 96
      src/main/java/com/qs/serve/modules/bms/entity/BmsSubjectRegion.java
  4. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsSubjectRegionMapper.java
  5. 29
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java
  6. 41
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java
  7. 18
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java

67
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.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; 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.CopierUtil;
import com.qs.serve.common.util.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.TreeUtil; import com.qs.serve.common.util.TreeUtil;
import com.qs.serve.modules.bms.entity.BmsCostCenter; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.entity.BmsSubjectForm;
import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo; 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.BmsRegionTreeVo;
import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsSubjectTreeVo;
import com.qs.serve.modules.bms.mapper.BmsSubjectMapper; import com.qs.serve.modules.bms.mapper.BmsSubjectMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; 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.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import com.qs.serve.modules.tbs.service.TbsActivitySubjectService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -25,10 +25,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; 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 javax.validation.Valid;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -47,6 +45,9 @@ public class BmsSubjectController {
private BmsSubjectMapper bmsSubjectMapper; private BmsSubjectMapper bmsSubjectMapper;
private TbsActivitySubjectService activitySubjectService; private TbsActivitySubjectService activitySubjectService;
private BmsSubjectFormService bmsSubjectFormService; 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()); BmsSubjectForm subjectForm = bmsSubjectFormService.getById(bmsSubject.getFormId());
bmsSubject.setSubjectFormInfo(subjectForm); bmsSubject.setSubjectFormInfo(subjectForm);
} }
if(bmsSubject.getSaleRegionFlag().equals(1)){
List<BmsSubjectRegion> subjectRegionList = bmsSubjectRegionService.listBySubjectId(bmsSubject.getId(),0);
bmsSubject.setSaleRegionInfos(subjectRegionList);
}
if(bmsSubject.getBizRegionFlag().equals(1)){
List<BmsSubjectRegion> subjectRegionList = bmsSubjectRegionService.listBySubjectId(bmsSubject.getId(),1);
bmsSubject.setBizRegionInfos(subjectRegionList);
}
return R.ok(bmsSubject); return R.ok(bmsSubject);
} }
@ -100,6 +109,9 @@ public class BmsSubjectController {
@SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.UPDATE) @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:subject:update')") @PreAuthorize("hasRole('bms:subject:update')")
public R<?> updateById(@RequestBody @Valid BmsSubject param){ public R<?> updateById(@RequestBody @Valid BmsSubject param){
if(param.getId()==null){
return R.error("资源不存在或被移除");
}
commonEdit(param); commonEdit(param);
return R.ok(); return R.ok();
} }
@ -113,6 +125,7 @@ public class BmsSubjectController {
@SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.INSERT) @SysLog(module = SystemModule.BASE, title = "科目", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:subject:insert')") @PreAuthorize("hasRole('bms:subject:insert')")
public R<?> save(@RequestBody @Valid BmsSubject param){ public R<?> save(@RequestBody @Valid BmsSubject param){
param.setId(null);
commonEdit(param); commonEdit(param);
return R.ok(); return R.ok();
} }
@ -120,25 +133,55 @@ public class BmsSubjectController {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void commonEdit(BmsSubject subject){ public void commonEdit(BmsSubject subject){
if(subject.getId()==null){
bmsSubjectService.save(subject);
}
if(subject.getPid()==null||subject.getPid().equals(0L)){ if(subject.getPid()==null||subject.getPid().equals(0L)){
subject.setPid(0L); subject.setPid(0L);
subject.setLevel(1); subject.setLevel(1);
subject.setPathNames(subject.getSubjectName()); subject.setPathNames(subject.getSubjectName());
bmsSubjectService.updateById(subject);
}else { }else {
BmsSubject parent = bmsSubjectService.getById(subject.getPid()); BmsSubject parent = bmsSubjectService.getById(subject.getPid());
//todo 判断父级节点是否存有已存数据
BmsSubject ori = bmsSubjectService.getById(subject.getId());
subject.setLevel(parent.getLevel()+1); subject.setLevel(parent.getLevel()+1);
subject.setPathNames(parent.getPathNames()+"_"+subject.getSubjectName()); 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); bmsSubjectService.updateById(subject);
if(!subject.getSubjectName().equals(ori.getSubjectName())) { if(!subject.getSubjectName().equals(ori.getSubjectName())) {
bmsSubjectService.updatePathNameByParent(subject); bmsSubjectService.updatePathNameByParent(subject);
} }
} }
if(subject.getSaleRegionFlag().equals(1)){
List<BmsRegion> saleRegionList = bmsRegionService.listByIds(subject.getSaleRegionIds());
List<BmsSubjectRegion> 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<BmsRegion2> bizRegionList = bmsRegion2Service.listByIds(subject.getBizRegionIds());
List<BmsSubjectRegion> 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){ if(subject.getFormId()==null){
bmsSubjectMapper.removeFormId(subject.getId()); bmsSubjectMapper.removeFormId(subject.getId());
} }

23
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.NotNull;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.List;
/** /**
* 科目 实体类 * 科目 实体类
* @author YenHex * @author YenHex
@ -47,6 +47,12 @@ public class BmsSubject implements Serializable {
@NotNull(message = "父级id不能为空") @NotNull(message = "父级id不能为空")
private Long pid; private Long pid;
/** 销售区域:0全部可见;1-部分可见;2-全部不可见 */
private Integer saleRegionFlag;
/** 行政区域:0全部可见;1-部分可见;2-全部不可见 */
private Integer bizRegionFlag;
@TableField(exist = false) @TableField(exist = false)
private String parName; private String parName;
@ -92,5 +98,20 @@ public class BmsSubject implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private Object subjectFormInfo; private Object subjectFormInfo;
/** 销售区域id */
@TableField(exist = false)
private List<String> saleRegionIds;
/** 行政区域id */
@TableField(exist = false)
private List<String> bizRegionIds;
/** 销售区域 */
@TableField(exist = false)
private List<?> saleRegionInfos;
/** 行政区域 */
@TableField(exist = false)
private List<?> bizRegionInfos;
} }

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

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

29
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<BmsSubjectRegion> {
/**
* 移除适用区域
* @param subjectId
* @param regionType 类型0=销售区域1=行政区域
*/
void removeBySubjectId(Long subjectId,Integer regionType);
/**
* 获取适用区域
* @param subjectId
* @param regionType 类型0=销售区域1=行政区域
* @return
*/
List<BmsSubjectRegion> listBySubjectId(Long subjectId,Integer regionType);
}

41
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<BmsSubjectRegionMapper,BmsSubjectRegion> implements BmsSubjectRegionService {
@Override
public void removeBySubjectId(Long subjectId, Integer regionType) {
LambdaQueryWrapper<BmsSubjectRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSubjectRegion::getSubjectId,subjectId);
lqw.eq(BmsSubjectRegion::getType,regionType);
this.remove(lqw);
}
@Override
public List<BmsSubjectRegion> listBySubjectId(Long subjectId, Integer regionType) {
LambdaQueryWrapper<BmsSubjectRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSubjectRegion::getSubjectId,subjectId);
lqw.eq(BmsSubjectRegion::getType,regionType);
return this.list(lqw);
}
}

18
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java

@ -48,6 +48,24 @@ public class BmsSupplierApplicationService {
private TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; private TbsScheduleItemBudgetMapper scheduleItemBudgetMapper;
private TbsActivityMapper activityMapper; 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) { public void migrateRegion(String supplierId, String regionType, String orgRegionId, String newRegionId) {
//if(1==1){return;} //if(1==1){return;}
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();

Loading…
Cancel
Save