diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/PingYinConstants.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/PingYinConstants.java index 95b61d3af8..836e68c786 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/constant/PingYinConstants.java +++ b/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"; + } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectOrgDailyResultDTO.java new file mode 100644 index 0000000000..a19749c5e0 --- /dev/null +++ b/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; + } +} diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java index c7b3b6f426..7b449b50fe 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectOrgDailyDTO.java +++ b/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; + } \ No newline at end of file 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 3dc014ae20..9fe12afc58 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 @@ -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(); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java index c37d2abace..de96e0abd3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java +++ b/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 selectOrgNameAgency(@Param("agencyIds") List agencyIds); Boolean initBizOrg(CustomerBizOrgFormDTO formDTO); + + /** + * @Description 根据客户ID查询组织信息 + * @Param customerId + * @author zxc + * @date 2021/2/1 下午2:03 + */ + List selectAgencyByCustomer(@Param("customerId")String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java index 595c9d56c6..731347f2a6 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java +++ b/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 selectOrgProject(@Param("agencyInfos") List agencyInfos, @Param("dateId") String dateId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectOrgDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectOrgDailyService.java index 7deb14919f..587a6eef72 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenProjectOrgDailyService.java +++ b/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 data); + + /** + * @Description 数据抽取【机关-日】 + * @Param customerId + * @Param dateId + * @author zxc + * @date 2021/2/1 下午1:32 + */ + void extractionProjectOrgDaily(String customerId, String dateId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectGridDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectGridDailyServiceImpl.java index 64c3c2ef8a..68a566f849 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectGridDailyServiceImpl.java +++ b/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 list){ - List> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED); - partition.forEach(p -> { - baseDao.insertScreenProjectGridDaily(p); - }); + if (!CollectionUtils.isEmpty(list)){ + List> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + baseDao.insertScreenProjectGridDaily(p); + }); + } } /** diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java index 5795e7a74d..e59d6feef7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectOrgDailyServiceImpl.java +++ b/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 implements ScreenProjectOrgDailyService { + @Autowired + private ScreenCustomerAgencyDao agencyDao; @Override public PageData page(Map params) { @@ -122,4 +136,84 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl agencyInfos = agencyDao.selectAgencyByCustomer(customerId); + if (CollectionUtils.isEmpty(agencyInfos)){ + throw new RenException(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId)); + } + List 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 agencyInfos,String customerId,String dateId){ + if (!CollectionUtils.isEmpty(agencyInfos)){ + List> 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); + } } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityGridMonthlyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityGridMonthlyServiceImpl.java index 43114fc18f..a99419db97 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityGridMonthlyServiceImpl.java +++ b/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 list,String customerId,String monthId){ - List> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED); - partition.forEach(p -> { - baseDao.insertBatch(p,customerId,"APP_USER",monthId); - }); + if (!CollectionUtils.isEmpty(list)){ + List> partition = ListUtils.partition(list, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + baseDao.insertBatch(p,customerId,PingYinConstants.CREATED_BY,monthId); + }); + } } } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml index cbb54e049f..a7ae4c1113 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml +++ b/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} + + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml index 1bf92d587b..6bf6208ce0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectOrgDailyDao.xml @@ -107,5 +107,23 @@ limit 1000 + + + \ No newline at end of file