Browse Source

screenProjectOrgDaily

dev_shibei_match
zxc 5 years ago
parent
commit
cca5e752ab
  1. 4
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/PingYinConstants.java
  2. 54
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java
  3. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java
  4. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
  5. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java
  6. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java
  7. 9
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectOrgDailyService.java
  8. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectGridDailyServiceImpl.java
  9. 94
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java
  10. 10
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityGridMonthlyServiceImpl.java
  11. 14
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml
  12. 18
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml

4
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/PingYinConstants.java

@ -7,6 +7,8 @@ package com.epmet.constant;
public interface PingYinConstants {
String GRID_INFO_IS_ZERO = "客户【%s】下的网格信息为空......";
String AGENCY_INFO_IS_ZERO = "客户【%s】下的组织信息为空......";
String SELECT_GRID_INFO_BY_ORG_IS_NULL = "客户【%s】根据orgId查询网格项目信息为空......";
String EVALUATE_BAD = "bad";
String EVALUATE_GOOD = "good";
@ -15,4 +17,6 @@ public interface PingYinConstants {
String UN_CLOSED = "unClosed";
String CLOSED = "closed";
String CREATED_BY = "APP_USER";
}

54
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java

@ -0,0 +1,54 @@
package com.epmet.dto.pingyin.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/2/1 下午3:34
*/
@Data
public class ProjectOrgDailyResultDTO implements Serializable {
private static final long serialVersionUID = -6838351691873050562L;
/**
* 行政区域编码
*/
private String areaCode;
/**
* 项目总数
*/
private Integer projectTotal;
/**
* 已解决的项目总数
*/
private Integer resolvedNum;
/**
* 参与满意度评价的总次数
*/
private Integer evaluateTotal;
/**
* 满意+非常满意的总次数
*/
private Integer goodTotal;
/**
* 不满意总次数
*/
private Integer badTotal;
public ProjectOrgDailyResultDTO() {
this.projectTotal = NumConstant.ZERO;
this.resolvedNum = NumConstant.ZERO;
this.evaluateTotal = NumConstant.ZERO;
this.goodTotal = NumConstant.ZERO;
this.badTotal = NumConstant.ZERO;
}
}

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java

@ -139,4 +139,9 @@ public class ScreenProjectOrgDailyDTO implements Serializable {
*/
private Date updatedTime;
/**
* 行政区域编码
*/
private String areaCode;
}

10
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java

@ -37,6 +37,7 @@ import com.epmet.service.evaluationindex.extract.todata.FactOriginTopicMainDaily
import com.epmet.service.evaluationindex.extract.toscreen.*;
import com.epmet.service.evaluationindex.indexcal.*;
import com.epmet.service.evaluationindex.screen.ScreenProjectGridDailyService;
import com.epmet.service.evaluationindex.screen.ScreenProjectOrgDailyService;
import com.epmet.service.evaluationindex.screen.ScreenProjectQuantityGridMonthlyService;
import com.epmet.service.stats.DimAgencyService;
import com.epmet.service.stats.DimCustomerPartymemberService;
@ -752,6 +753,9 @@ public class DemoController {
@Autowired
private ScreenProjectQuantityGridMonthlyService screenProjectQuantityGridMonthlyService;
@Autowired
private ScreenProjectOrgDailyService screenProjectOrgDailyService;
@PostMapping("screenProjectGridDaily")
public Result screenProjectGridDaily(@RequestParam("customerId")String customerId,@RequestParam("dateId")String dateId){
screenProjectGridDailyService.extractionProjectGridDaily(customerId,dateId);
@ -763,4 +767,10 @@ public class DemoController {
screenProjectQuantityGridMonthlyService.extractionProjectGridMonthly(customerId,monthId);
return new Result();
}
@PostMapping("screenProjectOrgDaily")
public Result screenProjectOrgDaily(@RequestParam("customerId")String customerId,@RequestParam("dateId")String dateId){
screenProjectOrgDailyService.extractionProjectOrgDaily(customerId, dateId);
return new Result();
}
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java

@ -24,6 +24,7 @@ import com.epmet.dto.extract.form.ScreenPartyLinkMassesDataFormDTO;
import com.epmet.dto.extract.result.CustomerAgencyInfoResultDTO;
import com.epmet.dto.extract.result.OrgNameResultDTO;
import com.epmet.dto.indexcollect.form.CustomerBizOrgFormDTO;
import com.epmet.dto.screen.ScreenProjectOrgDailyDTO;
import com.epmet.dto.screen.result.TreeResultDTO;
import com.epmet.dto.screencoll.form.CustomerAgencyFormDTO;
import com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity;
@ -183,4 +184,12 @@ public interface ScreenCustomerAgencyDao extends BaseDao<ScreenCustomerAgencyEnt
List<OrgNameResultDTO> selectOrgNameAgency(@Param("agencyIds") List<String> agencyIds);
Boolean initBizOrg(CustomerBizOrgFormDTO formDTO);
/**
* @Description 根据客户ID查询组织信息
* @Param customerId
* @author zxc
* @date 2021/2/1 下午2:03
*/
List<ScreenProjectOrgDailyDTO> selectAgencyByCustomer(@Param("customerId")String customerId);
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java

@ -18,6 +18,7 @@
package com.epmet.dao.evaluationindex.screen;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.pingyin.result.ProjectOrgDailyResultDTO;
import com.epmet.dto.screen.ScreenProjectOrgDailyDTO;
import com.epmet.entity.evaluationindex.screen.ScreenProjectOrgDailyEntity;
import org.apache.ibatis.annotations.Mapper;
@ -39,5 +40,11 @@ public interface ScreenProjectOrgDailyDao extends BaseDao<ScreenProjectOrgDailyE
int deleteByDateIdAndCustomerId(@Param("customerId") String customerId, @Param("dateId") String dateId);
/**
* @Description 项目(事件)分析按组织_按天统计
* @Param agencyInfos
* @author zxc
* @date 2021/2/1 下午3:51
*/
List<ProjectOrgDailyResultDTO> selectOrgProject(@Param("agencyInfos") List<ScreenProjectOrgDailyDTO> agencyInfos, @Param("dateId") String dateId);
}

9
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectOrgDailyService.java

@ -103,4 +103,13 @@ public interface ScreenProjectOrgDailyService extends BaseService<ScreenProjectO
* @date 2021.01.28 09:33
*/
void collect(String customerId, ScreenCollFormDTO<ScreenProjectOrgDailyDTO> data);
/**
* @Description 数据抽取机关-
* @Param customerId
* @Param dateId
* @author zxc
* @date 2021/2/1 下午1:32
*/
void extractionProjectOrgDaily(String customerId, String dateId);
}

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

@ -249,10 +249,12 @@ public class ScreenProjectGridDailyServiceImpl extends BaseServiceImpl<ScreenPro
*/
@Transactional(rollbackFor = Exception.class)
public void insertScreenProjectGridDaily(List<ScreenProjectGridDailyDTO> list){
List<List<ScreenProjectGridDailyDTO>> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertScreenProjectGridDaily(p);
});
if (!CollectionUtils.isEmpty(list)){
List<List<ScreenProjectGridDailyDTO>> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertScreenProjectGridDaily(p);
});
}
}
/**

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

@ -22,18 +22,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.DataSourceConstant;
import com.epmet.constant.PingYinConstants;
import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao;
import com.epmet.dao.evaluationindex.screen.ScreenProjectOrgDailyDao;
import com.epmet.dto.pingyin.result.ProjectOrgDailyResultDTO;
import com.epmet.dto.screen.ScreenProjectOrgDailyDTO;
import com.epmet.dto.screencoll.ScreenCollFormDTO;
import com.epmet.entity.evaluationindex.screen.ScreenProjectOrgDailyEntity;
import com.epmet.service.evaluationindex.screen.ScreenProjectOrgDailyService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -45,8 +55,12 @@ import java.util.Map;
* @since v1.0.0 2021-01-27
*/
@Service
@Slf4j
@DataSource(DataSourceConstant.EVALUATION_INDEX)
public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProjectOrgDailyDao, ScreenProjectOrgDailyEntity> implements ScreenProjectOrgDailyService {
@Autowired
private ScreenCustomerAgencyDao agencyDao;
@Override
public PageData<ScreenProjectOrgDailyDTO> page(Map<String, Object> params) {
@ -122,4 +136,84 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl<ScreenProj
baseDao.insertBatch(data.getDataList(),customerId,"APP_USER",data.getDateId());
}
/**
* @Description 数据抽取机关-
* @Param customerId
* @Param dateId
* @author zxc
* @date 2021/2/1 下午1:32
*/
@Override
public void extractionProjectOrgDaily(String customerId, String dateId) {
List<ScreenProjectOrgDailyDTO> agencyInfos = agencyDao.selectAgencyByCustomer(customerId);
if (CollectionUtils.isEmpty(agencyInfos)){
throw new RenException(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId));
}
List<ProjectOrgDailyResultDTO> projectOrgDaily = baseDao.selectOrgProject(agencyInfos, dateId);
if (CollectionUtils.isEmpty(projectOrgDaily)){
log.info(String.format(PingYinConstants.SELECT_GRID_INFO_BY_ORG_IS_NULL,customerId));
return;
}
projectOrgDaily.forEach(p -> {
p.setBadTotal(null == p.getBadTotal() ? NumConstant.ZERO : p.getBadTotal());
p.setEvaluateTotal(null == p.getEvaluateTotal() ? NumConstant.ZERO : p.getEvaluateTotal());
p.setGoodTotal(null == p.getGoodTotal() ? NumConstant.ZERO : p.getGoodTotal());
p.setProjectTotal(null == p.getProjectTotal() ? NumConstant.ZERO : p.getProjectTotal());
p.setResolvedNum(null == p.getResolvedNum() ? NumConstant.ZERO : p.getResolvedNum());
});
log.info(projectOrgDaily.toString());
agencyInfos.forEach(a -> {
a.setDateId(dateId);
projectOrgDaily.forEach(p -> {
if (a.getAreaCode().equals(p.getAreaCode())){
a.setResolvedRatio(getRatio(p.getResolvedNum(),p.getProjectTotal()));
a.setBadRatio(getRatio(p.getBadTotal(),p.getEvaluateTotal()));
a.setGoodRatio(getRatio(p.getGoodTotal(),p.getEvaluateTotal()));
a.setBadTotal(p.getBadTotal());
a.setEvaluateTotal(p.getEvaluateTotal());
a.setGoodTotal(p.getGoodTotal());
a.setProjectTotal(p.getProjectTotal());
a.setResolvedNum(p.getResolvedNum());
}
});
});
log.info(agencyInfos.toString());
del(customerId, dateId);
insert(agencyInfos,customerId,dateId);
}
/**
* @Description
* @Param a
* @Param b 分母
* @author zxc
* @date 2021/1/29 上午10:10
*/
public BigDecimal getRatio(Integer a , Integer b){
if (b == NumConstant.ZERO){
return new BigDecimal(NumConstant.ZERO);
}
BigDecimal bigDecimalA = new BigDecimal(a);
BigDecimal bigDecimalB = new BigDecimal(b);
BigDecimal divide = bigDecimalA.divide(bigDecimalB, NumConstant.FOUR, BigDecimal.ROUND_HALF_UP);
return divide;
}
@Transactional(rollbackFor = Exception.class)
public void insert(List<ScreenProjectOrgDailyDTO> agencyInfos,String customerId,String dateId){
if (!CollectionUtils.isEmpty(agencyInfos)){
List<List<ScreenProjectOrgDailyDTO>> partition = ListUtils.partition(agencyInfos, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertBatch(p,customerId,PingYinConstants.CREATED_BY,dateId);
});
}
}
@Transactional(rollbackFor = Exception.class)
public void del(String customerId,String dateId){
Integer flag;
do {
flag = baseDao.deleteByDateIdAndCustomerId(customerId, dateId);
}while (flag > NumConstant.ZERO && flag == NumConstant.ONE_THOUSAND);
}
}

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

@ -239,10 +239,12 @@ public class ScreenProjectQuantityGridMonthlyServiceImpl extends BaseServiceImpl
*/
@Transactional(rollbackFor = Exception.class)
public void insert(List<ScreenProjectQuantityGridMonthlyDTO> list,String customerId,String monthId){
List<List<ScreenProjectQuantityGridMonthlyDTO>> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertBatch(p,customerId,"APP_USER",monthId);
});
if (!CollectionUtils.isEmpty(list)){
List<List<ScreenProjectQuantityGridMonthlyDTO>> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED);
partition.forEach(p -> {
baseDao.insertBatch(p,customerId,PingYinConstants.CREATED_BY,monthId);
});
}
}
}

14
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml

@ -361,4 +361,18 @@
del_flag = '0'
AND CUSTOMER_ID = #{customerId}
</select>
<!-- 根据客户ID查询组织信息 -->
<select id="selectAgencyByCustomer" resultType="com.epmet.dto.screen.ScreenProjectOrgDailyDTO">
SELECT
CUSTOMER_ID,
AGENCY_ID AS orgId,
PID,
PIDS,
`LEVEL` AS orgType,
AREA_CODE
FROM screen_customer_agency
WHERE DEL_FLAG = 0
AND CUSTOMER_ID = #{customerId}
</select>
</mapper>

18
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml

@ -107,5 +107,23 @@
limit 1000
</delete>
<!-- 项目(事件)分析按组织_按天统计 -->
<select id="selectOrgProject" resultType="com.epmet.dto.pingyin.result.ProjectOrgDailyResultDTO">
<foreach collection="agencyInfos" item="a" separator=" UNION ">
SELECT
#{a.areaCode} AS areaCode,
SUM(PROJECT_TOTAL) AS projectTotal,
SUM(RESOLVED_NUM) AS resolvedNum,
SUM(EVALUATE_TOTAL) AS evaluateTotal ,
SUM(GOOD_TOTAL) AS goodTotal,
SUM(BAD_TOTAL) AS badTotal
FROM screen_project_grid_daily g
LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID
WHERE g.DEL_FLAG = 0
AND cg.AREA_CODE LIKE CONCAT(#{a.areaCode},'%')
AND g.DATE_ID <![CDATA[ <= ]]> #{dateId}
</foreach>
</select>
</mapper>
Loading…
Cancel
Save