新增市县通讯录导入导出接口
parent
31e95b7582
commit
ffc58cb901
|
|
@ -2,6 +2,7 @@ package com.whdc.controller;
|
|||
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.whdc.exception.MyException;
|
||||
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.data.redis.core.RedisTemplate;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.DigestUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.whdc.model.MyConstant.REDIS_KEY;
|
||||
|
|
@ -295,7 +296,7 @@ public class AddressBookController {
|
|||
organization = model.getAdcd().replaceFirst("000000", "");
|
||||
}
|
||||
Integer sort = model.getSort();
|
||||
if (0 != sort){
|
||||
if (0 != sort) {
|
||||
boolean update = abUdRService.lambdaUpdate()
|
||||
.set(AbUdR::getSort, sort)
|
||||
.set(AbUdR::getDictId, organization)
|
||||
|
|
@ -405,7 +406,6 @@ public class AddressBookController {
|
|||
}
|
||||
|
||||
|
||||
|
||||
@ApiOperation(value = "设置白名单")
|
||||
@PostMapping(value = "setWhitelists")
|
||||
public ResultJson setWhitelists(@RequestBody @Validated(Update.class) AddressBook model) {
|
||||
|
|
@ -437,7 +437,7 @@ public class AddressBookController {
|
|||
.set(AddressBook::getIsPass, model.getIsPass())
|
||||
.eq(AddressBook::getId, model.getId())
|
||||
.update();
|
||||
if (!update){
|
||||
if (!update) {
|
||||
throw new MyException("操作数据库失败");
|
||||
}
|
||||
return ResultJson.ok(update);
|
||||
|
|
@ -458,7 +458,7 @@ public class AddressBookController {
|
|||
}
|
||||
|
||||
User delUser = userService.lambdaQuery()
|
||||
.eq(User::getAbId,model.getId())
|
||||
.eq(User::getAbId, model.getId())
|
||||
.one();
|
||||
|
||||
switch (Objects.requireNonNull(Role.getByName(user.getRole()))) {
|
||||
|
|
@ -474,8 +474,6 @@ public class AddressBookController {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// List<Versions> list = versionsService.lambdaQuery()
|
||||
// .eq(Versions::getAbId, model.getId())
|
||||
// .list();
|
||||
|
|
@ -552,7 +550,9 @@ public class AddressBookController {
|
|||
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();
|
||||
|
||||
if (CollectionUtils.isEmpty(addressBooks)) {
|
||||
|
|
@ -567,21 +567,21 @@ public class AddressBookController {
|
|||
String finalAdnm = adnm;
|
||||
for (int i = 0; i < tree.size(); i++) {
|
||||
AdcdTree t = tree.get(i);
|
||||
String adcd = t.getAdcd();
|
||||
// String adcd = t.getAdcd();
|
||||
String cityAdnm = t.getAdnm();
|
||||
List<AddressBook> books = abMap.get(adcd);
|
||||
if (CollectionUtils.isEmpty(books)) {
|
||||
continue;
|
||||
}
|
||||
books.forEach(b -> {
|
||||
if (StringUtils.isNotBlank(finalAdnm)) {
|
||||
if (cityAdnm.equals(finalAdnm)) {
|
||||
data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
||||
}
|
||||
} else {
|
||||
data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
||||
}
|
||||
});
|
||||
// List<AddressBook> books = abMap.get(adcd);
|
||||
// if (CollectionUtils.isEmpty(books)) {
|
||||
// continue;
|
||||
// }
|
||||
// books.forEach(b -> {
|
||||
// if (StringUtils.isNotBlank(finalAdnm)) {
|
||||
// if (cityAdnm.equals(finalAdnm)) {
|
||||
// data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
||||
// }
|
||||
// } else {
|
||||
// data.add(new ExcelABVo(cityAdnm, cityAdnm, b.getName(), b.getPosition(), b.getPhone()));
|
||||
// }
|
||||
// });
|
||||
|
||||
List<AdcdTree> children = t.getChildren();
|
||||
if (CollectionUtils.isNotEmpty(children)) {
|
||||
|
|
@ -606,7 +606,6 @@ public class AddressBookController {
|
|||
}
|
||||
|
||||
}
|
||||
;
|
||||
|
||||
if (CollectionUtils.isEmpty(data)) {
|
||||
throw new MyException("当前行政区划责任人为空");
|
||||
|
|
@ -618,8 +617,8 @@ public class AddressBookController {
|
|||
}
|
||||
|
||||
@ApiOperation(value = "行政区划联系人导入")
|
||||
@GetMapping(value = "uploadExcel")
|
||||
public void uploadExcel(MultipartFile file) {
|
||||
@PostMapping(value = "uploadExcel")
|
||||
public ResultJson uploadExcel(MultipartFile file) {
|
||||
|
||||
List<ExcelABVo> appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class);
|
||||
|
||||
|
|
@ -627,11 +626,112 @@ public class AddressBookController {
|
|||
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);
|
||||
|
||||
appends.forEach(vo ->{
|
||||
List<AddressBook> abs = Lists.newArrayList();
|
||||
|
||||
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
|
||||
* @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) {
|
||||
|
||||
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.model.entity.Organization;
|
||||
import com.whdc.model.entity.UnitDict;
|
||||
import com.whdc.model.vo.AdcdTree;
|
||||
import com.whdc.service.IAdinfoService;
|
||||
import com.whdc.service.IOrganizationService;
|
||||
import com.whdc.service.IUnitDictService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -18,6 +18,8 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.whdc.service.impl.AdinfoServiceImpl.TREE_ALL;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
|
|
@ -48,17 +50,21 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
|
|||
|
||||
@Override
|
||||
public List<Organization> findByUserId(String userId,String adcd) {
|
||||
if (StringUtils.isBlank(adcd)){
|
||||
adcd = TREE_ALL;
|
||||
}
|
||||
List<Organization> organizations = baseMapper.findByUserId(userId);
|
||||
|
||||
List<UnitDict> list = unitDictService.findByUserId(userId);
|
||||
|
||||
Map<Integer, List<UnitDict>> collect = list.stream().collect(Collectors.groupingBy(UnitDict::getOId));
|
||||
String finalAdcd = adcd;
|
||||
organizations.forEach(organization -> {
|
||||
List<UnitDict> unitDicts = collect.get(organization.getId());
|
||||
organization.setUnitDicts(unitDicts);
|
||||
String name = organization.getName();
|
||||
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}-->
|
||||
<select id="page" resultType="com.whdc.model.vo.AddressBookVo">
|
||||
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
|
||||
ADDRESS_BOOK AB
|
||||
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
|
||||
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
|
||||
ADDRESS_BOOK AB
|
||||
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
|
||||
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
<select id="getVoByOpenid" resultType="com.whdc.model.vo.AddressBookVo">
|
||||
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
|
||||
ADDRESS_BOOK AB
|
||||
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
|
||||
|
|
|
|||
Loading…
Reference in New Issue