diff --git a/epmet-cloud-generator/src/main/resources/application.yml b/epmet-cloud-generator/src/main/resources/application.yml index 0bd4a76f77..973eb74fe0 100644 --- a/epmet-cloud-generator/src/main/resources/application.yml +++ b/epmet-cloud-generator/src/main/resources/application.yml @@ -9,7 +9,7 @@ spring: type: com.alibaba.druid.pool.DruidDataSource #MySQL配置 driverClassName: com.mysql.jdbc.Driver - url: jdbc:mysql://192.168.1.140:3306/epmet_data_statistical?useUnicode=true&characterEncoding=UTF-8&useSSL=false + url: jdbc:mysql://118.190.150.119:43306/epmet_user?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: root #oracle配置 diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java index 32cba063c5..27636e435a 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java @@ -440,4 +440,8 @@ public class RedisUtils { public Long bitCount(String key, int start, int end) { return redisTemplate.execute((RedisCallback) con -> con.bitCount(key.getBytes(), start, end)); } + + public Long getTTL(String treeCacheKey) { + return redisTemplate.getExpire(treeCacheKey); + } } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java index 1751ef4bc7..ee5369b3af 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java @@ -102,7 +102,7 @@ public class BarcodeUtils { Graphics2D g = outImage.createGraphics(); g.drawImage(image, 0, 0, imageW, imageH, null); g.setColor(QRCOLOR); -// g.setFont(new Font("微软雅黑", Font.BOLD, FONTSIZE)); + g.setFont(new Font("Noto Sans SC Light", Font.BOLD, FONTSIZE)); g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g.setBackground(Color.white); // 获取文字数量 按照字节展示 diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index a17a8f9e26..83be8dc38a 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -499,11 +499,12 @@ epmet: - /oper/customize/customerstartpage/homestartpage - /epmet/point/mqCallback/** - /tduck-api/** - #查询楼栋,单元,房屋 + #居民信息采集:查询楼栋,单元,房屋,提交信息 - /gov/org/icneighborhood/open/list - /gov/org/icbuilding/buildingoption - /gov/org/icbuildingunit/unitoption - /gov/org/ichouse/houseoption + - /epmetuser/icresicollect/save # 外部应用认证,使用AccessToken等头进行认证 externalOpenUrls: - /data/report/** diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index c5ac865c4c..77a9c8325d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -12,8 +12,11 @@ import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.DingTextBriefNessFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.redis.RedisKeys; +import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; @@ -60,6 +63,7 @@ import java.io.OutputStream; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; /** @@ -95,6 +99,10 @@ public class GovOrgServiceImpl implements GovOrgService { private IcBuildingDao icBuildingDao; @Autowired private EvaluationIndexService evaluationIndexService; + @Autowired + private RedisUtils redisUtils; + @Autowired + private ExecutorService executorService; /** * @param staffId @@ -583,12 +591,34 @@ public class GovOrgServiceImpl implements GovOrgService { @Override public List getAgencyTree(TokenDto tokenDto, SubOrgFormDTO formDTO) { CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (staffInfo == null || StringUtils.isBlank(staffInfo.getAgencyId())){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"工作人员所属组织不存在"); + } + //组织缓存key + String treeCacheKey = RedisKeys.getOrgTreeCacheKey(formDTO.getAgencyId()).concat(StrConstant.COLON).concat(formDTO.getClient()); + Long expiryTime = redisUtils.getTTL(treeCacheKey); + List orgTreeResultDTOS = (List) redisUtils.get(treeCacheKey); + String agencyId = staffInfo.getAgencyId(); + String client = formDTO.getClient(); + //如果接近过期或已经过期且缓存数据不为空 则异步查询 + if ((expiryTime == null || expiryTime <= NumConstant.ONE_THOUSAND) && CollectionUtils.isNotEmpty(orgTreeResultDTOS)) { + executorService.submit(() -> { + List list = buildTempOrgTree(agencyId, client); + redisUtils.set(treeCacheKey, list, RedisUtils.HOUR_FOUR_EXPIRE); + }); + } else { + orgTreeResultDTOS = buildTempOrgTree(staffInfo.getAgencyId(), formDTO.getClient()); + redisUtils.set(treeCacheKey, orgTreeResultDTOS, RedisUtils.HOUR_FOUR_EXPIRE); + } + return orgTreeResultDTOS; + } + private List buildTempOrgTree(String agencyId, String client){ List list = new ArrayList<>(); - if ("resi".equals(formDTO.getClient())) { - list.add(customerAgencyDao.getResiOrgTree(staffInfo.getAgencyId())); + if ("resi".equals(client)) { + list.add(customerAgencyDao.getResiOrgTree(agencyId)); return list; } - list.add(customerAgencyDao.getOrgTree(staffInfo.getAgencyId())); + list.add(customerAgencyDao.getOrgTree(agencyId)); return list; } diff --git a/epmet-module/gov-org/gov-org-server/Dockerfile b/epmet-module/gov-org/gov-org-server/Dockerfile index b4f5ecffbb..84c2478da5 100644 --- a/epmet-module/gov-org/gov-org-server/Dockerfile +++ b/epmet-module/gov-org/gov-org-server/Dockerfile @@ -5,6 +5,7 @@ RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' > /etc/timezone COPY ./target/*.jar ./gov-org.jar +COPY ./fonts/NotoSansSC-Light.otf /usr/share/fonts EXPOSE 8092 diff --git a/epmet-module/gov-org/gov-org-server/deploy/docker-compose-dev.yml b/epmet-module/gov-org/gov-org-server/deploy/docker-compose-dev.yml index 0da84fc37e..0297930754 100644 --- a/epmet-module/gov-org/gov-org-server/deploy/docker-compose-dev.yml +++ b/epmet-module/gov-org/gov-org-server/deploy/docker-compose-dev.yml @@ -15,4 +15,4 @@ services: resources: limits: cpus: '0.1' - memory: 300M \ No newline at end of file + memory: 300M diff --git a/epmet-module/gov-org/gov-org-server/fonts/NotoSansSC-Light.otf b/epmet-module/gov-org/gov-org-server/fonts/NotoSansSC-Light.otf new file mode 100644 index 0000000000..a1f02c6c62 Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/fonts/NotoSansSC-Light.otf differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 6588637233..2f0d44a99b 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -419,6 +419,7 @@ public class AgencyController { .concat("epmet-oper-gov/#/caiji/") .concat(id).concat("?") .concat("name=").concat(name).concat(StrConstant.AND_MARK) + .concat("customerId=").concat(tokenDto.getCustomerId()).concat(StrConstant.AND_MARK) .concat("type=").concat(type).concat(StrConstant.AND_MARK) .concat("userId=").concat(tokenDto.getUserId()) .concat(StrConstant.AND_MARK).concat(String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli())); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java new file mode 100644 index 0000000000..ae5ec4bacb --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CollectListFormDTO.java @@ -0,0 +1,41 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/3/18 19:00 + * @DESC + */ +@Data +public class CollectListFormDTO implements Serializable { + + private static final long serialVersionUID = 2106773724057183577L; + + public interface CollectListForm{} + + @NotNull(message = "pageNo不能为空", groups = CollectListForm.class) + private Integer pageNo; + + @NotNull(message = "pageSize不能为空", groups = CollectListForm.class) + private Integer pageSize; + + private String orgId; + private String neighborHoodId; + private String buildingId; + private String houseId; + private String address; + + /** + * 格式:yyyy-mm-dd + */ + private String startDate; + private String endDate; + + private String userId; + private String customerId; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java new file mode 100644 index 0000000000..21f2244129 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectFormDTO.java @@ -0,0 +1,105 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 收集居民信息入参 + */ +@Data +public class IcResiCollectFormDTO implements Serializable { + public interface AddUserInternalGroup { + } + + public interface InternalShowGroup extends CustomerClientShowGroup { + } + + public interface ExternalShowGroup extends CustomerClientShowGroup { + } + + /** + * 客户Id customer.id + */ + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; + + /** + * 内部:internal;外部:external + */ + @NotBlank(message = "兴德路社区:internal;其他社区:external", groups = AddUserInternalGroup.class) + private String origin; + + /** + * 网格ID_后端接口赋值 + */ + private String gridId; + + /** + * 组织Id_后端接口赋值 + */ + private String agencyId; + + /** + * 组织的pid_后端接口赋值 + */ + private String pids; + + /** + * 所属小区ID + */ + @NotBlank(message = "小区不能为空", groups = InternalShowGroup.class) + private String villageId; + + /** + * 所属楼宇Id + */ + @NotBlank(message = "楼栋不能为空", groups = InternalShowGroup.class) + private String buildId; + + /** + * 单元id + */ + @NotBlank(message = "单元不能为空", groups = InternalShowGroup.class) + private String unitId; + + /** + * 所属家庭Id + */ + @NotBlank(message = "家庭不能为空", groups = InternalShowGroup.class) + private String homeId; + + /** + * 详细地址 + */ + @NotBlank(message = "家庭地址不能为空", groups = {InternalShowGroup.class, ExternalShowGroup.class}) + private String address; + + /** + * 1自由0租住 + */ + @NotBlank(message = "房子属于自由还是组织?", groups = {InternalShowGroup.class, ExternalShowGroup.class}) + private String houseType; + + /** + * 户主姓名 + */ + @NotBlank(message = "户主姓名不能为空", groups = {InternalShowGroup.class, ExternalShowGroup.class}) + private String houseHolderName; + + /** + * 居住成员人数 + */ + @NotNull(message = "居住成员人数不能为空", groups = {InternalShowGroup.class, ExternalShowGroup.class}) + private Integer totalResi; + + @Valid + @NotEmpty(message = "成员信息不能为空", groups = {InternalShowGroup.class, ExternalShowGroup.class}) + private List memberList; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java new file mode 100644 index 0000000000..7d6d1743af --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class IcResiCollectMemFormDTO implements Serializable { + /** + * 客户Id customer.id + */ + private String customerId; + /** + * 居住成员1姓名 + */ + private String name; + + /** + * 居住成员1身份证号 + */ + private String idNum; + + /** + * 居住成员1手机号 + */ + private String mobile; + + /** + * 居住成员1是否参加几轮全员核算检测,数字1-10 + */ + private String heSuanCount; + + /** + * 居住成员1新冠疫苗接种情况;1:已全程接种;2:未全程接种;0未接种; + */ + private Integer ymjz; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java new file mode 100644 index 0000000000..9edcfa4d8d --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/CollectListResultDTO.java @@ -0,0 +1,88 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/3/18 19:00 + * @DESC + */ +@Data +public class CollectListResultDTO implements Serializable { + + private static final long serialVersionUID = -6692672375850864451L; + + /** + * 户主姓名 + */ + private String houseHolderName; + + @JsonIgnore + private String id; + + /** + * 居住地址 + */ + private String address; + + /** + * 房屋类型,1:自有, 0:租住 + */ + private String houseType; + + /** + * 居住人数 + */ + private Integer totalResi; + + private List list; + + public CollectListResultDTO() { + this.houseHolderName = ""; + this.address = ""; + this.houseType = "0"; + this.totalResi = 0; + this.list = new ArrayList<>(); + } + + @Data + public static class CollectListMemberResultDTO{ + /** + * 成员名字 + */ + private String memberName; + + /** + * 成员身份证 + */ + private String memberIdNum; + + /** + * 成员电话 + */ + private String memberMobile; + + /** + * 核酸检测次数 + */ + private String heSuanCount; + + /** + * 疫苗是否全程接种,1:全程接种,2:未全程接种,3:为接种 + */ + private Integer ymjz; + + public CollectListMemberResultDTO() { + this.memberName = ""; + this.memberIdNum = ""; + this.memberMobile = ""; + this.heSuanCount = "0"; + this.ymjz = 0; + } + } +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java new file mode 100644 index 0000000000..ed1227c01e --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java @@ -0,0 +1,71 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.CollectListFormDTO; +import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.service.IcResiCollectService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +/** + * 居民信息采集表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +@RestController +@RequestMapping("icresicollect") +public class IcResiCollectController { + + @Autowired + private IcResiCollectService icResiCollectService; + + /** + * 居民信息采集_提交 + * + * @param formDTO + * @return + */ + @NoRepeatSubmit + @PostMapping("save") + public Result save(@RequestBody IcResiCollectFormDTO formDTO) { + //效验数据 + ValidatorUtils.validateEntity(formDTO, IcResiCollectFormDTO.AddUserInternalGroup.class); + // 内部:internal;外部:external + if ("internal".equals(formDTO.getOrigin())) { + ValidatorUtils.validateEntity(formDTO, IcResiCollectFormDTO.InternalShowGroup.class); + } else if ("external".equals(formDTO.getOrigin())) { + ValidatorUtils.validateEntity(formDTO, IcResiCollectFormDTO.ExternalShowGroup.class); + } + icResiCollectService.save(formDTO); + return new Result(); + } + + /** + * Desc: 查询采集居民信息 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2022/3/18 19:23 + */ + @PostMapping("list") + public Result> getCollectList(@RequestBody CollectListFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO,CollectListFormDTO.CollectListForm.class); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(icResiCollectService.getCollectList(formDTO)); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java new file mode 100644 index 0000000000..f70f0e04ff --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiCollectDao.java @@ -0,0 +1,36 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.CollectListFormDTO; +import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.entity.IcResiCollectEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 居民信息采集表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +@Mapper +public interface IcResiCollectDao extends BaseDao { + + IcResiCollectEntity selectByAddress(String address); + + int updateRec(@Param("id") String id, + @Param("houseType") String houseType, + @Param("houseHolderName") String houseHolderName, + @Param("totalResi") Integer totalResi); + + /** + * Desc: 查询采集居民信息 + * @param formDTO + * @author zxc + * @date 2022/3/18 19:41 + */ + List getCollectList(CollectListFormDTO formDTO); + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java new file mode 100644 index 0000000000..e4748e01b2 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiMemberDao.java @@ -0,0 +1,16 @@ +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.IcResiMemberEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 居民信息成员表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +@Mapper +public interface IcResiMemberDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiCollectEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiCollectEntity.java new file mode 100644 index 0000000000..1123bca8b8 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiCollectEntity.java @@ -0,0 +1,86 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 居民信息采集表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_resi_collect") +public class IcResiCollectEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id customer.id + */ + private String customerId; + + /** + * 内部:internal;外部:external + */ + private String origin; + + /** + * 网格ID + */ + private String gridId; + + /** + * 组织Id + */ + private String agencyId; + + /** + * 组织的pids + */ + private String pids; + + /** + * 所属小区ID + */ + private String villageId; + + /** + * 所属楼宇Id + */ + private String buildId; + + /** + * 单元id + */ + private String unitId; + + /** + * 所属家庭Id + */ + private String homeId; + + /** + * 详细地址 + */ + private String address; + + /** + * 1自由0租住 + */ + private String houseType; + + /** + * 户主姓名 + */ + private String houseHolderName; + + /** + * 居住成员人数 + */ + private Integer totalResi; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java new file mode 100644 index 0000000000..399ce07822 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java @@ -0,0 +1,56 @@ +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 居民信息成员表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_resi_member") +public class IcResiMemberEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id customer.id + */ + private String customerId; + + /** + * ic_resi_colllect.id + */ + private String icResiCollectId; + + /** + * 居住成员1姓名 + */ + private String name; + + /** + * 居住成员1身份证号 + */ + private String idNum; + + /** + * 居住成员1手机号 + */ + private String mobile; + + /** + * 居住成员1是否参加几轮全员核算检测,数字1-10 + */ + private String heSuanCount; + + /** + * 居住成员1新冠疫苗接种情况;1:已全程接种;2:未全程接种;0未接种; + */ + private Integer ymjz; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java new file mode 100644 index 0000000000..4c0bca4fa5 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiCollectService.java @@ -0,0 +1,39 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.CollectListFormDTO; +import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.entity.IcResiCollectEntity; + +import java.util.List; + +/** + * 居民信息采集表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +public interface IcResiCollectService extends BaseService { + + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2022-03-18 + */ + void save(IcResiCollectFormDTO dto); + + /** + * Desc: 查询采集居民信息 + * @param formDTO + * @author zxc + * @date 2022/3/18 19:23 + */ + PageData getCollectList(CollectListFormDTO formDTO); + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java new file mode 100644 index 0000000000..4037180bf0 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java @@ -0,0 +1,138 @@ +package com.epmet.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dao.IcResiCollectDao; +import com.epmet.dao.IcResiMemberDao; +import com.epmet.dto.IcNeighborHoodDTO; +import com.epmet.dto.form.CollectListFormDTO; +import com.epmet.dto.form.IcResiCollectFormDTO; +import com.epmet.dto.result.CollectListResultDTO; +import com.epmet.entity.IcResiCollectEntity; +import com.epmet.entity.IcResiMemberEntity; +import com.epmet.feign.GovOrgOpenFeignClient; +import com.epmet.service.IcResiCollectService; +import org.apache.commons.collections4.MapUtils; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 居民信息采集表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-03-18 + */ +@Service +public class IcResiCollectServiceImpl extends BaseServiceImpl implements IcResiCollectService { + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Autowired + private IcResiMemberDao icResiMemberDao; + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(IcResiCollectFormDTO formDTO) { + IcResiCollectEntity origin = baseDao.selectByAddress(formDTO.getAddress()); + if (null == origin) { + //插入主表、成员表 + IcResiCollectEntity insert = ConvertUtils.sourceToTarget(formDTO, IcResiCollectEntity.class); + if ("internal".equals(formDTO.getOrigin())) { + //根据小区id查询网格相关信息 + IcNeighborHoodDTO neighborHoodDTO = queryIcNeighborHood(formDTO.getVillageId()); + insert.setGridId(neighborHoodDTO.getGridId()); + insert.setAgencyId(neighborHoodDTO.getAgencyId()); + insert.setPids(neighborHoodDTO.getAgencyPids()); + } + baseDao.insert(insert); + List memberList = ConvertUtils.sourceToTarget(formDTO.getMemberList(), IcResiMemberEntity.class); + memberList.forEach(mem -> { + mem.setIcResiCollectId(insert.getId()); + icResiMemberDao.insert(mem); + }); + } else { + //更新主表 + baseDao.updateRec(origin.getId(), formDTO.getHouseType(), formDTO.getHouseHolderName(), formDTO.getTotalResi()); + List newMemberList = ConvertUtils.sourceToTarget(formDTO.getMemberList(), IcResiMemberEntity.class); + //查询之前录入的成员表 + Map memMap = queryOriginMem(origin.getId()); + saveOrUpdateMem(newMemberList, memMap,origin.getId()); + } + } + + /** + * Desc: 查询采集居民信息 + * @param formDTO + * @author zxc + * @date 2022/3/18 19:23 + */ + @Override + public PageData getCollectList(CollectListFormDTO formDTO) { + PageData result = new PageData<>(new ArrayList<>(), 0); + if (StringUtils.isBlank(formDTO.getOrgId()) && + StringUtils.isBlank(formDTO.getNeighborHoodId()) && + StringUtils.isBlank(formDTO.getBuildingId()) && + StringUtils.isBlank(formDTO.getHouseId()) && + StringUtils.isBlank(formDTO.getAddress()) && + StringUtils.isBlank(formDTO.getStartDate()) && + StringUtils.isBlank(formDTO.getEndDate()) ){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo){ + throw new EpmetException("查询人员信息失败"+formDTO.getUserId()); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + } + PageInfo pageList = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.getCollectList(formDTO)); + result.setList(pageList.getList()); + result.setTotal(Integer.valueOf(String.valueOf(pageList.getTotal()))); + return result; + } + + + private IcNeighborHoodDTO queryIcNeighborHood(String villageId) { + Result res = govOrgOpenFeignClient.getIcNeighbordhoodById(villageId); + if (!res.success() || null == res.getData()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "小区信息查询异常", "小区信息查询异常"); + } + return res.getData(); + } + + private Map queryOriginMem(String icResiCollectId) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(IcResiMemberEntity::getIcResiCollectId, icResiCollectId); + List originMemberList = icResiMemberDao.selectList(query); + Map memMap = originMemberList.stream().collect(Collectors.toMap(IcResiMemberEntity::getIdNum, Function.identity())); + return memMap; + } + + private void saveOrUpdateMem(List newMemberList, Map memMap, String originIcResiCollectId) { + for (IcResiMemberEntity entity : newMemberList) { + if (MapUtils.isNotEmpty(memMap) && memMap.containsKey(entity.getIdNum())) { + entity.setIcResiCollectId(originIcResiCollectId); + entity.setCustomerId(memMap.get(entity.getIdNum()).getCustomerId()); + entity.setId(memMap.get(entity.getIdNum()).getId()); + icResiMemberDao.updateById(entity); + continue; + } + //没有插入 + entity.setIcResiCollectId(originIcResiCollectId); + icResiMemberDao.insert(entity); + } + } +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java index 26da3f073d..8a1648fdb4 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsResiWarnServiceImpl.java @@ -376,7 +376,7 @@ public class StatsResiWarnServiceImpl implements StatsResiWarnService { continue; } String categoryName = StringUtils.isBlank(configMap.get(dto.getConfigId())) ? StrConstant.EPMETY_STR : configMap.get(dto.getConfigId()); - dto.setNoticeContent(String.format("%s%s%s%s超出预警!", infoCache.getGridName(), infoCache.getNeighborHoodName(), infoCache.getBuildingName(), categoryName)); + dto.setNoticeContent(String.format("%s-%s%s【%s】超出预警!", infoCache.getGridName(), infoCache.getNeighborHoodName(), infoCache.getBuildingName(), categoryName)); resList.add(dto); } return resList; diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml new file mode 100644 index 0000000000..7f2c5a9a4d --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiCollectDao.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + UPDATE ic_resi_collect + SET UPDATED_TIME = NOW(), + HOUSE_TYPE = #{houseType}, + HOUSE_HOLDER_NAME = #{houseHolderName}, + TOTAL_RESI = #{totalResi} + WHERE + id = #{id} + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml new file mode 100644 index 0000000000..6423f7ecff --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiMemberDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file