From a80d6f01ec9a00393fe9d3d3ac76f3ac00ab878c Mon Sep 17 00:00:00 2001 From: luyan Date: Tue, 18 Apr 2023 09:57:06 +0800 Subject: [PATCH 01/51] =?UTF-8?q?=E5=8D=B3=E5=A2=A8=E7=81=B5=E5=B1=B1?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/EventAddEditFormDTO.java | 83 +++++++++++ .../com/epmet/dto/form/EventFormsDTO.java | 86 +++++++++++ .../com/epmet/dto/result/EventResultDTO.java | 102 +++++++++++++ .../com/epmet/controller/EventController.java | 88 ++++++++++++ .../java/com/epmet/dao/EventEntityDao.java | 19 +++ .../com/epmet/entity/EventDetailEntity.java | 43 ++++++ .../java/com/epmet/entity/EventEntity.java | 97 +++++++++++++ .../java/com/epmet/service/EventService.java | 19 +++ .../epmet/service/impl/EventServiceImpl.java | 136 ++++++++++++++++++ .../main/resources/mapper/EventEntityDao.xml | 13 ++ 10 files changed, 686 insertions(+) create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventAddEditFormDTO.java create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventFormsDTO.java create mode 100644 epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventResultDTO.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/EventController.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/EventEntityDao.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventDetailEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventEntity.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/EventService.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/EventServiceImpl.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/mapper/EventEntityDao.xml diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventAddEditFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventAddEditFormDTO.java new file mode 100644 index 0000000000..d31d57b3d1 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventAddEditFormDTO.java @@ -0,0 +1,83 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +@Data +public class EventAddEditFormDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 事件编号 + */ + private String code; + /** + * 事件状态 + */ + private String status; + /** + * 上报人员 + */ + private String reporter; + /** + * 联系电话 + */ + private String phone; + /** + * 上报事件 + */ + private Date reportDate; + /** + * 紧急程度 + */ + private String urgency; + /** + * 所属网格 + */ + private String grid; + /** + * 事件类型 + */ + private String eventType; + /** + * 即办类型 + */ + private String type; + /** + * 办理期限 + */ + private Date lastDate; + + /** + * 满意度 + */ + private String satisficing; + + /** + * 页码 + */ + private Integer pageNo = 1; + /** + * 每页显示数量 + */ + private Integer pageSize = 20; + + private Boolean isPage = true; + + + private String customerId; + + private String agencyId; + + private String staffId; + + private String userId; + + private String app; + + private String client; +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventFormsDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventFormsDTO.java new file mode 100644 index 0000000000..a9c4c2baa5 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/EventFormsDTO.java @@ -0,0 +1,86 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 灵山项目事件 formDTO + */ + +@Data +public class EventFormsDTO implements Serializable { + private static final long serialVersionUID = 1; + + public interface Detail extends CustomerClientShowGroup { + } + + public interface GovRedDot extends CustomerClientShowGroup { + } + + /** + * 事件编号 + */ + private String code; + /** + * 事件状态 + */ + private String status; + /** + * 上报人员 + */ + private String reporter; + /** + * 联系电话 + */ + private String phone; + /** + * 上报事件 + */ + private Date reportDate; + /** + * 紧急程度 + */ + private String urgency; + /** + * 所属网格 + */ + private String grid; + /** + * 事件类型 + */ + private String eventType; + /** + * 即办类型 + */ + private String type; + /** + * 办理期限 + */ + private Date lastDate; + + /** + * 满意度 + */ + private String satisficing; + + /** + * 页码 + */ + private Integer pageNo = 1; + /** + * 每页显示数量 + */ + private Integer pageSize = 20; + + private Boolean isPage = true; + + + private String customerId; + + private String agencyId; + + private String staffId; +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventResultDTO.java new file mode 100644 index 0000000000..059905086a --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/EventResultDTO.java @@ -0,0 +1,102 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 即墨灵山项目 + */ + +@Data +public class EventResultDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private String id; + + /** + * 事件编号 + */ + private String code; + + /** + * 事件状态 + */ + private String status; + + /** + * 事件明细ID + */ + private String detailId; + /** + * 上报人员 + */ + private String reporter; + /** + * 联系电话 + */ + private String phone; + /** + * 上报事件事件 + */ + private Date reportDate; + /** + * 紧急程度 + */ + private String urgency; + /** + * 所属网格 + */ + private String grid; + /** + * 事件类型 + */ + private String eventType; + /** + * 即办类型 + */ + private String type; + /** + * 办理期限 + */ + private Date lastDate; + /** + * 事件地址 + */ + private String eventAddr; + + /** + * 坐标经度 + */ + private String longitude; + /** + * 坐标纬度 + */ + private String latitude; + /** + * 音频 + */ + private String voice; + /** + * 视频 + */ + private String video; + /** + * 满意度 + */ + private String satisficing; + /** + * 解决情况 + */ + private String remark; + /** + * 事件描述 + */ + private String conetnt; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/EventController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/EventController.java new file mode 100644 index 0000000000..2a85af367f --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/EventController.java @@ -0,0 +1,88 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +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.DefaultGroup; +import com.epmet.commons.tools.validator.group.UpdateGroup; +import com.epmet.dto.form.EventAddEditFormDTO; +import com.epmet.dto.form.EventFormsDTO; +import com.epmet.dto.result.EventResultDTO; +import com.epmet.service.EventService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author yan Lu + * @date 2023-04-14 19:07 + * @deprecated 社会治理--事件处理 + */ +@Slf4j +@RestController +@RequestMapping("event") +public class EventController { + + @Autowired + private EventService eventService; + + /** + * 社会治理 事件列表 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("list") + public Result> getList(@LoginUser TokenDto tokenDto, @RequestBody EventFormsDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + return new Result>().ok(eventService.getList(formDTO)); + } + + /** + * @deprecated 根据ID获取事件 + * @param id + * @return + */ + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) + public Result get(@PathVariable("id") String id){ + EventResultDTO data = eventService.getById(id); + return new Result().ok(data); + } + + + @NoRepeatSubmit + @PostMapping("add") + public Result save(@LoginUser TokenDto tokenDto, @RequestBody EventAddEditFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, AddGroup.class, DefaultGroup.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setApp(tokenDto.getApp()); + formDTO.setClient(tokenDto.getClient()); + eventService.save(formDTO); + return new Result(); + } + + @NoRepeatSubmit + @PostMapping("update") + public Result update(@RequestBody EventResultDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + eventService.update(dto); + return new Result(); + } + + @PostMapping("delete") + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + eventService.delete(ids); + return new Result(); + } + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/EventEntityDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/EventEntityDao.java new file mode 100644 index 0000000000..fe05484677 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/EventEntityDao.java @@ -0,0 +1,19 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.EventFormsDTO; +import com.epmet.dto.result.EventResultDTO; +import com.epmet.entity.EventEntity; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 灵山项目 + */ + +@Mapper +public interface EventEntityDao extends BaseDao { + + List getList(EventFormsDTO formDTO); +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventDetailEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventDetailEntity.java new file mode 100644 index 0000000000..84d4c2e0c8 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventDetailEntity.java @@ -0,0 +1,43 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("event_detail") +public class EventDetailEntity extends BaseEpmetEntity { + + /** + * 事件ID + */ + private String eventId; + /** + * 上报人 + */ + private String reporter; + /** + * 接收人 + */ + private String recipient; + /** + * 上报事件 + */ + private Date reportDate; + /** + * 事件附件地址 + */ + private String atts; + /** + * 事件处理耗时 + */ + private String timeSpent; + /** + * 反馈内容 + */ + private String content; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventEntity.java new file mode 100644 index 0000000000..1d6212adcf --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/EventEntity.java @@ -0,0 +1,97 @@ +package com.epmet.entity; + + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山项目事件 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("event_entity") +public class EventEntity extends BaseEpmetEntity { + + /** + * 事件编号 + */ + private String code; + /** + * 事件状态 + */ + private String status; + /** + * 事件明细ID + */ + private String detailId; + /** + * 上报人员 + */ + private String reporter; + /** + * 联系电话 + */ + private String phone; + /** + * 上报事件事件 + */ + private Date reportDate; + /** + * 紧急程度 + */ + private String urgency; + /** + * 所属网格 + */ + private String grid; + /** + * 事件类型 + */ + private String eventType; + /** + * 即办类型 + */ + private String type; + /** + * 办理期限 + */ + private Date lastDate; + /** + * 事件地址 + */ + private String eventAddr; + + /** + * 坐标经度 + */ + private String longitude; + /** + * 坐标纬度 + */ + private String latitude; + /** + * 音频 + */ + private String voice; + /** + * 视频 + */ + private String video; + /** + * 满意度 + */ + private String satisficing; + /** + * 解决情况 + */ + private String remark; + /** + * 事件描述 + */ + private String conetnt; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/EventService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/EventService.java new file mode 100644 index 0000000000..07371f7f4f --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/EventService.java @@ -0,0 +1,19 @@ +package com.epmet.service; + + +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.EventAddEditFormDTO; +import com.epmet.dto.form.EventFormsDTO; +import com.epmet.dto.result.EventResultDTO; + +public interface EventService { + PageData getList(EventFormsDTO formDTO); + + EventResultDTO getById(String id); + + void update(EventResultDTO dto); + + void delete(String[] ids); + + void save(EventAddEditFormDTO dto); +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/EventServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/EventServiceImpl.java new file mode 100644 index 0000000000..7567d05e6d --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/EventServiceImpl.java @@ -0,0 +1,136 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.security.user.LoginUserUtil; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.dao.EventEntityDao; +import com.epmet.dto.form.EventAddEditFormDTO; +import com.epmet.dto.form.EventFormsDTO; +import com.epmet.dto.result.EventResultDTO; +import com.epmet.entity.EventEntity; +import com.epmet.entity.IcEventOperationLogEntity; +import com.epmet.service.EventService; +import com.epmet.service.IcEventOperationLogService; +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.Date; +import java.util.List; + +@Service +public class EventServiceImpl extends BaseServiceImpl implements EventService { + + @Autowired + private LoginUserUtil loginUserUtil; + + @Autowired + private IcEventOperationLogService icEventOperationLogService; + + /** + * @param formDTO + * @return + * @deprecated 查询事件列表 + */ + @Override + public PageData getList(EventFormsDTO formDTO) { + if (StringUtils.isBlank(formDTO.getAgencyId())) { + //获取当前工作人员缓存信息 + CustomerStaffInfoCacheResult staffInfo = getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + formDTO.setAgencyId(staffInfo.getAgencyId()); + } + //分页查询当前组织下网格内事件数据 + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()); + List list = baseDao.getList(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + + /** + * @param id + * @return + * @deprecated 获取事件详情 + */ + @Override + public EventResultDTO getById(String id) { + EventEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, EventResultDTO.class); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(EventResultDTO dto) { + EventEntity entity = ConvertUtils.sourceToTarget(dto, EventEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + for (String id : ids) { + EventEntity entity = baseDao.selectById(id); + if (null == entity) { + continue; + } + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper(); + wrapper.eq(EventEntity::getId, id).set(EventEntity::getUpdatedTime, new Date()) + .set(EventEntity::getUpdatedBy, loginUserUtil.getLoginUserId()) + .set(EventEntity::getDelFlag, NumConstant.ONE_STR); + baseDao.update(null, wrapper); +// icEventCategoryService.delInsert(id,null); + } + } + + @Override + public void save(EventAddEditFormDTO formDTO) { + EventEntity entity = ConvertUtils.sourceToTarget(formDTO, EventEntity.class); + entity.setId(IdWorker.getIdStr()); +// List logList = new ArrayList<>(); +// logList.add(logEntity(formDTO.getCustomerId(), entity.getId(), formDTO.getUserId(), new Date(), "add", "publish")); +// icEventOperationLogService.insertBatch(logList); + insert(entity); + } + + /** + * @param customerId + * @param staffId + * @return + * @deprecated 获取当前登陆人员信息 + */ + + public CustomerStaffInfoCacheResult getStaffInfo(String customerId, String staffId) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", staffId)); + } + return staffInfo; + } + + /** + * 事件管理操作日志记录 + * + * @return + */ + private IcEventOperationLogEntity logEntity(String customerId, String icEventId, String userId, Date operateTime, String actionCode, String actionDesc) { + IcEventOperationLogEntity logEntity = new IcEventOperationLogEntity(); + logEntity.setCustomerId(customerId); + logEntity.setIcEventId(icEventId); + logEntity.setUserId(userId); + logEntity.setUserIdentity("staff"); + logEntity.setActionCode(actionCode); + logEntity.setActionDesc(actionDesc); + logEntity.setOperateTime(operateTime); + return logEntity; + } +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/EventEntityDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/EventEntityDao.xml new file mode 100644 index 0000000000..722e76a38f --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/EventEntityDao.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file From a177f6be63e88c7a7d3e844b4cf4d450ef324800 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 18 Apr 2023 14:00:20 +0800 Subject: [PATCH 02/51] =?UTF-8?q?=E3=80=90=E7=81=B5=E5=B1=B1=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F=E3=80=911.=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=8E=BB?= =?UTF-8?q?=E6=8E=89=E5=AF=B9/orgmap=E6=8E=A5=E5=8F=A3=E7=9A=84=E9=89=B4?= =?UTF-8?q?=E6=9D=83=EF=BC=8C=E5=9B=A0=E4=B8=BA=E5=A4=A7=E5=B1=8F=E8=A6=81?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-gateway/src/main/resources/bootstrap.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index c723860629..0aa5931823 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -528,6 +528,8 @@ epmet: # 员工登记、受众群体登记 - /gov/org/icEmployeeRegister/add - /gov/org/icGroupPeopleRegister/add + # 组织树,灵山大屏需要无登录调用,放开 + - /gov/org/agency/maporg # 外部应用认证,使用AccessToken等头进行认证 externalOpenUrls: - /data/report/** From 960e252cec3b05d35e5b9b1e8251fed850fefa95 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 18 Apr 2023 14:30:13 +0800 Subject: [PATCH 03/51] =?UTF-8?q?=E3=80=90=E7=81=B5=E5=B1=B1=E5=A4=A7?= =?UTF-8?q?=E5=B1=8F=E3=80=911.=E4=BF=AE=E6=94=B9=EF=BC=9Aorgmap=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4=EF=BC=8C=E4=BD=BF=E7=94=A8EpmetRequ?= =?UTF-8?q?estHolder=E4=BB=A3=E6=9B=BF@LoginUser=E6=B3=A8=E8=A7=A3?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/controller/AgencyController.java | 5 ++-- .../java/com/epmet/service/AgencyService.java | 3 +- .../epmet/service/impl/AgencyServiceImpl.java | 28 +++++++++++++++---- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index c6576dde5e..1218dc9381 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -362,14 +362,13 @@ public class AgencyController { /** * @param formDTO - * @param tokenDto * @Description 【地图配置】组织查询 * @author zxc * @date 2021/10/25 10:50 上午 */ @PostMapping("maporg") - public Result mapOrg(@RequestBody MapOrgFormDTO formDTO, @LoginUser TokenDto tokenDto) { - return new Result().ok(agencyService.mapOrg(formDTO, tokenDto)); + public Result mapOrg(@RequestBody MapOrgFormDTO formDTO) { + return new Result().ok(agencyService.mapOrg(formDTO)); } /** diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java index d7bb4b2564..126a4ac975 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java @@ -118,12 +118,11 @@ public interface AgencyService { /** * @param formDTO - * @param tokenDto * @Description 【地图配置】组织查询 * @author zxc * @date 2021/10/25 10:50 上午 */ - MapOrgResultDTO mapOrg(MapOrgFormDTO formDTO, TokenDto tokenDto); + MapOrgResultDTO mapOrg(MapOrgFormDTO formDTO); /** * @param formDTO diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index fcb04db161..9b7ee4e3ba 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -32,6 +32,7 @@ import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.*; @@ -732,7 +733,6 @@ public class AgencyServiceImpl implements AgencyService { /** * @param formDTO - * @param tokenDto * @Description 【地图配置】组织查询 * 根据level查询去查询不同的表,类型,组织:agency,网格:grid,小区:neighborHood * 组织类型去查 customer_agency,看本级是不是 community,是,下级组织就是网格,查询customer_grid,不是,继续查customer_agency @@ -743,19 +743,35 @@ public class AgencyServiceImpl implements AgencyService { * @date 2021/10/25 10:50 上午 */ @Override - public MapOrgResultDTO mapOrg(MapOrgFormDTO formDTO, TokenDto tokenDto) { + public MapOrgResultDTO mapOrg(MapOrgFormDTO formDTO) { MapOrgResultDTO result = new MapOrgResultDTO(); - LambdaQueryWrapper qw = new LambdaQueryWrapper(); - qw.eq(CustomerAgencyEntity::getPid, NumConstant.ZERO_STR).eq(CustomerAgencyEntity::getDelFlag, NumConstant.ZERO_STR).eq(CustomerAgencyEntity::getCustomerId, tokenDto.getCustomerId()); - CustomerAgencyEntity customerAgencyEntity = customerAgencyDao.selectOne(qw); + + String customerId = null; + if (StringUtils.isBlank(formDTO.getOrgId())) { - CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + // 没有传参,则使用当前用户所属组织 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo((customerId = EpmetRequestHolder.getLoginUserCustomerId()), EpmetRequestHolder.getLoginUserId()); if (null == staffInfo) { return result; } formDTO.setOrgId(staffInfo.getAgencyId()); formDTO.setLevel(OrgInfoConstant.AGENCY); + } else { + // 前段传递了,那就用前端传递的level和orgId,并且查出来这个组织的客户id,用于后面查询跟组织中心点 + if (OrgInfoConstant.AGENCY.equals(formDTO.getLevel())) { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId()); + customerId = agencyInfo.getCustomerId(); + } else if (OrgInfoConstant.GRID.equals(formDTO.getLevel())) { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getOrgId()); + customerId = gridInfo.getCustomerId(); + } } + + // 查询客户跟组织中心点 + LambdaQueryWrapper qw = new LambdaQueryWrapper(); + qw.eq(CustomerAgencyEntity::getPid, NumConstant.ZERO_STR).eq(CustomerAgencyEntity::getDelFlag, NumConstant.ZERO_STR).eq(CustomerAgencyEntity::getCustomerId, customerId); + CustomerAgencyEntity customerAgencyEntity = customerAgencyDao.selectOne(qw); + if (StringUtils.isNotBlank(customerAgencyEntity.getLatitude())) { result.setLatitude(new BigDecimal(customerAgencyEntity.getLatitude())); } From 44208966aca664ad3352520e7b1b408357e15e65 Mon Sep 17 00:00:00 2001 From: luyan Date: Wed, 19 Apr 2023 14:25:47 +0800 Subject: [PATCH 04/51] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=B0=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E8=BD=AC=E6=8D=A2=E4=B8=BAlog.info(),=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=8F=82=E6=95=B0=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/utils/net/TCCCClientUtils.java | 8 ++++---- .../com/epmet/controller/tccc/TCCCAuthController.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/net/TCCCClientUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/net/TCCCClientUtils.java index 34647de7ec..822d6cfe22 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/net/TCCCClientUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/net/TCCCClientUtils.java @@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class TCCCClientUtils { - private static String SDKAPPID = "1400801042"; + private static Long SDKAPPID = 1400801042L; private static String USERID = "286388969@qq.com"; @@ -34,12 +34,12 @@ public class TCCCClientUtils { CccClient client = new CccClient(cred, "", clientProfile); // 实例化一个请求对象,每个接口都会对应一个request对象 CreateSDKLoginTokenRequest req = new CreateSDKLoginTokenRequest(); - req.setSdkAppId(1400801042L); - req.setSeatUserId("286388969@qq.com"); + req.setSdkAppId(SDKAPPID); + req.setSeatUserId(USERID); // 返回的resp是一个CreateSDKLoginTokenResponse的实例,与请求对象对应 CreateSDKLoginTokenResponse resp = client.CreateSDKLoginToken(req); // 输出json格式的字符串回包 - System.out.println(CreateSDKLoginTokenResponse.toJsonString(resp)); + log.info(CreateSDKLoginTokenResponse.toJsonString(resp)); return CreateSDKLoginTokenResponse.toJsonString(resp); } catch (TencentCloudSDKException e) { log.error(e.toString()); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/tccc/TCCCAuthController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/tccc/TCCCAuthController.java index 18c2baba6e..dd852c7eca 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/tccc/TCCCAuthController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/tccc/TCCCAuthController.java @@ -14,7 +14,7 @@ public class TCCCAuthController { public String getTcccAuth() { try { String tcccAuth = TCCCClientUtils.getToken(); - System.out.println(tcccAuth); + log.info(tcccAuth); return tcccAuth; } catch (Exception e) { log.error(e.toString()); From 01717d97d82d4401f1b2ce1886b8332bc8dcb8d4 Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 19 Apr 2023 16:57:38 +0800 Subject: [PATCH 05/51] =?UTF-8?q?=E3=80=90=E7=81=B5=E5=B1=B1=E8=A1=97?= =?UTF-8?q?=E9=81=93=E3=80=911.=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=AE=8C=E6=88=90=E4=B8=80=E5=8D=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/LingShanSpecialCrowdTypeEnums.java | 42 +++ .../LingShanSpecialCrowdController.java | 114 ++++++ .../LingshanSpecialCrowdDetailAzbjDao.java | 20 + .../LingshanSpecialCrowdDetailJdryDao.java | 20 + .../LingshanSpecialCrowdDetailJzhzDao.java | 20 + .../LingshanSpecialCrowdDetailSqjzDao.java | 20 + .../LingshanSpecialCrowdDetailXfryDao.java | 20 + .../dao/LingshanSpecialCrowdPersonDao.java | 21 ++ .../LingshanSpecialCrowdPersonTypeDao.java | 20 + .../LingshanSpecialCrowdDetailAzbjEntity.java | 69 ++++ .../LingshanSpecialCrowdDetailBaseEntity.java | 22 ++ .../LingshanSpecialCrowdDetailJdryEntity.java | 69 ++++ .../LingshanSpecialCrowdDetailJzhzEntity.java | 74 ++++ .../LingshanSpecialCrowdDetailSqjzEntity.java | 79 ++++ .../LingshanSpecialCrowdDetailXfryEntity.java | 70 ++++ .../LingshanSpecialCrowdPersonEntity.java | 64 ++++ .../LingshanSpecialCrowdPersonTypeEntity.java | 59 +++ .../LingShanSpecialCrowdIsOrNotConverter.java | 34 ++ .../LingShanSpecialCrowdJzhzConverter.java | 57 +++ .../LingShanSpecialCrowdSqjzConverter.java | 51 +++ ...ngShanSpecialCrowdDetailAzbjExcelData.java | 73 ++++ ...ngShanSpecialCrowdDetailBaseExcelData.java | 30 ++ ...ngshanSpecialCrowdDetailJdryExcelData.java | 79 ++++ ...ngshanSpecialCrowdDetailJzhzExcelData.java | 84 +++++ ...ngshanSpecialCrowdDetailSqjzExcelData.java | 92 +++++ ...ngshanSpecialCrowdDetailXfryExcelData.java | 77 ++++ ...ngShanSpecialCrowdExcelImportListener.java | 351 ++++++++++++++++++ ...anSpecialCrowdAzbjExcelImportListener.java | 49 +++ ...nSpecialCrowdJieduExcelImportListener.java | 45 +++ ...cialCrowdJingZhangExcelImportListener.java | 46 +++ ...anSpecialCrowdSqjzExcelImportListener.java | 45 +++ ...pecialCrowdXinFangExcelImportListener.java | 46 +++ .../service/LingShanSpecialCrowdService.java | 47 +++ .../impl/LingShanSpecialCrowdServiceImpl.java | 163 ++++++++ .../LingshanSpecialCrowdDetailAzbjDao.xml | 57 +++ .../LingshanSpecialCrowdDetailJdryDao.xml | 36 ++ .../LingshanSpecialCrowdDetailJzhzDao.xml | 61 +++ .../LingshanSpecialCrowdDetailSqjzDao.xml | 59 +++ .../LingshanSpecialCrowdDetailXfryDao.xml | 61 +++ .../mapper/LingshanSpecialCrowdPersonDao.xml | 45 +++ .../LingshanSpecialCrowdPersonTypeDao.xml | 36 ++ 41 files changed, 2527 insertions(+) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailAzbjEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailBaseEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJdryEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJzhzEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailSqjzEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailXfryEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java new file mode 100644 index 0000000000..28e0c19e7c --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java @@ -0,0 +1,42 @@ +package com.epmet.enums; + +/** + * @description: 灵山街道-特殊人群 + * @param null: + * @return + * @author: WangXianZhang + * @date: 2023/4/19 10:55 AM + */ +public enum LingShanSpecialCrowdTypeEnums { + AZBJ("anzhibangjiao", "安置帮教", 1), + SQJZ("shequjiaozheng", "社区矫正", 1), + JDRY("xidurenyuan", "戒毒人员", 1), + JZHZ("jingzhanghuanzhe", "精障患者", 1), + XFRY("xinfangrenyuan", "信访人员", 1); + + /** + * 类型。anzhibangjiao, + */ + private String type; + private String name; + + private Integer headerRowNumber; + + LingShanSpecialCrowdTypeEnums(String type, String name, Integer headerRowNumber) { + this.type = type; + this.name = name; + this.headerRowNumber = headerRowNumber; + } + + public String getType() { + return type; + } + + public String getName() { + return name; + } + + public Integer getHeaderRowNumber() { + return headerRowNumber; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java new file mode 100644 index 0000000000..aa21a72797 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -0,0 +1,114 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.service.LingShanSpecialCrowdService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Date; + +/** + * @description: 灵山社会维稳(特殊人群) + * @param null: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 9:08 AM + */ +@Slf4j +@RestController +@RequestMapping("lingShan/specialCrowd") +public class LingShanSpecialCrowdController { + + @Autowired + private LingShanSpecialCrowdService lingShanSpecialCrowdService; + + /** + * @description: 特殊人群导入 + * @param file: + * @param crowdCategory: 人群类别 + * anzhibangjiao + * buliangqingshaonian + * shequjiaozheng + * xidurenyuan + * xiejiaorenyuan + * zhaoshizhaohuojingshenbing + * @return + * @author: WangXianZhang + * @date: 2023/4/18 9:12 AM + */ + @PostMapping("import") + public Result importSpecialCowd(MultipartFile file, @RequestParam("crowdCategory") String crowdCategory) { + + // 1.存文件 + Path fileSavePath = saveSpecialCrowdTempFile(file); + + // 2.执行业务导入 + try { + lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString()); + } catch (Exception e) { + throw e; + // ... + } finally { + // 3.删除文件 + deleteSpecialCrowdTempFile(fileSavePath); + } + + return null; + } + + /** + * @description: 保存特殊人群临时文件 + * @param file: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 9:46 AM + */ + public Path saveSpecialCrowdTempFile(@RequestParam("file") MultipartFile file) { + Path fileSavePath; + FileOutputStream os = null; + try { + Path fileSaveDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("special_crowd_import"); + String fileName = DateUtils.format(new Date(), "yyyyMMdd_HHmmss_" + System.nanoTime()); + fileSavePath = fileSaveDir.resolve(fileName); + IOUtils.copy(file.getInputStream(), (os = new FileOutputStream(fileSavePath.toString()))); + return fileSavePath; + } catch (IOException e) { + log.error("【灵山街道】导入社会维稳数据,缓存文件失败。"); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, null); + } finally { + org.apache.poi.util.IOUtils.closeQuietly(os); + } + } + + /** + * @description: 删除特殊人群临时文件 + * @param fileSavePath: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 9:47 AM + */ + public void deleteSpecialCrowdTempFile(Path fileSavePath) { + if (fileSavePath != null) { + try { + Files.deleteIfExists(fileSavePath); + } catch ( + IOException e) { + log.error("【灵山街道】导入社会维稳数据,删除临时文件失败"); + } + } + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java new file mode 100644 index 0000000000..867b812be2 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java @@ -0,0 +1,20 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-安置帮教 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdDetailAzbjDao extends BaseDao { + + void saveBatchManually(@Param("asbjList") List l); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java new file mode 100644 index 0000000000..46419693c3 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java @@ -0,0 +1,20 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdDetailJdryEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-戒毒人员 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdDetailJdryDao extends BaseDao { + + void saveBatchManually(@Param("list") List l); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java new file mode 100644 index 0000000000..727b1f3e07 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java @@ -0,0 +1,20 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdDetailJzhzEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-精障患者 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdDetailJzhzDao extends BaseDao { + + void saveBatchManually(@Param("list") List l); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java new file mode 100644 index 0000000000..331aa3a227 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java @@ -0,0 +1,20 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdDetailSqjzEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-社区矫正 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdDetailSqjzDao extends BaseDao { + + void saveBatchManually(@Param("list") List l); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java new file mode 100644 index 0000000000..e3e3ef3527 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java @@ -0,0 +1,20 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdDetailXfryEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-信访人员 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdDetailXfryDao extends BaseDao { + + void saveBatchManually(@Param("list") List l); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java new file mode 100644 index 0000000000..5c048ed7fb --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java @@ -0,0 +1,21 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity; +import com.epmet.entity.LingshanSpecialCrowdPersonEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-人员基础信息 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdPersonDao extends BaseDao { + + void saveOrUpdateManually(@Param("list") List list); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java new file mode 100644 index 0000000000..5dbb31709b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java @@ -0,0 +1,20 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 灵山-特殊人群-人员具有的特殊人群类型信息 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Mapper +public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao { + + void saveOrUpdateManually(@Param("types") List types); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailAzbjEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailAzbjEntity.java new file mode 100644 index 0000000000..e8905d6624 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailAzbjEntity.java @@ -0,0 +1,69 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山-特殊人群-安置帮教 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_detail_azbj") +public class LingshanSpecialCrowdDetailAzbjEntity extends LingshanSpecialCrowdDetailBaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 原罪名 + */ + private String originalCharge; + + /** + * 释放日期 + */ + private Date releaseDate; + + /** + * 原判刑期(单位:月) + */ + private Date originPrisonTerm; + + /** + * 是否累犯。0否,1是 + */ + private Integer recidivismFlag; + + /** + * 是否安置。0否,1是 + */ + private Integer emplacementFlag; + + /** + * 安置日期 + */ + private Date emplacementDate; + + /** + * 安置帮教情况 + */ + private String emplacementInfo; + + /** + * 是否注销 + */ + private Integer canceledFlag; + + /** + * 注销原因 + */ + private String canceledReason; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailBaseEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailBaseEntity.java new file mode 100644 index 0000000000..ae663fc8c1 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailBaseEntity.java @@ -0,0 +1,22 @@ +package com.epmet.entity; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; + +@Data +public class LingshanSpecialCrowdDetailBaseEntity extends BaseEpmetEntity { + /** + * 客户Id + */ + private String customerId; + + /** + * org id路径,:分割 + */ + private String orgIdPath; + + /** + * 证件号 + */ + private String idCard; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJdryEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJdryEntity.java new file mode 100644 index 0000000000..279af30d10 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJdryEntity.java @@ -0,0 +1,69 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山-特殊人群-戒毒人员 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_detail_jdry") +public class LingshanSpecialCrowdDetailJdryEntity extends LingshanSpecialCrowdDetailBaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 有无犯罪史 + */ + private Integer criminalHistoryFlag; + + /** + * 有无复吸史 + */ + private Integer drugRepetitionFlag; + + /** + * 初次发现日期 + */ + private Date firstDiscoveryDate; + + /** + * 管控人姓名 + */ + private String controllerName; + + /** + * 管控人联系方式 + */ + private String controllerContact; + + /** + * 帮扶人姓名 + */ + private String helperName; + + /** + * 帮扶人联系方式 + */ + private String helperContact; + + /** + * 是否脱管 + */ + private Integer detachedFlag; + + /** + * 脱管原因 + */ + private String detachedReason; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJzhzEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJzhzEntity.java new file mode 100644 index 0000000000..4bdef1f2b0 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailJzhzEntity.java @@ -0,0 +1,74 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山-特殊人群-精障患者 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_detail_jzhz") +public class LingshanSpecialCrowdDetailJzhzEntity extends LingshanSpecialCrowdDetailBaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 有无肇事肇祸史 + */ + private Integer causeTroubleHistoryFlag; + + /** + * 肇事肇祸次数 + */ + private Integer causeTroubleTimes; + + /** + * 目前诊断类型。1精神分裂症,2分裂情感性障碍,3持久的妄想性障碍(偏执性精神病),4双相(情感)障碍,5癫痫所致精神障碍,6精神发育迟滞伴发精神障碍,7重度抑郁发作,8精神活性物质所致精神障碍,9其他 + */ + private Integer currentDiagnosis; + + /** + * 危险性评估等级。0,1,2,3,4,5 + */ + private Integer dangerousClass; + + /** + * 是否具备外出能力 + */ + private Integer canGoOutFlag; + + /** + * 是否有暴力倾向 + */ + private Integer violenceFlag; + + /** + * 是否落实监管补助 + */ + private Integer allowanceFlag; + + /** + * 是否纳入低保 + */ + private Integer subsistenceFlag; + + /** + * 监护人姓名 + */ + private String guardianName; + + /** + * 监护人联系方式 + */ + private String guardianContact; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailSqjzEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailSqjzEntity.java new file mode 100644 index 0000000000..66f1b8767a --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailSqjzEntity.java @@ -0,0 +1,79 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山-特殊人群-社区矫正 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_detail_sqjz") +public class LingshanSpecialCrowdDetailSqjzEntity extends LingshanSpecialCrowdDetailBaseEntity { + + private static final long serialVersionUID = 1L; + + /** + * 矫正类型。1.管制,2缓刑,3假释,4暂予监外执行,5剥夺政治权利 + */ + private Integer rectificateType; + + /** + * 矫正开始日期 + */ + private Date rectificateStartDate; + + /** + * 矫正结束日期 + */ + private Date rectificateEndDate; + + /** + * 原羁押场所 + */ + private String originDetainAddress; + + /** + * 原罪名 + */ + private String originalCharge; + + /** + * 接受方式。1.自行报到,2狱所押送,3当庭交接,4其他 + */ + private Integer receiveWay; + + /** + * 矫正情况说明 + */ + private String rectificateInfo; + + /** + * 是否脱管 + */ + private Integer detachedFlag; + + /** + * 脱管原因 + */ + private String detachedReason; + + /** + * 是否注销 + */ + private Integer canceledFlag; + + /** + * 注销原因 + */ + private String canceledReason; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailXfryEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailXfryEntity.java new file mode 100644 index 0000000000..34605bd8cc --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdDetailXfryEntity.java @@ -0,0 +1,70 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山-特殊人群-信访人员 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_detail_xfry") +public class LingshanSpecialCrowdDetailXfryEntity extends LingshanSpecialCrowdDetailBaseEntity { + + private static final long serialVersionUID = 1L; + + + /** + * 反映问题 + */ + private String problem; + + /** + * 稳控措施 + */ + private String stableControlMeasurement; + + /** + * 是否多次上访 + */ + private Integer multipleFlag; + + /** + * 是否在当地 + */ + private Integer localFlag; + + /** + * 分管领导 + */ + private String branchLeader; + + /** + * 分管领导联系方式 + */ + private String branchLeaderContact; + + /** + * 负责人 + */ + private String principal; + + /** + * 负责人联系方式 + */ + private String principalContact; + + /** + * 稳控人员名单 + */ + private String stableControlerList; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java new file mode 100644 index 0000000000..8291a3fe24 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java @@ -0,0 +1,64 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 灵山-特殊人群-人员基础信息 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_person") +public class LingshanSpecialCrowdPersonEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id + */ + private String customerId; + + /** + * org id路径,:分割 + */ + private String orgIdPath; + + /** + * 姓名 + */ + private String name; + + /** + * 证件号 + */ + private String idCard; + + public LingshanSpecialCrowdPersonEntity() { + } + + public LingshanSpecialCrowdPersonEntity(String id, String customerId, String orgIdPath, String name, String idCard, + String delFlag, Integer revision, Date createdTime, String createdBy, Date updatedTime, + String updatedBy) { + this.customerId = customerId; + this.orgIdPath = orgIdPath; + this.name = name; + this.idCard = idCard; + this.setDelFlag(delFlag); + this.setCreatedBy(createdBy); + this.setCreatedTime(createdTime); + this.setUpdatedBy(updatedBy); + this.setUpdatedTime(updatedTime); + this.setRevision(revision); + this.setId(id); + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java new file mode 100644 index 0000000000..35276f46ef --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java @@ -0,0 +1,59 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 灵山-特殊人群-人员具有的特殊人群类型信息 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("lingshan_special_crowd_person_type") +public class LingshanSpecialCrowdPersonTypeEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id + */ + private String customerId; + + /** + * org id路径,:分割 + */ + private String orgIdPath; + + /** + * 证件号 + */ + private String idCard; + + /** + * 特殊人群类别 + */ + private String specialType; + + public LingshanSpecialCrowdPersonTypeEntity(String id, String customerId, String orgIdPath, String idCard, String specialType, String delFlag, + Integer revision, Date createdTime, String createdBy, Date updatedTime, String updatedBy) { + this.customerId = customerId; + this.orgIdPath = orgIdPath; + this.idCard = idCard; + this.specialType = specialType; + this.setDelFlag(delFlag); + this.setCreatedBy(createdBy); + this.setCreatedTime(createdTime); + this.setUpdatedBy(updatedBy); + this.setUpdatedTime(updatedTime); + this.setRevision(revision); + this.setId(id); + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java new file mode 100644 index 0000000000..e146615243 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java @@ -0,0 +1,34 @@ +package com.epmet.excel.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import org.apache.commons.lang3.StringUtils; + +/** + * 灵山-是否转换器 + */ +public class LingShanSpecialCrowdIsOrNotConverter implements Converter { + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public Integer convertToJavaData(ReadConverterContext context) throws Exception { + String content = context.getReadCellData().getStringValue(); + if (StringUtils.isNotBlank(content)) { + if (content.equals("是") || content.equals("有")) { + return 1; + } else if (content.equals("无") || content.equals("否")) { + return 0; + } + } + return Converter.super.convertToJavaData(context); + } +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java new file mode 100644 index 0000000000..fbefaf92fd --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java @@ -0,0 +1,57 @@ +package com.epmet.excel.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; + +/** + * 灵山-诊断类型转换器 + */ +public class LingShanSpecialCrowdJzhzConverter implements Converter { + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Integer convertToJavaData(ReadConverterContext context) throws Exception { + String content = context.getReadCellData().getStringValue(); + if (content instanceof String) { + switch (content) { + // 诊断类型 + case "精神分裂症": + return 1; + case "分裂情感性障碍": + return 2; + case "持久的妄想性障碍(偏执性精神病)": + return 3; + case "双相(情感)障碍": + return 4; + case "癫痫所致精神障碍": + return 5; + case "精神发育迟滞伴发精神障碍": + return 6; + case "重度抑郁发作": + return 7; + case "精神活性物质所致精神障碍": + return 8; + case "其他": + return 9; + // 危险性评估等级 + case "0级": + return 0; + case "1级": + return 1; + case "2级": + return 2; + case "3级": + return 3; + case "4级": + return 4; + case "5级": + return 5; + } + } + return Converter.super.convertToJavaData(context); + } +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java new file mode 100644 index 0000000000..8de25b0e9a --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java @@ -0,0 +1,51 @@ +package com.epmet.excel.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; + +/** + * 灵山-社区矫正转换器 + */ +public class LingShanSpecialCrowdSqjzConverter implements Converter { + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public Integer convertToJavaData(ReadConverterContext context) throws Exception { + Object content = context.getReadCellData().getStringValue(); + if (content instanceof String) { + switch ((String) content) { + // 矫正类型 + case "管制": + return 1; + case "缓刑": + return 2; + case "假释": + return 3; + case "暂予监外执行": + return 4; + case "剥夺政治权利": + return 5; + // 接受方式 + case "自行报到": + return 1; + case "狱所押送": + return 2; + case "当庭交接": + return 3; + case "其他": + return 4; + + } + } + return Converter.super.convertToJavaData(context); + } +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java new file mode 100644 index 0000000000..49bacc91d7 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java @@ -0,0 +1,73 @@ +package com.epmet.excel.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * 安置帮教 + */ +@Data +public class LingShanSpecialCrowdDetailAzbjExcelData extends LingShanSpecialCrowdDetailBaseExcelData { + + /** + * 原罪名 + */ + @ExcelProperty(value = "*原罪名") + @NotBlank(message = "原罪名不能为空") + private String originalCharge; + + /** + * 释放日期 + */ + @ExcelProperty(value = "*释放日期") + @NotNull(message = "释放日期不能为空") + private Date releaseDate; + + /** + * 原判刑期(单位:月) + */ + @ExcelProperty(value = "原判刑期(单位:月)") + private Date originPrisonTerm; + + /** + * 是否累犯。0否,1是 + */ + @ExcelProperty(value = "是否累犯", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer recidivismFlag; + + /** + * 是否安置。0否,1是 + */ + @ExcelProperty(value = "是否安置", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer emplacementFlag; + + /** + * 安置日期 + */ + @ExcelProperty(value = "安置日期") + private Date emplacementDate; + + /** + * 安置帮教情况 + */ + @ExcelProperty(value = "安置帮教情况") + private String emplacementInfo; + + /** + * 是否注销 + */ + @ExcelProperty(value = "是否注销", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer canceledFlag; + + /** + * 注销原因 + */ + @ExcelProperty(value = "注销原因") + private String canceledReason; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java new file mode 100644 index 0000000000..1d43fb5790 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java @@ -0,0 +1,30 @@ +package com.epmet.excel.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * + */ +@Data +public class LingShanSpecialCrowdDetailBaseExcelData { + /** + * 姓名 + */ + @ExcelProperty(value = "*姓名") + @NotBlank(message = "姓名不能为空") + private String name; + /** + * 证件号 + */ + @ExcelProperty(value = "*身份证号") + @NotBlank(message = "身份证号不能为空") + private String idCard; + + /** + * 错误信息 + */ + private String errorInfo; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java new file mode 100644 index 0000000000..8ca975af70 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java @@ -0,0 +1,79 @@ +package com.epmet.excel.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * 灵山-特殊人群-戒毒人员 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +public class LingshanSpecialCrowdDetailJdryExcelData extends LingShanSpecialCrowdDetailBaseExcelData { + + /** + * 有无犯罪史 + */ + @ExcelProperty(value = "*有无犯罪史", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @NotNull(message = "有无犯罪史不能为空") + private Integer criminalHistoryFlag; + + /** + * 有无复吸史 + */ + @ExcelProperty(value = "*有无复吸史", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @NotNull(message = "有无复吸史不能为空") + private Integer drugRepetitionFlag; + + /** + * 初次发现日期 + */ + @ExcelProperty(value = "初次发现日期") + private Date firstDiscoveryDate; + + /** + * 管控人姓名 + */ + @ExcelProperty(value = "管控人姓名") + private String controllerName; + + /** + * 管控人联系方式 + */ + @ExcelProperty(value = "管控人联系方式") + private String controllerContact; + + /** + * 帮扶人姓名 + */ + @ExcelProperty(value = "帮扶人姓名") + private String helperName; + + /** + * 帮扶人联系方式 + */ + @ExcelProperty(value = "帮扶人联系方式") + private String helperContact; + + /** + * 是否脱管 + */ + @ExcelProperty(value = "是否脱管", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer detachedFlag; + + /** + * 脱管原因 + */ + @ExcelProperty(value = "脱管原因") + private String detachedReason; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java new file mode 100644 index 0000000000..067cd35987 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java @@ -0,0 +1,84 @@ +package com.epmet.excel.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.epmet.excel.converter.LingShanSpecialCrowdJzhzConverter; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 灵山-特殊人群-精障患者 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +public class LingshanSpecialCrowdDetailJzhzExcelData extends LingShanSpecialCrowdDetailBaseExcelData { + + private static final long serialVersionUID = 1L; + + /** + * 有无肇事肇祸史 + */ + @ExcelProperty(value = "*有无肇事肇祸史", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @NotNull(message = "有无肇事肇祸史不能为空") + private Integer causeTroubleHistoryFlag; + + /** + * 肇事肇祸次数 + */ + @ExcelProperty(value = "*肇事肇祸次数") + @NotNull(message = "肇事肇祸次数不能为空") + private Integer causeTroubleTimes; + + /** + * 目前诊断类型。1精神分裂症,2分裂情感性障碍,3持久的妄想性障碍(偏执性精神病),4双相(情感)障碍,5癫痫所致精神障碍,6精神发育迟滞伴发精神障碍,7重度抑郁发作,8精神活性物质所致精神障碍,9其他 + */ + @ExcelProperty(value = "目前诊断类型", converter = LingShanSpecialCrowdJzhzConverter.class) + private Integer currentDiagnosis; + + /** + * 危险性评估等级。0,1,2,3,4,5 + */ + @ExcelProperty(value = "危险性评估等级", converter = LingShanSpecialCrowdJzhzConverter.class) + private Integer dangerousClass; + + /** + * 是否具备外出能力 + */ + @ExcelProperty(value = "是否具备外出能力", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer canGoOutFlag; + + /** + * 是否有暴力倾向 + */ + @ExcelProperty(value = "是否有暴力倾向", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer violenceFlag; + + /** + * 是否落实监管补助 + */ + @ExcelProperty(value = "是否落实监管补助", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer allowanceFlag; + + /** + * 是否纳入低保 + */ + @ExcelProperty(value = "是否纳入低保", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer subsistenceFlag; + + /** + * 监护人姓名 + */ + @ExcelProperty(value = "监护人姓名") + private String guardianName; + + /** + * 监护人联系方式 + */ + @ExcelProperty(value = "监护人联系方式") + private String guardianContact; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java new file mode 100644 index 0000000000..950ce47381 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java @@ -0,0 +1,92 @@ +package com.epmet.excel.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.epmet.excel.converter.LingShanSpecialCrowdSqjzConverter; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * 灵山-特殊人群-社区矫正 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +public class LingshanSpecialCrowdDetailSqjzExcelData extends LingShanSpecialCrowdDetailBaseExcelData { + + + /** + * 矫正类型。1.管制,2缓刑,3假释,4暂予监外执行,5剥夺政治权利 + */ + @ExcelProperty(value = "*矫正类型", converter = LingShanSpecialCrowdSqjzConverter.class) + @NotNull(message = "矫正类型不能为空") + private Integer rectificateType; + + /** + * 矫正开始日期 + */ + @ExcelProperty(value = "矫正开始日期") + private Date rectificateStartDate; + + /** + * 矫正结束日期 + */ + @ExcelProperty(value = "矫正结束日期") + private Date rectificateEndDate; + + /** + * 原羁押场所 + */ + @ExcelProperty(value = "原羁押场所") + private String originDetainAddress; + + /** + * 原罪名 + */ + @ExcelProperty(value = "原罪名") + private String originalCharge; + + /** + * 接受方式。1.自行报到,2狱所押送,3当庭交接,4其他 + */ + @ExcelProperty(value = "接受方式", converter = LingShanSpecialCrowdSqjzConverter.class) + private Integer receiveWay; + + /** + * 矫正情况说明 + */ + @ExcelProperty(value = "矫正情况说明") + private String rectificateInfo; + + /** + * 是否脱管 + */ + @ExcelProperty(value = "是否脱管", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer detachedFlag; + + /** + * 脱管原因 + */ + @ExcelProperty(value = "脱管原因") + private String detachedReason; + + /** + * 是否注销 + */ + @ExcelProperty(value = "是否注销" , converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer canceledFlag; + + /** + * 注销原因 + */ + @ExcelProperty(value = "注销原因") + private String canceledReason; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java new file mode 100644 index 0000000000..f7a865a3ba --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java @@ -0,0 +1,77 @@ +package com.epmet.excel.data; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; + +/** + * 灵山-特殊人群-信访人员 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2023-04-18 + */ +@Data +public class LingshanSpecialCrowdDetailXfryExcelData extends LingShanSpecialCrowdDetailBaseExcelData { + + /** + * 反映问题 + */ + @ExcelProperty(value = "*反映问题") + @NotBlank(message = "反映问题不能为空") + private String problem; + + /** + * 稳控措施 + */ + @ExcelProperty(value = "*稳控措施") + @NotBlank(message = "稳控措施不能为空") + private String stableControlMeasurement; + + /** + * 是否多次上访 + */ + @ExcelProperty(value = "是否多次上访", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer multipleFlag; + + /** + * 是否在当地 + */ + @ExcelProperty(value = "是否在当地", converter = LingShanSpecialCrowdIsOrNotConverter.class) + private Integer localFlag; + + /** + * 分管领导 + */ + @ExcelProperty(value = "分管领导") + private String branchLeader; + + /** + * 分管领导联系方式 + */ + @ExcelProperty(value = "分管领导联系方式") + private String branchLeaderContact; + + /** + * 负责人 + */ + @ExcelProperty(value = "负责人") + private String principal; + + /** + * 负责人联系方式 + */ + @ExcelProperty(value = "负责人联系方式") + private String principalContact; + + /** + * 稳控人员名单 + */ + @ExcelProperty(value = "稳控人员名单") + private String stableControlerList; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java new file mode 100644 index 0000000000..e86d714d11 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -0,0 +1,351 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.read.listener.ReadListener; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.epmet.common.token.util.TokenUtil; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import com.epmet.commons.tools.distributedlock.DistributedLock; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.PidUtils; +import com.epmet.commons.tools.utils.SpringContextUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.LingshanSpecialCrowdDetailBaseEntity; +import com.epmet.entity.LingshanSpecialCrowdPersonEntity; +import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData; +import com.epmet.service.LingShanSpecialCrowdService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.redisson.api.RLock; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 灵山大屏-抽象的导入excel监听器 + */ +public abstract class AbstractLingShanSpecialCrowdExcelImportListener + extends AnalysisEventListener { + + /** + * @description: 分布式锁 + * @param null: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:43 PM + */ + private DistributedLock distributedLock; + + /** + * 按批次保存,单次最大数据量 + */ + private static final Integer MAX_BATCH_SIZE = 500; + + /** + * 表头应有行数 + */ + private Integer maxHeadRowNum; + + /** + * 文件的表头中应当有哪些列 + */ + private List headerZhList; + + /** + * 当前表头读到了第几行 + */ + private Integer currentHeadRowNum = 0; + + /** + * 原始数据列表 + */ + private List originDatas = new ArrayList<>(); + + /** + * 错误数据列表 + */ + private List errorDatas = new ArrayList<>(); + + /** + * 正确数据 + */ + private List correctDatas = new ArrayList<>(); + + private List persons = new ArrayList<>(); + private List personTypes = new ArrayList<>(); + + protected LingShanSpecialCrowdService lingShanSpecialCrowdService; + + private Class entityClass; + + private CustomerStaffInfoCacheResult currentStaffInfo; + + private LingShanSpecialCrowdTypeEnums specialCrowdType; + + public AbstractLingShanSpecialCrowdExcelImportListener() { + lingShanSpecialCrowdService = SpringContextUtils.getBean(LingShanSpecialCrowdService.class); + distributedLock = SpringContextUtils.getBean(DistributedLock.class); + currentStaffInfo = CustomerStaffRedis.getStaffInfo(EpmetRequestHolder.getLoginUserCustomerId(), EpmetRequestHolder.getLoginUserId()); + maxHeadRowNum = setMaxHeadRowNum(); + headerZhList = setHeaderZhList(); + specialCrowdType = getSpecialCrowdType(); + entityClass = getEntityClass(); + } + + /** + * @param headMap: + * @param context: + * @return + * @description: 表头回调函数,此处做统一表头校验,确认文件内容与当前要导入的数据的字段一致,防止导错类型. + * @author: WangXianZhang + * @date: 2023/4/18 10:42 AM + */ + @Override + public void invokeHeadMap(Map headMap, AnalysisContext context) { + // super.invokeHeadMap(headMap, context); + + if (maxHeadRowNum == null || CollectionUtils.isEmpty(headerZhList)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【灵山街道】社会维稳数据导入-子类未设置header行数以及header字段列表。"); + } + + if ((++currentHeadRowNum).equals(maxHeadRowNum)) { + // 如果是表头最后一行,则校验表头 + + Collection headersFromFile = headMap.values(); + // 2次循环,双向校验 + for (String headerZh : headersFromFile) { + if (StringUtils.isNotBlank(headerZh) && !headerZhList.contains(headerZh)) { + throw new EpmetException("请确认表头内容与模板一致"); + } + } + + for (String headerZh : headerZhList) { + if (StringUtils.isNotBlank(headerZh) && !headersFromFile.contains(headerZh)) { + throw new EpmetException("请确认表头内容与模板一致"); + } + } + } + } + + /** + * @description: 行读取回调函数 + * @param row: + * @param context: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:44 PM + */ + @Override + public void invoke(T row, AnalysisContext context) { + try { + ValidatorUtils.validateEntity(row); + } catch ( + ValidateException e) { + // 加入到错误记录中去 + errorDatas.add(row); + return; + } + + originDatas.add(row); + + if (originDatas.size() >= MAX_BATCH_SIZE) { + // 满足了一批次的数量,执行保存 + saveBatchWithLock(); + clear(); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + if (originDatas.size() > 0) { + saveBatchWithLock(); + clear(); + } + } + + /** + * @param : + * @return + * @description: 批量保存,带锁的。因为要在Listener中过滤出哪些数据不能导入,返回给前端。 + * 所以需要再lisener中做批量检查,然后批量保存。过程需要一点时间,为了防止并发问题,加分布式锁。以agencyId为粒度。 + * @author: WangXianZhang + * @date: 2023/4/18 4:33 PM + */ + private void saveBatchWithLock() { + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, EpmetRequestHolder.getLoginUserId()); + RLock lock = distributedLock.getLock(String.format("{}:{}:{}", "lock:specialcrowd", customerId, staffInfo.getAgencyId())); + try { + this.saveBatch(); + } catch (Exception e) { + throw e; + } finally { + if (lock != null && lock.isHeldByCurrentThread()) { + lock.unlock(); + } + } + } + + /** + * @param : + * @return + * @description: 批量保存 + * @author: WangXianZhang + * @date: 2023/4/18 3:42 PM + */ + protected void saveBatch() { + String orgIdPath = PidUtils.convertPid2OrgIdPath(currentStaffInfo.getFromOrgId(), currentStaffInfo.getAgencyPIds()); + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + Date now = new Date(); + Iterator it = getOriginDatas().iterator(); + for (; it.hasNext(); ) { + T row = it.next(); + String errorInfo = lingShanSpecialCrowdService.validate(row); + if (StringUtils.isNotBlank(errorInfo)) { + row.setErrorInfo(errorInfo); + errorDatas.add(row); + it.remove(); + } else { + persons.add(new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, row.getName(), row.getIdCard(), + "0", 0, now, currentStaffInfo.getStaffId(), now, currentStaffInfo.getStaffId())); + personTypes.add(new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, row.getIdCard(), specialCrowdType.getType(), + "0", 0, now, currentStaffInfo.getStaffId(), now, currentStaffInfo.getStaffId())); + + E e = ConvertUtils.sourceToTarget(row, entityClass); + e.setCustomerId(customerId); + e.setOrgIdPath(orgIdPath); + e.setId(IdWorker.getIdStr()); + e.setRevision(0); + e.setCreatedTime(now); + e.setUpdatedTime(now); + e.setCreatedBy(currentStaffInfo.getStaffId()); + e.setUpdatedBy(currentStaffInfo.getStaffId()); + e.setDelFlag("0"); + correctDatas.add(e); + } + } + + // 执行保存 + if(!CollectionUtils.isEmpty(persons) && !CollectionUtils.isEmpty(personTypes)) { + savePersonAndTypes(persons, personTypes); + } + + // 将错误的数据处理 todo + + // 保存人群详情数据 + saveBatchCallback(correctDatas); + } + + /** + * @description: 保存人员信息,人员类型 + * @param persons: + * @param personTypes: + * @return + * @author: WangXianZhang + * @date: 2023/4/19 11:06 AM + */ + private void savePersonAndTypes(List persons, List personTypes) { + lingShanSpecialCrowdService.savePersonAndTypes(persons, personTypes); + } + + /** + * @param : + * @return + * @description: 清理数据 + * @author: WangXianZhang + * @date: 2023/4/18 4:41 PM + */ + protected void clear() { + originDatas.clear(); + errorDatas.clear(); + } + + /** + * @description: 获取读取到的原始数据 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:21 PM + */ + protected List getOriginDatas() { + return originDatas; + } + + /** + * @description: 获取错误数据行 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:22 PM + */ + protected List getErrorDatas() { + return errorDatas; + } + + /** + * @description: 获取正确数据行 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:22 PM + */ + protected List getCorrectDatas() { + return correctDatas; + } + + /** + * @param : + * @return + * @description: 批量保存,子类实现 + * @author: WangXianZhang + * @date: 2023/4/18 4:32 PM + */ + abstract void saveBatchCallback(List entities); + + /** + * @description: 设置表头行数 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:22 PM + */ + abstract Integer setMaxHeadRowNum(); + + /** + * @description: 设置header字段列表。子类应当调用该方法设置该值 + * @return + * @author: WangXianZhang + * @date: 2023/4/18 11:21 PM + */ + abstract List setHeaderZhList(); + + /** + * @description: 获取entity的class,用于数据拷贝 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/19 9:47 AM + */ + abstract Class getEntityClass(); + + /** + * @description: 指定特殊人群类型 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/19 11:00 AM + */ + abstract LingShanSpecialCrowdTypeEnums getSpecialCrowdType(); + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java new file mode 100644 index 0000000000..6be9cba8b4 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java @@ -0,0 +1,49 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.LingShanSpecialCrowdDetailAzbjExcelData; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; + +import java.io.File; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +/** + * 灵山-安置帮教导入 + */ +public class LingShanSpecialCrowdAzbjExcelImportListener + extends AbstractLingShanSpecialCrowdExcelImportListener { + + @Override + Integer setMaxHeadRowNum() { + return 1; + } + + @Override + List setHeaderZhList() { + return Arrays.asList("*姓名", "*身份证号", "*原罪名", "*释放日期", "原判刑期(单位:月)", "是否累犯", "是否安置", "安置日期", "安置帮教情况", "是否注销", "注销原因"); + } + + @Override + Class getEntityClass() { + return LingshanSpecialCrowdDetailAzbjEntity.class; + } + + @Override + void saveBatchCallback(List entities) { + lingShanSpecialCrowdService.saveBatch(entities, new LingshanSpecialCrowdDetailAzbjEntity()); + } + + @Override + LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { + return LingShanSpecialCrowdTypeEnums.AZBJ; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java new file mode 100644 index 0000000000..98038505a6 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java @@ -0,0 +1,45 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity; +import com.epmet.entity.LingshanSpecialCrowdDetailJdryEntity; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.LingshanSpecialCrowdDetailJdryExcelData; + +import java.io.File; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 灵山-戒毒导入 + */ +public class LingShanSpecialCrowdJieduExcelImportListener + extends AbstractLingShanSpecialCrowdExcelImportListener { + + @Override + Integer setMaxHeadRowNum() { + return 1; + } + + @Override + List setHeaderZhList() { + return Arrays.asList("*姓名", "*身份证号", "*有无犯罪史", "*有无复吸史", "初次发现日期", "管控人姓名", "管控人联系方式", "帮扶人姓名", "帮扶人联系方式", "是否脱管", "脱管原因"); + } + + @Override + Class getEntityClass() { + return LingshanSpecialCrowdDetailJdryEntity.class; + } + + @Override + void saveBatchCallback(List entities) { + lingShanSpecialCrowdService.saveBatch(entities, new LingshanSpecialCrowdDetailJdryEntity()); + } + + @Override + LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { + return LingShanSpecialCrowdTypeEnums.JDRY; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java new file mode 100644 index 0000000000..6ea1034872 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java @@ -0,0 +1,46 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.epmet.entity.LingshanSpecialCrowdDetailJdryEntity; +import com.epmet.entity.LingshanSpecialCrowdDetailJzhzEntity; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.LingshanSpecialCrowdDetailJzhzExcelData; + +import java.io.File; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 灵山-精神障碍患者导入 + */ +public class LingShanSpecialCrowdJingZhangExcelImportListener + extends AbstractLingShanSpecialCrowdExcelImportListener { + + + @Override + void saveBatchCallback(List entities) { + lingShanSpecialCrowdService.saveBatch(entities, new LingshanSpecialCrowdDetailJzhzEntity()); + } + + @Override + Integer setMaxHeadRowNum() { + return 1; + } + + @Override + List setHeaderZhList() { + return Arrays.asList("*姓名", "*身份证号", "*有无肇事肇祸史", "*肇事肇祸次数", "目前诊断类型", "危险性评估等级", "是否具备外出能力", "是否有暴力倾向", "是否落实监管补助", "是否纳入低保", "监护人姓名", "监护人联系方式"); + } + + @Override + Class getEntityClass() { + return LingshanSpecialCrowdDetailJzhzEntity.class; + } + + @Override + LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { + return LingShanSpecialCrowdTypeEnums.JZHZ; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java new file mode 100644 index 0000000000..d347b131d4 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java @@ -0,0 +1,45 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.epmet.dao.LingshanSpecialCrowdDetailSqjzDao; +import com.epmet.entity.LingshanSpecialCrowdDetailJzhzEntity; +import com.epmet.entity.LingshanSpecialCrowdDetailSqjzEntity; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.LingshanSpecialCrowdDetailSqjzExcelData; + +import java.io.File; +import java.util.Arrays; +import java.util.List; + +/** + * 灵山-矫正人员导入 + */ +public class LingShanSpecialCrowdSqjzExcelImportListener + extends AbstractLingShanSpecialCrowdExcelImportListener { + + @Override + void saveBatchCallback(List entities) { + lingShanSpecialCrowdService.saveBatch(entities, new LingshanSpecialCrowdDetailSqjzEntity()); + } + + @Override + Integer setMaxHeadRowNum() { + return 1; + } + + @Override + List setHeaderZhList() { + return Arrays.asList("*姓名", "*身份证号", "*矫正类型", "矫正开始日期", "矫正结束日期", "原羁押场所", "原罪名", "接受方式", "矫正情况说明", "是否脱管", "脱管原因", "是否注销", "注销原因"); + } + + @Override + Class getEntityClass() { + return LingshanSpecialCrowdDetailSqjzEntity.class; + } + + @Override + LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { + return LingShanSpecialCrowdTypeEnums.SQJZ; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java new file mode 100644 index 0000000000..062c7bff64 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java @@ -0,0 +1,46 @@ +package com.epmet.excel.handler; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.epmet.entity.LingshanSpecialCrowdDetailJzhzEntity; +import com.epmet.entity.LingshanSpecialCrowdDetailXfryEntity; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.LingshanSpecialCrowdDetailXfryExcelData; + +import java.io.File; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 灵山-信访人员导入 + */ +public class LingShanSpecialCrowdXinFangExcelImportListener + extends AbstractLingShanSpecialCrowdExcelImportListener { + + + @Override + void saveBatchCallback(List entities) { + lingShanSpecialCrowdService.saveBatch(entities, new LingshanSpecialCrowdDetailXfryEntity()); + } + + @Override + Integer setMaxHeadRowNum() { + return 1; + } + + @Override + List setHeaderZhList() { + return Arrays.asList("*姓名", "*身份证号", "*反映问题", "*稳控措施", "是否多次上访", "是否在当地", "分管领导", "分管领导联系方式", "负责人", "负责人联系方式", "稳控人员名单"); + } + + @Override + Class getEntityClass() { + return LingshanSpecialCrowdDetailXfryEntity.class; + } + + @Override + LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { + return LingShanSpecialCrowdTypeEnums.XFRY; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java new file mode 100644 index 0000000000..bf26d89d83 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -0,0 +1,47 @@ +package com.epmet.service; + +import com.epmet.entity.*; +import com.epmet.excel.data.LingShanSpecialCrowdDetailAzbjExcelData; +import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData; +import org.apache.poi.ss.formula.functions.T; + +import java.util.List; + +/** + * 灵山特殊人群service + */ +public interface LingShanSpecialCrowdService { + + /** + * @description: 导入特殊人群 + * @param crowdCategory: + * @param fileSavePath: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 5:42 PM + */ + void importSpecialCrowd(String crowdCategory, String fileSavePath); + + /** + * @description: 数据校验 + * @param row: + * @returns + * @author: WangXianZhang + * @date: 2023/4/18 4:49 PM + */ + String validate(LingShanSpecialCrowdDetailBaseExcelData row); + + void savePersonAndTypes(List persons, List personTypes); + + /** + * @description: 安置帮教-导入 + * @return + * @author: WangXianZhang + * @date: 2023/4/18 4:11 PM + */ + void saveBatch(List entities, LingshanSpecialCrowdDetailAzbjEntity e); + void saveBatch(List entities, LingshanSpecialCrowdDetailJdryEntity e); + void saveBatch(List entities, LingshanSpecialCrowdDetailJzhzEntity e); + void saveBatch(List entities, LingshanSpecialCrowdDetailSqjzEntity e); + void saveBatch(List entities, LingshanSpecialCrowdDetailXfryEntity e); +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java new file mode 100644 index 0000000000..3522ce8a7e --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -0,0 +1,163 @@ +package com.epmet.service.impl; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.read.metadata.ReadSheet; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.dao.*; +import com.epmet.entity.*; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.excel.data.*; +import com.epmet.excel.handler.*; +import com.epmet.service.LingShanSpecialCrowdService; +import org.apache.commons.collections4.ListUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.List; + +/** + * 灵山特殊人群service + */ +@Service +public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService { + + @Autowired + private LingshanSpecialCrowdPersonDao specialCrowdPersonDao; + + @Autowired + private LingshanSpecialCrowdPersonTypeDao specialCrowdPersonTypeDao; + + @Autowired + private LingshanSpecialCrowdDetailAzbjDao specialCrowdDetailAzbjDao; + + @Autowired + private LingshanSpecialCrowdDetailSqjzDao specialCrowdDetailSqjzDao; + + @Autowired + private LingshanSpecialCrowdDetailJdryDao specialCrowdDetailJdryDao; + + @Autowired + private LingshanSpecialCrowdDetailJzhzDao specialCrowdDetailJzhzDao; + + @Autowired + private LingshanSpecialCrowdDetailXfryDao specialCrowdDetailXfryDao; + + @Autowired + private IcResiUserDao icResiUserDao; + + @Override + public void importSpecialCrowd(String crowdCategory, String fileSavePath) { + Class excelDataClass; + AbstractLingShanSpecialCrowdExcelImportListener listener; + LingShanSpecialCrowdTypeEnums specialCrowdTypeEnum; + + if (LingShanSpecialCrowdTypeEnums.AZBJ.getType().equals(crowdCategory)) { + listener = new LingShanSpecialCrowdAzbjExcelImportListener(); + excelDataClass = LingShanSpecialCrowdDetailAzbjExcelData.class; + specialCrowdTypeEnum = LingShanSpecialCrowdTypeEnums.AZBJ; + } else if (LingShanSpecialCrowdTypeEnums.SQJZ.getType().equals(crowdCategory)) { + listener = new LingShanSpecialCrowdSqjzExcelImportListener(); + excelDataClass = LingshanSpecialCrowdDetailSqjzExcelData.class; + specialCrowdTypeEnum = LingShanSpecialCrowdTypeEnums.SQJZ; + } else if (LingShanSpecialCrowdTypeEnums.JDRY.getType().equals(crowdCategory)) { + listener = new LingShanSpecialCrowdJieduExcelImportListener(); + excelDataClass = LingshanSpecialCrowdDetailJdryExcelData.class; + specialCrowdTypeEnum = LingShanSpecialCrowdTypeEnums.JDRY; + } else if (LingShanSpecialCrowdTypeEnums.JZHZ.getType().equals(crowdCategory)) { + listener = new LingShanSpecialCrowdJingZhangExcelImportListener(); + excelDataClass = LingshanSpecialCrowdDetailJzhzExcelData.class; + specialCrowdTypeEnum = LingShanSpecialCrowdTypeEnums.JZHZ; + } else if (LingShanSpecialCrowdTypeEnums.XFRY.getType().equals(crowdCategory)) { + listener = new LingShanSpecialCrowdXinFangExcelImportListener(); + excelDataClass = LingshanSpecialCrowdDetailXfryExcelData.class; + specialCrowdTypeEnum = LingShanSpecialCrowdTypeEnums.XFRY; + } else { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "【灵山街道-维稳】导入。不支持的人群类别:" + crowdCategory); + } + + // Execute reading + // ReadSheet sheet = EasyExcel.readSheet(0).registerReadListener(listener).build(); + // EasyExcel.read(fileSavePath).build().read(sheet); + + EasyExcel.read(fileSavePath, excelDataClass, listener) + .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) + .sheet(0) + .doRead(); + } + + @Override + public String validate(LingShanSpecialCrowdDetailBaseExcelData row) { + String idCard = row.getIdCard(); + String name = row.getName(); + + IcResiUserEntity resiEntity = icResiUserDao.selectResiUserEntityByIdCard(idCard, EpmetRequestHolder.getLoginUserCustomerId()); + if (resiEntity == null) { + // 居民不存在,报错 + return "居民信息不存在,请先维护居民基础信息。"; + } + if (!resiEntity.getName().equals(name)) { + return String.format("姓名信息与居民基础信息不一致。(在居民哭华总根据身份证号找到的居民姓名为:{})", name); + } + + return null; + } + + @Override + public void savePersonAndTypes(List persons, List personTypes) { + List> personParts = ListUtils.partition(persons, 50); + List> personTypeParts = ListUtils.partition(personTypes, 50); + + for (List p : personParts) { + specialCrowdPersonDao.saveOrUpdateManually(p); + } + for (List p : personTypeParts) { + specialCrowdPersonTypeDao.saveOrUpdateManually(p); + } + } + + @Override + public void saveBatch(List entities, LingshanSpecialCrowdDetailAzbjEntity e) { + List> partition = ListUtils.partition(entities, 50); + for (List l : partition) { + specialCrowdDetailAzbjDao.saveBatchManually(l); + } + } + + @Override + public void saveBatch(List entities, LingshanSpecialCrowdDetailJdryEntity e) { + List> partition = ListUtils.partition(entities, 50); + for (List l : partition) { + specialCrowdDetailJdryDao.saveBatchManually(l); + } + } + + @Override + public void saveBatch(List entities, LingshanSpecialCrowdDetailJzhzEntity e) { + List> partition = ListUtils.partition(entities, 50); + for (List l : partition) { + specialCrowdDetailJzhzDao.saveBatchManually(l); + } + } + + @Override + public void saveBatch(List entities, LingshanSpecialCrowdDetailSqjzEntity e) { + List> partition = ListUtils.partition(entities, 50); + for (List l : partition) { + specialCrowdDetailSqjzDao.saveBatchManually(l); + } + } + + @Override + public void saveBatch(List entities, LingshanSpecialCrowdDetailXfryEntity e) { + List> partition = ListUtils.partition(entities, 50); + for (List l : partition) { + specialCrowdDetailXfryDao.saveBatchManually(l); + } + } +} diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml new file mode 100644 index 0000000000..60a3bb3c17 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into lingshan_special_crowd_detail_azbj ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, ORIGINAL_CHARGE, RELEASE_DATE + , ORIGIN_PRISON_TERM, RECIDIVISM_FLAG, EMPLACEMENT_FLAG, EMPLACEMENT_DATE + , EMPLACEMENT_INFO, CANCELED_FLAG, CANCELED_REASON, DEL_FLAG, REVISION + , CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) + values + + ( #{item.id}, #{item.customerId}, #{item.orgIdPath}, #{item.idCard}, #{item.originalCharge}, + #{item.releaseDate},#{item.originPrisonTerm},#{item.recidivismFlag},#{item.emplacementFlag}, + #{item.emplacementDate}, #{item.emplacementInfo}, #{item.canceledFlag}, #{item.canceledReason}, #{item.delFlag}, + #{item.revision}, #{item.createdBy}, #{item.createdTime}, #{item.updatedBy}, #{item.updatedTime} + ) + + on duplicate key update ORG_ID_PATH = values(ORG_ID_PATH) + , ID_CARD = values(ID_CARD) + , ORIGINAL_CHARGE = values(ORIGINAL_CHARGE) + , RELEASE_DATE = values(RELEASE_DATE) + , ORIGIN_PRISON_TERM = values(ORIGIN_PRISON_TERM) + , RECIDIVISM_FLAG = values(RECIDIVISM_FLAG) + , EMPLACEMENT_FLAG = values(EMPLACEMENT_FLAG) + , EMPLACEMENT_DATE = values(EMPLACEMENT_DATE) + , EMPLACEMENT_INFO = values(EMPLACEMENT_INFO) + , CANCELED_FLAG = values(CANCELED_FLAG) + , CANCELED_REASON = values(CANCELED_REASON) + , UPDATED_BY = values(UPDATED_BY) + , UPDATED_TIME = values(UPDATED_TIME) + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml new file mode 100644 index 0000000000..efdc2079e7 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml @@ -0,0 +1,36 @@ + + + + + + insert into lingshan_special_crowd_detail_jdry ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, CRIMINAL_HISTORY_FLAG + , DRUG_REPETITION_FLAG, FIRST_DISCOVERY_DATE, CONTROLLER_NAME + , CONTROLLER_CONTACT, HELPER_NAME, HELPER_CONTACT, DETACHED_FLAG + , DETACHED_REASON, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME + , UPDATED_BY, UPDATED_TIME) + values + + (#{item.id}, #{item.customerId}, #{item.orgIdPath}, #{item.idCard}, #{item.criminalHistoryFlag}, + #{item.drugRepetitionFlag}, #{item.firstDiscoveryDate}, #{item.controllerName}, #{item.controllerContact}, #{item.helperName}, + #{item.helperContact}, #{item.detachedFlag}, #{item.detachedReason}, #{item.delFlag}, #{item.revision}, + #{item.createdBy}, #{item.createdTime}, #{item.updatedBy}, #{item.updatedTime}) + + on duplicate key update + ORG_ID_PATH = values(ORG_ID_PATH), + CRIMINAL_HISTORY_FLAG = values(CRIMINAL_HISTORY_FLAG), + DRUG_REPETITION_FLAG = values(DRUG_REPETITION_FLAG), + FIRST_DISCOVERY_DATE = values(FIRST_DISCOVERY_DATE), + CONTROLLER_NAME = values(CONTROLLER_NAME), + CONTROLLER_CONTACT = values(CONTROLLER_CONTACT), + HELPER_NAME = values(HELPER_NAME), + HELPER_CONTACT = values(HELPER_CONTACT), + DETACHED_FLAG = values(DETACHED_FLAG), + DETACHED_REASON = values(DETACHED_REASON), + DEL_FLAG = values(DEL_FLAG), + REVISION = values(REVISION), + UPDATED_BY = values(UPDATED_BY), + UPDATED_TIME = values(UPDATED_TIME) + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml new file mode 100644 index 0000000000..e750b74a6c --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into lingshan_special_crowd_detail_jzhz ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, CAUSE_TROUBLE_HISTORY_FLAG + , CAUSE_TROUBLE_TIMES, CURRENT_DIAGNOSIS, DANGEROUS_CLASS + , CAN_GO_OUT_FLAG, VIOLENCE_FLAG, ALLOWANCE_FLAG, SUBSISTENCE_FLAG + , GUARDIAN_NAME, GUARDIAN_CONTACT, DEL_FLAG, REVISION, CREATED_BY + , CREATED_TIME, UPDATED_BY, UPDATED_TIME) + values + + (#{item.id}, #{item.customerId}, #{item.orgIdPath}, #{item.idCard}, #{item.causeTroubleHistoryFlag}, + #{item.causeTroubleTimes}, #{item.currentDiagnosis}, #{item.dangerousClass}, #{item.canGoOutFlag}, #{item.violenceFlag}, + #{item.allowanceFlag}, #{item.subsistenceFlag}, #{item.guardianName}, #{item.guardianContact}, #{item.delFlag}, + #{item.revision}, #{item.createdBy}, #{item.createdTime}, #{item.updatedBy}, #{item.updatedTime} + ) + + on duplicate key update ORG_ID_PATH = values(ORG_ID_PATH) + , ID_CARD = values(ID_CARD) + , CAUSE_TROUBLE_HISTORY_FLAG = values(CAUSE_TROUBLE_HISTORY_FLAG) + , CAUSE_TROUBLE_TIMES = values(CAUSE_TROUBLE_TIMES) + , CURRENT_DIAGNOSIS = values(CURRENT_DIAGNOSIS) + , DANGEROUS_CLASS = values(DANGEROUS_CLASS) + , CAN_GO_OUT_FLAG = values(CAN_GO_OUT_FLAG) + , VIOLENCE_FLAG = values(VIOLENCE_FLAG) + , ALLOWANCE_FLAG = values(ALLOWANCE_FLAG) + , SUBSISTENCE_FLAG = values(SUBSISTENCE_FLAG) + , GUARDIAN_NAME = values(GUARDIAN_NAME) + , GUARDIAN_CONTACT = values(GUARDIAN_CONTACT) + , UPDATED_BY = values(UPDATED_BY) + , UPDATED_TIME = values(UPDATED_TIME) + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml new file mode 100644 index 0000000000..fd26ee7938 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into lingshan_special_crowd_detail_sqjz ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, RECTIFICATE_TYPE + , RECTIFICATE_START_DATE, RECTIFICATE_END_DATE, ORIGIN_DETAIN_ADDRESS + , ORIGINAL_CHARGE, RECEIVE_WAY, RECTIFICATE_INFO, DETACHED_FLAG + , DETACHED_REASON, CANCELED_FLAG, CANCELED_REASON, DEL_FLAG, REVISION + , CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) + values + + (#{item.id}, #{item.customerId}, #{item.orgIdPath}, #{item.idCard}, #{item.rectificateType}, + #{item.rectificateStartDate}, #{item.rectificateEndDate}, #{item.originDetainAddress}, #{item.originalCharge}, #{item.receiveWay}, + #{item.rectificateInfo}, #{item.detachedFlag}, #{item.detachedReason}, #{item.canceledFlag}, #{item.canceledReason}, + #{item.delFlag}, #{item.revision}, #{item.createdBy}, #{item.createdTime}, #{item.updatedBy}, + #{item.updatedTime}) + + on duplicate key update + ORG_ID_PATH = values(ORG_ID_PATH) + , RECTIFICATE_TYPE = values(RECTIFICATE_TYPE) + , RECTIFICATE_START_DATE = values(RECTIFICATE_START_DATE) + , RECTIFICATE_END_DATE = values(RECTIFICATE_END_DATE) + , ORIGIN_DETAIN_ADDRESS = values(ORIGIN_DETAIN_ADDRESS) + , ORIGINAL_CHARGE = values(ORIGINAL_CHARGE), RECEIVE_WAY = values(RECEIVE_WAY) + , RECTIFICATE_INFO = values(RECTIFICATE_INFO), DETACHED_FLAG = values(DETACHED_FLAG) + , DETACHED_REASON = values(DETACHED_REASON), CANCELED_FLAG = values(CANCELED_FLAG) + , CANCELED_REASON = values(CANCELED_REASON) + , UPDATED_BY = values(UPDATED_BY), + , UPDATED_TIME = values(UPDATED_TIME) + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml new file mode 100644 index 0000000000..149129d3ec --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into lingshan_special_crowd_detail_xfry ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, PROBLEM + , STABLE_CONTROL_MEASUREMENT, MULTIPLE_FLAG, LOCAL_FLAG, BRANCH_LEADER + , BRANCH_LEADER_CONTACT, PRINCIPAL, PRINCIPAL_CONTACT + , STABLE_CONTROLER_LIST, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME + , UPDATED_BY, UPDATED_TIME) + values + + (#{item.id}, #{item.customerId}, #{item.orgIdPath}, #{item.idCard}, #{item.problem}, + #{item.stableControlMeasurement}, #{item.multipleFlag}, #{item.localFlag}, #{item.branchLeader}, #{item.branchLeaderContact}, + #{item.principal}, #{item.principalContact}, #{item.stableControlerList}, #{item.delFlag}, #{item.revision}, + #{item.createdBy}, #{item.createdTime}, #{item.updatedBy}, #{item.updatedTime}) + + on duplicate key update + ORG_ID_PATH = values (ORG_ID_PATH) + , PROBLEM = values(PROBLEM) + , STABLE_CONTROL_MEASUREMENT = values(STABLE_CONTROL_MEASUREMENT) + , MULTIPLE_FLAG = values(MULTIPLE_FLAG) + , LOCAL_FLAG = values(LOCAL_FLAG) + , BRANCH_LEADER = values(BRANCH_LEADER) + , BRANCH_LEADER_CONTACT = values(BRANCH_LEADER_CONTACT) + , PRINCIPAL = values(PRINCIPAL) + , PRINCIPAL_CONTACT = values(PRINCIPAL_CONTACT) + , STABLE_CONTROLER_LIST = values(STABLE_CONTROLER_LIST) + , DEL_FLAG = values(DEL_FLAG) + , REVISION = values(REVISION), CREATED_BY = values(CREATED_BY) + , CREATED_TIME = values(CREATED_TIME) + , UPDATED_BY = values(UPDATED_BY) + , UPDATED_TIME = values(UPDATED_TIME) + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml new file mode 100644 index 0000000000..bdf6bfb32b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml @@ -0,0 +1,45 @@ + + + + + + + + + + insert into lingshan_special_crowd_person ( ID, CUSTOMER_ID, ORG_ID_PATH, `NAME`, ID_CARD, + DEL_FLAG, REVISION, CREATED_BY , CREATED_TIME, UPDATED_BY, UPDATED_TIME) + values + + ( #{item.id}, + #{item.customerId}, + #{item.orgIdPath}, + #{item.name}, + #{item.idCard}, + #{item.delFlag}, + #{item.revision}, + #{item.createdBy}, + #{item.createdTime}, + #{item.updatedBy}, + #{item.updatedTime} + ) + + on duplicate key update NAME=values(name) + , UPDATED_BY=values(UPDATED_BY) + , UPDATED_TIME=values(UPDATED_TIME) + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml new file mode 100644 index 0000000000..1fc8a8b92b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + insert into lingshan_special_crowd_person_type ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, SPECIAL_TYPE, + DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) + values + + (#{type.id}, #{type.customerId}, #{type.orgIdPath}, #{type.idCard}, #{type.specialType}, + #{type.delFlag}, #{type.revision}, #{type.createdBy}, #{type.createdTime}, #{type.updatedBy}, #{type.updatedTime}) + + on duplicate key update + ORG_ID_PATH=values(ORG_ID_PATH) + , SPECIAL_TYPE =values(SPECIAL_TYPE) + , UPDATED_BY =values(UPDATED_BY) + , UPDATED_TIME = values(UPDATED_TIME) + + + + \ No newline at end of file From 23295fd158422ef3b8c7cc203d27381d29eb9451 Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 19 Apr 2023 18:42:06 +0800 Subject: [PATCH 06/51] =?UTF-8?q?=E3=80=90=E7=81=B5=E5=B1=B1=E8=A1=97?= =?UTF-8?q?=E9=81=93=E3=80=911.=E5=AF=BC=E5=85=A5=E6=8E=A5=E5=8F=A3,?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A1=A8=E5=A4=B4=E9=A2=84=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LingShanSpecialCrowdController.java | 2 +- ...ngShanSpecialCrowdExcelImportListener.java | 44 ++++++++++++++++++- .../ReadExcelHeaderOnlyException.java | 7 +++ .../impl/LingShanSpecialCrowdServiceImpl.java | 32 ++++++++++++-- .../LingshanSpecialCrowdDetailXfryDao.xml | 3 +- 5 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/exceptions/ReadExcelHeaderOnlyException.java diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index aa21a72797..bfd157573f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -67,7 +67,7 @@ public class LingShanSpecialCrowdController { deleteSpecialCrowdTempFile(fileSavePath); } - return null; + return new Result(); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index e86d714d11..f82271ff08 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -1,5 +1,6 @@ package com.epmet.excel.handler; +import cn.hutool.log.Log; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.metadata.data.ReadCellData; @@ -23,7 +24,10 @@ import com.epmet.entity.LingshanSpecialCrowdPersonEntity; import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData; +import com.epmet.exceptions.ReadExcelHeaderOnlyException; import com.epmet.service.LingShanSpecialCrowdService; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; @@ -35,6 +39,8 @@ import java.util.stream.Collectors; /** * 灵山大屏-抽象的导入excel监听器 */ +@Data +@Slf4j public abstract class AbstractLingShanSpecialCrowdExcelImportListener extends AnalysisEventListener { @@ -62,6 +68,15 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener headerZhList; + /** + * @description: 是否只校验表头 + * @param null: + * @return + * @author: WangXianZhang + * @date: 2023/4/19 5:16 PM + */ + private Boolean validateHeaderOnly = false; + /** * 当前表头读到了第几行 */ @@ -121,20 +136,37 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener redundentHeaders = new ArrayList<>(); + List lackHeaders = new ArrayList<>(); Collection headersFromFile = headMap.values(); // 2次循环,双向校验 for (String headerZh : headersFromFile) { if (StringUtils.isNotBlank(headerZh) && !headerZhList.contains(headerZh)) { - throw new EpmetException("请确认表头内容与模板一致"); + redundentHeaders.add(headerZh); } } for (String headerZh : headerZhList) { if (StringUtils.isNotBlank(headerZh) && !headersFromFile.contains(headerZh)) { - throw new EpmetException("请确认表头内容与模板一致"); + lackHeaders.add(headerZh); } } + + // 汇总错误字段,成一句话 + String preValidTipStr = ""; + if (CollectionUtils.isNotEmpty(redundentHeaders)) { + preValidTipStr += "多余【" + String.join(",", redundentHeaders) + "】字段。"; + } + + if (CollectionUtils.isNotEmpty(lackHeaders)) { + preValidTipStr += "缺少【" + String.join(",", lackHeaders) + "】必填字段。"; + } + + if (StringUtils.isNotBlank(preValidTipStr)) { + log.error("【灵山街道-社会维稳导入】表格表头不对应," + preValidTipStr); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "上传文件有误!" + preValidTipStr + "请确认表格格式正确"); + } } } @@ -148,6 +180,10 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener 0) { saveBatchWithLock(); clear(); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/exceptions/ReadExcelHeaderOnlyException.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/exceptions/ReadExcelHeaderOnlyException.java new file mode 100644 index 0000000000..4efda39455 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/exceptions/ReadExcelHeaderOnlyException.java @@ -0,0 +1,7 @@ +package com.epmet.exceptions; + +/** + * 只解析表头的异常(用于停止excel导入) + */ +public class ReadExcelHeaderOnlyException extends RuntimeException { +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 3522ce8a7e..767afa43cc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -7,23 +7,29 @@ import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.read.metadata.ReadSheet; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.dao.*; import com.epmet.entity.*; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.*; import com.epmet.excel.handler.*; +import com.epmet.exceptions.ReadExcelHeaderOnlyException; import com.epmet.service.LingShanSpecialCrowdService; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; /** * 灵山特殊人群service */ +@Slf4j @Service public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService { @@ -51,6 +57,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Autowired private IcResiUserDao icResiUserDao; + @Autowired + private ExecutorService executorService; + @Override public void importSpecialCrowd(String crowdCategory, String fileSavePath) { Class excelDataClass; @@ -85,10 +94,25 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ // ReadSheet sheet = EasyExcel.readSheet(0).registerReadListener(listener).build(); // EasyExcel.read(fileSavePath).build().read(sheet); - EasyExcel.read(fileSavePath, excelDataClass, listener) - .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) - .sheet(0) - .doRead(); + // 解析表头,判断表头是否合格 + try { + listener.setValidateHeaderOnly(true); + EasyExcel.read(fileSavePath, excelDataClass, listener) + .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) + .sheet(0) + .doRead(); + } catch (ReadExcelHeaderOnlyException e) { + log.info("【灵山街道-导入社会维稳】验证通过,可以继续导入"); + } + + // 正式开始导入。异步导入 + listener.setValidateHeaderOnly(false); + CompletableFuture.runAsync(() -> { + EasyExcel.read(fileSavePath, excelDataClass, listener) + .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) + .sheet(0) + .doRead(); + }, executorService); } @Override diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml index 149129d3ec..8258af9767 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml @@ -51,8 +51,7 @@ , PRINCIPAL_CONTACT = values(PRINCIPAL_CONTACT) , STABLE_CONTROLER_LIST = values(STABLE_CONTROLER_LIST) , DEL_FLAG = values(DEL_FLAG) - , REVISION = values(REVISION), CREATED_BY = values(CREATED_BY) - , CREATED_TIME = values(CREATED_TIME) + , REVISION = values(REVISION) , UPDATED_BY = values(UPDATED_BY) , UPDATED_TIME = values(UPDATED_TIME) From a99c14d85a5ab2ccb0c9ace8d469b4f61c3aa8f3 Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 19 Apr 2023 19:31:50 +0800 Subject: [PATCH 07/51] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=EF=BC=9Aimport=20tas?= =?UTF-8?q?k=20=E5=A2=9E=E5=8A=A0=E6=88=90=E5=8A=9F=E6=9D=A1=E6=95=B0?= =?UTF-8?q?=E5=92=8C=E5=A4=B1=E8=B4=A5=E6=9D=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/ImportTaskCommonFormDTO.java | 10 ++++++++++ .../src/main/java/com/epmet/utils/ImportTaskUtils.java | 8 +++++++- .../com/epmet/controller/ImportTaskController.java | 8 +++++++- .../src/main/java/com/epmet/dao/ImportTaskDao.java | 10 ++++++---- .../main/java/com/epmet/service/ImportTaskService.java | 3 ++- .../com/epmet/service/impl/ImportTaskServiceImpl.java | 5 +++-- .../db/migration/V0.0.15__importtask_add_number.sql | 2 ++ .../src/main/resources/mapper/ImportTaskDao.xml | 2 ++ 8 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.15__importtask_add_number.sql diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java index 08fc2f0995..b64b8eb505 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ImportTaskCommonFormDTO.java @@ -56,4 +56,14 @@ public class ImportTaskCommonFormDTO extends PageFormDTO { */ private String resultDesc; + /** + * 成功行数 + */ + private Integer successItemsQty; + + /** + * 失败行数 + */ + private Integer failItemsQty; + } diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java index 80bf086374..a8b08efd29 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java @@ -21,11 +21,17 @@ public class ImportTaskUtils implements ResultDataResolver { * @return Result */ public static Result createImportTask(String originFileName, String bizType) { + return createImportTask(originFileName, bizType, null, null); + } + + public static Result createImportTask(String originFileName, String bizType, + Integer successItemsQty, Integer failItemsQty) { ImportTaskCommonFormDTO form = new ImportTaskCommonFormDTO(); form.setOriginFileName(originFileName); form.setOperatorId(EpmetRequestHolder.getHeader(AppClientConstant.USER_ID)); form.setBizType(bizType); - + form.setSuccessItemsQty(successItemsQty); + form.setFailItemsQty(failItemsQty); return SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class).createImportTask(form); } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java index 8b03c4465b..d1d43b148b 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -59,7 +59,13 @@ public class ImportTaskController { @RequestMapping("finish") public Result finishTask(@RequestBody ImportTaskCommonFormDTO input) { ValidatorUtils.validateEntity(input, ImportTaskCommonFormDTO.Finish.class); - Boolean finished = importTaskService.finish(input.getTaskId(), input.getProcessStatus(), input.getOperatorId(), input.getResultDescFilePath(), input.getResultDesc()); + Boolean finished = importTaskService.finish(input.getTaskId(), + input.getProcessStatus(), + input.getOperatorId(), + input.getResultDescFilePath(), + input.getResultDesc(), + input.getSuccessItemsQty(), + input.getFailItemsQty()); if (!finished) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "失败,请确认任务是否存在,以及是否已完成", diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/ImportTaskDao.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/ImportTaskDao.java index 1306b7e3cd..a758f2f33a 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/ImportTaskDao.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/ImportTaskDao.java @@ -24,8 +24,10 @@ public interface ImportTaskDao extends BaseDao { * @return */ int finish(@Param("taskId") String taskId, - @Param("process_status") String processStatus, - @Param("operatorId") String operatorId, - @Param("resultDesc") String resultDesc, - @Param("resultDescFile") String resultDescFile); + @Param("process_status") String processStatus, + @Param("operatorId") String operatorId, + @Param("resultDesc") String resultDesc, + @Param("resultDescFile") String resultDescFile, + @Param("successItemsQty") Integer successItemsQty, + @Param("failItemsQty") Integer failItemsQty); } \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java index 918643d8f2..bb1acf5c36 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -36,7 +36,8 @@ public interface ImportTaskService { * @param resultDescFile 结果描述文件 * @param resultDesc 结果描述文本 */ - Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc); + Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc, + Integer successItemsQty, Integer failItemsQty); /** * desc:分页获取个人导入记录 diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index 3aea2a5b23..f81e4cc949 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -89,8 +89,9 @@ public class ImportTaskServiceImpl implements ImportTaskService { } @Override - public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc) { - return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile) > 0; + public Boolean finish(String taskId, String processStatus, String operatorId, String resultDescFile, String resultDesc, + Integer successItemsQty, Integer failItemsQty) { + return importRecordDao.finish(taskId, processStatus, operatorId, resultDesc, resultDescFile, successItemsQty, failItemsQty) > 0; } @Override diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.15__importtask_add_number.sql b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.15__importtask_add_number.sql new file mode 100644 index 0000000000..93ea507a26 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.15__importtask_add_number.sql @@ -0,0 +1,2 @@ +alter table import_task add column SUCCESS_ITEMS_QTY int comment '成功条数' after RESULT_DESC; +alter table import_task add column FAIL_ITEMS_QTY int comment '失败条数' after SUCCESS_ITEMS_QTY; \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml index fce694cb16..df58afb615 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml @@ -26,6 +26,8 @@ set PROCESS_STATUS = #{process_status}, RESULT_DESC = #{resultDesc}, RESULT_DESC_FILE = #{resultDescFile}, + SUCCESS_ITEMS_QTY = #{successItemsQty}, + FAIL_ITEMS_QTY = #{failItemsQty}, UPDATED_BY=#{operatorId}, UPDATED_TIME=NOW() where ID=#{taskId} From bee92b0ce859cb75731281c810d9bd41dd053329 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 20 Apr 2023 09:38:51 +0800 Subject: [PATCH 08/51] 1 --- .../commons/tools/enums/BizTypeEnum.java | 1 + .../LingShanSpecialCrowdController.java | 11 +- ...ngShanSpecialCrowdExcelImportListener.java | 16 ++- ...anSpecialCrowdAzbjExcelImportListener.java | 5 + ...nSpecialCrowdJieduExcelImportListener.java | 5 + ...cialCrowdJingZhangExcelImportListener.java | 5 + ...anSpecialCrowdSqjzExcelImportListener.java | 5 + ...pecialCrowdXinFangExcelImportListener.java | 5 + .../service/LingShanSpecialCrowdService.java | 2 +- .../impl/LingShanSpecialCrowdServiceImpl.java | 106 +++++++++++++++++- .../lingshan_special_crowd_azbj_export.xlsx | Bin 0 -> 9634 bytes .../lingshan_special_crowd_jdry_export.xlsx | Bin 0 -> 9620 bytes .../lingshan_special_crowd_jzhz_export.xlsx | Bin 0 -> 10016 bytes .../lingshan_special_crowd_sqjz_export.xlsx | Bin 0 -> 9933 bytes .../lingshan_special_crowd_xfry_export.xlsx | Bin 0 -> 9439 bytes 15 files changed, 147 insertions(+), 14 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_azbj_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jdry_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jzhz_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_sqjz_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_xfry_export.xlsx diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java index e6318f61b6..517330e427 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java @@ -19,6 +19,7 @@ public enum BizTypeEnum { GRID_PROJECT("grid_project", "网格项目"), PROJECT("project", "项目"), ARTICLE("article", "文章(党建声音)"), + SPECIAL_CROWD("special_crowd", "社会维稳(特殊人群)"), ; public static BizTypeEnum getEnum(String code) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index bfd157573f..1d99dbce93 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -53,12 +53,15 @@ public class LingShanSpecialCrowdController { @PostMapping("import") public Result importSpecialCowd(MultipartFile file, @RequestParam("crowdCategory") String crowdCategory) { + String originalFilename = file.getOriginalFilename(); + String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + // 1.存文件 - Path fileSavePath = saveSpecialCrowdTempFile(file); + Path fileSavePath = saveSpecialCrowdTempFile(file, suffix); // 2.执行业务导入 try { - lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString()); + lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); } catch (Exception e) { throw e; // ... @@ -77,12 +80,12 @@ public class LingShanSpecialCrowdController { * @author: WangXianZhang * @date: 2023/4/18 9:46 AM */ - public Path saveSpecialCrowdTempFile(@RequestParam("file") MultipartFile file) { + public Path saveSpecialCrowdTempFile(@RequestParam("file") MultipartFile file, String suffix) { Path fileSavePath; FileOutputStream os = null; try { Path fileSaveDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("special_crowd_import"); - String fileName = DateUtils.format(new Date(), "yyyyMMdd_HHmmss_" + System.nanoTime()); + String fileName = DateUtils.format(new Date(), "yyyyMMdd_HHmmss_" + System.nanoTime()) + suffix; fileSavePath = fileSaveDir.resolve(fileName); IOUtils.copy(file.getInputStream(), (os = new FileOutputStream(fileSavePath.toString()))); return fileSavePath; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index f82271ff08..72bea84f54 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -58,6 +58,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener getErrorDatas() { + public List getErrorDatas() { return errorDatas; } @@ -370,6 +371,15 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener setHeaderZhList(); + /** + * @description: 设置模板名称 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/20 9:07 AM + */ + abstract String setTemplateFileName(); + /** * @description: 获取entity的class,用于数据拷贝 * @param : diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java index 6be9cba8b4..117d5c833b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java @@ -46,4 +46,9 @@ public class LingShanSpecialCrowdAzbjExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.AZBJ; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_azbj_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java index 98038505a6..6ab49e11a7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java @@ -42,4 +42,9 @@ public class LingShanSpecialCrowdJieduExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.JDRY; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_jdry_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java index 6ea1034872..236811340a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java @@ -43,4 +43,9 @@ public class LingShanSpecialCrowdJingZhangExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.JZHZ; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_jzhz_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java index d347b131d4..2d25a7652b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java @@ -42,4 +42,9 @@ public class LingShanSpecialCrowdSqjzExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.SQJZ; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_sqjz_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java index 062c7bff64..ac1557245e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java @@ -43,4 +43,9 @@ public class LingShanSpecialCrowdXinFangExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.XFRY; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_xfry_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java index bf26d89d83..5ad0abd666 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -20,7 +20,7 @@ public interface LingShanSpecialCrowdService { * @author: WangXianZhang * @date: 2023/4/18 5:42 PM */ - void importSpecialCrowd(String crowdCategory, String fileSavePath); + void importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename); /** * @description: 数据校验 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 767afa43cc..d9ba64e551 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -1,27 +1,49 @@ package com.epmet.service.impl; import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.read.metadata.ReadSheet; +import com.alibaba.excel.write.builder.ExcelWriterBuilder; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.enums.BizTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.*; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.*; import com.epmet.excel.handler.*; import com.epmet.exceptions.ReadExcelHeaderOnlyException; +import com.epmet.feign.OssFeignClient; import com.epmet.service.LingShanSpecialCrowdService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.http.entity.ContentType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; @@ -31,7 +53,7 @@ import java.util.concurrent.ExecutorService; */ @Slf4j @Service -public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService { +public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService, ResultDataResolver { @Autowired private LingshanSpecialCrowdPersonDao specialCrowdPersonDao; @@ -60,8 +82,11 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Autowired private ExecutorService executorService; + @Autowired + private OssFeignClient ossFeignClient; + @Override - public void importSpecialCrowd(String crowdCategory, String fileSavePath) { + public void importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename) { Class excelDataClass; AbstractLingShanSpecialCrowdExcelImportListener listener; LingShanSpecialCrowdTypeEnums specialCrowdTypeEnum; @@ -107,14 +132,83 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ // 正式开始导入。异步导入 listener.setValidateHeaderOnly(false); + CompletableFuture.runAsync(() -> { - EasyExcel.read(fileSavePath, excelDataClass, listener) - .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) - .sheet(0) - .doRead(); + // 创建导入任务 + ImportTaskCommonResultDTO importTaskRst = getResultDataOrThrowsException(ImportTaskUtils.createImportTask(originFilename, + BizTypeEnum.SPECIAL_CROWD.getType()), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + null, "【灵山街道-导入特殊人群】创建导入任务失败"); + + try { + EasyExcel.read(fileSavePath, excelDataClass, listener) + .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) + .sheet(0) + .doRead(); + + List errorDatas = listener.getErrorDatas(); + if (CollectionUtils.isNotEmpty(errorDatas)) { + // 有错误数据需要提示 + String resultDescFilePath = uploadResultDescFilePath(errorDatas, listener.getTemplateFileName()); + ImportTaskUtils.finishImportTask(importTaskRst.getTaskId(), + ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, resultDescFilePath, "失败,请导出文件查看详细信息"); + } else { + // 全部成功 + ImportTaskUtils.finishImportTask(importTaskRst.getTaskId(), + ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, null, "成功"); + } + } catch (Exception e) { + log.error("【灵山街道-导入特殊人群】失败,错误信息:" + ExceptionUtils.getErrorStackTrace(e)); + ImportTaskUtils.finishImportTask(importTaskRst.getTaskId(), + ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, "未知错误"); + } }, executorService); } + /** + * @description: 上传错误描述文件 + * @param errorDatas: + * @return + * @author: WangXianZhang + * @date: 2023/4/19 10:19 PM + */ + private String uploadResultDescFilePath(List errorDatas, String templateFileName) { + FileItem fileItem = null; + try { + String fileName = + DateUtils.format(new Date(), "yyyyMMdd_HHmmss_") + System.nanoTime() + "社会维稳导入失败数据.xlsx"; + + // 创建临时文件 + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, FileUtils.getAndCreateDirUnderEpmetFilesDir("temp").toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + + // 写入临时文件 + try (OutputStream os = fileItem.getOutputStream()) { + ExcelWriter excelWriter = EasyExcel.write(os).withTemplate(templateFileName).build(); + excelWriter.finish(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + // 上传文件 + UploadImgResultDTO uploadRst = getResultDataOrThrowsException(ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)), ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + null, "【灵山街道-导入特殊人群】上传错误描述文件失败。"); + + return uploadRst.getUrl(); + + } catch (IOException e) { + throw new RuntimeException("【灵山街道-导入特殊人群】生成错误描述文件-创建临时目录失败"); + } finally { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【灵山街道-导入特殊人群】删除fileItem临时文件失败"); + } + } + } + @Override public String validate(LingShanSpecialCrowdDetailBaseExcelData row) { String idCard = row.getIdCard(); diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_azbj_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_azbj_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5fc410a64e3c503c7eebeac27ac1c05f94b5096f GIT binary patch literal 9634 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 literal 0 HcmV?d00001 diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jzhz_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jzhz_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d055b68eb1f1e046c015a081b951702056b68282 GIT binary patch literal 10016 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 literal 0 HcmV?d00001 diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_xfry_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_xfry_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9eb90e825b93aec9dc83bb01d9f6d6a6cadc3f21 GIT binary patch literal 9439 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 TejZkghdVRy4|Xl&kGTH_K^azL literal 0 HcmV?d00001 From 54695bfee9f617a1964e1155c63de3db5140d6c7 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 20 Apr 2023 13:57:53 +0800 Subject: [PATCH 09/51] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=81=B5=E5=B1=B1?= =?UTF-8?q?=E7=A4=BE=E4=BC=9A=E7=BB=B4=E7=A8=B3=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/commons/tools/utils/FileUtils.java | 28 ++++ .../EpmetCommonServiceOpenFeignClient.java | 2 +- .../java/com/epmet/utils/ImportTaskUtils.java | 19 +++ .../LingShanSpecialCrowdController.java | 24 +-- .../LingShanSpecialCrowdIsOrNotConverter.java | 34 ---- .../LingShanSpecialCrowdJzhzConverter.java | 146 +++++++++++++----- .../LingShanSpecialCrowdSqjzConverter.java | 125 ++++++++++++--- .../LingShanSpecialCrowdYesOrNoConverter.java | 78 ++++++++++ ...ngShanSpecialCrowdDetailAzbjExcelData.java | 12 +- ...ngShanSpecialCrowdDetailBaseExcelData.java | 1 + ...ngshanSpecialCrowdDetailJdryExcelData.java | 14 +- ...ngshanSpecialCrowdDetailJzhzExcelData.java | 13 +- ...ngshanSpecialCrowdDetailSqjzExcelData.java | 13 +- ...ngshanSpecialCrowdDetailXfryExcelData.java | 9 +- ...ngShanSpecialCrowdExcelImportListener.java | 14 +- ...anSpecialCrowdAzbjExcelImportListener.java | 2 +- ...nSpecialCrowdJieduExcelImportListener.java | 2 +- ...cialCrowdJingZhangExcelImportListener.java | 2 +- ...anSpecialCrowdSqjzExcelImportListener.java | 2 +- ...pecialCrowdXinFangExcelImportListener.java | 2 +- .../impl/LingShanSpecialCrowdServiceImpl.java | 11 +- .../lingshan_special_crowd_azbj_export.xlsx | Bin 9634 -> 9833 bytes .../lingshan_special_crowd_jdry_export.xlsx | Bin 9620 -> 9621 bytes .../lingshan_special_crowd_jzhz_export.xlsx | Bin 10016 -> 10066 bytes .../lingshan_special_crowd_sqjz_export.xlsx | Bin 9933 -> 9920 bytes .../lingshan_special_crowd_xfry_export.xlsx | Bin 9439 -> 9486 bytes .../LingshanSpecialCrowdDetailSqjzDao.xml | 2 +- 27 files changed, 396 insertions(+), 159 deletions(-) delete mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdYesOrNoConverter.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java index 00784bc7db..c606583613 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java @@ -153,4 +153,32 @@ public class FileUtils { return templateFilePathStr; } + /** + * @description: 删除文件 + * @param path: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 9:47 AM + */ + public static void deleteFileIfExists(Path path) { + if (path != null) { + try { + Files.deleteIfExists(path); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + /** + * @description: 删除文件 + * @param path: + * @return + * @author: WangXianZhang + * @date: 2023/4/18 9:47 AM + */ + public static void deleteFileIfExists(String path) { + deleteFileIfExists(Paths.get(path)); + } + } diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java index 43766990ba..14bde6bfe9 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java @@ -22,7 +22,7 @@ import java.util.Map; * @date 2020/6/4 10:28 */ @FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallbackFactory = EpmetCommonServiceOpenFeignClientFallbackFactory.class) - //@FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallbackFactory = EpmetCommonServiceOpenFeignClientFallbackFactory.class, url = "http://localhost:8103") + // @FeignClient(name = ServiceConstant.EPMET_COMMON_SERVICE, fallbackFactory = EpmetCommonServiceOpenFeignClientFallbackFactory.class, url = "http://localhost:8103") public interface EpmetCommonServiceOpenFeignClient { /** * @param formDTO diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java index a8b08efd29..88193f832c 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/utils/ImportTaskUtils.java @@ -54,4 +54,23 @@ public class ImportTaskUtils implements ResultDataResolver { return SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class).finishImportTask(form); } + /** + * @description: 结束导入任务 + * @return + * @author: WangXianZhang + * @date: 2023/4/20 9:55 AM + */ + public static Result finishImportTask(String taskId, String processStatus, String resultDescFilePath, String resultDesc, Integer successItemsQty, Integer failItemsQty) { + ImportTaskCommonFormDTO form = new ImportTaskCommonFormDTO(); + form.setTaskId(taskId); + form.setOperatorId(EpmetRequestHolder.getHeader(AppClientConstant.USER_ID)); + form.setProcessStatus(processStatus); + form.setResultDescFilePath(resultDescFilePath); + form.setResultDesc(resultDesc); + form.setSuccessItemsQty(successItemsQty); + form.setFailItemsQty(failItemsQty); + + return SpringContextUtils.getBean(EpmetCommonServiceOpenFeignClient.class).finishImportTask(form); + } + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 1d99dbce93..9ee0be759e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -63,11 +63,9 @@ public class LingShanSpecialCrowdController { try { lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); } catch (Exception e) { + // 3.出错的话,删除文件 + FileUtils.deleteFileIfExists(fileSavePath); throw e; - // ... - } finally { - // 3.删除文件 - deleteSpecialCrowdTempFile(fileSavePath); } return new Result(); @@ -97,21 +95,5 @@ public class LingShanSpecialCrowdController { } } - /** - * @description: 删除特殊人群临时文件 - * @param fileSavePath: - * @return - * @author: WangXianZhang - * @date: 2023/4/18 9:47 AM - */ - public void deleteSpecialCrowdTempFile(Path fileSavePath) { - if (fileSavePath != null) { - try { - Files.deleteIfExists(fileSavePath); - } catch ( - IOException e) { - log.error("【灵山街道】导入社会维稳数据,删除临时文件失败"); - } - } - } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java deleted file mode 100644 index e146615243..0000000000 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdIsOrNotConverter.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.epmet.excel.converter; - -import com.alibaba.excel.converters.Converter; -import com.alibaba.excel.converters.ReadConverterContext; -import com.alibaba.excel.enums.CellDataTypeEnum; -import org.apache.commons.lang3.StringUtils; - -/** - * 灵山-是否转换器 - */ -public class LingShanSpecialCrowdIsOrNotConverter implements Converter { - @Override - public CellDataTypeEnum supportExcelTypeKey() { - return CellDataTypeEnum.STRING; - } - - @Override - public Class supportJavaTypeKey() { - return Integer.class; - } - - @Override - public Integer convertToJavaData(ReadConverterContext context) throws Exception { - String content = context.getReadCellData().getStringValue(); - if (StringUtils.isNotBlank(content)) { - if (content.equals("是") || content.equals("有")) { - return 1; - } else if (content.equals("无") || content.equals("否")) { - return 0; - } - } - return Converter.super.convertToJavaData(context); - } -} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java index fbefaf92fd..3a6282cf2c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdJzhzConverter.java @@ -2,56 +2,128 @@ package com.epmet.excel.converter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.converters.WriteConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.epmet.excel.data.LingshanSpecialCrowdDetailJzhzExcelData; /** * 灵山-诊断类型转换器 */ public class LingShanSpecialCrowdJzhzConverter implements Converter { + @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } @Override - public Integer convertToJavaData(ReadConverterContext context) throws Exception { - String content = context.getReadCellData().getStringValue(); - if (content instanceof String) { - switch (content) { - // 诊断类型 - case "精神分裂症": - return 1; - case "分裂情感性障碍": - return 2; - case "持久的妄想性障碍(偏执性精神病)": - return 3; - case "双相(情感)障碍": - return 4; - case "癫痫所致精神障碍": - return 5; - case "精神发育迟滞伴发精神障碍": - return 6; - case "重度抑郁发作": - return 7; - case "精神活性物质所致精神障碍": - return 8; - case "其他": - return 9; - // 危险性评估等级 - case "0级": - return 0; - case "1级": - return 1; - case "2级": - return 2; - case "3级": - return 3; - case "4级": - return 4; - case "5级": - return 5; + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public Integer convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String fieldName = contentProperty.getField().getName(); + String value = cellData.getStringValue(); + if (fieldName.equals("currentDiagnosis")) { + return Diagnosis.getByName(value).code; + } else if (fieldName.equals("dangerousClass")) { + return DangerousClass.getByName(value).code; + } + + return Converter.super.convertToJavaData(cellData, contentProperty, globalConfiguration); + } + + @Override + public WriteCellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String fieldName = contentProperty.getField().getName(); + if (fieldName.equals("currentDiagnosis")) { + return new WriteCellData<>(Diagnosis.getByCode(value).name); + } else if (fieldName.equals("dangerousClass")) { + return new WriteCellData<>(DangerousClass.getByCode(value).name); + } + + return Converter.super.convertToExcelData(value, contentProperty, globalConfiguration); + } + + + /** + * 诊断 + */ + public enum Diagnosis { + JSFLZ(1, "精神分裂症"), + FLQGXZA(2, "分裂情感性障碍"), + CJDWXXZA(3, "持久的妄想性障碍(偏执性精神病)"), + SXZA(4, "双相(情感)障碍"), + DXSZJSZA(5, "癫痫所致精神障碍"), + JSFYCZBFJSZA(6, "精神发育迟滞伴发精神障碍"), + ZDYYFZ(7, "重度抑郁发作"), + JSHXWZ(8, "精神活性物质所致精神障碍"), + OTHERS(9, "其他"); + + private Integer code; + private String name; + + Diagnosis(Integer code, String name) { + this.code = code; + this.name = name; + } + + static Diagnosis getByCode(Integer code) { + for (Diagnosis d : Diagnosis.values()) { + if (d.code.equals(code)) { + return d; + } + } + return null; + } + + static Diagnosis getByName(String name) { + for (Diagnosis d : Diagnosis.values()) { + if (d.name.equals(name)) { + return d; + } + } + return null; + } + } + + public enum DangerousClass { + ZERO(0, "0级"), + ONE(1, "1级"), + TOW(2, "2级(偏执性精神病)"), + THREE(3, "3级(情感)障碍"), + FOUR(4, "4级"), + FIVE(5, "5级"); + + private Integer code; + private String name; + + DangerousClass(Integer code, String name) { + this.code = code; + this.name = name; + } + + static DangerousClass getByCode(Integer code) { + for (DangerousClass d : DangerousClass.values()) { + if (d.code.equals(code)) { + return d; + } + } + return null; + } + + static DangerousClass getByName(String name) { + for (DangerousClass d : DangerousClass.values()) { + if (d.name.equals(name)) { + return d; + } } + return null; } - return Converter.super.convertToJavaData(context); } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java index 8de25b0e9a..7e352d1b81 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdSqjzConverter.java @@ -3,6 +3,11 @@ package com.epmet.excel.converter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import org.omg.CORBA.PRIVATE_MEMBER; /** * 灵山-社区矫正转换器 @@ -19,33 +24,103 @@ public class LingShanSpecialCrowdSqjzConverter implements Converter { } @Override - public Integer convertToJavaData(ReadConverterContext context) throws Exception { - Object content = context.getReadCellData().getStringValue(); - if (content instanceof String) { - switch ((String) content) { - // 矫正类型 - case "管制": - return 1; - case "缓刑": - return 2; - case "假释": - return 3; - case "暂予监外执行": - return 4; - case "剥夺政治权利": - return 5; - // 接受方式 - case "自行报到": - return 1; - case "狱所押送": - return 2; - case "当庭交接": - return 3; - case "其他": - return 4; + public Integer convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String fieldName = contentProperty.getField().getName(); + String value = cellData.getStringValue(); + if (fieldName.equals("rectificateType")) { + return RectificateType.getByName(value).code; + } else if (fieldName.equals("receiveWay")) { + return ReceiveWay.getByName(value).code; + } + + return Converter.super.convertToJavaData(cellData, contentProperty, globalConfiguration); + } + + @Override + public WriteCellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String fieldName = contentProperty.getField().getName(); + if (fieldName.equals("rectificateType")) { + return new WriteCellData(RectificateType.getByCode(value).name); + } else if (fieldName.equals("receiveWay")) { + return new WriteCellData(ReceiveWay.getByCode(value).name); + } + + return Converter.super.convertToExcelData(value, contentProperty, globalConfiguration); + } + + /** + * 矫正类型 + */ + public enum RectificateType { + GUANZHI(1,"管制"), + HUANXING(2,"缓刑"), + JIASHI(3,"假释"), + ZYJWZX(4,"暂予监外执行"), + BDZZQL(5,"剥夺政治权利"); + + private Integer code; + private String name; + + RectificateType(Integer code, String name) { + this.code = code; + this.name = name; + } + + static RectificateType getByCode(Integer code) { + for (RectificateType d : RectificateType.values()) { + if (d.code.equals(code)) { + return d; + } } + return null; + } + + static RectificateType getByName(String name) { + for (RectificateType d : RectificateType.values()) { + if (d.name.equals(name)) { + return d; + } + } + return null; + } + } + + /** + * 接受方式。1.自行报到,2狱所押送,3当庭交接,4其他 + */ + public enum ReceiveWay { + ZXBD(1,"自行报到"), + YSYS(2,"狱所押送"), + DTJJ(3,"当庭交接"), + OTHERS(4,"其他"); + + private Integer code; + private String name; + + ReceiveWay(Integer code, String name) { + this.code = code; + this.name = name; + } + + static ReceiveWay getByCode(Integer code) { + for (ReceiveWay d : ReceiveWay.values()) { + if (d.code.equals(code)) { + return d; + } + } + return null; + } + + static ReceiveWay getByName(String name) { + for (ReceiveWay d : ReceiveWay.values()) { + if (d.name.equals(name)) { + return d; + } + } + return null; } - return Converter.super.convertToJavaData(context); } + + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdYesOrNoConverter.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdYesOrNoConverter.java new file mode 100644 index 0000000000..1f9281d224 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/converter/LingShanSpecialCrowdYesOrNoConverter.java @@ -0,0 +1,78 @@ +package com.epmet.excel.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.data.WriteCellData; +import org.apache.commons.lang3.StringUtils; + +import java.util.Arrays; +import java.util.List; + +/** + * 灵山-是否转换器 + */ +public class LingShanSpecialCrowdYesOrNoConverter implements Converter { + List group1 = Arrays.asList("localFlag", "multipleFlag", "recidivismFlag", "emplacementFlag", "canceledFlag", + "detachedFlag", "canGoOutFlag", "violenceFlag", "allowanceFlag", "subsistenceFlag"); + + List group2 = Arrays.asList("criminalHistoryFlag", "drugRepetitionFlag", "causeTroubleHistoryFlag"); + + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public Integer convertToJavaData(ReadConverterContext context) throws Exception { + String content = context.getReadCellData().getStringValue(); + if (StringUtils.isNotBlank(content)) { + if (content.equals("是") || content.equals("有")) { + return 1; + } else if (content.equals("无") || content.equals("否")) { + return 0; + } + } + return Converter.super.convertToJavaData(context); + } + + @Override + public WriteCellData convertToExcelData(WriteConverterContext context) throws Exception { + String fieldName = context.getContentProperty().getField().getName(); + Integer value = context.getValue(); + if (group1.contains(fieldName)) { + return convertYesOrNoFlag(value); + } else if (group2.contains(fieldName)) { + return convertHaveOrNotFlag(value); + } + + return Converter.super.convertToExcelData(context); + } + + WriteCellData convertHaveOrNotFlag(Integer value) { + if (value.equals(1)) { + return new WriteCellData("有"); + } else if (value.equals(0)) { + return new WriteCellData("无"); + } else { + return new WriteCellData("未知"); + } + } + + WriteCellData convertYesOrNoFlag(Integer value) { + if (value.equals(1)) { + return new WriteCellData("是"); + } else if (value.equals(0)) { + return new WriteCellData("否"); + } else { + return new WriteCellData("未知"); + } + } +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java index 49bacc91d7..64c5b887b3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailAzbjExcelData.java @@ -1,7 +1,8 @@ package com.epmet.excel.data; import com.alibaba.excel.annotation.ExcelProperty; -import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.epmet.excel.converter.LingShanSpecialCrowdYesOrNoConverter; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -26,30 +27,33 @@ public class LingShanSpecialCrowdDetailAzbjExcelData extends LingShanSpecialCrow */ @ExcelProperty(value = "*释放日期") @NotNull(message = "释放日期不能为空") + @DateTimeFormat("yyyy/MM/dd") private Date releaseDate; /** * 原判刑期(单位:月) */ @ExcelProperty(value = "原判刑期(单位:月)") + @DateTimeFormat("yyyy/MM/dd") private Date originPrisonTerm; /** * 是否累犯。0否,1是 */ - @ExcelProperty(value = "是否累犯", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否累犯", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer recidivismFlag; /** * 是否安置。0否,1是 */ - @ExcelProperty(value = "是否安置", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否安置", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer emplacementFlag; /** * 安置日期 */ @ExcelProperty(value = "安置日期") + @DateTimeFormat("yyyy/MM/dd") private Date emplacementDate; /** @@ -61,7 +65,7 @@ public class LingShanSpecialCrowdDetailAzbjExcelData extends LingShanSpecialCrow /** * 是否注销 */ - @ExcelProperty(value = "是否注销", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否注销", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer canceledFlag; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java index 1d43fb5790..27c97a9d0e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java @@ -26,5 +26,6 @@ public class LingShanSpecialCrowdDetailBaseExcelData { /** * 错误信息 */ + @ExcelProperty(value = "错误信息") private String errorInfo; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java index 8ca975af70..76f17cb45f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJdryExcelData.java @@ -1,13 +1,10 @@ package com.epmet.excel.data; import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.TableName; -import com.epmet.commons.mybatis.entity.BaseEpmetEntity; -import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.epmet.excel.converter.LingShanSpecialCrowdYesOrNoConverter; import lombok.Data; -import lombok.EqualsAndHashCode; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.Date; @@ -23,14 +20,14 @@ public class LingshanSpecialCrowdDetailJdryExcelData extends LingShanSpecialCrow /** * 有无犯罪史 */ - @ExcelProperty(value = "*有无犯罪史", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "*有无犯罪史", converter = LingShanSpecialCrowdYesOrNoConverter.class) @NotNull(message = "有无犯罪史不能为空") private Integer criminalHistoryFlag; /** * 有无复吸史 */ - @ExcelProperty(value = "*有无复吸史", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "*有无复吸史", converter = LingShanSpecialCrowdYesOrNoConverter.class) @NotNull(message = "有无复吸史不能为空") private Integer drugRepetitionFlag; @@ -38,6 +35,7 @@ public class LingshanSpecialCrowdDetailJdryExcelData extends LingShanSpecialCrow * 初次发现日期 */ @ExcelProperty(value = "初次发现日期") + @DateTimeFormat("yyyy/MM/dd") private Date firstDiscoveryDate; /** @@ -67,7 +65,7 @@ public class LingshanSpecialCrowdDetailJdryExcelData extends LingShanSpecialCrow /** * 是否脱管 */ - @ExcelProperty(value = "是否脱管", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否脱管", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer detachedFlag; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java index 067cd35987..98d5012bb1 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailJzhzExcelData.java @@ -1,11 +1,10 @@ package com.epmet.excel.data; import com.alibaba.excel.annotation.ExcelProperty; -import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.epmet.excel.converter.LingShanSpecialCrowdYesOrNoConverter; import com.epmet.excel.converter.LingShanSpecialCrowdJzhzConverter; import lombok.Data; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** @@ -22,7 +21,7 @@ public class LingshanSpecialCrowdDetailJzhzExcelData extends LingShanSpecialCrow /** * 有无肇事肇祸史 */ - @ExcelProperty(value = "*有无肇事肇祸史", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "*有无肇事肇祸史", converter = LingShanSpecialCrowdYesOrNoConverter.class) @NotNull(message = "有无肇事肇祸史不能为空") private Integer causeTroubleHistoryFlag; @@ -48,25 +47,25 @@ public class LingshanSpecialCrowdDetailJzhzExcelData extends LingShanSpecialCrow /** * 是否具备外出能力 */ - @ExcelProperty(value = "是否具备外出能力", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否具备外出能力", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer canGoOutFlag; /** * 是否有暴力倾向 */ - @ExcelProperty(value = "是否有暴力倾向", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否有暴力倾向", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer violenceFlag; /** * 是否落实监管补助 */ - @ExcelProperty(value = "是否落实监管补助", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否落实监管补助", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer allowanceFlag; /** * 是否纳入低保 */ - @ExcelProperty(value = "是否纳入低保", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否纳入低保", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer subsistenceFlag; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java index 950ce47381..06966e6de8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailSqjzExcelData.java @@ -1,14 +1,11 @@ package com.epmet.excel.data; import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.TableName; -import com.epmet.commons.mybatis.entity.BaseEpmetEntity; -import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import com.epmet.excel.converter.LingShanSpecialCrowdYesOrNoConverter; import com.epmet.excel.converter.LingShanSpecialCrowdSqjzConverter; import lombok.Data; -import lombok.EqualsAndHashCode; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.Date; @@ -33,12 +30,14 @@ public class LingshanSpecialCrowdDetailSqjzExcelData extends LingShanSpecialCrow * 矫正开始日期 */ @ExcelProperty(value = "矫正开始日期") + @DateTimeFormat("yyyy/MM/dd") private Date rectificateStartDate; /** * 矫正结束日期 */ @ExcelProperty(value = "矫正结束日期") + @DateTimeFormat("yyyy/MM/dd") private Date rectificateEndDate; /** @@ -68,7 +67,7 @@ public class LingshanSpecialCrowdDetailSqjzExcelData extends LingShanSpecialCrow /** * 是否脱管 */ - @ExcelProperty(value = "是否脱管", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否脱管", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer detachedFlag; /** @@ -80,7 +79,7 @@ public class LingshanSpecialCrowdDetailSqjzExcelData extends LingShanSpecialCrow /** * 是否注销 */ - @ExcelProperty(value = "是否注销" , converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否注销" , converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer canceledFlag; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java index f7a865a3ba..5ba1ca13bb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingshanSpecialCrowdDetailXfryExcelData.java @@ -1,11 +1,8 @@ package com.epmet.excel.data; import com.alibaba.excel.annotation.ExcelProperty; -import com.baomidou.mybatisplus.annotation.TableName; -import com.epmet.commons.mybatis.entity.BaseEpmetEntity; -import com.epmet.excel.converter.LingShanSpecialCrowdIsOrNotConverter; +import com.epmet.excel.converter.LingShanSpecialCrowdYesOrNoConverter; import lombok.Data; -import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; @@ -35,13 +32,13 @@ public class LingshanSpecialCrowdDetailXfryExcelData extends LingShanSpecialCrow /** * 是否多次上访 */ - @ExcelProperty(value = "是否多次上访", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否多次上访", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer multipleFlag; /** * 是否在当地 */ - @ExcelProperty(value = "是否在当地", converter = LingShanSpecialCrowdIsOrNotConverter.class) + @ExcelProperty(value = "是否在当地", converter = LingShanSpecialCrowdYesOrNoConverter.class) private Integer localFlag; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index 72bea84f54..58c06e92e3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -34,6 +34,7 @@ import org.apache.commons.lang3.StringUtils; import org.redisson.api.RLock; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -99,6 +100,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener correctDatas = new ArrayList<>(); + private AtomicInteger correctDatasQty = new AtomicInteger(); + private List persons = new ArrayList<>(); private List personTypes = new ArrayList<>(); @@ -118,6 +121,7 @@ public abstract class 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 delta 5320 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 diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jdry_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jdry_export.xlsx index 2ab27382504a9235ab49e89b7a21e5cfc2f17a6b..b584c9be478a96002dd2bc61f7db6fce50eb9ed9 100644 GIT binary patch delta 5242 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 delta 5233 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 b&JZ>nPtbZ0{v6i-`ITJfki`;*{EPKpKZkbe delta 5572 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 H{$21N3e=R# diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_sqjz_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_sqjz_export.xlsx index 47927aa2a0261e390176a94a7509553df85c7b28..821ac90f7e23f6e03622cefc0a8b3c9af8fad3cb 100644 GIT binary patch delta 5549 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 L9!fF&za#$wttn~% delta 5560 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 If9(MM528nJ#{d8T delta 4986 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 diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml index fd26ee7938..f290ca4daa 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml @@ -51,7 +51,7 @@ , RECTIFICATE_INFO = values(RECTIFICATE_INFO), DETACHED_FLAG = values(DETACHED_FLAG) , DETACHED_REASON = values(DETACHED_REASON), CANCELED_FLAG = values(CANCELED_FLAG) , CANCELED_REASON = values(CANCELED_REASON) - , UPDATED_BY = values(UPDATED_BY), + , UPDATED_BY = values(UPDATED_BY) , UPDATED_TIME = values(UPDATED_TIME) From 7a96333922217e23bb344a11188c83238cc9ac49 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 20 Apr 2023 14:19:47 +0800 Subject: [PATCH 10/51] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=8C=89=E7=85=A7id=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/ImportTaskCommonResultDTO.java | 3 +++ .../epmet/controller/ImportTaskController.java | 13 +++++++++++++ .../com/epmet/entity/ImportTaskEntity.java | 3 +++ .../com/epmet/service/ImportTaskService.java | 2 ++ .../service/impl/ImportTaskServiceImpl.java | 8 ++++++++ .../main/resources/mapper/ImportTaskDao.xml | 2 ++ .../LingShanSpecialCrowdController.java | 5 ++--- .../service/LingShanSpecialCrowdService.java | 4 ++-- .../impl/LingShanSpecialCrowdServiceImpl.java | 18 ++++++++++-------- 9 files changed, 45 insertions(+), 13 deletions(-) diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java index 9812f1abbc..22264424a2 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ImportTaskCommonResultDTO.java @@ -40,4 +40,7 @@ public class ImportTaskCommonResultDTO implements Serializable { */ private String resultDescFile; + private Integer successItemsQty; + private Integer failItemsQty; + } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java index d1d43b148b..5519578120 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ImportTaskController.java @@ -21,6 +21,19 @@ public class ImportTaskController { @Autowired private ImportTaskService importTaskService; + /** + * @description: 通过id查找 + * @param taskId: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 2:17 PM + */ + @RequestMapping("/getById") + public Result getById(@RequestParam("taskId") String taskId) { + ImportTaskCommonResultDTO r = importTaskService.getById(taskId); + return new Result().ok(r); + } + /** * desc:分页获取个人导入记录 * @param tokenDto diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java index 0602a42963..756d5a7937 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ImportTaskEntity.java @@ -54,4 +54,7 @@ public class ImportTaskEntity extends BaseEpmetEntity { private String resultDesc; + private Integer successItemsQty; + private Integer failItemsQty; + } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java index bb1acf5c36..74ceb6a3f4 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ImportTaskService.java @@ -52,4 +52,6 @@ public interface ImportTaskService { * @return */ Boolean processingTaskCheck(String bizType); + + ImportTaskCommonResultDTO getById(String taskId); } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java index f81e4cc949..6d37dab168 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ImportTaskServiceImpl.java @@ -121,4 +121,12 @@ public class ImportTaskServiceImpl implements ImportTaskService { return importRecordDao.selectCount(query) > 0; } + + @Override + public ImportTaskCommonResultDTO getById(String taskId) { + ImportTaskEntity task = importRecordDao.selectById(taskId); + ImportTaskCommonResultDTO r = ConvertUtils.sourceToTarget(task, ImportTaskCommonResultDTO.class); + r.setTaskId(taskId); + return r; + } } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml index df58afb615..8c17d0d858 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ImportTaskDao.xml @@ -12,6 +12,8 @@ + + diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 9ee0be759e..6752d0066a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -61,14 +61,13 @@ public class LingShanSpecialCrowdController { // 2.执行业务导入 try { - lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); + String taskId = lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); + return new Result().ok(taskId); } catch (Exception e) { // 3.出错的话,删除文件 FileUtils.deleteFileIfExists(fileSavePath); throw e; } - - return new Result(); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java index 5ad0abd666..766318b93d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -16,11 +16,11 @@ public interface LingShanSpecialCrowdService { * @description: 导入特殊人群 * @param crowdCategory: * @param fileSavePath: - * @return + * @return taskId 导入任务id * @author: WangXianZhang * @date: 2023/4/18 5:42 PM */ - void importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename); + String importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename); /** * @description: 数据校验 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 452255ac75..9f8830f13d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -88,7 +88,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ private OssFeignClient ossFeignClient; @Override - public void importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename) { + public String importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename) { Class excelDataClass; AbstractLingShanSpecialCrowdExcelImportListener listener; LingShanSpecialCrowdTypeEnums specialCrowdTypeEnum; @@ -135,14 +135,14 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ // 正式开始导入。异步导入 listener.setValidateHeaderOnly(false); - CompletableFuture.runAsync(() -> { - // 创建导入任务 - ImportTaskCommonResultDTO importTaskRst = getResultDataOrThrowsException(ImportTaskUtils.createImportTask(originFilename, - BizTypeEnum.SPECIAL_CROWD.getType()), - ServiceConstant.EPMET_COMMON_SERVICE, - EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), - null, "【灵山街道-导入特殊人群】创建导入任务失败"); + // 创建导入任务 + ImportTaskCommonResultDTO importTaskRst = getResultDataOrThrowsException(ImportTaskUtils.createImportTask(originFilename, + BizTypeEnum.SPECIAL_CROWD.getType()), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + null, "【灵山街道-导入特殊人群】创建导入任务失败"); + CompletableFuture.runAsync(() -> { try { EasyExcel.read(fileSavePath, excelDataClass, listener) .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) @@ -169,6 +169,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ FileUtils.deleteFileIfExists(fileSavePath); } }, executorService); + + return importTaskRst.getTaskId(); } /** From 7575c928b8b8fb76c425ae6a8e013f6b4ae148b7 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 20 Apr 2023 22:36:26 +0800 Subject: [PATCH 11/51] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=EF=BC=9A=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E4=BA=BA=E7=BE=A4-=E6=96=B0=E5=A2=9E=E3=80=822.?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E3=80=823.=E6=96=B0=E5=A2=9E=EF=BC=9A?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LingShanSpecialCrowdListResultDTO.java | 25 ++ .../enums/LingShanSpecialCrowdTypeEnums.java | 15 +- .../LingShanSpecialCrowdController.java | 101 +++++++- .../LingshanSpecialCrowdPersonTypeDao.java | 8 + ...ngShanSpecialCrowdDetailBaseExcelData.java | 2 +- ...ShanSpecialCrowdDetailResultExtraInfo.java | 32 +++ .../service/LingShanSpecialCrowdService.java | 36 +++ .../impl/LingShanSpecialCrowdServiceImpl.java | 236 +++++++++++++++++- .../LingshanSpecialCrowdPersonTypeDao.xml | 34 +++ 9 files changed, 470 insertions(+), 19 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailResultExtraInfo.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java new file mode 100644 index 0000000000..af84a07746 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class LingShanSpecialCrowdListResultDTO { + + private String orgNamePath; + private String specialType; + private String specialTypeDisplay; + private String name; + private String mobile; + private String idCard; + private String address; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createdTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updatedTime; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java index 28e0c19e7c..5728173c2f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java @@ -17,8 +17,8 @@ public enum LingShanSpecialCrowdTypeEnums { /** * 类型。anzhibangjiao, */ - private String type; - private String name; + public final String type; + public final String name; private Integer headerRowNumber; @@ -39,4 +39,15 @@ public enum LingShanSpecialCrowdTypeEnums { public Integer getHeaderRowNumber() { return headerRowNumber; } + + public static LingShanSpecialCrowdTypeEnums getByType(String type) { + for (LingShanSpecialCrowdTypeEnums e : LingShanSpecialCrowdTypeEnums.values()) { + if (e.getType().equals(type)) { + return e; + } + } + return null; + } + + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 6752d0066a..8c2022865d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -2,17 +2,18 @@ package com.epmet.controller; 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.DateUtils; import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; +import com.epmet.excel.data.*; import com.epmet.service.LingShanSpecialCrowdService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.FileOutputStream; @@ -20,6 +21,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Date; +import java.util.List; /** * @description: 灵山社会维稳(特殊人群) @@ -94,5 +96,96 @@ public class LingShanSpecialCrowdController { } } + /** + * @description: 安置帮教新增 + * @param azbjData: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 2:50 PM + */ + @PostMapping("anzhibangjiao/create") + public Result createSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { + ValidatorUtils.validateEntity(azbjData); + + lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao"); + return new Result(); + } + + @PostMapping("xidurenyuan/create") + public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { + ValidatorUtils.validateEntity(jdryData); + + lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "xidurenyuan"); + return new Result(); + } + + @PostMapping("jingzhanhuanzhe/create") + public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { + ValidatorUtils.validateEntity(jzhzData); + + lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe"); + return new Result(); + } + + @PostMapping("shequjiaozheng/create") + public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { + ValidatorUtils.validateEntity(sqjzData); + + lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng"); + return new Result(); + } + + @PostMapping("xinfangrenyuan/create") + public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { + ValidatorUtils.validateEntity(xfryData); + + lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan"); + return new Result(); + } + + /** + * @description: 特殊人群详情 + * @param personId: + * @param specialType: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 3:44 PM + */ + @GetMapping("getPersonSpecialTypeDetail") + public Result getPersonSpecialTypeDetail(@RequestParam("idCard") String idCard, + @RequestParam("specialType") String specialType, + @RequestParam("specialDetailId") String specialDetailId) { + + LingShanSpecialCrowdDetailBaseExcelData r = lingShanSpecialCrowdService.getPersonSpecialTypeDetail(idCard, specialType, specialDetailId); + return new Result().ok(r); + } + + /** + * @description: 列表查询 + * @param orgId: + * @param orgType: + * @param specialType: + * @param name: + * @param mobile: + * @param idCard: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 5:42 PM + */ + @GetMapping("listSpecialCrowd") + public Result> listSpecialCrowds(@RequestParam(value = "orgId", required = false) String orgId, + @RequestParam(value = "orgType", required = false) String orgType, + @RequestParam(value = "specialType", required = false) String specialType, + @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "mobile", required = false) String mobile, + @RequestParam(value = "idCard", required = false) String idCard, + @RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize) { + + PageData pd = lingShanSpecialCrowdService.listSpecialCrowds(orgId, orgType, specialType, name, mobile, + idCard, pageNo, pageSize); + return new Result>().ok(pd); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java index 5dbb31709b..507a766cf6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -17,4 +18,11 @@ import java.util.List; public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao { void saveOrUpdateManually(@Param("types") List types); + + List listSpecialCrowds(@Param("orgIdPath") String orgIdPath, + @Param("orgType") String orgType, + @Param("specialType") String specialType, + @Param("name") String name, + @Param("mobile") String mobile, + @Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java index 27c97a9d0e..21a731cfc9 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotBlank; * */ @Data -public class LingShanSpecialCrowdDetailBaseExcelData { +public class LingShanSpecialCrowdDetailBaseExcelData extends LingShanSpecialCrowdDetailResultExtraInfo { /** * 姓名 */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailResultExtraInfo.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailResultExtraInfo.java new file mode 100644 index 0000000000..6a746798b2 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailResultExtraInfo.java @@ -0,0 +1,32 @@ +package com.epmet.excel.data; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * @description: 灵山特殊人群扩展字段 + * @param null: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 4:21 PM + */ +@Data +public class LingShanSpecialCrowdDetailResultExtraInfo { + + private String gender; + private String genderZh; + private String nation; + private String birthday; + /** + * 户籍地 + */ + private String domicilePlace; + private String mobile; + /** + * 住址 + */ + private String address; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java index 766318b93d..dd812582e7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -1,5 +1,7 @@ package com.epmet.service; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.entity.*; import com.epmet.excel.data.LingShanSpecialCrowdDetailAzbjExcelData; import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData; @@ -44,4 +46,38 @@ public interface LingShanSpecialCrowdService { void saveBatch(List entities, LingshanSpecialCrowdDetailJzhzEntity e); void saveBatch(List entities, LingshanSpecialCrowdDetailSqjzEntity e); void saveBatch(List entities, LingshanSpecialCrowdDetailXfryEntity e); + + /** + * @description: 新增-安置帮教 + * @param azbjData: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 2:51 PM + */ + void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData azbjData, String specialType); + + /** + * @description: 特殊人群详情 + * @param idCard: + * @param specialType: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 3:45 PM + */ + LingShanSpecialCrowdDetailBaseExcelData getPersonSpecialTypeDetail(String idCard, String specialType, String specialDetailId); + + /** + * @description: 列表查询 + * @param orgId: + * @param orgType: + * @param specialType: + * @param name: + * @param mobile: + * @param idCard: + * @return + * @author: WangXianZhang + * @date: 2023/4/20 5:44 PM + */ + PageData listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile, + String idCard, Integer pageNo, Integer pageSize); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 9f8830f13d..10597262e7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -2,53 +2,68 @@ package com.epmet.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; -import com.alibaba.excel.converters.Converter; -import com.alibaba.excel.converters.ReadConverterContext; -import com.alibaba.excel.enums.CellDataTypeEnum; -import com.alibaba.excel.read.metadata.ReadSheet; -import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.metadata.WriteSheet; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.commons.tools.enums.BizTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; -import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.feign.ResultDataResolver; -import com.epmet.commons.tools.utils.DateUtils; -import com.epmet.commons.tools.utils.EpmetRequestHolder; -import com.epmet.commons.tools.utils.ExcelUtils; -import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.CustomerResiUserRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache; +import com.epmet.commons.tools.utils.*; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; +import com.epmet.dto.IcBuildingDTO; +import com.epmet.dto.IcBuildingUnitDTO; +import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.IcResiUserDTO; +import com.epmet.dto.result.HouseAgencyInfoResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.*; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.*; import com.epmet.excel.handler.*; import com.epmet.exceptions.ReadExcelHeaderOnlyException; +import com.epmet.feign.EpmetAdminOpenFeignClient; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.LingShanSpecialCrowdService; import com.epmet.utils.ImportTaskUtils; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.commons.CommonsMultipartFile; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; +import java.util.concurrent.atomic.AtomicReference; /** * 灵山特殊人群service @@ -87,6 +102,11 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Autowired private OssFeignClient ossFeignClient; + @Autowired + private EpmetAdminOpenFeignClient adminOpenFeignClient; + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Override public String importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename) { Class excelDataClass; @@ -229,7 +249,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ return "居民信息不存在,请先维护居民基础信息。"; } if (!resiEntity.getName().equals(name)) { - return String.format("姓名信息与居民基础信息不一致。(在居民哭华总根据身份证号找到的居民姓名为:{})", name); + return String.format("姓名信息与居民基础信息不一致。(在居民库中根据身份证号找到的居民姓名为:%s)", name); } return null; @@ -287,4 +307,196 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ specialCrowdDetailXfryDao.saveBatchManually(l); } } + + @Override + public void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData specialData, String specialType) { + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + String staffId = EpmetRequestHolder.getLoginUserId(); + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId); + String orgIdPath = PidUtils.convertPid2OrgIdPath(staffInfo.getAgencyId(), staffInfo.getAgencyPIds()); + + Date now = new Date(); + + // 检查 + String validateRst = validate(specialData); + if (StringUtils.isNotBlank(validateRst)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst); + } + + // 保存人员和类型信息 + LingshanSpecialCrowdPersonEntity person = new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getName(), specialData.getIdCard(), + "0", 0, now, staffId, now, staffId); + // + LingshanSpecialCrowdPersonTypeEntity personType = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getIdCard(), specialType, + "0", 0, now, staffId, now, staffId); + + savePersonAndTypes(Arrays.asList(person), Arrays.asList(personType)); + + // Class clazz; + + switch (specialType) { + case "anzhibangjiao": + LingshanSpecialCrowdDetailAzbjEntity e1 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + setCommonFields(e1, customerId, orgIdPath, now, staffId); + saveBatch(Arrays.asList(e1), e1); + break; + case "xinfangrenyuan": + LingshanSpecialCrowdDetailAzbjEntity e2 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + setCommonFields(e2, customerId, orgIdPath, now, staffId); + saveBatch(Arrays.asList(e2), e2); + break; + case "xidurenyuan": + LingshanSpecialCrowdDetailAzbjEntity e3 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + setCommonFields(e3, customerId, orgIdPath, now, staffId); + saveBatch(Arrays.asList(e3), e3); + break; + case "shequjiaozheng": + LingshanSpecialCrowdDetailAzbjEntity e4 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + setCommonFields(e4, customerId, orgIdPath, now, staffId); + saveBatch(Arrays.asList(e4), e4); + break; + case "jingzhanghuanzhe": + LingshanSpecialCrowdDetailAzbjEntity e5 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + setCommonFields(e5, customerId, orgIdPath, now, staffId); + saveBatch(Arrays.asList(e5), e5); + break; + } + + } + + void setCommonFields(LingshanSpecialCrowdDetailBaseEntity e, String customerId, String orgIdPath, Date now, String staffId) { + e.setCustomerId(customerId); + e.setOrgIdPath(orgIdPath); + e.setId(IdWorker.getIdStr()); + e.setRevision(0); + e.setCreatedTime(now); + e.setUpdatedTime(now); + e.setCreatedBy(staffId); + e.setUpdatedBy(staffId); + e.setDelFlag("0"); + } + + @Override + public LingShanSpecialCrowdDetailBaseExcelData getPersonSpecialTypeDetail(String idCard, String specialType, String specialDetailId) { + // 查询人员基础信息 + LambdaQueryWrapper personQ = new LambdaQueryWrapper<>(); + personQ.eq(LingshanSpecialCrowdPersonEntity::getIdCard, idCard); + LingshanSpecialCrowdPersonEntity person = specialCrowdPersonDao.selectOne(personQ); + + if (person == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员信息"); + } + + // 查询人员类别详情 + LingShanSpecialCrowdDetailBaseExcelData d; + switch (specialType) { + case "anzhibangjiao": + LingshanSpecialCrowdDetailAzbjEntity e1 = specialCrowdDetailAzbjDao.selectById(specialDetailId); + d = ConvertUtils.sourceToTarget(e1, LingShanSpecialCrowdDetailAzbjExcelData.class); + break; + case "xinfangrenyuan": + LingshanSpecialCrowdDetailXfryEntity e2 = specialCrowdDetailXfryDao.selectById(specialDetailId); + d = ConvertUtils.sourceToTarget(e2, LingshanSpecialCrowdDetailXfryExcelData.class); + break; + case "xidurenyuan": + LingshanSpecialCrowdDetailJdryEntity e3 = specialCrowdDetailJdryDao.selectById(specialDetailId); + d = ConvertUtils.sourceToTarget(e3, LingshanSpecialCrowdDetailJdryExcelData.class); + break; + case "shequjiaozheng": + LingshanSpecialCrowdDetailSqjzEntity e4 = specialCrowdDetailSqjzDao.selectById(specialDetailId); + d = ConvertUtils.sourceToTarget(e4, LingshanSpecialCrowdDetailSqjzExcelData.class); + break; + case "jingzhanghuanzhe": + LingshanSpecialCrowdDetailJzhzEntity e5 = specialCrowdDetailJzhzDao.selectById(specialDetailId); + d = ConvertUtils.sourceToTarget(e5, LingshanSpecialCrowdDetailJzhzExcelData.class); + break; + default: + d = new LingShanSpecialCrowdDetailBaseExcelData(); + } + + if (d == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员的类别详细信息"); + } + + d.setName(person.getName()); + + // 查询居民信息 + IcResiUserEntity resiBaseEntity = icResiUserDao.selectResiUserEntityByIdCard(idCard, EpmetRequestHolder.getLoginUserCustomerId()); + if (resiBaseEntity == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员信息"); + } + + // 户籍地 + d.setDomicilePlace(resiBaseEntity.getHjszd()); + + // 住址 + d.setAddress(getAddressOfResi(resiBaseEntity.getGridId(), resiBaseEntity.getHomeId())); + + // 生日 + d.setBirthday(resiBaseEntity.getBirthday()); + + // 性别 + String gender = resiBaseEntity.getGender(); + String genderStr; + if (gender == null) { + genderStr = "保密"; + } else if (gender.equals("0")) { + genderStr = "男"; + } else if (gender.equals("1")) { + genderStr = "女"; + } else { + genderStr = "未知"; + } + d.setGender(resiBaseEntity.getGender()); + d.setGenderZh(genderStr); + d.setMobile(resiBaseEntity.getMobile()); + + // 民族 + AtomicReference nationZh = new AtomicReference(); + List nationDict = getResultDataOrReturnNull(adminOpenFeignClient.getNationOption(), ServiceConstant.EPMET_ADMIN_SERVER); + if (CollectionUtils.isNotEmpty(nationDict)) { + nationDict.stream().forEach(n -> { + if (n.getValue().equals(resiBaseEntity.getMz())) { + nationZh.set(n.getLabel()); + } + }); + } + + d.setNation(nationZh.get()); + return d; + } + + private String getAddressOfResi(String gridId, String homeId) { + + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(gridId); + String allParentName = gridInfo.getAllParentName(); + String gridNamePath = gridInfo.getGridNamePath(); + + // IcNeighborHoodDTO nei = getResultDataOrReturnNull(govOrgOpenFeignClient.getIcNeighbordhoodById(villageId), ServiceConstant.GOV_ORG_SERVER); + // IcBuildingDTO buildingDTO = getResultDataOrReturnNull(govOrgOpenFeignClient.getBuildingById(buildId), ServiceConstant.GOV_ORG_SERVER); + // IcBuildingUnitDTO unit = getResultDataOrReturnNull(govOrgOpenFeignClient.getUnitById(unitId), ServiceConstant.GOV_ORG_SERVER); + HouseAgencyInfoResultDTO houseInfo = getResultDataOrReturnNull(govOrgOpenFeignClient.getHouseAgencyInfo(homeId), ServiceConstant.GOV_ORG_SERVER); + return String.format("%s-%s-%s", allParentName, gridNamePath, houseInfo.getFullName()); + } + + @Override + public PageData listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile, + String idCard, Integer pageNo, Integer pageSize) { + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + + String orgIdPath = null; + if (StringUtils.isNotBlank(orgId)) { + orgIdPath = CustomerOrgRedis.getOrgIdPath(orgId, orgType); + } + PageHelper.startPage(pageNo, pageSize); + List l = specialCrowdPersonTypeDao.listSpecialCrowds(orgIdPath, orgType, specialType, name, mobile, idCard); + l.forEach(i -> { + IcResiUserDTO resi = icResiUserDao.getResiUserByIdCard(i.getIdCard(), customerId); + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(resi.getGridId()); + i.setOrgNamePath(gridInfo.getAgencyName().concat("-").concat(gridInfo.getGridName())); + i.setAddress(getAddressOfResi(resi.getGridId(), resi.getHomeId())); + i.setSpecialTypeDisplay(LingShanSpecialCrowdTypeEnums.getByType(i.getSpecialType()).getName()); + }); + return new PageData<>(l, new PageInfo<>(l).getTotal()); + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml index 1fc8a8b92b..ecf6ea72c3 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml @@ -32,5 +32,39 @@ , UPDATED_TIME = values(UPDATED_TIME) + + \ No newline at end of file From c11afec4bd1b81227ee89ddac827603ebc0cc9c9 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 20 Apr 2023 23:11:02 +0800 Subject: [PATCH 12/51] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/result/LingShanSpecialCrowdListResultDTO.java | 4 ++-- .../com/epmet/controller/LingShanSpecialCrowdController.java | 3 +++ .../AbstractLingShanSpecialCrowdExcelImportListener.java | 2 +- .../resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java index af84a07746..1801914aa6 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java @@ -16,10 +16,10 @@ public class LingShanSpecialCrowdListResultDTO { private String idCard; private String address; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") private Date createdTime; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") private Date updatedTime; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 8c2022865d..250933a622 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -1,5 +1,6 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; @@ -173,6 +174,8 @@ public class LingShanSpecialCrowdController { * @date: 2023/4/20 5:42 PM */ @GetMapping("listSpecialCrowd") + @MaskResponse(fieldNames = {"name", "mobile", "idCard"}, + fieldsMaskType = { MaskResponse.MASK_TYPE_CHINESE_NAME, MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD }) public Result> listSpecialCrowds(@RequestParam(value = "orgId", required = false) String orgId, @RequestParam(value = "orgType", required = false) String orgType, @RequestParam(value = "specialType", required = false) String specialType, diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index 58c06e92e3..dc27f50e41 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -250,7 +250,7 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener it = getOriginDatas().iterator(); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml index ecf6ea72c3..c0dab810f2 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml @@ -64,6 +64,7 @@ and r.MOBILE like CONCAT('%', mobile, '%') + order by t.UPDATED_TIME desc From 5ecc91771f98f29c81a4444862793d7cf1b96e1a Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 21 Apr 2023 09:51:15 +0800 Subject: [PATCH 13/51] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=89=B9=E6=AE=8A=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E3=80=822.=E5=B0=86=E5=88=9B=E5=BB=BA=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=B8=BA=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=97=B6=E6=94=AF=E6=8C=81=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E5=92=8C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LingShanSpecialCrowdController.java | 44 +++++++++++++---- .../LingshanSpecialCrowdDetailAzbjDao.java | 2 + .../LingshanSpecialCrowdDetailJdryDao.java | 1 + .../LingshanSpecialCrowdDetailJzhzDao.java | 1 + .../LingshanSpecialCrowdDetailSqjzDao.java | 1 + .../LingshanSpecialCrowdDetailXfryDao.java | 1 + .../dao/LingshanSpecialCrowdPersonDao.java | 2 + .../LingshanSpecialCrowdPersonTypeDao.java | 3 ++ .../service/LingShanSpecialCrowdService.java | 2 + .../impl/LingShanSpecialCrowdServiceImpl.java | 47 ++++++++++++++++--- .../LingshanSpecialCrowdDetailAzbjDao.xml | 3 ++ .../LingshanSpecialCrowdDetailJdryDao.xml | 3 ++ .../LingshanSpecialCrowdDetailJzhzDao.xml | 3 ++ .../LingshanSpecialCrowdDetailSqjzDao.xml | 3 ++ .../LingshanSpecialCrowdDetailXfryDao.xml | 3 ++ .../mapper/LingshanSpecialCrowdPersonDao.xml | 3 ++ .../LingshanSpecialCrowdPersonTypeDao.xml | 3 ++ 17 files changed, 109 insertions(+), 16 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 250933a622..c09f16214d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -3,6 +3,7 @@ package com.epmet.controller; import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.FileUtils; @@ -13,6 +14,7 @@ import com.epmet.excel.data.*; import com.epmet.service.LingShanSpecialCrowdService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -23,6 +25,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Date; import java.util.List; +import java.util.Map; /** * @description: 灵山社会维稳(特殊人群) @@ -104,40 +107,40 @@ public class LingShanSpecialCrowdController { * @author: WangXianZhang * @date: 2023/4/20 2:50 PM */ - @PostMapping("anzhibangjiao/create") - public Result createSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { + @PostMapping("anzhibangjiao/save") + public Result saveSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { ValidatorUtils.validateEntity(azbjData); lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao"); return new Result(); } - @PostMapping("xidurenyuan/create") - public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { + @PostMapping("xidurenyuan/save") + public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { ValidatorUtils.validateEntity(jdryData); lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "xidurenyuan"); return new Result(); } - @PostMapping("jingzhanhuanzhe/create") - public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { + @PostMapping("jingzhanhuanzhe/save") + public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { ValidatorUtils.validateEntity(jzhzData); lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe"); return new Result(); } - @PostMapping("shequjiaozheng/create") - public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { + @PostMapping("shequjiaozheng/save") + public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { ValidatorUtils.validateEntity(sqjzData); lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng"); return new Result(); } - @PostMapping("xinfangrenyuan/create") - public Result createSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { + @PostMapping("xinfangrenyuan/save") + public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { ValidatorUtils.validateEntity(xfryData); lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan"); @@ -190,5 +193,26 @@ public class LingShanSpecialCrowdController { return new Result>().ok(pd); } + // 修改 todo + + /** + * @description: 删除 + * @param params: + * @return + * @author: WangXianZhang + * @date: 2023/4/21 9:40 AM + */ + @PostMapping("deleteByType") + public Result deleteByType(@RequestBody Map params) { + String specialType = params.get("specialType"); + String idCard = params.get("idCard"); + + if (StringUtils.isAnyBlank(specialType, idCard)) { + throw new ValidateException("特殊人群类型或身份证不能为空"); + } + + lingShanSpecialCrowdService.deleteByType(specialType, idCard); + return new Result(); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java index 867b812be2..64e914b7ca 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java @@ -17,4 +17,6 @@ import java.util.List; public interface LingshanSpecialCrowdDetailAzbjDao extends BaseDao { void saveBatchManually(@Param("asbjList") List l); + + void deletePhysical(@Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java index 46419693c3..488a75c7ec 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java @@ -17,4 +17,5 @@ import java.util.List; public interface LingshanSpecialCrowdDetailJdryDao extends BaseDao { void saveBatchManually(@Param("list") List l); + void deletePhysical(@Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java index 727b1f3e07..1337bdfe5d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java @@ -17,4 +17,5 @@ import java.util.List; public interface LingshanSpecialCrowdDetailJzhzDao extends BaseDao { void saveBatchManually(@Param("list") List l); + void deletePhysical(@Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java index 331aa3a227..ff36f2d88e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java @@ -17,4 +17,5 @@ import java.util.List; public interface LingshanSpecialCrowdDetailSqjzDao extends BaseDao { void saveBatchManually(@Param("list") List l); + void deletePhysical(@Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java index e3e3ef3527..f118886bcc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java @@ -17,4 +17,5 @@ import java.util.List; public interface LingshanSpecialCrowdDetailXfryDao extends BaseDao { void saveBatchManually(@Param("list") List l); + void deletePhysical(@Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java index 5c048ed7fb..46d27f818c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java @@ -18,4 +18,6 @@ import java.util.List; public interface LingshanSpecialCrowdPersonDao extends BaseDao { void saveOrUpdateManually(@Param("list") List list); + + void deletePhysical(@Param("idCard") String idCard); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java index 507a766cf6..28ff3ca03c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java @@ -1,5 +1,6 @@ package com.epmet.dao; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; @@ -25,4 +26,6 @@ public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile, String idCard, Integer pageNo, Integer pageSize); + + void deleteByType(String specialType, String idCard); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 10597262e7..e0c484a97e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -43,6 +43,7 @@ import com.epmet.service.LingShanSpecialCrowdService; import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.github.pagehelper.dialect.helper.SqlServer2012Dialect; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; @@ -52,6 +53,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.http.entity.ContentType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.IOException; @@ -310,6 +312,12 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Override public void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData specialData, String specialType) { + // 检查 + String validateRst = validate(specialData); + if (StringUtils.isNotBlank(validateRst)) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst); + } + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); String staffId = EpmetRequestHolder.getLoginUserId(); CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId); @@ -317,12 +325,6 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ Date now = new Date(); - // 检查 - String validateRst = validate(specialData); - if (StringUtils.isNotBlank(validateRst)) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst); - } - // 保存人员和类型信息 LingshanSpecialCrowdPersonEntity person = new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getName(), specialData.getIdCard(), "0", 0, now, staffId, now, staffId); @@ -499,4 +501,37 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ }); return new PageData<>(l, new PageInfo<>(l).getTotal()); } + + @Transactional + @Override + public void deleteByType(String specialType, String idCard) { + // 先删除type + specialCrowdPersonTypeDao.deletePhysical(specialType, idCard); + + // 再删除detail + switch (specialType) { + case "anzhibangjiao": + specialCrowdDetailAzbjDao.deletePhysical(idCard); + break; + case "xinfangrenyuan": + specialCrowdDetailXfryDao.deletePhysical(idCard); + break; + case "xidurenyuan": + specialCrowdDetailJdryDao.deletePhysical(idCard); + break; + case "shequjiaozheng": + specialCrowdDetailSqjzDao.deletePhysical(idCard); + break; + case "jingzhanghuanzhe": + specialCrowdDetailJzhzDao.deletePhysical(idCard); + break; + } + + LambdaQueryWrapper q = new LambdaQueryWrapper<>(); + q.eq(LingshanSpecialCrowdPersonTypeEntity::getIdCard, idCard); + if (specialCrowdPersonTypeDao.selectCount(q) == 0) { + // 没有type了,那就吧person也删了 + specialCrowdPersonDao.deletePhysical(idCard); + } + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml index 60a3bb3c17..35938055e8 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml @@ -52,6 +52,9 @@ , UPDATED_BY = values(UPDATED_BY) , UPDATED_TIME = values(UPDATED_TIME) + + delete from lingshan_special_crowd_detail_azbj where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml index efdc2079e7..7b18cda7b6 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml @@ -31,6 +31,9 @@ UPDATED_BY = values(UPDATED_BY), UPDATED_TIME = values(UPDATED_TIME) + + delete from lingshan_special_crowd_detail_jdry where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml index e750b74a6c..ad68997b41 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml @@ -56,6 +56,9 @@ , UPDATED_TIME = values(UPDATED_TIME) + + delete from lingshan_special_crowd_detail_jzhz where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml index f290ca4daa..c9e6c8fa72 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml @@ -54,6 +54,9 @@ , UPDATED_BY = values(UPDATED_BY) , UPDATED_TIME = values(UPDATED_TIME) + + delete from lingshan_special_crowd_detail_sqjz where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml index 8258af9767..44f90dd401 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml @@ -55,6 +55,9 @@ , UPDATED_BY = values(UPDATED_BY) , UPDATED_TIME = values(UPDATED_TIME) + + delete from lingshan_special_crowd_detail_xfry where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml index bdf6bfb32b..de34f7d6d7 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml @@ -40,6 +40,9 @@ , UPDATED_BY=values(UPDATED_BY) , UPDATED_TIME=values(UPDATED_TIME) + + delete from lingshan_special_crowd_person where ID_CARD = #{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml index c0dab810f2..7b41e26356 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml @@ -31,6 +31,9 @@ , UPDATED_BY =values(UPDATED_BY) , UPDATED_TIME = values(UPDATED_TIME) + + delete from lingshan_special_crowd_person_type where ID_CARD = #{idCard} and SPECIAL_TYPE = #{specialType} + + - + UPDATE ic_dangerous_chemicals SET del_flag = '1', updated_by = #{updatedBy}, @@ -118,14 +145,5 @@ AND del_flag = '0' - - DELETE - FROM - ic_dangerous_chemicals - WHERE - del_flag != '0' - AND agency_id = #{agencyId} - AND `name` = #{name} - \ No newline at end of file From 9f1833d9bb33e6aea3225aa5a29522296f2389da Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 15:13:43 +0800 Subject: [PATCH 17/51] =?UTF-8?q?=E7=81=B5=E5=B1=B1=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=3D=E5=8E=9F=E4=BA=A7=E5=93=81=E9=87=8D?= =?UTF-8?q?=E7=82=B9=E5=8D=B1=E5=8C=96=E5=93=81=E4=BC=81=E4=B8=9A=EF=BC=9B?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=EF=BC=8C=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcDangerousChemicalsController.java | 9 +++-- .../excel/IcDangerousChemicalsExcel.java | 32 +++++++++++------- ...lingshan_dangerous_chemicals_template.xlsx | Bin 0 -> 9288 bytes 3 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/excel/lingshan_dangerous_chemicals_template.xlsx diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java index 522bd55c3a..1c8bcfadf1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java @@ -153,9 +153,11 @@ public class IcDangerousChemicalsController { 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"); + // response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("重点危化管理导入模板", "UTF-8") + ".xlsx"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("企业档案导入模板", "UTF-8") + ".xlsx"); - InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/dangerous_chemicals_template.xlsx"); + // InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/dangerous_chemicals_template.xlsx"); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/lingshan_dangerous_chemicals_template.xlsx"); try { ServletOutputStream os = response.getOutputStream(); IOUtils.copy(is, os); @@ -182,7 +184,8 @@ public class IcDangerousChemicalsController { formDTO.setPageNo(NumConstant.ONE); formDTO.setPageSize(NumConstant.TEN_THOUSAND); try { - String fileName = "重点危化管理" + DateUtils.format(new Date()) + ".xlsx"; + // String fileName = "重点危化管理" + DateUtils.format(new Date()) + ".xlsx"; + String fileName = "企业档案" + DateUtils.format(new Date()) + ".xlsx"; // 头的策略 WriteCellStyle headWriteCellStyle = new WriteCellStyle(); // 背景设置为红色 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java index d7b612e504..a6db250b8f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java @@ -13,27 +13,31 @@ import lombok.Data; @Data public class IcDangerousChemicalsExcel { + @ExcelProperty(value = "所属组织") + @ColumnWidth(25) + private String gridName; + @ExcelProperty(value = "企业名称") @ColumnWidth(25) private String name; - @ExcelProperty(value = "企业类型") + @ExcelProperty(value = "企业类别") @ColumnWidth(20) private String categoryName; - @ExcelProperty(value = "周边安全距离") - @ColumnWidth(20) - private String safeDistanceName; + // @ExcelProperty(value = "周边安全距离") + // @ColumnWidth(20) + // private String safeDistanceName; + // + // @ExcelProperty(value = "危化品种类") + // @ColumnWidth(20) + // private String dangerTypeName; - @ExcelProperty(value = "危化品种类") - @ColumnWidth(20) - private String dangerTypeName; - - @ExcelProperty(value = "经营地址") + @ExcelProperty(value = "企业地址") @ColumnWidth(25) private String address; - @ExcelProperty(value = "负责人") + @ExcelProperty(value = "联系人") @ColumnWidth(20) private String principalName; @@ -41,8 +45,12 @@ public class IcDangerousChemicalsExcel { @ColumnWidth(20) private String principalMobile; - @ExcelProperty(value = "备注") + @ExcelProperty(value = "安全负责人") + @ColumnWidth(25) + private String securityPrincipalName; + + @ExcelProperty(value = "安全负责电话人") @ColumnWidth(25) - private String remark; + private String securityPrincipalMobile; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/lingshan_dangerous_chemicals_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/lingshan_dangerous_chemicals_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2b2490aeb4fa50475abe9ef147a4296ee42a21ce GIT binary patch literal 9288 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 Date: Sun, 23 Apr 2023 15:53:28 +0800 Subject: [PATCH 18/51] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=EF=BC=9A=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E4=BA=BA=E7=BE=A4=EF=BC=8C=E8=B0=83=E6=95=B4=EF=BC=8C?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=85=B3=E8=81=94=E5=B1=85=E6=B0=91=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/enums/ZhzlResiCategoryEnum.java | 4 +- .../LingShanSpecialTypeSaveFormDTO.java | 279 +++++++++++++++ .../LingShanSpecialTypeSaveResultDTO.java | 287 +++++++++++++++ .../LingShanSpecialCrowdListResultDTO.java | 3 +- .../enums/LingShanSpecialCrowdTypeEnums.java | 2 +- .../LingShanSpecialCrowdController.java | 119 ++++--- .../dao/LingshanSpecialCrowdPersonDao.java | 23 -- .../LingshanSpecialCrowdPersonTypeDao.java | 2 +- .../LingshanSpecialCrowdPersonEntity.java | 64 ---- .../LingshanSpecialCrowdPersonTypeEntity.java | 12 +- ...ngShanSpecialCrowdDetailBaseExcelData.java | 7 + ...ngShanSpecialCrowdExcelImportListener.java | 28 +- .../service/LingShanSpecialCrowdService.java | 36 +- .../impl/LingShanSpecialCrowdServiceImpl.java | 334 +++++++++++------- .../mapper/LingshanSpecialCrowdPersonDao.xml | 48 --- .../LingshanSpecialCrowdPersonTypeDao.xml | 36 +- 16 files changed, 923 insertions(+), 361 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java delete mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java delete mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonEntity.java delete mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java index b57baedf5e..66def5e16c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java @@ -12,7 +12,7 @@ public enum ZhzlResiCategoryEnum { // buliangqingshaonian 不良青少年 // shequjiaozheng 社区矫正 // zhaoshizhaohuojingshenbing 肇事肇祸精神病 - // xidurenyuan 吸毒人员 + // jiedurenyuan 吸毒人员 resi_xfry("resi_xfry", "信访人员", "equal", "ic_resi_user", "IS_XFRY", "1", 1), anzhibangjiao("anzhibangjiao", "安置帮教", "list_equal", "ic_special", "SPECIAL_RQLB", "anzhibangjiao", 2), @@ -20,7 +20,7 @@ public enum ZhzlResiCategoryEnum { buliangqingshaonian("buliangqingshaonian", "不良青少年", "list_equal", "ic_special", "SPECIAL_RQLB", "buliangqingshaonian", 4), shequjiaozheng("shequjiaozheng", "社区矫正", "list_equal", "ic_special", "SPECIAL_RQLB", "shequjiaozheng", 5), zhaoshizhaohuojingshenbing("zhaoshizhaohuojingshenbing", "肇事肇祸精神病", "list_equal", "ic_special", "SPECIAL_RQLB", "zhaoshizhaohuojingshenbing", 6), - xidurenyuan("xidurenyuan", "吸毒人员", "list_equal", "ic_special", "SPECIAL_RQLB", "xidurenyuan", 7); + xidurenyuan("jiedurenyuan", "戒毒人员", "list_equal", "ic_special", "SPECIAL_RQLB", "xidurenyuan", 7); private String code; private String name; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java new file mode 100644 index 0000000000..d0ede466a0 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java @@ -0,0 +1,279 @@ +package com.epmet.dto.form.lingshan; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +@Data +public class LingShanSpecialTypeSaveFormDTO { + + private String name; + private String idCard; + private SpecialCrowdDetails specialCrowdDetails; + + @Data + public static class SpecialCrowdDetails { + private SpecialCrowdAzbj anzhibangjiao ; + private SpecialCrowdJdry jiedurenyuan ; + private SpecialCrowdJzhz jingzhanghuanzhe ; + private SpecialCrowdSqjz shequjiaozheng ; + private SpecialCrowdXfry xinfangrenyuan ; + } + + /** + * 安置帮教 + */ + @Data + public static class SpecialCrowdAzbj { + @NotBlank(message = "原罪名不能为空") + private String originalCharge; + + /** + * 释放日期 + */ + @NotNull(message = "释放日期不能为空") + private Date releaseDate; + + private Date originPrisonTerm; + + /** + * 是否累犯。0否,1是 + */ + private Integer recidivismFlag; + + /** + * 是否安置。0否,1是 + */ + private Integer emplacementFlag; + + /** + * 安置日期 + */ + private Date emplacementDate; + + /** + * 安置帮教情况 + */ + private String emplacementInfo; + + /** + * 是否注销 + */ + private Integer canceledFlag; + + /** + * 注销原因 + */ + private String canceledReason; + } + + /** + * 戒毒人员 + */ + @Data + public static class SpecialCrowdJdry { + /** + * 有无犯罪史 + */ + @NotNull(message = "有无犯罪史不能为空") + private Integer criminalHistoryFlag; + + /** + * 有无复吸史 + */ + @NotNull(message = "有无复吸史不能为空") + private Integer drugRepetitionFlag; + + /** + * 初次发现日期 + */ + private Date firstDiscoveryDate; + + /** + * 管控人姓名 + */ + private String controllerName; + + /** + * 管控人联系方式 + */ + private String controllerContact; + + /** + * 帮扶人姓名 + */ + private String helperName; + + /** + * 帮扶人联系方式 + */ + private String helperContact; + + /** + * 是否脱管 + */ + private Integer detachedFlag; + + /** + * 脱管原因 + */ + private String detachedReason; + } + + @Data + public static class SpecialCrowdJzhz { + @NotNull(message = "有无肇事肇祸史不能为空") + private Integer causeTroubleHistoryFlag; + + /** + * 肇事肇祸次数 + */ + @NotNull(message = "肇事肇祸次数不能为空") + private Integer causeTroubleTimes; + + /** + * 目前诊断类型。1精神分裂症,2分裂情感性障碍,3持久的妄想性障碍(偏执性精神病),4双相(情感)障碍,5癫痫所致精神障碍,6精神发育迟滞伴发精神障碍,7重度抑郁发作,8精神活性物质所致精神障碍,9其他 + */ + private Integer currentDiagnosis; + + /** + * 危险性评估等级。0,1,2,3,4,5 + */ + private Integer dangerousClass; + + /** + * 是否具备外出能力 + */ + private Integer canGoOutFlag; + + /** + * 是否有暴力倾向 + */ + private Integer violenceFlag; + + /** + * 是否落实监管补助 + */ + private Integer allowanceFlag; + + /** + * 是否纳入低保 + */ + private Integer subsistenceFlag; + + /** + * 监护人姓名 + */ + private String guardianName; + + /** + * 监护人联系方式 + */ + private String guardianContact; + } + + @Data + public static class SpecialCrowdSqjz { + @NotNull(message = "矫正类型不能为空") + private Integer rectificateType; + + /** + * 矫正开始日期 + */ + private Date rectificateStartDate; + + /** + * 矫正结束日期 + */ + private Date rectificateEndDate; + + /** + * 原羁押场所 + */ + private String originDetainAddress; + + /** + * 原罪名 + */ + private String originalCharge; + + /** + * 接受方式。1.自行报到,2狱所押送,3当庭交接,4其他 + */ + private Integer receiveWay; + + /** + * 矫正情况说明 + */ + private String rectificateInfo; + + /** + * 是否脱管 + */ + private Integer detachedFlag; + + /** + * 脱管原因 + */ + private String detachedReason; + + /** + * 是否注销 + */ + private Integer canceledFlag; + + /** + * 注销原因 + */ + private String canceledReason; + } + + @Data + public static class SpecialCrowdXfry { + @NotBlank(message = "反映问题不能为空") + private String problem; + + /** + * 稳控措施 + */ + @NotBlank(message = "稳控措施不能为空") + private String stableControlMeasurement; + + /** + * 是否多次上访 + */ + private Integer multipleFlag; + + /** + * 是否在当地 + */ + private Integer localFlag; + + /** + * 分管领导 + */ + private String branchLeader; + + /** + * 分管领导联系方式 + */ + private String branchLeaderContact; + + /** + * 负责人 + */ + private String principal; + + /** + * 负责人联系方式 + */ + private String principalContact; + + /** + * 稳控人员名单 + */ + private String stableControlerList; + } +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java new file mode 100644 index 0000000000..3ed43eb2bd --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java @@ -0,0 +1,287 @@ +package com.epmet.dto.form.lingshan; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +@Data +public class LingShanSpecialTypeSaveResultDTO { + + private String gender; + private String genderZh; + private String nation; + private String birthday; + private String domicilePlace; + private String name; + private String mobile; + private String address; + private String idCard; + private SpecialCrowdDetails specialCrowdDetails = new SpecialCrowdDetails(); + + @Data + public static class SpecialCrowdDetails { + private SpecialCrowdAzbj anzhibangjiao ; + private SpecialCrowdJdry jiedurenyuan ; + private SpecialCrowdJzhz jingzhanghuanzhe ; + private SpecialCrowdSqjz shequjiaozheng ; + private SpecialCrowdXfry xinfangrenyuan ; + } + + /** + * 安置帮教 + */ + @Data + public static class SpecialCrowdAzbj { + @NotBlank(message = "原罪名不能为空") + private String originalCharge; + + /** + * 释放日期 + */ + @NotNull(message = "释放日期不能为空") + private Date releaseDate; + + private Date originPrisonTerm; + + /** + * 是否累犯。0否,1是 + */ + private Integer recidivismFlag; + + /** + * 是否安置。0否,1是 + */ + private Integer emplacementFlag; + + /** + * 安置日期 + */ + private Date emplacementDate; + + /** + * 安置帮教情况 + */ + private String emplacementInfo; + + /** + * 是否注销 + */ + private Integer canceledFlag; + + /** + * 注销原因 + */ + private String canceledReason; + } + + /** + * 戒毒人员 + */ + @Data + public static class SpecialCrowdJdry { + /** + * 有无犯罪史 + */ + @NotNull(message = "有无犯罪史不能为空") + private Integer criminalHistoryFlag; + + /** + * 有无复吸史 + */ + @NotNull(message = "有无复吸史不能为空") + private Integer drugRepetitionFlag; + + /** + * 初次发现日期 + */ + private Date firstDiscoveryDate; + + /** + * 管控人姓名 + */ + private String controllerName; + + /** + * 管控人联系方式 + */ + private String controllerContact; + + /** + * 帮扶人姓名 + */ + private String helperName; + + /** + * 帮扶人联系方式 + */ + private String helperContact; + + /** + * 是否脱管 + */ + private Integer detachedFlag; + + /** + * 脱管原因 + */ + private String detachedReason; + } + + @Data + public static class SpecialCrowdJzhz { + @NotNull(message = "有无肇事肇祸史不能为空") + private Integer causeTroubleHistoryFlag; + + /** + * 肇事肇祸次数 + */ + @NotNull(message = "肇事肇祸次数不能为空") + private Integer causeTroubleTimes; + + /** + * 目前诊断类型。1精神分裂症,2分裂情感性障碍,3持久的妄想性障碍(偏执性精神病),4双相(情感)障碍,5癫痫所致精神障碍,6精神发育迟滞伴发精神障碍,7重度抑郁发作,8精神活性物质所致精神障碍,9其他 + */ + private Integer currentDiagnosis; + + /** + * 危险性评估等级。0,1,2,3,4,5 + */ + private Integer dangerousClass; + + /** + * 是否具备外出能力 + */ + private Integer canGoOutFlag; + + /** + * 是否有暴力倾向 + */ + private Integer violenceFlag; + + /** + * 是否落实监管补助 + */ + private Integer allowanceFlag; + + /** + * 是否纳入低保 + */ + private Integer subsistenceFlag; + + /** + * 监护人姓名 + */ + private String guardianName; + + /** + * 监护人联系方式 + */ + private String guardianContact; + } + + @Data + public static class SpecialCrowdSqjz { + @NotNull(message = "矫正类型不能为空") + private Integer rectificateType; + + /** + * 矫正开始日期 + */ + private Date rectificateStartDate; + + /** + * 矫正结束日期 + */ + private Date rectificateEndDate; + + /** + * 原羁押场所 + */ + private String originDetainAddress; + + /** + * 原罪名 + */ + private String originalCharge; + + /** + * 接受方式。1.自行报到,2狱所押送,3当庭交接,4其他 + */ + private Integer receiveWay; + + /** + * 矫正情况说明 + */ + private String rectificateInfo; + + /** + * 是否脱管 + */ + private Integer detachedFlag; + + /** + * 脱管原因 + */ + private String detachedReason; + + /** + * 是否注销 + */ + private Integer canceledFlag; + + /** + * 注销原因 + */ + private String canceledReason; + } + + @Data + public static class SpecialCrowdXfry { + @NotBlank(message = "反映问题不能为空") + private String problem; + + /** + * 稳控措施 + */ + @NotBlank(message = "稳控措施不能为空") + private String stableControlMeasurement; + + /** + * 是否多次上访 + */ + private Integer multipleFlag; + + /** + * 是否在当地 + */ + private Integer localFlag; + + /** + * 分管领导 + */ + private String branchLeader; + + /** + * 分管领导联系方式 + */ + private String branchLeaderContact; + + /** + * 负责人 + */ + private String principal; + + /** + * 负责人联系方式 + */ + private String principalContact; + + /** + * 稳控人员名单 + */ + private String stableControlerList; + } +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java index 1801914aa6..efa7a61b47 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LingShanSpecialCrowdListResultDTO.java @@ -8,8 +8,9 @@ import java.util.Date; @Data public class LingShanSpecialCrowdListResultDTO { + private String resiId; private String orgNamePath; - private String specialType; + private String specialTypesStr; private String specialTypeDisplay; private String name; private String mobile; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java index 5728173c2f..21ed2904ef 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/enums/LingShanSpecialCrowdTypeEnums.java @@ -10,7 +10,7 @@ package com.epmet.enums; public enum LingShanSpecialCrowdTypeEnums { AZBJ("anzhibangjiao", "安置帮教", 1), SQJZ("shequjiaozheng", "社区矫正", 1), - JDRY("xidurenyuan", "戒毒人员", 1), + JDRY("jiedurenyuan", "戒毒人员", 1), JZHZ("jingzhanghuanzhe", "精障患者", 1), XFRY("xinfangrenyuan", "信访人员", 1); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 5d9596722a..ed46a4ae89 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -9,6 +9,8 @@ import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.FileUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveFormDTO; +import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveResultDTO; import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.*; @@ -77,9 +79,6 @@ public class LingShanSpecialCrowdController { } finally { org.apache.poi.util.IOUtils.closeQuietly(is); } - - - } /** @@ -89,7 +88,7 @@ public class LingShanSpecialCrowdController { * anzhibangjiao * buliangqingshaonian * shequjiaozheng - * xidurenyuan + * jiedurenyuan * xiejiaorenyuan * zhaoshizhaohuojingshenbing * @return @@ -110,7 +109,7 @@ public class LingShanSpecialCrowdController { String taskId = lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); return new Result().ok(taskId); } catch (Exception e) { - // 3.出错的话,删除文件 + // 3.出错的话,删除文件。不能在finally中删除,因为正常执行的话,是在异步线程中执行导入,这里删除了,那子线程就获取不到文件了,所以子线程中有单独的删除逻辑 FileUtils.deleteFileIfExists(fileSavePath); throw e; } @@ -140,68 +139,78 @@ public class LingShanSpecialCrowdController { } } + // /** + // * @description: 安置帮教新增 + // * @param azbjData: + // * @return + // * @author: WangXianZhang + // * @date: 2023/4/20 2:50 PM + // */ + // @PostMapping("anzhibangjiao/save") + // public Result saveSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { + // ValidatorUtils.validateEntity(azbjData); + // + // lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao"); + // return new Result(); + // } + // + // @PostMapping("jiedurenyuan/save") + // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { + // ValidatorUtils.validateEntity(jdryData); + // + // lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "jiedurenyuan"); + // return new Result(); + // } + // + // @PostMapping("jingzhanhuanzhe/save") + // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { + // ValidatorUtils.validateEntity(jzhzData); + // + // lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe"); + // return new Result(); + // } + // + // @PostMapping("shequjiaozheng/save") + // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { + // ValidatorUtils.validateEntity(sqjzData); + // + // lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng"); + // return new Result(); + // } + // + // @PostMapping("xinfangrenyuan/save") + // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { + // ValidatorUtils.validateEntity(xfryData); + // + // lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan"); + // return new Result(); + // } + /** - * @description: 安置帮教新增 - * @param azbjData: + * @description: 保存 + * @param input: * @return * @author: WangXianZhang - * @date: 2023/4/20 2:50 PM + * @date: 2023/4/23 10:58 AM */ - @PostMapping("anzhibangjiao/save") - public Result saveSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { - ValidatorUtils.validateEntity(azbjData); - - lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao"); - return new Result(); - } - - @PostMapping("xidurenyuan/save") - public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { - ValidatorUtils.validateEntity(jdryData); - - lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "xidurenyuan"); - return new Result(); - } - - @PostMapping("jingzhanhuanzhe/save") - public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { - ValidatorUtils.validateEntity(jzhzData); - - lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe"); - return new Result(); - } - - @PostMapping("shequjiaozheng/save") - public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { - ValidatorUtils.validateEntity(sqjzData); - - lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng"); - return new Result(); - } - - @PostMapping("xinfangrenyuan/save") - public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { - ValidatorUtils.validateEntity(xfryData); - - lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan"); + @PostMapping("save") + public Result saveSpecialCrowd(@RequestBody LingShanSpecialTypeSaveFormDTO input) { + ValidatorUtils.validateEntity(input); + lingShanSpecialCrowdService.saveSpecialCrowd(input); return new Result(); } /** * @description: 特殊人群详情 - * @param personId: - * @param specialType: * @return * @author: WangXianZhang * @date: 2023/4/20 3:44 PM */ @GetMapping("getPersonSpecialTypeDetail") - public Result getPersonSpecialTypeDetail(@RequestParam("idCard") String idCard, - @RequestParam("specialType") String specialType, - @RequestParam("specialDetailId") String specialDetailId) { + public Result getPersonSpecialTypeDetail(@RequestParam("resiId") String resiId) { - LingShanSpecialCrowdDetailBaseExcelData r = lingShanSpecialCrowdService.getPersonSpecialTypeDetail(idCard, specialType, specialDetailId); - return new Result().ok(r); + LingShanSpecialTypeSaveResultDTO r = lingShanSpecialCrowdService.getPersonSpecialTypeDetail(resiId); + return new Result().ok(r); } /** @@ -243,13 +252,13 @@ public class LingShanSpecialCrowdController { @PostMapping("deleteByType") public Result deleteByType(@RequestBody Map params) { String specialType = params.get("specialType"); - String idCard = params.get("idCard"); + String resiId = params.get("resiId"); - if (StringUtils.isAnyBlank(specialType, idCard)) { + if (StringUtils.isAnyBlank(specialType, resiId)) { throw new ValidateException("特殊人群类型或身份证不能为空"); } - lingShanSpecialCrowdService.deleteByType(specialType, idCard); + lingShanSpecialCrowdService.deleteByType(specialType, resiId); return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java deleted file mode 100644 index 46d27f818c..0000000000 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonDao.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.epmet.dao; - -import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity; -import com.epmet.entity.LingshanSpecialCrowdPersonEntity; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 灵山-特殊人群-人员基础信息 - * - * @author generator generator@elink-cn.com - * @since v1.0.0 2023-04-18 - */ -@Mapper -public interface LingshanSpecialCrowdPersonDao extends BaseDao { - - void saveOrUpdateManually(@Param("list") List list); - - void deletePhysical(@Param("idCard") String idCard); -} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java index 28ff3ca03c..56d7132edf 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java @@ -27,5 +27,5 @@ public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao persons = new ArrayList<>(); + // 为什么去掉了?因为需求改成了:直接用type根居民基础信息关联 + // private List persons = new ArrayList<>(); private List personTypes = new ArrayList<>(); protected LingShanSpecialCrowdService lingShanSpecialCrowdService; @@ -262,9 +255,9 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener persons, List personTypes) { - lingShanSpecialCrowdService.savePersonAndTypes(persons, personTypes); + private void savePersonAndTypes(List personTypes) { + lingShanSpecialCrowdService.savePersonAndTypes(personTypes); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java index eeee7f44df..7cf217c635 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -1,6 +1,8 @@ package com.epmet.service; import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveFormDTO; +import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveResultDTO; import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; import com.epmet.entity.*; import com.epmet.excel.data.LingShanSpecialCrowdDetailAzbjExcelData; @@ -33,7 +35,7 @@ public interface LingShanSpecialCrowdService { */ String validate(LingShanSpecialCrowdDetailBaseExcelData row); - void savePersonAndTypes(List persons, List personTypes); + void savePersonAndTypes(List personTypes); /** * @description: 安置帮教-导入 @@ -47,28 +49,27 @@ public interface LingShanSpecialCrowdService { void saveBatch(List entities, LingshanSpecialCrowdDetailSqjzEntity e); void saveBatch(List entities, LingshanSpecialCrowdDetailXfryEntity e); - /** - * @description: 新增-安置帮教 - * @param azbjData: - * @return - * @author: WangXianZhang - * @date: 2023/4/20 2:51 PM - */ - void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData azbjData, String specialType); + // /** + // * @description: 新增-安置帮教 + // * @param azbjData: + // * @return + // * @author: WangXianZhang + // * @date: 2023/4/20 2:51 PM + // */ + // void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData azbjData, String specialType); /** * @description: 特殊人群详情 * @param idCard: - * @param specialType: * @return * @author: WangXianZhang * @date: 2023/4/20 3:45 PM */ - LingShanSpecialCrowdDetailBaseExcelData getPersonSpecialTypeDetail(String idCard, String specialType, String specialDetailId); + LingShanSpecialTypeSaveResultDTO getPersonSpecialTypeDetail(String resiId); /** * @description: 列表查询 - * @param orgId: + * @param orgId: * @param orgType: * @param specialType: * @param name: @@ -81,5 +82,14 @@ public interface LingShanSpecialCrowdService { PageData listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile, String idCard, Integer pageNo, Integer pageSize); - void deleteByType(String specialType, String idCard); + void deleteByType(String specialType, String resiId); + + /** + * @description: 保存或修改 + * @param input: + * @return + * @author: WangXianZhang + * @date: 2023/4/23 11:06 AM + */ + void saveSpecialCrowd(LingShanSpecialTypeSaveFormDTO input); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index e0c484a97e..a8874bf67f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -27,6 +27,8 @@ import com.epmet.dto.IcBuildingDTO; import com.epmet.dto.IcBuildingUnitDTO; import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.IcResiUserDTO; +import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveFormDTO; +import com.epmet.dto.form.lingshan.LingShanSpecialTypeSaveResultDTO; import com.epmet.dto.result.HouseAgencyInfoResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; @@ -59,10 +61,7 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicReference; @@ -74,9 +73,6 @@ import java.util.concurrent.atomic.AtomicReference; @Service public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService, ResultDataResolver { - @Autowired - private LingshanSpecialCrowdPersonDao specialCrowdPersonDao; - @Autowired private LingshanSpecialCrowdPersonTypeDao specialCrowdPersonTypeDao; @@ -251,22 +247,27 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ return "居民信息不存在,请先维护居民基础信息。"; } if (!resiEntity.getName().equals(name)) { - return String.format("姓名信息与居民基础信息不一致。(在居民库中根据身份证号找到的居民姓名为:%s)", name); + return String.format("姓名信息与居民基础信息不一致。(在居民库中根据身份证号找到的居民姓名为:%s)", resiEntity.getName()); } + // 设置居民id + row.setResiId(resiEntity.getId()); + return null; } @Override - public void savePersonAndTypes(List persons, List personTypes) { - List> personParts = ListUtils.partition(persons, 50); + public void savePersonAndTypes(List personTypes) { + // List> personParts = ListUtils.partition(persons, 50); List> personTypeParts = ListUtils.partition(personTypes, 50); - for (List p : personParts) { - specialCrowdPersonDao.saveOrUpdateManually(p); - } + // for (List p : personParts) { + // specialCrowdPersonDao.saveOrUpdateManually(p); + // } for (List p : personTypeParts) { - specialCrowdPersonTypeDao.saveOrUpdateManually(p); + if (CollectionUtils.isNotEmpty(p)) { + specialCrowdPersonTypeDao.saveOrUpdateManually(p); + } } } @@ -274,7 +275,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ public void saveBatch(List entities, LingshanSpecialCrowdDetailAzbjEntity e) { List> partition = ListUtils.partition(entities, 50); for (List l : partition) { - specialCrowdDetailAzbjDao.saveBatchManually(l); + if (CollectionUtils.isNotEmpty(l)) { + specialCrowdDetailAzbjDao.saveBatchManually(l); + } } } @@ -282,7 +285,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ public void saveBatch(List entities, LingshanSpecialCrowdDetailJdryEntity e) { List> partition = ListUtils.partition(entities, 50); for (List l : partition) { - specialCrowdDetailJdryDao.saveBatchManually(l); + if (CollectionUtils.isNotEmpty(l)) { + specialCrowdDetailJdryDao.saveBatchManually(l); + } } } @@ -290,7 +295,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ public void saveBatch(List entities, LingshanSpecialCrowdDetailJzhzEntity e) { List> partition = ListUtils.partition(entities, 50); for (List l : partition) { - specialCrowdDetailJzhzDao.saveBatchManually(l); + if (CollectionUtils.isNotEmpty(l)) { + specialCrowdDetailJzhzDao.saveBatchManually(l); + } } } @@ -298,7 +305,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ public void saveBatch(List entities, LingshanSpecialCrowdDetailSqjzEntity e) { List> partition = ListUtils.partition(entities, 50); for (List l : partition) { - specialCrowdDetailSqjzDao.saveBatchManually(l); + if (CollectionUtils.isNotEmpty(l)) { + specialCrowdDetailSqjzDao.saveBatchManually(l); + } } } @@ -306,14 +315,76 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ public void saveBatch(List entities, LingshanSpecialCrowdDetailXfryEntity e) { List> partition = ListUtils.partition(entities, 50); for (List l : partition) { - specialCrowdDetailXfryDao.saveBatchManually(l); + if (CollectionUtils.isNotEmpty(l)) { + specialCrowdDetailXfryDao.saveBatchManually(l); + } } } + // @Override + // public void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData specialData, String specialType) { + // // 检查 + // String validateRst = validate(specialData); + // if (StringUtils.isNotBlank(validateRst)) { + // throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst); + // } + // + // String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + // String staffId = EpmetRequestHolder.getLoginUserId(); + // CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId); + // String orgIdPath = PidUtils.convertPid2OrgIdPath(staffInfo.getAgencyId(), staffInfo.getAgencyPIds()); + // + // Date now = new Date(); + // + // // 保存人员和类型信息 + // LingshanSpecialCrowdPersonEntity person = new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getName(), specialData.getIdCard(), + // "0", 0, now, staffId, now, staffId); + // // + // LingshanSpecialCrowdPersonTypeEntity personType = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getResiId(), specialData.getIdCard(), specialType, + // "0", 0, now, staffId, now, staffId); + // + // savePersonAndTypes(Arrays.asList(person), Arrays.asList(personType)); + // + // // Class clazz; + // // 这下面的代码其实类名写错了,但是这个方法也不用了,不改了就 + // switch (specialType) { + // case "anzhibangjiao": + // LingshanSpecialCrowdDetailAzbjEntity e1 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + // setCommonFields(e1, customerId, orgIdPath, now, staffId); + // saveBatch(Arrays.asList(e1), e1); + // break; + // case "xinfangrenyuan": + // LingshanSpecialCrowdDetailAzbjEntity e2 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + // setCommonFields(e2, customerId, orgIdPath, now, staffId); + // saveBatch(Arrays.asList(e2), e2); + // break; + // case "jiedurenyuan": + // LingshanSpecialCrowdDetailAzbjEntity e3 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + // setCommonFields(e3, customerId, orgIdPath, now, staffId); + // saveBatch(Arrays.asList(e3), e3); + // break; + // case "shequjiaozheng": + // LingshanSpecialCrowdDetailAzbjEntity e4 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + // setCommonFields(e4, customerId, orgIdPath, now, staffId); + // saveBatch(Arrays.asList(e4), e4); + // break; + // case "jingzhanghuanzhe": + // LingshanSpecialCrowdDetailAzbjEntity e5 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); + // setCommonFields(e5, customerId, orgIdPath, now, staffId); + // saveBatch(Arrays.asList(e5), e5); + // break; + // } + // + // } + + @Transactional(rollbackFor = Exception.class) @Override - public void createSpecialCrowd(LingShanSpecialCrowdDetailBaseExcelData specialData, String specialType) { + public void saveSpecialCrowd(LingShanSpecialTypeSaveFormDTO input) { + LingShanSpecialCrowdDetailBaseExcelData vt = new LingShanSpecialCrowdDetailBaseExcelData(); + vt.setName(input.getName()); + vt.setIdCard(input.getIdCard()); // 检查 - String validateRst = validate(specialData); + String validateRst = validate(vt); if (StringUtils.isNotBlank(validateRst)) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, validateRst); } @@ -325,45 +396,66 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ Date now = new Date(); - // 保存人员和类型信息 - LingshanSpecialCrowdPersonEntity person = new LingshanSpecialCrowdPersonEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getName(), specialData.getIdCard(), - "0", 0, now, staffId, now, staffId); - // - LingshanSpecialCrowdPersonTypeEntity personType = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, specialData.getIdCard(), specialType, - "0", 0, now, staffId, now, staffId); - - savePersonAndTypes(Arrays.asList(person), Arrays.asList(personType)); - - // Class clazz; - - switch (specialType) { - case "anzhibangjiao": - LingshanSpecialCrowdDetailAzbjEntity e1 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); - setCommonFields(e1, customerId, orgIdPath, now, staffId); - saveBatch(Arrays.asList(e1), e1); - break; - case "xinfangrenyuan": - LingshanSpecialCrowdDetailAzbjEntity e2 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); - setCommonFields(e2, customerId, orgIdPath, now, staffId); - saveBatch(Arrays.asList(e2), e2); - break; - case "xidurenyuan": - LingshanSpecialCrowdDetailAzbjEntity e3 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); - setCommonFields(e3, customerId, orgIdPath, now, staffId); - saveBatch(Arrays.asList(e3), e3); - break; - case "shequjiaozheng": - LingshanSpecialCrowdDetailAzbjEntity e4 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); - setCommonFields(e4, customerId, orgIdPath, now, staffId); - saveBatch(Arrays.asList(e4), e4); - break; - case "jingzhanghuanzhe": - LingshanSpecialCrowdDetailAzbjEntity e5 = ConvertUtils.sourceToTarget(specialData, LingshanSpecialCrowdDetailAzbjEntity.class); - setCommonFields(e5, customerId, orgIdPath, now, staffId); - saveBatch(Arrays.asList(e5), e5); - break; + ArrayList types2Save = new ArrayList<>(); + + // 保存人群详情 + if (input.getSpecialCrowdDetails().getAnzhibangjiao() != null) { + LingshanSpecialCrowdDetailAzbjEntity azbj = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getAnzhibangjiao(), LingshanSpecialCrowdDetailAzbjEntity.class); + setCommonFields(azbj, customerId, orgIdPath, now, staffId); + azbj.setIdCard(input.getIdCard()); + saveBatch(Arrays.asList(azbj), azbj); + + LingshanSpecialCrowdPersonTypeEntity azbjE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.AZBJ.getType(), + "0", 0, now, staffId, now, staffId); + types2Save.add(azbjE); + } + + if (input.getSpecialCrowdDetails().getJiedurenyuan() != null) { + LingshanSpecialCrowdDetailJdryEntity jdry = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getJiedurenyuan(), LingshanSpecialCrowdDetailJdryEntity.class); + setCommonFields(jdry, customerId, orgIdPath, now, staffId); + jdry.setIdCard(input.getIdCard()); + saveBatch(Arrays.asList(jdry), jdry); + + LingshanSpecialCrowdPersonTypeEntity JdryE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JDRY.getType(), + "0", 0, now, staffId, now, staffId); + types2Save.add(JdryE); + } + + if (input.getSpecialCrowdDetails().getJingzhanghuanzhe() != null) { + LingshanSpecialCrowdDetailJzhzEntity jzhz = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getJingzhanghuanzhe(), LingshanSpecialCrowdDetailJzhzEntity.class); + setCommonFields(jzhz, customerId, orgIdPath, now, staffId); + jzhz.setIdCard(input.getIdCard()); + saveBatch(Arrays.asList(jzhz), jzhz); + + LingshanSpecialCrowdPersonTypeEntity jzhzE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JZHZ.getType(), + "0", 0, now, staffId, now, staffId); + types2Save.add(jzhzE); + } + + if (input.getSpecialCrowdDetails().getXinfangrenyuan() != null) { + LingshanSpecialCrowdDetailXfryEntity xfry = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getXinfangrenyuan(), LingshanSpecialCrowdDetailXfryEntity.class); + setCommonFields(xfry, customerId, orgIdPath, now, staffId); + xfry.setIdCard(input.getIdCard()); + saveBatch(Arrays.asList(xfry), xfry); + + LingshanSpecialCrowdPersonTypeEntity xfryE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.XFRY.getType(), + "0", 0, now, staffId, now, staffId); + types2Save.add(xfryE); } + if (input.getSpecialCrowdDetails().getShequjiaozheng() != null) { + LingshanSpecialCrowdDetailSqjzEntity sqjz = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getShequjiaozheng(), LingshanSpecialCrowdDetailSqjzEntity.class); + setCommonFields(sqjz, customerId, orgIdPath, now, staffId); + sqjz.setIdCard(input.getIdCard()); + saveBatch(Arrays.asList(sqjz), sqjz); + + LingshanSpecialCrowdPersonTypeEntity sqjzE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.SQJZ.getType(), + "0", 0, now, staffId, now, staffId); + types2Save.add(sqjzE); + } + + // 保存人员类型 + savePersonAndTypes(types2Save); } void setCommonFields(LingshanSpecialCrowdDetailBaseEntity e, String customerId, String orgIdPath, Date now, String staffId) { @@ -379,51 +471,53 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ } @Override - public LingShanSpecialCrowdDetailBaseExcelData getPersonSpecialTypeDetail(String idCard, String specialType, String specialDetailId) { - // 查询人员基础信息 - LambdaQueryWrapper personQ = new LambdaQueryWrapper<>(); - personQ.eq(LingshanSpecialCrowdPersonEntity::getIdCard, idCard); - LingshanSpecialCrowdPersonEntity person = specialCrowdPersonDao.selectOne(personQ); + public LingShanSpecialTypeSaveResultDTO getPersonSpecialTypeDetail(String resiId) { + // 1.校验人员基础信息 + IcResiUserEntity person = icResiUserDao.selectById(resiId); if (person == null) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员信息"); } - // 查询人员类别详情 - LingShanSpecialCrowdDetailBaseExcelData d; - switch (specialType) { - case "anzhibangjiao": - LingshanSpecialCrowdDetailAzbjEntity e1 = specialCrowdDetailAzbjDao.selectById(specialDetailId); - d = ConvertUtils.sourceToTarget(e1, LingShanSpecialCrowdDetailAzbjExcelData.class); - break; - case "xinfangrenyuan": - LingshanSpecialCrowdDetailXfryEntity e2 = specialCrowdDetailXfryDao.selectById(specialDetailId); - d = ConvertUtils.sourceToTarget(e2, LingshanSpecialCrowdDetailXfryExcelData.class); - break; - case "xidurenyuan": - LingshanSpecialCrowdDetailJdryEntity e3 = specialCrowdDetailJdryDao.selectById(specialDetailId); - d = ConvertUtils.sourceToTarget(e3, LingshanSpecialCrowdDetailJdryExcelData.class); - break; - case "shequjiaozheng": - LingshanSpecialCrowdDetailSqjzEntity e4 = specialCrowdDetailSqjzDao.selectById(specialDetailId); - d = ConvertUtils.sourceToTarget(e4, LingshanSpecialCrowdDetailSqjzExcelData.class); - break; - case "jingzhanghuanzhe": - LingshanSpecialCrowdDetailJzhzEntity e5 = specialCrowdDetailJzhzDao.selectById(specialDetailId); - d = ConvertUtils.sourceToTarget(e5, LingshanSpecialCrowdDetailJzhzExcelData.class); - break; - default: - d = new LingShanSpecialCrowdDetailBaseExcelData(); - } + LingShanSpecialTypeSaveResultDTO d = new LingShanSpecialTypeSaveResultDTO(); - if (d == null) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员的类别详细信息"); - } + // 2.查询人员类别详情 + LambdaQueryWrapper azbjQ = new LambdaQueryWrapper<>(); + azbjQ.eq(LingshanSpecialCrowdDetailAzbjEntity::getIdCard, person.getIdCard()); + LingshanSpecialCrowdDetailAzbjEntity e1 = specialCrowdDetailAzbjDao.selectOne(azbjQ); + LingShanSpecialTypeSaveResultDTO.SpecialCrowdAzbj specialCrowdAzbj = ConvertUtils.sourceToTarget(e1, LingShanSpecialTypeSaveResultDTO.SpecialCrowdAzbj.class); + + LambdaQueryWrapper xfryQ = new LambdaQueryWrapper<>(); + xfryQ.eq(LingshanSpecialCrowdDetailXfryEntity::getIdCard, person.getIdCard()); + LingshanSpecialCrowdDetailXfryEntity e2 = specialCrowdDetailXfryDao.selectOne(xfryQ); + LingShanSpecialTypeSaveResultDTO.SpecialCrowdXfry specialCrowdXfry = ConvertUtils.sourceToTarget(e2, LingShanSpecialTypeSaveResultDTO.SpecialCrowdXfry.class); + + LambdaQueryWrapper jdryQ = new LambdaQueryWrapper<>(); + jdryQ.eq(LingshanSpecialCrowdDetailJdryEntity::getIdCard, person.getIdCard()); + LingshanSpecialCrowdDetailJdryEntity e3 = specialCrowdDetailJdryDao.selectOne(jdryQ); + LingShanSpecialTypeSaveResultDTO.SpecialCrowdJdry specialCrowdJdry = ConvertUtils.sourceToTarget(e3, LingShanSpecialTypeSaveResultDTO.SpecialCrowdJdry.class); + + LambdaQueryWrapper sqjzQ = new LambdaQueryWrapper<>(); + sqjzQ.eq(LingshanSpecialCrowdDetailSqjzEntity::getIdCard, person.getIdCard()); + LingshanSpecialCrowdDetailSqjzEntity e4 = specialCrowdDetailSqjzDao.selectOne(sqjzQ); + LingShanSpecialTypeSaveResultDTO.SpecialCrowdSqjz specialCrowdSqjz = ConvertUtils.sourceToTarget(e4, LingShanSpecialTypeSaveResultDTO.SpecialCrowdSqjz.class); + + LambdaQueryWrapper jzhzQ = new LambdaQueryWrapper<>(); + jzhzQ.eq(LingshanSpecialCrowdDetailJzhzEntity::getIdCard, person.getIdCard()); + LingshanSpecialCrowdDetailJzhzEntity e5 = specialCrowdDetailJzhzDao.selectOne(jzhzQ); + LingShanSpecialTypeSaveResultDTO.SpecialCrowdJzhz specialCrowdJzhz = ConvertUtils.sourceToTarget(e5, LingShanSpecialTypeSaveResultDTO.SpecialCrowdJzhz.class); + + d.getSpecialCrowdDetails().setAnzhibangjiao(specialCrowdAzbj); + d.getSpecialCrowdDetails().setXinfangrenyuan(specialCrowdXfry); + d.getSpecialCrowdDetails().setJiedurenyuan(specialCrowdJdry); + d.getSpecialCrowdDetails().setShequjiaozheng(specialCrowdSqjz); + d.getSpecialCrowdDetails().setJingzhanghuanzhe(specialCrowdJzhz); d.setName(person.getName()); + d.setIdCard(person.getIdCard()); - // 查询居民信息 - IcResiUserEntity resiBaseEntity = icResiUserDao.selectResiUserEntityByIdCard(idCard, EpmetRequestHolder.getLoginUserCustomerId()); + // 3.查询和补充居民信息 + IcResiUserEntity resiBaseEntity = icResiUserDao.selectResiUserEntityByIdCard(person.getIdCard(), EpmetRequestHolder.getLoginUserCustomerId()); if (resiBaseEntity == null) { throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, "未找到该人员信息"); } @@ -497,41 +591,41 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(resi.getGridId()); i.setOrgNamePath(gridInfo.getAgencyName().concat("-").concat(gridInfo.getGridName())); i.setAddress(getAddressOfResi(resi.getGridId(), resi.getHomeId())); - i.setSpecialTypeDisplay(LingShanSpecialCrowdTypeEnums.getByType(i.getSpecialType()).getName()); + + // 处理类型展示中文,将a,b,c =》 啊,喔,额 + List typesDisplay = new ArrayList<>(); + String specialTypesStr = i.getSpecialTypesStr(); + if (StringUtils.isNotBlank(specialTypesStr)) { + String[] types = specialTypesStr.split(","); + for (String type : types) { + typesDisplay.add(LingShanSpecialCrowdTypeEnums.getByType(type).getName()); + } + } + i.setSpecialTypeDisplay(String.join(",", typesDisplay)); }); return new PageData<>(l, new PageInfo<>(l).getTotal()); } @Transactional @Override - public void deleteByType(String specialType, String idCard) { + public void deleteByType(String specialType, String resiId) { + LambdaQueryWrapper q = new LambdaQueryWrapper<>(); + q.eq(LingshanSpecialCrowdPersonTypeEntity::getSpecialType, specialType); + q.eq(LingshanSpecialCrowdPersonTypeEntity::getResiId, resiId); + // 先删除type - specialCrowdPersonTypeDao.deletePhysical(specialType, idCard); + specialCrowdPersonTypeDao.deletePhysical(specialType, resiId); - // 再删除detail - switch (specialType) { - case "anzhibangjiao": - specialCrowdDetailAzbjDao.deletePhysical(idCard); - break; - case "xinfangrenyuan": - specialCrowdDetailXfryDao.deletePhysical(idCard); - break; - case "xidurenyuan": - specialCrowdDetailJdryDao.deletePhysical(idCard); - break; - case "shequjiaozheng": - specialCrowdDetailSqjzDao.deletePhysical(idCard); - break; - case "jingzhanghuanzhe": - specialCrowdDetailJzhzDao.deletePhysical(idCard); - break; + LingshanSpecialCrowdPersonTypeEntity personType = specialCrowdPersonTypeDao.selectOne(q); + if (personType == null) { + return; } - LambdaQueryWrapper q = new LambdaQueryWrapper<>(); - q.eq(LingshanSpecialCrowdPersonTypeEntity::getIdCard, idCard); - if (specialCrowdPersonTypeDao.selectCount(q) == 0) { - // 没有type了,那就吧person也删了 - specialCrowdPersonDao.deletePhysical(idCard); - } + // 再删除detail + specialCrowdDetailAzbjDao.deletePhysical(personType.getIdCard()); + specialCrowdDetailXfryDao.deletePhysical(personType.getIdCard()); + specialCrowdDetailJdryDao.deletePhysical(personType.getIdCard()); + specialCrowdDetailSqjzDao.deletePhysical(personType.getIdCard()); + specialCrowdDetailJzhzDao.deletePhysical(personType.getIdCard()); } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml deleted file mode 100644 index de34f7d6d7..0000000000 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonDao.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - insert into lingshan_special_crowd_person ( ID, CUSTOMER_ID, ORG_ID_PATH, `NAME`, ID_CARD, - DEL_FLAG, REVISION, CREATED_BY , CREATED_TIME, UPDATED_BY, UPDATED_TIME) - values - - ( #{item.id}, - #{item.customerId}, - #{item.orgIdPath}, - #{item.name}, - #{item.idCard}, - #{item.delFlag}, - #{item.revision}, - #{item.createdBy}, - #{item.createdTime}, - #{item.updatedBy}, - #{item.updatedTime} - ) - - on duplicate key update NAME=values(name) - , UPDATED_BY=values(UPDATED_BY) - , UPDATED_TIME=values(UPDATED_TIME) - - - delete from lingshan_special_crowd_person where ID_CARD = #{idCard} - - - - \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml index 7b41e26356..9c2eeca66b 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml @@ -18,11 +18,11 @@ - insert into lingshan_special_crowd_person_type ( ID, CUSTOMER_ID, ORG_ID_PATH, ID_CARD, SPECIAL_TYPE, + insert into lingshan_special_crowd_person_type ( ID, CUSTOMER_ID, ORG_ID_PATH, RESI_ID, ID_CARD, SPECIAL_TYPE, DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) values - (#{type.id}, #{type.customerId}, #{type.orgIdPath}, #{type.idCard}, #{type.specialType}, + (#{type.id}, #{type.customerId}, #{type.orgIdPath}, #{type.resiId}, #{type.idCard}, #{type.specialType}, #{type.delFlag}, #{type.revision}, #{type.createdBy}, #{type.createdTime}, #{type.updatedBy}, #{type.updatedTime}) on duplicate key update @@ -32,23 +32,23 @@ , UPDATED_TIME = values(UPDATED_TIME) - delete from lingshan_special_crowd_person_type where ID_CARD = #{idCard} and SPECIAL_TYPE = #{specialType} + delete from lingshan_special_crowd_person_type where RESI_ID = #{resiId} and SPECIAL_TYPE = #{specialType} From f550f1fcb9134e5cbb5c9253fe4bb3dfe0bd5502 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 16:09:04 +0800 Subject: [PATCH 19/51] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=B2=A1=E6=94=B9?= =?UTF-8?q?=E5=AE=8C=EF=BC=8C=E9=9C=80=E6=B1=82=E5=8F=98=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DangerousChemicalsImportListener.java | 92 ++++++++----------- .../impl/IcDangerousChemicalsServiceImpl.java | 29 ++++-- 2 files changed, 62 insertions(+), 59 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java index 0511f8f6fc..015f932c46 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java @@ -2,32 +2,20 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.enums.CoveragePlaceTypeEnum; -import com.epmet.commons.tools.enums.DictTypeEnum; -import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ValidateException; -import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dao.IcDangerousChemicalsDao; -import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.entity.IcDangerousChemicalsEntity; -import com.epmet.excel.IcCityManagementExcel; -import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.service.CoverageService; +import com.epmet.service.CustomerGridService; import com.epmet.service.IcDangerousChemicalsService; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -42,24 +30,48 @@ import java.util.stream.Collectors; public class DangerousChemicalsImportListener extends AnalysisEventListener { private IcDangerousChemicalsService icDangerousChemicalsService; - private EpmetAdminOpenFeignClient adminOpenFeignClient; private CoverageService coverageService; - private AgencyInfoCache agencyInfo; - private IcDangerousChemicalsDao icDangerousChemicalsDao; + private CustomerGridService customerGridService; private String currentUserId; - + private String customerId; + private String staffAgencyId; + private String staffAgencyPath; private List errorRows = new ArrayList<>(); private List otherRows = new ArrayList<>(); private List insertList = new ArrayList<>(); private Map existMap = null; + /** + * 危化品种类 + */ + private Map dangerTypeMap; + /** + * 企业类别 + */ + private Map categoryDictMap; + /** + * key:网格id + * value:网格名称 + */ + private Map gridMap; - public DangerousChemicalsImportListener(String currentUserId, AgencyInfoCache agencyInfo, IcDangerousChemicalsService icDangerousChemicalsService, CoverageService coverageService, EpmetAdminOpenFeignClient adminOpenFeignClient, IcDangerousChemicalsDao icDangerousChemicalsDao){ + public DangerousChemicalsImportListener(String currentUserId, + String customerId, + String staffAgencyId, + String staffAgencyPath, + IcDangerousChemicalsService icDangerousChemicalsService, + CoverageService coverageService, + CustomerGridService customerGridService, + Map dangerTypeMap, + Map categoryDictMap){ this.currentUserId = currentUserId; - this.agencyInfo = agencyInfo; + this.customerId=customerId; + this.staffAgencyId=staffAgencyId; + this.staffAgencyPath=staffAgencyPath; this.icDangerousChemicalsService = icDangerousChemicalsService; this.coverageService = coverageService; - this.adminOpenFeignClient = adminOpenFeignClient; - this.icDangerousChemicalsDao = icDangerousChemicalsDao; + this.customerGridService=customerGridService; + this.dangerTypeMap=dangerTypeMap; + this.categoryDictMap=categoryDictMap; } @Override @@ -68,18 +80,13 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener getExistMap(String agencyId){ - LambdaQueryWrapper tWrapper = new LambdaQueryWrapper<>(); - tWrapper.eq(IcDangerousChemicalsEntity::getAgencyId, agencyId); - List entityList = icDangerousChemicalsDao.selectList(tWrapper); - Map existMap = new HashMap<>(16); - if (CollectionUtils.isNotEmpty(entityList)){ - existMap = entityList.stream().collect(Collectors.toMap(IcDangerousChemicalsEntity::getName,IcDangerousChemicalsEntity::getId,(v1,v2) -> v1)); - } - return existMap; - } /** * Desc: 数据库插入 */ private void execPersist() { try { if (CollectionUtils.isNotEmpty(insertList)) { - //危化品种类字典 - Result> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.IC_DANGER_TYPE.getCode()); - if (!statusRes.success()){ - throw new EpmetException("获取IC_DANGER_TYPE字典表失败"); - } - Map statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>(16); - //企业类别字典数据 - List dictList = coverageService.dictMap(agencyInfo.getCustomerId(), CoveragePlaceTypeEnum.DANGEROUS_CHEMICALS.getCode()); - Map dictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getValue, IcCoverageCategoryDictListResultDTO::getLabel)); insertList.forEach(i -> { - statusMap.forEach((k,v) -> { + dangerTypeMap.forEach((k,v) -> { if (i.getDangerTypeName().equals(v)){ i.setDangerType(k); } }); - dictMap.forEach((k,v) -> { + categoryDictMap.forEach((k,v) -> { if (i.getCategoryName().equals(v)){ i.setCategory(k); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index e8fa1a32ed..9ec9cf922f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -8,15 +8,14 @@ import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.CoveragePlaceTypeEnum; import com.epmet.commons.tools.enums.DictTypeEnum; import com.epmet.commons.tools.enums.OrgTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; -import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; import com.epmet.constants.ImportTaskConstants; @@ -86,7 +85,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl list(IcDangerousChemicalsListFormDTO formDTO) { @@ -237,15 +236,31 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.IC_DANGER_TYPE.getCode()); + if (!statusRes.success() || MapUtils.isNotEmpty(statusRes.getData())) { + throw new EpmetException("获取IC_DANGER_TYPE字典表失败"); } - DangerousChemicalsImportListener listener = new DangerousChemicalsImportListener(tokenDto.getUserId(), agencyInfo,this,coverageService,adminOpenFeignClient,icDangerousChemicalsDao); + Map dangerTypeMap = statusRes.getData(); + //企业类别字典数据 + List dictList = coverageService.dictMap(tokenDto.getCustomerId(), CoveragePlaceTypeEnum.DANGEROUS_CHEMICALS.getCode()); + Map categoryDictMap = dictList.stream().collect(Collectors.toMap(IcCoverageCategoryDictListResultDTO::getValue, IcCoverageCategoryDictListResultDTO::getLabel)); + + DangerousChemicalsImportListener listener = new DangerousChemicalsImportListener(tokenDto.getUserId(), tokenDto.getCustomerId(), + staffInfo.getAgencyId(),staffAgencyPath, + this, + coverageService, + customerGridService, + dangerTypeMap, + categoryDictMap); + EasyExcel.read(filePath.toFile(), DangerousChemicalsModel.class, listener).headRowNumber(1).sheet(0).doRead(); String errorDesFileUrl = null; List errorRows = listener.getErrorRows(); From ff79f02ef8b98243c5f9ffe3200af5341d00125a Mon Sep 17 00:00:00 2001 From: wxz Date: Sun, 23 Apr 2023 16:27:28 +0800 Subject: [PATCH 20/51] =?UTF-8?q?1.fix=EF=BC=9A=E7=89=B9=E6=AE=8A=E4=BA=BA?= =?UTF-8?q?=E7=BE=A4=EF=BC=8C=E8=B0=83=E6=95=B4=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/enums/ZhzlResiCategoryEnum.java | 2 +- .../LingShanSpecialCrowdController.java | 5 ++-- .../LingshanSpecialCrowdPersonTypeDao.java | 2 +- .../service/LingShanSpecialCrowdService.java | 2 +- .../impl/LingShanSpecialCrowdServiceImpl.java | 23 +++++++------------ .../LingshanSpecialCrowdPersonTypeDao.xml | 2 +- 6 files changed, 14 insertions(+), 22 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java index 66def5e16c..90709fe179 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/ZhzlResiCategoryEnum.java @@ -20,7 +20,7 @@ public enum ZhzlResiCategoryEnum { buliangqingshaonian("buliangqingshaonian", "不良青少年", "list_equal", "ic_special", "SPECIAL_RQLB", "buliangqingshaonian", 4), shequjiaozheng("shequjiaozheng", "社区矫正", "list_equal", "ic_special", "SPECIAL_RQLB", "shequjiaozheng", 5), zhaoshizhaohuojingshenbing("zhaoshizhaohuojingshenbing", "肇事肇祸精神病", "list_equal", "ic_special", "SPECIAL_RQLB", "zhaoshizhaohuojingshenbing", 6), - xidurenyuan("jiedurenyuan", "戒毒人员", "list_equal", "ic_special", "SPECIAL_RQLB", "xidurenyuan", 7); + jiedurenyuan("jiedurenyuan", "戒毒人员", "list_equal", "ic_special", "SPECIAL_RQLB", "xidurenyuan", 7); private String code; private String name; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index ed46a4ae89..97eb46b233 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -251,14 +251,13 @@ public class LingShanSpecialCrowdController { */ @PostMapping("deleteByType") public Result deleteByType(@RequestBody Map params) { - String specialType = params.get("specialType"); String resiId = params.get("resiId"); - if (StringUtils.isAnyBlank(specialType, resiId)) { + if (StringUtils.isAnyBlank(resiId, resiId)) { throw new ValidateException("特殊人群类型或身份证不能为空"); } - lingShanSpecialCrowdService.deleteByType(specialType, resiId); + lingShanSpecialCrowdService.deleteByType(resiId); return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java index 56d7132edf..8be11fb77d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java @@ -27,5 +27,5 @@ public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile, String idCard, Integer pageNo, Integer pageSize); - void deleteByType(String specialType, String resiId); + void deleteByType(String resiId); /** * @description: 保存或修改 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index a8874bf67f..b859446a93 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -608,24 +608,17 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Transactional @Override - public void deleteByType(String specialType, String resiId) { - LambdaQueryWrapper q = new LambdaQueryWrapper<>(); - q.eq(LingshanSpecialCrowdPersonTypeEntity::getSpecialType, specialType); - q.eq(LingshanSpecialCrowdPersonTypeEntity::getResiId, resiId); - + public void deleteByType(String resiId) { // 先删除type - specialCrowdPersonTypeDao.deletePhysical(specialType, resiId); + specialCrowdPersonTypeDao.deletePhysical(resiId); - LingshanSpecialCrowdPersonTypeEntity personType = specialCrowdPersonTypeDao.selectOne(q); - if (personType == null) { - return; - } + IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); // 再删除detail - specialCrowdDetailAzbjDao.deletePhysical(personType.getIdCard()); - specialCrowdDetailXfryDao.deletePhysical(personType.getIdCard()); - specialCrowdDetailJdryDao.deletePhysical(personType.getIdCard()); - specialCrowdDetailSqjzDao.deletePhysical(personType.getIdCard()); - specialCrowdDetailJzhzDao.deletePhysical(personType.getIdCard()); + specialCrowdDetailAzbjDao.deletePhysical(resiInfo.getIdCard()); + specialCrowdDetailXfryDao.deletePhysical(resiInfo.getIdCard()); + specialCrowdDetailJdryDao.deletePhysical(resiInfo.getIdCard()); + specialCrowdDetailSqjzDao.deletePhysical(resiInfo.getIdCard()); + specialCrowdDetailJzhzDao.deletePhysical(resiInfo.getIdCard()); } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml index 9c2eeca66b..93ad9b6242 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml @@ -32,7 +32,7 @@ , UPDATED_TIME = values(UPDATED_TIME) - delete from lingshan_special_crowd_person_type where RESI_ID = #{resiId} and SPECIAL_TYPE = #{specialType} + delete from lingshan_special_crowd_person_type where RESI_ID = #{resiId} SELECT dc.id icDangerousChemicalsId, - dc.grid_id gridId, - concat(ORGANIZATION_NAME,'-',cg.GRID_NAME)as gridName, + dc.ORG_ID orgId, + dc.org_type orgType, + dc.org_id_path as orgIdPath, + ( + case when dc.org_type='grid'then select concat(a.ORGANIZATION_NAME,'-',cg.GRID_NAME) from customer_grid cg inner join customer_agency a on(cg.pid=a.id) where cg.id=dc.org_id + when dc.org_type='agency' then select dc.ORGANIZATION_NAME from customer_agency ca where ca.id=dc.org_id + else '' + end + ) as orgName, dc.agency_id agencyId, dc.source_type sourceType, dc.`name` name, @@ -92,10 +99,6 @@ dc.COMPANY_PROFILE companyProfile FROM ic_dangerous_chemicals dc - left join customer_grid cg - on(dc.grid_id=cg.id) - left join customer_agency ca - on(cg.pid=ca.id) WHERE dc.del_flag = '0' @@ -111,7 +114,7 @@ - AND dc.grid_id=#{orgId} + AND dc.ORG_ID=#{orgId} From e75c12e0dff5b6f362a184c23d39d84d8ecb1ad7 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 17:38:48 +0800 Subject: [PATCH 22/51] try --- .../IcDangerousChemicalsAddEditFormDTO.java | 1 + .../form/IcDangerousChemicalsListFormDTO.java | 2 +- .../DangerousChemicalsImportListener.java | 124 +++++++++------ .../epmet/model/DangerousChemicalsModel.java | 142 ++++++++++++++---- .../epmet/service/CustomerAgencyService.java | 3 +- .../epmet/service/CustomerGridService.java | 2 + .../service/IcDangerousChemicalsService.java | 2 +- .../impl/CustomerAgencyServiceImpl.java | 10 ++ .../service/impl/CustomerGridServiceImpl.java | 10 ++ .../impl/IcDangerousChemicalsServiceImpl.java | 11 +- 10 files changed, 227 insertions(+), 80 deletions(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java index 46c901a770..dee46040f9 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java @@ -126,6 +126,7 @@ public class IcDangerousChemicalsAddEditFormDTO implements Serializable { /** * 灵山:企业介绍 */ + @Length(max = 1000,groups = {LingShanAddGroup.class, LingShanEditGroup.class},message = "企业介绍最多输入1000字") private String companyProfile; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java index 3c03625cd8..39362d70b8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java @@ -25,7 +25,7 @@ public class IcDangerousChemicalsListFormDTO extends PageFormDTO implements Seri /** * 灵山:GRID_ID的全路径;包含grid_id - * 接口内部赋值,用于sql + * 接口内部赋值,用于sql,只有orgType=agency时,使用此列查询 */ private String orgIdPath; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java index 015f932c46..2666b7a478 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsImportListener.java @@ -3,22 +3,29 @@ package com.epmet.model; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.enums.OrgTypeEnum; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.CustomerAgencyDTO; +import com.epmet.dto.CustomerGridDTO; import com.epmet.entity.IcDangerousChemicalsEntity; import com.epmet.service.CoverageService; +import com.epmet.service.CustomerAgencyService; import com.epmet.service.CustomerGridService; import com.epmet.service.IcDangerousChemicalsService; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @Author zxc @@ -31,6 +38,7 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener errorRows = new ArrayList<>(); private List otherRows = new ArrayList<>(); private List insertList = new ArrayList<>(); - private Map existMap = null; - /** - * 危化品种类 - */ - private Map dangerTypeMap; + private List updateList = new ArrayList<>(); + // /** + // * 危化品种类 + // */ + // private Map dangerTypeMap; /** * 企业类别 */ @@ -60,6 +68,7 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener dangerTypeMap, Map categoryDictMap){ @@ -69,8 +78,9 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener entry : categoryDictMap.entrySet()) { + if (data.getCategoryName().equals(entry.getValue())) { + categoryKey = entry.getKey(); + break; + } + } + if (StringUtils.isBlank(categoryKey)) { + throw new ValidateException("【" + data.getCategoryName() + "】此企业类别不存在"); + } + e.setCategory(categoryKey); e.setSourceType("import"); - e.setAgencyId(staffAgencyId); e.setCustomerId(customerId); + e.setAgencyId(staffAgencyId); e.setAgencyIdPath(staffAgencyPath); e.setCreatedBy(currentUserId); e.setUpdatedBy(currentUserId); - insertList.add(e); - if (insertList.size() == NumConstant.ONE_HUNDRED){ + e.setSecurityFlag("是".equals(data.getSecurityFlagName()) ? true : false); + // 判断是否存在 + IcDangerousChemicalsEntity origin=icDangerousChemicalsService.get(e.getOrgId(),e.getName()); + if (null != origin) { + e.setId(origin.getId()); + updateList.add(origin); + } else { + insertList.add(e); + } + if (insertList.size() == NumConstant.ONE_HUNDRED) { + execPersist(); + } + if (updateList.size() == NumConstant.ONE_HUNDRED) { execPersist(); } }catch (Exception e){ String errorMsg = null; if (e instanceof ValidateException) { errorMsg = ((ValidateException) e).getMsg(); - } else { + }else if(e instanceof EpmetException){ + errorMsg=((EpmetException) e).getMsg(); + }else { errorMsg = "未知错误"; log.error("【重点危化品企业导入】出错:{}", ExceptionUtils.getErrorStackTrace(e)); } @@ -118,43 +176,15 @@ public class DangerousChemicalsImportListener extends AnalysisEventListener { - dangerTypeMap.forEach((k,v) -> { - if (i.getDangerTypeName().equals(v)){ - i.setDangerType(k); - } - }); - categoryDictMap.forEach((k,v) -> { - if (i.getCategoryName().equals(v)){ - i.setCategory(k); - } - }); - }); - Map groupByName = insertList.stream().collect(Collectors.groupingBy(IcDangerousChemicalsEntity::getName, Collectors.counting())); - groupByName.forEach((k,v) -> { - if (v.compareTo(NumConstant.ONE_L) != NumConstant.ZERO){ - insertList.forEach(i -> { - if (i.getName().equals(k)){ - i.setExistStatus(true); - } - }); - } - }); - Map> groupByStatus = insertList.stream().collect(Collectors.groupingBy(IcDangerousChemicalsEntity::getExistStatus)); - if (CollectionUtils.isNotEmpty(groupByStatus.get(true))){ - groupByStatus.get(true).forEach(t -> { - DangerousChemicalsModel.RowRemarkMessage errorRow = ConvertUtils.sourceToTarget(t, DangerousChemicalsModel.RowRemarkMessage.class); - errorRow.setErrorInfo("表格中存在重复数据"); - errorRows.add(errorRow); - }); - } - if (CollectionUtils.isNotEmpty(groupByStatus.get(false))){ - icDangerousChemicalsService.importInsert(groupByStatus.get(false)); - } + icDangerousChemicalsService.insertBatch(insertList); + } + + if (CollectionUtils.isNotEmpty(updateList)) { + icDangerousChemicalsService.updateBatchById(updateList); } } finally { insertList.clear(); - existMap = null; + updateList.clear(); } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java index 199ab033cd..07b3813ed4 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java @@ -3,7 +3,6 @@ package com.epmet.model; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.epmet.commons.tools.constant.NumConstant; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -17,8 +16,15 @@ import javax.validation.constraints.NotBlank; @Data public class DangerousChemicalsModel { + @NotBlank(message = "所属组织不能为空") + @ExcelProperty(value = "所属组织") + private String agencyName; + + @ExcelProperty(value = "所属网格") + private String gridName; + @NotBlank(message = "企业名称不能为空") - @Length(max = 50,message = "企业名称长度超出50字限制") + @Length(max = 35, message = "企业名称最多输入35字") @ExcelProperty(value = "企业名称") private String name; @@ -26,37 +32,82 @@ public class DangerousChemicalsModel { @ExcelProperty(value = "企业类型") private String categoryName; - @ExcelProperty(value = "周边安全间距(公里)") - private String safeDistance = NumConstant.ZERO_STR; - - @ExcelProperty(value = "危化品种类") - private String dangerTypeName; + /** + * 灵山:是否重点安全企业;1是;0不是;必填 + */ + @NotBlank(message = "是否重点安全企业不能为空") + @ExcelProperty(value = "是否重点安全企业") + private String securityFlagName; + + // @ExcelProperty(value = "周边安全间距(公里)") + // private String safeDistance = NumConstant.ZERO_STR; + // + // @ExcelProperty(value = "危化品种类") + // private String dangerTypeName; + + @NotBlank(message = "企业地址不能为空") + @Length(max = 200, message = "企业地址最多输入200字") + @ExcelProperty(value = "企业地址") + private String address; - @ExcelProperty(value = "负责人") + @ExcelProperty(value = "联系人") private String principalName; - @Length(max = 50,message = "联系电话长度超出50字限制") + @Length(max = 50, message = "联系电话长度超出50字限制") @ExcelProperty(value = "联系电话") private String principalMobile; - @NotBlank(message = "经营地址不能为空") - @Length(max = 50,message = "经营地址长度超出50字限制") - @ExcelProperty(value = "经营地址") - private String address; - - @ExcelProperty(value = "备注") - private String remark; + // @ExcelProperty(value = "备注") + // private String remark; + + /** + * 灵山:安全负责人姓名 + */ + @ExcelProperty(value = "安全负责人姓名") + private String securityPrincipalName; + + /** + * 灵山:手机号 + */ + @ExcelProperty(value = "手机号") + private String securityPrincipalMobile; + + /** + * 灵山:包企领导 + */ + @ExcelProperty(value = "包企领导") + private String bqLd; + + /** + * 灵山:包企干部 + */ + @ExcelProperty(value = "包企干部") + private String bqGb; + + /** + * 灵山:企业介绍 + */ + @Length(max = 1000, message = "企业介绍最多输入1000字") + @ExcelProperty(value = "企业介绍") + private String companyProfile; @ExcelIgnore private Integer rowNum; @Data public static class RowRemarkMessage { - @ExcelProperty(value = "行号") private Integer rowNum; @ColumnWidth(20) + @ExcelProperty(value = "所属组织") + private String agencyName; + + @ColumnWidth(20) + @ExcelProperty(value = "所属网格") + private String gridName; + + @ColumnWidth(40) @ExcelProperty(value = "企业名称") private String name; @@ -64,29 +115,62 @@ public class DangerousChemicalsModel { @ExcelProperty(value = "企业类型") private String categoryName; + /** + * 灵山:是否重点安全企业;1是;0不是;必填 + */ @ColumnWidth(20) - @ExcelProperty(value = "周边安全间距(公里)") - private String safeDistance = NumConstant.ZERO_STR; + @ExcelProperty(value = "是否重点安全企业") + private String securityFlag; - @ColumnWidth(20) - @ExcelProperty(value = "危化品种类") - private String dangerTypeName; + @ColumnWidth(50) + @ExcelProperty(value = "企业地址") + private String address; @ColumnWidth(20) - @ExcelProperty(value = "负责人") + @ExcelProperty(value = "联系人") private String principalName; @ColumnWidth(20) @ExcelProperty(value = "联系电话") private String principalMobile; - @ColumnWidth(40) - @ExcelProperty(value = "经营地址") - private String address; + // @ExcelProperty(value = "备注") + // private String remark; - @ColumnWidth(60) - @ExcelProperty(value = "备注") - private String remark; + /** + * 灵山:安全负责人姓名 + */ + @ColumnWidth(20) + @ExcelProperty(value = "安全负责人姓名") + private String securityPrincipalName; + + /** + * 灵山:手机号 + */ + @ColumnWidth(20) + @ExcelProperty(value = "手机号") + private String securityPrincipalMobile; + + /** + * 灵山:包企领导 + */ + @ColumnWidth(30) + @ExcelProperty(value = "包企领导") + private String bqLd; + + /** + * 灵山:包企干部 + */ + @ColumnWidth(30) + @ExcelProperty(value = "包企干部") + private String bqGb; + + /** + * 灵山:企业介绍 + */ + @ColumnWidth(5) + @ExcelProperty(value = "企业介绍") + private String companyProfile; @ColumnWidth(60) @ExcelProperty("错误信息") diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index f9ac7182e7..5ef18bf8e3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -18,7 +18,6 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -355,4 +354,6 @@ public interface CustomerAgencyService extends BaseService * @Date 2022/11/30 22:41 **/ Result> getCurrentUserCommunityInfo(TokenDto tokenDTO); + + CustomerAgencyDTO getByAgencyName(String customerId,String agencyName); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java index c3ba7c1286..213e000ba6 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerGridService.java @@ -387,4 +387,6 @@ public interface CustomerGridService extends BaseService { * @param formDTO */ void abandonGridForDealBizData(AbandonGridFormDTO formDTO); + + CustomerGridDTO get(CustomerGridDTO forDto); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcDangerousChemicalsService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcDangerousChemicalsService.java index 89b3c667ca..be86798fd5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcDangerousChemicalsService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcDangerousChemicalsService.java @@ -81,5 +81,5 @@ public interface IcDangerousChemicalsService extends BaseService entityList); - + IcDangerousChemicalsEntity get(String orgId, String name); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index a6702963c4..48683fbf77 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -17,6 +17,7 @@ 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; @@ -1607,4 +1608,13 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl>().ok(list); } + @Override + public CustomerAgencyDTO getByAgencyName(String customerId,String agencyName) { + LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(CustomerAgencyEntity::getOrganizationName,agencyName) + .eq(CustomerAgencyEntity::getCustomerId,customerId) + .last("limit 1"); + CustomerAgencyEntity customerAgencyEntity=baseDao.selectOne(queryWrapper); + return ConvertUtils.sourceToTarget(customerAgencyEntity,CustomerAgencyDTO.class); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java index cbcce699ac..e165811212 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerGridServiceImpl.java @@ -1095,4 +1095,14 @@ public class CustomerGridServiceImpl extends BaseServiceImpl queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(formDto.getCustomerId()),CustomerGridEntity::getCustomerId,formDto.getCustomerId()) + .eq(StringUtils.isNotBlank(formDto.getPid()),CustomerGridEntity::getPid,formDto.getPid()) + .eq(StringUtils.isNotBlank(formDto.getGridName()),CustomerGridEntity::getGridName,formDto.getGridName()) + .last("limit 1"); + CustomerGridEntity customerGridEntity=baseDao.selectOne(queryWrapper); + return ConvertUtils.sourceToTarget(customerGridEntity,CustomerGridDTO.class); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index c8475b9735..7f9a88eecb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -84,6 +84,8 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl list(IcDangerousChemicalsListFormDTO formDTO) { @@ -162,7 +164,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl tWrapper = new LambdaQueryWrapper<>(); tWrapper.eq(IcDangerousChemicalsEntity::getOrgId, orgId); tWrapper.eq(IcDangerousChemicalsEntity::getName, name) @@ -259,6 +261,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl queryWrapper=new LambdaQueryWrapper<>(); + queryWrapper.eq(IcDangerousChemicalsEntity::getOrgId,orgId).eq(IcDangerousChemicalsEntity::getName,name); + return baseDao.selectOne(queryWrapper); + } } \ No newline at end of file From a3d574ee0bfb9c16cdc384721a573da01bebe773 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 18:10:09 +0800 Subject: [PATCH 23/51] try --- .../service/impl/IcDangerousChemicalsServiceImpl.java | 9 +++++++++ .../main/resources/mapper/IcDangerousChemicalsDao.xml | 7 +------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index 7f9a88eecb..25cfb3b0e0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -21,6 +21,7 @@ import com.epmet.dao.IcDangerousChemicalsDao; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.IcDangerousChemicalsDTO; +import com.epmet.dto.form.BelongGridNameFormDTO; import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO; import com.epmet.dto.form.IcDangerousChemicalsListFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; @@ -123,6 +124,14 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl Date: Mon, 24 Apr 2023 09:48:51 +0800 Subject: [PATCH 24/51] test --- .../IcDangerousChemicalsController.java | 18 ++++++++++++++++++ .../epmet/excel/IcDangerousChemicalsExcel.java | 2 +- .../impl/IcDangerousChemicalsServiceImpl.java | 8 ++++---- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java index 1c8bcfadf1..5561fdcbaf 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java @@ -133,6 +133,24 @@ public class IcDangerousChemicalsController { return new Result(); } + /** + * 批量删除 + * @param tokenDto + * @param ids + * @return + */ + @PostMapping("batch-del") + public Result delete(@LoginUser TokenDto tokenDto, @RequestBody List ids) { + ids.forEach(id->{ + IcDangerousChemicalsAddEditFormDTO formDTO=new IcDangerousChemicalsAddEditFormDTO(); + formDTO.setIcDangerousChemicalsId(id); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + icDangerousChemicalsService.delete(formDTO); + }); + return new Result(); + } + /** * 重点危化品企业 查看详情 * @param formDTO diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java index fd11614c6c..ee012d722e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java @@ -49,7 +49,7 @@ public class IcDangerousChemicalsExcel { @ColumnWidth(25) private String securityPrincipalName; - @ExcelProperty(value = "安全负责电话人") + @ExcelProperty(value = "安全负责电话") @ColumnWidth(25) private String securityPrincipalMobile; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index 25cfb3b0e0..42e644d84d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -156,11 +156,11 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl Date: Mon, 24 Apr 2023 10:24:14 +0800 Subject: [PATCH 25/51] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=EF=BC=9A=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E4=BA=BA=E7=BE=A4=E8=B7=9F=E5=B1=85=E6=B0=91=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E9=87=8C=E7=9A=84=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4?= =?UTF-8?q?=E6=8C=82=E9=92=A9=E3=80=822=EF=BC=9A=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9A=E4=B8=8B=E8=BD=BD=E7=9A=84=E6=97=B6=E5=80=99=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E7=9A=84xls=E8=80=8C=E4=B8=8D=E6=98=AFxlsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/bean/PersonSpecialTypeBean.java | 15 +++ .../LingShanSpecialCrowdController.java | 7 +- .../main/java/com/epmet/dao/IcSpecialDao.java | 22 +++++ .../LingshanSpecialCrowdPersonTypeDao.java | 31 ------- .../com/epmet/entity/IcSpecialEntity.java | 3 +- .../LingshanSpecialCrowdPersonTypeEntity.java | 69 -------------- ...ngShanSpecialCrowdExcelImportListener.java | 22 ++--- .../service/LingShanSpecialCrowdService.java | 6 +- .../impl/LingShanSpecialCrowdServiceImpl.java | 92 +++++++++++++------ .../main/resources/mapper/IcSpecialDao.xml | 40 ++++++++ .../LingshanSpecialCrowdPersonTypeDao.xml | 80 ---------------- 11 files changed, 160 insertions(+), 227 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/bean/PersonSpecialTypeBean.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java delete mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java delete mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml delete mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/PersonSpecialTypeBean.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/PersonSpecialTypeBean.java new file mode 100644 index 0000000000..df260b524f --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/bean/PersonSpecialTypeBean.java @@ -0,0 +1,15 @@ +package com.epmet.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PersonSpecialTypeBean { + private String resiId; + private String idCard; + + private String specialType; +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 97eb46b233..19862d22d5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -70,7 +70,8 @@ public class LingShanSpecialCrowdController { is = this.getClass().getClassLoader().getResourceAsStream("excel/lingshan/special_crowd_" + specialType + "_import.xlsx"); response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); - response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + // response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(st.getName(), "UTF-8")); IOUtils.copy(is, os); @@ -249,7 +250,7 @@ public class LingShanSpecialCrowdController { * @author: WangXianZhang * @date: 2023/4/21 9:40 AM */ - @PostMapping("deleteByType") + @PostMapping("deleteByResi") public Result deleteByType(@RequestBody Map params) { String resiId = params.get("resiId"); @@ -257,7 +258,7 @@ public class LingShanSpecialCrowdController { throw new ValidateException("特殊人群类型或身份证不能为空"); } - lingShanSpecialCrowdService.deleteByType(resiId); + lingShanSpecialCrowdService.deleteByResi(resiId); return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java new file mode 100644 index 0000000000..c1b47971f2 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java @@ -0,0 +1,22 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; +import com.epmet.entity.IcSpecialEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface IcSpecialDao extends BaseDao { + + public IcSpecialEntity selectByResiId(@Param("resiId") String resiId); + + List listSpecialCrowd(@Param("orgIdPath") String orgIdPath, + @Param("agencyId") String agencyId, + @Param("specialType") String specialType, + @Param("name") String name, + @Param("mobile") String mobile, + @Param("idCard") String idCard); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java deleted file mode 100644 index 8be11fb77d..0000000000 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdPersonTypeDao.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.epmet.dao; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.epmet.commons.mybatis.dao.BaseDao; -import com.epmet.dto.result.LingShanSpecialCrowdListResultDTO; -import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 灵山-特殊人群-人员具有的特殊人群类型信息 - * - * @author generator generator@elink-cn.com - * @since v1.0.0 2023-04-18 - */ -@Mapper -public interface LingshanSpecialCrowdPersonTypeDao extends BaseDao { - - void saveOrUpdateManually(@Param("types") List types); - - List listSpecialCrowds(@Param("orgIdPath") String orgIdPath, - @Param("orgType") String orgType, - @Param("specialType") String specialType, - @Param("name") String name, - @Param("mobile") String mobile, - @Param("idCard") String idCard); - - void deletePhysical(@Param("resiId") String resiId); -} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcSpecialEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcSpecialEntity.java index 114ad7e2e5..693cd2499e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcSpecialEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcSpecialEntity.java @@ -17,7 +17,7 @@ package com.epmet.entity; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -38,6 +38,7 @@ public class IcSpecialEntity extends BaseEpmetEntity { /** * 客户Id customer.id */ + @TableField(fill = FieldFill.INSERT) private String customerId; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java deleted file mode 100644 index 0936dfde6b..0000000000 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/LingshanSpecialCrowdPersonTypeEntity.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.epmet.entity; - -import com.baomidou.mybatisplus.annotation.TableName; - -import com.epmet.commons.mybatis.entity.BaseEpmetEntity; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -/** - * 灵山-特殊人群-人员具有的特殊人群类型信息 - * - * @author generator generator@elink-cn.com - * @since v1.0.0 2023-04-18 - */ -@Data -@EqualsAndHashCode(callSuper=false) -@TableName("lingshan_special_crowd_person_type") -public class LingshanSpecialCrowdPersonTypeEntity extends BaseEpmetEntity { - - private static final long serialVersionUID = 1L; - - /** - * 客户Id - */ - private String customerId; - - /** - * org id路径,:分割 - */ - private String orgIdPath; - - /** - * @description: 居民ID - * @param null: - * @return - * @author: WangXianZhang - * @date: 2023/4/23 10:26 AM - */ - private String resiId; - - /** - * 证件号 - */ - private String idCard; - - /** - * 特殊人群类别 - */ - private String specialType; - - public LingshanSpecialCrowdPersonTypeEntity(String id, String customerId, String orgIdPath, String resiId, String idCard, String specialType, String delFlag, - Integer revision, Date createdTime, String createdBy, Date updatedTime, String updatedBy) { - this.resiId = resiId; - this.customerId = customerId; - this.orgIdPath = orgIdPath; - this.idCard = idCard; - this.specialType = specialType; - this.setDelFlag(delFlag); - this.setCreatedBy(createdBy); - this.setCreatedTime(createdTime); - this.setUpdatedBy(updatedBy); - this.setUpdatedTime(updatedTime); - this.setRevision(revision); - this.setId(id); - } -} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index 20cd011cdc..2edf65c4eb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -3,6 +3,7 @@ package com.epmet.excel.handler; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.epmet.bean.PersonSpecialTypeBean; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; @@ -15,7 +16,6 @@ import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.entity.LingshanSpecialCrowdDetailBaseEntity; -import com.epmet.entity.LingshanSpecialCrowdPersonTypeEntity; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData; import com.epmet.exceptions.ReadExcelHeaderOnlyException; @@ -96,7 +96,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener persons = new ArrayList<>(); - private List personTypes = new ArrayList<>(); + // private List personTypes = new ArrayList<>(); + private List specialTypes = new ArrayList<>(); protected LingShanSpecialCrowdService lingShanSpecialCrowdService; @@ -255,10 +256,7 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener personTypes) { + private void savePersonAndTypes(List personTypes) { lingShanSpecialCrowdService.savePersonAndTypes(personTypes); } @@ -404,4 +400,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener personTypes); + void savePersonAndTypes(List personTypes); /** * @description: 安置帮教-导入 @@ -82,7 +84,7 @@ public interface LingShanSpecialCrowdService { PageData listSpecialCrowds(String orgId, String orgType, String specialType, String name, String mobile, String idCard, Integer pageNo, Integer pageSize); - void deleteByType(String resiId); + void deleteByResi(String resiId); /** * @description: 保存或修改 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index b859446a93..c907a727c3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.epmet.bean.PersonSpecialTypeBean; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionResultDTO; @@ -65,6 +66,7 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; /** * 灵山特殊人群service @@ -73,9 +75,6 @@ import java.util.concurrent.atomic.AtomicReference; @Service public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService, ResultDataResolver { - @Autowired - private LingshanSpecialCrowdPersonTypeDao specialCrowdPersonTypeDao; - @Autowired private LingshanSpecialCrowdDetailAzbjDao specialCrowdDetailAzbjDao; @@ -94,6 +93,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Autowired private IcResiUserDao icResiUserDao; + @Autowired + private IcSpecialDao icSpecialDao; + @Autowired private ExecutorService executorService; @@ -257,17 +259,44 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ } @Override - public void savePersonAndTypes(List personTypes) { - // List> personParts = ListUtils.partition(persons, 50); - List> personTypeParts = ListUtils.partition(personTypes, 50); - - // for (List p : personParts) { - // specialCrowdPersonDao.saveOrUpdateManually(p); - // } - for (List p : personTypeParts) { - if (CollectionUtils.isNotEmpty(p)) { - specialCrowdPersonTypeDao.saveOrUpdateManually(p); + public void savePersonAndTypes(List personTypes) { + HashMap> resiIdAndTypes = new HashMap<>(); + + // 将所有的人群类别信息,按照居民id归类为map + for (PersonSpecialTypeBean type : personTypes) { + String resiId = type.getResiId(); + Set types = resiIdAndTypes.get(resiId); + if (CollectionUtils.isEmpty(types)) { + types = new HashSet<>(); + resiIdAndTypes.put(resiId, types); } + types.add(type.getSpecialType()); + } + + // 取出已有的人群类别,合并,转化为字符串,存入 + for (Map.Entry> entry : resiIdAndTypes.entrySet()) { + String resiId = entry.getKey(); + Set typeSet = entry.getValue(); + IcSpecialEntity specialTypeInDb = icSpecialDao.selectByResiId(resiId); + if (specialTypeInDb == null) { + //目前还不是特殊人群 + specialTypeInDb = new IcSpecialEntity(); + specialTypeInDb.setIcResiUser(resiId); + specialTypeInDb.setSpecialRqlb(String.join(",", typeSet)); + icSpecialDao.insert(specialTypeInDb); + } else { + // 已经是特殊人群了,那么追加新类别 + typeSet.addAll(new HashSet<>(Arrays.asList(specialTypeInDb.getSpecialRqlb().split(",")))); + IcSpecialEntity icSpecialUpdate = new IcSpecialEntity(); + icSpecialUpdate.setSpecialRqlb(String.join(",", typeSet)); + icSpecialUpdate.setId(specialTypeInDb.getId()); + icSpecialDao.updateById(icSpecialUpdate); + } + + // 设置居民的IS_SPECIAL字段为1 + HashMap updateMap = new HashMap<>(); + updateMap.put("IS_SPECIAL", "1"); + icResiUserDao.upTable("ic_resi_user", resiId, updateMap); } } @@ -396,7 +425,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ Date now = new Date(); - ArrayList types2Save = new ArrayList<>(); + ArrayList types2Save = new ArrayList<>(); // 保存人群详情 if (input.getSpecialCrowdDetails().getAnzhibangjiao() != null) { @@ -405,8 +434,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ azbj.setIdCard(input.getIdCard()); saveBatch(Arrays.asList(azbj), azbj); - LingshanSpecialCrowdPersonTypeEntity azbjE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.AZBJ.getType(), - "0", 0, now, staffId, now, staffId); + PersonSpecialTypeBean azbjE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.AZBJ.getType()); types2Save.add(azbjE); } @@ -416,9 +444,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ jdry.setIdCard(input.getIdCard()); saveBatch(Arrays.asList(jdry), jdry); - LingshanSpecialCrowdPersonTypeEntity JdryE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JDRY.getType(), - "0", 0, now, staffId, now, staffId); - types2Save.add(JdryE); + PersonSpecialTypeBean jdryE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JDRY.getType()); + types2Save.add(jdryE); } if (input.getSpecialCrowdDetails().getJingzhanghuanzhe() != null) { @@ -427,8 +454,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ jzhz.setIdCard(input.getIdCard()); saveBatch(Arrays.asList(jzhz), jzhz); - LingshanSpecialCrowdPersonTypeEntity jzhzE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JZHZ.getType(), - "0", 0, now, staffId, now, staffId); + PersonSpecialTypeBean jzhzE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JZHZ.getType()); types2Save.add(jzhzE); } @@ -438,8 +464,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ xfry.setIdCard(input.getIdCard()); saveBatch(Arrays.asList(xfry), xfry); - LingshanSpecialCrowdPersonTypeEntity xfryE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.XFRY.getType(), - "0", 0, now, staffId, now, staffId); + PersonSpecialTypeBean xfryE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.XFRY.getType()); types2Save.add(xfryE); } @@ -449,8 +474,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ sqjz.setIdCard(input.getIdCard()); saveBatch(Arrays.asList(sqjz), sqjz); - LingshanSpecialCrowdPersonTypeEntity sqjzE = new LingshanSpecialCrowdPersonTypeEntity(IdWorker.getIdStr(), customerId, orgIdPath, vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.SQJZ.getType(), - "0", 0, now, staffId, now, staffId); + PersonSpecialTypeBean sqjzE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.SQJZ.getType()); types2Save.add(sqjzE); } @@ -585,7 +609,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ orgIdPath = CustomerOrgRedis.getOrgIdPath(orgId, orgType); } PageHelper.startPage(pageNo, pageSize); - List l = specialCrowdPersonTypeDao.listSpecialCrowds(orgIdPath, orgType, specialType, name, mobile, idCard); + List l = icSpecialDao.listSpecialCrowd(orgIdPath, orgType, specialType, name, mobile, idCard); + // List l = specialCrowdPersonTypeDao.listSpecialCrowds(orgIdPath, orgType, specialType, name, mobile, idCard); l.forEach(i -> { IcResiUserDTO resi = icResiUserDao.getResiUserByIdCard(i.getIdCard(), customerId); GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(resi.getGridId()); @@ -608,13 +633,20 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Transactional @Override - public void deleteByType(String resiId) { - // 先删除type - specialCrowdPersonTypeDao.deletePhysical(resiId); + public void deleteByResi(String resiId) { + // 1.先删除type + LambdaQueryWrapper q = new LambdaQueryWrapper<>(); + q.eq(IcSpecialEntity::getIcResiUser, resiId); + icSpecialDao.delete(q); + // 2.更新居民信息主表中的标记 IcResiUserEntity resiInfo = icResiUserDao.selectById(resiId); - // 再删除detail + HashMap updateData = new HashMap<>(); + updateData.put("IS_SPECIAL", null); + icResiUserDao.upTable("ic_resi_user", resiId, updateData); + + // 3.再删除detail specialCrowdDetailAzbjDao.deletePhysical(resiInfo.getIdCard()); specialCrowdDetailXfryDao.deletePhysical(resiInfo.getIdCard()); specialCrowdDetailJdryDao.deletePhysical(resiInfo.getIdCard()); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml new file mode 100644 index 0000000000..7fe616b679 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml @@ -0,0 +1,40 @@ + + + + + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml deleted file mode 100644 index 93ad9b6242..0000000000 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdPersonTypeDao.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - insert into lingshan_special_crowd_person_type ( ID, CUSTOMER_ID, ORG_ID_PATH, RESI_ID, ID_CARD, SPECIAL_TYPE, - DEL_FLAG, REVISION, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME) - values - - (#{type.id}, #{type.customerId}, #{type.orgIdPath}, #{type.resiId}, #{type.idCard}, #{type.specialType}, - #{type.delFlag}, #{type.revision}, #{type.createdBy}, #{type.createdTime}, #{type.updatedBy}, #{type.updatedTime}) - - on duplicate key update - ORG_ID_PATH=values(ORG_ID_PATH) - , SPECIAL_TYPE =values(SPECIAL_TYPE) - , UPDATED_BY =values(UPDATED_BY) - , UPDATED_TIME = values(UPDATED_TIME) - - - delete from lingshan_special_crowd_person_type where RESI_ID = #{resiId} - - - - - - \ No newline at end of file From 0c5c4cd98f86712db9783f15d24e0f06765afaa8 Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 10:55:41 +0800 Subject: [PATCH 26/51] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=EF=BC=9A=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E8=80=81=E7=9A=84=E4=BA=BA=E7=BE=A4=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/LingShanSpecialCrowdServiceImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index c907a727c3..1f3c3a6b83 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -42,6 +42,7 @@ import com.epmet.exceptions.ReadExcelHeaderOnlyException; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.OssFeignClient; +import com.epmet.remote.EpmetUserRemoteService; import com.epmet.service.LingShanSpecialCrowdService; import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; @@ -107,6 +108,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Autowired private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Autowired + private EpmetUserRemoteService epmetUserRemoteService; + @Override public String importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename) { Class excelDataClass; @@ -607,6 +611,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ String orgIdPath = null; if (StringUtils.isNotBlank(orgId)) { orgIdPath = CustomerOrgRedis.getOrgIdPath(orgId, orgType); + } else { + orgIdPath = epmetUserRemoteService.getLoginUserDetails().getOrgIdPath(); } PageHelper.startPage(pageNo, pageSize); List l = icSpecialDao.listSpecialCrowd(orgIdPath, orgType, specialType, name, mobile, idCard); @@ -623,7 +629,10 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ if (StringUtils.isNotBlank(specialTypesStr)) { String[] types = specialTypesStr.split(","); for (String type : types) { - typesDisplay.add(LingShanSpecialCrowdTypeEnums.getByType(type).getName()); + LingShanSpecialCrowdTypeEnums crowdType = LingShanSpecialCrowdTypeEnums.getByType(type); + if (crowdType != null) { + typesDisplay.add(crowdType.getName()); + } } } i.setSpecialTypeDisplay(String.join(",", typesDisplay)); From e650c3cedcaaba22106c20b2256ea2e1e48d8794 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 10:59:51 +0800 Subject: [PATCH 27/51] /gov/org/customeragency/agencygridtreeV2 --- .../controller/CustomerAgencyController.java | 13 +++++++- .../epmet/service/CustomerAgencyService.java | 2 +- .../impl/CustomerAgencyServiceImpl.java | 31 ++++++++++++++++--- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java index ba94cc12ab..b7b13fd2ec 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerAgencyController.java @@ -351,7 +351,7 @@ public class CustomerAgencyController { @PostMapping("agencylist") public Result getAgencyList(@LoginUser TokenDto tokenDTO,@RequestBody GetAgencyListFormDTO formDTO) { if(AppClientConstant.APP_OPER.equals(tokenDTO.getApp())){ - ValidatorUtils.validateEntity(formDTO.getCustomerId(),GetAgencyListFormDTO.OperAddUserShowGroup.class); + ValidatorUtils.validateEntity(formDTO,GetAgencyListFormDTO.OperAddUserShowGroup.class); }else{ if (StringUtils.isBlank(formDTO.getCustomerId())){ formDTO.setCustomerId(tokenDTO.getCustomerId()); @@ -405,6 +405,17 @@ public class CustomerAgencyController { return new Result().ok(customerAgencyService.getOrgTreeData(tokenDTO.getUserId(),tokenDTO.getCustomerId())); } + /** + * 根组织开始,含网格 + * @param formDTO + * @return + */ + @PostMapping("agencygridtreeV2") + public Result getOrgList(@RequestBody GetAgencyListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO,GetAgencyListFormDTO.OperAddUserShowGroup.class); + return new Result().ok(customerAgencyService.getOrgTreeData(formDTO.getUserId(),formDTO.getCustomerId())); + } + /** * @Description 【事件】社区服务热线 * @author sun diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index 5ef18bf8e3..bf2f7b855e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -267,7 +267,7 @@ public interface CustomerAgencyService extends BaseService /** * desc:获取用户所属组织的组织及网格树 - * @param staffId + * @param staffId 为空时,从根组织返回 * @return */ AgencyTreeResultDTO getOrgTreeData(String staffId,String customerId); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index 48683fbf77..c0bae678b1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -1178,14 +1178,35 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl%s", staffId)); - throw new RenException(CustomerAgencyConstant.SELECT_STAFF_AGENCY_EXCEPTION); + AgencyResultDTO rootAgency=new AgencyResultDTO(); + if(StringUtils.isNotBlank(staffId)){ + //1.查询工作人员所属组织信息 + rootAgency = baseDao.selectAgencyByStaffId(staffId); + if (null == rootAgency) { + logger.error(String.format("查询工作人员所属组织信息失败,staffId->%s", staffId)); + throw new RenException(CustomerAgencyConstant.SELECT_STAFF_AGENCY_EXCEPTION); + } + }else{ + LambdaQueryWrapper rootQuery=new LambdaQueryWrapper<>(); + rootQuery.eq(CustomerAgencyEntity::getCustomerId,customerId) + .eq(CustomerAgencyEntity::getPid,NumConstant.ZERO_STR); + CustomerAgencyEntity rootEntity=baseDao.selectOne(rootQuery); + rootAgency.setAgencyId(rootEntity.getId()); + rootAgency.setAgencyName(rootEntity.getOrganizationName()); + rootAgency.setPids(rootEntity.getPids()); + rootAgency.setPid(rootEntity.getPid()); + rootAgency.setLevel(rootEntity.getLevel()); + rootAgency.setLongitude(rootEntity.getLongitude()); + rootAgency.setLatitude(rootEntity.getLatitude()); } result.setPid(rootAgency.getPid()); result.setAgencyName(rootAgency.getAgencyName()); From 606b43f809763fe1d7944935aac305e79eb557b0 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 11:14:07 +0800 Subject: [PATCH 28/51] =?UTF-8?q?=E5=AE=89=E5=85=A8=E8=B4=9F=E8=B4=A3?= =?UTF-8?q?=E4=BA=BA=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/excel/IcDangerousChemicalsExcel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java index ee012d722e..4f1dd34ad2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java @@ -49,7 +49,7 @@ public class IcDangerousChemicalsExcel { @ColumnWidth(25) private String securityPrincipalName; - @ExcelProperty(value = "安全负责电话") + @ExcelProperty(value = "安全负责人电话") @ColumnWidth(25) private String securityPrincipalMobile; From d8c4752ea6d0731aaded8b03c8b98ec2e0702e04 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 12:38:26 +0800 Subject: [PATCH 29/51] =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/model/DangerousChemicalsModel.java | 6 +++--- .../epmet/service/impl/IcDangerousChemicalsServiceImpl.java | 4 ++-- .../src/main/resources/mapper/IcDangerousChemicalsDao.xml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java index 07b3813ed4..d18dd7566a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/DangerousChemicalsModel.java @@ -28,8 +28,8 @@ public class DangerousChemicalsModel { @ExcelProperty(value = "企业名称") private String name; - @NotBlank(message = "企业类型不能为空") - @ExcelProperty(value = "企业类型") + @NotBlank(message = "企业类别不能为空") + @ExcelProperty(value = "企业类别") private String categoryName; /** @@ -168,7 +168,7 @@ public class DangerousChemicalsModel { /** * 灵山:企业介绍 */ - @ColumnWidth(5) + @ColumnWidth(50) @ExcelProperty(value = "企业介绍") private String companyProfile; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index 42e644d84d..4bb95cf9a0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -258,7 +258,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.IC_DANGER_TYPE.getCode()); - if (!statusRes.success() || MapUtils.isNotEmpty(statusRes.getData())) { + if (!statusRes.success() || MapUtils.isEmpty(statusRes.getData())) { throw new EpmetException("获取IC_DANGER_TYPE字典表失败"); } Map dangerTypeMap = statusRes.getData(); @@ -326,7 +326,7 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl - AND dc.org_id_path like concat(#{orgIdPath},'%') + AND dc.AGENCY_ID_PATH like concat(#{orgIdPath},'%') From 758c77c7cf3cd5a0be55f0cc8c67a6624594a96b Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 13:40:08 +0800 Subject: [PATCH 30/51] 1.fix --- .../main/java/com/epmet/dao/IcSpecialDao.java | 3 ++- .../impl/LingShanSpecialCrowdServiceImpl.java | 6 ++++-- .../src/main/resources/mapper/IcSpecialDao.xml | 16 +++++++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java index c1b47971f2..81ac6f0eba 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcSpecialDao.java @@ -14,7 +14,8 @@ public interface IcSpecialDao extends BaseDao { public IcSpecialEntity selectByResiId(@Param("resiId") String resiId); List listSpecialCrowd(@Param("orgIdPath") String orgIdPath, - @Param("agencyId") String agencyId, + @Param("orgId") String orgId, + @Param("orgType") String orgType, @Param("specialType") String specialType, @Param("name") String name, @Param("mobile") String mobile, diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 1f3c3a6b83..58b343808f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -612,10 +612,12 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ if (StringUtils.isNotBlank(orgId)) { orgIdPath = CustomerOrgRedis.getOrgIdPath(orgId, orgType); } else { - orgIdPath = epmetUserRemoteService.getLoginUserDetails().getOrgIdPath(); + // 前端没传递,那就用当前staff所属的 + orgIdPath = epmetUserRemoteService.getLoginUserDetails().getOrgIdPath(); + orgType = "agency"; } PageHelper.startPage(pageNo, pageSize); - List l = icSpecialDao.listSpecialCrowd(orgIdPath, orgType, specialType, name, mobile, idCard); + List l = icSpecialDao.listSpecialCrowd(orgIdPath, orgId, orgType, specialType, name, mobile, idCard); // List l = specialCrowdPersonTypeDao.listSpecialCrowds(orgIdPath, orgType, specialType, name, mobile, idCard); l.forEach(i -> { IcResiUserDTO resi = icResiUserDao.getResiUserByIdCard(i.getIdCard(), customerId); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml index 7fe616b679..5d66f2482f 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcSpecialDao.xml @@ -18,19 +18,25 @@ , s.SPECIAL_RQLB SPECIAL_TYPES_STR from ic_resi_user r inner join ic_special s on (r.ID = s.IC_RESI_USER and s.DEL_FLAG = 0) - where r.DEL_FLAG = 0 + where + r.DEL_FLAG = 0 + and (r.PIDS like CONCAT(#{orgIdPath}, '%') + + or r.AGENCY_ID = #{orgId} + + + or r.GRID_ID = #{orgId} + + ) and r.NAME like CONCAT('%', #{name}, '%') - and s.SPECIAL_RQLB like #{specialType} + and s.SPECIAL_RQLB like CONCAT('%', #{specialType}, '%') and r.ID_CARD like CONCAT('%', #{idCard}, '%') - - and r.PIDS like CONCAT(#{orgIdPath}, '%') or r.AGENCY_ID = #{agencyId} - and r.MOBILE like CONCAT('%', #{mobile}, '%') From 8af03f655afc278f4fc4c3c95491a124a6adfd54 Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 14:44:20 +0800 Subject: [PATCH 31/51] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=EF=BC=9A=E3=80=90?= =?UTF-8?q?=E7=81=B5=E5=B1=B1=E5=A4=A7=E5=B1=8F-=E5=85=9A=E5=BB=BA?= =?UTF-8?q?=E5=AE=A3=E4=BC=A0=E3=80=91=E5=88=97=E8=A1=A8-=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0category=E5=8F=82=E6=95=B0=EF=BC=8C=E4=BC=A0=E9=80=92?= =?UTF-8?q?=E4=B8=80=E7=BA=A7=E6=A0=8F=E7=9B=AEid=EF=BC=8C=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AF=A5=E6=A0=8F=E7=9B=AE=E4=B8=8B=E7=9A=84=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E3=80=822.=E4=BF=AE=E6=94=B9=EF=BC=9A=E3=80=90?= =?UTF-8?q?=E7=81=B5=E5=B1=B1=E5=A4=A7=E5=B1=8F=E3=80=91=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E8=AF=A6=E6=83=85=EF=BC=8C=E5=A2=9E=E5=8A=A0categroy=E5=92=8Cc?= =?UTF-8?q?ategoryName=E7=9A=84=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/ArticleListFormDTO.java | 10 ++++++++ .../dto/result/PublishedListResultDTO.java | 5 ++++ .../service/impl/ArticleServiceImpl.java | 23 +++++++++++++++++++ .../src/main/resources/mapper/ArticleDao.xml | 8 +++++++ 4 files changed, 46 insertions(+) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticleListFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticleListFormDTO.java index 0a601e9802..aad4177f65 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticleListFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/ArticleListFormDTO.java @@ -14,6 +14,16 @@ import java.util.List; public class ArticleListFormDTO implements Serializable { private static final long serialVersionUID = 6397877545890473794L; + /** + * 栏目 + */ + private String category; + + /** + * 子栏目列表 + */ + private List subCategories; + /** * 文章标题 */ diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java index 78ff5fe7f9..c776b6c943 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java @@ -26,6 +26,11 @@ public class PublishedListResultDTO implements Serializable { * 分类 */ private String category; + + /** + * 栏目名称 + */ + private String categoryName; /** * 组织Id */ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index c8146140d2..f51170a09c 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -131,6 +131,9 @@ public class ArticleServiceImpl extends BaseServiceImpl subCategories; + if (StringUtils.isNotBlank(categoryId = formDTO.getCategory())) { + LambdaQueryWrapper cq = new LambdaQueryWrapper<>(); + cq.eq(CategoryDictEntity::getPid, categoryId); + List subCtgs = categoryDictDao.selectList(cq); + if (! CollectionUtils.isEmpty(subCtgs)) { + subCategories = subCtgs.stream().map(CategoryDictEntity::getId).collect(Collectors.toList()); + formDTO.setSubCategories(subCategories); + } + } + List list = baseDao.selectAllArticle(formDTO); PageInfo pageInfo = new PageInfo<>(list); @@ -1790,6 +1807,12 @@ public class ArticleServiceImpl extends BaseServiceImpl + + and a.CATEGORY in ( + + #{category} + + ) + AND a.id = #{articleId} From 09e20f709d5d27d4726cd6b6c7878e48270c550b Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 14:59:51 +0800 Subject: [PATCH 32/51] =?UTF-8?q?=E5=85=9A=E5=BB=BA=E5=A3=B0=E9=9F=B3?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=94=AF=E6=8C=81=E4=B8=8A=E4=BC=A0=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/form/AddOrSaveDraftFormDTO.java | 21 +++++-- .../epmet/dto/form/UpdateArticleFormDTO.java | 16 +++++- .../service/impl/ArticleServiceImpl.java | 57 +++++++++++++++++++ .../resources/mapper/ArticleContentDao.xml | 1 + 4 files changed, 90 insertions(+), 5 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java index 207fb75bcc..f77ed59261 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java @@ -1,13 +1,12 @@ package com.epmet.dto.form; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.util.Date; import java.util.List; /** @@ -18,7 +17,7 @@ import java.util.List; @Data public class AddOrSaveDraftFormDTO implements Serializable { - public interface AddArticleForm{} + public interface AddArticleForm extends CustomerClientShowGroup {} public interface AddDraftForm{} /** @@ -31,7 +30,7 @@ public class AddOrSaveDraftFormDTO implements Serializable { @Length(max = 50, message = "标题最长为50个字") private String title; - @NotBlank(message = "栏目分类不能为空",groups = {AddArticleForm.class}) + @NotBlank(message = "所属栏目不能为空",groups = {AddArticleForm.class}) private String category; /** @@ -84,4 +83,18 @@ public class AddOrSaveDraftFormDTO implements Serializable { * 封面图地址 */ private String imgUrl; + + /** + * 内容列表 + */ + private List fileList; + + @Data + public static class ContentDTO { + public ContentDTO() { + } + private String fileId; + private String content; + private String fileName; + } } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java index 860e0fd6e6..499124df33 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java @@ -28,7 +28,7 @@ public class UpdateArticleFormDTO { @NotBlank(message = "articleId不能为空", groups = {AddUserInternalGroup.class}) private String articleId; - @NotBlank(message = "栏目不能为空", groups = {AddUserInternalGroup.class}) + @NotBlank(message = "所属栏目不能为空", groups = {AddUserShowGroup.class}) private String category; @NotBlank(message = "文章标题不能为空", groups = {AddUserShowGroup.class}) @@ -91,5 +91,19 @@ public class UpdateArticleFormDTO { */ @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) private String customerId; + + /** + * 内容列表 + */ + private List fileList; + + @Data + public static class ContentDTO { + public ContentDTO() { + } + private String fileId; + private String content; + private String fileName; + } } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index c8146140d2..0a07c41d47 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -1558,6 +1558,21 @@ public class ArticleServiceImpl extends BaseServiceImpl rangeList = new ArrayList<>(); @@ -1871,6 +1902,32 @@ public class ArticleServiceImpl extends BaseServiceImpl updateWrapper=new LambdaUpdateWrapper<>(); + updateWrapper.set(ArticleContentEntity::getContent,file.getContent()) + .set(ArticleContentEntity::getFileName,file.getFileName()) + .set(ArticleContentEntity::getUpdatedBy,EpmetRequestHolder.getLoginUserId()) + .set(ArticleContentEntity::getUpdatedTime,new Date()) + .set(ArticleContentEntity::getOrderNum,orderNum) + .eq(ArticleContentEntity::getId,file.getFileId()); + articleContentDao.update(null,updateWrapper); + }else{ + ArticleContentEntity fileDto=new ArticleContentEntity(); + fileDto.setCustomerId(formDTO.getCustomerId()); + fileDto.setArticleId(formDTO.getArticleId()); + fileDto.setContent(file.getContent()); + fileDto.setFileName(file.getFileName()); + fileDto.setContentType("file"); + fileDto.setOrderNum(orderNum); + articleContentDao.insert(fileDto); + } + orderNum++; + } + } // 3.操作记录 ArticleOperateRecordEntity articleOperateRecord = new ArticleOperateRecordEntity(); articleOperateRecord.setCustomerId(formDTO.getCustomerId()); diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml index 52007cee9e..300b4d14bc 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml @@ -12,6 +12,7 @@ WHERE ac.DEL_FLAG = '0' AND ac.ID = #{articleId} + and ac.CONTENT_TYPE ='rich_text' \ No newline at end of file From fd32302b609d0b963295aa2e11d36f257b3e4f75 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 15:02:45 +0800 Subject: [PATCH 33/51] =?UTF-8?q?=E6=89=80=E5=B1=9E=E6=A0=8F=E7=9B=AE?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E4=B8=BA=E7=A9=BA=20=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java | 2 +- .../src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java index f77ed59261..aef08ba3ff 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java @@ -30,7 +30,7 @@ public class AddOrSaveDraftFormDTO implements Serializable { @Length(max = 50, message = "标题最长为50个字") private String title; - @NotBlank(message = "所属栏目不能为空",groups = {AddArticleForm.class}) + // @NotBlank(message = "所属栏目不能为空",groups = {AddArticleForm.class}) private String category; /** diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java index 499124df33..9c01032aff 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java @@ -28,7 +28,7 @@ public class UpdateArticleFormDTO { @NotBlank(message = "articleId不能为空", groups = {AddUserInternalGroup.class}) private String articleId; - @NotBlank(message = "所属栏目不能为空", groups = {AddUserShowGroup.class}) + // @NotBlank(message = "所属栏目不能为空", groups = {AddUserShowGroup.class}) private String category; @NotBlank(message = "文章标题不能为空", groups = {AddUserShowGroup.class}) From 5c933863b4f4b639f781b6ff2e3222e8cace0487 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 15:14:05 +0800 Subject: [PATCH 34/51] =?UTF-8?q?/gov/voice/article/detailV2=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E5=86=85=E5=AE=B9=E5=92=8C=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/result/PublishedListResultDTO.java | 5 +++++ .../com/epmet/service/impl/ArticleServiceImpl.java | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java index c776b6c943..0e25e4fd03 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/PublishedListResultDTO.java @@ -117,6 +117,11 @@ public class PublishedListResultDTO implements Serializable { */ private List contentList; + /** + * 附件列表 + */ + private List fileList; + @Data public static class Content { /** diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index 0d8e015696..ab7bd3a92f 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -1821,12 +1821,23 @@ public class ArticleServiceImpl extends BaseServiceImpl tWrapper1 = new LambdaQueryWrapper<>(); tWrapper1.eq(ArticleContentEntity::getArticleId, formDTO.getArticleId()); tWrapper1.eq(ArticleContentEntity::getDelFlag, NumConstant.ZERO_STR); + tWrapper1.ne(ArticleContentEntity::getContentType,"file"); tWrapper1.orderByDesc(ArticleContentEntity::getOrderNum); List contentEntityList = articleContentDao.selectList(tWrapper1); if (!CollectionUtils.isEmpty(contentEntityList)) { List contentList = ConvertUtils.sourceToTarget(contentEntityList, PublishedListResultDTO.Content.class); resultDTO.setContentList(contentList); } + LambdaQueryWrapper fileWrapper = new LambdaQueryWrapper<>(); + fileWrapper.eq(ArticleContentEntity::getArticleId, formDTO.getArticleId()); + fileWrapper.eq(ArticleContentEntity::getDelFlag, NumConstant.ZERO_STR); + fileWrapper.eq(ArticleContentEntity::getContentType,"file"); + fileWrapper.orderByDesc(ArticleContentEntity::getOrderNum); + List fileContentEntityList = articleContentDao.selectList(fileWrapper); + if (!CollectionUtils.isEmpty(fileContentEntityList)) { + List fileList = ConvertUtils.sourceToTarget(fileContentEntityList, PublishedListResultDTO.Content.class); + resultDTO.setFileList(fileList); + } //标签列表 LambdaQueryWrapper tWrapper2 = new LambdaQueryWrapper<>(); From 580e64ce9aadb939a6011405c078fa141f2d8a9d Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 15:16:14 +0800 Subject: [PATCH 35/51] =?UTF-8?q?/gov/voice/draft/detailV2=E5=8C=BA?= =?UTF-8?q?=E5=88=86=E5=86=85=E5=AE=B9=E5=92=8C=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/result/DraftPcListResultDTO.java | 5 +++++ .../com/epmet/service/impl/DraftServiceImpl.java | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java index 814d1e797c..3aed178f5f 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/DraftPcListResultDTO.java @@ -110,6 +110,11 @@ public class DraftPcListResultDTO implements Serializable { */ private List contentList; + /** + * 文章内容 + */ + private List fileList; + @Data public static class Content { /** diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java index 5d786be693..27111b4545 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/DraftServiceImpl.java @@ -266,7 +266,8 @@ public class DraftServiceImpl extends BaseServiceImpl imp //查询文章内容 LambdaQueryWrapper tWrapper1 = new LambdaQueryWrapper<>(); tWrapper1.eq(DraftContentEntity::getDraftId, formDTO.getDraftId()); - tWrapper1.eq(DraftContentEntity::getDelFlag, NumConstant.ZERO_STR); + tWrapper1.eq(DraftContentEntity::getDelFlag, NumConstant.ZERO_STR) + .ne(DraftContentEntity::getContentType,"file"); tWrapper1.orderByDesc(DraftContentEntity::getOrderNum); List contentEntityList = draftContentDao.selectList(tWrapper1); if (!CollectionUtils.isEmpty(contentEntityList)) { @@ -274,6 +275,16 @@ public class DraftServiceImpl extends BaseServiceImpl imp resultDTO.setContentList(contentList); } + LambdaQueryWrapper fileWrapper = new LambdaQueryWrapper<>(); + fileWrapper.eq(DraftContentEntity::getDraftId, formDTO.getDraftId()); + fileWrapper.eq(DraftContentEntity::getDelFlag, NumConstant.ZERO_STR) + .eq(DraftContentEntity::getContentType,"file"); + fileWrapper.orderByDesc(DraftContentEntity::getOrderNum); + List fileContentEntityList = draftContentDao.selectList(fileWrapper); + if (!CollectionUtils.isEmpty(fileContentEntityList)) { + List fileContentList = ConvertUtils.sourceToTarget(fileContentEntityList, DraftPcListResultDTO.Content.class); + resultDTO.setFileList(fileContentList); + } //标签列表 if(!CollectionUtils.isEmpty(resultDTO.getTagNameList())){ LambdaQueryWrapper tWrapper2 = new LambdaQueryWrapper<>(); From f88ac1630dae87d31335e5111732b45f02d1cfe0 Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 15:21:40 +0800 Subject: [PATCH 36/51] fix --- .../src/main/resources/mapper/ArticleDao.xml | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index 694d64209b..8400257fad 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -437,6 +437,7 @@ a.org_id AS "agencyId", a.title AS "title", a.category AS "category", + cd.CATEGORY_NAME, IFNULL(a.preview_content, "") AS "previewContent", a.publish_range_desc AS "publishRangeDesc", a.publisher_id AS "publisher", @@ -453,16 +454,24 @@ ac.img_url AS "imgUrl" FROM article a + inner join category_dict cd on (cd.DEL_FLAG = 0 and a.CATEGORY = cd.ID) LEFT JOIN article_cover ac ON a.id = ac.article_id AND ac.del_flag = '0' WHERE a.del_flag = '0' - - and a.CATEGORY in ( - - #{category} - - ) + + and ( + + a.CATEGORY in ( + + #{ctg} + + ) or + + + a.CATEGORY = #{category} + + ) AND a.id = #{articleId} From fe0536f36b91cf52e64e36a49ec3b21d272bcd3b Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 15:41:13 +0800 Subject: [PATCH 37/51] updateArticle --- .../service/impl/ArticleServiceImpl.java | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index ab7bd3a92f..fe425d7f03 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -1938,30 +1938,34 @@ public class ArticleServiceImpl extends BaseServiceImpl del=new LambdaQueryWrapper<>(); + del.eq(ArticleContentEntity::getArticleId,formDTO.getArticleId()) + .ne(ArticleContentEntity::getContent,"rich_text"); + articleContentDao.delete(del); int orderNum=2; for(UpdateArticleFormDTO.ContentDTO file:formDTO.getFileList()){ - if(StringUtils.isNotBlank(file.getFileId())){ - LambdaUpdateWrapper updateWrapper=new LambdaUpdateWrapper<>(); - updateWrapper.set(ArticleContentEntity::getContent,file.getContent()) - .set(ArticleContentEntity::getFileName,file.getFileName()) - .set(ArticleContentEntity::getUpdatedBy,EpmetRequestHolder.getLoginUserId()) - .set(ArticleContentEntity::getUpdatedTime,new Date()) - .set(ArticleContentEntity::getOrderNum,orderNum) - .eq(ArticleContentEntity::getId,file.getFileId()); - articleContentDao.update(null,updateWrapper); - }else{ - ArticleContentEntity fileDto=new ArticleContentEntity(); - fileDto.setCustomerId(formDTO.getCustomerId()); - fileDto.setArticleId(formDTO.getArticleId()); - fileDto.setContent(file.getContent()); - fileDto.setFileName(file.getFileName()); - fileDto.setContentType("file"); - fileDto.setOrderNum(orderNum); - articleContentDao.insert(fileDto); - } + ArticleContentEntity fileDto=new ArticleContentEntity(); + fileDto.setCustomerId(formDTO.getCustomerId()); + fileDto.setArticleId(formDTO.getArticleId()); + fileDto.setContent(file.getContent()); + fileDto.setFileName(file.getFileName()); + fileDto.setContentType("file"); + fileDto.setOrderNum(orderNum); + articleContentDao.insert(fileDto); orderNum++; } } + //内容类型 图片:img;文字:text;文件:file 富文本:rich_text 如果是工作端小程序发布的文章,在pc编辑后,img和text删除。 + LambdaUpdateWrapper updateWrapper=new LambdaUpdateWrapper<>(); + updateWrapper.eq(ArticleContentEntity::getArticleId,formDTO.getArticleId()) + .ne(ArticleContentEntity::getContentType,"rich_text") + .ne(ArticleContentEntity::getContentType,"file") + .set(ArticleContentEntity::getDelFlag,NumConstant.ONE_STR) + .set(ArticleContentEntity::getUpdatedBy,EpmetRequestHolder.getLoginUserId()) + .set(ArticleContentEntity::getUpdatedTime,new Date()); + articleContentDao.update(null,updateWrapper); + // 3.操作记录 ArticleOperateRecordEntity articleOperateRecord = new ArticleOperateRecordEntity(); articleOperateRecord.setCustomerId(formDTO.getCustomerId()); From a3ed8c0350d7d4956ca907f65882a3820857c098 Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 15:43:02 +0800 Subject: [PATCH 38/51] =?UTF-8?q?fix:=E3=80=90=E7=81=B5=E5=B1=B1-=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E4=BA=BA=E7=BE=A4=E3=80=91=E4=BF=AE=E6=94=B9=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E4=BF=AE=E5=A4=8D=E7=B1=BB=E5=88=AB=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=EF=BC=8C=E5=BF=98=E8=AE=B0=E5=88=A0=E9=99=A4=E6=97=A7?= =?UTF-8?q?=E7=B1=BB=E5=88=AB=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ngShanSpecialCrowdExcelImportListener.java | 2 +- .../service/LingShanSpecialCrowdService.java | 11 ++++- .../impl/LingShanSpecialCrowdServiceImpl.java | 45 ++++++++++++++++--- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index 2edf65c4eb..dfee3a72bb 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -292,7 +292,7 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener personTypes) { - lingShanSpecialCrowdService.savePersonAndTypes(personTypes); + lingShanSpecialCrowdService.savePersonAndTypes(personTypes, false); } /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java index 1a2af0c35a..3221504fc8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -9,6 +9,7 @@ import com.epmet.entity.*; import com.epmet.excel.data.LingShanSpecialCrowdDetailAzbjExcelData; import com.epmet.excel.data.LingShanSpecialCrowdDetailBaseExcelData; import com.epmet.excel.handler.AbstractLingShanSpecialCrowdExcelImportListener; +import com.sun.org.apache.xpath.internal.operations.Bool; import org.apache.poi.ss.formula.functions.T; import java.util.List; @@ -37,7 +38,15 @@ public interface LingShanSpecialCrowdService { */ String validate(LingShanSpecialCrowdDetailBaseExcelData row); - void savePersonAndTypes(List personTypes); + /** + * @description: + * @param personTypes: + * @param hard: 是否硬性写入。true:会覆盖现有的,用于页面的修改。false:会与现有的合并,用户导入 + * @return + * @author: WangXianZhang + * @date: 2023/4/24 3:25 PM + */ + void savePersonAndTypes(List personTypes, Boolean hard); /** * @description: 安置帮教-导入 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 58b343808f..3853d81eca 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -263,7 +263,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ } @Override - public void savePersonAndTypes(List personTypes) { + public void savePersonAndTypes(List personTypes, Boolean hard) { HashMap> resiIdAndTypes = new HashMap<>(); // 将所有的人群类别信息,按照居民id归类为map @@ -283,14 +283,16 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ Set typeSet = entry.getValue(); IcSpecialEntity specialTypeInDb = icSpecialDao.selectByResiId(resiId); if (specialTypeInDb == null) { - //目前还不是特殊人群 + //目前还不是特殊人群,直接新增 specialTypeInDb = new IcSpecialEntity(); specialTypeInDb.setIcResiUser(resiId); specialTypeInDb.setSpecialRqlb(String.join(",", typeSet)); icSpecialDao.insert(specialTypeInDb); } else { - // 已经是特殊人群了,那么追加新类别 - typeSet.addAll(new HashSet<>(Arrays.asList(specialTypeInDb.getSpecialRqlb().split(",")))); + if (! hard) { + // 已经是特殊人群了,但不是硬性写入,就需要合并数据库中已存在的数据。否则直接将最新提交的数据覆盖进去 + typeSet.addAll(new HashSet<>(Arrays.asList(specialTypeInDb.getSpecialRqlb().split(",")))); + } IcSpecialEntity icSpecialUpdate = new IcSpecialEntity(); icSpecialUpdate.setSpecialRqlb(String.join(",", typeSet)); icSpecialUpdate.setId(specialTypeInDb.getId()); @@ -440,6 +442,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ PersonSpecialTypeBean azbjE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.AZBJ.getType()); types2Save.add(azbjE); + } else { + // 修改的时候,前端提交过来是空的,那就需要将现有的删掉 + deleteSpecialCrowdDetail(input.getIdCard(), LingshanSpecialCrowdDetailAzbjEntity.class); } if (input.getSpecialCrowdDetails().getJiedurenyuan() != null) { @@ -450,6 +455,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ PersonSpecialTypeBean jdryE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JDRY.getType()); types2Save.add(jdryE); + } else { + deleteSpecialCrowdDetail(input.getIdCard(), LingshanSpecialCrowdDetailJdryEntity.class); } if (input.getSpecialCrowdDetails().getJingzhanghuanzhe() != null) { @@ -460,6 +467,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ PersonSpecialTypeBean jzhzE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.JZHZ.getType()); types2Save.add(jzhzE); + } else { + deleteSpecialCrowdDetail(input.getIdCard(), LingshanSpecialCrowdDetailJzhzEntity.class); } if (input.getSpecialCrowdDetails().getXinfangrenyuan() != null) { @@ -470,6 +479,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ PersonSpecialTypeBean xfryE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.XFRY.getType()); types2Save.add(xfryE); + } else { + deleteSpecialCrowdDetail(input.getIdCard(), LingshanSpecialCrowdDetailXfryEntity.class); } if (input.getSpecialCrowdDetails().getShequjiaozheng() != null) { @@ -480,12 +491,36 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ PersonSpecialTypeBean sqjzE = new PersonSpecialTypeBean(vt.getResiId(), input.getIdCard(), LingShanSpecialCrowdTypeEnums.SQJZ.getType()); types2Save.add(sqjzE); + } else { + deleteSpecialCrowdDetail(input.getIdCard(), LingshanSpecialCrowdDetailSqjzEntity.class); } // 保存人员类型 - savePersonAndTypes(types2Save); + savePersonAndTypes(types2Save, true); + } + + /** + * @description: 删除特殊人群详情表 + * @param idCard: + * @return + * @author: WangXianZhang + * @date: 2023/4/24 3:33 PM + */ + private void deleteSpecialCrowdDetail(String idCard, Class e) { + if (LingshanSpecialCrowdDetailAzbjEntity.class == e) { + specialCrowdDetailAzbjDao.deletePhysical(idCard); + } else if (LingshanSpecialCrowdDetailXfryEntity.class == e) { + specialCrowdDetailXfryDao.deletePhysical(idCard); + } else if (LingshanSpecialCrowdDetailSqjzEntity.class == e) { + specialCrowdDetailSqjzDao.deletePhysical(idCard); + } else if (LingshanSpecialCrowdDetailJzhzEntity.class == e) { + specialCrowdDetailJzhzDao.deletePhysical(idCard); + } else if (LingshanSpecialCrowdDetailJdryEntity.class == e) { + specialCrowdDetailJdryDao.deletePhysical(idCard); + } } + void setCommonFields(LingshanSpecialCrowdDetailBaseEntity e, String customerId, String orgIdPath, Date now, String staffId) { e.setCustomerId(customerId); e.setOrgIdPath(orgIdPath); From b8136cbb6ffcf88070148451dc8dd75907e0c636 Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 16:00:20 +0800 Subject: [PATCH 39/51] fix --- .../gov-voice-server/src/main/resources/mapper/ArticleDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml index 8400257fad..b33d17a98a 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleDao.xml @@ -454,7 +454,7 @@ ac.img_url AS "imgUrl" FROM article a - inner join category_dict cd on (cd.DEL_FLAG = 0 and a.CATEGORY = cd.ID) + LEFT JOIN category_dict cd on (cd.DEL_FLAG = 0 and a.CATEGORY = cd.ID) LEFT JOIN article_cover ac ON a.id = ac.article_id AND ac.del_flag = '0' WHERE a.del_flag = '0' From 200527744c8a7563e81e1a69cbcfaa36ae7d8d85 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 16:15:02 +0800 Subject: [PATCH 40/51] updateArticle --- .../src/main/java/com/epmet/dao/ArticleContentDao.java | 9 +++++++++ .../com/epmet/service/impl/ArticleServiceImpl.java | 9 +-------- .../src/main/resources/mapper/ArticleContentDao.xml | 10 +++++++++- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleContentDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleContentDao.java index 227fa89114..737329e96d 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleContentDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleContentDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.entity.ArticleContentEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 文章内容表 @@ -36,4 +37,12 @@ public interface ArticleContentDao extends BaseDao { * @return */ ArticleContentEntity selectByArticleId(String articleId); + + /** + * 如果是工作端小程序发布的文章,在pc编辑后,img和text删除。 + * @param articleId + * @param updatedBy + * @return + */ + int updateWxMpContent(@Param("articleId") String articleId, @Param("updatedBy")String updatedBy); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index fe425d7f03..37bcb6077b 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -1957,14 +1957,7 @@ public class ArticleServiceImpl extends BaseServiceImpl updateWrapper=new LambdaUpdateWrapper<>(); - updateWrapper.eq(ArticleContentEntity::getArticleId,formDTO.getArticleId()) - .ne(ArticleContentEntity::getContentType,"rich_text") - .ne(ArticleContentEntity::getContentType,"file") - .set(ArticleContentEntity::getDelFlag,NumConstant.ONE_STR) - .set(ArticleContentEntity::getUpdatedBy,EpmetRequestHolder.getLoginUserId()) - .set(ArticleContentEntity::getUpdatedTime,new Date()); - articleContentDao.update(null,updateWrapper); + articleContentDao.updateWxMpContent(formDTO.getArticleId(),EpmetRequestHolder.getLoginUserId()); // 3.操作记录 ArticleOperateRecordEntity articleOperateRecord = new ArticleOperateRecordEntity(); diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml index 300b4d14bc..95dea30df6 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml @@ -15,4 +15,12 @@ and ac.CONTENT_TYPE ='rich_text' - \ No newline at end of file + + update article_content ac + set ac.del_flag='1', + ac.UPDATED_BY=#{updatedBy}, + ac.UPDATED_TIME=now() + where ac.id = #{articleId} + and ac.CONTENT_TYPE in ('img','text') + + From de31cf49e5461b2d03ad0fc9f450f2108db8a597 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 16:21:18 +0800 Subject: [PATCH 41/51] updateArticle --- .../src/main/resources/mapper/ArticleContentDao.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml index 95dea30df6..6949d87a1d 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml @@ -22,5 +22,6 @@ ac.UPDATED_TIME=now() where ac.id = #{articleId} and ac.CONTENT_TYPE in ('img','text') + and ac.del_flag='0' From 927b4e5fd4e2d65169e02f3c5ca17d28085d0d1b Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Apr 2023 16:59:38 +0800 Subject: [PATCH 42/51] =?UTF-8?q?1.fix:=E7=89=B9=E6=AE=8A=E4=BA=BA?= =?UTF-8?q?=E7=BE=A4=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E6=9C=89=E9=97=AE?= =?UTF-8?q?=E9=A2=98=202.=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=B1=85=E6=B0=91=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=E5=AD=97=E6=AE=B5=203.=E7=89=B9=E6=AE=8A=E4=BA=BA?= =?UTF-8?q?=E7=BE=A4=E8=AF=A6=E6=83=85=E5=A2=9E=E5=8A=A0=E5=B1=85=E6=B0=91?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E8=BF=94=E5=9B=9E=204.=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E4=BA=BA=E7=BE=A4=E4=BF=9D=E5=AD=98=E5=92=8C=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E7=9A=84=E8=BF=94=E5=9B=9E=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LingShanSpecialTypeSaveFormDTO.java | 15 ++++++ .../LingShanSpecialTypeSaveResultDTO.java | 8 +++ .../LingShanSpecialCrowdController.java | 47 ------------------ .../com/epmet/entity/IcResiUserEntity.java | 5 ++ .../impl/LingShanSpecialCrowdServiceImpl.java | 8 +++ .../special_crowd_anzhibangjiao_import.xlsx | Bin 9553 -> 9475 bytes 6 files changed, 36 insertions(+), 47 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java index d0ede466a0..dd7a76b94b 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveFormDTO.java @@ -1,6 +1,8 @@ package com.epmet.dto.form.lingshan; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -11,6 +13,7 @@ public class LingShanSpecialTypeSaveFormDTO { private String name; private String idCard; + private String headPhoto; private SpecialCrowdDetails specialCrowdDetails; @Data @@ -34,8 +37,12 @@ public class LingShanSpecialTypeSaveFormDTO { * 释放日期 */ @NotNull(message = "释放日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date releaseDate; + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date originPrisonTerm; /** @@ -51,6 +58,8 @@ public class LingShanSpecialTypeSaveFormDTO { /** * 安置日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date emplacementDate; /** @@ -89,6 +98,8 @@ public class LingShanSpecialTypeSaveFormDTO { /** * 初次发现日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date firstDiscoveryDate; /** @@ -182,11 +193,15 @@ public class LingShanSpecialTypeSaveFormDTO { /** * 矫正开始日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date rectificateStartDate; /** * 矫正结束日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date rectificateEndDate; /** diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java index 3ed43eb2bd..f1e7a75eca 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/lingshan/LingShanSpecialTypeSaveResultDTO.java @@ -2,6 +2,7 @@ package com.epmet.dto.form.lingshan; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -17,6 +18,7 @@ public class LingShanSpecialTypeSaveResultDTO { private String domicilePlace; private String name; private String mobile; + private String headPhoto; private String address; private String idCard; private SpecialCrowdDetails specialCrowdDetails = new SpecialCrowdDetails(); @@ -42,8 +44,10 @@ public class LingShanSpecialTypeSaveResultDTO { * 释放日期 */ @NotNull(message = "释放日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") private Date releaseDate; + @JsonFormat(pattern = "yyyy-MM-dd") private Date originPrisonTerm; /** @@ -59,6 +63,7 @@ public class LingShanSpecialTypeSaveResultDTO { /** * 安置日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") private Date emplacementDate; /** @@ -97,6 +102,7 @@ public class LingShanSpecialTypeSaveResultDTO { /** * 初次发现日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") private Date firstDiscoveryDate; /** @@ -190,11 +196,13 @@ public class LingShanSpecialTypeSaveResultDTO { /** * 矫正开始日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") private Date rectificateStartDate; /** * 矫正结束日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") private Date rectificateEndDate; /** diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index 19862d22d5..a0814a8d9c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -140,53 +140,6 @@ public class LingShanSpecialCrowdController { } } - // /** - // * @description: 安置帮教新增 - // * @param azbjData: - // * @return - // * @author: WangXianZhang - // * @date: 2023/4/20 2:50 PM - // */ - // @PostMapping("anzhibangjiao/save") - // public Result saveSpecialCrowd(@RequestBody LingShanSpecialCrowdDetailAzbjExcelData azbjData) { - // ValidatorUtils.validateEntity(azbjData); - // - // lingShanSpecialCrowdService.createSpecialCrowd(azbjData, "anzhibangjiao"); - // return new Result(); - // } - // - // @PostMapping("jiedurenyuan/save") - // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJdryExcelData jdryData) { - // ValidatorUtils.validateEntity(jdryData); - // - // lingShanSpecialCrowdService.createSpecialCrowd(jdryData, "jiedurenyuan"); - // return new Result(); - // } - // - // @PostMapping("jingzhanhuanzhe/save") - // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailJzhzExcelData jzhzData) { - // ValidatorUtils.validateEntity(jzhzData); - // - // lingShanSpecialCrowdService.createSpecialCrowd(jzhzData, "jingzhanhuanzhe"); - // return new Result(); - // } - // - // @PostMapping("shequjiaozheng/save") - // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailSqjzExcelData sqjzData) { - // ValidatorUtils.validateEntity(sqjzData); - // - // lingShanSpecialCrowdService.createSpecialCrowd(sqjzData, "shequjiaozheng"); - // return new Result(); - // } - // - // @PostMapping("xinfangrenyuan/save") - // public Result saveSpecialCrowd(@RequestBody LingshanSpecialCrowdDetailXfryExcelData xfryData) { - // ValidatorUtils.validateEntity(xfryData); - // - // lingShanSpecialCrowdService.createSpecialCrowd(xfryData, "xinfangrenyuan"); - // return new Result(); - // } - /** * @description: 保存 * @param input: diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiUserEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiUserEntity.java index a78fae885d..966b7f8553 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiUserEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiUserEntity.java @@ -96,6 +96,11 @@ public class IcResiUserEntity extends BaseEpmetEntity { */ private String gender; + /** + * 头像 + */ + private String headPhoto; + /** * 证件号 */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 3853d81eca..9b66ceb6e3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -433,6 +433,11 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ ArrayList types2Save = new ArrayList<>(); + // 保存居民头像 + HashMap dm = new HashMap<>(); + dm.put("HEAD_PHOTO", input.getHeadPhoto()); + icResiUserDao.upTable("ic_resi_user", vt.getResiId(), dm); + // 保存人群详情 if (input.getSpecialCrowdDetails().getAnzhibangjiao() != null) { LingshanSpecialCrowdDetailAzbjEntity azbj = ConvertUtils.sourceToTarget(input.getSpecialCrowdDetails().getAnzhibangjiao(), LingshanSpecialCrowdDetailAzbjEntity.class); @@ -544,6 +549,9 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ LingShanSpecialTypeSaveResultDTO d = new LingShanSpecialTypeSaveResultDTO(); + // 头像 + d.setHeadPhoto(person.getHeadPhoto()); + // 2.查询人员类别详情 LambdaQueryWrapper azbjQ = new LambdaQueryWrapper<>(); azbjQ.eq(LingshanSpecialCrowdDetailAzbjEntity::getIdCard, person.getIdCard()); diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/special_crowd_anzhibangjiao_import.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/special_crowd_anzhibangjiao_import.xlsx index f3e412780e0b28c69d1c5ff04576e10d697dc442..a50dfb04b287fccafa40aec1aa34840ee871fa96 100644 GIT binary patch delta 4614 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 From b7e03649adc49c855b40dbcf97699203dfa937b5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 17:03:16 +0800 Subject: [PATCH 43/51] fix --- .../main/java/com/epmet/service/impl/ArticleServiceImpl.java | 5 +++-- .../src/main/resources/mapper/ArticleContentDao.xml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index 37bcb6077b..cb3524b70f 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -1824,6 +1824,7 @@ public class ArticleServiceImpl extends BaseServiceImpl contentEntityList = articleContentDao.selectList(tWrapper1); + resultDTO.setContentList(new ArrayList<>()); if (!CollectionUtils.isEmpty(contentEntityList)) { List contentList = ConvertUtils.sourceToTarget(contentEntityList, PublishedListResultDTO.Content.class); resultDTO.setContentList(contentList); @@ -1938,10 +1939,10 @@ public class ArticleServiceImpl extends BaseServiceImpl del=new LambdaQueryWrapper<>(); del.eq(ArticleContentEntity::getArticleId,formDTO.getArticleId()) - .ne(ArticleContentEntity::getContent,"rich_text"); + .eq(ArticleContentEntity::getContentType,"file"); articleContentDao.delete(del); int orderNum=2; for(UpdateArticleFormDTO.ContentDTO file:formDTO.getFileList()){ diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml index 6949d87a1d..9614ff32fa 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml @@ -11,7 +11,7 @@ article_content ac WHERE ac.DEL_FLAG = '0' - AND ac.ID = #{articleId} + AND ac.ARTICLE_ID = #{articleId} and ac.CONTENT_TYPE ='rich_text' From 633d3915856dec976a1159c166247b731330b3c6 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 17:27:14 +0800 Subject: [PATCH 44/51] fix --- .../src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java | 1 - .../src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java | 1 - .../src/main/java/com/epmet/service/impl/ArticleServiceImpl.java | 1 + 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java index aef08ba3ff..1433f2f1b6 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddOrSaveDraftFormDTO.java @@ -93,7 +93,6 @@ public class AddOrSaveDraftFormDTO implements Serializable { public static class ContentDTO { public ContentDTO() { } - private String fileId; private String content; private String fileName; } diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java index 9c01032aff..4c1a305203 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java @@ -101,7 +101,6 @@ public class UpdateArticleFormDTO { public static class ContentDTO { public ContentDTO() { } - private String fileId; private String content; private String fileName; } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java index cb3524b70f..fbdb18f5ed 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java @@ -1829,6 +1829,7 @@ public class ArticleServiceImpl extends BaseServiceImpl contentList = ConvertUtils.sourceToTarget(contentEntityList, PublishedListResultDTO.Content.class); resultDTO.setContentList(contentList); } + // 附件列表 LambdaQueryWrapper fileWrapper = new LambdaQueryWrapper<>(); fileWrapper.eq(ArticleContentEntity::getArticleId, formDTO.getArticleId()); fileWrapper.eq(ArticleContentEntity::getDelFlag, NumConstant.ZERO_STR); From de5dc99ba7b10f83ecfb2b250ccd3e1ef8014768 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Mon, 24 Apr 2023 17:54:05 +0800 Subject: [PATCH 45/51] fix --- .../src/main/resources/mapper/ArticleContentDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml index 52007cee9e..9a7b45fc31 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml @@ -11,7 +11,7 @@ article_content ac WHERE ac.DEL_FLAG = '0' - AND ac.ID = #{articleId} + AND ac.ARTICLE_ID = #{articleId} \ No newline at end of file From 08369aff3d2ed50b09fce06720400f3749ce4294 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 25 Apr 2023 15:39:11 +0800 Subject: [PATCH 46/51] =?UTF-8?q?1.=E6=96=87=E7=AB=A0=E6=A0=8F=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0tree=E6=8E=A5=E5=8F=A3=202.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=80=9A=E8=BF=87=E7=88=B6id=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=AD=90=E6=A0=8F=E7=9B=AE=E5=88=97=E8=A1=A8=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CategoryDictController.java | 83 +++++++++++++++++++ .../epmet/service/CategoryDictService.java | 2 + .../service/impl/CategoryDictServiceImpl.java | 13 ++- 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java index 40d67f975f..fae386fced 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java @@ -10,12 +10,20 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.CategoryDictDTO; import com.epmet.service.CategoryDictService; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** @@ -31,12 +39,87 @@ public class CategoryDictController { @Autowired private CategoryDictService categoryDictService; + @Data + @NoArgsConstructor + public static class TreeNode { + + private String pid; + private String id; + private String categoryName; + + private List children = new ArrayList<>(); + + public TreeNode(String pid, String id, String categoryName) { + this.pid = pid; + this.id = id; + this.categoryName = categoryName; + } + } + + @GetMapping("tree") + public Result> tree() { + List treeNodes = buildTree(categoryDictService.list(1, 100)); + return new Result().ok(treeNodes); + } + + /** + * 树形结构输出 + */ @RequestMapping("list") public Result> list(@RequestParam Integer pageNo, @RequestParam Integer pageSize){ List list = categoryDictService.list(pageNo, pageSize); return new Result>().ok(list); } + /** + * @description: 根据父级栏目id查询子栏目列表 + * @param parentCategoryId: 父级栏目id + * @return + * @author: WangXianZhang + * @date: 2023/4/25 3:33 PM + */ + @GetMapping("subCategories") + public Result> listSubCategories(@RequestParam("parentCategoryId") String parentCategoryId) { + List list = categoryDictService.listSubCategories(parentCategoryId); + return new Result>().ok(list); + } + + /** + * @description: 构建树状结构 + * @param list: + * @return + * @author: WangXianZhang + * @date: 2023/4/25 3:38 PM + */ + private List buildTree(List list) { + + //总共2级,直接构建就行了。 + List pNodes = new ArrayList<>(); + List sNodes = new ArrayList<>(); + + // 过滤出一级和二级节点 + for (CategoryDictDTO ele : list) { + if (StringUtils.isBlank(ele.getPid()) || "0".equals(ele.getPid())) { + // 是一级节点 + pNodes.add(new TreeNode(ele.getPid(), ele.getId(), ele.getCategoryName())); + } else { + // 二级节点 + sNodes.add(new TreeNode(ele.getPid(), ele.getId(), ele.getCategoryName())); + } + } + + // 追加二级节点 + for (TreeNode sNode : sNodes) { + for (TreeNode pNode : pNodes) { + if (pNode.getId().equals(sNode.getPid())) { + pNode.getChildren().add(sNode); + } + } + } + + return pNodes; + } + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) public Result get(@PathVariable("id") String id){ CategoryDictDTO data = categoryDictService.get(id); diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java index b070fd1c34..40fb125ae6 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java @@ -85,4 +85,6 @@ public interface CategoryDictService extends BaseService { * @date: 2023/4/11 7:06 PM */ List list(Integer pageNo, Integer pageSize); + + List listSubCategories(String parentCategoryId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java index e48f6fd893..66ec701d54 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java @@ -143,7 +143,18 @@ public class CategoryDictServiceImpl extends BaseServiceImpl list(Integer pageNo, Integer pageSize) { - List list = baseDao.selectList(null); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(CategoryDictEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId()); + List list = baseDao.selectList(query); + return ConvertUtils.sourceToTarget(list, CategoryDictDTO.class); + } + + @Override + public List listSubCategories(String parentCategoryId) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(CategoryDictEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId()); + query.eq(CategoryDictEntity::getPid, parentCategoryId); + List list = baseDao.selectList(query); return ConvertUtils.sourceToTarget(list, CategoryDictDTO.class); } } \ No newline at end of file From 6be81b4f594c309f7aa6a6a8de26aec1f950fad9 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 25 Apr 2023 15:47:25 +0800 Subject: [PATCH 47/51] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=81=E6=9C=89?= =?UTF-8?q?=E5=8C=96=E9=83=A8=E7=BD=B2=E7=9A=84=E4=B8=80=E7=82=B9=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/epmet-cloud.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/epmet-cloud.md b/doc/epmet-cloud.md index 43cd0d2f63..e47ddfc70e 100644 --- a/doc/epmet-cloud.md +++ b/doc/epmet-cloud.md @@ -10,4 +10,11 @@ 例如:有A、B2个服务,并且A调用B,如果我们只需要开发A服务,那本地只启动A服务即可,A调用B的时候,会调用服务器的B服务。 如果需要开发AB2个服务,那么将A中的FeignClient的url属性指向localhost。 PS:目前正在测试通过负载均衡器和本地环境变量实现动态修改目标服务IP,成功之后就不需要再修改FeignClient的url,配置一下环境变量即可,到时候具体说 -``` \ No newline at end of file +``` + + +## 私有化部署 +##### 需要开放哪些域名 + +- epmet-cloud.elinkservice.cn 微信交互代理 +- dysmsapi.aliyuncs.com 阿里云短信 \ No newline at end of file From f18bb7b8cababf53a398f493cfaf9af1019beec9 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 25 Apr 2023 15:57:44 +0800 Subject: [PATCH 48/51] =?UTF-8?q?=E5=BE=AE=E8=B0=83=E5=B1=85=E6=B0=91?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8F=98=E6=9B=B4=E8=AE=B0=E5=BD=95=E4=B8=AD?= =?UTF-8?q?=E7=9A=84customerId=EF=BC=8CstaffId=E7=9A=84=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IcResiUserServiceImpl.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index c49ecc7554..7b9434043a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -708,7 +708,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl", resiUserId)); } //2022-1-18 信息修改判断基础信息表人员网格、小区、楼栋、单元、房屋维度数据以及十八类的类别数据是否变化,相应生成变更记录和变更明细数据 sun start - icUserChangeRecord(tokenDto, entity, map); + icUserChangeRecord(entity, map); //2022-1-18 sun end //2.更新主表数据 if (map.size() > NumConstant.ONE) { @@ -789,10 +789,16 @@ public class IcResiUserServiceImpl extends BaseServiceImpl map) { + * @description: 生成居民变更记录 + * @param null: + * @return + * @author: sun + */ + public void icUserChangeRecord(IcResiUserEntity entity, LinkedHashMap map) { + // prepare + String customerId = EpmetRequestHolder.getLoginUserCustomerId(); + String staffId = EpmetRequestHolder.getLoginUserId(); + java.util.Date date = new java.util.Date(); //1.判断维度数据是否修改【网格、小区、楼栋、单元、房间有变化则先走人员调动逻辑】 if ((map.containsKey("GRID_ID") && !entity.getGridId().equals(map.get("GRID_ID"))) || (map.containsKey("VILLAGE_ID") && !entity.getVillageId().equals(map.get("VILLAGE_ID"))) @@ -809,13 +815,13 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> categoryListResult = operCustomizeOpenFeignClient.getCategoryList(sfdto); if (!categoryListResult.success()) { throw new RenException("居民信息修改,获取客户居民类别预警配置表数据失败"); @@ -840,7 +846,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl NumConstant.ZERO) { //变更记录 - CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - changeRecordEntity.setCustomerId(tokenDto.getCustomerId()); - changeRecordEntity.setOperatorId(tokenDto.getUserId()); + CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(customerId, staffId); + changeRecordEntity.setCustomerId(customerId); + changeRecordEntity.setOperatorId(staffId); changeRecordEntity.setIcUserId(entity.getId()); changeRecordEntity.setOperatorName(staffInfoCache.getRealName()); changeRecordEntity.setIcUserName(map.containsKey("NAME") ? map.get("NAME") : entity.getName()); From 0bae6a31477afa3183ecad6ce170f7c776c88229 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 25 Apr 2023 16:54:55 +0800 Subject: [PATCH 49/51] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=92=8C=E6=96=B0=E5=A2=9E=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=8F=98=E6=9B=B4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/LingShanSpecialCrowdServiceImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 9b66ceb6e3..34a5a98c8f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -43,6 +43,7 @@ import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.remote.EpmetUserRemoteService; +import com.epmet.service.IcResiUserService; import com.epmet.service.LingShanSpecialCrowdService; import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; @@ -299,9 +300,14 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ icSpecialDao.updateById(icSpecialUpdate); } - // 设置居民的IS_SPECIAL字段为1 - HashMap updateMap = new HashMap<>(); + LinkedHashMap updateMap = new LinkedHashMap<>(); updateMap.put("IS_SPECIAL", "1"); + + // 居民变更记录(一定要在更新主表IS_SPECIAL之前执行,否则检测不出类别变更) + IcResiUserServiceImpl resiService = SpringContextUtils.getBean(IcResiUserServiceImpl.class); + resiService.icUserChangeRecord(icResiUserDao.selectById(resiId), updateMap); + + // 设置居民的IS_SPECIAL字段为1 icResiUserDao.upTable("ic_resi_user", resiId, updateMap); } } From a9c59473edee7153cb772cc278b280becd207df0 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 27 Apr 2023 12:32:51 +0800 Subject: [PATCH 50/51] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4?= =?UTF-8?q?=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=9F=B1=E7=8A=B6=E5=9B=BE=E5=92=8C?= =?UTF-8?q?=E5=90=84=E7=B1=BB=E4=BA=BA=E5=91=98=E6=95=B0=E9=87=8F=E3=80=82?= =?UTF-8?q?=E4=B8=8B=E4=B8=80=E6=AD=A5=E8=A6=81=E6=9F=A5=E8=AF=A2=E5=90=84?= =?UTF-8?q?=E7=B1=BB=E4=BA=BA=E5=91=98=E5=88=86=E5=B8=83=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ngShanSpecialCrowdStatsByOrgResultDTO.java | 25 ++++ ...ecialCrowdStatsBySpecialTypeResultDTO.java | 16 +++ .../controller/LingShanScreenController.java | 52 +++++++++ .../LingshanSpecialCrowdDetailAzbjDao.java | 3 + .../LingshanSpecialCrowdDetailJdryDao.java | 3 + .../LingshanSpecialCrowdDetailJzhzDao.java | 3 + .../LingshanSpecialCrowdDetailSqjzDao.java | 3 + .../LingshanSpecialCrowdDetailXfryDao.java | 3 + ...ngShanSpecialCrowdDetailBaseExcelData.java | 5 + ...ngShanSpecialCrowdExcelImportListener.java | 2 + .../epmet/service/LingShanScreenService.java | 14 +++ .../impl/LingShanScreenServiceImpl.java | 108 ++++++++++++++++++ .../impl/LingShanSpecialCrowdServiceImpl.java | 3 + .../LingshanSpecialCrowdDetailAzbjDao.xml | 12 ++ .../LingshanSpecialCrowdDetailJdryDao.xml | 12 ++ .../LingshanSpecialCrowdDetailJzhzDao.xml | 13 ++- .../LingshanSpecialCrowdDetailSqjzDao.xml | 13 +++ .../LingshanSpecialCrowdDetailXfryDao.xml | 14 +++ 18 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsByOrgResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsBySpecialTypeResultDTO.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanScreenService.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsByOrgResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsByOrgResultDTO.java new file mode 100644 index 0000000000..726bd63450 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsByOrgResultDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.result.lingshan; + +import lombok.Data; + +@Data +public class LingShanSpecialCrowdStatsByOrgResultDTO { + + private String orgId; + + private String orgIdPath; + /** + * 组织层级。agency:行政组织。grid:网格 + */ + private String orgType; + /** + * 组织名称 + */ + private String orgName; + /** + * 数量 + */ + private Integer quantity = 0; + + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsBySpecialTypeResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsBySpecialTypeResultDTO.java new file mode 100644 index 0000000000..8b33d96e07 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/lingshan/LingShanSpecialCrowdStatsBySpecialTypeResultDTO.java @@ -0,0 +1,16 @@ +package com.epmet.dto.result.lingshan; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +public class LingShanSpecialCrowdStatsBySpecialTypeResultDTO { + + private String specialType; + private String specialTypeName; + private Integer quantity; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java new file mode 100644 index 0000000000..91a30760f7 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java @@ -0,0 +1,52 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsBySpecialTypeResultDTO; +import com.epmet.service.LingShanScreenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 灵山大屏 + */ +@RestController +@RequestMapping("lingshanScreen") +public class LingShanScreenController { + + @Autowired + private LingShanScreenService lingShanScreenService; + + /** + * @description: 特殊人群-按组织分组统计数量 + * @param parentAgencyId: + * @return + * @author: WangXianZhang + * @date: 2023/4/27 10:20 AM + */ + @GetMapping("specialCrowdStats/qtyOfSubOrg") + public Result specialCrowdStatsCountBySubOrg(@RequestParam("parentAgencyId") String parentAgencyId) { + + List l = lingShanScreenService.specialCrowdStatsCountBySubOrg(parentAgencyId); + return new Result().ok(l); + } + + /** + * @description: 组织下每一类人群数量 + * @param parentAgencyId: + * @return + * @author: WangXianZhang + * @date: 2023/4/27 12:16 PM + */ + @GetMapping("specialCrowdStats/qtyOfSpecialType") + public Result specialCrowdStatsCountBySpecialType(@RequestParam("parentAgencyId") String parentAgencyId) { + List l = lingShanScreenService.specialCrowdStatsCountBySpecialType(parentAgencyId); + return new Result().ok(l); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java index 64e914b7ca..210f5f9ada 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailAzbjDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; import com.epmet.entity.LingshanSpecialCrowdDetailAzbjEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -19,4 +20,6 @@ public interface LingshanSpecialCrowdDetailAzbjDao extends BaseDao l); void deletePhysical(@Param("idCard") String idCard); + + List statsCountsByOrgIds(@Param("orgIdPaths") List orgIdPaths); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java index 488a75c7ec..195d45f550 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJdryDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; import com.epmet.entity.LingshanSpecialCrowdDetailJdryEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,4 +19,6 @@ public interface LingshanSpecialCrowdDetailJdryDao extends BaseDao l); void deletePhysical(@Param("idCard") String idCard); + + List statsCountsByOrgIds(@Param("orgIdPaths") List orgIdPaths); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java index 1337bdfe5d..96505e5ce8 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailJzhzDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; import com.epmet.entity.LingshanSpecialCrowdDetailJzhzEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,4 +19,6 @@ public interface LingshanSpecialCrowdDetailJzhzDao extends BaseDao l); void deletePhysical(@Param("idCard") String idCard); + + List statsCountsByOrgIds(@Param("orgIdPaths") List orgIdPaths); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java index ff36f2d88e..d9e50ebb6a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailSqjzDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; import com.epmet.entity.LingshanSpecialCrowdDetailSqjzEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,4 +19,6 @@ public interface LingshanSpecialCrowdDetailSqjzDao extends BaseDao l); void deletePhysical(@Param("idCard") String idCard); + + List statsCountsByOrgIds(@Param("orgIdPaths") List orgIdPaths); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java index f118886bcc..631be26f5f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/LingshanSpecialCrowdDetailXfryDao.java @@ -1,6 +1,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; import com.epmet.entity.LingshanSpecialCrowdDetailXfryEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -18,4 +19,6 @@ public interface LingshanSpecialCrowdDetailXfryDao extends BaseDao l); void deletePhysical(@Param("idCard") String idCard); + + List statsCountsByOrgIds(@Param("orgIdPaths") List orgIdPaths); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java index 537924183b..2c5c66ea59 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/LingShanSpecialCrowdDetailBaseExcelData.java @@ -35,4 +35,9 @@ public class LingShanSpecialCrowdDetailBaseExcelData extends LingShanSpecialCrow */ @ExcelIgnore private String resiId; + + /** + * 网格id + */ + private String resiGridId; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index dfee3a72bb..23dd2802ad 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -258,6 +258,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener specialCrowdStatsCountBySubOrg(String parentAgencyId); + + List specialCrowdStatsCountBySpecialType(String parentAgencyId); +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java new file mode 100644 index 0000000000..45bb14cc74 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java @@ -0,0 +1,108 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.utils.PidUtils; +import com.epmet.constant.LevelConstant; +import com.epmet.dao.*; +import com.epmet.dto.result.SubOrgResDTO; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsByOrgResultDTO; +import com.epmet.dto.result.lingshan.LingShanSpecialCrowdStatsBySpecialTypeResultDTO; +import com.epmet.entity.*; +import com.epmet.enums.LingShanSpecialCrowdTypeEnums; +import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.service.LingShanScreenService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class LingShanScreenServiceImpl implements LingShanScreenService, ResultDataResolver { + + @Autowired + private LingshanSpecialCrowdDetailXfryDao xfryDao; + + @Autowired + private LingshanSpecialCrowdDetailAzbjDao azbjDao; + + @Autowired + private LingshanSpecialCrowdDetailJdryDao jdryDao; + + @Autowired + private LingshanSpecialCrowdDetailJzhzDao jzhzDao; + + @Autowired + private LingshanSpecialCrowdDetailSqjzDao sqjzDao; + + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + + @Override + public List specialCrowdStatsCountBySubOrg(String parentAgencyId) { + List subOrgs = getResultDataOrThrowsException(govOrgOpenFeignClient.subOrgList(parentAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, null); + List orgIdPaths = subOrgs.stream().map(sub -> PidUtils.convertPid2OrgIdPath(sub.getOrgId(), sub.getPids())).collect(Collectors.toList()); + + List rl = subOrgs.stream().map(sub -> { + LingShanSpecialCrowdStatsByOrgResultDTO t = new LingShanSpecialCrowdStatsByOrgResultDTO(); + t.setOrgId(sub.getOrgId()); + t.setOrgName(sub.getOrgName()); + t.setOrgType(sub.getOrgType()); + t.setOrgIdPath(PidUtils.convertPid2OrgIdPath(sub.getOrgId(), sub.getPids())); + return t; + }).collect(Collectors.toList()); + + + List ol = azbjDao.statsCountsByOrgIds(orgIdPaths); + ol.addAll(sqjzDao.statsCountsByOrgIds(orgIdPaths)); + ol.addAll(xfryDao.statsCountsByOrgIds(orgIdPaths)); + ol.addAll(jdryDao.statsCountsByOrgIds(orgIdPaths)); + ol.addAll(jzhzDao.statsCountsByOrgIds(orgIdPaths)); + + // 开始给rl++ + for (LingShanSpecialCrowdStatsByOrgResultDTO o : ol) { + for (LingShanSpecialCrowdStatsByOrgResultDTO r : rl) { + if (o.getOrgIdPath().contains(r.getOrgIdPath())) { + // 如果ol中的数据,orgIdPath包含了这个组织的orgIdPath,说明这条数据就是这个组织的数据,那就++把 + r.setQuantity(r.getQuantity() + o.getQuantity()); + } + } + } + + return rl; + } + + @Override + public List specialCrowdStatsCountBySpecialType(String parentAgencyId) { + String orgIdPath = CustomerOrgRedis.getOrgIdPath(parentAgencyId, LevelConstant.AGENCY); + + ArrayList l = new ArrayList<>(); + + LambdaQueryWrapper azbjq = new LambdaQueryWrapper<>(); + azbjq.likeRight(LingshanSpecialCrowdDetailAzbjEntity::getOrgIdPath, orgIdPath); + l.add(new LingShanSpecialCrowdStatsBySpecialTypeResultDTO(LingShanSpecialCrowdTypeEnums.AZBJ.getType(), LingShanSpecialCrowdTypeEnums.AZBJ.getName(), azbjDao.selectCount(azbjq))); + + LambdaQueryWrapper sqjzq = new LambdaQueryWrapper<>(); + sqjzq.likeRight(LingshanSpecialCrowdDetailSqjzEntity::getOrgIdPath, orgIdPath); + l.add(new LingShanSpecialCrowdStatsBySpecialTypeResultDTO(LingShanSpecialCrowdTypeEnums.SQJZ.getType(), LingShanSpecialCrowdTypeEnums.SQJZ.getName(), sqjzDao.selectCount(sqjzq))); + + LambdaQueryWrapper xfryq = new LambdaQueryWrapper<>(); + xfryq.likeRight(LingshanSpecialCrowdDetailXfryEntity::getOrgIdPath, orgIdPath); + l.add(new LingShanSpecialCrowdStatsBySpecialTypeResultDTO(LingShanSpecialCrowdTypeEnums.XFRY.getType(), LingShanSpecialCrowdTypeEnums.XFRY.getName(), xfryDao.selectCount(xfryq))); + + LambdaQueryWrapper jdryq = new LambdaQueryWrapper<>(); + jdryq.likeRight(LingshanSpecialCrowdDetailJdryEntity::getOrgIdPath, orgIdPath); + l.add(new LingShanSpecialCrowdStatsBySpecialTypeResultDTO(LingShanSpecialCrowdTypeEnums.JDRY.getType(), LingShanSpecialCrowdTypeEnums.JDRY.getName(), jdryDao.selectCount(jdryq))); + + LambdaQueryWrapper jzhzq = new LambdaQueryWrapper<>(); + jzhzq.likeRight(LingshanSpecialCrowdDetailJzhzEntity::getOrgIdPath, orgIdPath); + l.add(new LingShanSpecialCrowdStatsBySpecialTypeResultDTO(LingShanSpecialCrowdTypeEnums.JZHZ.getType(), LingShanSpecialCrowdTypeEnums.JZHZ.getName(), jzhzDao.selectCount(jzhzq))); + + return l; + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 34a5a98c8f..a4d83cef6e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -259,6 +259,7 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ // 设置居民id row.setResiId(resiEntity.getId()); + row.setResiGridId(resiEntity.getGridId()); return null; } @@ -435,6 +436,8 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId); String orgIdPath = PidUtils.convertPid2OrgIdPath(staffInfo.getAgencyId(), staffInfo.getAgencyPIds()); + orgIdPath = PidUtils.convertPid2OrgIdPath(vt.getResiGridId(), orgIdPath); + Date now = new Date(); ArrayList types2Save = new ArrayList<>(); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml index 35938055e8..4a4dee13a3 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailAzbjDao.xml @@ -55,6 +55,18 @@ delete from lingshan_special_crowd_detail_azbj where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml index 7b18cda7b6..9d0e724a4c 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJdryDao.xml @@ -35,5 +35,17 @@ delete from lingshan_special_crowd_detail_jdry where ID_CARD=#{idCard} + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml index ad68997b41..1bc308d6e2 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailJzhzDao.xml @@ -60,5 +60,16 @@ delete from lingshan_special_crowd_detail_jzhz where ID_CARD=#{idCard} - + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml index c9e6c8fa72..9b729f29b9 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailSqjzDao.xml @@ -58,5 +58,18 @@ delete from lingshan_special_crowd_detail_sqjz where ID_CARD=#{idCard} + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml index 44f90dd401..ef6c561bbe 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/LingshanSpecialCrowdDetailXfryDao.xml @@ -60,4 +60,18 @@ + + + \ No newline at end of file From 67396a3ad18bef5905057574a1f693825514406a Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 27 Apr 2023 16:59:29 +0800 Subject: [PATCH 51/51] =?UTF-8?q?=E7=89=B9=E6=AE=8A=E4=BA=BA=E7=BE=A4?= =?UTF-8?q?=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=9F=A5=E8=AF=A2=E5=90=84=E7=B1=BB?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=88=86=E5=B8=83=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LingShanScreenController.java | 5 ++-- .../epmet/service/LingShanScreenService.java | 2 +- .../impl/LingShanScreenServiceImpl.java | 24 ++++++++++++++----- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java index 91a30760f7..ab9b8a7240 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanScreenController.java @@ -30,9 +30,10 @@ public class LingShanScreenController { * @date: 2023/4/27 10:20 AM */ @GetMapping("specialCrowdStats/qtyOfSubOrg") - public Result specialCrowdStatsCountBySubOrg(@RequestParam("parentAgencyId") String parentAgencyId) { + public Result specialCrowdStatsCountBySubOrg(@RequestParam("parentAgencyId") String parentAgencyId, + @RequestParam(value = "specialType", required = false) String specialType) { - List l = lingShanScreenService.specialCrowdStatsCountBySubOrg(parentAgencyId); + List l = lingShanScreenService.specialCrowdStatsCountBySubOrg(parentAgencyId, specialType); return new Result().ok(l); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanScreenService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanScreenService.java index bcea4e338b..b52d51fc12 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanScreenService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanScreenService.java @@ -8,7 +8,7 @@ import java.util.List; public interface LingShanScreenService { - List specialCrowdStatsCountBySubOrg(String parentAgencyId); + List specialCrowdStatsCountBySubOrg(String parentAgencyId, String specialType); List specialCrowdStatsCountBySpecialType(String parentAgencyId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java index 45bb14cc74..fc2912ebb6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanScreenServiceImpl.java @@ -15,6 +15,7 @@ import com.epmet.entity.*; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.LingShanScreenService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,7 +45,7 @@ public class LingShanScreenServiceImpl implements LingShanScreenService, ResultD private GovOrgOpenFeignClient govOrgOpenFeignClient; @Override - public List specialCrowdStatsCountBySubOrg(String parentAgencyId) { + public List specialCrowdStatsCountBySubOrg(String parentAgencyId, String specialType) { List subOrgs = getResultDataOrThrowsException(govOrgOpenFeignClient.subOrgList(parentAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), null, null); List orgIdPaths = subOrgs.stream().map(sub -> PidUtils.convertPid2OrgIdPath(sub.getOrgId(), sub.getPids())).collect(Collectors.toList()); @@ -58,11 +59,22 @@ public class LingShanScreenServiceImpl implements LingShanScreenService, ResultD }).collect(Collectors.toList()); - List ol = azbjDao.statsCountsByOrgIds(orgIdPaths); - ol.addAll(sqjzDao.statsCountsByOrgIds(orgIdPaths)); - ol.addAll(xfryDao.statsCountsByOrgIds(orgIdPaths)); - ol.addAll(jdryDao.statsCountsByOrgIds(orgIdPaths)); - ol.addAll(jzhzDao.statsCountsByOrgIds(orgIdPaths)); + List ol = new ArrayList<>(); + if (LingShanSpecialCrowdTypeEnums.AZBJ.getType().equals(specialType) || StringUtils.isBlank(specialType)) { + ol.addAll(azbjDao.statsCountsByOrgIds(orgIdPaths)); + } + if (LingShanSpecialCrowdTypeEnums.SQJZ.getType().equals(specialType) || StringUtils.isBlank(specialType)) { + ol.addAll(sqjzDao.statsCountsByOrgIds(orgIdPaths)); + } + if (LingShanSpecialCrowdTypeEnums.XFRY.getType().equals(specialType) || StringUtils.isBlank(specialType)) { + ol.addAll(xfryDao.statsCountsByOrgIds(orgIdPaths)); + } + if (LingShanSpecialCrowdTypeEnums.JDRY.getType().equals(specialType) || StringUtils.isBlank(specialType)) { + ol.addAll(jdryDao.statsCountsByOrgIds(orgIdPaths)); + } + if (LingShanSpecialCrowdTypeEnums.JZHZ.getType().equals(specialType) || StringUtils.isBlank(specialType)) { + ol.addAll(jzhzDao.statsCountsByOrgIds(orgIdPaths)); + } // 开始给rl++ for (LingShanSpecialCrowdStatsByOrgResultDTO o : ol) {