diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index ec9ee8c209..af4142237d 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -268,6 +268,8 @@ public enum EpmetErrorCode { SAMPLE_TIME_IS_NULL_ERROR(8933,"采样时间不能为空"), SAMPLE_TIME_AND_RESULT_IS_NULL_ERROR(8934,"检测时间或结果不能为空"), + + DANGER_AREA_ERROR(8937,"风险地区已存在"), MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"), //通用错误码 start diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcDangerAreaDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcDangerAreaDTO.java index 8597671a84..3d41095172 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcDangerAreaDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcDangerAreaDTO.java @@ -2,8 +2,13 @@ package com.epmet.dto; import java.io.Serializable; import java.util.Date; + +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.commons.tools.validator.group.DefaultGroup; import lombok.Data; +import javax.validation.constraints.NotBlank; + /** * 疫情风险地区 @@ -29,28 +34,35 @@ public class IcDangerAreaDTO implements Serializable { /** * 风险等级 */ +// @NotBlank(message = "dangerLevel不能为空",groups = {AddGroup.class}) private String dangerLevel; /** * 省 */ +// @NotBlank(message = "province不能为空",groups = {AddGroup.class}) private String province; /** * 市 */ +// @NotBlank(message = "city不能为空",groups = {AddGroup.class}) private String city; /** * 区 */ +// @NotBlank(message = "district不能为空",groups = {AddGroup.class}) private String district; /** * 省-市-区 */ + @NotBlank(message = "allName不能为空",groups = {AddGroup.class}) private String allName; + private String allNameCode; + /** * */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DangerAreaListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DangerAreaListFormDTO.java new file mode 100644 index 0000000000..9071a4a1c7 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DangerAreaListFormDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/10/31 16:59 + */ +@Data +public class DangerAreaListFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = 8868052895161162655L; + + private String name; + private String dangerLevel; + private String customerId; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcDangerAreaController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcDangerAreaController.java index a9281264bd..4dcfd4bb09 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcDangerAreaController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcDangerAreaController.java @@ -1,20 +1,42 @@ package com.epmet.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.form.PageFormDTO; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.IcDangerAreaDTO; +import com.epmet.dto.form.DangerAreaListFormDTO; +import com.epmet.dto.result.NatListCommonExcelResultDTO; +import com.epmet.dto.result.NatListResultDTO; +import com.epmet.enums.DangerLevelEnum; +import com.epmet.excel.IcDangerAreaResultExcel; import com.epmet.service.IcDangerAreaService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -26,6 +48,7 @@ import java.util.Map; * @since v1.0.0 2022-10-31 */ @RestController +@Slf4j @RequestMapping("icDangerArea") public class IcDangerAreaController { @@ -44,11 +67,18 @@ public class IcDangerAreaController { return new Result().ok(data); } + /** + * @Description 新增 + * @param dto + * @param tokenDto + * @Author zxc + * @Date 2022/11/1 09:09 + */ @NoRepeatSubmit @PostMapping("save") - public Result save(@RequestBody IcDangerAreaDTO dto){ - //效验数据 + public Result save(@RequestBody IcDangerAreaDTO dto, @LoginUser TokenDto tokenDto){ ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + dto.setCustomerId(tokenDto.getCustomerId()); icDangerAreaService.save(dto); return new Result(); } @@ -63,10 +93,70 @@ public class IcDangerAreaController { } @PostMapping("delete") - public Result delete(@RequestBody String[] ids){ - //效验数据 - AssertUtils.isArrayEmpty(ids, "id"); - icDangerAreaService.delete(ids); + public Result delete(@RequestBody List ids,@LoginUser TokenDto tokenDto){ + icDangerAreaService.delete(ids,tokenDto.getUserId()); return new Result(); } + + @RequestMapping("list") + public Result> list(@RequestBody DangerAreaListFormDTO formDTO,@LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(icDangerAreaService.list(formDTO)); + } + + @RequestMapping("export") + public void export(@LoginUser TokenDto tokenDto,@RequestBody DangerAreaListFormDTO formDTO,HttpServletResponse response){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + ExcelWriter excelWriter = null; + int pageNo = NumConstant.ONE; + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + try { + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("风险地区", response), IcDangerAreaResultExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + Integer size; + do { + PageData list = icDangerAreaService.list(formDTO); + List data = list.getList(); + if (CollectionUtils.isNotEmpty(data)){ + data.forEach(d -> { + d.setDangerLevel(DangerLevelEnum.getNameByCode(d.getDangerLevel())); + }); + } + excelWriter.write(ConvertUtils.sourceToTarget(data,IcDangerAreaResultExcel.class), writeSheet); + formDTO.setPageNo(pageNo++); + size = data.size(); + } while (size == NumConstant.ONE_THOUSAND); + }catch (Exception e){ + log.error("export exception", e); + }finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + + /** + * @Description 模板下载 + * @param response + * @Author zxc + * @Date 2022/11/1 09:52 + */ + @PostMapping("downloadTemplate") + public void downloadTemplate(HttpServletResponse response) throws IOException{ + response.setCharacterEncoding("UTF-8"); + response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); + response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("风险地区导入模板", "UTF-8") + ".xlsx"); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/ic_danger_area_template.xlsx"); + try { + ServletOutputStream os = response.getOutputStream(); + IOUtils.copy(is, os); + } finally { + if (is != null) { + is.close(); + } + } + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcDangerAreaEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcDangerAreaEntity.java index 9d895750f9..e7a4968bea 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcDangerAreaEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcDangerAreaEntity.java @@ -51,4 +51,6 @@ public class IcDangerAreaEntity extends BaseEpmetEntity { */ private String allName; + private String allNameCode; + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DangerLevelEnum.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DangerLevelEnum.java new file mode 100644 index 0000000000..9c3441043c --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DangerLevelEnum.java @@ -0,0 +1,55 @@ +package com.epmet.enums; + +/** + * desc:数据同步配置枚举 对应data_sync_config中的DATA_CODE + * @author Administrator + */ + +public enum DangerLevelEnum { + + LOW("0", "低风险"), + MIDDLE("1", "中风险"), + HIGH("2", "高风险"), + OTHER("3", "无风险"), + + ; + + private final String code; + private final String name; + + + + DangerLevelEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public static DangerLevelEnum getEnum(String code) { + DangerLevelEnum[] values = DangerLevelEnum.values(); + for (DangerLevelEnum value : values) { + if (value.getCode().equals(code)) { + return value; + } + } + return DangerLevelEnum.OTHER; + } + + public static String getNameByCode(String code) { + DangerLevelEnum[] values = DangerLevelEnum.values(); + for (DangerLevelEnum value : values) { + if (value.getCode().equals(code)) { + return value.getName(); + } + } + return DangerLevelEnum.OTHER.getName(); + } + + + public String getCode() { + return code; + } + + public String getName() { + return name; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcDangerAreaResultExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcDangerAreaResultExcel.java new file mode 100644 index 0000000000..6aa4f89e5b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcDangerAreaResultExcel.java @@ -0,0 +1,22 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * @Author zxc + * @DateTime 2022/11/1 10:26 + */ +@Data +public class IcDangerAreaResultExcel { + + @ColumnWidth(40) + @ExcelProperty(value = "风险地区") + private String allName; + + @ColumnWidth(20) + @ExcelProperty(value = "风险等级") + private String dangerLevel; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcDangerAreaService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcDangerAreaService.java index 88e680c180..9baf3e2b99 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcDangerAreaService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcDangerAreaService.java @@ -3,6 +3,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcDangerAreaDTO; +import com.epmet.dto.form.DangerAreaListFormDTO; import com.epmet.entity.IcDangerAreaEntity; import java.util.List; @@ -36,6 +37,8 @@ public interface IcDangerAreaService extends BaseService { */ List list(Map params); + PageData list(DangerAreaListFormDTO formDTO); + /** * 单条查询 * @@ -74,5 +77,5 @@ public interface IcDangerAreaService extends BaseService { * @author generator * @date 2022-10-31 */ - void delete(String[] ids); + void delete(List ids,String staffId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcDangerAreaServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcDangerAreaServiceImpl.java index 0e7a4d5b2f..498712ae68 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcDangerAreaServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcDangerAreaServiceImpl.java @@ -1,21 +1,30 @@ package com.epmet.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.IcDangerAreaDao; import com.epmet.dto.IcDangerAreaDTO; +import com.epmet.dto.form.DangerAreaListFormDTO; import com.epmet.entity.IcDangerAreaEntity; import com.epmet.service.IcDangerAreaService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Map; @@ -44,6 +53,24 @@ public class IcDangerAreaServiceImpl extends BaseServiceImpl list(DangerAreaListFormDTO formDTO) { + PageData result = new PageData<>(); + LambdaQueryWrapper qr = new LambdaQueryWrapper<>(); + qr.like(StringUtils.isNotBlank(formDTO.getName()),IcDangerAreaEntity::getAllName,formDTO.getName()) + .eq(StringUtils.isNotBlank(formDTO.getDangerLevel()),IcDangerAreaEntity::getDangerLevel,formDTO.getDangerLevel()); + if (formDTO.getIsPage()){ + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectList(qr)); + result.setTotal(Integer.valueOf(String.valueOf(pageInfo.getTotal()))); + result.setList(ConvertUtils.sourceToTarget(pageInfo.getList(),IcDangerAreaDTO.class)); + }else { + List entities = baseDao.selectList(qr); + result.setTotal(entities.size()); + result.setList(ConvertUtils.sourceToTarget(entities,IcDangerAreaDTO.class)); + } + return result; + } + private QueryWrapper getWrapper(Map params){ String id = (String)params.get(FieldConstant.ID_HUMP); @@ -59,10 +86,38 @@ public class IcDangerAreaServiceImpl extends BaseServiceImpl qw = new LambdaQueryWrapper<>(); + qw.eq(IcDangerAreaEntity::getAllName,dto.getAllName()); + IcDangerAreaEntity icDangerAreaEntity = baseDao.selectOne(qw); + if (null != icDangerAreaEntity){ + throw new EpmetException(EpmetErrorCode.DANGER_AREA_ERROR.getCode()); + } IcDangerAreaEntity entity = ConvertUtils.sourceToTarget(dto, IcDangerAreaEntity.class); + String[] split = dto.getAllName().split("-"); + for (int i = NumConstant.ZERO; i < split.length; i++) { + switch (i){ + case NumConstant.ZERO: + entity.setProvince(split[i]); + break; + case NumConstant.ONE: + entity.setCity(split[i]); + break; + case NumConstant.TWO: + entity.setDistrict(split[i]); + break; + default: + break; + } + } insert(entity); } @@ -75,9 +130,13 @@ public class IcDangerAreaServiceImpl extends BaseServiceImpl ids,String staffId) { + LambdaUpdateWrapper updateWrapper=new LambdaUpdateWrapper<>(); + updateWrapper.in(IcDangerAreaEntity::getId,ids) + .set(IcDangerAreaEntity::getUpdatedBy,staffId) + .set(IcDangerAreaEntity::getUpdatedTime,new Date()) + .set(IcDangerAreaEntity::getDelFlag, NumConstant.ONE_STR); + baseDao.update(null,updateWrapper); } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_danger_area_template.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/ic_danger_area_template.xlsx new file mode 100644 index 0000000000..764d637a6a Binary files /dev/null and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_danger_area_template.xlsx differ