diff --git a/src/main/java/com/whdc/controller/AddressBookCityController.java b/src/main/java/com/whdc/controller/AddressBookCityController.java new file mode 100644 index 0000000..3b737fe --- /dev/null +++ b/src/main/java/com/whdc/controller/AddressBookCityController.java @@ -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 page(@RequestBody AddressBookCityDto dto) { + LambdaQueryWrapper 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 insert(@RequestBody @Validated(Insert.class) AddressBookCity model) { + LambdaQueryWrapper 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 update(@RequestBody @Validated(Update.class) AddressBookCity model) { + + AddressBookCity obj = thisMapper.selectById(model.getId()); + if (Objects.isNull(obj)) { + return ResultJson.error("当前数据不存在"); + } + LambdaQueryWrapper 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 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 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 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 Import(MultipartFile file) { + + List 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("上传失败"); + } +} diff --git a/src/main/java/com/whdc/mapper/AddressBookCityMapper.java b/src/main/java/com/whdc/mapper/AddressBookCityMapper.java new file mode 100644 index 0000000..4e42449 --- /dev/null +++ b/src/main/java/com/whdc/mapper/AddressBookCityMapper.java @@ -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 { + + + + +} \ No newline at end of file diff --git a/src/main/java/com/whdc/model/dto/AddressBookCityDto.java b/src/main/java/com/whdc/model/dto/AddressBookCityDto.java new file mode 100644 index 0000000..dac8086 --- /dev/null +++ b/src/main/java/com/whdc/model/dto/AddressBookCityDto.java @@ -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; + +} diff --git a/src/main/java/com/whdc/model/entity/AddressBookCity.java b/src/main/java/com/whdc/model/entity/AddressBookCity.java new file mode 100644 index 0000000..9754b09 --- /dev/null +++ b/src/main/java/com/whdc/model/entity/AddressBookCity.java @@ -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; + +} diff --git a/src/main/java/com/whdc/service/IAddressBookCityService.java b/src/main/java/com/whdc/service/IAddressBookCityService.java new file mode 100644 index 0000000..6ac55f4 --- /dev/null +++ b/src/main/java/com/whdc/service/IAddressBookCityService.java @@ -0,0 +1,17 @@ +package com.whdc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.whdc.model.entity.AddressBookCity; + +/** + *

+ * 服务类 + *

+ * @author xusan + * @date 2024-05-11 + */ +public interface IAddressBookCityService extends IService { + + + +} \ No newline at end of file diff --git a/src/main/java/com/whdc/service/impl/AddressBookCityServiceImpl.java b/src/main/java/com/whdc/service/impl/AddressBookCityServiceImpl.java new file mode 100644 index 0000000..b1dc32d --- /dev/null +++ b/src/main/java/com/whdc/service/impl/AddressBookCityServiceImpl.java @@ -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; + +/** + *

+ * 服务实现类 + *

+ * + * @author xusan + * @date 2024-05-11 + */ +@Service +public class AddressBookCityServiceImpl extends ServiceImpl implements IAddressBookCityService { + + + +} diff --git a/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java b/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java index 2aadd60..ad0ecd1 100644 --- a/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java @@ -51,6 +51,8 @@ public class ShAddressBookServiceImpl extends ServiceImpl{ String phone = o.getPhone(); if (StringUtils.isNotBlank(phone)){ @@ -60,6 +62,9 @@ public class ShAddressBookServiceImpl extends ServiceImpl { // 设置负责区域 @@ -141,9 +146,7 @@ public class ShAddressBookServiceImpl extends ServiceImpl + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/ShCallsMapper.xml b/src/main/resources/mapper/ShCallsMapper.xml index 4242770..0cfbb8f 100644 --- a/src/main/resources/mapper/ShCallsMapper.xml +++ b/src/main/resources/mapper/ShCallsMapper.xml @@ -38,7 +38,7 @@ AND C.SH_AB_ID = #{dto.shAbId} - AND AB.PHONE = #{dto.phone} + AND AB.PHONE LIKE CONCAT('%', #{dto.phone}, '%') AND AB.LAND = #{dto.land}