From a8dedb325eab34e2bc5ca72bfdcef0dc958da69e Mon Sep 17 00:00:00 2001 From: xjm Date: Thu, 1 Aug 2024 17:41:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=B1=E6=B4=AA=E8=B4=A3=E4=BB=BB=E4=BA=BA?= =?UTF-8?q?=E4=BF=AE=E6=94=B9,=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2,?= =?UTF-8?q?=E6=8A=BD=E6=9F=A5=E6=97=A5=E5=BF=97=E6=96=B0=E5=A2=9E,?= =?UTF-8?q?=E7=BB=BC=E8=BF=B0,=E6=8A=BD=E6=9F=A5=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=AF=BC=E5=87=BA,=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2,?= =?UTF-8?q?=E5=A4=87=E6=B3=A8=E5=86=85=E5=AE=B9=E6=96=B0=E5=A2=9E=E4=BF=AE?= =?UTF-8?q?=E6=94=B9,=E9=98=B2=E6=B1=9B=E5=91=A8=E6=9C=9F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E,=E4=BF=AE=E6=94=B9=E7=AD=89=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=87=AA=E6=B5=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ShAddressBookController.java | 44 +++-- .../whdc/controller/ShCallWordController.java | 2 + .../whdc/controller/ShCallsController.java | 88 ++++++++-- .../whdc/controller/ShPeriodController.java | 2 + .../java/com/whdc/mapper/ShCallsMapper.java | 4 +- .../com/whdc/model/dto/ShAddressBookDto.java | 3 + .../java/com/whdc/model/dto/ShCallsDto.java | 8 +- .../com/whdc/model/entity/ShAddressBook.java | 13 +- .../java/com/whdc/model/entity/ShCalls.java | 5 + .../java/com/whdc/model/enums/CallType.java | 72 +++++++++ .../com/whdc/model/enums/CallingType.java | 72 +++++++++ .../com/whdc/model/vo/ShCallsExcelVo.java | 104 ++++++++++++ .../java/com/whdc/service/ShCallsService.java | 5 +- .../impl/ShAddressBookServiceImpl.java | 96 +++++++++-- .../whdc/service/impl/ShCallsServiceImpl.java | 10 +- src/main/java/com/whdc/utils/DateUtils.java | 11 ++ .../resources/mapper/ShAddressBookMapper.xml | 14 +- src/main/resources/mapper/ShCallsMapper.xml | 151 ++++++++++++++++++ 18 files changed, 656 insertions(+), 48 deletions(-) create mode 100644 src/main/java/com/whdc/model/enums/CallType.java create mode 100644 src/main/java/com/whdc/model/enums/CallingType.java create mode 100644 src/main/java/com/whdc/model/vo/ShCallsExcelVo.java diff --git a/src/main/java/com/whdc/controller/ShAddressBookController.java b/src/main/java/com/whdc/controller/ShAddressBookController.java index 3cb2c34..ee2f2f4 100644 --- a/src/main/java/com/whdc/controller/ShAddressBookController.java +++ b/src/main/java/com/whdc/controller/ShAddressBookController.java @@ -26,6 +26,9 @@ import javax.validation.constraints.Pattern; import java.util.List; import java.util.Objects; +import static com.whdc.model.MyConstant.DEL; +import static com.whdc.model.MyConstant.REC; + /** * 描述: 山洪责任人通讯录 * author: xusan @@ -43,19 +46,36 @@ public class ShAddressBookController { @ApiOperation(value = "修改") @PostMapping("/update") public ResultJson update(@Validated(Update.class) @RequestBody ShAddressBook dto) { - if (Objects.isNull(service.getById(dto.getId()))){ + ShAddressBook dbData = service.getById(dto.getId()); + if (Objects.isNull(dbData)){ throw new MyException("当前数据不存在"); } - dto - .setLand(null) - .setCity(null) - .setCounty(null) - .setArea(null) - .setVillage(null) - .setType2(null) - .setType1(null); - boolean result = service.updateById(dto); + boolean result; + // 判断是新增还是修改 名字相同是修改 + if (StringUtils.isNotBlank(dto.getName()) && StringUtils.isNotBlank(dbData.getName()) && !dto.getName().equals(dbData.getName())){ + dbData + .setName(dto.getName()) + .setPhone(dto.getPhone()) + .setPosition(dto.getPosition()); + result = service.updateById(dbData); + }else{ + // 删除原数据 + boolean update = service.lambdaUpdate().set(ShAddressBook::getDel, DEL) + .eq(ShAddressBook::getId, dto.getId()) + .update(); + if (!update){ + throw new MyException("修改原数据失败"); + } + // 新增 + dbData.setId(null) + .setName(dto.getName()) + .setPhone(dto.getPhone()) + .setPosition(dto.getPosition()); + result = service.save(dbData); + } + + return ResultJson.ok(result ? dto : null); } @@ -221,7 +241,9 @@ public class ShAddressBookController { query.like(ShAddressBook::getPhone, phone); } - query.orderByAsc(ShAddressBook::getSort); + query + .eq(ShAddressBook::getDel, REC) + .orderByAsc(ShAddressBook::getSort); List list = service.list(query); diff --git a/src/main/java/com/whdc/controller/ShCallWordController.java b/src/main/java/com/whdc/controller/ShCallWordController.java index 1c6786b..ef8c6db 100644 --- a/src/main/java/com/whdc/controller/ShCallWordController.java +++ b/src/main/java/com/whdc/controller/ShCallWordController.java @@ -43,6 +43,7 @@ public class ShCallWordController { if (Objects.nonNull(dto.getShPeriodId()) && Objects.isNull(shPeriodService.getById(dto.getShPeriodId()))){ throw new MyException("当前防汛周期不存在"); } + dto.setId(null); dto.setCreateTime(new Date()); boolean result = service.save(dto); return ResultJson.ok(result ? dto : null); @@ -57,6 +58,7 @@ public class ShCallWordController { if (Objects.nonNull(dto.getShPeriodId()) && Objects.isNull(shPeriodService.getById(dto.getShPeriodId()))){ throw new MyException("当前防汛周期不存在"); } + dto.setCreateTime(null); boolean result = service.updateById(dto); return ResultJson.ok(result ? dto : null); } diff --git a/src/main/java/com/whdc/controller/ShCallsController.java b/src/main/java/com/whdc/controller/ShCallsController.java index a47c4b1..14c9049 100644 --- a/src/main/java/com/whdc/controller/ShCallsController.java +++ b/src/main/java/com/whdc/controller/ShCallsController.java @@ -3,12 +3,14 @@ package com.whdc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.whdc.exception.MyException; -import com.whdc.model.dto.ShAddressBookDto; import com.whdc.model.dto.ShCallsDto; import com.whdc.model.entity.ShAddressBook; import com.whdc.model.entity.ShCallWord; import com.whdc.model.entity.ShCalls; +import com.whdc.model.enums.CallType; +import com.whdc.model.enums.CallingType; import com.whdc.model.group.Insert; +import com.whdc.model.vo.ShCallsExcelVo; import com.whdc.model.vo.ShCallsVo; import com.whdc.service.ShAddressBookService; import com.whdc.service.ShCallsService; @@ -17,6 +19,8 @@ import com.whdc.utils.ExcelCommon; import com.whdc.utils.ResultJson; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -26,10 +30,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -56,7 +63,7 @@ public class ShCallsController { throw new MyException("当前通讯录不存在"); } - if (StringUtils.isNotBlank(dto.getStatus()) && "0".equals(dto.getCallType())){ + if (StringUtils.isNotBlank(dto.getCallType()) && "0".equals(dto.getCallType())){ boolean update = shAddressBookService.lambdaUpdate() .set(ShAddressBook::getCallStatus, dto.getCallType()) .eq(ShAddressBook::getId, dto.getShAbId()) @@ -64,7 +71,11 @@ public class ShCallsController { if (!update){ throw new MyException("更新通讯录状态失败"); } + dto.setStatus("1"); + }else{ + dto.setStatus("0"); } + dto.setId(null); boolean result = service.save(dto); return ResultJson.ok(result ? dto : null); } @@ -93,38 +104,81 @@ public class ShCallsController { @ApiOperation(value = "综述") @PostMapping("/statistics") - public ResultJson statistics(@RequestBody ShCallsDto dto) { + public ResultJson statistics(@RequestBody @Validated ShCallsDto dto) { - List list = service.list(dto); + List list = service.listVo(dto); - String dateStr = dto.getDate().format(DateTimeFormatter.ofPattern(DateUtils.DATE_PATTERN)); - List citys = list.stream().map(ShCallsVo::getCity).distinct().collect(Collectors.toList()); - List countys = list.stream().map(ShCallsVo::getCounty).distinct().collect(Collectors.toList()); + String dateStr = LocalDate.parse(dto.getDate(),DateTimeFormatter.ofPattern(DateUtils.DATE_PATTERN1)) + .format(DateTimeFormatter.ofPattern(DateUtils.DATE_PATTERN)); + List citys = list.stream().map(ShCallsVo::getCity).distinct().filter(StringUtils::isNotBlank).collect(Collectors.toList()); + List countys = list.stream().map(ShCallsVo::getCounty).distinct().filter(StringUtils::isNotBlank).collect(Collectors.toList()); - return ResultJson.ok(String.format("%%抽查了%%个市(%%)%%个县(%%)县乡村山洪灾害防御责任人和包保责任人共计%%人。", +// return ResultJson.ok(String.format("%%抽查了%%个市(%%)%%个县(%%)县乡村山洪灾害防御责任人和包保责任人共计%%人。", + return ResultJson.ok(String.format("%s抽查了%d个市(%s)%d个县(%s)县乡村山洪灾害防御责任人和包保责任人共计%d人。", dateStr, citys.size(), StringUtils.join(citys, ","), countys.size(), StringUtils.join(countys, ","), - list.stream().map(ShCallsVo::getPhone).distinct().count() + list.stream().map(ShCallsVo::getPhone).distinct().filter(StringUtils::isNotBlank).count() )); } - @ApiOperation(value = "抽查日志导出(未完成)") + @ApiOperation(value = "抽查日志导出") @PostMapping("/export") - public void export(@RequestBody ShAddressBookDto dto, HttpServletResponse response) { + public void export(@RequestBody ShCallsDto dto, HttpServletResponse response) { - LambdaQueryChainWrapper query = service.lambdaQuery(); + List list = service.list(dto); - query.orderByDesc(ShCalls::getCallTime); + List excels = Lists.newArrayList(); + AtomicInteger i = new AtomicInteger(1); + list.forEach(item -> { + List calls = item.getList(); + if (CollectionUtils.isNotEmpty(calls)){ + Map> dateCalls = calls.stream() +// .filter(o-> Objects.nonNull(o.getCallTime())) + .collect(Collectors.groupingBy(o -> DateUtils.dateToStr(o.getCallTime(), DateUtils.sdfymd), Collectors.toList())); + dateCalls.forEach((k,v) ->{ - List list = service.list(query); + ShCallsExcelVo excel = new ShCallsExcelVo(); + excel.setId(i.getAndIncrement()); + excel.setDateStr(k); + excel.setType2(item.getType2()); + excel.setName(item.getName()); + excel.setPhone(item.getPhone()); + excel.setPosition(item.getPosition()); + excel.setCity(item.getCity()); + excel.setCounty(item.getCounty()); + excel.setLand(item.getLand()); + excel.setTimeStr(StringUtils.join(v.stream().map(o ->{ + String type = o.getType(); + if (StringUtils.isNotBlank(type)){ + CallType callType = CallType.getByName(type); + if (Objects.nonNull(callType)){ + type = callType.getValue(); + } + } + String callType = o.getCallType(); + if (StringUtils.isNotBlank(callType)){ + CallingType callingType = CallingType.getByName(callType); + if (Objects.nonNull(callingType)){ + callType = callingType.getValue(); + } + } + return DateUtils.dateToStr(o.getCallTime(),ThreadLocal.withInitial(() -> new SimpleDateFormat(DateUtils.DATE_PATTERN_HM))) + " " + type + " " + callType; + }).distinct().collect(Collectors.toList()), ",")); - ExcelCommon.exportExcel(list, - null, "抽查日志", ShCalls.class, "抽查日志.xlsx", + excel.setRemark(StringUtils.join(v.stream().map(ShCalls::getRemark).distinct().collect(Collectors.toList()), "/n")); + + excels.add(excel); + }); + } + }); + + ExcelCommon.exportExcel(excels, + null, "抽查日志", ShCallsExcelVo.class, "抽查日志.xlsx", response); } diff --git a/src/main/java/com/whdc/controller/ShPeriodController.java b/src/main/java/com/whdc/controller/ShPeriodController.java index f80b702..4be8e2e 100644 --- a/src/main/java/com/whdc/controller/ShPeriodController.java +++ b/src/main/java/com/whdc/controller/ShPeriodController.java @@ -38,6 +38,7 @@ public class ShPeriodController { if (service.lambdaQuery().eq(ShPeriod::getName, dto.getName()).count() > 0){ throw new MyException("名称重复"); } + dto.setId(null); boolean result = service.save(dto); return ResultJson.ok(result ? dto : null); } @@ -51,6 +52,7 @@ public class ShPeriodController { .count() > 0){ throw new MyException("名称重复"); } + dto.setCreateTime(null); boolean result = service.updateById(dto); return ResultJson.ok(result ? dto : null); } diff --git a/src/main/java/com/whdc/mapper/ShCallsMapper.java b/src/main/java/com/whdc/mapper/ShCallsMapper.java index 3fa18c1..0a45c8f 100644 --- a/src/main/java/com/whdc/mapper/ShCallsMapper.java +++ b/src/main/java/com/whdc/mapper/ShCallsMapper.java @@ -3,6 +3,7 @@ package com.whdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.whdc.model.dto.ShCallsDto; +import com.whdc.model.entity.ShAddressBook; import com.whdc.model.entity.ShCalls; import com.whdc.model.vo.ShCallsVo; import org.apache.ibatis.annotations.Mapper; @@ -20,6 +21,7 @@ public interface ShCallsMapper extends BaseMapper { IPage page(@Param("page") IPage page, @Param("dto") ShCallsDto dto); - List page(@Param("dto") ShCallsDto dto); + List list(@Param("dto") ShCallsDto dto); + List listVo(@Param("dto") ShCallsDto dto); } \ No newline at end of file diff --git a/src/main/java/com/whdc/model/dto/ShAddressBookDto.java b/src/main/java/com/whdc/model/dto/ShAddressBookDto.java index 736d96c..2b360d5 100644 --- a/src/main/java/com/whdc/model/dto/ShAddressBookDto.java +++ b/src/main/java/com/whdc/model/dto/ShAddressBookDto.java @@ -48,4 +48,7 @@ public class ShAddressBookDto extends FindPageDto { @Schema(description = "是否抽查:0:不抽查,1:抽查") private String isSpotCheck; + @Schema(description = "是否接听0:否,1是") + private String callStatus; + } diff --git a/src/main/java/com/whdc/model/dto/ShCallsDto.java b/src/main/java/com/whdc/model/dto/ShCallsDto.java index 7456cfd..2ee7618 100644 --- a/src/main/java/com/whdc/model/dto/ShCallsDto.java +++ b/src/main/java/com/whdc/model/dto/ShCallsDto.java @@ -1,5 +1,6 @@ package com.whdc.model.dto; +import com.whdc.utils.DateUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -7,7 +8,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.time.LocalDate; +import javax.validation.constraints.NotNull; /** * Description: @@ -22,8 +23,9 @@ import java.time.LocalDate; @ApiModel(description = "山洪责任人抽查分页查询") public class ShCallsDto extends ShAddressBookDto { - @ApiModelProperty(value = "抽查日期") - private LocalDate date; + @ApiModelProperty(value = "抽查日期 格式: " + DateUtils.DATE_PATTERN1) + @NotNull(message = "日期不能为空") + private String date; @Schema(description="是否接听0:否,1是") private String status; diff --git a/src/main/java/com/whdc/model/entity/ShAddressBook.java b/src/main/java/com/whdc/model/entity/ShAddressBook.java index 14a9890..40a7703 100644 --- a/src/main/java/com/whdc/model/entity/ShAddressBook.java +++ b/src/main/java/com/whdc/model/entity/ShAddressBook.java @@ -14,6 +14,7 @@ import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.io.Serializable; +import java.util.List; /** * 描述: 山洪责任人通讯录 @@ -23,7 +24,7 @@ import java.io.Serializable; @Schema(description = "山洪责任人通讯录") @Data @Accessors(chain = true) -@TableName("FXKH_TXL.SH_ADDRESS_BOOK") +@TableName(value = "FXKH_TXL.SH_ADDRESS_BOOK",autoResultMap = true) public class ShAddressBook implements Serializable { public final static String thisTableName = "ShAddressBook"; @@ -149,4 +150,14 @@ public class ShAddressBook implements Serializable { @Schema(description = "是否接听0:否,1是") private String callStatus; + /** + * 是否接听 + */ + @TableField(value = "del") + @Schema(description = "是否删除0:是,1:否") + private String del; + + @TableField(exist = false) + List list; + } diff --git a/src/main/java/com/whdc/model/entity/ShCalls.java b/src/main/java/com/whdc/model/entity/ShCalls.java index 770a4e7..c43a7aa 100644 --- a/src/main/java/com/whdc/model/entity/ShCalls.java +++ b/src/main/java/com/whdc/model/entity/ShCalls.java @@ -63,6 +63,7 @@ public class ShCalls implements Serializable { @Schema(description="知晓本人为山洪责任人, 0:否,1:是") @Size(max = 2,message = "知晓本人为山洪责任人, 0:否,1:是最大长度要小于 2") @Pattern(message = "知晓本人为山洪责任人, 0:否,1:是", regexp = "[01]") + @NotNull(message = "知晓本人为山洪责任人不能为空", groups = {Insert.class, Update.class}) private String know; /** @@ -71,6 +72,7 @@ public class ShCalls implements Serializable { @TableField(value="call_time") @Schema(description="抽查时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @NotNull(message = "抽查时间不能为空", groups = {Insert.class, Update.class}) private Date callTime; /** @@ -80,6 +82,7 @@ public class ShCalls implements Serializable { @Schema(description="叫应状态: 0:接通,1:拒接,2:忙线") @Size(max = 2,message = "叫应状态: 0:接通,1:拒接,2:忙线最大长度要小于 2") @Pattern(message = "叫应状态: 0:接通,1:拒接,2:忙线", regexp = "[012]") + @NotNull(message = "叫应状态不能为空", groups = {Insert.class, Update.class}) private String callType; /** @@ -89,6 +92,7 @@ public class ShCalls implements Serializable { @Schema(description="通话类型: 0:拨打,1:回拨") @Size(max = 2,message = "通话类型: 0:拨打,1:回拨最大长度要小于 2") @Pattern(message = "通话类型: 0:拨打,1:回拨", regexp = "[01]") + @NotNull(message = "通话类型不能为空", groups = {Insert.class, Update.class}) private String type; /** @@ -97,6 +101,7 @@ public class ShCalls implements Serializable { @TableField(value="remark") @Schema(description="叫应备注") @Size(max = 500,message = "叫应备注") + @NotNull(message = "叫应备注不能为空", groups = {Insert.class, Update.class}) private String remark; } \ No newline at end of file diff --git a/src/main/java/com/whdc/model/enums/CallType.java b/src/main/java/com/whdc/model/enums/CallType.java new file mode 100644 index 0000000..c89b377 --- /dev/null +++ b/src/main/java/com/whdc/model/enums/CallType.java @@ -0,0 +1,72 @@ +package com.whdc.model.enums; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @author xusan + * @date 2022/7/14 16:55 + * 通话类型枚举类 + */ +public enum CallType { + + R000("0", "拨打"), + R001("1", "回拨"), + R099("99", "系统管理员"); + + + private String name; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + private CallType(String name, String value) { + this.name = name; + this.value = value; + } + + public static Map map() { + Map map = new HashMap<>(); + CallType[] values = CallType.values(); + for (CallType e : values) { + map.put(e.getValue(), e); + } + return map; + } + + public static Map mapName() { + Map map = new HashMap<>(); + CallType[] values = CallType.values(); + for (CallType e : values) { + map.put(e.getName(), e); + } + return map; + } + + public static CallType getByValue(String value) { + if (Objects.isNull(value)) return null; + return map().get(value); + } + + public static CallType getByName(String name) { + if (StringUtils.isEmpty(name)) return null; + return mapName().get(name); + } +} diff --git a/src/main/java/com/whdc/model/enums/CallingType.java b/src/main/java/com/whdc/model/enums/CallingType.java new file mode 100644 index 0000000..7e8a1d6 --- /dev/null +++ b/src/main/java/com/whdc/model/enums/CallingType.java @@ -0,0 +1,72 @@ +package com.whdc.model.enums; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @author xusan + * @date 2022/7/14 16:55 + * 通话类型枚举类 + */ +public enum CallingType { + + R000("0", "接通"), + R001("1", "拒接"), + R099("2", "忙线"); + + + private String name; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + private CallingType(String name, String value) { + this.name = name; + this.value = value; + } + + public static Map map() { + Map map = new HashMap<>(); + CallingType[] values = CallingType.values(); + for (CallingType e : values) { + map.put(e.getValue(), e); + } + return map; + } + + public static Map mapName() { + Map map = new HashMap<>(); + CallingType[] values = CallingType.values(); + for (CallingType e : values) { + map.put(e.getName(), e); + } + return map; + } + + public static CallingType getByValue(String value) { + if (Objects.isNull(value)) return null; + return map().get(value); + } + + public static CallingType getByName(String name) { + if (StringUtils.isEmpty(name)) return null; + return mapName().get(name); + } +} diff --git a/src/main/java/com/whdc/model/vo/ShCallsExcelVo.java b/src/main/java/com/whdc/model/vo/ShCallsExcelVo.java new file mode 100644 index 0000000..8d74760 --- /dev/null +++ b/src/main/java/com/whdc/model/vo/ShCallsExcelVo.java @@ -0,0 +1,104 @@ +package com.whdc.model.vo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * Description: + * Created by XuSan on 2024/7/30. + * + * @author XuSan + * @version 1.0 + */ +@Schema(description = "抽查日志导出") +@Data +@Accessors(chain = true) +public class ShCallsExcelVo { + + + /** + * 主键id + */ + @Excel(name = "序号", width = 20,orderNum = "1") + private Integer id; + + + /** + * 日期 + */ + @Excel(name = "日期", width = 20,orderNum = "2") + private String dateStr; + + /** + * 市 + */ + @Excel(name = "市", width = 20,orderNum = "3") + private String city; + + /** + * 县 + */ + @Excel(name = "县", width = 20,orderNum = "4") + private String county; + + /** + * 责任人类型1 行政责任人,包保责任人 + */ + @Excel(name = "责任人类型", width = 20,orderNum = "5") + private String type2; + /** + * 名字 + */ + @Excel(name = "责任人姓名", width = 20,orderNum = "6") + private String name; + + /** + * 职务 + */ + @Excel(name = "职务", width = 20,orderNum = "7") + private String position; + + /** + * 手机号 + */ + @Excel(name = "手机号", width = 20,orderNum = "8") + private String phone; + + /** + * 负责区域 + */ + @Excel(name = "负责区域", width = 20,orderNum = "9") + private String land; + + + /** + * 抽查时间 + */ + @Excel(name = "抽查时间", width = 20,orderNum = "10") + private String timeStr; + + + /** + * 是否接听 + */ + @Excel(name = "是否接听电话", width = 20,orderNum = "11") + private String callStatus; + + /** + * 是否知晓本人为山洪责任人 + */ + @Excel(name = "是否知晓本人为山洪责任人", width = 20,orderNum = "12") + private String know; + + /** + * 叫应备注 + */ + @Excel(name = "备注", width = 40,orderNum = "13") + private String remark; + + + + +} diff --git a/src/main/java/com/whdc/service/ShCallsService.java b/src/main/java/com/whdc/service/ShCallsService.java index 1b8ed57..89badb8 100644 --- a/src/main/java/com/whdc/service/ShCallsService.java +++ b/src/main/java/com/whdc/service/ShCallsService.java @@ -4,6 +4,7 @@ package com.whdc.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.whdc.model.dto.ShCallsDto; +import com.whdc.model.entity.ShAddressBook; import com.whdc.model.entity.ShCalls; import com.whdc.model.vo.ShCallsVo; @@ -19,7 +20,9 @@ public interface ShCallsService extends IService IPage page(ShCallsDto dto); - List list(ShCallsDto dto); + List list(ShCallsDto dto); + + List listVo(ShCallsDto dto); } diff --git a/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java b/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java index e0beccd..442e403 100644 --- a/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/ShAddressBookServiceImpl.java @@ -1,6 +1,5 @@ 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.exception.MyException; @@ -17,8 +16,10 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; import java.util.stream.Collectors; +import static com.whdc.model.MyConstant.REC; import static com.whdc.model.MyConstant.REDIS_KEY; @@ -63,10 +64,16 @@ public class ShAddressBookServiceImpl extends ServiceImpl 0) { + if (this.lambdaQuery() + .eq(ShAddressBook::getDel, REC) + .eq(ShAddressBook::getType1, type1Str).count() > 0) { // 清空数据 - boolean remove = this.remove(new LambdaQueryWrapper().eq(ShAddressBook::getType1, type1Str)); + boolean remove = this.lambdaUpdate() + .set(ShAddressBook::getDel, 0) + .eq(ShAddressBook::getDel, 1) + .eq(ShAddressBook::getType1, type1Str) + .update(); if (!remove) { throw new MyException("清空数据失败"); } @@ -92,7 +99,9 @@ public class ShAddressBookServiceImpl extends ServiceImpl tree() { - List list = this.lambdaQuery().orderByAsc(ShAddressBook::getSort).list(); + List list = this.lambdaQuery() + .eq(ShAddressBook::getDel, REC) + .orderByAsc(ShAddressBook::getSort).list(); if (CollectionUtils.isEmpty(list)) { return null; } @@ -121,10 +130,37 @@ public class ShAddressBookServiceImpl extends ServiceImpl(trees.stream() + .collect( + Collectors.toMap( + AdcdTree::getAdnm, + Function.identity(), + (o1, o2) -> o1.getSort() < o2.getSort() ? o1 : o2 + ) + ) + .values()); + village.put(data, trees); } }); + + }); + + village.keySet().forEach(k ->{ + List trees = village.get(k); + trees = new ArrayList<>(trees.stream() + .collect( + Collectors.toMap( + AdcdTree::getAdnm, + Function.identity(), + (o1, o2) -> o1.getSort() < o2.getSort() ? o1 : o2 + ) + ) + .values()); + + village.put(k, trees); }); areaMap.forEach((k, v) -> { @@ -135,12 +171,38 @@ public class ShAddressBookServiceImpl extends ServiceImpl(trees.stream() + .collect( + Collectors.toMap( + AdcdTree::getAdnm, + Function.identity(), + (o1, o2) -> o1.getSort() < o2.getSort() ? o1 : o2 + ) + ) + .values()); + area.put(data, trees); } }); }); + area.keySet().forEach(k ->{ + List trees = area.get(k); + trees = new ArrayList<>(trees.stream() + .collect( + Collectors.toMap( + AdcdTree::getAdnm, + Function.identity(), + (o1, o2) -> o1.getSort() < o2.getSort() ? o1 : o2 + ) + ) + .values()); + + area.put(k, trees); + }); + countyMap.forEach((k, v) -> { v.forEach(o -> { String data = o.getCity(); @@ -149,20 +211,34 @@ public class ShAddressBookServiceImpl extends ServiceImpl{ + List trees = county.get(k); + trees = new ArrayList<>(trees.stream() + .collect( + Collectors.toMap( + AdcdTree::getAdnm, + Function.identity(), + (o1, o2) -> o1.getSort() < o2.getSort() ? o1 : o2 + ) + ) + .values()); + + county.put(k, trees); + }); + List cityList = Lists.newArrayList(); cityMap.forEach((k, v) -> { - if (CollectionUtils.isNotEmpty(v)){ + if (CollectionUtils.isNotEmpty(v)) { ShAddressBook o = v.get(0); - cityList.add(new AdcdTree().setSort(o.getSort()).setAdcd(o.getCity()).setAdnm(o.getCity()).setAdlevel(1).setChildren(county.get(o.getCity()))); - + cityList.add(new AdcdTree().setSort(o.getSort()).setAdcd(o.getId().toString()).setAdnm(o.getCity()).setAdlevel(1).setChildren(county.get(o.getCity()))); } }); diff --git a/src/main/java/com/whdc/service/impl/ShCallsServiceImpl.java b/src/main/java/com/whdc/service/impl/ShCallsServiceImpl.java index d33de81..bfc62c0 100644 --- a/src/main/java/com/whdc/service/impl/ShCallsServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/ShCallsServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.whdc.mapper.ShCallsMapper; import com.whdc.model.dto.ShCallsDto; +import com.whdc.model.entity.ShAddressBook; import com.whdc.model.entity.ShCalls; import com.whdc.model.vo.ShCallsVo; import com.whdc.service.ShCallsService; @@ -30,7 +31,12 @@ public class ShCallsServiceImpl extends ServiceImpl impl } @Override - public List list(ShCallsDto dto) { - return this.getBaseMapper().page(dto); + public List list(ShCallsDto dto) { + return this.getBaseMapper().list(dto); + } + + @Override + public List listVo(ShCallsDto dto) { + return this.getBaseMapper().listVo(dto); } } diff --git a/src/main/java/com/whdc/utils/DateUtils.java b/src/main/java/com/whdc/utils/DateUtils.java index 67f17f4..a445b7c 100644 --- a/src/main/java/com/whdc/utils/DateUtils.java +++ b/src/main/java/com/whdc/utils/DateUtils.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.GregorianCalendar; +import java.util.Objects; import java.util.SimpleTimeZone; /** @@ -18,6 +19,8 @@ public class DateUtils { */ public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; public final static String DATE_PATTERN = "yyyy年MM月dd日"; + public final static String DATE_PATTERN1 = "yyyy-MM-dd"; + public final static String DATE_PATTERN_HM = "HH:mm"; public static final ThreadLocal sdfhmsS = new ThreadLocal() { @@ -33,6 +36,11 @@ public class DateUtils { return new SimpleDateFormat(DATE_TIME_PATTERN); } }; + public static final ThreadLocal sdfymd = new ThreadLocal() { + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat(DATE_PATTERN); + } + }; public static final ThreadLocal sdf_utc = new ThreadLocal() { protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); @@ -79,6 +87,9 @@ public class DateUtils { } public static String dateToStr(Date date, ThreadLocal format){ + if (Objects.isNull(date)){ + return null; + } return format.get().format(date); } diff --git a/src/main/resources/mapper/ShAddressBookMapper.xml b/src/main/resources/mapper/ShAddressBookMapper.xml index 582fc4d..38d0e34 100644 --- a/src/main/resources/mapper/ShAddressBookMapper.xml +++ b/src/main/resources/mapper/ShAddressBookMapper.xml @@ -17,11 +17,12 @@ T."SORT", T."LAND", T."IS_SPOT_CHECK", - T."CALL_STATUS" + IFNULL(T."CALL_STATUS",0) CALL_STATUS FROM "FXKH_TXL"."SH_ADDRESS_BOOK" T WHERE 1 = 1 + AND DEL = 1 AND T.TYPE1 = #{dto.type1} @@ -49,10 +50,19 @@ AND T.LAND = #{dto.land} + + AND T.CALL_STATUS = #{dto.callStatus} + AND T.PHONE CONCAT('%', #{dto.phone}, '%') - ORDER BY T.SORT DESC + ORDER BY + T.CITY NULLS FIRST, + T.COUNTY NULLS FIRST, + T.AREA NULLS FIRST, + T.VILLAGE NULLS FIRST, + T.SORT ASC + diff --git a/src/main/resources/mapper/ShCallsMapper.xml b/src/main/resources/mapper/ShCallsMapper.xml index 30a5bba..e9e301d 100644 --- a/src/main/resources/mapper/ShCallsMapper.xml +++ b/src/main/resources/mapper/ShCallsMapper.xml @@ -62,4 +62,155 @@ ORDER BY C.CALL_TIME DESC + + + + + + + + + + + + + + + + + + + + + + + + + + + + +