Merge remote-tracking branch '惠信/develop' into develop

This commit is contained in:
曹鹏飞 2025-02-16 18:54:05 +08:00
commit c3fdc0f393
6 changed files with 77 additions and 15 deletions

View File

@ -8,6 +8,7 @@ import com.nflg.mobilebroken.admin.pojo.dto.BaseAreaEditDTO;
import com.nflg.mobilebroken.admin.pojo.query.BaseAreaQuery;
import com.nflg.mobilebroken.admin.service.AdminBaseAreaService;
import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.exception.NflgException;
import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.vo.TBaseAreaVO;
@ -17,6 +18,7 @@ import com.nflg.mobilebroken.repository.entity.TBaseArea;
import com.nflg.mobilebroken.repository.service.ITBaseAreaService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.web.bind.annotation.*;
import org.ttzero.excel.reader.Col;
import javax.annotation.Resource;
import javax.validation.Valid;
@ -120,6 +122,22 @@ public class BaseAreaController extends ControllerBase {
@ApiMark(moduleName = "区域管理", apiName = "删除")
public ApiResult<Boolean> del(@RequestBody List<Long> ids){
VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要删除的行");
//检查下面是否有
List<TBaseArea> delNodes = baseAreaService.getBaseMapper().selectByIds(ids);
List<String> hasChildNodes=new ArrayList<>();
List<Long> childIds=new ArrayList<>();
for ( TBaseArea delNode: delNodes) {
childIds.clear();
adminBaseAreaService.getAllChildIds( Convert.convert(TBaseAreaVO.class,delNode) ,childIds);
if(CollUtil.isNotEmpty(childIds)){
hasChildNodes.add(delNode.getAreaName());
}
}
if(CollUtil.isNotEmpty(hasChildNodes)){
throw new NflgException(STATE.ParamErr,StrUtil.join(",", hasChildNodes)+" 存在子级区域,请先删除子级");
}
baseAreaService.getBaseMapper().deleteByIds(ids);
// baseAreaService.delByIds(ids, AdminUserUtil.getUserNo(), AdminUserUtil.getUserName());
return ApiResult.success(true);

View File

@ -4,6 +4,7 @@ package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.mobilebroken.admin.annotation.ApiMark;
import com.nflg.mobilebroken.admin.constant.Constant;
@ -21,7 +22,9 @@ import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.EecExcelUtil;
import com.nflg.mobilebroken.common.util.UniqueSequenceGenerator;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AppUser;
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
import com.nflg.mobilebroken.repository.service.IAppUserService;
import com.nflg.mobilebroken.repository.service.ITBaseCustomerService;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import org.springframework.web.bind.annotation.*;
@ -35,6 +38,8 @@ import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 客户管理
@ -49,6 +54,9 @@ public class CustomerController extends ControllerBase {
@Resource
AdminCustomerService adminCustomerService;
@Resource
IAppUserService appUserService;
@PostMapping("getList")
@ApiMark(moduleName = "客户管理", apiName = "获取客户列表")
@ -117,7 +125,20 @@ public class CustomerController extends ControllerBase {
public ApiResult<Boolean> del(@RequestBody List<Long> ids){
VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要删除的行");
baseCustomerService.delByIds(ids, AdminUserUtil.getUserNo(), AdminUserUtil.getUserName());
//
List<AppUser> appUserUsed = appUserService.lambdaQuery().in(AppUser::getCompanyId, ids).list();
if(CollUtil.isNotEmpty(appUserUsed)){
Set<String> userCompanyIds = appUserUsed.stream().map(u -> u.getCompanyId()).collect(Collectors.toSet());
List<TBaseCustomer> checkResult = baseCustomerService.lambdaQuery().in(TBaseCustomer::getId, userCompanyIds).list();
if(CollUtil.isNotEmpty(checkResult)){
Set<String> collect = checkResult.stream().map(u -> u.getAgencyCompanyName()).collect(Collectors.toSet());
if(CollUtil.isNotEmpty(collect)){
throw new NflgException(STATE.ParamErr, StrUtil.join(",", collect)+"已在代理商账号中使用,无法删除");
}
}
}
baseCustomerService.getBaseMapper().deleteByIds(ids);
// baseCustomerService.delByIds(ids, AdminUserUtil.getUserNo(), AdminUserUtil.getUserName());
return ApiResult.success(true);
}

View File

@ -2,11 +2,14 @@ package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.admin.annotation.ApiMark;
import com.nflg.mobilebroken.admin.pojo.dto.DepartmentDTO;
import com.nflg.mobilebroken.admin.pojo.query.DepartmentQuery;
import com.nflg.mobilebroken.admin.pojo.vo.BaseDepartmentVO;
import com.nflg.mobilebroken.admin.service.AdminDepartmentService;
import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.exception.NflgException;
import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.util.AdminUserUtil;
@ -101,6 +104,19 @@ public class DepartmentController extends ControllerBase {
@ApiMark(moduleName = "部门管理", apiName = "删除")
public ApiResult<Boolean> add(@RequestBody List<Long> ids ){
VUtils.trueThrowBusinessError(CollUtil.isEmpty(ids)).throwMessage("请选择要删除的数据");
List<TBaseDepartment> delDepartments = departmentService.getBaseMapper().selectByIds(ids);
List<String> hasChildDeptNames=new ArrayList<>();
List<Long> childIds=new ArrayList<>();
for (TBaseDepartment dept :delDepartments) {
childIds.clear();
adminDepartmentService.getAllChildIds(dept,childIds);
if(CollUtil.isNotEmpty(childIds)){
hasChildDeptNames.add(dept.getDeptName());
}
}
if(CollUtil.isNotEmpty(hasChildDeptNames)){
throw new NflgException(STATE.ParamErr, StrUtil.join(",", hasChildDeptNames)+" 存在子集,请先删除子级");
}
departmentService.del(ids);
return ApiResult.success(true);
}

View File

@ -1,5 +1,6 @@
package com.nflg.mobilebroken.admin.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -16,10 +17,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -32,24 +30,30 @@ public class AdminBaseAreaService {
public ApiResult<PageData<TBaseAreaVO>> getList(@RequestBody BaseAreaQuery query){
Page<TBaseAreaVO> result = baseAreaService.getList(new Page<>(query.getPage(),query.getPageSize()), query);
List<TBaseAreaVO> dataResult = Convert.toList(TBaseAreaVO.class, result.getRecords());
if(StrUtil.isNotBlank(query.getAreaCodeOrName())){
List<TBaseAreaVO> allAreaList = Convert.toList(TBaseAreaVO.class,baseAreaService.lambdaQuery().eq(TBaseArea::getDelIs,0).list()) ;
if(StrUtil.isNotBlank(query.getAreaCodeOrName()) || Objects.nonNull(query.getAreaState())){
List<TBaseAreaVO> allAreaList = Convert.toList(TBaseAreaVO.class,baseAreaService.lambdaQuery()
.eq(TBaseArea::getDelIs,0)
.list()) ;
Map<Long, TBaseAreaVO> collect = allAreaList.stream().collect(Collectors.toMap(TBaseAreaVO::getId, Function.identity()));
List<TBaseAreaVO> allParents=new ArrayList<>();
for (TBaseAreaVO data:dataResult){
allParents.addAll(getAllParents(data, collect)) ;
allParents.addAll(getAllParents(data, collect));
}
allParents.addAll(dataResult);
allParents=allParents.stream().distinct().collect(Collectors.toList());
return ApiResult.success(buildTree(allParents),query,result.getTotal());
}
else {
for (TBaseAreaVO data:dataResult){
initNodeChildren(data);
initNodeChildren(data,query);
}
}
return ApiResult.success(dataResult,query,result.getTotal());
}
public List<Long> getAllChildIds(TBaseAreaVO node, List<Long> ids) {
List<TBaseAreaVO> immediateChildren = findChildDepartmentsByParentId(node.getId());
ids.addAll(immediateChildren.stream().map(u->u.getId()).collect(Collectors.toSet()));
@ -59,11 +63,14 @@ public class AdminBaseAreaService {
return ids;
}
private void initNodeChildren(TBaseAreaVO node) {
private void initNodeChildren(TBaseAreaVO node,BaseAreaQuery query) {
List<TBaseAreaVO> immediateChildren = findChildDepartmentsByParentId(node.getId());
if(query!=null && query.getAreaState()!=null){
immediateChildren=immediateChildren.stream().filter(u->query.getAreaState().equals(u.getAreaState())).collect(Collectors.toList());
}
node.setChildren(immediateChildren);
for (TBaseAreaVO child : immediateChildren) {
initNodeChildren(child);
initNodeChildren(child,query);
}
}
@ -94,7 +101,7 @@ public class AdminBaseAreaService {
private List<TBaseAreaVO> buildTree(List<TBaseAreaVO> nodes) {
// 使用Map存储id到Node的映射便于快速查找父节点
Map<Long, TBaseAreaVO> idToNodeMap = nodes.stream()
.collect(Collectors.toMap(TBaseAreaVO::getId, Function.identity()));
.collect(Collectors.toMap(TBaseAreaVO::getId,area->area, (existing, replacement) -> existing));
List<TBaseAreaVO> roots = new ArrayList<>();

View File

@ -4,7 +4,7 @@
<sql id="whr">
<if test="query.areaCodeOrName!=null and query.areaCodeOrName!=''">
and (area_code =#{query.areaCodeOrName} or area_name = #{query.areaCodeOrName} )
and area_name like concat('%', #{query.areaCodeOrName} ,'%')
</if>
<if test="query.areaState!=null">
and area_state=#{query.areaState}
@ -14,7 +14,7 @@
</sql>
<select id="getList" resultType="com.nflg.mobilebroken.common.pojo.vo.TBaseAreaVO">
select * from t_base_area where del_is=0
<if test="query.areaCodeOrName==null or query.areaCodeOrName==''">
<if test="(query.areaCodeOrName==null or query.areaCodeOrName=='') and query.areaState==null ">
and parent_area_row_id=0
</if>
<include refid="whr" />

View File

@ -15,7 +15,7 @@
<select id="getList" resultType="com.nflg.mobilebroken.repository.entity.TBaseCustomer">
select * from t_base_customer where del_is=0
<include refid="whr"/>
<include refid="whr"/> order by data_create_time desc
</select>