Browse Source

Merge remote-tracking branch 'remotes/origin/dev_minio' into yantai-zhegnwu-master

feature/evaluate
jianjun 3 years ago
parent
commit
5de67252db
  1. 5
      epmet-module/epmet-job/epmet-job-server/pom.xml
  2. 17
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java
  3. 31
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java
  4. 41
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java
  5. 6
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/enums/OssTypeEnum.java
  6. 2
      epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-dev.yml
  7. 2
      epmet-module/epmet-oss/epmet-oss-server/deploy/docker-compose-test.yml
  8. 6
      epmet-module/epmet-oss/epmet-oss-server/pom.xml
  9. 36
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/CloudStorageConfig.java
  10. 106
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/MinioStorageService.java
  11. 2
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/OssFactory.java
  12. 8
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseChartFormDTO.java
  13. 8
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java
  14. 8
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java
  15. 12
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
  16. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java
  17. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java
  18. 36
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java
  19. 79
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  20. 5
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/IcPartyOrgDTO.java
  21. 3
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partyOrg/form/EditPrincipalFormDTO.java
  22. 5
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java
  23. 3
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.11__add_principal_staff_id.sql
  24. 1
      epmet-module/resi-partymember/resi-partymember-server/src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml
  25. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java
  26. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java
  27. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  28. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  29. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  30. 25
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java
  31. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectVisitorServiceImpl.java
  32. 61
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  33. 58
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

5
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -43,11 +43,6 @@
<artifactId>epmet-message-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>pli-power-base-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

17
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java

@ -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);
}

31
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java

@ -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);
}
}

41
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java

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

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

2
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

2
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

6
epmet-module/epmet-oss/epmet-oss-server/pom.xml

@ -90,6 +90,12 @@
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<!--minio-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.2</version>
</dependency>
</dependencies>
<build>

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

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

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

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

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

8
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;
/**
* 居民总数
*/

12
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<PageData<IcHouseListResultDTO>> houseStatisListDetail(@LoginUser TokenDto tokenDto, @RequestBody HouseChartFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<PageData<IcHouseListResultDTO>>().ok(houseService.houseStatisListDetail(formDTO));
}
}

2
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> {
*/
IcHouseEntity getHouseInfoByName(CheckHouseInfoFormDTO formDTO);
List<IcHouseListResultDTO> houseStatisListDetail(HouseChartFormDTO formDTO);
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java

@ -195,4 +195,6 @@ public interface HouseService {
Result<IcHouseInfoCollectResultDTO> getHouseInfoToCollect(GetHouseInfoToCollectFormDTO formDTO);
PageData<ReportHouseTestResultDTO> listHouses4ReportTest(String houseId, Integer pageNo, Integer pageSize);
PageData<IcHouseListResultDTO> houseStatisListDetail(HouseChartFormDTO formDTO);
}

36
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<IcHouseListResultDTO> 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<IcHouseListResultDTO> list = icHouseDao.houseStatisListDetail(formDTO);
//3.封装数据并返回
list.forEach(item -> {
item.setHouseType(HouseTypeEnums.getTypeValue(item.getHouseTypeKey()));
item.setPurpose(HousePurposeEnums.getTypeValue(item.getPurposeKey()));
});
PageInfo<IcHouseListResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

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

@ -559,5 +559,84 @@
and DOOR_NAME = #{homeName}
</select>
<select id="houseStatisListDetail" resultType="com.epmet.dto.result.IcHouseListResultDTO">
SELECT
concat(b.building_name,'-',d.unit_num,'-',a.door_name) as houseName,
c.neighbor_hood_name as neighborHoodName,
b.building_name as buildingName,
CONCAT(d.unit_num,'单元') as unitNum,
a.door_name as doorName,
(
case when a.rent_flag = '0' then '自住'
when a.rent_flag = '1' then '出租'
when a.rent_flag = '2' then '闲置'
when a.rent_flag = '3' then '未出售'
else '' end
) as rentFlag,
a.owner_name as ownerName,
a.owner_phone as ownerPhone,
a.owner_id_card as ownerIdCard,
a.house_code,
a.id as houseId,
c.id as neighborHoodId,
b.id as buildingId,
a.building_unit_id as unitNumKey,
a.house_type as houseTypeKey,
a.purpose as purposeKey,
CAST(a.rent_flag AS CHAR) as rentFlagKey,
c.agency_id as agencyId,
ag.organization_name agencyName,
c.grid_id as gridId,
gr.grid_name,
IFNULL(a.sort,0) as sort,
IFNULL(a.remark,'') AS remark,
a.customer_id
FROM
ic_house a
LEFT JOIN ic_building b on a.building_id = b.id and b.del_flag = '0'
LEFT JOIN ic_neighbor_hood c on a.neighbor_hood_id = c.id and c.del_flag = '0'
LEFT JOIN ic_building_unit d on a.building_unit_id = d.id and d.del_flag = '0'
LEFT JOIN customer_grid gr on gr.id = c.grid_id and gr.del_flag = '0'
LEFT JOIN customer_agency ag on ag.id = c.agency_id and ag.del_flag = '0'
WHERE
a.del_flag = '0'
<if test="rentType != null and rentType.trim() != ''">
AND a.rent_flag = #{rentType}
</if>
<choose>
<when test='orgType == "agency"'>
AND a.neighbor_hood_id IN (
select a.id from ic_neighbor_hood a
<!-- 排除掉无效组织、网格数据 -->
inner join customer_agency b on a.agency_id = b.id and b.del_flag = '0'
inner join customer_grid c on a.grid_id = c.id and c.del_flag = '0'
where a.del_flag = '0'
and (a.agency_id = #{orgId} OR a.agency_pids LIKE CONCAT('%', #{orgId}, '%'))
)
</when>
<when test='orgType == "grid"'>
AND a.neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and grid_id = #{orgId}
)
</when>
<otherwise>
AND a.neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and id = #{orgId}
)
</otherwise>
</choose>
ORDER BY
a.sort,
CONVERT(c.NEIGHBOR_HOOD_NAME using gbk),
CONVERT(b.BUILDING_NAME USING gbk),
CONVERT(d.UNIT_NAME USING gbk),
CAST(a.DOOR_NAME AS SIGNED),
CONVERT(a.DOOR_NAME using gbk)
</select>
</mapper>

5
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;
/**
* 联系电话
*/

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

5
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;
/**
* 联系电话
*/

3
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 '负责人';

1
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}
</update>

8
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<String> idList;

2
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

11
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<PageData<IcResiNonDynamicResultDTO>>().ok(page);
}
/**
* @Author sun
* @Description 人房概览居民统计数点击查询列表
**/
@PostMapping("icuserstatislist")
public Result<PageData<SearchByNameResultDTO>> icUserStatisList(@LoginUser TokenDto tokenDto, @RequestBody UserChartFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<PageData<SearchByNameResultDTO>>().ok(icResiUserService.icUserStatisList(formDTO));
}
/**
* 更新育龄妇女状态定时任务
* @Param

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

@ -428,4 +428,6 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
* @Date 2022/6/29 17:37
*/
List<IcUserCountResultDTO> getIcUserCount(IcUserCountFormDTO formDTO);
List<SearchByNameResultDTO> icUserStatisList(UserChartFormDTO formDTO);
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -508,6 +508,8 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
PageData<IcResiNonDynamicResultDTO> listResiNonDynamic(Boolean fuzzy, String gridId, String name, String mobile, Integer pageNo, Integer pageSize);
PageData<SearchByNameResultDTO> icUserStatisList(UserChartFormDTO formDTO);
/**
* 更新育龄妇女状态定时任务
* @Param

25
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectServiceImpl.java

@ -189,16 +189,21 @@ public class IcResiCollectServiceImpl extends BaseServiceImpl<IcResiCollectDao,
// 如果是顺德居小区的人还要下放门禁
if (formDTO.getVillageName().contains("顺德居")) {
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);
}
});
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("提交成功");

7
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiCollectVisitorServiceImpl.java

@ -165,7 +165,12 @@ public class IcResiCollectVisitorServiceImpl extends BaseServiceImpl<IcResiColle
visitor.setName(dto.getName());
visitor.setIdCard(dto.getIdCard());
visitor.setFaceImg(dto.getFaceImg());
dhDeviceUtil.sendAuth(visitor);
try {
dhDeviceUtil.sendAuth(visitor);
return new Result().ok("今日您可通过人脸设备便捷出入小区,明天及后续进入请再次登记,谢谢!");
} catch (Exception e) {
return new Result().ok("访客信息登记成功");
}
}
return new Result().ok("提交成功");
}

61
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -3353,6 +3353,67 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
return new PageData<IcResiNonDynamicResultDTO>(list, new PageInfo<>(list).getTotal(), pageSize);
}
@Override
public PageData<SearchByNameResultDTO> 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<DelAgencyGridIdResultDTO> 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<SearchByNameResultDTO> list = baseDao.icUserStatisList(formDTO);
if (CollectionUtils.isEmpty(list)) {
return new PageData<SearchByNameResultDTO>(new ArrayList<>(), NumConstant.ZERO);
}
//3.封装数据
//查询小区,楼号,网格
Result<List<AllGridsByUserIdResultDTO>> gridResult = govOrgOpenFeignClient.getGridListByGridIds(list.stream().map(SearchByNameResultDTO::getGridId).collect(Collectors.toList()));
if (!gridResult.success()) {
throw new RenException(gridResult.getCode(), gridResult.getMsg());
}
Map<String, String> gridMap = gridResult.getData().stream().collect(Collectors.toMap(AllGridsByUserIdResultDTO::getGridId, AllGridsByUserIdResultDTO::getGridName));
Result<List<IcNeighborHoodDTO>> neighborHoodResult = govOrgOpenFeignClient.getListByIds(list.stream().map(SearchByNameResultDTO::getNeighborHoodId).collect(Collectors.toList()));
if (!neighborHoodResult.success()) {
throw new RenException(neighborHoodResult.getCode(), neighborHoodResult.getMsg());
}
Map<String, String> neighborHoodMap = neighborHoodResult.getData().stream().collect(Collectors.toMap(IcNeighborHoodDTO::getId, IcNeighborHoodDTO::getNeighborHoodName));
Result<List<BuildingResultDTO>> buildResult = govOrgOpenFeignClient.buildingListByIds(list.stream().map(SearchByNameResultDTO::getBuildId).collect(Collectors.toList()));
if (!buildResult.success()) {
throw new RenException(buildResult.getCode(), buildResult.getMsg());
}
Map<String, String> 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<SearchByNameResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
/**
* 更新育龄妇女状态定时任务
*

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

@ -296,6 +296,8 @@
<result column="ID_CARD" property="idCard"/>
<result column="name" property="name"/>
<result column="isVolunteer" property="isVolunteer"/>
<result column="mobile" property="mobile"/>
<result column="isTenant" property="isTenant"/>
<result column="CUSTOMER_ID" property="customerId"/>
<result column="GRID_ID" property="gridId"/>
<collection property="financialSituation" ofType="com.epmet.dto.FinancialSituationDTO">
@ -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 @@
</choose>
</if>
</select>
<select id="icUserStatisList" resultType="com.epmet.dto.result.SearchByNameResultDTO">
SELECT
id AS userId,
`name`,
village_id AS neighborHoodId,
build_id,
grid_id,
mobile,
(
case when gender = '1'then '男'
when gender = '2' then '女'
else '未知'
end
) as gender,
id_card,
IFNULL(birthday,'') AS birthday,
IFNULL(remarks,'') AS remarks
FROM
ic_resi_user
WHERE
del_flag = '0'
AND status = '0'
AND customer_id = #{customerId}
<if test='null != type and type.trim() != "" and type == "cz" '>
AND is_floating = '0'
</if>
<if test='null != type and type.trim() != "" and type == "ld" '>
AND (is_floating != '0' or is_floating is null)
</if>
<choose>
<when test='orgType == "agency"'>
AND (agency_id = #{orgId} OR pids LIKE CONCAT('%', #{orgId}, '%'))
<if test='null != agencyIdList and agencyIdList.size() > 0'>
<foreach collection="agencyIdList" item="agencyId" open="AND agency_id NOT IN (" separator="," close=")">
#{agencyId}
</foreach>
</if>
<if test='null != gridIdList and gridIdList.size() > 0'>
<foreach collection="gridIdList" item="gridId" open="AND grid_id NOT IN (" separator="," close=")">
#{gridId}
</foreach>
</if>
</when>
<when test='orgType == "grid"'>
AND grid_id = #{orgId}
</when>
<otherwise>
AND village_id = #{orgId}
</otherwise>
</choose>
ORDER BY `name` ASC
</select>
</mapper>

Loading…
Cancel
Save