市级责任人抽查模块开发

master
徐杰盟 2024-08-21 17:18:02 +08:00
parent 7e4772db46
commit da00fc2b1a
10 changed files with 402 additions and 15 deletions

View File

@ -0,0 +1,185 @@
package com.whdc.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.whdc.mapper.AddressBookCityMapper;
import com.whdc.model.dto.AddressBookCityDto;
import com.whdc.model.entity.AddressBookCity;
import com.whdc.model.group.Insert;
import com.whdc.model.group.Update;
import com.whdc.service.IAddressBookCityService;
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.transaction.annotation.Transactional;
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.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import static com.whdc.model.MyConstant.DEL;
import static com.whdc.model.MyConstant.REC;
/**
* Description:
* Created by XuSan on 2024/8/21.
*
* @author XuSan
* @version 1.0
*/
@Slf4j
@Api(tags = "市级责任人通讯录 - Controller")
@RestController
@RequestMapping("/addressbookCity")
@Transactional
public class AddressBookCityController {
@Autowired
private AddressBookCityMapper thisMapper;
@Autowired
private IAddressBookCityService thisService;
@ApiOperation(value = "分页查询")
@PostMapping(value = "page")
public ResultJson<AddressBookCity> page(@RequestBody AddressBookCityDto dto) {
LambdaQueryWrapper<AddressBookCity> query = new LambdaQueryWrapper<>();
if (!Objects.isNull(dto.getName())) {
query.like(AddressBookCity::getName, dto.getName());
}
if (!Objects.isNull(dto.getUnit())) {
query.like(AddressBookCity::getUnit, dto.getUnit());
}
if (!Objects.isNull(dto.getPhone())) {
query.like(AddressBookCity::getPhone, dto.getPhone());
}
query.eq(AddressBookCity::getDel, REC);
query.orderByAsc(AddressBookCity::getId);
return ResultJson.ok(thisMapper.selectPage(dto.getPage(), query));
}
@ApiOperation(value = "添加")
@PostMapping(value = "save")
public ResultJson<Boolean> insert(@RequestBody @Validated(Insert.class) AddressBookCity model) {
LambdaQueryWrapper<AddressBookCity> query = new LambdaQueryWrapper<>();
query.eq(AddressBookCity::getName, model.getName());
query.eq(AddressBookCity::getPhone, model.getPhone());
query.eq(AddressBookCity::getDel, REC);
if (thisMapper.selectCount(query) > 0) {
return ResultJson.error("当前名字,手机号已存在");
}
model.setId(null);
return ResultJson.ok(thisMapper.insert(model) == 1);
}
@ApiOperation(value = "修改")
@PostMapping(value = "edit")
public ResultJson<Boolean> update(@RequestBody @Validated(Update.class) AddressBookCity model) {
AddressBookCity obj = thisMapper.selectById(model.getId());
if (Objects.isNull(obj)) {
return ResultJson.error("当前数据不存在");
}
LambdaQueryWrapper<AddressBookCity> query = new LambdaQueryWrapper<>();
query.eq(AddressBookCity::getName, model.getName());
query.eq(AddressBookCity::getPhone, model.getPhone());
query.eq(AddressBookCity::getDel, REC);
query.ne(AddressBookCity::getId, model.getId());
if (thisMapper.selectCount(query) > 0) {
return ResultJson.error("当前名字,手机号已存在");
}
return ResultJson.ok(thisMapper.updateById(model) == 1);
}
@ApiOperation(value = "删除")
@GetMapping(value = "del/{id}")
public ResultJson<Boolean> delete(@PathVariable("id") Integer id) {
if (Objects.isNull(thisMapper.selectById(id))) {
return ResultJson.error("当前数据不存在");
}
return ResultJson.ok(thisMapper.deleteById(id) == 1);
}
@ApiOperation(value = "导出")
@PostMapping(value = "download")
public void download(HttpServletResponse response,@RequestBody AddressBookCityDto dto) {
LambdaQueryWrapper<AddressBookCity> query = new LambdaQueryWrapper<>();
if (!Objects.isNull(dto.getName())) {
query.like(AddressBookCity::getName, dto.getName());
}
if (!Objects.isNull(dto.getUnit())) {
query.like(AddressBookCity::getUnit, dto.getUnit());
}
if (!Objects.isNull(dto.getPhone())) {
query.like(AddressBookCity::getPhone, dto.getPhone());
}
query.eq(AddressBookCity::getDel, REC);
query.orderByAsc(AddressBookCity::getId);
List<AddressBookCity> list = thisMapper.selectList(query);
AtomicInteger i = new AtomicInteger(1);
list.forEach(o -> o.setId(i.getAndIncrement()));
ExcelCommon.exportExcel(list,
null, "市级责任人通讯录", AddressBookCity.class, "市级责任人通讯录" + LocalDateTime.now() + ".xlsx",
response);
}
@ApiOperation(value = "导入")
@PostMapping(value = "Import")
public ResultJson<String> Import(MultipartFile file) {
List<AddressBookCity> appends = ExcelCommon.importExcel(file, 0, 1, AddressBookCity.class);
if (CollectionUtils.isNotEmpty(appends)) {
long count = appends.stream().filter(o -> StringUtils.isEmpty(o.getName()) || StringUtils.isEmpty(o.getPhone()))
.count();
if (count > 0) {
return ResultJson.error("姓名和手机号不能为空");
}
boolean update = thisService.lambdaUpdate().set(AddressBookCity::getDel, DEL)
.eq(AddressBookCity::getDel, REC)
.update();
if (!update) {
log.info("更新失败");
}
appends.forEach(o -> o.setId(null)
.setName(StringUtils.deleteWhitespace(o.getName()))
.setPhone(StringUtils.deleteWhitespace(o.getPhone()))
.setUnit(StringUtils.deleteWhitespace(o.getUnit()))
.setPosition(StringUtils.deleteWhitespace(o.getPosition()))
.setComments(StringUtils.deleteWhitespace(o.getComments()))
);
boolean data = thisService.saveBatch(appends);
if (data) {
return ResultJson.ok("上传成功");
}
}
return ResultJson.error("上传失败");
}
}

View File

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

View File

@ -0,0 +1,41 @@
package com.whdc.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Author xusan
* @Date 2024/5/13 10:17
* @Notes
**/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(description = "市县通讯录")
public class AddressBookCityDto extends FindPageDto {
/**
*
*/
@Schema(description = "职务")
private String unit;
/**
*
*/
@Schema(description = "姓名")
private String name;
/**
*
*/
@Schema(description = "电话")
private String phone;
}

View File

@ -0,0 +1,98 @@
package com.whdc.model.entity;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.*;
import com.whdc.model.group.Insert;
import com.whdc.model.group.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* Description:
* Created by XuSan on 2024/8/21.
*
* @author XuSan
* @version 1.0
*/
@Schema(description = "市县责任人通讯录")
@Data
@Accessors(chain = true)
@TableName(value = "FXKH_TXL.ADDRESS_BOOK_CITY",autoResultMap = true)
public class AddressBookCity implements Serializable {
public final static String thisTableName = "AddressBookCity";
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
@Schema(description = "主键id")
@NotNull(message = "主键id不能为空",groups = Update.class)
@Excel(name = "序号", width = 20,orderNum = "0")
private Integer id;
/**
*
*/
@TableField(value = "UNIT")
@Schema(description = "职务")
@Size(max = 50, message = "职务最大长度要小于 50")
@Excel(name = "单位", width = 40,orderNum = "1")
private String unit;
/**
*
*/
@TableField(value = "name")
@Schema(description = "姓名")
@Size(max = 50, message = "名字最大长度要小于 50")
@NotEmpty(message = "姓名不能为空",groups = {Insert.class,Update.class})
@Excel(name = "姓名", width = 20,orderNum = "2")
private String name;
/**
*
*/
@TableField(value = "position")
@Schema(description = "职务")
@Size(max = 50, message = "职务最大长度要小于 50")
@Excel(name = "职务", width = 20,orderNum = "3")
private String position;
/**
*
*/
@TableField(value = "phone")
@Schema(description = "电话")
@Size(max = 50, message = "电话最大长度要小于 50")
@NotEmpty (message = "电话不能为空",groups = {Insert.class,Update.class})
@Excel(name = "电话", width = 20,orderNum = "4")
private String phone;
/**
*
*/
@TableField(value = "COMMENTS",updateStrategy = FieldStrategy.IGNORED)
@Schema(description = "备注")
@Size(max = 50, message = "备注最大长度要小于 50")
@Excel(name = "备注", width = 20,orderNum = "4")
private String comments;
/**
*
*/
@TableField(value = "DEL")
@Schema(description = "删除标识:1:未删除,0:已删除")
private String del;
}

View File

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

View File

@ -0,0 +1,22 @@
package com.whdc.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.whdc.mapper.AddressBookCityMapper;
import com.whdc.model.entity.AddressBookCity;
import com.whdc.service.IAddressBookCityService;
import org.springframework.stereotype.Service;
/**
* <p>
*
* </p>
*
* @author xusan
* @date 2024-05-11
*/
@Service
public class AddressBookCityServiceImpl extends ServiceImpl<AddressBookCityMapper, AddressBookCity> implements IAddressBookCityService {
}

View File

@ -51,6 +51,8 @@ public class ShAddressBookServiceImpl extends ServiceImpl<ShAddressBookMapper, S
throw new MyException("文件解析数据为空"); throw new MyException("文件解析数据为空");
} }
AtomicInteger sort = new AtomicInteger(0);
appends.forEach(o->{ appends.forEach(o->{
String phone = o.getPhone(); String phone = o.getPhone();
if (StringUtils.isNotBlank(phone)){ if (StringUtils.isNotBlank(phone)){
@ -60,6 +62,9 @@ public class ShAddressBookServiceImpl extends ServiceImpl<ShAddressBookMapper, S
if (StringUtils.isNotBlank(name)){ if (StringUtils.isNotBlank(name)){
o.setName(StringUtils.deleteWhitespace(name)); o.setName(StringUtils.deleteWhitespace(name));
} }
if (Objects.isNull(o.getSort())) {
o.setSort(sort.getAndIncrement());
}
}); });
// 去重 // 去重
@ -103,7 +108,7 @@ public class ShAddressBookServiceImpl extends ServiceImpl<ShAddressBookMapper, S
// 添加第一类型 // 添加第一类型
String finalType1Str1 = type1Str; String finalType1Str1 = type1Str;
AtomicInteger sort = new AtomicInteger(0);
appends.forEach(o -> { appends.forEach(o -> {
// 设置负责区域 // 设置负责区域
@ -141,9 +146,7 @@ public class ShAddressBookServiceImpl extends ServiceImpl<ShAddressBookMapper, S
} }
o.setType1(finalType1Str1); o.setType1(finalType1Str1);
if (Objects.isNull(o.getSort())) {
o.setSort(sort.getAndIncrement());
}
}); });
boolean b = this.saveBatch(appends); boolean b = this.saveBatch(appends);

View File

@ -11,12 +11,12 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: dm.jdbc.driver.DmDriver driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL # url: jdbc:dm://local.gunshiiot.com:5236?schema=FXKH_TXL
username: SYSDBA # username: SYSDBA
password: SYSDBA001 # password: SYSDBA001
# url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL url: jdbc:dm://10.42.6.247:5236?schema=FXKH_TXL
# username: SHZH username: SHZH
# password: Shzh_890 password: Shzh_890
druid: druid:
initialSize: 5 initialSize: 5
minIdle: 5 minIdle: 5
@ -41,13 +41,13 @@ spring:
# Redis # Redis
redis: redis:
database: 5 database: 5
# host: 10.42.6.75 host: 10.42.6.75
password: Whdc_890
# host: 10.0.41.112
# password: 1234567a
# host: 127.0.0.1 # host: 127.0.0.1
# password: # password:
# password: Whdc_890
port: 6379 port: 6379
host: 10.0.41.112
password: 1234567a
servlet: servlet:
multipart: multipart:
max-file-size: 1100MB max-file-size: 1100MB

View File

@ -0,0 +1,6 @@
<?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.AddressBookCityMapper">
</mapper>

View File

@ -38,7 +38,7 @@
AND C.SH_AB_ID = #{dto.shAbId} AND C.SH_AB_ID = #{dto.shAbId}
</if> </if>
<if test="dto.phone != null and dto.phone != '' "> <if test="dto.phone != null and dto.phone != '' ">
AND AB.PHONE = #{dto.phone} AND AB.PHONE LIKE CONCAT('%', #{dto.phone}, '%')
</if> </if>
<if test="dto.land != null and dto.land != '' "> <if test="dto.land != null and dto.land != '' ">
AND AB.LAND = #{dto.land} AND AB.LAND = #{dto.land}