diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index 70a29a30a4..77d7d9062d 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -43,11 +43,6 @@ epmet-message-client 2.0.0 - - com.epmet - pli-power-base-client - 2.0.0 - org.springframework.boot spring-boot-starter-web diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java deleted file mode 100644 index 4fb990d033..0000000000 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.epmet.service; - -import com.epmet.commons.tools.utils.Result; -import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO; - -public interface PliPowerService { - - /** - * 访客登出 - * - * @param formDTO - * @return com.epmet.commons.tools.utils.Result - * @author zhy - * @date 2022/5/30 10:25 - */ - Result visitorLogout(VisitorLogoutFormDTO formDTO); -} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java deleted file mode 100644 index ed54b7e6d9..0000000000 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.epmet.service.impl; - -import com.epmet.commons.tools.utils.Result; -import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO; -import com.epmet.plugin.power.feign.PliPowerFeignClient; -import com.epmet.service.PliPowerService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - - -/** - * @Description - * @ClassName StatsUserServiceImpl - * @Auth wangc - * @Date 2020-06-29 09:41 - */ -@Service -public class PliPowerServiceImpl implements PliPowerService { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Autowired - private PliPowerFeignClient pliPowerFeignClient; - - @Override - public Result visitorLogout(VisitorLogoutFormDTO formDTO) { - return pliPowerFeignClient.visitorLogout(formDTO); - } -} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java deleted file mode 100644 index 41ffa19ecc..0000000000 --- a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.epmet.task; - -import com.alibaba.fastjson.JSON; -import com.epmet.commons.tools.utils.Result; -import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO; -import com.epmet.service.PliPowerService; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * 访客登出 - * - * @author zhy - * @date 2022/5/30 10:23 - */ -@Component("pliVisitorLogoutTask") -public class PliVisitorLogoutTask implements ITask { - - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Autowired - private PliPowerService pliPowerService; - - @Override - public void run(String params) { - logger.info("VisitorLogoutTask定时任务正在执行,参数为:{}", params); - VisitorLogoutFormDTO formDTO = new VisitorLogoutFormDTO(); - if (StringUtils.isNotBlank(params)) { - formDTO = JSON.parseObject(params, VisitorLogoutFormDTO.class); - } - Result result = pliPowerService.visitorLogout(formDTO); - if (result.success()) { - logger.info("VisitorLogoutTask定时任务执行成功"); - } else { - logger.error("VisitorLogoutTask定时任务执行失败:" + result.getMsg()); - } - } -} diff --git a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java index 1c43b7e121..6bb92ad38b 100644 --- a/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java +++ b/epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java @@ -34,7 +34,11 @@ public enum OssTypeEnum { /** * 本地 */ - LOCAL(5); + LOCAL(5), + /** + * minio + */ + MINIO(6); private int value; diff --git a/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-dev.yml b/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-dev.yml index aa8f8011c2..7ba0db18f3 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-dev.yml +++ b/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-dev.yml @@ -9,7 +9,7 @@ services: volumes: - "/opt/epmet-cloud-logs/dev:/logs" environment: - RUN_INSTRUCT: "java -Xms32m -Xmx200m -jar ./epmet-oss.jar" + RUN_INSTRUCT: "java -Xms256m -Xmx400m -jar ./epmet-oss.jar" restart: "unless-stopped" logging: driver: local diff --git a/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-test.yml b/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-test.yml index 8beffda74d..ed234aacaa 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-test.yml +++ b/epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-test.yml @@ -9,7 +9,7 @@ services: volumes: - "/opt/epmet-cloud-logs/test:/logs" environment: - RUN_INSTRUCT: "java -Xms32m -Xmx200m -jar ./epmet-oss.jar" + RUN_INSTRUCT: "java -Xms256m -Xmx512m -jar ./epmet-oss.jar" restart: "unless-stopped" logging: driver: local diff --git a/epmet-module/epmet-oss/epmet-oss-server/pom.xml b/epmet-module/epmet-oss/epmet-oss-server/pom.xml index cee3606bf6..fddc87331a 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/pom.xml +++ b/epmet-module/epmet-oss/epmet-oss-server/pom.xml @@ -90,6 +90,12 @@ org.springframework spring-test + + + io.minio + minio + 8.4.2 + diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java index 9cd575cbcf..6b44c47d66 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java @@ -11,9 +11,11 @@ package com.epmet.cloud; import com.epmet.commons.tools.validator.group.AliyunGroup; import com.epmet.commons.tools.validator.group.QcloudGroup; import com.epmet.commons.tools.validator.group.QiniuGroup; +import com.epmet.constants.PrivacyType; import com.epmet.validator.group.FastDFSGroup; import com.epmet.validator.group.LocalGroup; import lombok.Data; +import org.apache.commons.lang3.StringUtils; import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.URL; @@ -101,6 +103,7 @@ public class CloudStorageConfig implements Serializable { private String localPath; private AliyunCloudStorageConfig aliyun; + private MinioStorageConfig minio; /** * 阿里云存储配置 */ @@ -110,6 +113,20 @@ public class CloudStorageConfig implements Serializable { private AliyunCloudStorageConfigProps external; } + @Data + public static class MinioStorageConfig { + private MinioStorageConfigProps internal; + private MinioStorageConfigProps external; + + public MinioStorageConfigProps getConfigByPrivacy(String privacy) { + if (StringUtils.isNotBlank(privacy) && PrivacyType.INTERNAL.equals(privacy)) { + return internal; + } else { + return external; + } + } + } + /** * 阿里云存储配置属性 */ @@ -134,4 +151,23 @@ public class CloudStorageConfig implements Serializable { private String aliyunBucketName; } + /** + * minio存储配置属性 + */ + @Data + public static class MinioStorageConfigProps { + /** + * 外部访问域名,用于用户直接访问minio服务 + */ + private String minioExternalDomain; + /** + * 内部访问域名,用于服务集群内部使用 + */ + private String minioInternalDomain; + private String minioEndPoint; + private String minioAccessKey; + private String minioSecretKey; + private String minioPrefix; + private String minioBucketName; + } } diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/MinioStorageService.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/MinioStorageService.java new file mode 100644 index 0000000000..e9204c3623 --- /dev/null +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/MinioStorageService.java @@ -0,0 +1,106 @@ +package com.epmet.cloud; + +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; +import io.minio.MinioClient; +import io.minio.ObjectWriteResponse; +import io.minio.PutObjectArgs; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; +import org.springframework.http.MediaTypeFactory; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Paths; + +/** + * minio 文件服务 + */ +@Slf4j +public class MinioStorageService extends AbstractCloudStorageService { + + private MinioClient minioClient; + + public MinioStorageService(CloudStorageConfig config) { + this.config = config; + + CloudStorageConfig.MinioStorageConfigProps props = config.getMinio().getConfigByPrivacy(null); + + log.info("Minio客户端连接所用的域名:{}", props.getMinioInternalDomain()); + + /** + * minio和服务在同一个局域网,则可以使用内网域名上传,速度更快更稳定 + */ + minioClient = MinioClient.builder() + .endpoint(props.getMinioInternalDomain()) // 保证和nginx的proxy_set_header Host 一致 + .credentials(props.getMinioAccessKey(), props.getMinioSecretKey()) + .build(); + } + + @Override + public String getOssDomain(String privacy) { + return this.config.getMinio().getConfigByPrivacy(privacy).getMinioExternalDomain(); + } + + @Override + public String getOssPrefix(String privacy) { + return this.config.getMinio().getConfigByPrivacy(privacy).getMinioPrefix(); + } + + @Override + public String upload(byte[] data, String path, String privacyType) { + return upload(new ByteArrayInputStream(data), path, privacyType); + } + + @Override + public String uploadSuffix(byte[] data, String suffix, String privacyType) { + return uploadSuffix(new ByteArrayInputStream(data), suffix, privacyType); + } + + /** + * 此处bucket已经做为path + * @param inputStream 字节流 + * @param path 文件路径,包含文件名 + * @param privacyType + * @return + */ + @Override + public String upload(InputStream inputStream, String path, String privacyType) { + CloudStorageConfig.MinioStorageConfigProps props = this.config.getMinio().getConfigByPrivacy(privacyType); + String contentType = MediaTypeFactory.getMediaType(path).orElse(MediaType.APPLICATION_OCTET_STREAM).toString(); + try { + ObjectWriteResponse resp = minioClient.putObject(PutObjectArgs.builder() + .bucket(props.getMinioBucketName()) + .object(path) + .stream(inputStream, inputStream.available(), -1) + .contentType(contentType) + .build()); + + log.debug("minio上传文件成功。bucket:{}, object:{}, privacyType:{}", resp.bucket(), resp.object(), privacyType); + + // 返回值要存储到数据库,供用户访问,因此使用外网域名 + return props.getMinioExternalDomain() + "/" + Paths.get(resp.bucket()).resolve(resp.object()).toString(); + } catch (Exception e) { + String errorMsg = ExceptionUtils.getErrorStackTrace(e); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorMsg); + } + } + + @Override + public String uploadSuffix(InputStream inputStream, String suffix, String privacyType) { + CloudStorageConfig.MinioStorageConfigProps props = this.config.getMinio().getConfigByPrivacy(privacyType); + return upload(inputStream, getPath(props.getMinioPrefix(), suffix, privacyType), privacyType); + } + + @Override + public void down(String privacyType) throws IOException { + + } + + @Override + public boolean delete(String objectName, String privacyType) { + return false; + } +} diff --git a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java index 3d69543784..a9113d5fba 100644 --- a/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java @@ -40,6 +40,8 @@ public final class OssFactory { abstractCloudStorageService = new FastDFSCloudStorageService(config); }else if(config.getType() == OssTypeEnum.LOCAL.value()){ abstractCloudStorageService = new LocalCloudStorageService(config); + }else if(config.getType() == OssTypeEnum.MINIO.value()){ + abstractCloudStorageService = new MinioStorageService(config); } } return abstractCloudStorageService; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseChartFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseChartFormDTO.java index 6d3d8f433a..fec4b2d209 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseChartFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseChartFormDTO.java @@ -21,6 +21,14 @@ public class HouseChartFormDTO implements Serializable { * 组织、网格、小区类型 agency grid village */ private String orgType; + /** + * 数据类型【1:出租 0:自住 2:闲置 3:未售出】 + */ + private String rentType; + + private Integer pageNo = 1; + private Integer pageSize = 20; + private Boolean isPage = true; //token这信息 private String customerId; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java index aed43f1b0c..61bee2a9cc 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java @@ -47,6 +47,14 @@ public class HouseChartResultDTO implements Serializable { * 房屋闲置总数占比(保留两位小数,带百分号的) */ private Double xzHouseRatio = 0.0; + /** + * 房屋未售出总数 + */ + private Integer wscHouseTotal = 0; + /** + * 房屋未售出总数占比(保留两位小数,带百分号的) + */ + private Double wscHouseRatio = 0.0; @JsonIgnore private Integer num; diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java index 905dca051f..45ded6601b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java @@ -50,6 +50,14 @@ public class SubUserHouseListResultDTO implements Serializable { * 房屋闲置总数占比(保留两位小数,带百分号的) */ private Double xzHouseRatio = 0.0; + /** + * 房屋未售出总数 + */ + private Integer wscHouseTotal = 0; + /** + * 房屋未售出总数占比(保留两位小数,带百分号的) + */ + private Double wscHouseRatio = 0.0; /** * 居民总数 */ diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index ecf6b0056a..35b3bc0e6f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -617,4 +617,16 @@ public class HouseController implements ResultDataResolver { return new Result(); } + /** + * @Author sun + * @Description 【人房概览】房屋统计数点击查询列表/详情 + **/ + @PostMapping("housestatislistdetail") + @MaskResponse(fieldNames = {"ownerIdCard", "ownerPhone"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD, MaskResponse.MASK_TYPE_MOBILE}) + public Result> houseStatisListDetail(@LoginUser TokenDto tokenDto, @RequestBody HouseChartFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + return new Result>().ok(houseService.houseStatisListDetail(formDTO)); + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java index e8e8157256..4d5c986eff 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java @@ -4,6 +4,7 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.ImportGeneralDTO; import com.epmet.dto.form.CheckHouseInfoFormDTO; import com.epmet.dto.form.GetHouseInfoToCollectFormDTO; +import com.epmet.dto.form.HouseChartFormDTO; import com.epmet.dto.form.IcHouseListFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.CustomerOrgParameterEntity; @@ -209,4 +210,5 @@ public interface IcHouseDao extends BaseDao { */ IcHouseEntity getHouseInfoByName(CheckHouseInfoFormDTO formDTO); + List houseStatisListDetail(HouseChartFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index 31b1d3f36c..239e844523 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -195,4 +195,6 @@ public interface HouseService { Result getHouseInfoToCollect(GetHouseInfoToCollectFormDTO formDTO); PageData listHouses4ReportTest(String houseId, Integer pageNo, Integer pageSize); + + PageData houseStatisListDetail(HouseChartFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 933a07daeb..bea7a77501 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -703,14 +703,17 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { resultDTO.setZzHouseTotal(l.getNum()); } else if (l.getRentFlag() == 1) { resultDTO.setCzHouseTotal(l.getNum()); - } else { + } else if (l.getRentFlag() == 2) { resultDTO.setXzHouseTotal(l.getNum()); + } else if (l.getRentFlag() == 3) { + resultDTO.setWscHouseTotal(l.getNum()); } }); resultDTO.setHouseTotal(houseTotal.get()); resultDTO.setZzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getZzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getZzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); resultDTO.setCzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getCzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getCzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); resultDTO.setXzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getXzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getXzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); + resultDTO.setWscHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getWscHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getWscHouseTotal() / (float) resultDTO.getHouseTotal()) * 100))); resultDTO.setOrgId(formDTO.getOrgId()); resultDTO.setOrgType(formDTO.getOrgType()); return resultDTO; @@ -946,6 +949,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { dto.setCzHouseRatio(h.getCzHouseRatio()); dto.setXzHouseTotal(h.getXzHouseTotal()); dto.setXzHouseRatio(h.getXzHouseRatio()); + dto.setWscHouseTotal(h.getWscHouseTotal()); + dto.setWscHouseRatio(h.getWscHouseRatio()); } } for (UserChartResultDTO u : userResult.getData()) { @@ -1330,4 +1335,33 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { return new PageData<>(houseDtos, pi.getTotal()); } + + @Override + public PageData houseStatisListDetail(HouseChartFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()); + //1.判断入参是否有值,没有值则赋值当前工作人员缓存中所属组织信息 + if (StringUtils.isEmpty(formDTO.getOrgId())) { + //获取工作人员缓存信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType("agency"); + } + + //2.按条件查询房屋信息数据 + List list = icHouseDao.houseStatisListDetail(formDTO); + + //3.封装数据并返回 + list.forEach(item -> { + item.setHouseType(HouseTypeEnums.getTypeValue(item.getHouseTypeKey())); + item.setPurpose(HousePurposeEnums.getTypeValue(item.getPurposeKey())); + }); + + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + + } 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 5d6fbe270f..5cfdd0fd4d 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 @@ -559,5 +559,84 @@ and DOOR_NAME = #{homeName} + + diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/IcPartyOrgDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/IcPartyOrgDTO.java index 3273372fed..a6ee2e449e 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/IcPartyOrgDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/IcPartyOrgDTO.java @@ -89,6 +89,11 @@ public class IcPartyOrgDTO implements Serializable { */ private String principal; + /** + * 负责人staffId + */ + private String principalStaffId; + /** * 联系电话 */ diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/form/EditPrincipalFormDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/form/EditPrincipalFormDTO.java index e7cab3e965..c518b0ef7e 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/form/EditPrincipalFormDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/form/EditPrincipalFormDTO.java @@ -30,4 +30,7 @@ public class EditPrincipalFormDTO implements Serializable { */ @NotBlank(message = "principalMobile不能为空",groups = AddGroup.class) private String principalMobile; + + @NotBlank(message = "principalStaffId不能为空",groups = AddGroup.class) + private String principalStaffId; } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java index b6404fb481..bc8be3d038 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java @@ -78,6 +78,11 @@ public class IcPartyOrgEntity extends BaseEpmetEntity { */ private String principal; + /** + * 负责人staffId + */ + private String principalStaffId; + /** * 联系电话 */ diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.11__add_principal_staff_id.sql b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.11__add_principal_staff_id.sql new file mode 100644 index 0000000000..6530fb1923 --- /dev/null +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.11__add_principal_staff_id.sql @@ -0,0 +1,3 @@ +ALTER TABLE ic_party_org ADD COLUMN PRINCIPAL_STAFF_ID VARCHAR(32) DEFAULT '' COMMENT '负责人staffId' AFTER PRINCIPAL_MOBILE; +alter table ic_party_org modify PRINCIPAL_MOBILE VARCHAR(30) DEFAULT '' COMMENT '联系方式'; +alter table ic_party_org modify PRINCIPAL VARCHAR(30) DEFAULT '' COMMENT '负责人'; \ No newline at end of file diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml index 5c042f9487..410a074121 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml @@ -30,6 +30,7 @@ update ic_party_org set PRINCIPAL_MOBILE = #{principalMobile}, PRINCIPAL = #{principal}, + PRINCIPAL_STAFF_ID = #{principalStaffId}, UPDATED_TIME = NOW() where id = #{partyOrgId} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java index ff71263f95..7d357089f6 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java @@ -22,6 +22,14 @@ public class UserChartFormDTO implements Serializable { * 组织、网格、小区类型 agency grid village */ private String orgType; + /** + * 数据类型【居民总数: all 常住: cz 流动: ld】 + */ + private String type; + + private Integer pageNo = 1; + private Integer pageSize = 20; + private Boolean isPage = true; //id集合 private List idList; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java index 68ad326637..5e739016b3 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java @@ -47,6 +47,8 @@ public class PersonDataResultDTO implements Serializable { * 姓名 */ private String name; + private String mobile; + private String isTenant; /** * 经济状况:包括 月收入:monthlyIncome 和 退休金额:retirementAmount diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 0d5652074c..d24e66db07 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -1411,6 +1411,17 @@ public class IcResiUserController implements ResultDataResolver { return new Result>().ok(page); } + /** + * @Author sun + * @Description 【人房概览】居民统计数点击查询列表 + **/ + @PostMapping("icuserstatislist") + public Result> icUserStatisList(@LoginUser TokenDto tokenDto, @RequestBody UserChartFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + return new Result>().ok(icResiUserService.icUserStatisList(formDTO)); + } + /** * 更新育龄妇女状态定时任务 * @Param 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 1fedc84df4..dd9e97bbae 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 @@ -428,4 +428,6 @@ public interface IcResiUserDao extends BaseDao { * @Date 2022/6/29 17:37 */ List getIcUserCount(IcUserCountFormDTO formDTO); + + List icUserStatisList(UserChartFormDTO formDTO); } 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 145ea7fc9e..87dcd4cba3 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 @@ -508,6 +508,8 @@ public interface IcResiUserService extends BaseService { PageData listResiNonDynamic(Boolean fuzzy, String gridId, String name, String mobile, Integer pageNo, Integer pageSize); + PageData icUserStatisList(UserChartFormDTO formDTO); + /** * 更新育龄妇女状态定时任务 * @Param 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 index ce8441c1a1..599f9e81f8 100644 --- 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 @@ -189,16 +189,21 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl { - if (StringUtils.isNotBlank(item.getFaceImg())) { - VisitVisitorFormDTO visitor = new VisitVisitorFormDTO(); - visitor.setIdCard(item.getIdNum()); - visitor.setMobile(item.getMobile()); - visitor.setName(item.getName()); - visitor.setFaceImg(item.getFaceImg()); - dhDeviceUtil.sendAuth(visitor); - } - }); + try { + formDTO.getMemberList().forEach(item -> { + if (StringUtils.isNotBlank(item.getFaceImg())) { + VisitVisitorFormDTO visitor = new VisitVisitorFormDTO(); + visitor.setIdCard(item.getIdNum()); + visitor.setMobile(item.getMobile()); + visitor.setName(item.getName()); + visitor.setFaceImg(item.getFaceImg()); + dhDeviceUtil.sendAuth(visitor); + } + }); + return new Result().ok("今日您可通过人脸设备便捷出入小区,明天及后续进入请再次登记,谢谢!"); + } catch (Exception e) { + return new Result().ok("访客信息登记成功"); + } } return new Result().ok("提交成功"); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectVisitorServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectVisitorServiceImpl.java index a73d022548..34c56f8928 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectVisitorServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectVisitorServiceImpl.java @@ -165,7 +165,12 @@ public class IcResiCollectVisitorServiceImpl extends BaseServiceImpl(list, new PageInfo<>(list).getTotal(), pageSize); } + @Override + public PageData icUserStatisList(UserChartFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()); + //1.判断入参是否有值,没有值则赋值当前工作人员缓存中所属组织信息 + if (StringUtils.isEmpty(formDTO.getOrgId())) { + //2.获取工作人员缓存信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType("agency"); + } + //获取无效组织网格Id列表 + if("agency".equals(formDTO.getOrgType())){ + //查询组织数据时排除掉当前组织及下级无效组织列表 + Result result = govOrgOpenFeignClient.getDelAgencyGridIdList(formDTO.getOrgId()); + if (!result.success()) { + throw new EpmetException(String.format("获取当前组织及下级已删除组织、网格列表失败,组织Id->%s", formDTO.getUserId())); + } + formDTO.setAgencyIdList(result.getData().getAgencyIdList()); + formDTO.setGridIdList(result.getData().getGridIdList()); + } + + //2.按条件查询业务数据 + List list = baseDao.icUserStatisList(formDTO); + if (CollectionUtils.isEmpty(list)) { + return new PageData(new ArrayList<>(), NumConstant.ZERO); + } + + //3.封装数据 + //查询小区,楼号,网格 + Result> gridResult = govOrgOpenFeignClient.getGridListByGridIds(list.stream().map(SearchByNameResultDTO::getGridId).collect(Collectors.toList())); + if (!gridResult.success()) { + throw new RenException(gridResult.getCode(), gridResult.getMsg()); + } + Map gridMap = gridResult.getData().stream().collect(Collectors.toMap(AllGridsByUserIdResultDTO::getGridId, AllGridsByUserIdResultDTO::getGridName)); + Result> neighborHoodResult = govOrgOpenFeignClient.getListByIds(list.stream().map(SearchByNameResultDTO::getNeighborHoodId).collect(Collectors.toList())); + if (!neighborHoodResult.success()) { + throw new RenException(neighborHoodResult.getCode(), neighborHoodResult.getMsg()); + } + Map neighborHoodMap = neighborHoodResult.getData().stream().collect(Collectors.toMap(IcNeighborHoodDTO::getId, IcNeighborHoodDTO::getNeighborHoodName)); + Result> buildResult = govOrgOpenFeignClient.buildingListByIds(list.stream().map(SearchByNameResultDTO::getBuildId).collect(Collectors.toList())); + if (!buildResult.success()) { + throw new RenException(buildResult.getCode(), buildResult.getMsg()); + } + Map buildMap = buildResult.getData().stream().collect(Collectors.toMap(BuildingResultDTO::getBuildingId, BuildingResultDTO::getBuildingName)); + AtomicInteger i = new AtomicInteger(NumConstant.ONE); + list.forEach(item -> { + item.setGridName(gridMap.get(item.getGridId())); + item.setNeighborHoodName(neighborHoodMap.get(item.getNeighborHoodId())); + item.setBuildNum(buildMap.get(item.getBuildId())); + item.setSort(i.getAndIncrement()); + }); + + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } + + + /** * 更新育龄妇女状态定时任务 * 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 9373743976..fe17400279 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 @@ -296,6 +296,8 @@ + + @@ -310,6 +312,8 @@ YSR, TXJE, ID_CARD, + MOBILE, + IS_TENANT as isTenant, IFNULL(IS_VOLUNTEER,'0') AS isVolunteer, CUSTOMER_ID, GRID_ID @@ -1289,4 +1293,58 @@ + + +