新增老平台数据库查询接口,excel导出接口,excel数据解析接口,excel导入接口

master
徐杰盟 2024-06-11 10:54:34 +08:00
parent 5de5e8429e
commit edbfafb2c6
12 changed files with 382 additions and 16 deletions

View File

@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSON;
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;
import com.whdc.model.dto.AddressBookDto;
import com.whdc.model.entity.AbUdR;
import com.whdc.model.entity.AddressBook;
import com.whdc.model.entity.Organization;
@ -94,7 +94,7 @@ public class AddressBookController {
@ApiOperation(value = "分页查询")
@PostMapping(value = "page")
public ResultJson<AddressBookVo> page(@RequestBody AddressBootDto dto) {
public ResultJson<AddressBookVo> page(@RequestBody AddressBookDto dto) {
dto.setUserId(String.valueOf(StpUtil.getLoginId()));
IPage<AddressBookVo> page = service.page(dto);
@ -604,8 +604,8 @@ public class AddressBookController {
}
@ApiOperation(value = "通过行政区划下载excel")
@GetMapping(value = "getExcel/{adnm}")
// @ApiOperation(value = "通过行政区划下载excel")
// @GetMapping(value = "getExcel/{adnm}")
public void getExcel(@PathVariable("adnm")
@ApiParam(value = "名称,all: 查询全部")
String adnm, HttpServletResponse response) {
@ -687,8 +687,8 @@ public class AddressBookController {
response);
}
@ApiOperation(value = "解析文件数据")
@PostMapping(value = "getExcelData")
// @ApiOperation(value = "解析文件数据")
// @PostMapping(value = "getExcelData")
public ResultJson<ExcelDataVo> getExcelData(MultipartFile file) {
List<ExcelABVo> appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class);
@ -703,8 +703,8 @@ public class AddressBookController {
return ResultJson.ok(excelDataVo);
}
@ApiOperation(value = "行政区划联系人导入")
@PostMapping(value = "uploadExcel")
// @ApiOperation(value = "行政区划联系人导入")
// @PostMapping(value = "uploadExcel")
public ResultJson uploadExcel(@RequestBody ExcelDataVo data) {
// List<ExcelABVo> appends = ExcelCommon.importExcel(file, 0, 1, ExcelABVo.class);

View File

@ -0,0 +1,140 @@
package com.whdc.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.whdc.exception.MyException;
import com.whdc.model.dto.AddressBookOldDto;
import com.whdc.model.entity.AddressBookOld;
import com.whdc.model.vo.ExcelDataVo;
import com.whdc.service.IAddressBookOldService;
import com.whdc.utils.ExcelCommon;
import com.whdc.utils.ResultJson;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.transaction.annotation.Transactional;
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.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.whdc.model.MyConstant.REDIS_KEY;
/**
* Description:
* Created by XuSan on 2024/6/11.
*
* @author XuSan
* @version 1.0
*/
@Slf4j
@Api(tags = "web通讯录 - Controller")
@RestController
@RequestMapping("/addressbookOld")
@Transactional
public class AddressBookOldController {
@Autowired
private IAddressBookOldService service;
public static final String ADDRESS_BOOK_REDIS_KEY = REDIS_KEY + "addressbookOld";
public static final String ADDRESS_BOOK_TEMP_REDIS_KEY = ADDRESS_BOOK_REDIS_KEY + "temp:";
@Autowired
private RedisTemplate<String,String> redisTemplate;
@ApiOperation(value = "查询所有联系人")
@PostMapping(value = "find")
public ResultJson<List<AddressBookOld>> find(@RequestBody AddressBookOldDto dto) {
LambdaQueryChainWrapper<AddressBookOld> query = service.lambdaQuery();
String name = dto.getName();
if (StringUtils.isNotBlank(name)){
query.like(AddressBookOld::getName, name);
}
String phone = dto.getPhone();
if (StringUtils.isNotBlank(phone)){
query.like(AddressBookOld::getPhone, phone);
}
List<AddressBookOld> data = query.list();
return ResultJson.ok(data);
}
@ApiOperation(value = "下载excel")
@GetMapping(value = "downloadExcel")
public void downloadExcel( HttpServletResponse response) {
List<AddressBookOld> list = service.lambdaQuery()
.list();
ExcelCommon.exportExcel(list,
null, "防汛抗旱通讯录", AddressBookOld.class, "防汛抗旱通讯录_" + LocalDateTime.now() + ".xlsx",
response);
}
@ApiOperation(value = "解析文件数据")
@PostMapping(value = "getExcelData")
public ResultJson<ExcelDataVo> getExcelData(MultipartFile file) {
List<AddressBookOld> appends = ExcelCommon.importExcel(file, 0, 1, AddressBookOld.class);
ExcelDataVo excelDataVo = new ExcelDataVo();
if (CollectionUtils.isNotEmpty(appends)){
String key = UUID.randomUUID().toString().replaceAll("-", "");
redisTemplate.opsForValue().set(ADDRESS_BOOK_TEMP_REDIS_KEY + key, JSON.toJSONString(appends), 30, TimeUnit.MINUTES);
excelDataVo.setKey(key);
}
return ResultJson.ok(excelDataVo);
}
@ApiOperation(value = "联系人导入")
@PostMapping(value = "uploadExcel")
public ResultJson uploadExcel(@RequestBody ExcelDataVo data) {
String s = redisTemplate.opsForValue().get(ADDRESS_BOOK_TEMP_REDIS_KEY + data.getKey());
if (StringUtils.isBlank(s)){
throw new MyException("文件已过期");
}
List<AddressBookOld> appends = JSON.parseArray(s, AddressBookOld.class);
if (CollectionUtils.isEmpty(appends)) {
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("联系人重复");
}
LambdaQueryChainWrapper<AddressBookOld> deleteAll = service.lambdaQuery();
deleteAll.gt(AddressBookOld::getId,0);
boolean r1 = service.remove(deleteAll);
if (!r1) {
throw new MyException("通讯录数据删除失败");
}
if (!service.saveBatch(appends)) {
throw new MyException("表格数据新增失败");
}
return ResultJson.ok("数据新增成功");
}
}

View File

@ -2,7 +2,7 @@ package com.whdc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.whdc.model.dto.AddressBootDto;
import com.whdc.model.dto.AddressBookDto;
import com.whdc.model.entity.AddressBook;
import com.whdc.model.vo.AddressBookVo;
import org.apache.ibatis.annotations.Param;
@ -15,7 +15,7 @@ import java.util.List;
*/
public interface AddressBookMapper extends BaseMapper<AddressBook> {
IPage<AddressBookVo> page(@Param("page") IPage<AddressBook> page, @Param("dto") AddressBootDto dto);
IPage<AddressBookVo> page(@Param("page") IPage<AddressBook> page, @Param("dto") AddressBookDto dto);
List<AddressBook> find(@Param("dto") AddressBook dto);

View File

@ -0,0 +1,13 @@
package com.whdc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.whdc.model.entity.AddressBookOld;
/**
* @author xusan
* @date 2024-05-11
*/
public interface AddressBookOldMapper extends BaseMapper<AddressBookOld> {
}

View File

@ -8,7 +8,7 @@ import lombok.Data;
* @date 202332008:57:22
*/
@Data
public class AddressBootDto extends CommDto{
public class AddressBookDto extends CommDto{
@ApiModelProperty(value = "用户单位id 或 组织id")
private String dictId;

View File

@ -0,0 +1,18 @@
package com.whdc.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author xusan
* @date 202332008:57:22
*/
@Data
public class AddressBookOldDto{
@ApiModelProperty(value = "名字")
private String name;
@ApiModelProperty(value = "手机号")
private String phone;
}

View File

@ -0,0 +1,63 @@
package com.whdc.model.entity;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.whdc.model.group.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* Description:
* Created by XuSan on 2024/6/11.
*
* @author XuSan
* @version 1.0
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@ApiModel(description = "通讯录")
@TableName("FXKH_TXL.ADDRESS_BOOK_OLD")
public class AddressBookOld extends Model<AddressBookOld> implements Serializable {
@TableId(value = "ID",type = IdType.AUTO)
@ApiModelProperty(value = "id")
@NotNull(message = "id不能为空" , groups = {Update.class})
private Integer id;
@Excel(name = "市", width = 20)
@TableField("CTNM")
@ApiModelProperty(value = "市")
private String ctnm;
@Excel(name = "区县", width = 20)
@TableField("CNNM")
@ApiModelProperty(value = "区县")
private String cnnm;
@Excel(name = "姓名", width = 20)
@TableField("NAME")
@ApiModelProperty(value = "姓名")
private String name;
@Excel(name = "职务", width = 50)
@TableField("POSITION")
@ApiModelProperty(value = "职务")
private String position;
@Excel(name = "手机号", width = 30)
@TableField("PHONE")
@ApiModelProperty(value = "手机号")
private String phone;
}

View File

@ -0,0 +1,16 @@
package com.whdc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.whdc.model.entity.AddressBookOld;
/**
* <p>
*
* </p>
* @author xusan
* @date 2024-05-11
*/
public interface IAddressBookOldService extends IService<AddressBookOld> {
}

View File

@ -2,10 +2,9 @@ package com.whdc.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.whdc.model.dto.AddressBootDto;
import com.whdc.model.dto.AddressBookDto;
import com.whdc.model.entity.AddressBook;
import com.whdc.model.vo.AddressBookVo;
import com.whdc.model.vo.ExcelABVo;
import java.util.List;
@ -19,7 +18,7 @@ import java.util.List;
public interface IAddressBookService extends IService<AddressBook> {
// 获取所有规则分页
IPage<AddressBookVo> page(AddressBootDto dto);
IPage<AddressBookVo> page(AddressBookDto dto);
// 获取所有规则
List<AddressBook> find(AddressBook dto);

View File

@ -0,0 +1,23 @@
package com.whdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.whdc.mapper.AddressBookOldMapper;
import com.whdc.model.dto.AddressBookOldDto;
import com.whdc.model.entity.AddressBookOld;
import com.whdc.service.IAddressBookOldService;
import org.springframework.stereotype.Service;
/**
* <p>
*
* </p>
*
* @author xusan
* @date 2024-05-11
*/
@Service
public class AddressBookOldServiceImpl extends ServiceImpl<AddressBookOldMapper, AddressBookOld> implements IAddressBookOldService {
}

View File

@ -3,7 +3,7 @@ package com.whdc.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.whdc.mapper.AddressBookMapper;
import com.whdc.model.dto.AddressBootDto;
import com.whdc.model.dto.AddressBookDto;
import com.whdc.model.entity.AddressBook;
import com.whdc.model.vo.AddressBookVo;
import com.whdc.service.IAddressBookService;
@ -28,7 +28,7 @@ public class AddressBookServiceImpl extends ServiceImpl<AddressBookMapper, Addre
@Override
public IPage<AddressBookVo> page(AddressBootDto dto) {
public IPage<AddressBookVo> page(AddressBookDto dto) {
String adcd = dto.getAdcd();

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whdc.mapper.AddressBookOldMapper">
<!-- 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(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}
LEFT JOIN ORGANIZATION O ON AB.ORGANIZATION = O.ID
LEFT JOIN UNIT_DICT UD ON AB.ORGANIZATION = UD.ID
LEFT JOIN ADINFO A ON AB.ADCD = A.ADCD
LEFT JOIN AB_UD_R R ON R.AD_ID = AB.ID
LEFT JOIN USERS U ON U.AB_ID = AB.ID
WHERE 1=1
<if test="dto.dictId != null and dto.dictId != '' ">
AND R.DICT_ID = #{dto.dictId}
</if>
<if test="dto.type != null and dto.type != '' ">
AND R.TYPE = #{dto.type}
</if>
<if test="dto.ftype != null and dto.ftype != '' ">
AND F.TYPE = #{dto.ftype}
</if>
<if test="dto.name != null and dto.name != '' ">
AND AB.NAME LIKE CONCAT('%', #{dto.name}, '%')
</if>
<if test="dto.adcd != null and dto.adcd != '' ">
AND AB.ADCD ${dto.v} #{dto.adcd}
</if>
<if test="dto.phone != null and dto.phone != '' ">
AND AB.PHONE LIKE CONCAT('', #{dto.phone}, '%')
</if>
<if test="dto.allLikeStr != null and dto.allLikeStr != '' ">
AND (
AB.NAME LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR AB.PHONE LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR AB.TEL LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR AB.FAXES LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR O.NAME LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR UD.NAME LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR A.ADNM LIKE CONCAT('%', #{dto.allLikeStr}, '%')
OR AB.POSITION LIKE CONCAT('%', #{dto.allLikeStr}, '%')
)
</if>
ORDER BY F.SORT NULLS LAST,F.SORT,R.SORT,AB.SORT
</select>
<select id="getListByAdnm" resultType="com.whdc.model.entity.AddressBook">
SELECT
AB.*,
A.ADNM
FROM
ADDRESS_BOOK AB
LEFT JOIN ADINFO A ON AB.ADCD = A.ADCD AND AB.ADCD IS NOT NULL
LEFT JOIN AB_UD_R R ON R.AD_ID = AB.ID
<where>
<if test="adcd != null and adcd != '' ">
A.ADCD = #{adcd}
</if>
</where>
ORDER BY R.SORT
</select>
<select id="getVoById" resultType="com.whdc.model.vo.AddressBookVo">
SELECT
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
LEFT JOIN UNIT_DICT UD ON AB.ORGANIZATION = UD.ID
LEFT JOIN ADINFO A ON AB.ADCD = A.ADCD
WHERE AB.id = #{id}
</select>
<select id="getVoByOpenid" resultType="com.whdc.model.vo.AddressBookVo">
SELECT
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
LEFT JOIN UNIT_DICT UD ON AB.ORGANIZATION = UD.ID
LEFT JOIN ADINFO A ON AB.ADCD = A.ADCD
WHERE AB.OPENID = #{id}
</select>
</mapper>