diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java new file mode 100644 index 0000000000..a6e5ecb9b3 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/AdvancedBranchRankFormDTO.java @@ -0,0 +1,31 @@ +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 AdvancedBranchRankFormDTO implements Serializable { + private static final long serialVersionUID = -8674763412362557239L; + /** + * 机关Id + * */ + @NotBlank(message = "机关Id不能为空" , groups = AdvancedBranchRankFormDTO.AddUserInternalGroup.class) + private String agencyId; + /** + * 显示多少条 + * */ + @Min(value = 1, message = "查询条数必须大于0", groups = {AdvancedBranchRankFormDTO.AddUserInternalGroup.class }) + private Integer topNum; + /** + * 月份Id + * */ + 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/IndexAdvanceBranchRankResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/IndexAdvanceBranchRankResultDTO.java new file mode 100644 index 0000000000..cbe72572b6 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/IndexAdvanceBranchRankResultDTO.java @@ -0,0 +1,53 @@ +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 IndexAdvanceBranchRankResultDTO implements Serializable { + private static final long serialVersionUID = 330099297596334388L; + + /** + * 名称 XXXX社区党委 + */ + private String name; + /** + * 指标得分 + */ + @JsonIgnore + private String totalScore; + private BigDecimal scroe; + /** + * 党员数 + */ + private Integer partyMemberNum; + + /** + * 议题数 + */ + private Integer issueNum; + + /** + * 项目数 + */ + private Integer projectNum; + + /** + * 满意度 90.64% 返回字符串,前端直接显示 + */ + private String satisfactionRatio; + + /** + * 结案率 94.3% 返回字符串,前端直接显示 + */ + private String closedProjectRatio; + +} 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 79b839ea10..100c35b293 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 @@ -113,5 +113,16 @@ public class IndexController { return new Result().ok(indexService.indexScore(formDTO)); } + /** + * @param formDTO + * @Description 先进排行-先进支部排行 + * @author sun + */ + @PostMapping("advancedbranchrank") + Result> advancedBranchRank(@RequestBody AdvancedBranchRankFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, AdvancedBranchRankFormDTO.AddUserInternalGroup.class); + return new Result>().ok(indexService.advancedBranchRank(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 c042885cc6..2c030eac41 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 @@ -88,4 +88,11 @@ public interface ScreenIndexDataMonthlyDao{ * @author sun */ IndexScoreResultDTO selectMonthData(IndexScoreFormDTO formDTO); + + /** + * @param formDTO + * @Description 先进排行-先进支部排行 + * @author sun + */ + List selectRankList(AdvancedBranchRankFormDTO 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 a577e666a6..3485770cc2 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 @@ -69,4 +69,11 @@ public interface IndexService { * @author sun */ IndexScoreResultDTO indexScore(IndexScoreFormDTO formDTO); + + /** + * @param formDTO + * @Description 先进排行-先进支部排行 + * @author sun + */ + List advancedBranchRank(AdvancedBranchRankFormDTO 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 385ec49fcc..13ff3a5367 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 @@ -11,9 +11,11 @@ import com.epmet.evaluationindex.screen.constant.ScreenConstant; import com.epmet.evaluationindex.screen.dto.form.*; import com.epmet.evaluationindex.screen.dto.result.*; import org.apache.commons.lang3.StringUtils; +import org.jsoup.helper.DataUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.unit.DataUnit; import java.math.BigDecimal; import java.text.NumberFormat; @@ -298,4 +300,28 @@ public class IndexServiceImpl implements IndexService { return resultDTO; } + /** + * @param formDTO + * @Description 先进排行-先进支部排行 + * @author sun + */ + @Override + public List advancedBranchRank(AdvancedBranchRankFormDTO formDTO) { + //根据当前所选组织,查询screen_index_data_monthly中类型为网格的按照总指数倒序,关联screen_org_rank_data表取其他数据 + //1.级联查询组织下所有网格的先进支部排行数据,按总指数降序 + formDTO.setMonthId(DateUtils.getBeforeNMonth(1)); + List list = screenIndexDataMonthlyDao.selectRankList(formDTO); + //2.遍历数据,小数保留一位小数,百分数添加百分号 + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMaximumFractionDigits(1); + list.forEach(l->{ + BigDecimal num = new BigDecimal(l.getTotalScore()).setScale(1, BigDecimal.ROUND_HALF_UP).stripTrailingZeros(); + l.setScroe(num); + l.setSatisfactionRatio(nf.format(Double.parseDouble(l.getSatisfactionRatio()))); + l.setClosedProjectRatio(nf.format(Double.parseDouble(l.getClosedProjectRatio()))); + }); + + return list; + } + } 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 f35e7a490c..ce6e942389 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 @@ -193,4 +193,23 @@ AND month_id = #{monthId} + +