From da12d790fdff0af31f09ece9f0d9d3815c767e2c Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 7 Sep 2022 10:14:34 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=BF=94=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/result/HouseChartResultDTO.java | 8 ++++++++ .../com/epmet/dto/result/SubUserHouseListResultDTO.java | 8 ++++++++ .../java/com/epmet/service/impl/HouseServiceImpl.java | 7 ++++++- 3 files changed, 22 insertions(+), 1 deletion(-) 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/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index 933a07daeb..f804a10b48 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()) { From aee8ef2e4e8c404b57a3367bacc2fbf48b7239db Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Wed, 7 Sep 2022 14:46:09 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E4=BA=BA=E9=98=B2=E6=A6=82=E8=A7=88?= =?UTF-8?q?=E4=B8=8B=E9=92=BB=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/HouseChartFormDTO.java | 8 ++ .../com/epmet/controller/HouseController.java | 12 +++ .../main/java/com/epmet/dao/IcHouseDao.java | 2 + .../java/com/epmet/service/HouseService.java | 2 + .../epmet/service/impl/HouseServiceImpl.java | 29 +++++++ .../src/main/resources/mapper/IcHouseDao.xml | 79 +++++++++++++++++++ .../com/epmet/dto/form/UserChartFormDTO.java | 8 ++ .../controller/IcResiUserController.java | 11 +++ .../java/com/epmet/dao/IcResiUserDao.java | 2 + .../com/epmet/service/IcResiUserService.java | 2 + .../service/impl/IcResiUserServiceImpl.java | 61 ++++++++++++++ .../main/resources/mapper/IcResiUserDao.xml | 48 +++++++++++ 12 files changed, 264 insertions(+) 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-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 f804a10b48..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 @@ -1335,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..8b443733ea 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-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-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index a62980703a..c25d1ff604 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,4 +1411,15 @@ 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)); + } + } 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 8975e06443..a301d44010 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 @@ -507,4 +507,6 @@ public interface IcResiUserService extends BaseService { IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO); PageData listResiNonDynamic(Boolean fuzzy, String gridId, String name, String mobile, Integer pageNo, Integer pageSize); + + PageData icUserStatisList(UserChartFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index 2f44c543d5..e565f93b35 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -3351,4 +3351,65 @@ public class IcResiUserServiceImpl extends BaseServiceImpl list = baseDao.selectList(query).stream().map((e) -> ConvertUtils.sourceToTarget(e, IcResiNonDynamicResultDTO.class)).collect(Collectors.toList()); return new PageData(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..a32b2741a6 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 @@ -1289,4 +1289,52 @@ + + + From 304fd62c86037e75ab9202dac8810dc30c3e1079 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Thu, 8 Sep 2022 10:46:38 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E4=BA=BA=E9=98=B2=E6=A6=82=E8=A7=88?= =?UTF-8?q?=E4=B8=8B=E9=92=BB=E6=8E=A5=E5=8F=A3bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcHouseDao.xml | 2 +- .../src/main/resources/mapper/IcResiUserDao.xml | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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 8b443733ea..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 @@ -629,7 +629,7 @@ ) - GROUP BY + ORDER BY a.sort, CONVERT(c.NEIGHBOR_HOOD_NAME using gbk), CONVERT(b.BUILDING_NAME USING gbk), 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 a32b2741a6..3732fbfd5d 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 @@ -1313,6 +1313,12 @@ del_flag = '0' AND status = '0' AND customer_id = #{customerId} + + AND is_floating = '0' + + + AND (is_floating != '0' or is_floating is null) + AND (agency_id = #{orgId} OR pids LIKE CONCAT('%', #{orgId}, '%')) @@ -1334,7 +1340,7 @@ AND village_id = #{orgId} - GROUP BY `name` ASC + ORDER BY `name` ASC From ebac3e2243c37a98a6579ee803635673058d894c Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 9 Sep 2022 13:44:28 +0800 Subject: [PATCH 04/14] =?UTF-8?q?=E6=96=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/resi/partymember/dto/partyOrg/IcPartyOrgDTO.java | 5 +++++ .../partymember/dto/partyOrg/form/EditPrincipalFormDTO.java | 3 +++ .../com/epmet/modules/partyOrg/entity/IcPartyOrgEntity.java | 5 +++++ .../db/migration/V0.0.10__add_principal_staff_id.sql | 3 +++ .../src/main/resources/mapper/partyOrg/IcPartyOrgDao.xml | 1 + 5 files changed, 17 insertions(+) create mode 100644 epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.10__add_principal_staff_id.sql 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.10__add_principal_staff_id.sql b/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.10__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.10__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} From aef7cfe939032fba8aebc66fe4025ea9bac48c3a Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 9 Sep 2022 14:06:44 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E6=96=B0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...principal_staff_id.sql => V0.0.11__add_principal_staff_id.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/{V0.0.10__add_principal_staff_id.sql => V0.0.11__add_principal_staff_id.sql} (100%) diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.10__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 similarity index 100% rename from epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.10__add_principal_staff_id.sql rename to epmet-module/resi-partymember/resi-partymember-server/src/main/resources/db/migration/V0.0.11__add_principal_staff_id.sql From 9924db162a31e3f051cce0e3fb09d7c98e7641dc Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 9 Sep 2022 14:31:38 +0800 Subject: [PATCH 06/14] emm --- .../src/main/java/com/epmet/dto/result/PersonDataResultDTO.java | 2 ++ .../src/main/resources/mapper/IcResiUserDao.xml | 2 ++ 2 files changed, 4 insertions(+) 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/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 9373743976..b7a36c0456 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 @@ -310,6 +310,8 @@ YSR, TXJE, ID_CARD, + MOBILE, + IS_TENANT, IFNULL(IS_VOLUNTEER,'0') AS isVolunteer, CUSTOMER_ID, GRID_ID From 11a362654f02ca9773a941d6197cfdfe60ba6f27 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 9 Sep 2022 14:45:51 +0800 Subject: [PATCH 07/14] emm --- .../src/main/resources/mapper/IcResiUserDao.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 b7a36c0456..7cb24ea51e 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 @@ + + @@ -311,7 +313,7 @@ TXJE, ID_CARD, MOBILE, - IS_TENANT, + IS_TENANT as isTenant, IFNULL(IS_VOLUNTEER,'0') AS isVolunteer, CUSTOMER_ID, GRID_ID From b21ff5592601751510b3c78a88073bd80965a8d9 Mon Sep 17 00:00:00 2001 From: zhangyuan Date: Wed, 14 Sep 2022 14:11:54 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E9=A1=BA=E5=BE=B7=E5=B1=85=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/IcResiCollectServiceImpl.java | 25 +++++++++++-------- .../impl/IcResiCollectVisitorServiceImpl.java | 7 +++++- 2 files changed, 21 insertions(+), 11 deletions(-) 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 0461ce2cba..97c39e04b7 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 Date: Wed, 14 Sep 2022 14:22:10 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E4=B8=8D=E5=86=8D=E6=9C=89=E9=80=80?= =?UTF-8?q?=E5=8D=A1=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/PliPowerService.java | 17 -------- .../service/impl/PliPowerServiceImpl.java | 31 -------------- .../com/epmet/task/PliVisitorLogoutTask.java | 41 ------------------- 3 files changed, 89 deletions(-) delete mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java delete mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java delete mode 100644 epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java 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()); - } - } -} From 3b0922ef4d53e141f45c3e3a653628115d2e8104 Mon Sep 17 00:00:00 2001 From: zhangyuan Date: Wed, 14 Sep 2022 14:27:16 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E6=97=A0=E7=94=A8=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-module/epmet-job/epmet-job-server/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index 0aaf92db4a..1e0d00c9ba 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 From 1567e88e40a0b952660bc49d68f1ab28089d089b Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Wed, 14 Sep 2022 15:55:14 +0800 Subject: [PATCH 11/14] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9AMinio=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=93=8D=E4=BD=9C=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/enums/OssTypeEnum.java | 6 +- .../epmet-oss/epmet-oss-server/pom.xml | 6 ++ .../com/epmet/cloud/CloudStorageConfig.java | 30 ++++++ .../com/epmet/cloud/MinioStorageService.java | 99 +++++++++++++++++++ .../main/java/com/epmet/cloud/OssFactory.java | 2 + 5 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/MinioStorageService.java 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/pom.xml b/epmet-module/epmet-oss/epmet-oss-server/pom.xml index 951ea10bce..70b1540633 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..384c77fa42 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,17 @@ public class CloudStorageConfig implements Serializable { private String aliyunBucketName; } + /** + * minio存储配置属性 + */ + @Data + public static class MinioStorageConfigProps { + private String minioDomain; + 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..5d1cd1fad6 --- /dev/null +++ b/epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/cloud/MinioStorageService.java @@ -0,0 +1,99 @@ +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); + + minioClient = MinioClient.builder() + .endpoint(props.getMinioDomain()) // 保证和nginx的proxy_set_header Host 一致 + .credentials(props.getMinioAccessKey(), props.getMinioSecretKey()) + .build(); + } + + @Override + public String getOssDomain(String privacy) { + return this.config.getMinio().getConfigByPrivacy(privacy).getMinioDomain(); + } + + @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.getMinioDomain() + "/" + 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; From 1c15339269b83e859663e02b401c89b6e9e11b86 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Wed, 14 Sep 2022 17:24:13 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E3=80=90minio=E3=80=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=A4=96=E9=83=A8=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E5=92=8C=E5=86=85=E9=83=A8=E5=9F=9F=E5=90=8D=EF=BC=8C=E5=86=85?= =?UTF-8?q?=E9=83=A8=E5=9F=9F=E5=90=8D=E5=8F=AF=E4=BB=A5=E7=94=A8=E6=9D=A5?= =?UTF-8?q?=E5=86=85=E9=83=A8=E8=AE=BF=E9=97=AE=EF=BC=8C=E6=9B=B4=E5=BF=AB?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E7=A8=B3=E5=AE=9A=EF=BC=9B=E5=A4=96=E9=83=A8?= =?UTF-8?q?=E5=9F=9F=E5=90=8D=E7=94=A8=E4=BA=8E=E7=BB=99=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AE=BF=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/epmet/cloud/CloudStorageConfig.java | 10 ++++++++-- .../java/com/epmet/cloud/MinioStorageService.java | 11 ++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) 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 384c77fa42..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 @@ -156,12 +156,18 @@ public class CloudStorageConfig implements Serializable { */ @Data public static class MinioStorageConfigProps { - private String minioDomain; + /** + * 外部访问域名,用于用户直接访问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 index 5d1cd1fad6..32bb5d51ee 100644 --- 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 @@ -28,15 +28,18 @@ public class MinioStorageService extends AbstractCloudStorageService { CloudStorageConfig.MinioStorageConfigProps props = config.getMinio().getConfigByPrivacy(null); + /** + * minio和服务在同一个局域网,则可以使用内网域名上传,速度更快更稳定 + */ minioClient = MinioClient.builder() - .endpoint(props.getMinioDomain()) // 保证和nginx的proxy_set_header Host 一致 + .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).getMinioDomain(); + return this.config.getMinio().getConfigByPrivacy(privacy).getMinioExternalDomain(); } @Override @@ -74,7 +77,9 @@ public class MinioStorageService extends AbstractCloudStorageService { .build()); log.debug("minio上传文件成功。bucket:{}, object:{}, privacyType:{}", resp.bucket(), resp.object(), privacyType); - return props.getMinioDomain() + "/" + Paths.get(resp.bucket()).resolve(resp.object()).toString(); + + // 返回值要存储到数据库,供用户访问,因此使用外网域名 + 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); From be2692cf5095f21f2d5726f08c38646240f6d234 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Thu, 15 Sep 2022 09:48:25 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E3=80=90minio=E3=80=91=E4=BF=AE=E6=94=B9?= =?UTF-8?q?:=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/cloud/MinioStorageService.java | 2 ++ 1 file changed, 2 insertions(+) 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 index 32bb5d51ee..e9204c3623 100644 --- 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 @@ -28,6 +28,8 @@ public class MinioStorageService extends AbstractCloudStorageService { CloudStorageConfig.MinioStorageConfigProps props = config.getMinio().getConfigByPrivacy(null); + log.info("Minio客户端连接所用的域名:{}", props.getMinioInternalDomain()); + /** * minio和服务在同一个局域网,则可以使用内网域名上传,速度更快更稳定 */ From d2a132faf6ba03e3b7a76af50f322cb8a9d2fe76 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Thu, 15 Sep 2022 10:30:45 +0800 Subject: [PATCH 14/14] =?UTF-8?q?oss=20jvm=E5=86=85=E5=AD=98=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet-oss/epmet-oss-server/deploy/docker-compose-dev.yml | 2 +- .../epmet-oss/epmet-oss-server/deploy/docker-compose-test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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