Browse Source

Merge branch 'dev'

dev
zhaoqifeng 3 years ago
parent
commit
5ba3c06d23
  1. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java
  2. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollCommunityServiceImpl.java
  3. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictServiceImpl.java
  4. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollStreetServiceImpl.java
  5. 2
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java
  6. 42
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java
  7. 49
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml
  8. 17
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java

@ -171,7 +171,7 @@ public interface FactOriginProjectLogDailyDao extends BaseDao<FactOriginProjectL
* @author wangc
* @date 2020.10.15 17:29
*/
List<ProjectParticipatedAgencyResultDTO> selectProjectIdHandledByAgency(@Param("customerId") String customerId, @Param("dimId") String dimId);
List<OrgStatisticsResultDTO> selectProjectIdHandledByAgency(@Param("customerId") String customerId, @Param("level") String level, @Param("dimId") String dimId);
/**
* @param projectIds

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollCommunityServiceImpl.java

@ -141,7 +141,7 @@ public class IndexCollCommunityServiceImpl implements IndexCollCommunityService
//办结率
Map<String, BigDecimal> handlingRatioMap = factOriginProjectLogDailyService.getHandlingRatio(agencies, customerId, dimId.getMonthId());
//处理效率
Map<String, BigDecimal> efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, dimId.getMonthId());
Map<String, BigDecimal> efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, OrgTypeConstant.COMMUNITY, dimId.getMonthId());
list.forEach(entity -> {
//办结数
entity.setClosedProjectCount(Optional.ofNullable(agencyHandleCount.get(entity.getAgencyId())).orElse(NumConstant.ZERO));

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollDistrictServiceImpl.java

@ -134,7 +134,7 @@ public class IndexCollDistrictServiceImpl implements IndexCollDistrictService {
//办结率
Map<String, BigDecimal> handlingRatioMap = factOriginProjectLogDailyService.getHandlingRatio(agencies, customerId, dimId.getMonthId());
//处理效率
Map<String, BigDecimal> efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, dimId.getMonthId());
Map<String, BigDecimal> efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, OrgTypeConstant.DISTRICT, dimId.getMonthId());
list.forEach(entity -> {
//办结数
entity.setClosedProjectCount(agencyHandleCount.get(entity.getAgencyId()) == null ? NumConstant.ZERO : agencyHandleCount.get(entity.getAgencyId()));

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/IndexCollStreetServiceImpl.java

@ -132,7 +132,7 @@ public class IndexCollStreetServiceImpl implements IndexCollStreetService {
//办结率
Map<String, BigDecimal> handlingRatioMap = factOriginProjectLogDailyService.getHandlingRatio(agencies, customerId, dimId.getMonthId());
//处理效率
Map<String, BigDecimal> efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, dimId.getMonthId());
Map<String, BigDecimal> efficiencyMap = factOriginProjectLogDailyService.getAgencyWorkPieceRatio(customerId, OrgTypeConstant.STREET, dimId.getMonthId());
list.forEach(entity -> {
//办结数
entity.setClosedProjectCount(agencyHandleCount.get(entity.getAgencyId()) == null ? NumConstant.ZERO : agencyHandleCount.get(entity.getAgencyId()));

2
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectLogDailyService.java

@ -195,7 +195,7 @@ public interface FactOriginProjectLogDailyService extends BaseService<FactOrigin
* @author wangc
* @date 2020.09.21 02:16
**/
Map<String, BigDecimal> getAgencyWorkPieceRatio(String customerId, String dimId);
Map<String, BigDecimal> getAgencyWorkPieceRatio(String customerId, String level, String dimId);
/**
* 网格项目响应度

42
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java

@ -230,50 +230,18 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl<FactOr
* @date 2020.09.21 02:16
**/
@Override
public Map<String, BigDecimal> getAgencyWorkPieceRatio(String customerId, String dimId) {
public Map<String, BigDecimal> getAgencyWorkPieceRatio(String customerId, String level, String dimId) {
//计算方法 : 评价周期内办结项目的平均处理时长的倒数
//1.评价周期内结案了的项目
List<ProjectParticipatedAgencyResultDTO> projectsHandledByAgency = baseDao.selectProjectIdHandledByAgency(customerId, dimId);
//评价周期内每个机关结案了的项目耗时和项目数
List<OrgStatisticsResultDTO> projectsHandledByAgency = baseDao.selectProjectIdHandledByAgency(customerId, level, dimId);
Map<String, BigDecimal> efficiencyMap = new HashMap<>();
List<String> projects = new LinkedList<>();
if (!CollectionUtils.isEmpty(projectsHandledByAgency)) {
Map<String, List<String>> agencyProjectsMap = new HashMap<>();
projectsHandledByAgency.forEach(o -> {
String agencyId = o.getAgencyId();
String projectId = o.getProjectId();
if(CollectionUtils.isEmpty(agencyProjectsMap.get(agencyId))){
List<String> projectUnit = new LinkedList<>();
projectUnit.add(projectId);
agencyProjectsMap.put(agencyId,projectUnit);
}else{
agencyProjectsMap.get(agencyId).add(projectId);
}
projects.add(projectId);
});
//2.结案项目的总耗时
List<ProjectParticipatedAgencyResultDTO> costTimes = baseDao.selectProjectCostTime(projects);
Map<String,Integer> projectCostTime = costTimes.stream().collect(Collectors.toMap(ProjectParticipatedAgencyResultDTO::getProjectId,ProjectParticipatedAgencyResultDTO::getCount));
agencyProjectsMap.forEach((k,v) -> {
//k -> agencyId v -> projects
int total = NumConstant.ZERO;
if(!CollectionUtils.isEmpty(v)){
for(String p : v){
Integer cost = projectCostTime.get(p);
total = total + (null == cost ? NumConstant.ZERO : cost);
}
//每个机关的项目平均耗时
BigDecimal avgCost = new BigDecimal(total).divide(new BigDecimal(v.size()),4, BigDecimal.ROUND_HALF_UP);
//efficiencyMap.put(k,BigDecimal.ONE.divide(avgCost,4, BigDecimal.ROUND_HALF_UP));
efficiencyMap.put(k, null == avgCost ? BigDecimal.ZERO : avgCost.setScale(6, BigDecimal.ROUND_HALF_UP));
}else{
efficiencyMap.put(k,BigDecimal.ZERO);
}
BigDecimal avgCost = new BigDecimal(o.getSum()).divide(new BigDecimal(o.getCount()),6, RoundingMode.HALF_UP);
efficiencyMap.put(agencyId, avgCost);
});
}

49
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml

@ -291,24 +291,45 @@
ORG_ID
</select>
<!-- 查询评价周期内各级别机关办结的项目Id -->
<select id="selectProjectIdHandledByAgency" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO">
<select id="selectProjectIdHandledByAgency" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
ID AS projectId,
SUBSTRING_INDEX(FINISH_ORG_IDS,':',1) AS agencyId
agencyId,
COUNT(projectId) AS count,
SUM(total) AS sum
FROM
fact_origin_project_main_daily
WHERE
DEL_FLAG = '0'
AND ID IN (
SELECT DISTINCT PROJECT_ID FROM fact_origin_project_log_daily
WHERE DEL_FLAG = '0' AND CUSTOMER_ID = #{customerId}
(
SELECT
a.ID AS projectId,
b.ID AS agencyId,
IF(
TIMESTAMPDIFF( DAY, DATE_FORMAT( a.DATE_ID, '%Y-%m-%d' ), DATE_FORMAT( c.DATE_ID, '%Y-%m-%d' ) ) = 0,
1,
TIMESTAMPDIFF( DAY, DATE_FORMAT( a.DATE_ID, '%Y-%m-%d' ), DATE_FORMAT( c.DATE_ID, '%Y-%m-%d' ) )
) * 8 * 60 AS total
FROM
fact_origin_project_main_daily a
INNER JOIN dim_agency b ON a.PIDS LIKE CONCAT( '%', b.ID, '%' )
AND b.AGENCY_DIM_TYPE = 'all'
AND b.DEL_FLAG = '0'
AND b.`LEVEL` = #{level}
INNER JOIN (
SELECT DISTINCT
DATE_ID,
PROJECT_ID
FROM fact_origin_project_log_daily
WHERE DEL_FLAG = '0'
AND ACTION_CODE = 'close'
<if test='null != dimId and "" != dimId'>
AND IS_ACTIVE = '1'
AND CUSTOMER_ID = #{customerId}
AND MONTH_ID = #{dimId}
</if>
)
ORDER BY agencyId
) c ON a.ID = c.PROJECT_ID
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
AND a.PROJECT_STATUS = 'closed'
) t
GROUP BY
agencyId
</select>
<!-- 计算每个办结项目的总耗时 -->
<select id="selectProjectCostTime" resultType="com.epmet.dto.extract.result.ProjectParticipatedAgencyResultDTO">

17
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectOrgPeriodDailyDao.xml

@ -51,24 +51,33 @@
<select id="selectResponsiveness" resultType="com.epmet.dto.extract.result.OrgStatisticsResultDTO">
SELECT
f.CUSTOMER_ID,
f.ORG_ID AS "agencyId",
<choose>
<when test='"dept" != orgType'>da.ID AS "agencyId",</when>
<otherwise>f.ORG_ID AS "agencyId",</otherwise>
</choose>
SUM( TIMESTAMPDIFF( MINUTE, ( DATE_FORMAT( f.INFORMED_DATE, '%Y-%m-%d %H:%i' )),
( DATE_FORMAT( f.PERIOD_TILL_REPLY_FIRSTLY, '%Y-%m-%d %H:%i' )) ) ) AS "sum",
COUNT(DISTINCT f.PROJECT_ID) AS "count"
FROM
fact_origin_project_org_period_daily f
INNER JOIN dim_agency da ON f.ORG_ID = da.ID
<if test='"dept" != orgType'>
INNER JOIN dim_agency da ON (f.PIDS LIKE CONCAT( '%', da.ID, '%' ) OR f.ORG_ID = da.ID)
AND da.`LEVEL` = #{level}
</if>
WHERE
f.ORG_TYPE = #{orgType}
f.DEL_FLAG = '0'
<if test='"dept" == orgType'>
AND f.ORG_TYPE = #{orgType}
</if>
AND DATE_FORMAT(INFORMED_DATE, '%Y%m') = #{monthId}
AND PERIOD_TILL_REPLY_FIRSTLY IS NOT NULL
AND f.CUSTOMER_ID = #{customerId}
GROUP BY
f.CUSTOMER_ID,
f.ORG_ID
<choose>
<when test='"dept" != orgType'>da.ID</when>
<otherwise>f.ORG_ID</otherwise>
</choose>
</select>
<!-- 批量插入 -->

Loading…
Cancel
Save