diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java index 4c32424b09..e2022b1420 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java @@ -16,6 +16,28 @@ public class IcHouseListFormDTO extends PageFormDTO { private static final long serialVersionUID = -1L; + /** + * 10.24需求http://zentao.elinkservice.cn/story-view-710.html + * 小区id + */ + private String neighborHoodId; + /** + * 10.24需求http://zentao.elinkservice.cn/story-view-710.html + * 新增楼栋id + */ + private String buildingId; + /** + * 10.24需求http://zentao.elinkservice.cn/story-view-710.html + * 新增单元id + */ + private String buildingUnitId; + /** + * 10.24需求http://zentao.elinkservice.cn/story-view-710.html + * 新增:房号 + */ + private String houseId; + + /** * 组织类别 */ @@ -51,14 +73,6 @@ public class IcHouseListFormDTO extends PageFormDTO { * 房屋状态 【1:出租 0:自住 2:闲置 3:未出售】 */ private String rentFlag; - /** - * 楼栋ID - */ - private String buildingId; - /** - * 小区ID - */ - private String neighborHoodId; /** * 搜索关键词,社区查询,搜索输入的关键词 diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/NeighborHoodOptionFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/NeighborHoodOptionFormDTO.java new file mode 100644 index 0000000000..dbb6177931 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/NeighborHoodOptionFormDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2022/10/25 15:44 + */ +@Data +public class NeighborHoodOptionFormDTO extends PageFormDTO { + private String agencyId; + private String gridId; + private String neighborHoodName; + + /** + * 当前登录用户:: + */ + private String staffId; + private String customerId; +} + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index f44e52c44f..a8cf04b4cb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -39,6 +39,7 @@ import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.form.IcNeighborHoodAddFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.NeighborHoodOptionFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; @@ -151,6 +152,21 @@ public class IcNeighborHoodController { return new Result>().ok(icNeighborHoodService.getNeighborHoodOptions(dto.getAgencyId(), dto.getGridId(),tokenDto.getUserId(),tokenDto.getCustomerId())); } + /** + * 入参:gridId、agencyId + * 返回当前组织及下级下的所有小区 + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("neighborhood-options") + public Result> queryNeighborHoodOptions(@LoginUser TokenDto tokenDto, @RequestBody NeighborHoodOptionFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + List list=icNeighborHoodService.queryNeighborHoodOptions(formDTO); + return new Result>().ok(list); + } + /** * 获取用户组织下小区列表 * diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java index afe0374247..2fd4f25eee 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java @@ -18,12 +18,14 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.commons.tools.dto.result.OptionResultDTO; import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.NeighborHoodAndManagementDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; import com.epmet.dto.form.HouseInformationFormDTO; import com.epmet.dto.form.IcNeighborHoodListFormDTO; +import com.epmet.dto.form.NeighborHoodOptionFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.IcHouseEntity; import com.epmet.entity.IcNeighborHoodEntity; @@ -220,4 +222,6 @@ public interface IcNeighborHoodDao extends BaseDao { * @return */ IcNeighborHoodEntity getNeighborHoodInfoByName(CheckHouseInfoFormDTO formDTO); + + List queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 266d0f9b41..2755cf3af0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -27,6 +27,7 @@ import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.NeighborHoodAndManagementDTO; import com.epmet.dto.form.IcNeighborHoodAddFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; +import com.epmet.dto.form.NeighborHoodOptionFormDTO; import com.epmet.dto.result.BuildingResultDTO; import com.epmet.dto.result.IcNeighborHoodDetailDTO; import com.epmet.dto.result.ImportTaskCommonResultDTO; @@ -195,4 +196,11 @@ public interface IcNeighborHoodService extends BaseService * @return com.epmet.commons.tools.utils.Result */ Result neighborhoodDetail(String neighborhoodId); + + /** + * 返回当前组织及下级下的所有小区 + * @param formDTO + * @return + */ + List queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index e14ea745ab..56e473038d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -51,6 +51,7 @@ import com.epmet.dto.*; import com.epmet.dto.form.IcNeighborHoodAddFormDTO; import com.epmet.dto.form.ImportInfoFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; +import com.epmet.dto.form.NeighborHoodOptionFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.*; import com.epmet.excel.IcNeighborHoodExcel; @@ -824,4 +825,27 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl().ok(result); } + /** + * 返回当前组织及下级下的所有小区 + * + * @param formDTO + * @return + */ + @Override + public List queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO) { + if (StringUtils.isBlank(formDTO.getGridId()) && StringUtils.isBlank(formDTO.getAgencyId())) { + // 默认查询当前工作人员所属组织及下级的 + CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + formDTO.setAgencyId(staffInfoCacheResult.getAgencyId()); + } + List list = baseDao.queryNeighborHoodOptions(formDTO); + return list; + } + + + + + + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index 6e417b0aed..441dfe7f1b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -147,6 +147,12 @@ AND a.NEIGHBOR_HOOD_ID = #{neighborHoodId} + + AND a.BUILDING_UNIT_ID = #{buildingUnitId} + + + AND a.ID = #{houseId} + AND b.id = #{id} diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml index 96ec0dd57f..0120d31bb0 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml @@ -673,4 +673,25 @@ + 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 new file mode 100644 index 0000000000..b575bf90c6 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java @@ -0,0 +1,92 @@ +package com.epmet.dto.form; + +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.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description 修改文章 + * @Author yzm + * @Date 2022/10/24 14:12 + */ +@Data +public class UpdateArticleFormDTO { + public interface AddUserInternalGroup { + } + + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + /** + * 文章id + */ + @NotBlank(message = "articleId不能为空", groups = {AddUserInternalGroup.class}) + private String articleId; + + @NotBlank(message = "文章标题不能为空", groups = {AddUserShowGroup.class}) + @Length(max = 50, message = "文章标题最长为50个字") + private String title; + + /** + * 发布范围IDs + */ + @NotEmpty(message = "发布范围不能为空", groups = AddUserShowGroup.class) + private List gridIdList; + + /** + * 发布范围Names + */ + @NotBlank(message = "发布范围名称不能为空", groups = AddUserShowGroup.class) + private String publishRangeDesc; + + @NotBlank(message = "发布单位不能为空", groups = AddUserShowGroup.class) + private String publisher; + + @NotBlank(message = "发布单位名称不能为空", groups = AddUserShowGroup.class) + private String publisherName; + + /** + * 发布单位类型 机关:agency;部门:department;网格:grid + */ + @NotBlank(message = "发布单位类型不能为空", groups = AddUserShowGroup.class) + private String publisherType; + + /** + * 封面图地址 + */ + private String imgUrl; + + @NotBlank(message = "发布时间不能为空", groups = AddUserShowGroup.class) + private String publishDate; + + /** + * 文章标签 + */ + private List tagNameList; + + @NotBlank(message = "文章内容不能为空", groups = {AddUserShowGroup.class}) + private String content; + + /** + * 是否置顶 1是;0否; + */ + @NotNull(message = "请选择是否置顶", groups = AddUserShowGroup.class) + private Integer isTop; + + /** + * token中获取 + */ + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + /** + * token中获取 + */ + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; +} + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java index 29d8bca111..25f68c9a6d 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java @@ -20,6 +20,10 @@ public interface ArticleConstant { */ String PUBLISHED = "published"; String PUBLISH = "publish"; + /** + * pc,已发布的文章可编辑 + */ + String UPDATE_ARTICEL="update"; String PUBLISH_CONTENT = "发布文章"; /** * 发布状态-已下线 diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java index 7ab6795c57..611c9d2b79 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java @@ -37,6 +37,7 @@ import com.epmet.service.ArticleOperateRecordService; import com.epmet.service.ArticleService; import com.epmet.service.DraftService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; @@ -468,4 +469,42 @@ public class ArticleController { articleService.addOrSaveDraft(formDTO); return new Result(); } + + /** + * 已发布的文章可以编辑 + * + * @param tokenDto + * @param formDTO + * @return + */ + @PostMapping("updateArticle") + public Result updateArticle(@LoginUser TokenDto tokenDto, @RequestBody UpdateArticleFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + ValidatorUtils.validateEntity(formDTO, UpdateArticleFormDTO.AddUserShowGroup.class, UpdateArticleFormDTO.AddUserInternalGroup.class); + articleService.updateArticle(formDTO); + return new Result(); + } + + /** + * 删除文章,所有相关表都删除吧 + * article 文章表 + * article_content 文章内容表 + * article_cover 文章封面表 + * article_operate_record 文章操作记录表 + * article_publish_range 文章发布范围表 + * article_tags 文章标签表 + * article_visit_record 文章访问记录表 + * @param tokenDto + * @param articleIds + * @return + */ + @PostMapping("delete") + public Result delete(@LoginUser TokenDto tokenDto, @RequestBody List articleIds) { + if (CollectionUtils.isNotEmpty(articleIds)) { + articleService.delete(articleIds, tokenDto.getCustomerId(), tokenDto.getUserId()); + } + return new Result(); + } + } 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 44d12946d9..227fa89114 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 @@ -29,5 +29,11 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ArticleContentDao extends BaseDao { - + /** + * 只支持富文本的文章 + * 如果是最开始一段文字,一个图片那种文章在article_content表会有多条 + * @param articleId + * @return + */ + ArticleContentEntity selectByArticleId(String articleId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleCoverDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleCoverDao.java index cd087445ae..3f3dc05374 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleCoverDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleCoverDao.java @@ -29,5 +29,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ArticleCoverDao extends BaseDao { - + + ArticleCoverEntity selectByArticleId(String articleId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticlePublishRangeDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticlePublishRangeDao.java index 9fe5fa1614..77bedc971e 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticlePublishRangeDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticlePublishRangeDao.java @@ -47,4 +47,6 @@ public interface ArticlePublishRangeDao extends BaseDao selectInitData(@Param("customerIdList") List customerIdList); + + int deleteByArticleId(@Param("articleId") String articleId,@Param("operUserId")String operUserId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleOperateRecordEntity.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleOperateRecordEntity.java index ff89979fb8..ee00d068d2 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleOperateRecordEntity.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleOperateRecordEntity.java @@ -64,6 +64,7 @@ public class ArticleOperateRecordEntity extends BaseEpmetEntity { /** * 操作类型 发布文章:publish;取消文章置顶:canceltop;设置置顶:settom;下线文章:offline;修改文章发布范围:updatepublishrange + * 修改文章:update */ private String opType; diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java index 368ecfcef7..ddb1db33e7 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java @@ -103,4 +103,12 @@ public interface ArticleOperateRecordService extends BaseService listOfArticleOperation(String articleId); + + /** + * + * @param articleId + * @param customerId + * @param currentOperUserId + */ + void deleteByArticleId(String articleId, String customerId, String currentOperUserId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java index 8f0914bfe4..dca18d0bb7 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java @@ -257,4 +257,25 @@ public interface ArticleService extends BaseService { PublishedListResultDTO detailV2(ArticleListFormDTO formDTO); void topArticle(String articleId, String type,String imgUrl); + + /** + * 修改文章 + * @param formDTO + */ + void updateArticle(UpdateArticleFormDTO formDTO); + + /** + * 删除文章 + * article 文章表 + * article_content 文章内容表 + * article_cover 文章封面表 + * article_operate_record 文章操作记录表 + * article_publish_range 文章发布范围表 + * article_tags 文章标签表 + * article_visit_record 文章访问记录表 + * @param articleIds + * @param customerId + * @param currentOperUserId + */ + void delete(List articleIds,String customerId,String currentOperUserId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleVisitRecordService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleVisitRecordService.java index cdaa50388c..502d0f638a 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleVisitRecordService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleVisitRecordService.java @@ -92,4 +92,6 @@ public interface ArticleVisitRecordService extends BaseService updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(ArticleOperateRecordEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticleOperateRecordEntity::getUpdatedBy, currentOperUserId) + .set(ArticleOperateRecordEntity::getUpdatedTime, new Date()); + updateWrapper.eq(ArticleOperateRecordEntity::getArticleId, articleId); + baseDao.update(null,updateWrapper); + } } \ 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 4e94222164..c471734d6b 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 @@ -19,6 +19,7 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.FieldConstant; @@ -1435,7 +1436,13 @@ public class ArticleServiceImpl extends BaseServiceImpl queryWrapper=new LambdaQueryWrapper(); + queryWrapper.eq(ArticleTagsEntity::getCustomerId,customerId) + .eq(ArticleTagsEntity::getArticleId,articleId); + articleTagsDao.delete(queryWrapper); + articleTagsService.insertBatch(articleTags); + } } /** @@ -1543,7 +1550,7 @@ public class ArticleServiceImpl extends BaseServiceImpl DraftConstant.PREVIEW_CONTENT_MAX_LENGTH ? getPreviewContent(formDTO.getContent()).substring(NumConstant.ZERO,DraftConstant.PREVIEW_CONTENT_MAX_LENGTH) : getPreviewContent(formDTO.getContent())); + articleEntity.setPublishDate(DateUtils.stringToDate(formDTO.getPublishDate(),DateUtils.DATE_PATTERN)); + articleEntity.setPublisherId(formDTO.getPublisher()); + articleEntity.setTags(CollectionUtils.isEmpty(formDTO.getTagNameList()) ? "" : formDTO.getTagNameList().stream().collect(Collectors.joining("|"))); + articleEntity.setOrgId(staffInfo.getAgencyId()); + articleEntity.setOrgIdPath(StringUtils.isBlank(agencyInfo.getPids()) || agencyInfo.getPids().equals(NumConstant.ZERO_STR) ? agencyInfo.getId() : agencyInfo.getPids().concat(":").concat(agencyInfo.getId())); + articleEntity.setRichTextFlag(NumConstant.ONE_STR); + baseDao.updateById(articleEntity); + // 2.内容 + ArticleContentEntity articleContent = articleContentDao.selectByArticleId(formDTO.getArticleId()); + if (null != articleContent) { + articleContent.setContent(formDTO.getContent()); + articleContentDao.updateById(articleContent); + }else{ + ArticleContentEntity articleContent1=new ArticleContentEntity(); + articleContent1.setCustomerId(formDTO.getCustomerId()); + articleContent1.setArticleId(formDTO.getArticleId()); + articleContent1.setContent(formDTO.getContent()); + articleContent1.setContentType("rich_text"); + articleContent1.setOrderNum(NumConstant.ONE); + articleContentDao.insert(articleContent1); + } + // 3.操作记录 + ArticleOperateRecordEntity articleOperateRecord = new ArticleOperateRecordEntity(); + articleOperateRecord.setCustomerId(formDTO.getCustomerId()); + articleOperateRecord.setArticleId(formDTO.getArticleId()); + articleOperateRecord.setGridIds(CollectionUtils.isEmpty(formDTO.getGridIdList()) ? "" : formDTO.getGridIdList().stream().collect(Collectors.joining(":"))); + articleOperateRecord.setOpUser(staffInfo.getAgencyName().concat("-").concat(staffInfo.getRealName())); + articleOperateRecord.setContent(articleOperateRecord.getOpUser() + "编辑文章【" +formDTO.getTitle() + "】"); + articleOperateRecord.setOpType(ArticleConstant.UPDATE_ARTICEL); + articleOperateRecord.setOpTime(new Date()); + articleOperateRecordService.insert(articleOperateRecord); + // 4.发布范围 + if (!CollectionUtils.isEmpty(formDTO.getGridIdList())){ + List rangeList = new ArrayList<>(); + formDTO.getGridIdList().forEach(g -> { + GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(g); + if (null == gridInfoCache){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"gridId:"+g,"发布范围:网格信息查询异常"); + } + ArticlePublishRangeEntity articlePublishRange = ConvertUtils.sourceToTarget(gridInfoCache,ArticlePublishRangeEntity.class); + articlePublishRange.setCustomerId(formDTO.getCustomerId()); + articlePublishRange.setArticleId(formDTO.getArticleId()); + articlePublishRange.setGridId(g); + articlePublishRange.setAgencyGridName(gridInfoCache.getGridNamePath()); + articlePublishRange.setAgencyId(gridInfoCache.getPid()); + AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(gridInfoCache.getPid()); + if (null == agencyInfoCache){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"agencyId:"+gridInfoCache.getPid(),"发布范围:网格所属组织信息查询异常"); + } + //组织id的所有上级 + articlePublishRange.setPids(agencyInfoCache.getPids()); + articlePublishRange.setPublishStatus(ArticleConstant.PUBLISHED); + articlePublishRange.setId(null); + rangeList.add(articlePublishRange); + }); + if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(rangeList)){ + //先删除,后插入 + articlePublishRangeDao.deleteByArticleId(formDTO.getArticleId(),formDTO.getUserId()); + articlePublishRangeService.insertBatch(rangeList); + } + } + // 5.文章标签 + UpdateCustomerTagCacheDTO updateCustomerTagCacheDTO = updateCustomerTagV2(formDTO.getUserId(), formDTO.getCustomerId(), StringUtils.isBlank(articleEntity.getTags()) ? "" : articleEntity.getTags()); + if (null != updateCustomerTagCacheDTO){ + addArticleTagsV2(updateCustomerTagCacheDTO,formDTO.getCustomerId(),articleEntity.getId()); + } + // 6.更新网格tag + List updateGridTagCacheDTOS = updateGridTagV2(updateCustomerTagCacheDTO, formDTO.getCustomerId(), formDTO.getGridIdList(), formDTO.getUserId()); + // 7.文章封面 + if (StringUtils.isNotBlank(formDTO.getImgUrl())){ + ArticleCoverEntity articleCoverEntity = articleCoverDao.selectByArticleId(formDTO.getArticleId()); + if (null != articleCoverEntity) { + articleCoverEntity.setImgUrl(formDTO.getImgUrl()); + articleCoverEntity.setAuditStatus("pass"); + articleCoverDao.updateById(articleCoverEntity); + }else{ + ArticleCoverEntity articleCover = new ArticleCoverEntity(); + articleCover.setCustomerId(formDTO.getCustomerId()); + articleCover.setArticleId(formDTO.getArticleId()); + articleCover.setImgUrl(formDTO.getImgUrl()); + articleCover.setAuditStatus("pass"); + articleCoverDao.insert(articleCover); + } + } + // 8.更新redis + try { + this.updateCacheCustomerTag(updateCustomerTagCacheDTO); + this.updateCacheGridTag(updateGridTagCacheDTOS); + } catch (Exception e) { + //我觉着没必要抛出异常吧,日志打印一下吧 + log.warn("updateArticle update redis exception", e); + // throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); + } + + } + + + /** + * 删除文章 + * article 文章表 + * article_content 文章内容表 + * article_cover 文章封面表 + * article_operate_record 文章操作记录表 + * article_publish_range 文章发布范围表 + * article_tags 文章标签表 + * article_visit_record 文章访问记录表 + * + * @param articleIds + * @param customerId + * @param currentOperUserId + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List articleIds, String customerId, String currentOperUserId) { + Date now=new Date(); + for(String articleId:articleIds){ + //文章表 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(ArticleEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticleEntity::getUpdatedBy, currentOperUserId) + .set(ArticleEntity::getUpdatedTime, now); + updateWrapper.eq(ArticleEntity::getId, articleId); + baseDao.update(null, updateWrapper); + + //文章内容表 + LambdaUpdateWrapper articleContentUpdate = new LambdaUpdateWrapper<>(); + articleContentUpdate.set(ArticleContentEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticleContentEntity::getUpdatedBy, currentOperUserId) + .set(ArticleContentEntity::getUpdatedTime, now); + articleContentUpdate.eq(ArticleContentEntity::getArticleId, articleId); + articleContentDao.update(null,articleContentUpdate); + //文章封面表 + LambdaUpdateWrapper articleCoverUpdate = new LambdaUpdateWrapper<>(); + articleCoverUpdate.set(ArticleCoverEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticleCoverEntity::getUpdatedBy, currentOperUserId) + .set(ArticleCoverEntity::getUpdatedTime, now); + articleCoverUpdate.eq(ArticleCoverEntity::getArticleId, articleId); + articleCoverDao.update(null,articleCoverUpdate); + //文章操作记录表 + articleOperateRecordService.deleteByArticleId(articleId,customerId,currentOperUserId); + + //文章发布范围表 + LambdaUpdateWrapper publishRangeUpdate = new LambdaUpdateWrapper<>(); + publishRangeUpdate.set(ArticlePublishRangeEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticlePublishRangeEntity::getUpdatedBy, currentOperUserId) + .set(ArticlePublishRangeEntity::getUpdatedTime, now); + publishRangeUpdate.eq(ArticlePublishRangeEntity::getArticleId, articleId); + articlePublishRangeDao.update(null,publishRangeUpdate); + //文章标签表 + LambdaUpdateWrapper articleTagsUpdate = new LambdaUpdateWrapper<>(); + articleTagsUpdate.set(ArticleTagsEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticleTagsEntity::getUpdatedBy, currentOperUserId) + .set(ArticleTagsEntity::getUpdatedTime, now); + articleTagsUpdate.eq(ArticleTagsEntity::getArticleId, articleId); + articleTagsDao.update(null,articleTagsUpdate); + //文章访问记录表 + articleVisitRecordService.deleteByArticleId(articleId,customerId,currentOperUserId); + } + } + + } diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java index 8b4ce81966..93f631b14d 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java @@ -18,9 +18,11 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.ArticleVisitRecordDao; @@ -33,6 +35,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Map; @@ -105,4 +108,13 @@ public class ArticleVisitRecordServiceImpl extends BaseServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(ArticleVisitRecordEntity::getDelFlag, NumConstant.ONE_STR) + .set(ArticleVisitRecordEntity::getUpdatedBy, currentOperUserId) + .set(ArticleVisitRecordEntity::getUpdatedTime, new Date()); + updateWrapper.eq(ArticleVisitRecordEntity::getArticleId, articleId); + baseDao.update(null,updateWrapper); + } } \ No newline at end of file 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 fb55860502..52007cee9e 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 @@ -4,4 +4,14 @@ + + \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleCoverDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleCoverDao.xml index 684910ea8d..1bd90e218e 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleCoverDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleCoverDao.xml @@ -3,5 +3,9 @@ - + \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticlePublishRangeDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticlePublishRangeDao.xml index c58c230891..2b2fcb4e3b 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticlePublishRangeDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticlePublishRangeDao.xml @@ -35,5 +35,11 @@ ORDER BY GRID_ID - + + update article_publish_range r + set r.del_flag='1', + r.UPDATED_BY = #{operUserId}, + r.UPDATED_TIME = now() + where r.ARTICLE_ID = #{articleId} + \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatRelationDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatRelationDTO.java index 69654aca84..6156c545f9 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatRelationDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatRelationDTO.java @@ -42,6 +42,11 @@ public class IcNatRelationDTO implements Serializable { */ private String icNatId; + /** + * 是否本辖区居民,1:是;0:否 + */ + private String isLocalResiUser; + /** * 关系数据的绑定途径【居民端录入:resi; 数字社区录入:icresi; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java index 4cd9156ea1..147bcad3ee 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java @@ -67,6 +67,12 @@ public class EpidemicPreventionFormDTO extends PageFormDTO implements Serializab * 结束日期 */ private String endDate; + + /** + * 核酸检测开始、结束时间 eg:2022-10-10 + */ + private String natStartDate; + private String natEndDate; /** * 疫苗接种次数 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java index c5f6ddd53e..96ca61e0c7 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java @@ -38,5 +38,16 @@ public class IcNatCompareRecordPageFormDTO extends PageFormDTO { private String customerId; private String userId; private String agencyId; + + /** + * 检测时间 + */ + private String natDate; + /** + * 1:已检测 + * 0:未检测 + */ + private String natStatus; + } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatListResultDTO.java index ee3f03e5e9..a93294b14f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatListResultDTO.java @@ -89,6 +89,12 @@ public class NatListResultDTO implements Serializable { @ExcelIgnore private String isResiUser; + /** + * 是否本辖区居民(0:否 1:是) + */ + @ExcelIgnore + private String isLocalResiUser; + /** * 检测地点 */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RelationAndNatResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RelationAndNatResultDTO.java new file mode 100644 index 0000000000..cc3da4c846 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RelationAndNatResultDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/10/25 09:37 + */ +@Data +public class RelationAndNatResultDTO implements Serializable { + private static final long serialVersionUID = 5245015978083295931L; + + private String relationId; + private String natId; + private String staffAgencyIdPath; + private String idCard; + + /** + * 默认不是本辖区居民 + */ + private String isLocalResiUser = NumConstant.ZERO_STR; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiAndLocalResiResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiAndLocalResiResultDTO.java new file mode 100644 index 0000000000..d03e83d124 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiAndLocalResiResultDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/10/24 16:09 + */ +@Data +public class ResiAndLocalResiResultDTO implements Serializable { + private static final long serialVersionUID = -7702043408016900850L; + + private Integer isLocal; + private Integer isResi; + + private String userId; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java index 3fd2bd60fc..695a739b89 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java @@ -33,6 +33,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; /** @@ -67,6 +69,13 @@ public class IcEpidemicPreventionController{ return new Result>().ok(result); } + @PostMapping("epidemicPreventionExport") + public void epidemicPreventionExport(@LoginUser TokenDto tokenDto, @RequestBody EpidemicPreventionFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setStaffId(tokenDto.getUserId()); + icResiUserService.epidemicPreventionExport(formDTO,response); + } + @PostMapping("user-list") public Result> userList(@LoginUser TokenDto tokenDto, @RequestBody EpidemicPreventionFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatCompareRecordController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatCompareRecordController.java index aa611e8252..8c1c245fde 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatCompareRecordController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatCompareRecordController.java @@ -27,6 +27,7 @@ import com.epmet.service.IcNatCompareRecordService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; @@ -61,6 +62,7 @@ public class IcNatCompareRecordController implements ResultDataResolver { /** * 未做核酸比对-分页查询 + * http://yapi.elinkservice.cn/project/245/interface/api/8129 * @param tokenDto * @param formDTO * @return @@ -68,6 +70,9 @@ public class IcNatCompareRecordController implements ResultDataResolver { @RequestMapping("page") @MaskResponse(fieldNames = { "mobile", "idCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD }) public Result> page(@LoginUser TokenDto tokenDto, @RequestBody IcNatCompareRecordPageFormDTO formDTO){ + if (StringUtils.isNotBlank(formDTO.getNatDate()) && StringUtils.isBlank(formDTO.getNatStatus())) { + formDTO.setNatStatus(NumConstant.ONE_STR); + } formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); PageData page = icNatCompareRecordService.page(formDTO); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java index bcb2a2d134..279cb39113 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java @@ -314,5 +314,10 @@ public class IcNatController implements ResultDataResolver { } } + @PostMapping("initNatLocal") + public Result initNatLocal(){ + icNucleinService.initNatLocal(); + return new Result(); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java index f21ec91eb3..7b8b0a0ab7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java @@ -6,7 +6,9 @@ import com.epmet.dto.form.MyNatListFormDTO; import com.epmet.dto.result.MyNatListResultDTO; import com.epmet.dto.result.NatListResultDTO; import com.epmet.dto.result.NatUserInfoResultDTO; +import com.epmet.dto.result.RelationAndNatResultDTO; import com.epmet.entity.IcNatEntity; +import com.epmet.entity.IcResiUserEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -66,4 +68,22 @@ public interface IcNatDao extends BaseDao { void updateBatchNat(@Param("list")List entities); + List getRelationAndNat(); + + List getResiByIdCards(@Param("idCards")List idCards); + + /** + * @Description 批量更新关系 + * @param list + * @Author zxc + * @Date 2022/10/25 10:56 + */ + void updateRelation(@Param("list") List list); + + /** + * @Description 更新的 userType != 'import' + * @Author zxc + * @Date 2022/10/25 11:13 + */ + void updateRelationOther(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index dd9e97bbae..8caa220af2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -430,4 +430,13 @@ public interface IcResiUserDao extends BaseDao { List getIcUserCount(IcUserCountFormDTO formDTO); List icUserStatisList(UserChartFormDTO formDTO); + + /** + * @Description 根据身份证获取组织下的居民个数 + * @param agencyId + * @param idCard + * @Author zxc + * @Date 2022/10/24 15:47 + */ + ResiAndLocalResiResultDTO getResiCount(@Param("agencyId")String agencyId,@Param("idCard")String idCard,@Param("customerId")String customerId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java index 7dd51b4d55..4e48d55d36 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java @@ -41,6 +41,11 @@ public class IcNatRelationEntity extends BaseEpmetEntity { */ private String icNatId; + /** + * 是否本辖区居民,1:是;0:否 + */ + private String isLocalResiUser; + /** * 关系数据的绑定途径【居民端录入:resi; 数字社区录入:icresi; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/EpidemicPreventionExportExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/EpidemicPreventionExportExcel.java new file mode 100644 index 0000000000..33486ab15a --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/EpidemicPreventionExportExcel.java @@ -0,0 +1,34 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * @Author zxc + * @DateTime 2022/10/24 14:36 + */ +@Data +public class EpidemicPreventionExportExcel { + + @ExcelProperty(value = "姓名") + @ColumnWidth(20) + private String name; + + @ExcelProperty(value = "所属网格") + @ColumnWidth(20) + private String gridName; + + @ExcelProperty(value = "所属房屋") + @ColumnWidth(20) + private String houseName; + + @ExcelProperty(value = "手机号") + @ColumnWidth(20) + private String mobile; + + @ExcelProperty(value = "证件号") + @ColumnWidth(20) + private String idCard; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java index c600349029..8fa732459a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java @@ -2,12 +2,15 @@ package com.epmet.excel.handler; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dao.IcResiUserDao; +import com.epmet.dto.result.ResiAndLocalResiResultDTO; import com.epmet.entity.IcNatEntity; import com.epmet.excel.data.IcNatImportExcelData; import com.epmet.service.impl.IcNatServiceImpl; @@ -53,12 +56,14 @@ public class IcNatExcelImportListener implements ReadListener otherRows = new ArrayList<>(); private IcNatServiceImpl icNatService; + private IcResiUserDao icResiUserDao; - public IcNatExcelImportListener(String currentUserId, String currentAgencyId, String currentAgencyPids, IcNatServiceImpl icNatService) { + public IcNatExcelImportListener(String currentUserId, String currentAgencyId, String currentAgencyPids, IcNatServiceImpl icNatService, IcResiUserDao icResiUserDao) { this.currentUserId = currentUserId; this.currentAgencyId = currentAgencyId; this.currentAgencyPids = currentAgencyPids; this.icNatService = icNatService; + this.icResiUserDao = icResiUserDao; } @Override @@ -116,6 +121,7 @@ public class IcNatExcelImportListener implements ReadListener { Integer updateIsResiFlag(String customerId, String icResiUserId); void updateBatchNat(List entities); + + void initNatLocal(); + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index e3e0f75e1f..246f87a15d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -32,6 +32,8 @@ import com.epmet.entity.IcResiUserEntity; import com.epmet.excel.support.ExportResiUserItemDTO; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -521,4 +523,6 @@ public interface IcResiUserService extends BaseService { void updateYlfn(); IcResiUserInfoCache getIcResiUserInfo(String userId); + + void epidemicPreventionExport(EpidemicPreventionFormDTO formDTO, HttpServletResponse response) throws IOException; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 7fc6aa2bb6..632e27828b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -557,6 +557,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl imp if (null == agencyInfo) { throw new RenException(String.format("获取组织缓存信息失败%s", formDTO.getAgencyId())); } + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + if (null == staffInfo){ + throw new EpmetException(String.format("获取工作人员信息失败%s", formDTO.getStaffId())); + } + ResiAndLocalResiResultDTO resiCount = icResiUserDao.getResiCount(formDTO.getAgencyId(), formDTO.getIdCard(), formDTO.getCustomerId()); //2.新增核酸基础信息数据 IcNatEntity entity = ConvertUtils.sourceToTarget(formDTO, IcNatEntity.class); - if (StringUtils.isNotBlank(formDTO.getUserId())) { + /*if (StringUtils.isNotBlank(formDTO.getUserId())) { entity.setIsResiUser("1"); - } + }*/ + entity.setIsResiUser(org.apache.commons.lang3.StringUtils.isNotBlank(resiCount.getUserId()) ? NumConstant.ONE_STR : NumConstant.ZERO_STR); + entity.setUserId(null == resiCount.getUserId() ? "" : resiCount.getUserId()); insert(entity); //3.核酸记录关系表新增与组织的关系数据 IcNatRelationEntity relationEntity = ConvertUtils.sourceToTarget(formDTO, IcNatRelationEntity.class); relationEntity.setIcNatId(entity.getId()); - relationEntity.setPids(StringUtils.isNotBlank(agencyInfo.getPids()) ? agencyInfo.getPids() + ":" + formDTO.getAgencyId() : formDTO.getAgencyId()); + relationEntity.setIsLocalResiUser(resiCount.getIsLocal() == NumConstant.ZERO ? NumConstant.ZERO_STR : NumConstant.ONE_STR); + relationEntity.setAgencyId(staffInfo.getAgencyId()); + relationEntity.setPids(StringUtils.isNotBlank(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId() : staffInfo.getAgencyId()); icNatRelationDao.insert(relationEntity); //3.新增通知表信息 @@ -345,7 +355,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp String agencyId = loginUserDetails.getAgencyId(); - IcNatExcelImportListener listener = new IcNatExcelImportListener(userId, agencyId, loginUserDetails.getOrgIdPath().replace(":".concat(agencyId), ""), this); + IcNatExcelImportListener listener = new IcNatExcelImportListener(userId, agencyId, loginUserDetails.getOrgIdPath().replace(":".concat(agencyId), ""), this, icResiUserDao); EasyExcel.read(filePath.toFile(), IcNatImportExcelData.class, listener).headRowNumber(2).sheet(0).doRead(); @@ -472,6 +482,53 @@ public class IcNatServiceImpl extends BaseServiceImpl imp } } + @Override + public void initNatLocal() { + Integer no = NumConstant.ONE; + Integer size; + // 查询关系表 + do { + // user_type = 'import' + PageInfo pageInfo = PageHelper.startPage(no, NumConstant.ONE_THOUSAND).doSelectPageInfo(() -> baseDao.getRelationAndNat()); + List list = pageInfo.getList(); + size = list.size(); + if (CollectionUtils.isNotEmpty(list)){ + List users = baseDao.getResiByIdCards(list.stream().map(m -> m.getIdCard()).distinct().collect(Collectors.toList())); + if (CollectionUtils.isNotEmpty(users)){ + for (RelationAndNatResultDTO l : list) { + for (IcResiUserEntity u : users) { + if (l.getStaffAgencyIdPath().contains(u.getAgencyId())){ + l.setIsLocalResiUser(NumConstant.ONE_STR); + break; + } + } + } + updateRelation(list,NumConstant.ONE_STR); + } + } + }while (size == NumConstant.ONE_THOUSAND); + // 其他类型的userType直接是居民的组织信息,所以直接赋值 is_local_resi_user = '1' + updateRelation(null,NumConstant.TWO_STR); + } + + /** + * @Description 更新核酸关系表 + * @param list + * @param type 1:userType为import;2:除了import + * @Author zxc + * @Date 2022/10/25 10:55 + */ + @Transactional(rollbackFor = Exception.class) + public void updateRelation(List list,String type){ + if (NumConstant.ONE_STR.equals(type)){ + if (CollectionUtils.isNotEmpty(list)){ + baseDao.updateRelation(list); + } + }else { + baseDao.updateRelationOther(); + } + } + /** * 批量持久化 * @param entities @@ -535,6 +592,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp return; } + // 存在某时间的核酸检测信息 if (resiNat != null) { boolean needUpdate = false; // 有这个人,也是导入的,那就要更新le @@ -586,8 +644,9 @@ public class IcNatServiceImpl extends BaseServiceImpl imp } // 还要创建关系。只有本辖区及下级居民,才建立关系 + // 2022-10-25 修改:导入的都插入关系 if (resi != null) { - createNatRelation(resiNat.getId(), resi.getAgencyId(), resi.getPids()); + createNatRelation(resiNat.getId(), resi.getAgencyId(), agencyPids,agencyId); } return; @@ -602,7 +661,7 @@ public class IcNatServiceImpl extends BaseServiceImpl imp // 还要创建关系。只有本辖区及下级居民,才建立关系 if (resi != null) { - createNatRelation(e.getId(), resi.getAgencyId(), resi.getPids()); + createNatRelation(e.getId(), resi.getAgencyId(), agencyPids,agencyId); } } @@ -642,11 +701,15 @@ public class IcNatServiceImpl extends BaseServiceImpl imp /** * 创建nat关系 * @param natId - * @param currentUserAgencyId + * @param currentUserAgencyId 居民所属组织 + * @param staffAgencyId 工作人员所属组织 + * @param agencyPids 工作人员所属组织路径 */ - private void createNatRelation(String natId, String currentUserAgencyId, String agencyPids) { + private void createNatRelation(String natId, String currentUserAgencyId, String agencyPids,String staffAgencyId) { // 没有关系创建关系,有关系就跳过 + // 2022-10-25 修改:不管是不是本辖区居民,都创建关系,用 is_local_resi_user区分是不是本辖区居民 + // 组织ID都改成工作人员所属组织ID LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(IcNatRelationEntity::getIcNatId, natId); query.eq(IcNatRelationEntity::getAgencyId, currentUserAgencyId); @@ -659,6 +722,8 @@ public class IcNatServiceImpl extends BaseServiceImpl imp relation.setPids(String.join(":", Arrays.asList(agencyPids, currentUserAgencyId))); relation.setIcNatId(natId); relation.setUserType("import"); + relation.setIsLocalResiUser(agencyPids.contains(currentUserAgencyId) ? NumConstant.ONE_STR : NumConstant.ZERO_STR); icNatRelationDao.insert(relation); } + } 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 1f37ae2ef8..4b7a485d71 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 @@ -19,6 +19,9 @@ package com.epmet.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -47,6 +50,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.*; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.constant.IcPlatformConstant; import com.epmet.constant.IcResiUserConstant; import com.epmet.constant.UserConstant; @@ -59,6 +63,8 @@ import com.epmet.dto.result.demand.IcResiDemandDictDTO; import com.epmet.dto.result.demand.OptionDTO; import com.epmet.dto.result.resi.IcResiNonDynamicResultDTO; import com.epmet.entity.*; +import com.epmet.excel.DataSyncRecordDisabilityExcel; +import com.epmet.excel.EpidemicPreventionExportExcel; import com.epmet.excel.support.ExportResiUserItemDTO; import com.epmet.feign.*; import com.epmet.opendata.dto.form.GetResidentDetailByIdCardFormDTO; @@ -83,6 +89,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; import java.math.BigDecimal; import java.math.RoundingMode; import java.sql.Timestamp; @@ -1688,8 +1697,14 @@ public class IcResiUserServiceImpl extends BaseServiceImpl list = baseDao.getEpidemicPreventionList(formDTO); + List list = new ArrayList<>(); + if (formDTO.getIsPage()){ + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + list = baseDao.getEpidemicPreventionList(formDTO); + }else { + list = baseDao.getEpidemicPreventionList(formDTO); + } + PageInfo pageInfo = new PageInfo<>(list); if (CollectionUtils.isNotEmpty(list)) { //查询网格名称 @@ -3559,4 +3574,38 @@ public class IcResiUserServiceImpl extends BaseServiceImpl list = null; + do { + PageData data = epidemicPreventionList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), EpidemicPreventionExportExcel.class); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.78__ic_nat_add_local.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.78__ic_nat_add_local.sql new file mode 100644 index 0000000000..8102f6a087 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.78__ic_nat_add_local.sql @@ -0,0 +1 @@ +alter table ic_nat_relation add COLUMN `IS_LOCAL_RESI_USER` VARCHAR(1) COMMENT '是否本辖区居民,1:是;0:否'after IC_NAT_ID; \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml index 0e3fcaa606..cc94b06d4b 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml @@ -55,6 +55,15 @@ AND (r.AGENCY_ID = #{agencyId} or r.pids like concat('%',#{agencyId},'%') ) + + + + AND DATE_FORMAT( c.LATEST_NAT_TIME, '%Y%m%d' ) = #{natDate} + + + AND DATE_FORMAT( c.LATEST_NAT_TIME, '%Y%m%d' ) != #{natDate} + + ORDER BY r.IMPORT_TIME DESC,r.AGENCY_ID desc diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml index 991bc5220d..37fcc7dc3b 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml @@ -38,6 +38,7 @@ a.user_type userType, b.user_id userId, b.is_resi_user isResiUser, + a.is_local_resi_user isLocalResiUser, b.`name` `name`, b.mobile mobile, b.id_card idCard, @@ -75,7 +76,7 @@ AND b.sample_time #{sampleEndTime} - AND b.is_resi_user = #{isResiUser} + AND a.is_local_resi_user = #{isResiUser} ORDER BY b.nat_time DESC, b.id ASC @@ -169,6 +170,29 @@ + + + + DELETE FROM ic_nat WHERE id = #{icNatId} @@ -222,4 +246,27 @@ ) + + + + UPDATE ic_nat_relation + + + + when ID = #{l.relationId} then #{l.isLocalResiUser} + + + UPDATED_TIME = NOW() + + WHERE ID IN( + + #{l.relationId} + ) + + + UPDATE ic_nat_relation + set IS_LOCAL_RESI_USER = '1', + UPDATED_TIME = NOW() + where user_type != 'import' + diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index e8b69faefa..1203976d6c 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -865,6 +865,12 @@ AND DATE_FORMAT(NAT_TIME,"%Y-%m-%d") < #{endDate} + + AND DATE_FORMAT(NAT_TIME,"%Y-%m-%d") > #{natStartDate} + + + AND DATE_FORMAT(NAT_TIME,"%Y-%m-%d") < #{natEndDate} + GROUP BY ID_CARD ) c ON a.ID_CARD = c.ID_CARD WHERE a.DEL_FLAG = '0' @@ -1377,4 +1383,23 @@ ORDER BY `name` ASC + + +