Browse Source

Merge remote-tracking branch 'origin/dev_1024'

dev
yinzuomei 3 years ago
parent
commit
d4d3246963
  1. 30
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcHouseListFormDTO.java
  2. 23
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/NeighborHoodOptionFormDTO.java
  3. 16
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java
  4. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java
  5. 8
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  6. 24
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
  7. 6
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  8. 21
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml
  9. 92
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/UpdateArticleFormDTO.java
  10. 4
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/constant/ArticleConstant.java
  11. 39
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java
  12. 8
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleContentDao.java
  13. 3
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticleCoverDao.java
  14. 2
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticlePublishRangeDao.java
  15. 1
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/entity/ArticleOperateRecordEntity.java
  16. 8
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java
  17. 21
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java
  18. 2
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleVisitRecordService.java
  19. 21
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleOperateRecordServiceImpl.java
  20. 197
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
  21. 12
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleVisitRecordServiceImpl.java
  22. 10
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml
  23. 6
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleCoverDao.xml
  24. 8
      epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticlePublishRangeDao.xml
  25. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatRelationDTO.java
  26. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EpidemicPreventionFormDTO.java
  27. 11
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/yqfk/IcNatCompareRecordPageFormDTO.java
  28. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatListResultDTO.java
  29. 26
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/RelationAndNatResultDTO.java
  30. 19
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiAndLocalResiResultDTO.java
  31. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcEpidemicPreventionController.java
  32. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatCompareRecordController.java
  33. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java
  34. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java
  35. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  36. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatRelationEntity.java
  37. 34
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/EpidemicPreventionExportExcel.java
  38. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java
  39. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcNatService.java
  40. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  41. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java
  42. 81
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java
  43. 53
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  44. 1
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.78__ic_nat_add_local.sql
  45. 9
      epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml
  46. 49
      epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml
  47. 25
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

30
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;
/**
* 搜索关键词社区查询搜索输入的关键词

23
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;
}

16
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<List<OptionResultDTO>>().ok(icNeighborHoodService.getNeighborHoodOptions(dto.getAgencyId(), dto.getGridId(),tokenDto.getUserId(),tokenDto.getCustomerId()));
}
/**
* 入参gridIdagencyId
* 返回当前组织及下级下的所有小区
* @param tokenDto
* @param formDTO
* @return
*/
@PostMapping("neighborhood-options")
public Result<List<OptionResultDTO>> queryNeighborHoodOptions(@LoginUser TokenDto tokenDto, @RequestBody NeighborHoodOptionFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
List<OptionResultDTO> list=icNeighborHoodService.queryNeighborHoodOptions(formDTO);
return new Result<List<OptionResultDTO>>().ok(list);
}
/**
* 获取用户组织下小区列表
*

4
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<IcNeighborHoodEntity> {
* @return
*/
IcNeighborHoodEntity getNeighborHoodInfoByName(CheckHouseInfoFormDTO formDTO);
List<OptionResultDTO> queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO);
}

8
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<IcNeighborHoodEntity>
* @return com.epmet.commons.tools.utils.Result<com.epmet.dto.IcNeighborHoodDTO>
*/
Result<IcNeighborHoodDetailDTO> neighborhoodDetail(String neighborhoodId);
/**
* 返回当前组织及下级下的所有小区
* @param formDTO
* @return
*/
List<OptionResultDTO> queryNeighborHoodOptions(NeighborHoodOptionFormDTO formDTO);
}

24
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<IcNeighborHoodDao
return new Result<IcNeighborHoodDetailDTO>().ok(result);
}
/**
* 返回当前组织及下级下的所有小区
*
* @param formDTO
* @return
*/
@Override
public List<OptionResultDTO> 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<OptionResultDTO> list = baseDao.queryNeighborHoodOptions(formDTO);
return list;
}
}

6
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml

@ -147,6 +147,12 @@
<if test="neighborHoodId != null and neighborHoodId != ''">
AND a.NEIGHBOR_HOOD_ID = #{neighborHoodId}
</if>
<if test="buildingUnitId != null and buildingUnitId != ''">
AND a.BUILDING_UNIT_ID = #{buildingUnitId}
</if>
<if test="houseId != null and houseId != ''">
AND a.ID = #{houseId}
</if>
<if test='level == "building"'>
AND b.id = #{id}
</if>

21
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml

@ -673,4 +673,25 @@
</select>
<select id="queryNeighborHoodOptions" parameterType="com.epmet.dto.form.NeighborHoodOptionFormDTO" resultType="com.epmet.commons.tools.dto.result.OptionResultDTO">
SELECT
h.NEIGHBOR_HOOD_NAME as label,
h.ID as `value`
FROM
ic_neighbor_hood h
WHERE
h.DEL_FLAG = '0'
AND h.CUSTOMER_ID = #{customerId}
<if test=" null != agencyId and agencyId != ''">
AND ( h.AGENCY_ID = #{agencyId} OR h.AGENCY_PIDS LIKE concat( '%', #{agencyId}, '%' ) )
</if>
<if test=" null != neighborHoodName and neighborHoodName != ''">
and h.NEIGHBOR_HOOD_NAME like concat('%',#{neighborHoodName},'%')
</if>
<if test=" null != gridId and gridId != ''">
and h.GRID_ID=#{gridId}
</if>
ORDER BY
h.NEIGHBOR_HOOD_NAME ASC
</select>
</mapper>

92
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<String> 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<String> 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;
}

4
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 = "发布文章";
/**
* 发布状态-已下线

39
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<String> articleIds) {
if (CollectionUtils.isNotEmpty(articleIds)) {
articleService.delete(articleIds, tokenDto.getCustomerId(), tokenDto.getUserId());
}
return new Result();
}
}

8
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<ArticleContentEntity> {
/**
* 只支持富文本的文章
* 如果是最开始一段文字一个图片那种文章在article_content表会有多条
* @param articleId
* @return
*/
ArticleContentEntity selectByArticleId(String articleId);
}

3
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> {
ArticleCoverEntity selectByArticleId(String articleId);
}

2
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/ArticlePublishRangeDao.java

@ -47,4 +47,6 @@ public interface ArticlePublishRangeDao extends BaseDao<ArticlePublishRangeEntit
* @return
*/
List<ArticlePublishRangeEntity> selectInitData(@Param("customerIdList") List<String> customerIdList);
int deleteByArticleId(@Param("articleId") String articleId,@Param("operUserId")String operUserId);
}

1
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;

8
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleOperateRecordService.java

@ -103,4 +103,12 @@ public interface ArticleOperateRecordService extends BaseService<ArticleOperateR
* @date 2020-06-02
*/
List<ArticleOperationResultDTO> listOfArticleOperation(String articleId);
/**
*
* @param articleId
* @param customerId
* @param currentOperUserId
*/
void deleteByArticleId(String articleId, String customerId, String currentOperUserId);
}

21
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java

@ -257,4 +257,25 @@ public interface ArticleService extends BaseService<ArticleEntity> {
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<String> articleIds,String customerId,String currentOperUserId);
}

2
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleVisitRecordService.java

@ -92,4 +92,6 @@ public interface ArticleVisitRecordService extends BaseService<ArticleVisitRecor
* @date 2020-06-02
*/
void delete(String[] ids);
void deleteByArticleId(String articleId, String customerId, String currentOperUserId);
}

21
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleOperateRecordServiceImpl.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.ArticleOperateRecordDao;
@ -32,10 +34,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 文章操作记录表
@ -107,4 +106,18 @@ public class ArticleOperateRecordServiceImpl extends BaseServiceImpl<ArticleOper
return list;
}
/**
* @param articleId
* @param customerId
* @param currentOperUserId
*/
@Override
public void deleteByArticleId(String articleId, String customerId, String currentOperUserId) {
LambdaUpdateWrapper<ArticleOperateRecordEntity> 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);
}
}

197
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<ArticleDao, ArticleEntit
e.setArticleId(articleId);
articleTags.add(e);
});
articleTagsService.insertBatch(articleTags);
if(!CollectionUtils.isEmpty(articleTags)){
LambdaQueryWrapper<ArticleTagsEntity> 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<ArticleDao, ArticleEntit
articleContent.setArticleId(article.getId());
articleContent.setContent(formDTO.getContent());
articleContent.setContentType("rich_text");
articleContent.setOrderNum(NumConstant.ZERO);
articleContent.setOrderNum(NumConstant.ONE);
articleContentDao.insert(articleContent);
// 3.操作记录
ArticleOperateRecordEntity articleOperateRecord = new ArticleOperateRecordEntity();
@ -1808,4 +1815,190 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
baseDao.updateById(articleEntity);
}
}
/**
* 修改文章
*
* @param formDTO
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void updateArticle(UpdateArticleFormDTO formDTO) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfo.getAgencyId());
if (null == agencyInfo){
throw new EpmetException("未查询到组织信息:"+staffInfo.getAgencyId());
}
// 1.文章
ArticleEntity articleEntity = baseDao.selectById(formDTO.getArticleId());
if (ArticleConstant.OFFLINE.equals(articleEntity.getStatusFlag())) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "已下线的文章不能编辑", "已下线的文章不能编辑");
}
articleEntity.setPublishWay(ArticleConstant.PUBLISH_WAY_MANUAL);
if (formDTO.getPublisherType().equals(DraftConstant.GRID)){
articleEntity.setGridId(formDTO.getPublisher());
}
articleEntity.setPreviewContent(getPreviewContent(formDTO.getContent()).length() > 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<ArticlePublishRangeEntity> 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<UpdateGridTagCacheDTO> 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<String> articleIds, String customerId, String currentOperUserId) {
Date now=new Date();
for(String articleId:articleIds){
//文章表
LambdaUpdateWrapper<ArticleEntity> 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<ArticleContentEntity> 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<ArticleCoverEntity> 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<ArticlePublishRangeEntity> 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<ArticleTagsEntity> 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);
}
}
}

12
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<ArticleVisitR
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public void deleteByArticleId(String articleId, String customerId, String currentOperUserId) {
LambdaUpdateWrapper<ArticleVisitRecordEntity> 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);
}
}

10
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleContentDao.xml

@ -4,4 +4,14 @@
<mapper namespace="com.epmet.dao.ArticleContentDao">
<select id="selectByArticleId" parameterType="java.lang.String" resultType="com.epmet.entity.ArticleContentEntity">
SELECT
ac.*
FROM
article_content ac
WHERE
ac.DEL_FLAG = '0'
AND ac.ID = #{articleId}
</select>
</mapper>

6
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticleCoverDao.xml

@ -3,5 +3,9 @@
<mapper namespace="com.epmet.dao.ArticleCoverDao">
<select id="selectByArticleId" parameterType="java.lang.String" resultType="com.epmet.entity.ArticleCoverEntity">
select ac.* from article_cover ac
where ac.DEL_FLAG='0'
and ac.ARTICLE_ID=#{articleId}
</select>
</mapper>

8
epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/ArticlePublishRangeDao.xml

@ -35,5 +35,11 @@
ORDER BY GRID_ID
</select>
<update id="deleteByArticleId" parameterType="java.lang.String">
update article_publish_range r
set r.del_flag='1',
r.UPDATED_BY = #{operUserId},
r.UPDATED_TIME = now()
where r.ARTICLE_ID = #{articleId}
</update>
</mapper>

5
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;
/**
* 是否本辖区居民10
*/
private String isLocalResiUser;
/**
* 关系数据的绑定途径居民端录入resi;
数字社区录入icresi;

6
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;
/**
* 疫苗接种次数
*/

11
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;
}

6
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;
/**
* 检测地点
*/

26
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;
}

19
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;
}

9
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<PageData<EpidemicPreventionResultDTO>>().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<PageData<EpidemicPreventionResultDTO>> userList(@LoginUser TokenDto tokenDto, @RequestBody EpidemicPreventionFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());

5
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<PageData<IcNatCompareRecordDTO>> 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<IcNatCompareRecordDTO> page = icNatCompareRecordService.page(formDTO);

5
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();
}
}

20
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<IcNatEntity> {
void updateBatchNat(@Param("list")List<IcNatEntity> entities);
List<RelationAndNatResultDTO> getRelationAndNat();
List<IcResiUserEntity> getResiByIdCards(@Param("idCards")List<String> idCards);
/**
* @Description 批量更新关系
* @param list
* @Author zxc
* @Date 2022/10/25 10:56
*/
void updateRelation(@Param("list") List<RelationAndNatResultDTO> list);
/**
* @Description 更新的 userType != 'import'
* @Author zxc
* @Date 2022/10/25 11:13
*/
void updateRelationOther();
}

9
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java

@ -430,4 +430,13 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
List<IcUserCountResultDTO> getIcUserCount(IcUserCountFormDTO formDTO);
List<SearchByNameResultDTO> 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);
}

5
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;
/**
* 是否本辖区居民10
*/
private String isLocalResiUser;
/**
* 关系数据的绑定途径居民端录入resi;
数字社区录入icresi;

34
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;
}

8
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<IcNatImportExcelDa
private List<IcNatImportExcelData.RowRemarkMessage> 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<IcNatImportExcelDa
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
log.error("【核酸检测信息导入】出错:{}", e.getStackTrace());
errorMsg = ((EpmetException)e).getInternalMsg();
log.error("【核酸检测信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}

3
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcNatService.java

@ -94,4 +94,7 @@ public interface IcNatService extends BaseService<IcNatEntity> {
Integer updateIsResiFlag(String customerId, String icResiUserId);
void updateBatchNat(List<IcNatEntity> entities);
void initNatLocal();
}

4
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<IcResiUserEntity> {
void updateYlfn();
IcResiUserInfoCache getIcResiUserInfo(String userId);
void epidemicPreventionExport(EpidemicPreventionFormDTO formDTO, HttpServletResponse response) throws IOException;
}

1
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java

@ -557,6 +557,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
e.setAgencyId(ne.getAgencyId());
e.setPids(ne.getPids());
e.setIcNatId(ne.getId());
e.setIsLocalResiUser(NumConstant.ONE_STR);
e.setUserType(isSync.equals(NumConstant.ONE_STR) ? "manualSync" : "sync");
relationEntities.add(e);
}

81
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java

@ -14,6 +14,7 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
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.utils.*;
@ -129,16 +130,25 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> 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<IcNatDao, IcNatEntity> 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<IcNatDao, IcNatEntity> imp
}
}
@Override
public void initNatLocal() {
Integer no = NumConstant.ONE;
Integer size;
// 查询关系表
do {
// user_type = 'import'
PageInfo<RelationAndNatResultDTO> pageInfo = PageHelper.startPage(no, NumConstant.ONE_THOUSAND).doSelectPageInfo(() -> baseDao.getRelationAndNat());
List<RelationAndNatResultDTO> list = pageInfo.getList();
size = list.size();
if (CollectionUtils.isNotEmpty(list)){
List<IcResiUserEntity> 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为import2除了import
* @Author zxc
* @Date 2022/10/25 10:55
*/
@Transactional(rollbackFor = Exception.class)
public void updateRelation(List<RelationAndNatResultDTO> 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<IcNatDao, IcNatEntity> imp
return;
}
// 存在某时间的核酸检测信息
if (resiNat != null) {
boolean needUpdate = false;
// 有这个人,也是导入的,那就要更新le
@ -586,8 +644,9 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> 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<IcNatDao, IcNatEntity> 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<IcNatDao, IcNatEntity> 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<IcNatRelationEntity> query = new LambdaQueryWrapper<>();
query.eq(IcNatRelationEntity::getIcNatId, natId);
query.eq(IcNatRelationEntity::getAgencyId, currentUserAgencyId);
@ -659,6 +722,8 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> 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);
}
}

53
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<IcResiUserDao, IcResi
if (null != staffInfo) {
formDTO.setAgencyId(staffInfo.getAgencyId());
}
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<EpidemicPreventionResultDTO> list = baseDao.getEpidemicPreventionList(formDTO);
List<EpidemicPreventionResultDTO> list = new ArrayList<>();
if (formDTO.getIsPage()){
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
list = baseDao.getEpidemicPreventionList(formDTO);
}else {
list = baseDao.getEpidemicPreventionList(formDTO);
}
PageInfo<EpidemicPreventionResultDTO> pageInfo = new PageInfo<>(list);
if (CollectionUtils.isNotEmpty(list)) {
//查询网格名称
@ -3559,4 +3574,38 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
IcResiUserEntity icResiUserEntity = baseDao.selectById(userId);
return ConvertUtils.sourceToTarget(icResiUserEntity,IcResiUserInfoCache.class);
}
@Override
public void epidemicPreventionExport(EpidemicPreventionFormDTO formDTO, HttpServletResponse response) throws IOException {
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
try {
String fileName = "居民防疫信息" + DateUtils.format(new Date()) + ".xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), EpidemicPreventionExportExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
List<EpidemicPreventionExportExcel> list = null;
do {
PageData<EpidemicPreventionResultDTO> 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<Object> 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();
}
}
}
}

1
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;

9
epmet-user/epmet-user-server/src/main/resources/mapper/IcNatCompareRecordDao.xml

@ -55,6 +55,15 @@
<if test='null != agencyId and "" != agencyId'>
AND (r.AGENCY_ID = #{agencyId} or r.pids like concat('%',#{agencyId},'%') )
</if>
<if test='null != natDate and "" != natDate'>
<if test='null != natStatus and "1" == natStatus'>
AND DATE_FORMAT( c.LATEST_NAT_TIME, '%Y%m%d' ) = #{natDate}
</if>
<if test='null != natStatus and "0" == natStatus'>
AND DATE_FORMAT( c.LATEST_NAT_TIME, '%Y%m%d' ) != #{natDate}
</if>
</if>
ORDER BY
r.IMPORT_TIME DESC,r.AGENCY_ID desc
</select>

49
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 <![CDATA[ <= ]]> #{sampleEndTime}
</if>
<if test='null != isResiUser and "" != isResiUser'>
AND b.is_resi_user = #{isResiUser}
AND a.is_local_resi_user = #{isResiUser}
</if>
ORDER BY b.nat_time DESC, b.id ASC
</select>
@ -169,6 +170,29 @@
</foreach>
</select>
<!-- 获取关系和核酸检测 -->
<select id="getRelationAndNat" resultType="com.epmet.dto.result.RelationAndNatResultDTO">
SELECT
r.ID AS relationId,
i.ID AS natId,
i.ID_CARD,
r.PIDS AS staffAgencyIdPath
FROM ic_nat_relation r
INNER JOIN ic_nat i ON i.ID = r.IC_NAT_ID AND i.DEL_FLAG = 0
WHERE r.DEL_FLAG = 0
AND r.USER_TYPE IN ('import')
</select>
<select id="getResiByIdCards" resultType="com.epmet.entity.IcResiUserEntity">
SELECT * FROM ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = '0'
AND ID_CARD IN (
<foreach collection="idCards" item="idCard" separator=",">
#{idCard}
</foreach>
)
</select>
<delete id="delById">
DELETE FROM ic_nat WHERE id = #{icNatId}
</delete>
@ -222,4 +246,27 @@
</foreach>)
</update>
<!-- 批量更新关系 -->
<update id="updateRelation">
UPDATE ic_nat_relation
<trim prefix="set" suffixOverrides=",">
<trim prefix="IS_LOCAL_RESI_USER =(case" suffix="end),">
<foreach collection="list" item="l">
when ID = #{l.relationId} then #{l.isLocalResiUser}
</foreach>
</trim>
UPDATED_TIME = NOW()
</trim>
WHERE ID IN(
<foreach collection="list" item="l" separator=",">
#{l.relationId}
</foreach>)
</update>
<update id="updateRelationOther">
UPDATE ic_nat_relation
set IS_LOCAL_RESI_USER = '1',
UPDATED_TIME = NOW()
where user_type != 'import'
</update>
</mapper>

25
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -865,6 +865,12 @@
<if test="endDate != null and endDate != ''">
AND DATE_FORMAT(NAT_TIME,"%Y-%m-%d") &lt; #{endDate}
</if>
<if test='natStartDate != null and natStartDate != "" '>
AND DATE_FORMAT(NAT_TIME,"%Y-%m-%d") &gt; #{natStartDate}
</if>
<if test='natEndDate != null and natEndDate != "" '>
AND DATE_FORMAT(NAT_TIME,"%Y-%m-%d") &lt; #{natEndDate}
</if>
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
</select>
<!-- 根据身份证获取组织下的居民个数 -->
<select id="getResiCount" resultType="com.epmet.dto.result.ResiAndLocalResiResultDTO">
SELECT
(SELECT
COUNT(ID)
FROM ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = 0
AND PIDS LIKE CONCAT('%',#{agencyId},'%')
AND ID_CARD = #{idCard}) AS isLocal,
COUNT(ID) AS isResi,
id as userId
from ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = 0
AND CUSTOMER_ID = #{customerId}
AND ID_CARD = #{idCard}
</select>
</mapper>

Loading…
Cancel
Save