Browse Source

事件分析 org-月 统计

dev_shibei_match
zxc 5 years ago
parent
commit
d6b180806f
  1. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java
  2. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java
  3. 2
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java
  4. 28
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java
  5. 28
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java
  6. 49
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java
  7. 15
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java
  8. 98
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java
  9. 59
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java

@ -16,4 +16,6 @@ public class ClosedIncrResultDTO implements Serializable {
private String gridId;
private Integer closedIncr;
private String orgId;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java

@ -16,4 +16,6 @@ public class ProjectIncrResultDTO implements Serializable {
private String gridId;
private Integer projectIncr;
private String orgId;
}

2
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java

@ -16,4 +16,6 @@ public class UnClosedTotalResultDTO implements Serializable {
private String gridId;
private Integer projectCount;
private String orgId;
}

28
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java

@ -286,6 +286,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ProjectIncrResultDTO> selectProjectIncr(@Param("customerId")String customerId, @Param("monthId")String monthId);
/**
* @Description 组织查询本月新增项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:21
*/
List<ProjectIncrResultDTO> selectProjectIncrByOrg(@Param("orgIds") List<String> orgIds, @Param("monthId")String monthId);
/**
* @Description 根据状态查询项目数
* @Param customerId
@ -296,6 +305,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<UnClosedTotalResultDTO> selectProjectCount(@Param("customerId")String customerId, @Param("monthId")String monthId, @Param("status") String status);
/**
* @Description 组织根据状态查询项目数
* @Param orgIds
* @Param monthId
* @Param status
* @author zxc
* @date 2021/4/16 上午9:26
*/
List<UnClosedTotalResultDTO> selectProjectCountByOrg(@Param("orgIds") List<String> orgIds, @Param("monthId")String monthId, @Param("status") String status);
/**
* @Description 本月新增结案项目数
* @Param customerId
@ -305,6 +324,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao<FactOriginProject
*/
List<ClosedIncrResultDTO> selectClosedIncr(@Param("customerId")String customerId, @Param("monthId")String monthId);
/**
* @Description 组织本月新增结案项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:35
*/
List<ClosedIncrResultDTO> selectClosedIncrByOrg(@Param("orgIds") List<String> orgIds, @Param("monthId")String monthId);
/**
* @Description 初始化screen_project_data数据
* 如果是dateId不为空则查询前一天的数据

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

@ -271,6 +271,15 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<ProjectIncrResultDTO> selectProjectIncr(String customerId, String monthId);
/**
* @Description 组织查询本月新增项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:19
*/
List<ProjectIncrResultDTO> selectProjectIncrByOrg(List<String> orgIds, String monthId);
/**
* @Description 根据状态查询项目数
* @Param customerId
@ -281,6 +290,16 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<UnClosedTotalResultDTO> selectProjectCount(String customerId, String monthId, String status);
/**
* @Description 组织根据状态查询项目数
* @Param orgIds
* @Param monthId
* @Param status
* @author zxc
* @date 2021/4/16 上午9:24
*/
List<UnClosedTotalResultDTO> selectProjectCountByOrg(List<String> orgIds, String monthId, String status);
/**
* @Description 本月新增结案项目数
* @Param customerId
@ -290,6 +309,15 @@ public interface FactOriginProjectMainDailyService extends BaseService<FactOrigi
*/
List<ClosedIncrResultDTO> selectClosedIncr(String customerId, String monthId);
/**
* @Description 组织本月新增结案项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:33
*/
List<ClosedIncrResultDTO> selectClosedIncrByOrg(List<String> orgIds, String monthId);
/**
* @Description 初始化screen_project_data数据
* 如果是dateId不为空则查询前一天的数据

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

@ -329,6 +329,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织查询本月新增项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:19
*/
@Override
public List<ProjectIncrResultDTO> selectProjectIncrByOrg(List<String> orgIds, String monthId) {
if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){
List<ProjectIncrResultDTO> projectIncrResultDTOS = baseDao.selectProjectIncrByOrg(orgIds, monthId);
return projectIncrResultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 根据状态查询项目数
* @Param customerId
@ -346,6 +362,23 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织根据状态查询项目数
* @Param orgIds
* @Param monthId
* @Param status
* @author zxc
* @date 2021/4/16 上午9:24
*/
@Override
public List<UnClosedTotalResultDTO> selectProjectCountByOrg(List<String> orgIds, String monthId, String status) {
if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){
List<UnClosedTotalResultDTO> resultDTOS = baseDao.selectProjectCountByOrg(orgIds, monthId, status);
return resultDTOS;
}
return new ArrayList<>();
}
/**
* @Description 本月新增结案项目数
* @Param customerId
@ -362,6 +395,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl<FactO
return new ArrayList<>();
}
/**
* @Description 组织本月新增结案项目数
* @Param orgIds
* @Param monthId
* @author zxc
* @date 2021/4/16 上午9:33
*/
@Override
public List<ClosedIncrResultDTO> selectClosedIncrByOrg(List<String> orgIds, String monthId) {
if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){
List<ClosedIncrResultDTO> result = baseDao.selectClosedIncrByOrg(orgIds, monthId);
return result;
}
return new ArrayList<>();
}
/**
* @Description 初始化screen_project_data数据
* 如果是dateId不为空则查询前一天的数据

15
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java

@ -225,6 +225,13 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
insert(agencyInfos,customerId,dateId);
}
/**
* @Description 有子客户处理
* @Param customerId
* @Param dateId
* @author zxc
* @date 2021/4/16 上午9:15
*/
public void extractionProjectOrgDailyMoreCustomer(String customerId, String dateId){
CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId);
List<ScreenProjectOrgDailyDTO> agencyInfos = agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode());
@ -253,6 +260,7 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
}
});
});
// 父子客户只需处理父客户数据,暂时不管子客户
List<ScreenProjectOrgDailyDTO> parentAgencyInfos = agencyDao.selectAgencyByCustomer(customerId);
List<ScreenProjectOrgDailyDTO> createProjects = disposeCreateProject(parentAgencyInfos, dateId);
agencyInfos.forEach(a -> {
@ -274,6 +282,13 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
insert(agencyInfos,customerId,dateId);
}
/**
* @Description 组织直接立项处理
* @Param agencyInfos
* @Param dateId
* @author zxc
* @date 2021/4/16 上午9:15
*/
public List<ScreenProjectOrgDailyDTO> disposeCreateProject(List<ScreenProjectOrgDailyDTO> agencyInfos,String dateId){
List<String> orgIds = agencyInfos.stream().map(m -> m.getOrgId()).collect(Collectors.toList());
List<ProjectTotalResultDTO> projectTotal = projectMainDailyService.selectProjectTotalByOrg(orgIds, dateId, null);

98
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java

@ -29,13 +29,14 @@ import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.PingYinConstants;
import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao;
import com.epmet.dao.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyDao;
import com.epmet.dto.pingyin.result.ProjectOrgMonthlyResultDTO;
import com.epmet.dto.pingyin.result.*;
import com.epmet.dto.screen.ScreenProjectOrgDailyDTO;
import com.epmet.dto.screen.ScreenProjectQuantityOrgMonthlyDTO;
import com.epmet.dto.screencoll.ScreenCollFormDTO;
import com.epmet.entity.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyEntity;
import com.epmet.entity.org.CustomerAgencyEntity;
import com.epmet.service.crm.CustomerRelationService;
import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService;
import com.epmet.service.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyService;
import com.epmet.service.org.CustomerAgencyService;
import com.google.common.collect.Lists;
@ -51,6 +52,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 项目(事件)数量分析按组织_按月统计
@ -69,6 +71,9 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
private CustomerRelationService customerRelationService;
@Autowired
private CustomerAgencyService customerAgencyService;
@Autowired
private FactOriginProjectMainDailyService projectMainDailyService;
@Override
public PageData<ScreenProjectQuantityOrgMonthlyDTO> page(Map<String, Object> params) {
IPage<ScreenProjectQuantityOrgMonthlyEntity> page = baseDao.selectPage(
@ -213,6 +218,19 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
});
}
});
// 直接立项处理
List<ScreenProjectQuantityOrgMonthlyDTO> agencyCreateProject = agencyCreateProject(agencyInfos, monthId);
agencyInfos.forEach(a -> {
agencyCreateProject.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectIncr(a.getProjectIncr() + p.getProjectIncr());
a.setProjectTotal(a.getProjectTotal() + p.getProjectTotal());
a.setUnClosedTotal(a.getUnClosedTotal() + p.getUnClosedTotal());
a.setClosedTotal(a.getClosedTotal() + p.getClosedTotal());
a.setClosedIncr(a.getClosedIncr() + p.getClosedIncr());
}
});
});
log.info(agencyInfos.toString());
del(customerId, monthId);
insert(agencyInfos,customerId,monthId);
@ -271,11 +289,89 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl<
});
}
});
List<ScreenProjectOrgDailyDTO> parentAgency = agencyDao.selectAgencyByCustomer(customerId);
List<ScreenProjectQuantityOrgMonthlyDTO> parentAgencyInfos = ConvertUtils.sourceToTarget(parentAgency, ScreenProjectQuantityOrgMonthlyDTO.class);
List<ScreenProjectQuantityOrgMonthlyDTO> agencyCreateProject = agencyCreateProject(parentAgencyInfos, monthId);
agencyInfos.forEach(a -> {
agencyCreateProject.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectIncr(a.getProjectIncr() + p.getProjectIncr());
a.setProjectTotal(a.getProjectTotal() + p.getProjectTotal());
a.setUnClosedTotal(a.getUnClosedTotal() + p.getUnClosedTotal());
a.setClosedTotal(a.getClosedTotal() + p.getClosedTotal());
a.setClosedIncr(a.getClosedIncr() + p.getClosedIncr());
}
});
});
log.info(agencyInfos.toString());
del(customerId, monthId);
insert(agencyInfos,customerId,monthId);
}
/**
* @Description 组织直接立项处理
* @Param agencyInfos
* @Param monthId
* @author zxc
* @date 2021/4/16 上午10:03
*/
public List<ScreenProjectQuantityOrgMonthlyDTO> agencyCreateProject(List<ScreenProjectQuantityOrgMonthlyDTO> agencyInfos, String monthId){
List<String> orgIds = agencyInfos.stream().map(m -> m.getOrgId()).collect(Collectors.toList());
// 本月新增的项目数量 转项目日期在当前月份内
List<ProjectIncrResultDTO> projectIncr = projectMainDailyService.selectProjectIncrByOrg(orgIds, monthId);
// 截止到当前月份:累计项目总数
List<ProjectTotalResultDTO> projectTotal = projectMainDailyService.selectProjectTotalByOrg(orgIds, null, monthId);
// 截止到当前月份:累计未结项目总数
List<UnClosedTotalResultDTO> projectUnClosed = projectMainDailyService.selectProjectCountByOrg(orgIds, monthId, PingYinConstants.UN_CLOSED);
// 截止到当前月份:累计已结项目
List<UnClosedTotalResultDTO> projectClosed = projectMainDailyService.selectProjectCountByOrg(orgIds, monthId, PingYinConstants.CLOSED);
// 本月新增结案项目数
List<ClosedIncrResultDTO> closedIncr = projectMainDailyService.selectClosedIncrByOrg(orgIds, monthId);
agencyInfos.forEach(a -> {
a.setMonthId(monthId);
if (!CollectionUtils.isEmpty(projectIncr)){
projectIncr.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectIncr(p.getProjectIncr());
}
});
}
// 截止到当前月份:累计项目总数
if (!CollectionUtils.isEmpty(projectTotal)){
projectTotal.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setProjectTotal(p.getProjectTotal());
}
});
}
// 截止到当前月份:累计未结项目总数
if (!CollectionUtils.isEmpty(projectUnClosed)){
projectUnClosed.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setUnClosedTotal(p.getProjectCount());
}
});
}
// 截止到当前月份:累计已结项目
if (!CollectionUtils.isEmpty(projectClosed)){
projectClosed.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setClosedTotal(p.getProjectCount());
}
});
}
// 本月新增结案项目数
if (!CollectionUtils.isEmpty(closedIncr)){
closedIncr.forEach(p -> {
if (a.getOrgId().equals(p.getOrgId())){
a.setClosedIncr(p.getClosedIncr());
}
});
}
});
return agencyInfos;
}
@Transactional(rollbackFor = Exception.class)
public void del(String customerId,String monthId){
Integer flag;

59
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml

@ -671,4 +671,63 @@
GROUP BY ORG_ID
</select>
<!-- 组织查询本月新增项目数 -->
<select id="selectProjectIncrByOrg" resultType="com.epmet.dto.pingyin.result.ProjectIncrResultDTO">
SELECT
AGENCY_ID AS orgId,
COUNT(ID) AS projectIncr
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
AND MONTH_ID = #{monthId}
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
<!-- 组织根据状态查询项目数 -->
<select id="selectProjectCountByOrg" resultType="com.epmet.dto.pingyin.result.UnClosedTotalResultDTO">
SELECT
AGENCY_ID AS orgId,
COUNT(ID) AS projectCount
FROM fact_origin_project_main_daily
WHERE DEL_FLAG = 0
AND MONTH_ID <![CDATA[ <= ]]> #{monthId}
AND GRID_ID = ''
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
<if test="status == 'unClosed' ">
AND PROJECT_STATUS != 'closed'
</if>
<if test="status == 'closed' ">
AND PROJECT_STATUS = 'closed'
</if>
GROUP BY AGENCY_ID
</select>
<!-- 组织本月新增结案项目数 -->
<select id="selectClosedIncrByOrg" resultType="com.epmet.dto.pingyin.result.ClosedIncrResultDTO">
SELECT
AGENCY_ID,
COUNT( ID ) AS closedIncr
FROM fact_origin_project_main_daily
WHERE
DEL_FLAG = '0'
AND (
<foreach collection="orgIds" item="orgId" separator=" OR ">
AGENCY_ID = #{orgId}
</foreach>
)
AND MONTH_ID = #{monthId}
AND PROJECT_STATUS = 'closed'
AND GRID_ID = ''
GROUP BY AGENCY_ID
</select>
</mapper>

Loading…
Cancel
Save