diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java new file mode 100644 index 0000000000..d182572061 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java @@ -0,0 +1,49 @@ +package com.epmet.project.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:23 下午 + * @DESC + */ +@Data +public class CategoryProjectListFormDTO implements Serializable { + + private static final long serialVersionUID = -5448734274886241594L; + + public interface CategoryProjectListForm{} + + @NotNull(message = "pageSize不能为空",groups = CategoryProjectListForm.class) + private Integer pageSize; + + @NotNull(message = "pageNo不能为空",groups = CategoryProjectListForm.class) + private Integer pageNo; + + /** + * 项目状态:closed:已结案,all:全部 + */ + @NotNull(message = "status不能为空",groups = CategoryProjectListForm.class) + private String status; + + @NotNull(message = "categoryCode不能为空",groups = CategoryProjectListForm.class) + private String categoryCode; + + /** + * 组织ID + */ + private String orgId; + + /** + * 组织类型:agency:组织,grid:网格 + */ + private String orgType; + + /** + * 是否分页,默认true,false的时候 给导出用 + */ + private Boolean isPage = true; +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java new file mode 100644 index 0000000000..34043933bc --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java @@ -0,0 +1,37 @@ +package com.epmet.project.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:18 下午 + * @DESC + */ +@Data +public class ProjectCategoryFormDTO implements Serializable { + + private static final long serialVersionUID = 5047143743629810527L; + + public interface ProjectCategoryForm{} + + /** + * 组织ID + */ + private String orgId; + + /** + * 组织类型 组织:agency,网格:grid + */ + private String orgType; + + @NotBlank(message = "结束时间不能为空",groups = ProjectCategoryForm.class) + private String endTime; + + /** + * 开始时间 + */ + private String startTime; +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java new file mode 100644 index 0000000000..a4b64673ac --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java @@ -0,0 +1,56 @@ +package com.epmet.project.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:31 下午 + * @DESC + */ +@Data +public class CategoryProjectListResultDTO implements Serializable { + + private static final long serialVersionUID = 8820354423099062062L; + + /** + * 分类 + */ + private String category; + + /** + * 项目状态:待处理 pending,结案closed + */ + private String projectStatus; + + /** + * 项目标题 + */ + private String projectTitle; + + /** + * 网格 + */ + private String gridName; + + /** + * 项目创建时间 + */ + private String createTime; + + @JsonIgnore + private String orgId; + + @JsonIgnore + private String orgType; + + public CategoryProjectListResultDTO() { + this.category = ""; + this.projectStatus = ""; + this.projectTitle = ""; + this.gridName = ""; + this.createTime = ""; + } +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/PageCategoryProjectListResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/PageCategoryProjectListResultDTO.java new file mode 100644 index 0000000000..c17f00bf77 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/PageCategoryProjectListResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.project.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/11/5 1:51 下午 + * @DESC + */ +@Data +public class PageCategoryProjectListResultDTO implements Serializable { + + private static final long serialVersionUID = 8822993169364931502L; + + private Integer total; + + private List list; + + public PageCategoryProjectListResultDTO() { + this.total = NumConstant.ZERO; + this.list = new ArrayList<>(); + } +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategoryResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategoryResultDTO.java new file mode 100644 index 0000000000..0bc575733e --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategoryResultDTO.java @@ -0,0 +1,61 @@ +package com.epmet.project.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:13 下午 + * @DESC + */ +@Data +public class ProjectCategoryResultDTO implements Serializable { + + private static final long serialVersionUID = -2662970383306349424L; + + /** + * 分类CODE + */ + private String categoryCode; + + /** + * 分类名字 + */ + private String categoryName; + + /** + * 项目总数 + */ + private Integer projectTotal; + + /** + * 结案项目数 + */ + private Integer closedProjectTotal; + + /** + * 总数占比 + */ + private String totalRatio; + + /** + * 结案率 + */ + private String closedRatio; + + private List children; + + public ProjectCategoryResultDTO() { + this.categoryCode = ""; + this.categoryName = ""; + this.projectTotal = NumConstant.ZERO; + this.closedProjectTotal = NumConstant.ZERO; + this.totalRatio = ""; + this.closedRatio = ""; + this.children = new ArrayList<>(); + } +} diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategorySonResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategorySonResultDTO.java new file mode 100644 index 0000000000..22cbbbd0bb --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/ProjectCategorySonResultDTO.java @@ -0,0 +1,56 @@ +package com.epmet.project.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/11/4 3:13 下午 + * @DESC + */ +@Data +public class ProjectCategorySonResultDTO implements Serializable { + + private static final long serialVersionUID = -2662970383306349424L; + + /** + * 分类CODE + */ + private String categoryCode; + + /** + * 分类名字 + */ + private String categoryName; + + /** + * 项目总数 + */ + private Integer projectTotal; + + /** + * 结案项目数 + */ + private Integer closedProjectTotal; + + /** + * 总数占比 + */ + private String totalRatio; + + /** + * 结案率 + */ + private String closedRatio; + + public ProjectCategorySonResultDTO() { + this.categoryCode = ""; + this.categoryName = ""; + this.projectTotal = NumConstant.ZERO; + this.closedProjectTotal = NumConstant.ZERO; + this.totalRatio = ""; + this.closedRatio = ""; + } +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java index 94cd036277..d71280e79a 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.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.service.evaluationindex.screen.ScreenProjectOrgDailyService; @@ -12,8 +14,13 @@ import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDetailFormDTO; import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDistributionFormDTO; import com.epmet.evaluationindex.screen.dto.result.ProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.project.dto.form.CategoryProjectListFormDTO; import com.epmet.project.dto.form.CategoryTopAppealFormDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; +import com.epmet.project.dto.result.CategoryProjectListResultDTO; import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.result.PageCategoryProjectListResultDTO; +import com.epmet.project.dto.result.ProjectCategoryResultDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -155,4 +162,31 @@ public class ScreenProjectController { return new Result>().ok(screenProjectService.categoryTopAppeal(formDTO)); } + + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + @PostMapping("selectprojectcategory") + public Result> selectProjectCategory(@RequestBody ProjectCategoryFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.ProjectCategoryForm.class); + return new Result>().ok(screenProjectService.selectProjectCategory(formDTO,tokenDto)); + } + + /** + * @Description 【项目分类】查询分类下的项目 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:39 下午 + */ + @PostMapping("selectcategoryprojectlist") + public Result selectCategoryProjectList(@RequestBody CategoryProjectListFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, CategoryProjectListFormDTO.CategoryProjectListForm.class); + return new Result().ok(screenProjectService.selectCategoryProjectList(formDTO,tokenDto)); + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java index e3cf3d074d..93b6564f87 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java @@ -19,7 +19,9 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.CategoryAnalysisResultDTO; import com.epmet.project.CustomerProjectCategoryDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.result.ProjectCategoryResultDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -52,4 +54,33 @@ public interface ScreenProjectCategoryOrgDailyDao { * @date 2021/8/18 1:40 下午 */ List categoryTopAppeal(@Param("agencyId") String agencyId,@Param("customerId")String customerId,@Param("topCount")Integer topCount); + + /** + * @Description 组织查询分类 + * @param customerId + * @param time + * @param orgId + * @author zxc + * @date 2021/11/5 8:54 上午 + */ + List selectProjectCategoryByAgency(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + + /** + * @Description 网格查询分类 + * @param customerId + * @param time + * @param orgId + * @author zxc + * @date 2021/11/5 8:55 上午 + */ + List selectProjectCategoryByGrid(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + + /** + * @Description 查询客户下所有分类 + * @param customerId + * @author zxc + * @date 2021/11/4 5:45 下午 + */ + List selectCategoryByCustomerId(@Param("customerId")String customerId); + } \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java index 49797b9cb2..11c019e4d9 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java @@ -3,6 +3,7 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.ColorProjectTotalResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.project.dto.result.CategoryProjectListResultDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -45,4 +46,15 @@ public interface ScreenProjectDataDao { * @date 2021/6/1 3:48 下午 */ List selectColorProjectByAreaCode(@Param("areaCode") String areaCode,@Param("monthCount")Integer monthCount); + + /** + * @Description 查询分类下的项目列表 + * @param customerId + * @param orgId + * @author zxc + * @date 2021/11/5 1:40 下午 + */ + List selectCategoryProjectList(@Param("customerId") String customerId,@Param("orgId") String orgId, + @Param("categoryCode")String categoryCode,@Param("status")String status); + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java index 2a26119d9c..aeb20bdb97 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectOrgDailyDao.java @@ -19,6 +19,7 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.EfficiencyAnalysisResultDTO; import com.epmet.dto.result.screen.ProjectQuantityResultDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -45,4 +46,9 @@ public interface ScreenProjectOrgDailyDao { * @description 下级组织的效率(解决率)列表 **/ List queryEfficiencyAnalysis(@Param("customerId")String customerId,@Param("areaCode") String areaCode); + + Integer selectProjectTotalByAgency(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + + Integer selectProjectTotalByGrid(@Param("customerId")String customerId,@Param("time")String time,@Param("orgId")String orgId); + } \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java index e8d9110198..2f268cd35e 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/ScreenProjectService.java @@ -1,5 +1,6 @@ package com.epmet.datareport.service.evaluationindex.screen; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.form.screen.CategoryAnalysisFormDTO; import com.epmet.dto.form.screen.ColorProjectTotalFormDTO; @@ -10,8 +11,13 @@ import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDetailFormDTO; import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDistributionFormDTO; import com.epmet.evaluationindex.screen.dto.result.ProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.project.dto.form.CategoryProjectListFormDTO; import com.epmet.project.dto.form.CategoryTopAppealFormDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; +import com.epmet.project.dto.result.CategoryProjectListResultDTO; import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.result.PageCategoryProjectListResultDTO; +import com.epmet.project.dto.result.ProjectCategoryResultDTO; import java.util.List; @@ -62,4 +68,24 @@ public interface ScreenProjectService { */ List categoryTopAppeal(CategoryTopAppealFormDTO formDTO); + + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + List selectProjectCategory(ProjectCategoryFormDTO formDTO, TokenDto tokenDto); + + /** + * @Description 【项目分类】查询分类下的项目 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:39 下午 + */ + PageCategoryProjectListResultDTO selectCategoryProjectList(CategoryProjectListFormDTO formDTO, TokenDto tokenDto); + + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java index a23152697e..398010d5a2 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java @@ -3,14 +3,15 @@ package com.epmet.datareport.service.evaluationindex.screen.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenEventDataDao; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenEventImgDataDao; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenProjectCategoryOrgDailyDao; -import com.epmet.datareport.dao.evaluationindex.screen.ScreenProjectDataDao; +import com.epmet.datareport.constant.FactConstant; +import com.epmet.datareport.dao.evaluationindex.screen.*; import com.epmet.datareport.service.evaluationindex.screen.ScreenProjectService; import com.epmet.dto.UserDTO; import com.epmet.dto.form.CustomerAgencyUserRoleFormDTO; @@ -26,15 +27,21 @@ import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.project.CustomerProjectCategoryDTO; +import com.epmet.project.dto.form.CategoryProjectListFormDTO; import com.epmet.project.dto.form.CategoryTopAppealFormDTO; -import com.epmet.project.dto.result.CategoryTopAppealResultDTO; +import com.epmet.project.dto.form.ProjectCategoryFormDTO; +import com.epmet.project.dto.result.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -63,6 +70,9 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { @Autowired private EpmetUserOpenFeignClient userOpenFeignClient; + @Autowired + private ScreenProjectOrgDailyDao screenProjectOrgDailyDao; + /** * @Description 3、项目详情 * @param projectDetailFormDTO @@ -228,4 +238,147 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { } return result; } + + + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:38 下午 + */ + @Override + public List selectProjectCategory(ProjectCategoryFormDTO formDTO, TokenDto tokenDto) { + if (StringUtils.isBlank(formDTO.getOrgId())){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo){ + throw new RenException("未查询到此工作人员的所属组织信息..."); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType(FactConstant.AGENCY); + } + String customerId = tokenDto.getCustomerId(); + String endTime = formDTO.getEndTime(); + String startTime = formDTO.getStartTime(); + String orgId = formDTO.getOrgId(); + // 查询客户下的所有分类 + List result = screenProjectCategoryOrgDailyDao.selectCategoryByCustomerId(tokenDto.getCustomerId()); + List endCategoryList = new ArrayList<>(); + if (formDTO.getOrgType().equals(FactConstant.AGENCY)){ + Integer endTotal = screenProjectOrgDailyDao.selectProjectTotalByAgency(customerId, endTime, orgId); + endTotal = null == endTotal ? NumConstant.ZERO : endTotal; + endCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByAgency(customerId,endTime,orgId); + Integer total = endTotal; + if (StringUtils.isNotBlank(startTime)){ + Integer startTotal = screenProjectOrgDailyDao.selectProjectTotalByAgency(customerId, startTime, orgId); + startTotal = null == startTotal ? NumConstant.ZERO : startTotal; + total = endTotal - startTotal; + List startCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByAgency(customerId,startTime,orgId); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setProjectTotal(subtract(e.getProjectTotal(),s.getProjectTotal())))); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setClosedProjectTotal(subtract(e.getClosedProjectTotal(),s.getClosedProjectTotal())))); + } + Integer finalTotal = total; + endCategoryList.forEach(e -> { + e.setTotalRatio(ratio(e.getProjectTotal(), finalTotal)); + e.setClosedRatio(ratio(e.getClosedProjectTotal(),e.getProjectTotal())); + }); + }else { + Integer endTotal = screenProjectOrgDailyDao.selectProjectTotalByGrid(customerId, endTime, orgId); + endTotal = null == endTotal ? NumConstant.ZERO : endTotal; + endCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByGrid(customerId,endTime,orgId); + Integer total = endTotal; + if (StringUtils.isNotBlank(startTime)){ + Integer startTotal = screenProjectOrgDailyDao.selectProjectTotalByGrid(customerId, startTime, orgId); + startTotal = null == startTotal ? NumConstant.ZERO : startTotal; + total = endTotal - startTotal; + List startCategoryList = screenProjectCategoryOrgDailyDao.selectProjectCategoryByGrid(customerId,startTime,orgId); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setProjectTotal(subtract(e.getProjectTotal(),s.getProjectTotal())))); + endCategoryList.forEach(e -> startCategoryList.stream().filter(s -> e.getCategoryCode().equals(s.getCategoryCode())).forEach(s -> e.setClosedProjectTotal(subtract(e.getClosedProjectTotal(),s.getClosedProjectTotal())))); + } + Integer finalTotal = total; + endCategoryList.forEach(e -> { + e.setTotalRatio(ratio(e.getProjectTotal(), finalTotal)); + e.setClosedRatio(ratio(e.getClosedProjectTotal(),e.getProjectTotal())); + }); + } + List finalEndCategoryList = endCategoryList; + result.forEach(r -> { + finalEndCategoryList.stream().filter(e -> r.getCategoryCode().equals(e.getCategoryCode())).forEach(e -> { + r.setTotalRatio(e.getTotalRatio());r.setClosedRatio(e.getClosedRatio()); + }); + r.getChildren().forEach(son -> finalEndCategoryList.stream().filter(e -> son.getCategoryCode().equals(e.getCategoryCode())).forEach(e -> { + son.setTotalRatio(e.getTotalRatio());son.setClosedRatio(e.getClosedRatio()); + })); + }); + // 排序 + List collect = result.stream().sorted(Comparator.comparing(ProjectCategoryResultDTO::getProjectTotal).reversed()).collect(Collectors.toList()); + collect.forEach(c -> { + c.setChildren(c.getChildren().stream().sorted(Comparator.comparing(ProjectCategorySonResultDTO::getProjectTotal).reversed()).collect(Collectors.toList())); + }); + return collect; + } + + /** + * @Description 俩数相减,小于0就赋值为0 + * @param end + * @param start + * @author zxc + * @date 2021/11/5 9:18 上午 + */ + public Integer subtract(Integer end,Integer start){ + return end - start < NumConstant.ZERO ? NumConstant.ZERO : end - start; + } + + /** + * @Description 返回占比,保留小数点2位 + * @param molecule 分子 + * @param denominator 分母 + * @author zxc + * @date 2021/11/5 9:26 上午 + */ + public String ratio(Integer molecule, Integer denominator){ + if (denominator == NumConstant.ZERO){ + return "0.00%"; + } + BigDecimal bigDecimalMolecule = new BigDecimal(molecule); + BigDecimal bigDecimalDenominator = new BigDecimal(denominator); + BigDecimal divide = bigDecimalMolecule.divide(bigDecimalDenominator, NumConstant.FOUR, BigDecimal.ROUND_HALF_UP); + return divide.multiply(NumConstant.ONE_HUNDRED_DECIMAL)+"%"; + } + + /** + * @Description 【项目分类】查询分类下的项目 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/11/4 3:39 下午 + */ + @Override + public PageCategoryProjectListResultDTO selectCategoryProjectList(CategoryProjectListFormDTO formDTO, TokenDto tokenDto) { + if (StringUtils.isBlank(formDTO.getOrgId())){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo){ + throw new RenException("未查询到此工作人员的所属组织信息..."); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType(FactConstant.AGENCY); + } + PageCategoryProjectListResultDTO result = new PageCategoryProjectListResultDTO(); + if (formDTO.getIsPage()){ + PageInfo objectPageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> screenProjectDataDao.selectCategoryProjectList(tokenDto.getCustomerId(), formDTO.getOrgId(), formDTO.getCategoryCode(), formDTO.getStatus())); + List list = objectPageInfo.getList(); + result.setTotal(Integer.valueOf(String.valueOf(objectPageInfo.getTotal()))); + if (!CollectionUtils.isEmpty(list)){ + list.forEach(l -> { + if (l.getOrgType().equals(FactConstant.AGENCY)){ + + }else { + + } + }); + } + } + return result; + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml index 5731b27e2b..28058a8904 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectCategoryOrgDailyDao.xml @@ -63,4 +63,53 @@ AND DATE_ID = (select date_id from screen_project_category_org_daily where del_flag = '0' and ORG_ID = #{agencyId} and CUSTOMER_ID= #{customerId} order by date_id desc, created_time desc limit 1) ORDER BY PROJECT_TOTAL DESC LIMIT #{topCount} + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml index e890e36389..08bd089160 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml @@ -158,4 +158,24 @@ AND UNIX_TIMESTAMP(pd.CREATED_TIME) >= UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL #{monthCount} MONTH)) ) + + + diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml index 4189b03d16..0294005b7f 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectOrgDailyDao.xml @@ -54,4 +54,30 @@ )and m.CUSTOMER_ID=#{customerId} order by resolvedRatio+0 desc + + + + + + \ No newline at end of file