From 3e0b7a44347dd6c43677b812ca22176dfc465811 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 17 Dec 2021 16:35:21 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E7=82=B9=E4=BD=8D=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/AgencyServiceImpl.java | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index e9747050e3..4fecffafe7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -19,7 +19,6 @@ package com.epmet.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; @@ -46,7 +45,6 @@ import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.redis.CustomerAgencyRedis; -import com.epmet.send.SendMqMsgUtil; import com.epmet.service.AgencyService; import com.epmet.service.CustomerAgencyService; import com.epmet.service.CustomerOrgParameterService; @@ -547,14 +545,25 @@ public class AgencyServiceImpl implements AgencyService { formDTO.setOrgId(staffInfo.getAgencyId()); formDTO.setLevel(OrgInfoConstant.AGENCY); } + if (StringUtils.isNotBlank(customerAgencyEntity.getLatitude())){ + result.setLatitude(new BigDecimal(customerAgencyEntity.getLatitude())); + } + if (StringUtils.isNotBlank(customerAgencyEntity.getLongitude())){ + result.setLongitude(new BigDecimal(customerAgencyEntity.getLongitude())); + } if (formDTO.getLevel().equals(OrgInfoConstant.AGENCY)){ CustomerAgencyEntity entity = customerAgencyDao.selectById(formDTO.getOrgId()); result = ConvertUtils.sourceToTarget(entity,MapOrgResultDTO.class); result.setName(entity.getOrganizationName()); result.setLevel(formDTO.getLevel()); result.setAgencyLevel(entity.getLevel()); - result.setLatitude(StringUtils.isBlank(entity.getLatitude()) ? new BigDecimal(customerAgencyEntity.getLatitude()) : new BigDecimal(entity.getLatitude())); - result.setLongitude(StringUtils.isBlank(entity.getLongitude()) ? new BigDecimal(customerAgencyEntity.getLongitude()) : new BigDecimal(entity.getLongitude())); + //经纬度 如果本级没有则取根级组织的 根级没有就空着 + if (StringUtils.isNotBlank(entity.getLatitude()){ + result.setLatitude(new BigDecimal(entity.getLatitude())); + } + if (StringUtils.isNotBlank(entity.getLongitude()){ + result.setLongitude(new BigDecimal(entity.getLongitude())); + } if (entity.getLevel().equals(OrgInfoConstant.COMMUNITY)){ List son = customerAgencyDao.selectSonOrg(formDTO.getOrgId(), OrgInfoConstant.GRID); if (CollectionUtils.isNotEmpty(son)){ @@ -576,12 +585,9 @@ public class AgencyServiceImpl implements AgencyService { if (CollectionUtils.isNotEmpty(directlySub)){ dtoList.addAll(directlySub); } - if (CollectionUtils.isNotEmpty(dtoList)){ - MapOrgResultDTO finalResult1 = result; - dtoList.forEach(d -> { - d.setLatitude(StringUtils.isBlank(d.getLatitudeOrigin()) ? finalResult1.getLatitude() : new BigDecimal(d.getLatitudeOrigin())); - d.setLongitude(StringUtils.isBlank(d.getLongitudeOrigin()) ? finalResult1.getLongitude() : new BigDecimal(d.getLongitudeOrigin())); - }); + for (MapSonOrgResultDTO d : dtoList) { + d.setLatitude(StringUtils.isBlank(d.getLatitudeOrigin()) ? result.getLatitude() : new BigDecimal(d.getLatitudeOrigin())); + d.setLongitude(StringUtils.isBlank(d.getLongitudeOrigin()) ? result.getLongitude() : new BigDecimal(d.getLongitudeOrigin())); } result.setChildren(dtoList); } @@ -591,15 +597,19 @@ public class AgencyServiceImpl implements AgencyService { result.setName(entity.getGridName()); result.setLevel(formDTO.getLevel()); result.setAgencyLevel(OrgInfoConstant.GRID); - result.setLatitude(StringUtils.isBlank(entity.getLatitude()) ? new BigDecimal(customerAgencyEntity.getLatitude()) : new BigDecimal(entity.getLatitude())); - result.setLongitude(StringUtils.isBlank(entity.getLongitude()) ? new BigDecimal(customerAgencyEntity.getLongitude()) : new BigDecimal(entity.getLongitude())); + //经纬度 如果本级没有则取根级组织的 根级没有就空着 + if (StringUtils.isNotBlank(entity.getLatitude()){ + result.setLatitude(new BigDecimal(entity.getLatitude())); + } + if (StringUtils.isNotBlank(entity.getLongitude()){ + result.setLongitude(new BigDecimal(entity.getLongitude())); + } List son = customerAgencyDao.selectSonOrg(formDTO.getOrgId(), OrgInfoConstant.NEIGHBOR_HOOD); if (CollectionUtils.isNotEmpty(son)){ - MapOrgResultDTO finalResult2 = result; - son.forEach(s -> { - s.setLatitude(StringUtils.isBlank(s.getLatitudeOrigin()) ? finalResult2.getLatitude() : new BigDecimal(s.getLatitudeOrigin())); - s.setLongitude(StringUtils.isBlank(s.getLongitudeOrigin()) ? finalResult2.getLongitude() : new BigDecimal(s.getLongitudeOrigin())); - }); + for (MapSonOrgResultDTO s : son) { + s.setLatitude(StringUtils.isBlank(s.getLatitudeOrigin()) ? result.getLatitude() : new BigDecimal(s.getLatitudeOrigin())); + s.setLongitude(StringUtils.isBlank(s.getLongitudeOrigin()) ? result.getLongitude() : new BigDecimal(s.getLongitudeOrigin())); + } } result.setChildren(CollectionUtils.isEmpty(son) ? new ArrayList<>() : son); } @@ -671,4 +681,4 @@ public class AgencyServiceImpl implements AgencyService { return insertEntity; } -} \ No newline at end of file +} From 9dec466f4ca476dc2dce1d44953bb22f43e67089 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 17 Dec 2021 16:51:53 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E7=82=B9=E4=BD=8D=E8=8E=B7=E5=8F=96=20up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/AgencyServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 4fecffafe7..eec2d13074 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -558,10 +558,10 @@ public class AgencyServiceImpl implements AgencyService { result.setLevel(formDTO.getLevel()); result.setAgencyLevel(entity.getLevel()); //经纬度 如果本级没有则取根级组织的 根级没有就空着 - if (StringUtils.isNotBlank(entity.getLatitude()){ + if (StringUtils.isNotBlank(entity.getLatitude())){ result.setLatitude(new BigDecimal(entity.getLatitude())); } - if (StringUtils.isNotBlank(entity.getLongitude()){ + if (StringUtils.isNotBlank(entity.getLongitude())){ result.setLongitude(new BigDecimal(entity.getLongitude())); } if (entity.getLevel().equals(OrgInfoConstant.COMMUNITY)){ @@ -598,10 +598,10 @@ public class AgencyServiceImpl implements AgencyService { result.setLevel(formDTO.getLevel()); result.setAgencyLevel(OrgInfoConstant.GRID); //经纬度 如果本级没有则取根级组织的 根级没有就空着 - if (StringUtils.isNotBlank(entity.getLatitude()){ + if (StringUtils.isNotBlank(entity.getLatitude())){ result.setLatitude(new BigDecimal(entity.getLatitude())); } - if (StringUtils.isNotBlank(entity.getLongitude()){ + if (StringUtils.isNotBlank(entity.getLongitude())){ result.setLongitude(new BigDecimal(entity.getLongitude())); } List son = customerAgencyDao.selectSonOrg(formDTO.getOrgId(), OrgInfoConstant.NEIGHBOR_HOOD); From d8cefaf5de729f1977a22cf1b5cf6017cea30c97 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 17 Dec 2021 17:20:39 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E6=9D=A5=E6=BA=90=E7=BD=91=E6=A0=BC?= =?UTF-8?q?=E7=9A=84=EF=BC=8C=E5=B7=B2=E7=BB=93=E6=A1=88=E7=9A=84=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=EF=BC=8C=E6=BB=A1=E6=84=8F=E5=BA=A6=E5=88=86=E6=95=B0?= =?UTF-8?q?=E9=BB=98=E8=AE=A480?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/impl/ScreenProjectDataServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java index 98bd3ff9cf..df52b23ee8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectDataServiceImpl.java @@ -266,6 +266,12 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl> partition = ListUtils.partition(meta, NumConstant.ONE_HUNDRED); partition.forEach(part -> { List list = ConvertUtils.sourceToTarget(part, ScreenProjectDataEntity.class); + // 把来源网格的,已结案的项目,满意度分默认设置80 + list.forEach(l -> { + if (l.getOrgType().equals("grid") && l.getProjectStatusCode().equals("closed_case")){ + l.setSatisfactionScore(new BigDecimal(NumConstant.EIGHTY)); + } + }); insertBatch(list); saveCategory(customerId, list); }); From 31aa37d65020429cfed354bc33d0ed57012bd85b Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 20 Dec 2021 10:42:47 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=201.ic?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=E6=89=80?= =?UTF-8?q?=E7=94=A8excel=E6=A8=A1=E6=9D=BF=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcResiUserController.java | 70 ++++++++++++++++-- ...ic_resi_info_import_cid_for_easy_excel.xls | Bin 0 -> 78848 bytes 2 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_import_cid_for_easy_excel.xls 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 d6df9f57e0..3a8a77eeec 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 @@ -28,6 +28,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; @@ -51,6 +52,7 @@ import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserService; +import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; @@ -58,6 +60,9 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -66,6 +71,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -114,6 +120,30 @@ public class IcResiUserController { @Autowired private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + /** + * 模板枚举 + */ + public enum IcUserTemplateEnums { + IC_RESI_IMPORT_TEMPLATE("excel/ic_resi_info_import_cid_for_easy_excel.xls", "居民信息导入模板.xls"), + IC_RESI_EXPORT_TEMPLATE("excel/ic_resi_info_cid_for_easy_excel.xlsx", "居民信息导出模板.xlsx"); + + private String pathInApp; + private String templateName; + + IcUserTemplateEnums(String pathInApp, String templateName) { + this.pathInApp = pathInApp; + this.templateName = templateName; + } + + public String getPathInApp() { + return pathInApp; + } + + public String getTemplateName() { + return templateName; + } + } + { // 初始化上传目录 String home = System.getProperty("user.home"); @@ -259,7 +289,7 @@ public class IcResiUserController { pageFormDTO.setPageFlag(false); //获取模版文件 - File file = getExportTemplateFile(customerId); + File file = getIcResiTemplateFile(customerId, IcUserTemplateEnums.IC_RESI_EXPORT_TEMPLATE); ExcelWriter excelWriter = null; try { excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response)).withTemplate(file).build(); @@ -338,7 +368,7 @@ public class IcResiUserController { * @param customerId * @return */ - private File getExportTemplateFile(String customerId) throws Exception{ + private File getIcResiTemplateFile(String customerId, IcUserTemplateEnums template) throws Exception{ String fileType = ".xlsx"; String fileName = customerId + fileType; File file = new File(IC_RESI_DOWNLOAD_DIR.resolve(fileName).toString()); @@ -354,13 +384,12 @@ public class IcResiUserController { Result result = HttpClientManager.getInstance().getDownloadFilebytes(fileUrlResult.getData(), null); //获取模版失败 则把默认文件写入 if (result == null || !result.success()) { - log.warn("获取居民导出模版失败,path:{},走默认模版", ossFilePath); - String defaultTemplatePath = "excel/ic_resi_info_cid_for_easy_excel.xlsx"; - InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(defaultTemplatePath); + log.warn("获取居民模版失败,path:{},走默认模版", ossFilePath); + InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(template.getPathInApp()); FileUtils.copyInputStreamToFile(resourceAsStream,file); - log.warn("getExportTemplateFile copy default file to template,customerId:{}",customerId); + log.warn("getIcResiTemplateFile copy default file to template,customerId:{}",customerId); } else { - log.warn("getExportTemplateFile reload file form oss default file to template,customerId:{}",customerId); + log.warn("getIcResiTemplateFile reload file form oss default file to template,customerId:{}",customerId); FileUtils.writeByteArrayToFile(file,result.getData()); } redisUtils.hSet(RedisKeys.getResiTempChangedKey(customerId), serverIp, NumConstant.ZERO_STR); @@ -492,4 +521,31 @@ public class IcResiUserController { ValidatorUtils.validateEntity(formDTO, DemandUserFormDTO.InternalGroup.class); return new Result>().ok(icResiUserService.queryDemandUsers(formDTO)); } + + /** + * 下载ic居民信息导入excel模板 + * @param loginUserInfo + * @return + */ + @PostMapping("import/download-template") + public ResponseEntity downloadIcResiDownloadTemplate(@LoginUser TokenDto loginUserInfo) { + String customerId = loginUserInfo.getCustomerId(); + + try { + File icResiImportTemplateFile = getIcResiTemplateFile(customerId, IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE); + + HttpHeaders headers = new HttpHeaders(); + headers.add("Access-Control-Expose-Headers", "Content-Disposition"); + headers.add("content-Type", "application/vnd.ms-excel"); + headers.add("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(IcUserTemplateEnums.IC_RESI_IMPORT_TEMPLATE.getTemplateName(), "UTF-8")); + + return new ResponseEntity<>(FileUtil.readBytes(icResiImportTemplateFile), headers, HttpStatus.OK); + } catch (Exception e) { + String errorStackTrace = ExceptionUtils.getErrorStackTrace(e); + + log.error("下载IC居民信息导入模板失败:{}", errorStackTrace); + + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "下载IC居民信息导入模板失败"); + } + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_import_cid_for_easy_excel.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_import_cid_for_easy_excel.xls new file mode 100644 index 0000000000000000000000000000000000000000..1523d6719badec2b9cb0a018e925d1afd4fbd3ec GIT binary patch literal 78848 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 Izi$ovKmJGk=l}o! literal 0 HcmV?d00001 From ccdbe0818e5dfa6c9fe634f75f9fcd259571dd7f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 20 Dec 2021 15:29:51 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E9=94=99=E8=AF=AF=E7=9A=84=E5=88=86=E4=B9=8B=E5=90=88?= =?UTF-8?q?=E5=B9=B6=EF=BC=8C=E5=B0=86=E5=8C=BA=E5=9D=97=E9=93=BE=E5=88=86?= =?UTF-8?q?=E6=94=AF=E5=90=88=E5=B9=B6=E5=88=B0=E4=BA=86=E7=BA=BF=E4=B8=8A?= =?UTF-8?q?=E5=88=86=E6=94=AF=EF=BC=8C=E6=9A=82=E6=97=B6=E5=B1=8F=E8=94=BD?= =?UTF-8?q?=E6=8E=89=E5=85=B7=E4=BD=93=E5=A4=84=E7=90=86=EF=BC=8C=E5=8F=AA?= =?UTF-8?q?=E6=8E=A5=E5=8F=97=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/controller/BlockChainProjectController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java index 2ec27b1e27..75701ac62a 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/BlockChainProjectController.java @@ -28,8 +28,8 @@ public class BlockChainProjectController { */ @PostMapping("create") public Result blockChainCreateProject(@RequestBody BlockChainCreateProjectFormDTO input) { - ValidatorUtils.validateEntity(input); - blockChainProjectService.blockChainCreateProject(input); + //ValidatorUtils.validateEntity(input); + //blockChainProjectService.blockChainCreateProject(input); return new Result(); } @@ -40,8 +40,8 @@ public class BlockChainProjectController { */ @PostMapping("process") public Result blockChainProcessProject(@RequestBody BlockChainProcessProjectFormDTO input) { - ValidatorUtils.validateEntity(input); - blockChainProjectService.blockChainProcessProject(input); + //ValidatorUtils.validateEntity(input); + //blockChainProjectService.blockChainProcessProject(input); return new Result(); } } From f2b8ab3ffcff9d5737482c4252c906b012e9a5ab Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 20 Dec 2021 15:36:19 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E5=B7=A1=E6=9F=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9C=B0=E5=9D=80=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/PatrolRecordDetailDTO.java | 5 +++ .../dto/form/PatrolUploadDetailFormDTO.java | 21 ----------- .../epmet/dto/form/PatrolUploadFormDTO.java | 4 ++ .../controller/StaffPatrolController.java | 7 ---- .../epmet/entity/StaffPatrolDetailEntity.java | 2 +- .../service/StaffPatrolRecordService.java | 10 ----- .../impl/StaffPatrolRecordServiceImpl.java | 37 +------------------ 7 files changed, 11 insertions(+), 75 deletions(-) delete mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadDetailFormDTO.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolRecordDetailDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolRecordDetailDTO.java index 922f21867b..f7e9afeabb 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolRecordDetailDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/PatrolRecordDetailDTO.java @@ -34,4 +34,9 @@ public class PatrolRecordDetailDTO implements Serializable { * 后端返回:开始巡查;结束巡查;此列只有集合第一条,和最后一条有值 */ private String flag; + + /** + * 位置信息 + */ + private String address; } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadDetailFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadDetailFormDTO.java deleted file mode 100644 index 4484f45f30..0000000000 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadDetailFormDTO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.epmet.dto.form; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author zhaoqifeng - * @dscription - * @date 2021/6/9 16:31 - */ -@Data -public class PatrolUploadDetailFormDTO implements Serializable { - private static final long serialVersionUID = 1527344810917196996L; - /** - * 巡查主记录id, 开始巡查反参 - */ - private String staffPatrolRecId; - private List details; -} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadFormDTO.java index 368979a3aa..c1d17b2d18 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PatrolUploadFormDTO.java @@ -54,4 +54,8 @@ public class PatrolUploadFormDTO implements Serializable { * 序号,前端生成,后端记录 */ private Integer serialNum; + /** + * 位置信息 + */ + private String address; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java index 53933da2ae..dbd32146fa 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StaffPatrolController.java @@ -120,13 +120,6 @@ public class StaffPatrolController { } - @PostMapping("uploaddetails") - public Result uploadDetails(@LoginUser TokenDto tokenDto, @RequestBody PatrolUploadDetailFormDTO formDTO) { - PatrolUploadResultDTO result = staffPatrolRecordService.uploadDetails(tokenDto, formDTO); - return new Result().ok(result); - - } - /** * @Description 查询经纬度 * @Param userIds diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StaffPatrolDetailEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StaffPatrolDetailEntity.java index fbc81edd1a..d90192e218 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StaffPatrolDetailEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/StaffPatrolDetailEntity.java @@ -94,7 +94,7 @@ public class StaffPatrolDetailEntity extends BaseEpmetEntity { private String horizontalaccuracy; /** - * 地址;暂时不用 + * 地址 */ private String address; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java index e9cbb44ce7..4b54f84c97 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StaffPatrolRecordService.java @@ -91,16 +91,6 @@ public interface StaffPatrolRecordService extends BaseService list = formDTO.getDetails().stream().map(detail -> { - StaffPatrolDetailEntity detailEntity = new StaffPatrolDetailEntity(); - detailEntity.setStaffPatrolRecId(formDTO.getStaffPatrolRecId()); - detailEntity.setCustomerId(tokenDto.getCustomerId()); - detailEntity.setSerialNum(detail.getSerialNum()); - detailEntity.setUploadTime(new Date()); - detailEntity.setLatitude(detail.getLatitude()); - detailEntity.setLongitude(detail.getLongitude()); - detailEntity.setSpeed(detail.getSpeed()); - detailEntity.setAccuracy(detail.getAccuracy()); - detailEntity.setAltitude(detail.getAltitude()); - detailEntity.setVerticalaccuracy(detail.getVerticalAccuracy()); - detailEntity.setHorizontalaccuracy(detail.getHorizontalAccuracy()); - return detailEntity; - }).collect(Collectors.toList()); - - staffPatrolDetailService.insertBatch(list); - } - - PatrolUploadResultDTO dto = new PatrolUploadResultDTO(); - dto.setStaffPatrolRecId(formDTO.getStaffPatrolRecId()); - return dto; - } - /** * @Description 查询经纬度 * @Param userIds From b26621f89933f1cf87d133aab4c7eee69b2731f6 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 20 Dec 2021 15:48:08 +0800 Subject: [PATCH 07/17] 1 --- .../com/epmet/service/impl/BlockChainUploadServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java index 0d745d23cc..9a8837f120 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/BlockChainUploadServiceImpl.java @@ -36,6 +36,10 @@ public class BlockChainUploadServiceImpl implements BlockChainUploadService { */ public void send2BlockChain(ProjectEntity projectEntity, ProjectProcessEntity processEntity, List assignedStaffEntities, String projectStaffId) { + if (true) { + return; + } + // 1.项目主信息 BlockChainProjectFormDTO project = null; From b557ce76ce4838679568f0ec3541fe93563bd838 Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 20 Dec 2021 16:04:55 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E5=B7=A1=E6=9F=A5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dataaggre/dto/epmetuser/StaffPatrolDetailDTO.java | 5 +++-- .../service/epmetuser/impl/EpmetUserServiceImpl.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/StaffPatrolDetailDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/StaffPatrolDetailDTO.java index def0db685a..000f394a66 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/StaffPatrolDetailDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/StaffPatrolDetailDTO.java @@ -17,9 +17,10 @@ package com.epmet.dataaggre.dto.epmetuser; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -94,7 +95,7 @@ public class StaffPatrolDetailDTO implements Serializable { private String horizontalaccuracy; /** - * 地址;暂时不用 + * 地址 */ private String address; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 3ae2108cd1..df47618648 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -221,8 +221,7 @@ public class EpmetUserServiceImpl implements EpmetUserService { String totalTimeDesc = minutes / 60 + "小时"+ minutes % 60 + "分"; dto.setTotalTimeDesc(totalTimeDesc); List detailList = details.get(record.getId()); - detailList = - detailList.stream().sorted(Comparator.comparing(StaffPatrolDetailDTO::getSerialNum).reversed()).collect(Collectors.toList()).stream() + detailList = detailList.stream().sorted(Comparator.comparing(StaffPatrolDetailDTO::getSerialNum).reversed()).collect(Collectors.toList()).stream() .filter(item -> null == record.getPatrolEndTime() || record.getPatrolEndTime().compareTo(item.getUploadTime()) > -1).collect(Collectors.toList()); List recordDetails = detailList.stream().map( detail -> { PatrolRecordDetailDTO detailDTO = new PatrolRecordDetailDTO(); @@ -230,6 +229,7 @@ public class EpmetUserServiceImpl implements EpmetUserService { detailDTO.setLongitude(detail.getLongitude()); detailDTO.setSpeed(detail.getSpeed()); detailDTO.setUploadTime(DateUtils.format(detail.getUploadTime(), DateUtils.DATE_TIME_PATTERN)); + detailDTO.setAddress(detail.getAddress()); return detailDTO; }).collect(Collectors.toList()); if (("end").equals(record.getStatus())) { From 393ce22f97c6607e467b59fde7523c63da00982e Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 20 Dec 2021 17:12:50 +0800 Subject: [PATCH 09/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE3=E7=89=88=20=20?= =?UTF-8?q?=E5=88=A0=E6=8E=89=E5=B7=B2=E7=BB=8F=E6=89=A7=E8=A1=8C=E7=9A=84?= =?UTF-8?q?sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{V0.0.11__point_rule_sort.sql => uv11__point_rule_sort.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/{V0.0.11__point_rule_sort.sql => uv11__point_rule_sort.sql} (100%) diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/uv11__point_rule_sort.sql similarity index 100% rename from epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.11__point_rule_sort.sql rename to epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/uv11__point_rule_sort.sql From 27362b45cbbc2e826f117d55f9f7b74d68121be6 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 20 Dec 2021 23:49:26 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20auth?= =?UTF-8?q?=E7=9A=84serviceListChangedListening=E9=80=89=E9=A1=B9=E5=BF=98?= =?UTF-8?q?=E8=AE=B0=E9=85=8D=E7=BD=AE=E5=88=B0yml=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-auth/src/main/resources/bootstrap.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-auth/src/main/resources/bootstrap.yml b/epmet-auth/src/main/resources/bootstrap.yml index 42ec69d1ac..bf965caff7 100644 --- a/epmet-auth/src/main/resources/bootstrap.yml +++ b/epmet-auth/src/main/resources/bootstrap.yml @@ -32,6 +32,8 @@ spring: namespace: @nacos.discovery.namespace@ #不把自己注册到注册中心的地址 register-enabled: @nacos.register-enabled@ + serviceListChangedListening: + enable: @nacos.service-list-changed-listening.enable@ config: enabled: @nacos.config-enabled@ server-addr: @nacos.server-addr@ From be92c16cfd842d6640d120d7df8dd80a6a6332b7 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 21 Dec 2021 09:03:34 +0800 Subject: [PATCH 11/17] =?UTF-8?q?bug=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/screen/ScreenPioneerDataDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPioneerDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPioneerDataDao.xml index 90e3cf0b91..79e7c9574d 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPioneerDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPioneerDataDao.xml @@ -46,7 +46,7 @@ IFNULL(avg(data.publish_issue_ratio),0) AS publishIssueRatioA, CEILING(sum(data.PLAT_ISSUE_TOTAL)) AS platIssueTotal, IFNULL(avg(data.PLAT_JOIN_PARTY_RATIO),0) AS platJoinPartyRatio, - DATA_END_TIME as dataEndTime + data.DATA_END_TIME as dataEndTime FROM screen_pioneer_data data LEFT JOIN From 173ce4a0efee4d717546043d8ea17c1e1e135795 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 21 Dec 2021 10:44:17 +0800 Subject: [PATCH 12/17] =?UTF-8?q?resibuzz=E4=BC=98=E5=8C=96=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/ResiBuzzIssueCategoryDTO.java | 21 +++++++++ .../src/main/java/com/epmet/dao/IssueDao.java | 8 ++++ .../epmet/service/impl/IssueServiceImpl.java | 4 ++ .../src/main/resources/mapper/IssueDao.xml | 46 ++++++++++--------- 4 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ResiBuzzIssueCategoryDTO.java diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ResiBuzzIssueCategoryDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ResiBuzzIssueCategoryDTO.java new file mode 100644 index 0000000000..59425a2b1c --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/ResiBuzzIssueCategoryDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/12/20 5:14 下午 + * @DESC + */ +@Data +public class ResiBuzzIssueCategoryDTO implements Serializable { + + private static final long serialVersionUID = 5050318228251317747L; + + private String issueId; + + private List cn; +} diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java index a853364839..4fb4664534 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java @@ -262,4 +262,12 @@ public interface IssueDao extends BaseDao { */ List getProjectCountByGrid(@Param("orgId")String orgId,@Param("startDate")String startDate,@Param("endDate")String endDate); + /** + * @Description 根据issueIds查询分类名 + * @param issueIds + * @author zxc + * @date 2021/12/20 5:15 下午 + */ + List selectCategoryNameByIssueIds(@Param("issueIds")List issueIds); + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index f433bd60ed..ce5dafdb9c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java @@ -1594,6 +1594,10 @@ public class IssueServiceImpl extends BaseServiceImpl imp } List list = allList.stream().skip(formDTO.getPageSize() * (formDTO.getPageNo() - NumConstant.ONE)) .limit(formDTO.getPageSize()).collect(Collectors.toList()); + List names = baseDao.selectCategoryNameByIssueIds(allList.stream().map(m -> m.getIssueId()).collect(Collectors.toList())); + if (CollectionUtils.isNotEmpty(names)){ + list.forEach(l -> names.stream().filter(n -> l.getIssueId().equals(n.getIssueId())).forEach(n -> l.setCategoryName(n.getCn()))); + } AtomicReference no = new AtomicReference<>((formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize() + NumConstant.ONE); ResiBuzzResultDTO result = new ResiBuzzResultDTO(); UserResiInfoListFormDTO userResiInfoListFormDTO = new UserResiInfoListFormDTO(); diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml index 55648edcad..ecc7dd39f0 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml @@ -580,21 +580,7 @@ - - - - - - - - - - - - - - - SELECT i.ID AS issueId, i.ISSUE_TITLE AS issueTitle, @@ -607,12 +593,9 @@ i.CREATED_TIME AS createdTime, s.SUPPORT_COUNT AS supportCount, s.OPPOSITION_COUNT AS oppositionCount, - CONCAT(s.SUPPORT_COUNT + s.OPPOSITION_COUNT,'/',s.VOTABLE_COUNT) AS voteAccount, - cd.CATEGORY_NAME as cn + CONCAT(s.SUPPORT_COUNT + s.OPPOSITION_COUNT,'/',s.VOTABLE_COUNT) AS voteAccount FROM issue i - LEFT JOIN issue_vote_statistical s ON (s.ISSUE_ID = i.ID AND s.DEL_FLAG = '0') - LEFT JOIN issue_category ic ON (ic.ISSUE_ID = i.ID AND ic.DEL_FLAG = '0' AND ic.CUSTOMER_ID = i.CUSTOMER_ID) - LEFT JOIN issue_project_category_dict cd ON (cd.CATEGORY_CODE = LEFT(ic.CATEGORY_CODE,#{length}) AND cd.DEL_FLAG = '0' AND cd.CUSTOMER_ID = ic.CUSTOMER_ID) + INNER JOIN issue_vote_statistical s ON (s.ISSUE_ID = i.ID AND s.DEL_FLAG = '0') WHERE i.DEL_FLAG = '0' AND i.ISSUE_STATUS = #{status} @@ -645,7 +628,7 @@ IFNULL(cd.CATEGORY_NAME,'其他') AS categoryName, IFNULL(cd.color,'#0091ed') AS color FROM issue i - LEFT JOIN issue_vote_statistical s ON (s.ISSUE_ID = i.ID AND s.DEL_FLAG = '0') + INNER JOIN issue_vote_statistical s ON (s.ISSUE_ID = i.ID AND s.DEL_FLAG = '0') LEFT JOIN issue_category ic ON (ic.ISSUE_ID = i.ID AND ic.DEL_FLAG = '0' AND ic.CUSTOMER_ID = i.CUSTOMER_ID) LEFT JOIN issue_project_category_dict cd ON (cd.CATEGORY_CODE = LEFT(ic.CATEGORY_CODE,#{length}) AND cd.DEL_FLAG = '0' AND cd.CUSTOMER_ID = ic.CUSTOMER_ID) WHERE i.DEL_FLAG = '0' @@ -672,4 +655,25 @@ AND DATE_FORMAT(SHIFTED_TIME,'%Y-%m-%d') #{endDate} GROUP BY GRID_ID + + + + + + + + + \ No newline at end of file From e29db03d3bb55f1f4901c16c82ccf77d0d8290c3 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 21 Dec 2021 17:35:16 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=201.=E6=A5=BC?= =?UTF-8?q?=E6=A0=8B=E7=AE=A1=E7=90=86=EF=BC=8C=E6=A5=BC=E6=A0=8B=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=92=E5=88=97=E9=A1=BA=E5=BA=8F=EF=BC=9A=E6=8C=89?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4=E6=AD=A3=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E5=85=88=E6=B7=BB=E5=8A=A0=E7=9A=84=E5=9C=A8=E4=B8=8A=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E5=90=8E=E6=B7=BB=E5=8A=A0=E7=9A=84=E5=9C=A8=E4=B8=8B?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gov-org-server/src/main/resources/mapper/IcBuildingDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml index a137f46b8b..f605b5c71f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml @@ -94,7 +94,7 @@ AND a.DEL_FLAG = #{building.delFlag} - + order by a.CREATED_TIME asc diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java index 165ae6b91c..02fc225940 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/heart/IcUserDemandServiceDao.java @@ -40,5 +40,5 @@ public interface IcUserDemandServiceDao extends BaseDao listDemandServeTimes(@Param("customerId") String customerId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType); + List listDemandServeTimes(@Param("customerId") String customerId, @Param("gridId") String gridId, @Param("endTime") Date endTime, @Param("serviceType") String serviceType); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java index f2b473bfe9..82687aeba0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/stats/FactVolunteerServiceDailyEntity.java @@ -43,6 +43,11 @@ public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 网格ID + */ + private String gridId; + /** * yyyyMMdd */ @@ -82,5 +87,9 @@ public class FactVolunteerServiceDailyEntity extends BaseEpmetEntity { * 居民服务总次数 */ private Integer resiServiceTotal; + + private String pid; + + private String pids; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java index baaa29c97b..981fd1fc2f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/HeartDemandService.java @@ -11,5 +11,5 @@ import java.util.List; *@Date 2021/12/8 */ public interface HeartDemandService { - List listDemandServeTimesPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize); + List listDemandServeTimesPage(String customerId, String gridId, Date endTime, int serviceCountPageNo, int serviceCountPageSize); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java index c33f426ad5..8969b61d31 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/heart/impl/HeartDemandServiceImpl.java @@ -29,11 +29,11 @@ public class HeartDemandServiceImpl implements HeartDemandService { private IcUserDemandServiceDao demandServiceDao; @Override - public List listDemandServeTimesPage(String customerId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) { + public List listDemandServeTimesPage(String customerId, String gridId, Date endTime, int serviceCountPageNo, int serviceCountPageSize) { return PageHelper.startPage(serviceCountPageNo, serviceCountPageSize).doSelectPage(new ISelect() { @Override public void doSelect() { - demandServiceDao.listDemandServeTimes(customerId, endTime, "volunteer"); + demandServiceDao.listDemandServeTimes(customerId, gridId, endTime, "volunteer"); } }); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java index 66cbf1058d..036718bf0f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DemandServiceImpl.java @@ -1,11 +1,16 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.EpmetRoleKeyConstant; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.dto.heart.result.DemandServiceCountResultDTO; -import com.epmet.entity.crm.CustomerEntity; import com.epmet.entity.heart.VolunteerInfoEntity; import com.epmet.entity.stats.FactVolunteerServiceDailyEntity; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.DemandService; import com.epmet.service.crm.CustomerService; import com.epmet.service.heart.HeartDemandService; @@ -27,7 +32,7 @@ import java.util.stream.Collectors; * @Version 1.0 */ @Service -public class DemandServiceImpl implements DemandService { +public class DemandServiceImpl implements DemandService, ResultDataResolver { @Autowired private HeartDemandService heartDemandService; @@ -37,12 +42,15 @@ public class DemandServiceImpl implements DemandService { @Autowired private UserService userService; - + @Autowired private DemandStatsService demandStatsService; - + @Autowired private CustomerService customerService; + + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; @Override public void statsVolunteerDemandServicesDaily(String customerId) { @@ -50,7 +58,7 @@ public class DemandServiceImpl implements DemandService { Date now = new Date(); Date today = DateUtils.integrate(now, "yyyy-MM-dd"); Date yestoday = DateUtils.addDateDays(today, -1); - + if (StringUtils.isNotBlank(customerId)) { // 只计算单个客户 clearOldDatas(Arrays.asList(customerId), yestoday); @@ -67,7 +75,8 @@ public class DemandServiceImpl implements DemandService { /** * 清理旧数据 - * @param targetDate 要清理哪天的数据 + * + * @param targetDate 要清理哪天的数据 * @param customerIds 要清理哪些客户的 */ private void clearOldDatas(List customerIds, Date targetDate) { @@ -80,12 +89,44 @@ public class DemandServiceImpl implements DemandService { /** * 统计单个客户的志愿者服务情况 + * * @param customerId 客户ID - * @param endTime 统计截止时间(> gridIdAndVolunteers = new HashMap<>(); + + heartVolunteerService.listVolunteers(customerId, endTime).forEach(v -> { + String volunteerGridId = v.getGridId(); + if (StringUtils.isNotBlank(volunteerGridId)) { + if (!gridIdAndVolunteers.containsKey(volunteerGridId)) { + gridIdAndVolunteers.put(volunteerGridId, new ArrayList<>()); + } + + gridIdAndVolunteers.get(volunteerGridId).add(v); + } + }); + + // 2.按网格分别统计,且持久化 + for (Map.Entry> entry : gridIdAndVolunteers.entrySet()) { + statsVolunteerDemandServicesDaily4Grid(customerId, entry.getKey(), endTime, entry.getValue(), belongTime); + } + } + + /** + * 按日统计网格需求服务数据 + * @param customerId + * @param gridId + * @param endTime 统计截止时间 + * @param volunteers 志愿者volunteerInfo列表 + * @param belongTime 该次统计要归属到哪一天,即createTime + * @return 统计结果entity,以备他用 + */ + private FactVolunteerServiceDailyEntity statsVolunteerDemandServicesDaily4Grid(String customerId, String gridId, Date endTime, List volunteers, Date belongTime) { // 1.志愿者分流为党员志愿者&普通居民志愿者 - Integer volunteerTotalCount = 0; + Integer volunteerTotalCount = volunteers.size(); // 党员志愿者数量 Integer partymemberVolunteerCount = 0; // 居民志愿者数量 @@ -94,15 +135,13 @@ public class DemandServiceImpl implements DemandService { // 党员志愿者用户id列表 List partymemberVolunteerUserIds = new ArrayList<>(16); - List volunteers = heartVolunteerService.listVolunteers(customerId, endTime); - - volunteerTotalCount = volunteers.size(); + //--------------------------------【以上是结果数据变量】------------------------------------------ // 分片开始下标 int shardingStartIndex = 0; // 分片大小(条数) int shardingSize = 100; - + // 分片去确定党员身份,防止in条件过大 while (true) { int realShardingSize = Math.min(shardingSize, volunteerTotalCount - shardingStartIndex); @@ -141,7 +180,7 @@ public class DemandServiceImpl implements DemandService { while (true) { // 取出每一个服务者的服务次数 - List damendServeTimes = heartDemandService.listDemandServeTimesPage(customerId, endTime, serviceCountPageNo, serviceCountPageSize); + List damendServeTimes = heartDemandService.listDemandServeTimesPage(customerId, gridId, endTime, serviceCountPageNo, serviceCountPageSize); for (DemandServiceCountResultDTO damendServiceTimes : damendServeTimes) { String serverId = damendServiceTimes.getServerId(); @@ -158,11 +197,12 @@ public class DemandServiceImpl implements DemandService { } totalDemandServeTimes = partymemberDemandServeTimes + resiDemandServeTimes; - - // 3.持久化 + + // 3.组装entity数据返回,待存储 FactVolunteerServiceDailyEntity insert = new FactVolunteerServiceDailyEntity(); insert.setDateId(DimIdGenerator.getDateDimId(belongTime)); insert.setCustomerId(customerId); + insert.setGridId(gridId); insert.setMonthId(DimIdGenerator.getMonthDimId(belongTime)); insert.setPartyServiceTotal(partymemberDemandServeTimes); insert.setServiceTotal(totalDemandServeTimes); @@ -171,6 +211,19 @@ public class DemandServiceImpl implements DemandService { insert.setResiTotal(resiVolunteerCount); insert.setVolunteerTotal(volunteerTotalCount); + CustomerGridFormDTO gridForm = new CustomerGridFormDTO(); + gridForm.setGridId(gridId); + String errorMsg = "【志愿者服务按日统计】查询网格基本信息失败"; + CustomerGridDTO gridInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getGridBaseInfoByGridId(gridForm), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + + Optional.ofNullable(gridInfo).ifPresent(gi -> { + insert.setPid(gi.getPid()); + insert.setPids(gi.getPids()); + }); + + // 持久化 demandStatsService.addVolunteerServiceDaily(insert); + + return insert; } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql new file mode 100644 index 0000000000..de4af15c6f --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.27__volunteer_service_daily_add_gridid.sql @@ -0,0 +1,14 @@ +-- 发布前执行 +alter table fact_volunteer_service_daily add column GRID_ID varchar(64) not null comment '网格ID' after CUSTOMER_ID; +alter table fact_volunteer_service_daily add column PID varchar(64) default '' comment 'pid网格父级ID' after RESI_SERVICE_TOTAL; +alter table fact_volunteer_service_daily add column PIDS varchar(255) default '' comment 'pid网格父级ID路径,包含PID' after PID; + +-- 发布后执行 + +delete from fact_volunteer_service_daily; + +alter table fact_volunteer_service_daily drop key uni_vsd; + +alter table fact_volunteer_service_daily + add constraint uni_vsd + unique (GRID_ID, DATE_ID, DEL_FLAG); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml index ddebabef66..ab73afd872 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/heart/IcUserDemandServiceDao.xml @@ -24,11 +24,13 @@ select service.SERVER_ID, SERVICE_TYPE, count(1) as SERVE_TIMES from ic_user_demand_rec damend inner join ic_user_demand_service service on (damend.ID = service.DEMAND_REC_ID and service.DEL_FLAG = 0) + inner join volunteer_info v on (service.SERVER_ID = v.USER_ID and v.DEL_FLAG = 0) where damend.DEL_FLAG = 0 and damend.STATUS = 'finished' and damend.CUSTOMER_ID = #{customerId} and service.SERVICE_END_TIME #{endTime} and service.SERVICE_TYPE = #{serviceType} + and v.GRID_ID = #{gridId} group by service.SERVER_ID, SERVICE_TYPE \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml index 59dfd96c12..be083bd93e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/FactVolunteerServiceDailyDao.xml @@ -14,6 +14,8 @@ + + diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java index c8893697a8..9a5e2fdc7f 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/VolunteerCommonFormDTO.java @@ -14,12 +14,16 @@ import javax.validation.constraints.NotNull; @Data public class VolunteerCommonFormDTO { - public interface VolunteerPage { - } - - @NotBlank(message = "客户ID不能为空", groups = {VolunteerPage.class}) + /** + * 客户ID + */ private String customerId; + /** + * 上级组织ID,使用PIDS like,查询该组织下所有志愿者,注意,是like 'agencyId:%' + */ + private String superiorAgencyId; + private Integer pageNo = 0; private Integer pageSize = 20; diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java index 4bad8f25d7..a21cccb8f3 100644 --- a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java +++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java @@ -23,6 +23,7 @@ import java.util.List; * @date 2020/6/4 13:25 */ @FeignClient(name = ServiceConstant.EPMET_HEART_SERVER, fallbackFactory = EpmetHeartOpenFeignClientFallbackFactory.class) +//@FeignClient(name = ServiceConstant.EPMET_HEART_SERVER, fallbackFactory = EpmetHeartOpenFeignClientFallbackFactory.class, url = "http://localhost:8111") public interface EpmetHeartOpenFeignClient { /** diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java index e1d18e5536..85a9009b44 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/ResiVolunteerController.java @@ -135,13 +135,11 @@ public class ResiVolunteerController { */ @PostMapping("page") public Result> queryVolunteerPage(@RequestBody VolunteerCommonFormDTO input) { - - ValidatorUtils.validateEntity(input, VolunteerCommonFormDTO.VolunteerPage.class); - Integer pageNo = input.getPageNo(); Integer pageSize = input.getPageSize(); String customerId = input.getCustomerId(); - List l = volunteerInfoService.queryVolunteerPage(customerId, pageNo, pageSize); + String superiorAgencyId = input.getSuperiorAgencyId(); + List l = volunteerInfoService.queryVolunteerPage(customerId, pageNo, pageSize, superiorAgencyId); return new Result>().ok(l); } } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java index fcce38bc75..e49e85d986 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/entity/VolunteerInfoEntity.java @@ -67,4 +67,8 @@ public class VolunteerInfoEntity extends BaseEpmetEntity { * 志愿者注册,所在网格名称 */ private String gridName; + + private String pid; + + private String pids; } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java index 6a84fb67a1..1098a61c98 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/VolunteerInfoService.java @@ -96,5 +96,5 @@ public interface VolunteerInfoService extends BaseService { */ List queryListVolunteer(String customerId,String userRealName); - List queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize); + List queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize, String superiorAgencyId); } diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java index ac87cc6b4c..ad5f5aa067 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/VolunteerInfoServiceImpl.java @@ -22,11 +22,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.MqConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.dto.form.mq.MqBaseMsgDTO; import com.epmet.commons.tools.dto.form.mq.eventmsg.BasePointEventMsg; import com.epmet.commons.tools.enums.EventEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.security.dto.TokenDto; @@ -35,6 +38,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.SendMqMsgUtils; import com.epmet.constant.SmsTemplateConstant; import com.epmet.dao.VolunteerInfoDao; +import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.HeartUserInfoDTO; import com.epmet.dto.VolunteerInfoDTO; import com.epmet.dto.form.CommonCustomerFormDTO; @@ -50,6 +54,7 @@ import com.epmet.dto.result.resi.ResiVolunteerInfoResultDTO; import com.epmet.entity.VolunteerInfoEntity; import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.service.HeartUserInfoService; import com.epmet.service.VolunteerInfoService; import com.github.pagehelper.PageHelper; @@ -64,6 +69,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; @@ -74,7 +80,7 @@ import java.util.stream.Collectors; * @since v1.0.0 2020-07-19 */ @Service -public class VolunteerInfoServiceImpl extends BaseServiceImpl implements VolunteerInfoService { +public class VolunteerInfoServiceImpl extends BaseServiceImpl implements VolunteerInfoService, ResultDataResolver { private Logger logger = LogManager.getLogger(VolunteerInfoServiceImpl.class); private static final String SEND_SMS_CODE_ERROR = "发送短信验证码异常,手机号[%s],code[%s],msg[%s]"; @@ -89,6 +95,9 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize) { + public List queryVolunteerPage(String customerId, Integer pageNo, Integer pageSize, String superiorAgencyId) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(VolunteerInfoEntity::getCustomerId, customerId); + Optional.ofNullable(customerId).ifPresent(cid -> query.eq(VolunteerInfoEntity::getCustomerId, cid)); + Optional.ofNullable(superiorAgencyId).ifPresent(cid -> { + + // 需要查询agency的pids:id,通过这个字符串去匹配志愿者的Pids字段来查询 + String errorMsg = "【分页查询志愿者列表】失败"; + CustomerAgencyDTO agencyInfo = getResultDataOrThrowsException(govOrgOpenFeignClient.getAgencyById(superiorAgencyId), ServiceConstant.GOV_ORG_SERVER, EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + if (agencyInfo == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), errorMsg, errorMsg); + } + + String pidsAndAgencyIdPath = agencyInfo.getPids().concat(":").concat(superiorAgencyId); + if (pidsAndAgencyIdPath.startsWith(":")) pidsAndAgencyIdPath = pidsAndAgencyIdPath.replaceFirst(":", ""); + + query.likeRight(VolunteerInfoEntity::getPids, pidsAndAgencyIdPath); + }); PageHelper.startPage(pageNo, pageSize); List volunteerInfoEntities = baseDao.selectList(query); diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml index 4dc80881f2..a3f67ab27b 100644 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/VolunteerInfoDao.xml @@ -17,6 +17,8 @@ + +