新增市县通讯录导入导出接口
parent
31e95b7582
commit
ffc58cb901
|
|
@ -2,6 +2,7 @@ package com.whdc.controller;
|
||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.whdc.exception.MyException;
|
import com.whdc.exception.MyException;
|
||||||
import com.whdc.model.dto.AddressBootDto;
|
import com.whdc.model.dto.AddressBootDto;
|
||||||
|
|
@ -30,15 +31,15 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.DigestUtils;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.whdc.model.MyConstant.REDIS_KEY;
|
import static com.whdc.model.MyConstant.REDIS_KEY;
|
||||||
|
|
@ -405,7 +406,6 @@ public class AddressBookController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "设置白名单")
|
@ApiOperation(value = "设置白名单")
|
||||||
@PostMapping(value = "setWhitelists")
|
@PostMapping(value = "setWhitelists")
|
||||||
public ResultJson setWhitelists(@RequestBody @Validated(Update.class) AddressBook model) {
|
public ResultJson setWhitelists(@RequestBody @Validated(Update.class) AddressBook model) {
|
||||||
|
|
@ -474,8 +474,6 @@ public class AddressBookController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// List<Versions> list = versionsService.lambdaQuery()
|
// List<Versions> list = versionsService.lambdaQuery()
|
||||||
// .eq(Versions::getAbId, model.getId())
|
// .eq(Versions::getAbId, model.getId())
|
||||||
// .list();
|
// .list();
|
||||||
|
|
@ -552,7 +550,9 @@ public class AddressBookController {
|
||||||
throw new MyException("当前行政区划不存在");
|
throw new MyException("当前行政区划不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AddressBook> addressBooks = service.lambdaQuery().isNotNull(AddressBook::getAdcd)
|
// List<AddressBook> addressBooks = service.lambdaQuery().isNotNull(AddressBook::getAdcd)
|
||||||
|
// .list();
|
||||||
|
List<AddressBook> addressBooks = service.lambdaQuery().likeLeft(AddressBook::getAdcd, "000000000")
|
||||||
.list();
|
.list();
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(addressBooks)) {
|
if (CollectionUtils.isEmpty(addressBooks)) {
|
||||||
|
|
@ -567,21 +567,21 @@ public class AddressBookController {
|
||||||
String finalAdnm = adnm;
|
String finalAdnm = adnm;
|
||||||
for (int i = 0; i < tree.size(); i++) {
|
for (int i = 0; i < tree.size(); i++) {
|
||||||
AdcdTree t = tree.get(i);
|
AdcdTree t = tree.get(i);
|
||||||
String adcd = t.getAdcd();
|
// String adcd = t.getAdcd();
|
||||||
String cityAdnm = t.getAdnm();
|
String cityAdnm = t.getAdnm();
|
||||||
List<AddressBook> books = abMap.get(adcd);
|
// List<AddressBook> books = abMap.get(adcd);
|
||||||
if (CollectionUtils.isEmpty(books)) {
|
// if (CollectionUtils.isEmpty(books)) {
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
books.forEach(b -> {
|
// books.forEach(b -> {
|
||||||
if (StringUtils.isNotBlank(finalAdnm)) {
|
// if (StringUtils.isNotBlank(finalAdnm)) {
|
||||||
if (cityAdnm.equals(finalAdnm)) {
|
// if (cityAdnm.equals(finalAdnm)) {
|
||||||
data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
// data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
// data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
List<AdcdTree> children = t.getChildren();
|
List<AdcdTree> children = t.getChildren();
|
||||||
if (CollectionUtils.isNotEmpty(children)) {
|
if (CollectionUtils.isNotEmpty(children)) {
|
||||||
|
|
@ -606,7 +606,6 @@ public class AddressBookController {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
;
|
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(data)) {
|
if (CollectionUtils.isEmpty(data)) {
|
||||||
throw new MyException("当前行政区划责任人为空");
|
throw new MyException("当前行政区划责任人为空");
|
||||||
|
|
@ -618,8 +617,8 @@ public class AddressBookController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "行政区划联系人导入")
|
@ApiOperation(value = "行政区划联系人导入")
|
||||||
@GetMapping(value = "uploadExcel")
|
@PostMapping(value = "uploadExcel")
|
||||||
public void uploadExcel(MultipartFile file) {
|
public ResultJson uploadExcel(MultipartFile file) {
|
||||||
|
|
||||||
List<ExcelABVo> appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class);
|
List<ExcelABVo> appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class);
|
||||||
|
|
||||||
|
|
@ -627,11 +626,112 @@ public class AddressBookController {
|
||||||
throw new MyException("文件为空");
|
throw new MyException("文件为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<String> set = appends.stream().map(vo -> vo.getName() + "_" + vo.getPhone()).collect(Collectors.toSet());
|
||||||
|
if (set.size() != appends.size()){
|
||||||
|
throw new MyException("联系人重复");
|
||||||
|
}
|
||||||
|
|
||||||
List<AdcdTree> tree = adinfoService.tree(TREE_ALL, TREE_ALL);
|
List<AdcdTree> tree = adinfoService.tree(TREE_ALL, TREE_ALL);
|
||||||
|
|
||||||
|
List<AddressBook> abs = Lists.newArrayList();
|
||||||
|
|
||||||
appends.forEach(vo -> {
|
appends.forEach(vo -> {
|
||||||
|
String phone = vo.getPhone();
|
||||||
|
String name = vo.getName();
|
||||||
|
String position = vo.getPosition();
|
||||||
|
String city = vo.getCity();
|
||||||
|
String county = vo.getCounty();
|
||||||
|
AddressBook e = new AddressBook();
|
||||||
|
e.setName(name)
|
||||||
|
.setPhone(phone)
|
||||||
|
.setAdcd(getAdcd(tree, city, county))
|
||||||
|
.setPosition(position);
|
||||||
|
abs.add(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 原数据删除
|
||||||
|
removeAdcd();
|
||||||
|
|
||||||
|
|
||||||
|
if (!service.saveBatch(abs)) {
|
||||||
|
throw new MyException("表格数据新增失败");
|
||||||
|
}
|
||||||
|
List<User> users = Lists.newArrayList();
|
||||||
|
List<AbUdR> abUdRs = Lists.newArrayList();
|
||||||
|
|
||||||
|
AtomicReference<Integer> sort = new AtomicReference<>(0);
|
||||||
|
// 新增关联数据
|
||||||
|
abs.forEach(a -> {
|
||||||
|
String phone = a.getPhone();
|
||||||
|
if (StringUtils.isNotBlank(phone)){
|
||||||
|
User user = new User();
|
||||||
|
String salt = UUID.randomUUID().toString().replaceAll("-", "");
|
||||||
|
user
|
||||||
|
.setUsername(phone)
|
||||||
|
.setAbId(a.getId())
|
||||||
|
.setRole("1")
|
||||||
|
.setSalt(salt)
|
||||||
|
.setPassword(DigestUtils.md5DigestAsHex((salt + "Fxkh@123456").getBytes()));
|
||||||
|
users.add(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AbUdR au = new AbUdR();
|
||||||
|
Integer i = sort.get() + 1;
|
||||||
|
au.setType("1")
|
||||||
|
.setAdId(a.getId())
|
||||||
|
.setDictId(a.getAdcd().replaceFirst("000000", ""))
|
||||||
|
.setSort(i);
|
||||||
|
abUdRs.add(au);
|
||||||
|
sort.set(i);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!userService.saveBatch(users)) {
|
||||||
|
throw new MyException("用户数据新增失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!abUdRService.saveBatch(abUdRs)) {
|
||||||
|
throw new MyException("关联数据新增失败");
|
||||||
|
}
|
||||||
|
return ResultJson.ok("数据新增成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getAdcd(List<AdcdTree> tree, String city, String county) {
|
||||||
|
for (AdcdTree a : tree) {
|
||||||
|
if (a.getAdnm().equals(city)) {
|
||||||
|
List<AdcdTree> children = a.getChildren();
|
||||||
|
if (a.getAdnm().equals(county)) {
|
||||||
|
county = "市本级";
|
||||||
|
}
|
||||||
|
for (AdcdTree b : children) {
|
||||||
|
if (b.getAdnm().equals(county)) {
|
||||||
|
return b.getAdcd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new MyException("当前市行政区划匹配失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void removeAdcd() {
|
||||||
|
List<AddressBook> addressBooks = service.lambdaQuery().likeLeft(AddressBook::getAdcd, "000000000")
|
||||||
|
.list();
|
||||||
|
boolean r1 = service.removeBatchByIds(addressBooks);
|
||||||
|
if (!r1) {
|
||||||
|
throw new MyException("通讯录数据删除失败");
|
||||||
|
}
|
||||||
|
List<Integer> abIds = addressBooks.stream().map(AddressBook::getId).collect(Collectors.toList());
|
||||||
|
LambdaQueryWrapper<AbUdR> aurQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
aurQueryWrapper.in(AbUdR::getAdId, abIds);
|
||||||
|
boolean remove1 = abUdRService.remove(aurQueryWrapper);
|
||||||
|
if (!remove1) {
|
||||||
|
throw new MyException("关联数据删除失败");
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<User> userQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
userQueryWrapper.in(User::getAbId, abIds);
|
||||||
|
boolean remove2 = userService.remove(userQueryWrapper);
|
||||||
|
if (!remove2) {
|
||||||
|
throw new MyException("用户账号删除失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ public class AdinfoServiceImpl extends ServiceImpl<AdinfoMapper, Adinfo> impleme
|
||||||
* @param adcd
|
* @param adcd
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Cacheable(cacheNames = {ADINFO_REDIS_KEY}, key = "getMethodName()", condition = "#adcd + #adnm", unless = "false")
|
// @Cacheable(cacheNames = {ADINFO_REDIS_KEY}, key = "getMethodName()", condition = "#adcd + #adnm", unless = "false")
|
||||||
public List<AdcdTree> tree(String adcd, String adnm) {
|
public List<AdcdTree> tree(String adcd, String adnm) {
|
||||||
|
|
||||||
if (TREE_ALL.equals(adcd)){
|
if (TREE_ALL.equals(adcd)){
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.whdc.mapper.OrganizationMapper;
|
import com.whdc.mapper.OrganizationMapper;
|
||||||
import com.whdc.model.entity.Organization;
|
import com.whdc.model.entity.Organization;
|
||||||
import com.whdc.model.entity.UnitDict;
|
import com.whdc.model.entity.UnitDict;
|
||||||
import com.whdc.model.vo.AdcdTree;
|
|
||||||
import com.whdc.service.IAdinfoService;
|
import com.whdc.service.IAdinfoService;
|
||||||
import com.whdc.service.IOrganizationService;
|
import com.whdc.service.IOrganizationService;
|
||||||
import com.whdc.service.IUnitDictService;
|
import com.whdc.service.IUnitDictService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
@ -18,6 +18,8 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.whdc.service.impl.AdinfoServiceImpl.TREE_ALL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 服务实现类
|
* 服务实现类
|
||||||
|
|
@ -48,17 +50,21 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Organization> findByUserId(String userId,String adcd) {
|
public List<Organization> findByUserId(String userId,String adcd) {
|
||||||
|
if (StringUtils.isBlank(adcd)){
|
||||||
|
adcd = TREE_ALL;
|
||||||
|
}
|
||||||
List<Organization> organizations = baseMapper.findByUserId(userId);
|
List<Organization> organizations = baseMapper.findByUserId(userId);
|
||||||
|
|
||||||
List<UnitDict> list = unitDictService.findByUserId(userId);
|
List<UnitDict> list = unitDictService.findByUserId(userId);
|
||||||
|
|
||||||
Map<Integer, List<UnitDict>> collect = list.stream().collect(Collectors.groupingBy(UnitDict::getOId));
|
Map<Integer, List<UnitDict>> collect = list.stream().collect(Collectors.groupingBy(UnitDict::getOId));
|
||||||
|
String finalAdcd = adcd;
|
||||||
organizations.forEach(organization -> {
|
organizations.forEach(organization -> {
|
||||||
List<UnitDict> unitDicts = collect.get(organization.getId());
|
List<UnitDict> unitDicts = collect.get(organization.getId());
|
||||||
organization.setUnitDicts(unitDicts);
|
organization.setUnitDicts(unitDicts);
|
||||||
String name = organization.getName();
|
String name = organization.getName();
|
||||||
if (name.contains("市") && name.contains("县")){
|
if (name.contains("市") && name.contains("县")){
|
||||||
organization.setAdinfoList(adinfoService.tree(adcd, adcd));
|
organization.setAdinfoList(adinfoService.tree(finalAdcd, finalAdcd));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- AND AB.ADCD ${dto.v} #{dto.adcd}-->
|
<!-- AND AB.ADCD ${dto.v} #{dto.adcd}-->
|
||||||
<select id="page" resultType="com.whdc.model.vo.AddressBookVo">
|
<select id="page" resultType="com.whdc.model.vo.AddressBookVo">
|
||||||
SELECT
|
SELECT
|
||||||
AB.*,F.SORT FSORT,F.ID FCID,U.ROLE,F.TYPE FTYPE,IF(O.NAME IS NULL,UD.NAME,O.NAME) ONAME,A.ADNM
|
AB.*,F.SORT FSORT,F.ID FCID,U.ROLE,F.TYPE FTYPE,IF(UD.NAME IS NOT NULL,UD.NAME,O.NAME) ONAME,A.ADNM
|
||||||
FROM
|
FROM
|
||||||
ADDRESS_BOOK AB
|
ADDRESS_BOOK AB
|
||||||
LEFT JOIN FC F ON F.AB_ID = AB.ID AND F.USER_ID = #{dto.userId}
|
LEFT JOIN FC F ON F.AB_ID = AB.ID AND F.USER_ID = #{dto.userId}
|
||||||
|
|
@ -68,7 +68,7 @@
|
||||||
|
|
||||||
<select id="getVoById" resultType="com.whdc.model.vo.AddressBookVo">
|
<select id="getVoById" resultType="com.whdc.model.vo.AddressBookVo">
|
||||||
SELECT
|
SELECT
|
||||||
AB.*,IF(O.NAME IS NULL,UD.NAME,O.NAME) ONAME,A.ADNM
|
AB.*,IF(UD.NAME IS NOT NULL,UD.NAME,O.NAME) ONAME,A.ADNM
|
||||||
FROM
|
FROM
|
||||||
ADDRESS_BOOK AB
|
ADDRESS_BOOK AB
|
||||||
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
|
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
|
||||||
|
|
@ -81,7 +81,7 @@
|
||||||
|
|
||||||
<select id="getVoByOpenid" resultType="com.whdc.model.vo.AddressBookVo">
|
<select id="getVoByOpenid" resultType="com.whdc.model.vo.AddressBookVo">
|
||||||
SELECT
|
SELECT
|
||||||
AB.*,IF(O.NAME IS NULL,UD.NAME,O.NAME) ONAME,A.ADNM
|
AB.*,IF(UD.NAME IS NOT NULL,UD.NAME,O.NAME) ONAME,A.ADNM
|
||||||
FROM
|
FROM
|
||||||
ADDRESS_BOOK AB
|
ADDRESS_BOOK AB
|
||||||
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
|
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue