Browse Source

添加行政区域

mssql
Yen 3 years ago
parent
commit
49cc00efdb
  1. 189
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  2. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  3. 136
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  4. 78
      src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java
  5. 11
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  6. 2
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java
  7. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsRegion2Mapper.java
  8. 30
      src/main/java/com/qs/serve/modules/bms/service/BmsRegion2Service.java
  9. 107
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java
  10. 2
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  11. 4
      src/main/java/com/qs/serve/modules/sys/entity/bo/SysRelateSuppliersParam2.java
  12. 25
      src/main/java/com/qs/serve/modules/sys/entity/bo/SysRelateSuppliersParam3.java
  13. 6
      src/main/resources/mapper/bms/BmsSupplierMapper.xml

189
src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java

@ -0,0 +1,189 @@
package com.qs.serve.modules.bms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
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.*;
import com.qs.serve.modules.bms.entity.BmsRegion2;
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.BmsFactoryService;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import com.qs.serve.modules.bms.service.BmsRuleRegionService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* 基础档案 行政区域
* @author YenHex
* @since 2022-10-10
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/bizRegion")
public class BmsRegion2Controller {
private BmsRegion2Service BmsRegion2Service;
private BmsSupplierService bmsSupplierService;
private BmsRuleRegionService bmsRuleRegionService;
/**
* 列表
* @param param
* @return
*/
@GetMapping("/list")
@PreAuthorize("hasRole('bms:region:query')")
public R<List<BmsRegion2>> getList(BmsRegion2 param){
LambdaQueryWrapper<BmsRegion2> regionWrapper = new LambdaQueryWrapper<>(param);
List<BmsRegion2> list = BmsRegion2Service.list(regionWrapper);
return R.ok(list);
}
/**
* 翻页查询
* @param param
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:region:query')")
public R<PageVo<BmsRegion2>> getPage(BmsRegion2 param){
PageUtil.startPage();
LambdaQueryWrapper<BmsRegion2> regionWrapper = new LambdaQueryWrapper<>(param);
List<BmsRegion2> list = BmsRegion2Service.list(regionWrapper);
return R.byPageHelperList(list);
}
/**
* 树查询
* @param param
* @return
*/
@GetMapping("/tree")
@PreAuthorize("hasRole('bms:region:query')")
public R<List<BmsRegionTreeVo>> getTree(BmsRegion2 param){
return R.ok(BmsRegion2Service.getTree(param));
}
/**
* 根据ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:region:query')")
public R<BmsRegion2> getById(@PathVariable("id") String id){
BmsRegion2 BmsRegion2 = BmsRegion2Service.getById(id);
return R.ok(BmsRegion2);
}
/**
* 更新(只允许改名称)
* @param regionBo
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:region:update')")
public R<?> updateById(@RequestBody @Valid BmsRegionBatchBo.BmsRegionBo regionBo){
BmsRegion2 param = new BmsRegion2();
param.setId(regionBo.getId());
param.setName(regionBo.getName());
boolean result = BmsRegion2Service.updateById(param);
return R.isTrue(result);
}
/**
* 更新工厂
* @param regionBo
* @return
*/
@PostMapping("/updateFactory")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:region:update')")
public R<?> updateFactory(@RequestBody BmsRegion2 regionBo){
BmsRegion2 param = new BmsRegion2();
param.setId(regionBo.getId());
boolean result = BmsRegion2Service.updateById(param);
return R.isTrue(result);
}
/**
* 新增区域档案
* @param regionBo
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:region:insert')")
public R<?> save(@RequestBody @Valid BmsRegionBatchBo.BmsRegionBo regionBo){
BmsRegion2 param = CopierUtil.copy(regionBo,new BmsRegion2());
if(param.getId()==null){
param.setId(IdUtil.getSnowFlakeId()+"");
}
BmsRegion2Service.flushLevel(param);
boolean result = BmsRegion2Service.save(param);
return R.isTrue(result);
}
/**
* (批量)编辑(更新只允许改名称)
* @param regionBo
* @return
*/
@PostMapping("/editBatch")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:region:insert')")
public R<?> editBatch(@RequestBody @Valid BmsRegionBatchBo regionBo){
ValidateTools.valid(regionBo.getRegionList());
for (BmsRegionBatchBo.BmsRegionBo BmsRegion2Bo : regionBo.getRegionList()) {
BmsRegion2 dbRegion = BmsRegion2Service.getByCode(BmsRegion2Bo.getCode());
if(dbRegion==null){
BmsRegion2 region = CopierUtil.copy(BmsRegion2Bo,new BmsRegion2());
BmsRegion2Service.save(region);
}else {
BmsRegion2 param = new BmsRegion2();
param.setId(BmsRegion2Bo.getId());
param.setName(BmsRegion2Bo.getName());
BmsRegion2Service.updateById(param);
}
}
BmsRegion2Service.flushAllLevel();
return R.ok();
}
/**
* 删除区域档案
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:region:delete')")
public R<?> deleteById(@PathVariable("id") String id){
if(BmsRegion2Service.listChild(id).size()>0){
return R.error("含有子区域无法删除");
}
//如果有供应商则不允许删除
if(bmsSupplierService.listByRegionId(id).size()>0){
return R.error("地区含有供应商无法删除");
}
//删除商品限制
bmsRuleRegionService.removeByRegionId(Long.parseLong(id));
boolean result = BmsRegion2Service.removeById(id);
return R.isTrue(result);
}
}

2
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -26,7 +26,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
* 基础档案 区域档案 * 基础档案 销售区域
* @author YenHex * @author YenHex
* @since 2022-10-10 * @since 2022-10-10
*/ */

136
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java

@ -8,7 +8,6 @@ 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.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierBatchBo;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierBo;
import com.qs.serve.modules.bms.entity.bo.BmsSupplierParentBo; import com.qs.serve.modules.bms.entity.bo.BmsSupplierParentBo;
import com.qs.serve.modules.bms.entity.vo.BmsSupplierTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsSupplierTreeVo;
@ -17,7 +16,7 @@ import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam3; import com.qs.serve.modules.sys.entity.dto.SysUserVo;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -28,6 +27,8 @@ import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -55,13 +56,18 @@ public class BmsSupplierController {
@GetMapping("/list") @GetMapping("/list")
@PreAuthorize("hasRole('bms:supplier:query')") @PreAuthorize("hasRole('bms:supplier:query')")
public R<List<BmsSupplier>> getList(BmsSupplier param){ public R<List<BmsSupplier>> getList(BmsSupplier param){
LambdaQueryWrapper<BmsSupplier> supplierWrapper = new LambdaQueryWrapper<>(param); String userId = param.getUserId();
if(CollectionUtil.isNotEmpty(param.getRegionIds())){ param.setCurrUserId(userId);
supplierWrapper.in(BmsSupplier::getRegionLast,param.getRegionIds()); List<BmsSupplier> list = bmsSupplierService.selectSupplierList(param);
}
List<BmsSupplier> list = bmsSupplierService.list(supplierWrapper);
initSupplierList(list); initSupplierList(list);
initParentList(list); initParentList(list);
for (BmsSupplier supplier : list) {
supplier.setMasterFlag(0);
if(supplier.getUserId().equals(userId)){
supplier.setMasterFlag(1);
break;
}
}
return R.ok(list); return R.ok(list);
} }
@ -103,7 +109,9 @@ public class BmsSupplierController {
String regionId = supplier.getRegionLast(); String regionId = supplier.getRegionLast();
if(regionId!=null&&!regionId.equals("0")){ if(regionId!=null&&!regionId.equals("0")){
BmsRegion bmsRegion2 = bmsRegionService.getById(regionId); BmsRegion bmsRegion2 = bmsRegionService.getById(regionId);
supplier.setRegionLabel(bmsRegion2.getName()); if(bmsRegion2!=null){
supplier.setRegionLabel(bmsRegion2.getName());
}
} }
} }
List<BmsSupplierTreeVo> list2 = list.stream().map(supplier->{ List<BmsSupplierTreeVo> list2 = list.stream().map(supplier->{
@ -126,70 +134,83 @@ public class BmsSupplierController {
@PostMapping("/relateSuppliers") @PostMapping("/relateSuppliers")
@PreAuthorize("hasRole('bms:supplier:update')") @PreAuthorize("hasRole('bms:supplier:update')")
public R<?> relateSuppliers(@RequestBody @Valid SysRelateSuppliersParam param){ public R<?> relateSuppliers(@RequestBody @Valid SysRelateSuppliersParam param){
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSupplier::getUserId,param.getUserId());
List<Long> supplierIds = param.getSupplierIds(); List<Long> supplierIds = param.getSupplierIds();
List<BmsSupplier> list = bmsSupplierService.list(lqw); String userId = param.getUserId();
List<Long> addIds = null; List<BmsSupplier> list = bmsSupplierService.listByIds(supplierIds);
if(CollectionUtil.isNotEmpty(list)){ for (BmsSupplier supplier : list) {
List<BmsSupplier> rmList = list.stream().filter(sup->!supplierIds.contains(Long.parseLong(sup.getId()))).collect(Collectors.toList()); if(userId.equals(supplier.getUserId())){
List<Long> rmIds = rmList.stream().map(obj->Long.parseLong(obj.getId())).collect(Collectors.toList()); continue;
if(CollectionUtil.isNotEmpty(rmIds)){
rmIds.forEach(rmId->bmsSupplierMapper.removeRelateUserInfo(rmId));
} }
addIds = supplierIds.stream() if(CollectionUtil.isNotEmpty(supplier.getOtherUserIds())){
.filter( boolean exist = false;
supId-> list.stream().noneMatch(obj->obj.getId().equals(supId.toString())) for (String otherUserId : supplier.getOtherUserIds()) {
) if(userId.equals(otherUserId)){
.collect(Collectors.toList()); exist = true;
break;
}else { }
addIds = supplierIds; }
} if(exist){
if(CollectionUtil.isNotEmpty(addIds)){ continue;
SysUser user = sysUserService.getById(param.getUserId()); }
BmsSupplier bmsSupplier = new BmsSupplier(); }
LambdaQueryWrapper<BmsSupplier> lqw2 = new LambdaQueryWrapper<>(); List<String> otherUserIds = new ArrayList<>();
lqw2.in(BmsSupplier::getId,addIds); if(CollectionUtil.isNotEmpty(supplier.getOtherUserIds())){
bmsSupplier.setUserCode(user.getCode()); otherUserIds.addAll(Arrays.asList(supplier.getOtherUserIds()));
bmsSupplier.setUserId(user.getId()); }
bmsSupplier.setUserName(user.getName()); otherUserIds.add(userId);
bmsSupplierService.update(bmsSupplier,lqw2); //更新次要负责人
BmsSupplier supplierParam = new BmsSupplier();
supplierParam.setId(supplier.getId());
supplierParam.setOtherUserIds(otherUserIds.toArray(new String[otherUserIds.size()]));
bmsSupplierService.updateById(supplierParam);
} }
return R.ok(); return R.ok();
} }
/** /**
* 更改客户授权 * 更改客户授权(客户页面)
* @return * @return
*/ */
@PostMapping("/relateSuppliers2") @PostMapping("/relateSuppliers2")
@PreAuthorize("hasRole('bms:supplier:update')") @PreAuthorize("hasRole('bms:supplier:update')")
public R<?> relateSuppliers2(@RequestBody SysRelateSuppliersParam2 param){ public R<?> relateSuppliers2(@RequestBody SysRelateSuppliersParam2 param){
if(param.getUserId()==null){ BmsSupplier bmsSupplier = new BmsSupplier();
bmsSupplierMapper.removeRelateUserInfo(param.getSupplierId()); bmsSupplier.setId(param.getSupplierId().toString());
}else { bmsSupplier.setOtherUserIds(param.getUserIds()==null?new String[]{}:param.getUserIds());
SysUser user = sysUserService.getById(param.getUserId()); bmsSupplierService.updateById(bmsSupplier);
BmsSupplier bmsSupplier = new BmsSupplier();
bmsSupplier.setId(param.getSupplierId().toString());
bmsSupplier.setUserCode(user.getCode());
bmsSupplier.setUserId(user.getId());
bmsSupplier.setUserName(user.getName());
bmsSupplierService.updateById(bmsSupplier);
}
return R.ok(); return R.ok();
} }
/** /**
* 更改客户其它用户授权 * 删除客户分配
* @return * @return
*/ */
@PostMapping("/relateOtherUsers") @PostMapping("/relateRemove")
@PreAuthorize("hasRole('bms:supplier:update')") @PreAuthorize("hasRole('bms:supplier:update')")
public R<?> relateOtherUsers(@RequestBody SysRelateSuppliersParam3 param){ public R<?> relateRemove(@RequestBody SysRelateSuppliersParam param){
BmsSupplier bmsSupplier = new BmsSupplier(); List<Long> supplierIds = param.getSupplierIds();
bmsSupplier.setId(param.getSupplierId().toString()); String userId = param.getUserId();
bmsSupplier.setOtherUserIds(param.getUserIds()); List<BmsSupplier> list = bmsSupplierService.listByIds(supplierIds);
for (BmsSupplier supplier : list) {
if(userId.equals(supplier.getUserId())){
bmsSupplierMapper.removeRelateUserInfo(Long.parseLong(supplier.getId()));
}
if(CollectionUtil.isNotEmpty(supplier.getOtherUserIds())){
List<String> otherUserIds = new ArrayList<>();
for (String otherUserId : supplier.getOtherUserIds()) {
if(userId.equals(otherUserId)){
continue;
}
otherUserIds.add(otherUserId);
}
//更新次要负责人
BmsSupplier supplierParam = new BmsSupplier();
supplierParam.setId(supplier.getId());
supplierParam.setOtherUserIds(otherUserIds.toArray(new String[otherUserIds.size()]));
bmsSupplierService.updateById(supplierParam);
}
}
return R.ok(); return R.ok();
} }
@ -210,7 +231,14 @@ public class BmsSupplierController {
bmsSupplier.setPid(null); bmsSupplier.setPid(null);
} }
BmsRegion region = bmsRegionService.getById(bmsSupplier.getRegionLast()); BmsRegion region = bmsRegionService.getById(bmsSupplier.getRegionLast());
bmsSupplier.setRegionLabel(region.getName()); if(region!=null){
bmsSupplier.setRegionLabel(region.getName());
}
if(CollectionUtil.isNotEmpty(bmsSupplier.getOtherUserIds())){
List<SysUser> userList = sysUserService.listByIds(Arrays.asList(bmsSupplier.getOtherUserIds()));
List<SysUserVo> userVos = userList.stream().map(SysUser::toSysUserVo).collect(Collectors.toList());
bmsSupplier.setUserVos(userVos);
}
return R.ok(bmsSupplier); return R.ok(bmsSupplier);
} }

78
src/main/java/com/qs/serve/modules/bms/entity/BmsRegion2.java

@ -0,0 +1,78 @@
package com.qs.serve.modules.bms.entity;
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.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 区域档案 实体类
* @author YenHex
* @since 2022-10-10
*/
@Data
@TableName(value = "bms_region2")
public class BmsRegion2 implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.INPUT)
private String id;
/** 名称 */
@Length(max = 20,message = "名称长度不能超过20字")
private String name;
/** 编码 */
@Length(max = 20,message = "编码长度不能超过20字")
private String code;
/** 父级ID */
@Length(max = 32,message = "父级ID长度不能超过32字")
private String pid;
/** 层级 */
private Integer level;
/** 创建时间 */
@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;
}

11
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -2,12 +2,14 @@ package com.qs.serve.modules.bms.entity;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import com.qs.serve.modules.sys.entity.dto.SysUserVo;
import lombok.Data; import lombok.Data;
import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
@ -123,5 +125,14 @@ public class BmsSupplier implements Serializable {
/** 父级ID信息 */ /** 父级ID信息 */
@TableField(exist = false) @TableField(exist = false)
private Object parentRegionInfo; private Object parentRegionInfo;
/** 主要负责人标识 */
@TableField(exist = false)
private Integer masterFlag;
/** 其它负责人列表 */
@TableField(exist = false)
List<?> userVos;
} }

2
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsSupplierBo.java

@ -18,7 +18,7 @@ public class BmsSupplierBo {
private String id; private String id;
/** 区域ID */ /** 区域ID */
private Long regionId; private String regionId;
/** 详细地址 */ /** 详细地址 */
private String address; private String address;

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsRegion2Mapper.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.BmsRegion2;
/**
* 区域档案 Mapper
* @author YenHex
* @date 2022-10-10
*/
public interface BmsRegion2Mapper extends BaseMapper<BmsRegion2> {
}

30
src/main/java/com/qs/serve/modules/bms/service/BmsRegion2Service.java

@ -0,0 +1,30 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import java.util.List;
/**
* 区域档案 服务接口
* @author YenHex
* @date 2022-10-10
*/
public interface BmsRegion2Service extends IService<BmsRegion2> {
List<BmsRegionTreeVo> getTree(BmsRegion2 param);
List<BmsRegion2> listChild(String pid);
BmsRegion2 getByCode(String code);
void flushLevel(BmsRegion2 param);
void flushAllLevel();
void updateLevel(String id,Integer level);
}

107
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java

@ -0,0 +1,107 @@
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 com.qs.serve.common.model.dto.TreeNode;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* 区域档案 服务实现类
* @author YenHex
* @since 2022-10-10
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegion2> implements BmsRegion2Service {
@Override
public List<BmsRegionTreeVo> getTree(BmsRegion2 param) {
LambdaQueryWrapper<BmsRegion2> regionWrapper = new LambdaQueryWrapper<>(param);
List<BmsRegion2> list = this.list(regionWrapper);
List<BmsRegionTreeVo> treeVoList = list.stream().map(region->{
BmsRegionTreeVo treeNode = CopierUtil.copy(region,new BmsRegionTreeVo());
treeNode.setId(region.getId());
treeNode.setParentId(region.getPid());
treeNode.setSort(0);
return treeNode;
}).collect(Collectors.toList());
return TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING);
}
@Override
public List<BmsRegion2> listChild(String pid) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegion2::getPid,pid);
return this.list(lqw);
}
@Override
public BmsRegion2 getByCode(String code) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegion2::getCode,code);
return this.getOne(lqw,false);
}
@Override
public void flushLevel(BmsRegion2 param) {
if(StringUtils.hasText(param.getPid())){
BmsRegion2 parent = this.getById(param.getPid());
if(parent!=null){
if(parent.getLevel()>2){
Assert.throwEx("最高支持3层级");
}
param.setLevel(parent.getLevel()+1);
}else {
param.setPid(null);
param.setLevel(1);
}
}
}
@Override
public void flushAllLevel() {
List<BmsRegionTreeVo> treeVoList = this.getTree(new BmsRegion2());
for (BmsRegionTreeVo firstTree : treeVoList) {
if(firstTree.getLevel()==null||firstTree.getLevel()!=1){
this.updateLevel(firstTree.getId(),1);
}
if(CollectionUtil.isNotEmpty(firstTree.getChildren())){
for (TreeNode secondTreeNode : firstTree.getChildren()) {
BmsRegionTreeVo secondTree = (BmsRegionTreeVo)secondTreeNode;
if(secondTree.getLevel()==null||secondTree.getLevel()!=2){
this.updateLevel(secondTree.getId(),2);
}
if(CollectionUtil.isNotEmpty(secondTree.getChildren())){
for (TreeNode thirdTreeNode : secondTree.getChildren()) {
BmsRegionTreeVo thirdTree = (BmsRegionTreeVo)thirdTreeNode;
if(thirdTree.getLevel()==null||thirdTree.getLevel()!=3){
this.updateLevel(thirdTree.getId(),3);
}
}
}
}
}
}
}
@Override
public void updateLevel(String id, Integer level) {
BmsRegion2 param = new BmsRegion2();
param.setId(id);
param.setLevel(level);
this.updateById(param);
}
}

2
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java

@ -64,7 +64,7 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
supplier.setParentCode(null); supplier.setParentCode(null);
} }
if(param.getRegionId()!=null){ if(param.getRegionId()!=null){
this.initRegion(supplier,param.getRegionId().toString()); this.initRegion(supplier,param.getRegionId());
} }
this.saveOrUpdate(supplier); this.saveOrUpdate(supplier);
} }

4
src/main/java/com/qs/serve/modules/sys/entity/bo/SysRelateSuppliersParam2.java

@ -13,9 +13,9 @@ import java.util.List;
public class SysRelateSuppliersParam2 { public class SysRelateSuppliersParam2 {
/** /**
* 用户ID当user==null为清楚客户绑定 * 用户ID当userIds==null为清绑定
*/ */
String userId; String[] userIds;
/** /**
* 供应商id列表 * 供应商id列表

25
src/main/java/com/qs/serve/modules/sys/entity/bo/SysRelateSuppliersParam3.java

@ -1,25 +0,0 @@
package com.qs.serve.modules.sys.entity.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author YenHex
* @since 2022/10/25
*/
@Data
public class SysRelateSuppliersParam3 {
/**
* 删除传入空数组
*/
String[] userIds;
/**
* 供应商id列表
*/
@NotNull
Long supplierId;
}

6
src/main/resources/mapper/bms/BmsSupplierMapper.xml

@ -80,6 +80,12 @@
<if test="query.currUserId!=null and query.currUserId != ''"> <if test="query.currUserId!=null and query.currUserId != ''">
and (`bms_supplier`.`user_id` = #{query.currUserId} or FIND_IN_SET(#{query.currUserId},`bms_supplier`.`other_user_ids`) ) and (`bms_supplier`.`user_id` = #{query.currUserId} or FIND_IN_SET(#{query.currUserId},`bms_supplier`.`other_user_ids`) )
</if> </if>
<if test="query.regionIds!=null and query.regionIds.size > 0">
and bms_supplier.regionLast in
<foreach collection="query.regionIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
</where> </where>
</select> </select>

Loading…
Cancel
Save