diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java new file mode 100644 index 0000000000..ae61ba1769 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryListResultDTO.java @@ -0,0 +1,38 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/7 1:40 下午 + * @DESC + */ +@Data +public class CategoryListResultDTO implements Serializable { + + private static final long serialVersionUID = 6788749110947073314L; + + /** + * 分类编码 + */ + private String categoryCode; + + /** + * 分类名字 + */ + private String categoryName; + + private Integer count; + + private Integer codeLength; + + public CategoryListResultDTO() { + this.categoryCode = ""; + this.categoryName = ""; + this.count = NumConstant.ZERO; + this.codeLength = NumConstant.ZERO; + } +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java index fd9abdea24..87e60da943 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java @@ -1,6 +1,8 @@ package com.epmet.feign; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IssueApplicationDTO; import com.epmet.dto.IssueDTO; @@ -344,4 +346,14 @@ public interface GovIssueOpenFeignClient { @PostMapping("/gov/issue/issue/unresolvedlist") Result> getUnresolvedList(@RequestBody ShiftProjectListFromDTO formDTO); + + /** + * @Description 根据客户查询1级分类 + * @param tokenDto + * @author zxc + * @date 2021/12/7 2:05 下午 + */ + @PostMapping(value = "/gov/issue/issueprojectcategorydict/categorylist") + Result> selectCategoryOneLevelListByCustomerId(@LoginUser TokenDto tokenDto); + } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java index c16cf3b490..2cbb23ae48 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java @@ -1,6 +1,7 @@ package com.epmet.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IssueApplicationDTO; @@ -284,4 +285,9 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient public Result> getUnresolvedList(ShiftProjectListFromDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getUnresolvedList", formDTO); } + + @Override + public Result> selectCategoryOneLevelListByCustomerId(TokenDto tokenDto) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "selectCategoryOneLevelListByCustomerId", tokenDto); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java index 4a684d8ef2..f77f9ce9d9 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java @@ -277,5 +277,16 @@ public class IssueProjectCategoryDictController { return new Result>().ok(issueProjectCategoryDictService.getProjectCategory(list)); } + /** + * @Description 根据客户ID查询一级分类列表 + * @param tokenDto + * @author zxc + * @date 2021/12/7 1:45 下午 + */ + @PostMapping("categorylist") + public Result> selectCategoryOneLevelListByCustomerId(@LoginUser TokenDto tokenDto){ + return new Result>().ok(issueProjectCategoryDictService.selectCategoryOneLevelListByCustomerId(tokenDto.getCustomerId())); + } + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java index 6d2ad46fa8..50a93b4bef 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java @@ -22,6 +22,7 @@ import com.epmet.dto.IssueProjectCategoryDictDTO; import com.epmet.dto.form.DelCategoryFormDTO; import com.epmet.dto.form.IsDisableCategoryFormDTO; import com.epmet.dto.form.IssueProjectCategoryDictListFormDTO; +import com.epmet.dto.result.CategoryListResultDTO; import com.epmet.dto.result.CustomerCategoryListResultDTO; import com.epmet.dto.result.CustomerCategoryResultDTO; import com.epmet.dto.result.ProjectCategoryDisPoseResultDTO; @@ -183,4 +184,12 @@ public interface IssueProjectCategoryDictDao extends BaseDao getProjectCategory(@Param("list") List list,@Param("customerId") String customerId); + /** + * @Description 根据客户ID查询一级分类列表 + * @param customerId + * @author zxc + * @date 2021/12/7 1:45 下午 + */ + List selectCategoryOneLevelListByCustomerId(@Param("customerId")String customerId); + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java index abd4e63d38..292e6449d8 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java @@ -221,4 +221,13 @@ public interface IssueProjectCategoryDictService extends BaseService getProjectCategory(List list); + + /** + * @Description 根据客户ID查询一级分类列表 + * @param customerId + * @author zxc + * @date 2021/12/7 1:45 下午 + */ + List selectCategoryOneLevelListByCustomerId(String customerId); + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java index 9236ff80a5..28a7192afb 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java @@ -496,6 +496,17 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl selectCategoryOneLevelListByCustomerId(String customerId) { + return baseDao.selectCategoryOneLevelListByCustomerId(customerId); + } + /** * @Description 项目分类处理 * @Param list diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml index dca01a63f5..0030bb0a27 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml @@ -245,6 +245,20 @@ + + + UPDATE issue_project_category_dict SET diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java new file mode 100644 index 0000000000..745febe364 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectDistributionAnalysisFormDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/7 9:55 上午 + * @DESC + */ +@Data +public class ProjectDistributionAnalysisFormDTO implements Serializable { + + private static final long serialVersionUID = 4911448213428751186L; + + public interface ProjectDistributionAnalysisForm{} + + @NotBlank(message = "date不能为空",groups = ProjectDistributionAnalysisForm.class) + private String date; + +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java new file mode 100644 index 0000000000..a32b7125ea --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/CategoryListDTO.java @@ -0,0 +1,38 @@ +package com.epmet.dto.result; + +import com.epmet.commons.tools.constant.NumConstant; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/12/7 9:40 上午 + * @DESC + */ +@Data +public class CategoryListDTO implements Serializable { + + private static final long serialVersionUID = 2782140672250580404L; + + /** + * 分类编码 + */ + private String categoryCode; + + /** + * 分类名字 + */ + private String categoryName; + + /** + * 个数 + */ + private Integer count; + + public CategoryListDTO() { + this.categoryCode = ""; + this.categoryName = ""; + this.count = NumConstant.ZERO; + } +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java new file mode 100644 index 0000000000..b31ca841b5 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectCategoryByDateDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author zxc + * @DateTime 2021/12/7 11:18 上午 + * @DESC + */ +@Data +public class ProjectCategoryByDateDTO implements Serializable { + + private static final long serialVersionUID = -6620068264792270703L; + + /** + * 项目创建时间 + */ + private Date createdTime; + + /** + * 分类编码 + */ + private String categoryCode; +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java new file mode 100644 index 0000000000..0e991a98e0 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDistributionAnalysisLeftResultDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/12/7 9:38 上午 + * @DESC + */ +@Data +public class ProjectDistributionAnalysisLeftResultDTO implements Serializable { + + private static final long serialVersionUID = -5694808164804517466L; + + /** + * 时间段 + */ + private String time; + + /** + * 分类集合 + */ + private List categoryList; +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java index 46de571a19..085cc4c333 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java @@ -17,7 +17,9 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.AssertUtils; @@ -31,6 +33,7 @@ import com.epmet.dto.result.*; import com.epmet.excel.ProjectExcel; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import com.epmet.service.ProjectService; +import jdk.nashorn.internal.parser.Token; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -271,4 +274,17 @@ public class ProjectController { return new Result>().ok(projectService.getUnResolvedListByGrid(formDTO)); } + /** + * @Description 【社区治理】项目分布分析-左边 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/12/7 10:02 上午 + */ + @PostMapping("projectdistributionanalysisleft") + public Result> projectDistributionAnalysisLeft(@RequestBody ProjectDistributionAnalysisFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, ProjectDistributionAnalysisFormDTO.ProjectDistributionAnalysisForm.class); + return new Result>().ok(projectService.projectDistributionAnalysisLeft(formDTO,tokenDto)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index 0040584f81..4f65e09ab8 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -217,4 +217,14 @@ public interface ProjectDao extends BaseDao { EventProjectInfoDTO selectEventProjectInfo(@Param("projectId")String projectId); List selectByOriginId(String originId); + + /** + * @Description 根据日期查询项目分类 + * @param date + * @param orgId + * @author zxc + * @date 2021/12/7 2:43 下午 + */ + List selectProjectCategoryByDate(@Param("date")String date,@Param("orgId")String orgId,@Param("codeLength")Integer codeLength); + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index 1f0fd17a0d..7a780592e1 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -19,6 +19,7 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dto.ProjectDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -331,4 +332,14 @@ public interface ProjectService extends BaseService { List getUnResolvedListByGrid(ShiftProjectListFromDTO fromDTO); List getByOriginId(String eventId); + + /** + * @Description 【社区治理】项目分布分析-左边 + * @param formDTO + * @param tokenDto + * @author zxc + * @date 2021/12/7 10:02 上午 + */ + List projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto); + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index f5ad56150b..c6082543e8 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -23,13 +23,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.tools.constant.*; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.*; import com.epmet.constant.*; @@ -75,6 +79,7 @@ import javax.servlet.http.HttpServletRequest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; @@ -2845,6 +2850,83 @@ public class ProjectServiceImpl extends BaseServiceImpl projectDistributionAnalysisLeft(ProjectDistributionAnalysisFormDTO formDTO, TokenDto tokenDto) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo){ + throw new EpmetException("未查询到此工作人员的所属组织信息..."); + } + Result> listResult = govIssueOpenFeignClient.selectCategoryOneLevelListByCustomerId(tokenDto); + if (!listResult.success()){ + throw new EpmetException("查询1级分类列表失败..."); + } + List projectCategoryByDateDTOS = baseDao.selectProjectCategoryByDate(formDTO.getDate(), staffInfo.getAgencyId(), listResult.getData().get(NumConstant.ZERO).getCodeLength()); + if (CollectionUtils.isEmpty(projectCategoryByDateDTOS)){ + return new ArrayList<>(); + } + return disposeTimeInterval(projectCategoryByDateDTOS, formDTO.getDate(), listResult.getData()); + } + + /** + * @Description 区间项目分类数量处理 + * @param categories + * @param date + * @param listResult + * @author zxc + * @date 2021/12/8 9:45 上午 + */ + public List disposeTimeInterval(List categories, String date,List listResult){ + List intervalTimeList = getIntervalTimeList("00:00", "24:00", 240); + List result = new ArrayList<>(); + Map> groupByCode = categories.stream().collect(Collectors.groupingBy(ProjectCategoryByDateDTO::getCategoryCode)); + for (int i = 0; i < intervalTimeList.size(); i++) { + ProjectDistributionAnalysisLeftResultDTO dto = new ProjectDistributionAnalysisLeftResultDTO(); + dto.setTime(intervalTimeList.get(i)); + dto.setCategoryList(ConvertUtils.sourceToTarget(listResult,CategoryListDTO.class)); + String concat = date.concat(" ").concat(intervalTimeList.get(i)).concat(":00"); + long end = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, concat).getTime(); + if (i == NumConstant.ZERO){ + dto.getCategoryList().forEach(cate -> { + AtomicReference count = new AtomicReference<>(cate.getCount()); + groupByCode.forEach((k,v) -> { + if (cate.getCategoryCode().equals(k)){ + v.forEach(l -> { + if (l.getCreatedTime().getTime() < end){ + cate.setCount(count.getAndSet(count.get() + NumConstant.ONE)); + } + }); + } + }); + }); + }else if (i == intervalTimeList.size() - NumConstant.ONE){ + break; + }else { + String startStr = date.concat(" ").concat(intervalTimeList.get(i - NumConstant.ONE)).concat(":00"); + long start = DateUtils.stringToDate(DateUtils.DATE_TIME_PATTERN, startStr).getTime(); + dto.getCategoryList().forEach(cate -> { + AtomicReference count = new AtomicReference<>(cate.getCount()); + groupByCode.forEach((k,v) -> { + if (cate.getCategoryCode().equals(k)){ + v.forEach(l -> { + if (l.getCreatedTime().getTime() < end && l.getCreatedTime().getTime() >= start){ + cate.setCount(count.getAndSet(count.get() + NumConstant.ONE)); + } + }); + } + }); + }); + } + result.add(dto); + } + return result; + } /** * @Description 获取固定时间段之间固定时间的集合 @@ -2854,7 +2936,7 @@ public class ProjectServiceImpl extends BaseServiceImpl getIntervalTimeList(String start,String end,Integer interval) { + public List getIntervalTimeList(String start,String end,Integer interval) { Date startDate = convertStringToDate("HH:mm", start); Date endDate = convertStringToDate("HH:mm", end); List list = new ArrayList<>(); @@ -2875,11 +2957,12 @@ public class ProjectServiceImpl extends BaseServiceImpl + + + \ No newline at end of file