From d894dd37e17f8ca1f503cc5d5dece8ee169e4768 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Thu, 27 May 2021 16:33:21 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=B2=BB=E7=90=86=E6=8C=87=E8=B0=81?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=E7=9B=B8=E5=85=B3v3:=20=E7=BD=91=E6=A0=BC?= =?UTF-8?q?=E8=87=AA=E6=B2=BB=E5=8D=A0=E6=AF=94=EF=BC=9A=E6=9C=AC=E7=BD=91?= =?UTF-8?q?=E6=A0=BC=E5=86=85=E4=BA=A7=E7=94=9F=E7=9A=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E4=B8=94=E4=B8=80=E7=9B=B4=E5=9C=A8=E7=BD=91?= =?UTF-8?q?=E6=A0=BC=E7=BA=A7=E6=B5=81=E8=BD=AC=E7=9A=84=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E4=BB=8E=E5=93=AA=E5=87=BA=E6=9D=A5=E5=BD=92=E8=B0=81?= =?UTF-8?q?=E8=87=AA=E6=B2=BB=EF=BC=9B=E7=A4=BE=E5=8C=BA=E3=80=81=E8=A1=97?= =?UTF-8?q?=E9=81=93=E3=80=81=E5=8C=BA=E7=9B=B4=E9=83=A8=E9=97=A8=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E9=83=BD=E6=98=AF=E6=8C=87=E7=9A=84=EF=BC=8C=E4=BB=8E?= =?UTF-8?q?=E6=9C=AC=E7=BD=91=E6=A0=BC=E5=86=85=E5=87=BA=E6=9D=A5=E7=9A=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=AD=EF=BC=8C=E5=86=8D=E5=8E=BB=E7=9C=8B?= =?UTF-8?q?=E8=B0=81=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extract/FactOriginProjectLogDailyDTO.java | 10 +- .../constant/DimObjectActionConstant.java | 13 ++ .../extract/FactOriginProjectLogDailyDao.java | 20 +- .../FactOriginProjectMainDailyDao.java | 19 ++ .../epmet/dao/org/StatsCustomerAgencyDao.java | 8 + .../extract/GovernProjectInfoDTO.java | 20 ++ .../extract/ProjectInfoDTO.java | 15 -- .../FactOriginProjectMainDailyService.java | 19 ++ .../impl/FactGridGovernDailyServiceImpl.java | 197 +++++++++++++++++- ...FactOriginProjectMainDailyServiceImpl.java | 23 ++ .../service/org/CustomerAgencyService.java | 16 ++ .../org/impl/CustomerAgencyServiceImpl.java | 22 ++ .../extract/FactOriginProjectLogDailyDao.xml | 23 ++ .../extract/FactOriginProjectMainDailyDao.xml | 59 ++++++ .../mapper/org/StatsCustomerAgencyDao.xml | 18 ++ 15 files changed, 457 insertions(+), 25 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/GovernProjectInfoDTO.java delete mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/ProjectInfoDTO.java diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectLogDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectLogDailyDTO.java index 8f5f1571db..4843b32966 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectLogDailyDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectLogDailyDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto.extract; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -44,7 +45,7 @@ public class FactOriginProjectLogDailyDTO implements Serializable { private String customerId; /** - * 网格grid,部门department + * 网格grid,部门department,组织:agency */ private String orgType; @@ -90,6 +91,11 @@ public class FactOriginProjectLogDailyDTO implements Serializable { */ private String yearId; + /** + * 项目ID + */ + private String projectId; + /** * 议题ID */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/DimObjectActionConstant.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/DimObjectActionConstant.java index 5476a93a1b..1b6697f1ec 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/DimObjectActionConstant.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/DimObjectActionConstant.java @@ -11,4 +11,17 @@ public interface DimObjectActionConstant { * 发布话题 */ String TOPIC_PUBLISH="discussing"; + + // response 处理/响应 + // close 结案 + // transfer 流转 + // return 退回 + // resolved 结案_已解决 + // unresolved 结案_无需解决 + // evaluate 满意度评价 + // bad 不满意 + // good 基本满意 + // perfect 非常满意 + // created 立项 + String PROJECT_RETURN="return"; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java index 78f9be78e9..3d7371fb56 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java @@ -18,12 +18,12 @@ package com.epmet.dao.evaluationindex.extract; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.extract.FactOriginProjectLogDailyDTO; import com.epmet.dto.extract.result.*; import com.epmet.entity.evaluationindex.extract.FactOriginProjectLogDailyEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -298,4 +298,22 @@ public interface FactOriginProjectLogDailyDao extends BaseDao */ List selectGridSelfDaily(@Param("customerId") String customerId, @Param("dateId") String dateId); + + /** + * @return java.util.List + * @param projectId + * @author yinzuomei + * @description 根据项目id, 查询处理明细 + * @Date 2021/5/27 12:58 + **/ + List selectListByProjectId(String projectId); + + /** + * @return com.epmet.dto.extract.FactOriginProjectLogDailyDTO + * @param projectId + * @author yinzuomei + * @description 查询某一个项目的结案操作明细 + * @Date 2021/5/27 12:58 + **/ + FactOriginProjectLogDailyDTO selectClosedLog(String projectId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java index d5042bbb7b..fe5a0e2584 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java @@ -29,6 +29,7 @@ import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; +import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -477,4 +478,22 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectAgencyClosedProjectCount(@Param("customerId") String customerId, @Param("dateId") String dateId, @Param( "closedStatus") String closedStatus, @Param("origin") String origin); + + /** + * 当前网格内已结案的项目 + * + * @author zhaoqifeng + * @date 2021/5/26 15:09 + * @param customerId + * @param gridId + * @param projectStatus 状态:待处理 pending,结案closed + * @param origin 项目来源 来源:议题issue 组织agency + * @param isResolved unresolved,resolved + * @return com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO + */ + List getGridClosedProjectList(@Param("customerId")String customerId, + @Param("gridId") String gridId, + @Param("projectStatus")String projectStatus, + @Param("origin") String origin, + @Param("isResolved")String isResolved); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/StatsCustomerAgencyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/StatsCustomerAgencyDao.java index aa0f78f087..6a20ae9f7f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/StatsCustomerAgencyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/org/StatsCustomerAgencyDao.java @@ -35,4 +35,12 @@ public interface StatsCustomerAgencyDao extends BaseDao { CustomerAgencyEntity getRootAgencyInfo(String customerId); List queryAgencyListByCustomerId(String customerId); + + /** + * 查询部门所属组织信息 + * + * @param deptId + * @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity + */ + CustomerAgencyEntity selectByDeptId(String deptId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/GovernProjectInfoDTO.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/GovernProjectInfoDTO.java new file mode 100644 index 0000000000..b4dfa42239 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/GovernProjectInfoDTO.java @@ -0,0 +1,20 @@ +package com.epmet.entity.evaluationindex.extract; + +import com.epmet.dto.extract.FactOriginProjectLogDailyDTO; +import com.epmet.dto.extract.FactOriginProjectMainDailyDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 描述一下 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/26 18:00 + */ +@Data +public class GovernProjectInfoDTO extends FactOriginProjectMainDailyDTO implements Serializable { + private FactOriginProjectLogDailyDTO closeLogDTO; + private List projectLogDTOList; +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/ProjectInfoDTO.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/ProjectInfoDTO.java deleted file mode 100644 index 0b1eb1af59..0000000000 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/ProjectInfoDTO.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.epmet.entity.evaluationindex.extract; - -import lombok.Data; - -import java.io.Serializable; - -/** - * 描述一下 - * - * @author yinzuomei@elink-cn.com - * @date 2021/5/26 18:00 - */ -@Data -public class ProjectInfoDTO implements Serializable { -} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java index 9445559627..32c027b605 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java @@ -30,6 +30,7 @@ import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; +import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import java.util.List; @@ -448,4 +449,22 @@ public interface FactOriginProjectMainDailyService extends BaseService */ Map getAgencyClosedProjectCount(String customerId, String dateId, String closedStatus, String origin); + + /** + * 当前网格内已结案的项目 + * + * @author zhaoqifeng + * @date 2021/5/26 15:09 + * @param customerId + * @param gridId + * @param projectStatus 状态:待处理 pending,结案closed + * @param origin 项目来源 来源:议题issue 组织agency + * @param isResolved unresolved,resolved + * @return com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO + */ + List getGridClosedProjectList(String customerId, + String gridId, + String projectStatus, + String origin, + String isResolved); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridGovernDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridGovernDailyServiceImpl.java index 84c4addeea..24136c028f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridGovernDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactGridGovernDailyServiceImpl.java @@ -19,17 +19,22 @@ package com.epmet.service.evaluationindex.extract.todata.impl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.constant.DimObjectActionConstant; import com.epmet.constant.DimObjectStatusConstant; import com.epmet.constant.ProjectConstant; import com.epmet.dao.evaluationindex.extract.FactGridGovernDailyDao; +import com.epmet.dto.extract.FactOriginProjectLogDailyDTO; import com.epmet.dto.org.GridInfoDTO; import com.epmet.entity.evaluationindex.extract.FactGridGovernDailyEntity; import com.epmet.entity.evaluationindex.extract.GovernGridClosedTotalCommonDTO; import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; +import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; +import com.epmet.entity.org.CustomerAgencyEntity; import com.epmet.service.evaluationindex.extract.todata.FactGridGovernDailyService; import com.epmet.service.evaluationindex.extract.todata.FactOriginIssueMainDailyService; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; import com.epmet.service.evaluationindex.extract.todata.FactOriginTopicMainDailyService; +import com.epmet.service.org.CustomerAgencyService; import com.epmet.service.org.CustomerGridService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -39,10 +44,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -62,7 +64,8 @@ public class FactGridGovernDailyServiceImpl extends BaseServiceImpl getGovernGridClosedTotalCommonDTOMap(String customerId, List gridIds) { - Map resultMap=new HashMap<>(); - for(String gridId:gridIds){ + Map resultMap = new HashMap<>(); + for (String gridId : gridIds) { + + GovernGridClosedTotalCommonDTO governGridClosedTotalCommonDTO = new GovernGridClosedTotalCommonDTO(); + governGridClosedTotalCommonDTO.setGridId(gridId); + + // 11、来源于议题的项目,未出网格结案并且已解决的项目数 + int fromIssueResolvedInGridCount = NumConstant.ZERO; + // 12、来源于议题的项目,未出网格结案并且无需解决的项目数 + int fromIssueUnResolvedInGridCount = NumConstant.ZERO; + // 13、来源于项目立项的项目,未出网格结案,并且已解决的项目数;因现在网格不能立项,所以此列默认为0 + int fromAgencyResolvedInGridCount = NumConstant.ZERO; + // 14、来源于项目立项的项目,未出网格结案,并且无需解决的项目数;因现在网格不能立项,所以此列默认为0 + int fromAgencyUnResolvedInGridCount = NumConstant.ZERO; + // 当前网格内出来的项目:由社区结案(已解决+未解决)的项目总数 + int communityClosedCount= NumConstant.ZERO; + // 当前网格内出来的项目:由街道结案(已解决+未解决)的项目总数 + int streetClosedCount=NumConstant.ZERO;; + // 当前网格内出来的项目:由街道结案(已解决+未解决)的项目总数 + int districtDeptClosedCount=NumConstant.ZERO; + + //当前网格内已结案的项目 + List currentGridClosedProjectList = factOriginProjectMainDailyService.getGridClosedProjectList(customerId, gridId, + ProjectConstant.CLOSED,null,null); + for (GovernProjectInfoDTO governProjectInfoDTO : currentGridClosedProjectList) { + // 1、先判断当前项目是否出了网格 + // 举例:A社区下有A1、A2两个网格;A1网格下的一个项目,流转给了A2网格的某人,他结案了。 只要项目流转部门未出grid ;就算是网格自治。 + boolean inGridClosed = checkIsInGridClosed(governProjectInfoDTO.getGridId(), + governProjectInfoDTO.getProjectLogDTOList()); + if (inGridClosed) { + // 2、在网格内流转结案的,计算以下下值 + if (ProjectConstant.PROJECT_ORIGIN_ISSUE.equals(governProjectInfoDTO.getOrigin())) { + if (ProjectConstant.RESOLVED.equals(governProjectInfoDTO.getIsResolved())) { + // 11、来源于议题的项目,未出网格(在网格内流转的)结案并且已解决的项目数 + fromIssueResolvedInGridCount += 1; + } else if (ProjectConstant.UNRESOLVED.equals(governProjectInfoDTO.getIsResolved())) { + // 12、来源于议题的项目,未出网格(在网格内流转的)结案并且无需解决的项目数 + fromIssueUnResolvedInGridCount += 1; + } + } else if (ProjectConstant.PROJECT_ORIGIN_AGENCY.equals(governProjectInfoDTO.getOrigin())) { + if (ProjectConstant.RESOLVED.equals(governProjectInfoDTO.getIsResolved())) { + // 13、来源于项目立项的项目,未出网格(在网格内流转的)结案,并且已解决的项目数;因现在网格不能立项,所以此列默认为0 + fromAgencyResolvedInGridCount += 1; + } else if (ProjectConstant.UNRESOLVED.equals(governProjectInfoDTO.getIsResolved())) { + // 14、来源于项目立项的项目,未出网格(在网格内流转的)结案,并且无需解决的项目数;因现在网格不能立项,所以此列默认为0 + fromAgencyUnResolvedInGridCount += 1; + } + } + } else { + // 3、出了网格的判断是由谁解决的? + String resolveOrgType=getProjectResolveOrgType(governProjectInfoDTO.getProjectLogDTOList()); + if("community".equals(resolveOrgType)){ + // 当前网格内出来的项目:由社区结案(已解决+未解决)的项目总数 + communityClosedCount+=1; + }else if("street".equals(resolveOrgType)){ + // 当前网格内出来的项目:由街道结案(已解决+未解决)的项目总数 + streetClosedCount+=1; + }else if("districtdept".equals(resolveOrgType)){ + // 当前网格内出来的项目:由街道结案(已解决+未解决)的项目总数 + districtDeptClosedCount+=1; + } + // todo 可能是 市级解决、省级解决呢??? + } + } + governGridClosedTotalCommonDTO.setFromIssueResolvedInGridCount(fromIssueResolvedInGridCount); + governGridClosedTotalCommonDTO.setFromIssueUnResolvedInGridCount(fromIssueUnResolvedInGridCount); + governGridClosedTotalCommonDTO.setFromAgencyResolvedInGridCount(fromAgencyResolvedInGridCount); + governGridClosedTotalCommonDTO.setFromAgencyUnResolvedInGridCount(fromAgencyUnResolvedInGridCount); + governGridClosedTotalCommonDTO.setCommunityClosedCount(communityClosedCount); + governGridClosedTotalCommonDTO.setStreetClosedCount(streetClosedCount); + governGridClosedTotalCommonDTO.setDistrictDeptClosedCount(districtDeptClosedCount); + resultMap.put(gridId, governGridClosedTotalCommonDTO); } return resultMap; } + /** + * 已经出网格的项目,到底归谁解决呢? + * + * @param projectLogDTOList 当前项目所有的处理明细 + * @return String 社区解决:community;街道解决:street;区直部门解决:districtdept + */ + private String getProjectResolveOrgType(List projectLogDTOList) { + List handleLevelList=new ArrayList<>(); + for (FactOriginProjectLogDailyDTO logDailyDTO : projectLogDTOList) { + if(logDailyDTO.getActionCode().equals(DimObjectActionConstant.PROJECT_RETURN)){ + //当前操作如果是退回,不参与比较 + continue; + } + + /** + * 机关级别(社区级:community, + 乡(镇、街道)级:street, + 区县级: district, + 市级: city + 省级:province) + */ + // orgType: 网格grid,部门department,组织:agency + if ("grid".equals(logDailyDTO.getOrgType())) { + handleLevelList.add(NumConstant.ONE); + } else if ("agency".equals(logDailyDTO.getOrgType())) { + CustomerAgencyEntity agencyEntity=customerAgencyService.getAgencyById(logDailyDTO.getOrgId()); + if("community".equals(agencyEntity.getLevel())){ + handleLevelList.add(NumConstant.TWO); + }else if("street".equals(agencyEntity.getLevel())){ + handleLevelList.add(NumConstant.THREE); + }else if("district".equals(agencyEntity.getLevel())){ + handleLevelList.add(NumConstant.FOUR); + }else if("city".equals(agencyEntity.getLevel())){ + handleLevelList.add(NumConstant.FIVE); + }else if("province".equals(agencyEntity.getLevel())){ + handleLevelList.add(NumConstant.SIX); + } + } else if ("department".equals(logDailyDTO.getOrgType())) { + CustomerAgencyEntity deptAgencyEntity=customerAgencyService.getAgencyByDeptId(logDailyDTO.getOrgId()); + if("district".equals(deptAgencyEntity.getLevel())){ + // 区直部门直接返回 + return "districtdept"; + }else if("community".equals(deptAgencyEntity.getLevel())){ + handleLevelList.add(NumConstant.TWO); + }else if("street".equals(deptAgencyEntity.getLevel())){ + handleLevelList.add(NumConstant.THREE); + }else if("city".equals(deptAgencyEntity.getLevel())){ + handleLevelList.add(NumConstant.FIVE); + }else if("province".equals(deptAgencyEntity.getLevel())){ + handleLevelList.add(NumConstant.SIX); + } + } + } + //网格:1 grid + //社区:2 community + //街道:3 street + //区县:4 district + //市级:5 city + //省:6 province + //区直部门:7 districtdept + //求出最高的处理部门级别 + String result = ""; + int max = Collections.max(handleLevelList); + switch (max) { + case NumConstant.ONE: + return "grid"; + case NumConstant.TWO: + result = "community"; + break; + case NumConstant.THREE: + result = "street"; + break; + case NumConstant.FOUR: + result = "district"; + break; + case NumConstant.FIVE: + result = "city"; + break; + case NumConstant.SIX: + result = "province"; + break; + case NumConstant.SEVEN: + result = "districtdept"; + } + return result; + } + + /** + * 根据项目处理的明细,判断当前项目是否在网格内自己解决的 + * + * @param gridId 当前项目所属网格 + * @param projectLogDTOList + * @return boolean + */ + private boolean checkIsInGridClosed(String gridId, List projectLogDTOList) { + boolean flag = true; + for (FactOriginProjectLogDailyDTO detail : projectLogDTOList) { + if(detail.getActionCode().equals(DimObjectActionConstant.PROJECT_RETURN)){ + //当前操作如果是退回,不参与比较 + continue; + } + //只要出了网格,就不算自治 + if (!"grid".equals(detail.getOrgType())) { + flag = false; + break; + } + } + return flag; + } + /** * 构造要插入的数据,每个网格一天一条数据,初始赋值0 * diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java index e31ea6fbaf..40d9738a7d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java @@ -40,6 +40,7 @@ import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.extract.GovernGridTotalCommonDTO; +import com.epmet.entity.evaluationindex.extract.GovernProjectInfoDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; @@ -678,5 +679,27 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl getGridClosedProjectList(String customerId, + String gridId, + String projectStatus, + String origin, + String isResolved) { + List resultList=baseDao.getGridClosedProjectList(customerId,gridId,projectStatus,origin,isResolved); + return resultList; + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java index fd611edf23..176167685c 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/CustomerAgencyService.java @@ -23,4 +23,20 @@ public interface CustomerAgencyService { List queryAgencyListByCustomerId(String customerId); + + /** + * 根据组织id查询基本信息 + * + * @param agencyId + * @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity + */ + CustomerAgencyEntity getAgencyById(String agencyId); + + /** + * 查询部门所属组织信息 + * + * @param deptId + * @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity + */ + CustomerAgencyEntity getAgencyByDeptId(String deptId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java index 5c6b5175b0..b61066f7a7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/org/impl/CustomerAgencyServiceImpl.java @@ -55,4 +55,26 @@ public class CustomerAgencyServiceImpl implements CustomerAgencyService { public List queryAgencyListByCustomerId(String customerId) { return customerAgencyDao.queryAgencyListByCustomerId(customerId); } + + /** + * 根据组织id查询基本信息 + * + * @param agencyId + * @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity + */ + @Override + public CustomerAgencyEntity getAgencyById(String agencyId) { + return customerAgencyDao.selectById(agencyId); + } + + /** + * 查询部门所属组织信息 + * + * @param deptId + * @return com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity + */ + @Override + public CustomerAgencyEntity getAgencyByDeptId(String deptId) { + return customerAgencyDao.selectByDeptId(deptId); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml index 411d959a57..c1b12a7da5 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml @@ -664,4 +664,27 @@ GROUP BY GRID_ID + + + + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index f17dc573ef..633160b178 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -963,4 +963,63 @@ GROUP BY AGENCY_ID + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml index a7b6c09ae2..771a60ba32 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/StatsCustomerAgencyDao.xml @@ -132,4 +132,22 @@ where ca.del_flag='0' and ca.CUSTOMER_ID=#{customerId} + + \ No newline at end of file From 566c160ad4a2fe6d03dc10cc9dae86d93fbcfcd4 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 27 May 2021 17:38:23 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=9F=BA=E5=B1=82=E6=B2=BB=E7=90=86-?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=9A=84=E6=B2=BB=E7=90=86=E6=8C=87=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E6=8C=89=E5=A4=A9=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FactAgencyGovernDailyServiceImpl.java | 61 ++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactAgencyGovernDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactAgencyGovernDailyServiceImpl.java index 5603dfde68..ba1ee9853d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactAgencyGovernDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactAgencyGovernDailyServiceImpl.java @@ -18,11 +18,25 @@ package com.epmet.service.evaluationindex.extract.todata.impl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.dao.evaluationindex.extract.FactAgencyGovernDailyDao; +import com.epmet.dto.extract.result.OrgStatisticsResultDTO; +import com.epmet.dto.stats.DimAgencyDTO; import com.epmet.entity.evaluationindex.extract.FactAgencyGovernDailyEntity; import com.epmet.service.evaluationindex.extract.todata.FactAgencyGovernDailyService; +import com.epmet.service.evaluationindex.extract.todata.FactOriginIssueMainDailyService; +import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; +import com.epmet.service.evaluationindex.extract.todata.FactOriginTopicMainDailyService; +import com.epmet.service.stats.DimAgencyService; +import com.epmet.util.DimIdGenerator; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + /** * 组织的治理指数,按天统计 * @@ -32,6 +46,14 @@ import org.springframework.stereotype.Service; @Service public class FactAgencyGovernDailyServiceImpl extends BaseServiceImpl implements FactAgencyGovernDailyService { + @Resource + private DimAgencyService dimAgencyService; + @Resource + private FactOriginTopicMainDailyService factOriginTopicMainDailyService; + @Resource + private FactOriginIssueMainDailyService factOriginIssueMainDailyService; + @Resource + private FactOriginProjectMainDailyService factOriginProjectMainDailyService; /** * 治理指数-组织相关 @@ -44,8 +66,14 @@ public class FactAgencyGovernDailyServiceImpl extends BaseServiceImpl agencyList = dimAgencyService.getAgencyInfoByCustomerId(customerId); + List agencyGovernDailyList = agencyList.stream().map(agency -> { + FactAgencyGovernDailyEntity entity = initEntity(agency, dateId); + return entity; + }).collect(Collectors.toList()); // 问题解决总数:当前组织下,话题关闭(已解决+无需解决)总数、议题关闭(已解决+无需解决)总数和项目结案(议题转为项目的结案数+项目立项结案数)总数之和 - + Map topicTotal = factOriginTopicMainDailyService.getAgencyClosedTopicCount(customerId, dateId, null, + null); // 党群自治占比:当前组织下,所有小组内关闭(已解决+无需解决)的话题数与问题解决总数之比(未出小组:未转议题的) // 网格自治占比:当前组织下,所有网格内结案项目数与问题解决总数之比(未出网格) // 参考:fact_index_govrn_ablity_grid_monthly的SELF_SOLVE_PROJECT_COUNT计算 @@ -61,4 +89,35 @@ public class FactAgencyGovernDailyServiceImpl extends BaseServiceImpl Date: Fri, 28 May 2021 09:39:04 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V0.0.17__inxdex_explain.sql | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.17__inxdex_explain.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.17__inxdex_explain.sql index f7306c991d..15cca09546 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.17__inxdex_explain.sql +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.17__inxdex_explain.sql @@ -18,6 +18,42 @@ CREATE TABLE `index_explain` ( PRIMARY KEY (`ID`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='指标说明文案'; +#插入指标结束 +BEGIN; +INSERT INTO `index_explain` VALUES ('1', 'default', '党建指数', '', '自然月周期内,党建指数得分=本级党建指数得分+下级党建指数得分', 'grid', '0', 1, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('10', 'default', '1/2下级党建指数得分', 'shequxiangguan:dangjiannengli', '下级党建指数得分=下级所有网格党建指数的平均值*相关权重', 'community', '8', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('11', 'default', '治理指数', '', '含义:自然月周期内,治理指数得分=本级治理指数得分+下级治理指数得分', 'community', '0', 4, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('12', 'default', '2/1本级治理指数得分', 'shequxiangguan:zhilinengli', '本级治理指数得分=网格各项治理指数指标数据得分*相关权重之和', 'community', '11', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('13', 'default', '2/2下级治理指数得分', 'shequxiangguan:zhilinengli', '下级治理指数得分=组织内党员的参与议事指数考评分(平均值)*相关权重', 'community', '11', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('14', 'default', '服务指数', '', '含义:自然月周期内,服务指数得分=本级服务指数得分+下级服务指数得分', 'community', '0', 3, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('15', 'default', '3/1本级服务指数得分', 'shequxiangguan:fuwunengli', '本级服务指数得分=社区活动组织次数得分*相关权重', 'community', '14', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('16', 'default', '3/2下级服务指数得分', 'shequxiangguan:fuwunengli', '下级服务指数得分=社区下级所有网格服务指数得分(平均值)*相关权重', 'community', '14', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('17', 'default', '党建指数', '', '自然月周期内,党建指数得分=本级党建指数得分+下级党建指数得分', 'street', '0', 5, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('18', 'default', '1/1本级党建指数得分', 'jiedaoxiangguan:dangjiannengli', '本级党建指数得分=社区名义发文数量得分*相关权重', 'street', '17', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('19', 'default', '1/2下级党建指数得分', 'jiedaoxiangguan:dangjiannengli', '下级党建指数得分=下级所有网格党建指数的平均值*相关权重', 'street', '17', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('2', 'default', '1/1本级党建指数得分', 'wanggexiangguan:dangjiannengli', '本级党建指数得分=网格各项党建指数指标数据得分*相关权重之和', 'grid', '1', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('20', 'default', '治理指数', '', '含义:自然月周期内,治理指数得分=本级治理指数得分+下级治理指数得分', 'street', '0', 6, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('21', 'default', '2/1本级治理指数得分', 'jiedaoxiangguan:zhilinengli', '本级治理指数得分=网格各项治理指数指标数据得分*相关权重之和', 'street', '20', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('22', 'default', '2/2下级治理指数得分', 'jiedaoxiangguan:zhilinengli', '下级治理指数得分=组织内党员的参与议事指数考评分(平均值)*相关权重', 'street', '20', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('23', 'default', '服务指数', '', '含义:自然月周期内,服务指数得分=本级服务指数得分+下级服务指数得分', 'street', '0', 7, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('24', 'default', '3/1本级服务指数得分', 'jiedaoxiangguan:fuwunengli', '本级服务指数得分=社区活动组织次数得分*相关权重', 'street', '23', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('25', 'default', '3/2下级服务指数得分', 'jiedaoxiangguan:fuwunengli', '下级服务指数得分=社区下级所有网格服务指数得分(平均值)*相关权重', 'street', '23', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('26', 'default', '党建指数', '', '含义:自然月周期内,党建指数得分=本级党建指数得分+下级党建指数得分', 'district', '0', 1, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('27', 'default', '1/1本级党建指数得分', 'quanquxiangguan:dangjiannengli', '本级党建指数得分=区名义发文数量得分*相关权重', 'district', '26', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('28', 'default', '1/2下级党建指数得分', 'quanquxiangguan:dangjiannengli', '下级党建指数得分=区下级街道党建指数汇总(平均值)*相关权重', 'district', '26', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('29', 'default', '治理指数', '', '含义:自然月周期内,治理指数得分=所有街道治理指数(平均值)*相关权重(d%)+所有直属部门治理指数(平均值)*相关权重(d%)', 'district', '0', 2, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('3', 'default', '1/2下级党建指数得分', 'dangyuanxiangguan:lianxiqunzhong', '下级党建指数得分=组织内党员的联系群众指数考评分(平均值)*相关权重', 'grid', '1', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('30', 'default', '2/1所有街道治理指数(平均值)', 'quanquxiangguan:zhilinengli', '所有街道治理指数(平均值)得分=区下级所有街道治理指数得分总和/街道总数', 'district', '29', 1, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('31', 'default', '2/2所有直属部门治理指数(平均值)', 'quzhibumen:zhilinengli', '所有指数部门治理指数(平均值)得分=区直部门各项治理指数指标数据平均分*相关权重之和', 'district', '29', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('32', 'default', '服务指数', 'quanquxiangguan:fuwunengli', '含义:自然月周期内,服务指数得分=区下属街道服务指数汇总(平均值)=区下属所有街道服务指数得分之和/街道总数', 'district', '0', 3, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('4', 'default', '治理指数', '', '含义:自然月周期内,治理指数得分=本级治理指数得分+下级治理指数得分', 'grid', '0', 2, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('5', 'default', '2/1本级治理指数得分', 'wanggexiangguan:zhilinengli', '本级治理指数得分=网格各项治理指数指标数据得分*相关权重之和', 'grid', '4', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('6', 'default', '2/2下级治理指数得分', 'dangyuanxiangguan:canyuyishi', '下级治理指数得分=组织内党员的参与议事指数考评分(平均值)*相关权重', 'grid', '4', 2, 1, 'xiaji', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('7', 'default', '服务指数', 'wanggexiangguan:fuwunengli', '含义:自然月周期内,服务指数得分=活动组织次数得分*相关权重+志愿者占比得分*相关权重+党员志愿者率得分*相关权重', 'grid', '0', 3, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('8', 'default', '党建指数', '', '自然月周期内,党建指数得分=本级党建指数得分+下级党建指数得分', 'community', '0', 1, 0, 'none', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +INSERT INTO `index_explain` VALUES ('9', 'default', '1/1本级党建指数得分', 'shequxiangguan:dangjiannengli', '本级党建指数得分=社区名义发文数量得分*相关权重', 'community', '8', 1, 1, 'zishen', '0', 0, 'app_user', '2021-05-12 14:25:14', 'app_user', '2021-05-12 14:25:16'); +COMMIT; + #更新含义 update index_dict SET INDEX_DESC='自然月周期内,网格内注册群众用户数。' WHERE INDEX_CODE = 'wanggequnzhongyhs'; update index_dict SET INDEX_DESC='自然月周期内,网格内注册党员用户数。' WHERE INDEX_CODE = 'wanggedangyuanyhs'; From 7a48624a2f3d19d632be740add5e186577ffc7a5 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 28 May 2021 10:35:21 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=95=B0=E6=8D=AE3.0=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=87=8D=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V0.0.18__modify_index_weight_for_3.0.sql | 22 ++++++++++++++++++ ...系算法需求-备注3.0版新权重.xlsx | Bin 0 -> 64848 bytes 2 files changed, 22 insertions(+) create mode 100644 epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.18__modify_index_weight_for_3.0.sql create mode 100644 epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.18__modify_index_weight_for_3.0.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.18__modify_index_weight_for_3.0.sql new file mode 100644 index 0000000000..1bbb8b6e4c --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.18__modify_index_weight_for_3.0.sql @@ -0,0 +1,22 @@ +#修改党员相关 三会一课权重 +UPDATE index_group_detail_template SET WEIGHT = 0.1 WHERE INDEX_CODE = 'dangwuhuodong'; +UPDATE index_group_detail_template SET WEIGHT = 0.45 WHERE INDEX_CODE = 'canyuyishi'; +UPDATE index_group_detail_template SET WEIGHT = 0.45 WHERE INDEX_CODE = 'lianxiqunzhong'; +UPDATE index_group_detail_template SET WEIGHT = 1 WHERE INDEX_CODE = 'canjiasanhykcs'; + +UPDATE index_group_detail_template SET WEIGHT = 0.26 WHERE INDEX_CODE = 'zuzhineidangydlxqznlkpfpjz'; +UPDATE index_group_detail_template SET WEIGHT = 0.26 WHERE INDEX_CODE = 'wanggedifawsl'; +UPDATE index_group_detail_template SET WEIGHT = 0.04 WHERE INDEX_CODE = 'zuzhisanhykcs'; +UPDATE index_group_detail_template SET WEIGHT = 0.04 WHERE INDEX_CODE = 'dangyuancanjiashykrc'; + +#开发和测试的 对应的客户已经修改执行完了 +#修改生产的 先给党群e事通和亿联员工互助会设置一下权重。再加上我们自己的 微笑崂山 +UPDATE index_group_detail SET WEIGHT = 0.1 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'dangwuhuodong'; +UPDATE index_group_detail SET WEIGHT = 0.45 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'canyuyishi'; +UPDATE index_group_detail SET WEIGHT = 0.45 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'lianxiqunzhong'; +UPDATE index_group_detail SET WEIGHT = 1 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'canjiasanhykcs'; + +UPDATE index_group_detail SET WEIGHT = 0.26 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'zuzhineidangydlxqznlkpfpjz'; +UPDATE index_group_detail SET WEIGHT = 0.26 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'wanggedifawsl'; +UPDATE index_group_detail SET WEIGHT = 0.04 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'zuzhisanhykcs'; +UPDATE index_group_detail SET WEIGHT = 0.04 WHERE CUSTOMER_ID IN ('7ae84f0ceb36397f5078187d72de3403','04c0d396e298f13e57aa5904a657eaa6','3fdd0380deff5b30f45376cdf995d1c1') AND INDEX_CODE = 'dangyuancanjiashykrc'; diff --git a/epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx b/epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..cb442ccfe9cb70a87b2de2a9b0dab96057ecca73 GIT binary patch literal 64848 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 Yow_nQLQ>?NcVNI8qF7t&GxF2_0Zk}rR{#J2 literal 0 HcmV?d00001 From 5250204b5c3989bea949361b4c81b2fb83af42d2 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 28 May 2021 12:38:12 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=B2=BB=E7=90=86=E6=8C=87=E6=95=B0-?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=E8=B0=83=E8=AF=951?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExtractFactGridGovernDailyFromDTO.java | 22 +++++++++ .../com/epmet/controller/DemoController.java | 20 +++++++- .../todata/FactGridGovernDailyService.java | 6 +-- .../impl/FactGridGovernDailyServiceImpl.java | 49 ++++++++++--------- .../resources/mapper/org/CustomerGridDao.xml | 3 +- 5 files changed, 71 insertions(+), 29 deletions(-) create mode 100644 epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/ExtractFactGridGovernDailyFromDTO.java diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/ExtractFactGridGovernDailyFromDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/ExtractFactGridGovernDailyFromDTO.java new file mode 100644 index 0000000000..6b1ec0810f --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/form/ExtractFactGridGovernDailyFromDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.extract.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * 治理指数网格-计算入参。 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/27 17:28 + */ +@Data +public class ExtractFactGridGovernDailyFromDTO implements Serializable { + private static final long serialVersionUID = -4511693100253244749L; + @NotBlank(message = "customer") + private String customerId; + private String dateId; + private List gridIds; +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index bf2a5ae63f..a8baf89b38 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -19,6 +19,7 @@ import com.epmet.dao.stats.DimDateDao; import com.epmet.dao.stats.DimMonthDao; import com.epmet.dto.AgencySubTreeDto; import com.epmet.dto.StatsFormDTO; +import com.epmet.dto.extract.form.ExtractFactGridGovernDailyFromDTO; import com.epmet.dto.extract.form.ExtractOriginFormDTO; import com.epmet.dto.extract.form.ExtractScreenFormDTO; import com.epmet.dto.indexcal.CalculateCommonFormDTO; @@ -534,6 +535,14 @@ public class DemoController { } + /** + * @return com.epmet.commons.tools.utils.Result + * @param customerId + * @param dateId + * @author yinzuomei + * @description 话题原始表抽取方法 + * @Date 2021/5/28 10:23 + **/ @PostMapping("inserttopicorigin") public Result topicDataCleaning(@RequestParam("customerId") String customerId, @RequestParam("dateId")String dateId) { if (StringUtils.isNotBlank(customerId) && StringUtils.isNotBlank(dateId)) { @@ -903,9 +912,16 @@ public class DemoController { return new Result(); } + /** + * @return com.epmet.commons.tools.utils.Result + * @param fromDTO + * @author yinzuomei + * @description + * @Date 2021/5/27 17:28 + **/ @PostMapping("extractgridgoverndaily") - public Result extractFactGridGovernDaily(@RequestParam("customerId") String customerId,@RequestParam("dateId")String dateId){ - factGridGovernDailyService.extractFactGridGovernDaily(customerId,dateId); + public Result extractFactGridGovernDaily(@RequestBody ExtractFactGridGovernDailyFromDTO fromDTO){ + factGridGovernDailyService.extractFactGridGovernDaily(fromDTO); return new Result(); } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactGridGovernDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactGridGovernDailyService.java index 95185f2134..15447342ab 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactGridGovernDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactGridGovernDailyService.java @@ -18,6 +18,7 @@ package com.epmet.service.evaluationindex.extract.todata; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.dto.extract.form.ExtractFactGridGovernDailyFromDTO; import com.epmet.entity.evaluationindex.extract.FactGridGovernDailyEntity; /** @@ -35,10 +36,9 @@ public interface FactGridGovernDailyService extends BaseService Date: Fri, 28 May 2021 13:50:43 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B2=BB=E7=90=86=E6=8C=87=E6=95=B0bug?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataaggre/service/datastats/impl/DataStatsServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index c636d2fe11..25aa4c60c5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -1224,6 +1224,9 @@ public class DataStatsServiceImpl implements DataStatsService { dto.setProblemResolvedCount(re.getProblemResolvedCount()); dto.setGroupSelfGovernRatio(re.getGroupSelfGovernRatio()); dto.setGridSelfGovernRatio(re.getGridSelfGovernRatio()); + dto.setCommunityResolvedRatio(re.getCommunityResolvedRatio()); + dto.setDistrictDeptResolvedRatio(re.getDistrictDeptResolvedRatio()); + dto.setStreetResolvedRatio(re.getStreetResolvedRatio()); } } resultList.add(dto);