From d5d54899068f31f5fa6fe4b298abc5067985a02c Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Fri, 25 Sep 2020 15:41:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=94=B9=E7=89=88-=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=87=AA=E6=B5=8B=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/dto/form/IndexScoreFormDTO.java | 34 ++++++++++++ .../dto/result/IndexScoreResultDTO.java | 55 +++++++++++++++++++ .../controller/screen/IndexController.java | 14 +++++ .../screen/ScreenIndexDataMonthlyDao.java | 12 ++-- .../evaluationindex/screen/IndexService.java | 7 +++ .../screen/impl/IndexServiceImpl.java | 32 +++++++++++ .../screen/ScreenIndexDataMonthlyDao.xml | 19 +++++++ .../screen/ScreenPartyUserRankDataDao.xml | 12 ++-- 8 files changed, 175 insertions(+), 10 deletions(-) create mode 100644 epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java create mode 100644 epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/IndexScoreResultDTO.java diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java new file mode 100644 index 0000000000..70a7b6d36b --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.evaluationindex.screen.dto.form; + + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 组织月度指数得分--接口入参 + * @Author sun + */ +@Data +public class IndexScoreFormDTO implements Serializable { + private static final long serialVersionUID = -2880432640584616651L; + /** + * 组织或网格Id + */ + @NotBlank(message = "组织或网格ID不能为空",groups = {IndexScoreFormDTO.AddUserInternalGroup.class}) + private String orgId; + /** + * 类型(组织:agency 网格:grid) + */ + @NotBlank(message = "数据类型不能为空",groups = {IndexScoreFormDTO.AddUserInternalGroup.class}) + private String orgType; + /** + * 月份Id eg:202009 + */ + @NotBlank(message = "月份Id不能为空",groups = {IndexScoreFormDTO.AddUserInternalGroup.class}) + private String monthId; + public interface AddUserInternalGroup {} + +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/IndexScoreResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/IndexScoreResultDTO.java new file mode 100644 index 0000000000..33ffff9c5d --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/IndexScoreResultDTO.java @@ -0,0 +1,55 @@ +package com.epmet.evaluationindex.screen.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 组织月度指数得分--接口返参 + * @Author sun + */ +@Data +public class IndexScoreResultDTO implements Serializable { + + private static final long serialVersionUID = 3860268744336541373L; + + /** + * 年度平均指数(保留一位小数) + */ + @JsonIgnore + private String total; + private BigDecimal totalScore; + /** + * 党建能力(保留一位小数) + */ + @JsonIgnore + private String party; + private BigDecimal partyDevAbility; + /** + * 党建能力权重(保留一位小数) + */ + private String partyDevAbilityWeight; + /** + * 治理能力(保留一位小数) + */ + @JsonIgnore + private String govern; + private BigDecimal governAbility; + /** + * 治理能力权重(保留一位小数) + */ + private String governAbilityWeight; + /** + * 服务能力(保留一位小数) + */ + @JsonIgnore + private String service; + private BigDecimal serviceAbility; + /** + * 服务能力权重(保留一位小数) + */ + private String serviceAbilityWeight; + +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java index d3ece6a658..98e2207514 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java @@ -1,5 +1,7 @@ package com.epmet.datareport.controller.screen; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.datareport.eum.OrgTypeEnum; @@ -100,4 +102,16 @@ public class IndexController { return new Result>().ok(indexService.selectIndexRankByOrgType(formDTO)); } + /** + * @param tokenDTO + * @Description 组织月度指数得分 + * @author sun + */ + @PostMapping("month/indexscore") + public Result indexScore(@LoginUser TokenDto tokenDTO, @RequestBody IndexScoreFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, IndexScoreFormDTO.AddUserInternalGroup.class); + return new Result().ok(indexService.indexScore(formDTO)); + } + + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java index 9025780837..c042885cc6 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenIndexDataMonthlyDao.java @@ -17,10 +17,7 @@ package com.epmet.datareport.dao.evaluationindex.screen; -import com.epmet.evaluationindex.screen.dto.form.GridIndexRankFormDTO; -import com.epmet.evaluationindex.screen.dto.form.PeerComparisonFormDTO; -import com.epmet.evaluationindex.screen.dto.form.SubAgencyIndexRankFormDTO; -import com.epmet.evaluationindex.screen.dto.form.SubAgencyIndexRankYMFormDTO; +import com.epmet.evaluationindex.screen.dto.form.*; import com.epmet.evaluationindex.screen.dto.result.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -84,4 +81,11 @@ public interface ScreenIndexDataMonthlyDao{ * @author sun */ List selectScoreList(PeerComparisonFormDTO formDTO); + + /** + * @param formDTO + * @Description 根据组织或网格Id以及月份Id查询各项月度指数得分 + * @author sun + */ + IndexScoreResultDTO selectMonthData(IndexScoreFormDTO formDTO); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java index 21b6bd2554..a577e666a6 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/IndexService.java @@ -62,4 +62,11 @@ public interface IndexService { * @return */ List selectIndexRankByOrgType(GridIndexRankFormDTO formDTO); + + /** + * @param formDTO + * @Description 组织月度指数得分 + * @author sun + */ + IndexScoreResultDTO indexScore(IndexScoreFormDTO formDTO); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java index 087034645d..93276c8725 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; +import java.text.NumberFormat; import java.time.LocalDate; import java.util.ArrayList; import java.util.Comparator; @@ -258,4 +259,35 @@ public class IndexServiceImpl implements IndexService { BigDecimal b = bigDecimal.setScale(NumConstant.ONE, BigDecimal.ROUND_HALF_UP); return Double.valueOf(b.toString()); } + + /** + * @param formDTO + * @Description 组织月度指数得分 + * @author sun + */ + @Override + public IndexScoreResultDTO indexScore(IndexScoreFormDTO formDTO) { + //screen_index_data_monthly 根据组织id和月份获取月度指标得分 + //1.根据组织或网格Id以及月份Id查询各项月度指数得分 + IndexScoreResultDTO resultDTO = screenIndexDataMonthlyDao.selectMonthData(formDTO); + + //2.将数据改成正确格式 四舍五入保留一位小数 权重转成百分比 + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMaximumFractionDigits(1); + + BigDecimal num = new BigDecimal(resultDTO.getTotal()).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); + resultDTO.setTotalScore(num); + BigDecimal num1 = new BigDecimal(resultDTO.getParty()).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); + resultDTO.setPartyDevAbility(num1); + resultDTO.setPartyDevAbilityWeight(nf.format(Double.parseDouble(resultDTO.getPartyDevAbilityWeight()))); + BigDecimal num2 = new BigDecimal(resultDTO.getGovern()).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); + resultDTO.setGovernAbility(num2); + resultDTO.setGovernAbilityWeight(nf.format(Double.parseDouble(resultDTO.getGovernAbilityWeight()))); + BigDecimal num3 = new BigDecimal(resultDTO.getService()).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); + resultDTO.setServiceAbility(num3); + resultDTO.setServiceAbilityWeight(nf.format(Double.parseDouble(resultDTO.getServiceAbilityWeight()))); + + return resultDTO; + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml index f84ce8c28d..3f7bec2b57 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenIndexDataMonthlyDao.xml @@ -165,4 +165,23 @@ LIMIT #{pageSize} + + + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml index ff0ccf9630..b1c3cccd70 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPartyUserRankDataDao.xml @@ -58,11 +58,11 @@ screen_party_user_rank_data WHERE del_flag = '0' - - + + AND org_id = #{orgId} - + AND grid_id = #{orgId} @@ -85,11 +85,11 @@ WHERE del_flag = '0' AND party_flag = '1' - - + + AND org_id = #{orgId} - + AND grid_id = #{orgId}