diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java index f339c458..f31430bf 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java @@ -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 del(@RequestBody List ids){ VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要删除的行"); + //检查下面是否有 + List delNodes = baseAreaService.getBaseMapper().selectByIds(ids); + List hasChildNodes=new ArrayList<>(); + List 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); diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java index 8134b1c7..7967e40b 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/CustomerController.java @@ -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 del(@RequestBody List ids){ VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要删除的行"); - baseCustomerService.delByIds(ids, AdminUserUtil.getUserNo(), AdminUserUtil.getUserName()); + // + List appUserUsed = appUserService.lambdaQuery().in(AppUser::getCompanyId, ids).list(); + if(CollUtil.isNotEmpty(appUserUsed)){ + Set userCompanyIds = appUserUsed.stream().map(u -> u.getCompanyId()).collect(Collectors.toSet()); + List checkResult = baseCustomerService.lambdaQuery().in(TBaseCustomer::getId, userCompanyIds).list(); + if(CollUtil.isNotEmpty(checkResult)){ + Set 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); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java index 3bf01f91..920c54ae 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DepartmentController.java @@ -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 add(@RequestBody List ids ){ VUtils.trueThrowBusinessError(CollUtil.isEmpty(ids)).throwMessage("请选择要删除的数据"); + List delDepartments = departmentService.getBaseMapper().selectByIds(ids); + List hasChildDeptNames=new ArrayList<>(); + List 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); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminBaseAreaService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminBaseAreaService.java index 46619e1c..06015e41 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminBaseAreaService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminBaseAreaService.java @@ -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> getList(@RequestBody BaseAreaQuery query){ Page result = baseAreaService.getList(new Page<>(query.getPage(),query.getPageSize()), query); List dataResult = Convert.toList(TBaseAreaVO.class, result.getRecords()); - if(StrUtil.isNotBlank(query.getAreaCodeOrName())){ - List allAreaList = Convert.toList(TBaseAreaVO.class,baseAreaService.lambdaQuery().eq(TBaseArea::getDelIs,0).list()) ; + if(StrUtil.isNotBlank(query.getAreaCodeOrName()) || Objects.nonNull(query.getAreaState())){ + List allAreaList = Convert.toList(TBaseAreaVO.class,baseAreaService.lambdaQuery() + .eq(TBaseArea::getDelIs,0) + .list()) ; Map collect = allAreaList.stream().collect(Collectors.toMap(TBaseAreaVO::getId, Function.identity())); List 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 getAllChildIds(TBaseAreaVO node, List ids) { List 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 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 buildTree(List nodes) { // 使用Map存储id到Node的映射,便于快速查找父节点 Map idToNodeMap = nodes.stream() - .collect(Collectors.toMap(TBaseAreaVO::getId, Function.identity())); + .collect(Collectors.toMap(TBaseAreaVO::getId,area->area, (existing, replacement) -> existing)); List roots = new ArrayList<>(); diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseAreaMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseAreaMapper.xml index 00e32321..087adc6a 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseAreaMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseAreaMapper.xml @@ -4,7 +4,7 @@ - and (area_code =#{query.areaCodeOrName} or area_name = #{query.areaCodeOrName} ) + and area_name like concat('%', #{query.areaCodeOrName} ,'%') and area_state=#{query.areaState} @@ -14,7 +14,7 @@ select * from t_base_customer where del_is=0 - + order by data_create_time desc