diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java index 60c16f0c01..72d2e072b4 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java @@ -164,7 +164,12 @@ public enum RequirePermissionEnum { MORE_BADGE_MANAGE_LIST("more_badge_manage_list","更多:徽章:徽章管理:列表","徽章列表"), MORE_BADGE_MANAGE_CREATE("more_badge_manage_create","更多:徽章:徽章管理:添加","添加徽章"), MORE_BADGE_MANAGE_EDIT("more_badge_manage_edit","更多:徽章:徽章管理:编辑","编辑徽章"), - MORE_BADGE_MANAGE_DELETE("more_badge_manage_delete","更多:徽章:徽章管理:删除","删除徽章"); + MORE_BADGE_MANAGE_DELETE("more_badge_manage_delete","更多:徽章:徽章管理:删除","删除徽章"), + + /** + * 项目立项 + */ + WORK_PROJECT_APPROVAL("work_project_approval","政务管理:项目立项","项目立项"); private String key; private String name; diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectDTO.java index c73cc7ecd3..e94e2e9ad7 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectDTO.java @@ -65,6 +65,11 @@ public class ProjectDTO implements Serializable { */ private String title; + /** + * 项目背景 + */ + private String backGround; + /** * 状态:待处理 pending,结案closed */ diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectEntity.java index 1a4c9ea1e1..5cdf2cde3b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectEntity.java @@ -63,6 +63,11 @@ public class ProjectEntity extends BaseEpmetEntity { */ private String title; + /** + * 项目背景 + */ + private String backGround; + /** * 状态:待处理 pending,结案closed */ diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java index f24397f43d..9d1484b5f4 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/extract/FactOriginProjectMainDailyDTO.java @@ -103,6 +103,16 @@ public class FactOriginProjectMainDailyDTO implements Serializable { */ private String agencyId; + /** + * 来源:议题issue + */ + private String origin; + + /** + * 来源ID + */ + private String originId; + /** * 状态 */ diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java index d1f9083b30..c253849ab5 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ClosedIncrResultDTO.java @@ -16,4 +16,6 @@ public class ClosedIncrResultDTO implements Serializable { private String gridId; private Integer closedIncr; + + private String orgId; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java index 3eb30a3887..769bd064aa 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/EvaluateTotalResultDTO.java @@ -17,4 +17,6 @@ public class EvaluateTotalResultDTO implements Serializable { private String orgId; private Integer evaluateCount = NumConstant.ZERO; + + private String areaCode; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java index 6200eb8add..8f880dcf5b 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectIncrResultDTO.java @@ -16,4 +16,6 @@ public class ProjectIncrResultDTO implements Serializable { private String gridId; private Integer projectIncr; + + private String orgId; } 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 index a19749c5e0..22c614e83d 100644 --- 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 @@ -44,6 +44,8 @@ public class ProjectOrgDailyResultDTO implements Serializable { */ private Integer badTotal; + private String orgId; + public ProjectOrgDailyResultDTO() { this.projectTotal = NumConstant.ZERO; this.resolvedNum = NumConstant.ZERO; diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java index a356c0ccdb..a493851432 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ProjectTotalResultDTO.java @@ -13,6 +13,15 @@ public class ProjectTotalResultDTO implements Serializable { private static final long serialVersionUID = 6071988402600005617L; - private String gridId; + private String orgId; + + /** + * 项目总数 + */ private Integer projectTotal; + + /** + * 行政区域编码 + */ + private String areaCode; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java index 6710de4469..2cc99e92f2 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/ResolvedNumResultDTO.java @@ -13,6 +13,12 @@ public class ResolvedNumResultDTO implements Serializable { private static final long serialVersionUID = 607198840261205617L; - private String gridId; + private String orgId; + + /** + * 已解决的项目总数 + */ private Integer resolvedNum; + + private String areaCode; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java index d31e85ec28..b4d001fa56 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/pingyin/result/UnClosedTotalResultDTO.java @@ -16,4 +16,6 @@ public class UnClosedTotalResultDTO implements Serializable { private String gridId; private Integer projectCount; + + private String orgId; } diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java index 0406fb26f2..b80df7b7ff 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screen/ScreenProjectCategoryGridDailyDTO.java @@ -108,4 +108,11 @@ public class ScreenProjectCategoryGridDailyDTO implements Serializable { */ private Date updatedTime; + private String orgId; + + /** + * 用在 项目分类 org 统计中,记录本记录是否被计数 + */ + private Boolean status = false; + } \ No newline at end of file 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 7b449b50fe..da3ce096ec 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 @@ -17,6 +17,7 @@ package com.epmet.dto.screen; +import com.epmet.commons.tools.constant.NumConstant; import lombok.Data; import java.io.Serializable; @@ -144,4 +145,14 @@ public class ScreenProjectOrgDailyDTO implements Serializable { */ private String areaCode; + public ScreenProjectOrgDailyDTO() { + this.projectTotal = NumConstant.ZERO; + this.resolvedNum = NumConstant.ZERO; + this.resolvedRatio = NumConstant.ZERO_DECIMAL; + this.evaluateTotal = NumConstant.ZERO; + this.goodTotal = NumConstant.ZERO; + this.badTotal = NumConstant.ZERO; + this.goodRatio = NumConstant.ZERO_DECIMAL; + this.badRatio = NumConstant.ZERO_DECIMAL; + } } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/TopicAttachmentDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/TopicAttachmentDTO.java new file mode 100644 index 0000000000..1fa32a8f37 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/TopicAttachmentDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dto.topic; + +import lombok.Data; + +/** + * desc: + * + * @author: LiuJanJun + * @date: 2021/4/13 5:33 下午 + * @version: 1.0 + */ +@Data +public class TopicAttachmentDTO { + + private Integer sort; + private String attachmentUrl; + +} diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/result/ResiTopicAndImgResultDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/result/ResiTopicAndImgResultDTO.java new file mode 100644 index 0000000000..a4ec445d98 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/topic/result/ResiTopicAndImgResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.topic.result; + +import com.epmet.dto.topic.TopicAttachmentDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author liujianjun + * @Description 组-话题对象 + * @ClassName ResiGroupTopicResultDTO + * @Auth wangc + * @Date 2020-06-20 17:23 + */ +@Data +public class ResiTopicAndImgResultDTO implements Serializable { + + private String topicId; + private String topicContent; + + private List topicImgList; + +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java index eac79f016a..16530a61a2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/constant/ProjectConstant.java @@ -64,4 +64,7 @@ public interface ProjectConstant { String XIA_JI = "xiaji"; String GRID_ID = "GRID_ID"; String AGENCY_ID = "AGENCY_ID"; + + + String ISSUE = "issue"; } 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 9259e12463..b47d3cc8ef 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 @@ -569,10 +569,7 @@ public class DemoController { } @PostMapping("gridgovern") - public void gridGovern(){ - String customerId = "45687aa479955f9d06204d415238f7cc"; -// String customerId = "epmettest"; - String monthId = "202009"; + public void gridGovern(@RequestParam("customerId")String customerId,@RequestParam("monthId")String monthId){ calGridIndexService.calGridIndexGovernAbility(customerId,monthId); } @@ -725,10 +722,10 @@ public class DemoController { /** * @return com.epmet.commons.tools.utils.Result - * @param + * @param * @author yinzuomei * @description screen_index_data_monthly 赋值ALL_PARENT_IDS - * @Date 2020/10/10 17:59 + * @Date 2020/10/10 17:59 **/ @DataSource(DataSourceConstant.EVALUATION_INDEX) @PostMapping("updateDeptIndexMonthly") @@ -813,15 +810,6 @@ public class DemoController { return new Result(); } - /*@Autowired - private ScreenGrassrootsGovernDataAbsorptionService ndddYhjfService; - - @PostMapping("diff") - public Result diff(@RequestBody ScreenCentralZoneDataFormDTO param){ - ndddYhjfService.difficultyDataHub(param); - return new Result(); - }*/ - @PostMapping("project-test") public Result project(@RequestBody ScreenCentralZoneDataFormDTO param){ screenProjectSettleService.extractScreenData(param); @@ -869,4 +857,17 @@ public class DemoController { return new Result(); } + @Autowired + private ScreenGrassrootsGovernDataAbsorptionService ndddYhjfService; + + @PostMapping("diffOld") + public Result diff(@RequestBody ScreenCentralZoneDataFormDTO param){ + ndddYhjfService.difficultyDataHub(param); + return new Result(); + } + @PostMapping("testDiffNew") + public Result testDiff(@RequestBody ScreenCentralZoneDataFormDTO param){ + return new Result().ok(ndddYhjfService.difficultyDataExtract(param)); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java index 010004d7ba..911b73b479 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectCategoryDailyDao.java @@ -43,4 +43,12 @@ public interface FactOriginProjectCategoryDailyDao extends BaseDao selectListProjectCategoryGridDailyDTO(@Param("customerId") String customerId); + + /** + * @Description 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 + * @Param orgIds + * @author zxc + * @date 2021/4/13 下午4:36 + */ + List selectListProjectCategoryByOrg(@Param("orgIds")List orgIds,@Param("customerId") String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java index f53ef5b882..8e18ad5500 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectLogDailyDao.java @@ -74,6 +74,14 @@ public interface FactOriginProjectLogDailyDao extends BaseDao selectProjectAutoNoMy(@Param("customerId") String customerId,@Param("monthId") String monthId); + /** + * @Description 网格项目自治率查询 最新版 + * @Param customerId + * @Param monthId + * @author zxc + * @date 2021/4/12 上午10:46 + */ + List selectProjectAutoNoMyPlus(@Param("customerId") String customerId,@Param("monthId") String monthId); /** * 根据日期删除数据 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java index 086c2e4b61..82ea30952a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginProjectMainDailyDao.java @@ -27,6 +27,7 @@ import com.epmet.dto.pingyin.result.*; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; +import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -72,13 +73,13 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectGridClosedProject(@Param("customerId") String customerId,@Param("monthId") String monthId,@Param("status") String status); + List selectGridClosedProject(@Param("gridIds") List gridIds,@Param("monthId") String monthId,@Param("status") String status); List selectTransferRightRatio(@Param("customerId")String customerId, @Param("monthId")String monthId); @@ -188,7 +189,7 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectDifficultyBaseInfo(@Param("customerId")String customerId,@Param("thresholdValue") Integer thresholdValue); - + /** * @Description 查询评价周期内新立的项目,是为了增量新增难点赌点的图片库 * @param customerId @@ -229,6 +230,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectProjectTotal(@Param("customerId")String customerId, @Param("dateId")String dateId, @Param("monthId")String monthId); + /** + * @Description 组织查询项目总数 + * @Param orgIds + * @Param dateId + * @Param monthId + * @author zxc + * @date 2021/4/13 上午9:31 + */ + List selectProjectTotalByOrg(@Param("orgIds")List orgIds, @Param("dateId")String dateId, @Param("monthId")String monthId); + /** * @Description 查询已解决项目数 * @Param customerId @@ -238,6 +249,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectResolvedNum(@Param("customerId")String customerId, @Param("dateId")String dateId); + /** + * @Description 组织查询已解决项目数 + * @Param orgIds + * @Param dateId + * @author zxc + * @date 2021/4/13 上午9:41 + */ + List selectResolvedNumByOrg(@Param("orgIds")List orgIds, @Param("dateId")String dateId); + /** * @Description 查询 满意度评价次数 * @Param customerId @@ -247,6 +267,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectEvaluateCount(@Param("customerId")String customerId, @Param("dateId")String dateId, @Param("activeCodes") List activeCodes); + /** + * @Description 组织 查询 满意度评价次数 + * @Param orgIds + * @Param dateId + * @Param activeCodes + * @author zxc + * @date 2021/4/13 上午9:56 + */ + List selectEvaluateCountByOrg(@Param("orgIds")List orgIds, @Param("dateId")String dateId, @Param("activeCodes")List activeCodes); + /** * @Description 查询本月新增项目数 * @Param customerId @@ -256,6 +286,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectProjectIncr(@Param("customerId")String customerId, @Param("monthId")String monthId); + /** + * @Description 组织查询本月新增项目数 + * @Param orgIds + * @Param monthId + * @author zxc + * @date 2021/4/16 上午9:21 + */ + List selectProjectIncrByOrg(@Param("orgIds") List orgIds, @Param("monthId")String monthId); + /** * @Description 根据状态查询项目数 * @Param customerId @@ -266,6 +305,16 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectProjectCount(@Param("customerId")String customerId, @Param("monthId")String monthId, @Param("status") String status); + /** + * @Description 组织根据状态查询项目数 + * @Param orgIds + * @Param monthId + * @Param status + * @author zxc + * @date 2021/4/16 上午9:26 + */ + List selectProjectCountByOrg(@Param("orgIds") List orgIds, @Param("monthId")String monthId, @Param("status") String status); + /** * @Description 本月新增结案项目数 * @Param customerId @@ -275,6 +324,15 @@ public interface FactOriginProjectMainDailyDao extends BaseDao selectClosedIncr(@Param("customerId")String customerId, @Param("monthId")String monthId); + /** + * @Description 组织本月新增结案项目数 + * @Param orgIds + * @Param monthId + * @author zxc + * @date 2021/4/16 上午9:35 + */ + List selectClosedIncrByOrg(@Param("orgIds") List orgIds, @Param("monthId")String monthId); + /** * @Description 初始化screen_project_data数据 * 如果是dateId不为空,则查询前一天的数据 @@ -289,4 +347,25 @@ public interface FactOriginProjectMainDailyDao extends BaseDao initNewScreenProjectData(@Param("customerId")String customerId,@Param("dateId") String dateId,@Param("dataEndTime")String dataEndTime); -} \ No newline at end of file + /** + * desc: 获取难点堵点项目数据 + * + * @param customerId + * @param dateId + * @return java.util.List + * @author LiuJanJun + * @date 2021/4/12 1:35 下午 + */ + List getProjectForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId); + + /** + * desc: 获取难点堵点项目数据耗时 + * + * @param customerId + * @param dateId + * @return java.util.List + * @author LiuJanJun + * @date 2021/4/12 1:35 下午 + */ + List getProjectPeriodForDiff(@Param("customerId") String customerId, @Param("dateId") String dateId); +} 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 731347f2a6..cc8e1fb2a8 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 @@ -47,4 +47,5 @@ public interface ScreenProjectOrgDailyDao extends BaseDao selectOrgProject(@Param("agencyInfos") List agencyInfos, @Param("dateId") String dateId); + List selectOrgProjectByAgency(@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/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java index a11d394821..3adec6357e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.java @@ -49,6 +49,7 @@ public interface ScreenProjectQuantityOrgMonthlyDao extends BaseDao selectQuantityOrgMonthly(@Param("agencyInfos") List agencyInfos, @Param("monthId") String monthId); + List selectQuantityOrgMonthlyByAgency(@Param("agencyInfos") List agencyInfos, @Param("monthId") String monthId); /** * @Description 项目(事件)数量查询【本月之前的累计】 @@ -58,6 +59,7 @@ public interface ScreenProjectQuantityOrgMonthlyDao extends BaseDao selectQuantityGrandOrgMonthly(@Param("agencyInfos") List agencyInfos, @Param("monthId") String monthId); + List selectQuantityGrandOrgMonthlyByAgency(@Param("agencyInfos") List agencyInfos, @Param("monthId") String monthId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/IssueProjectCategoryDictDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/IssueProjectCategoryDictDao.java index 371cda3cf2..95d91fb9d4 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/IssueProjectCategoryDictDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/issue/IssueProjectCategoryDictDao.java @@ -37,5 +37,7 @@ public interface IssueProjectCategoryDictDao { List listByUpdatedTime(@Param("start") Date start, @Param("end") Date end); - IssueProjectCategoryDictEntity getById(@Param("customerId")String customerId, @Param("id")String id);; + IssueProjectCategoryDictEntity getById(@Param("customerId") String customerId, @Param("id") String id); + + List getAllByCId(@Param("customerId") String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java index 16a76f30ee..d9b11ddc6a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/topic/TopicDao.java @@ -15,6 +15,7 @@ import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.extract.result.TopicInfoResultDTO; import com.epmet.dto.topic.TopicOriginInfoDTO; import com.epmet.dto.topic.result.ResiGroupTopicResultDTO; +import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO; import com.epmet.dto.topic.result.ResiTopicOperationResultDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity; import org.apache.ibatis.annotations.Mapper; @@ -27,115 +28,118 @@ import java.util.List; public interface TopicDao { /** - * @Description 将组按照网格Id排序 * @param targetDate * @param customerId * @return List + * @Description 将组按照网格Id排序 * @author wangc * @date 2020.06.22 11:05 - **/ - List selectGroupOrderByGrid(@Param("targetDate")Date targetDate, @Param("customerId")String customerId); + **/ + List selectGroupOrderByGrid(@Param("targetDate") Date targetDate, @Param("customerId") String customerId); /** - * @Description 查询话题的操作记录,如果返回结果中没有对应Id的话题说明当日话题没有操作记录 * @param targetDate * @return List + * @Description 查询话题的操作记录,如果返回结果中没有对应Id的话题说明当日话题没有操作记录 * @author wangc * @date 2020.06.22 11:07 - **/ - List selectTopicOperationRecord(@Param("targetDate")Date targetDate); + **/ + List selectTopicOperationRecord(@Param("targetDate") Date targetDate); /** - * @Description 将组按照网格Id排序 * @param * @param customerId * @return List + * @Description 将组按照网格Id排序 * @author wangc * @date 2020.06.22 11:05 **/ - List selectGroupOrderByGridBetweenTimeRange(@Param("startDate")Date startDate, @Param("endDate")Date endDate, @Param("customerId")String customerId); + List selectGroupOrderByGridBetweenTimeRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("customerId") String customerId); /** - * @Description 查询话题的操作记录,如果返回结果中没有对应Id的话题说明当日话题没有操作记录 * @param * @return List + * @Description 查询话题的操作记录,如果返回结果中没有对应Id的话题说明当日话题没有操作记录 * @author wangc * @date 2020.06.22 11:07 **/ - List selectTopicOperationRecordBetweenTimeRange(@Param("startDate")Date startDate, @Param("endDate")Date endDate); + List selectTopicOperationRecordBetweenTimeRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate); /** * 根据ids获取话题信息 - * @author zhaoqifeng - * @date 2020/9/15 17:33 + * * @param ids * @return java.util.List + * @author zhaoqifeng + * @date 2020/9/15 17:33 */ List selectTopicByIds(@Param("ids") List ids); /** - * @Description 查询话题创建者信息 * @param topicIds + * @Description 查询话题创建者信息 * @author zxc * @date 2020/9/15 4:55 下午 */ - List selectTopicInfo(@Param("topicIds")List topicIds); + List selectTopicInfo(@Param("topicIds") List topicIds); /** - * @return java.util.List * @param customerId - * @param dateId yyyyMMdd + * @param dateId yyyyMMdd + * @return java.util.List * @author yinzuomei - * @description 根据日期查询resi_topic_operation,返回当前日期这一天内所有话题相关的操作记录 + * @description 根据日期查询resi_topic_operation,返回当前日期这一天内所有话题相关的操作记录 * @Date 2020/9/15 18:14 **/ - List selectListTopicOriginInfo(@Param("customerId")String customerId, @Param("dateId")String dateId); + List selectListTopicOriginInfo(@Param("customerId") String customerId, @Param("dateId") String dateId); /** - * @return java.util.List * @param customerId * @param dateId + * @return java.util.List * @author yinzuomei * @description 查询在这一天发生变化的话题记录 * @Date 2020/9/23 17:52 **/ - List queryUpdateTopicOriginInfoList(@Param("customerId")String customerId, @Param("dateId")String dateId); + List queryUpdateTopicOriginInfoList(@Param("customerId") String customerId, @Param("dateId") String dateId); /** - * @Description 查询话题的图片 * @param list * @return java.util.List + * @Description 查询话题的图片 * @author wangc * @date 2020.09.28 15:40 */ List selectTopicImgs(@Param("list") List list); /** - * @Description 得到话题(项目)内容 * @param list - * @return java.util.Map + * @return java.util.Map + * @Description 得到话题(项目)内容 * @author wangc * @date 2020.09.28 16:28 */ List selectTopicContent(@Param("list") List list); /** - * @Description 根据话题Id查询大屏项目的相关信息 * @param list * @return java.util.List + * @Description 根据话题Id查询大屏项目的相关信息 * @author wangc * @date 2021.03.08 17:13 - */ + */ List selectScreenProjectData(@Param("list") List list); /** - * @Description 初始化指定项目的图片 * @param customerId * @param list * @return java.util.List + * @Description 初始化指定项目的图片 * @author wangc * @date 2021.03.09 14:19 - */ - List initNewScreenProjectImgData(@Param("customerId")String customerId,@Param("list") List list); + */ + List initNewScreenProjectImgData(@Param("customerId") String customerId, @Param("list") List list); + + ResiTopicAndImgResultDTO getTopicAndImgs(@Param("topicId") String topicId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java index c570c4e453..35d0e46b8f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/evaluationindex/extract/FactOriginProjectMainDailyEntity.java @@ -103,6 +103,16 @@ public class FactOriginProjectMainDailyEntity extends BaseEpmetEntity { */ private String agencyId; + /** + * 来源:议题issue + */ + private String origin; + + /** + * 来源ID + */ + private String originId; + /** * 状态 */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java index cd696e25c6..15c533efc3 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/entity/project/ProjectEntity.java @@ -60,6 +60,11 @@ public class ProjectEntity extends BaseEpmetEntity { */ private String title; + /** + * 项目背景 + */ + private String backGround; + /** * 状态:待处理 pending,结案closed */ diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueProjectCategoryDictService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueProjectCategoryDictService.java index 4d2a96f7be..ad3e0f4f2f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueProjectCategoryDictService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/IssueProjectCategoryDictService.java @@ -36,4 +36,6 @@ public interface IssueProjectCategoryDictService{ List listByUpdatedTime(Date start, Date end); IssueProjectCategoryDictEntity getById(String customerId,String id); + + List getAllByCId(String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueProjectCategoryDictServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueProjectCategoryDictServiceImpl.java index 982030799f..38ae06e0e7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueProjectCategoryDictServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/Issue/impl/IssueProjectCategoryDictServiceImpl.java @@ -5,7 +5,6 @@ import com.epmet.constant.DataSourceConstant; import com.epmet.dao.issue.IssueProjectCategoryDictDao; import com.epmet.entity.issue.IssueProjectCategoryDictEntity; import com.epmet.service.Issue.IssueProjectCategoryDictService; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -39,4 +38,9 @@ public class IssueProjectCategoryDictServiceImpl implements IssueProjectCategory return issueProjectCategoryDictDao.getById(customerId,id); } + @Override + public List getAllByCId(String customerId) { + return issueProjectCategoryDictDao.getAllByCId(customerId); + } + } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java index 22dfccc44e..fc3c7532d1 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/dataToIndex/impl/CalGridIndexServiceImpl.java @@ -243,7 +243,7 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { } //网格总议题数目,网格人均议题数目 List gridIssueTotalList = issueExtractService.selectIssueTotal(customerId, monthId); - //网格总项目数 + //网格总项目数 从议题根据状态获取 List gridProjectTotalList = issueExtractService.selectGridProjectCount(customerId, monthId, ExtractConstant.SHIFT_PROJECT); //网格议题转项目率 List gridIssueCountList = issueExtractService.selectIssueTotalTwoMonth(customerId, monthId, DateUtils.minusMonthId(monthId)); @@ -254,38 +254,20 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { if (!CollectionUtils.isEmpty(projectAutoNoMyList)){ Map> groupByGrid = projectAutoNoMyList.stream().collect(Collectors.groupingBy(AutoNoMyResultDTO::getGridId)); groupByGrid.forEach((gridId,projectList) -> { - Map> groupByProject = projectList.stream().collect(Collectors.groupingBy(AutoNoMyResultDTO::getProjectId)); - AtomicReference autoSelf = new AtomicReference<>(true); - AtomicReference count = new AtomicReference<>(NumConstant.ZERO); - groupByProject.forEach((projectId,projects) -> { - String disposeGrid = projects.get(NumConstant.ZERO).getGridId(); - projects.forEach(p -> { - if (!disposeGrid.equals(p.getGridId())){ - autoSelf.set(false); - } - }); - if (autoSelf.get()) { - count.getAndSet(count.get() + NumConstant.ONE); - } - }); - autoMap.put(gridId,count.get()); + autoMap.put(gridId,projectList.size()); }); } //网格办结项目数 - List gridProjectClosedTotalList = projectMainService.selectGridClosedProject(customerId, monthId, ExtractConstant.CLOSED); + List gridProjectClosedTotalList = projectMainService.selectGridClosedProject(result.stream().map(m -> m.getGridId()).collect(Collectors.toList()), monthId, ExtractConstant.CLOSED); //网格吹哨部门准确率 【没被退回的项目数/项目总数 】 List transferRightRatioResultDTOS = projectMainService.selectTransferRightRatio(customerId, monthId); List transferRightRatioResultDTOS1 = projectLogService.selectNotReturn(customerId, monthId); if (!CollectionUtils.isEmpty(transferRightRatioResultDTOS1)){ - transferRightRatioResultDTOS.forEach(r -> { - transferRightRatioResultDTOS1.forEach(t -> { - r.setStatus(r.getProjectId().equals(t.getProjectId()) ? true : false); - }); - }); + transferRightRatioResultDTOS.forEach(r -> transferRightRatioResultDTOS1.forEach(t -> { + r.setStatus(r.getProjectId().equals(t.getProjectId())); + })); }else { - transferRightRatioResultDTOS.forEach(r -> { - r.setStatus(false); - }); + transferRightRatioResultDTOS.forEach(r -> r.setStatus(false)); } Map> groupByGridProject = transferRightRatioResultDTOS.stream().collect(Collectors.groupingBy(TransferRightRatioResultDTO::getGridId)); Map notReturnMap = new HashMap<>(16); @@ -303,9 +285,11 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { List projectEvaluateList = projectLogService.selectProjectEvaluate(customerId, monthId); Map resultSatisfactionScore = new HashMap<>(16); if (!CollectionUtils.isEmpty(projectEvaluateList)){ + // 根据网格分组 Map> groupByGrid = projectEvaluateList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getGridId)); groupByGrid.forEach((gridId,projectEvaluateInfoList) -> { Map scoreMap = new HashMap<>(16); + // 根据项目分组 Map> groupByProject = projectEvaluateInfoList.stream().collect(Collectors.groupingBy(ProjectEvaluateResultDTO::getProjectId)); groupByProject.forEach((projectId,projectList) -> { projectList.forEach(project -> { @@ -374,17 +358,21 @@ public class CalGridIndexServiceImpl implements CalGridIndexService { }); } // 5. 网格内解决的项目的满意度 - resultSatisfactionScore.forEach((k, v) -> { - if (r.getGridId().equals(k)) { - r.setSatisfactionRatio(v); - } - }); + if (!CollectionUtils.isEmpty(resultSatisfactionScore)){ + resultSatisfactionScore.forEach((k, v) -> { + if (r.getGridId().equals(k)) { + r.setSatisfactionRatio(v); + } + }); + } // 6. 网格自治项目数 - autoMap.forEach((k, v) -> { - if (r.getGridId().equals(k)) { - r.setSelfSolveProjectCount(v); - } - }); + if (!CollectionUtils.isEmpty(autoMap)){ + autoMap.forEach((k, v) -> { + if (r.getGridId().equals(k)) { + r.setSelfSolveProjectCount(v); + } + }); + } }); delGovernAbility(customerId, monthId); List> resultList = ListUtils.partition(result, NumConstant.ONE_HUNDRED); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java index 1a0a27eda9..2da14685eb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectCategoryDailyService.java @@ -47,4 +47,12 @@ public interface FactOriginProjectCategoryDailyService extends BaseService selectListProjectCategoryGridDailyDTO(String customerId); + + /** + * @Description 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 + * @Param orgIds + * @author zxc + * @date 2021/4/13 下午4:36 + */ + List selectListProjectCategoryByOrg(List orgIds,String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java index ea44540cd9..f77a01bf4a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/FactOriginProjectMainDailyService.java @@ -18,7 +18,6 @@ package com.epmet.service.evaluationindex.extract.todata; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.commons.tools.page.PageData; import com.epmet.dto.extract.FactOriginProjectMainDailyDTO; import com.epmet.dto.extract.result.GridProjectClosedTotalResultDTO; import com.epmet.dto.extract.result.OrgStatisticsResultDTO; @@ -27,11 +26,12 @@ import com.epmet.dto.indexcollect.result.CpcIndexCommonDTO; import com.epmet.dto.pingyin.result.*; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; +import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; +import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import java.util.List; -import java.util.Map; /** * 项目主表_日统计 @@ -41,66 +41,6 @@ import java.util.Map; */ public interface FactOriginProjectMainDailyService extends BaseService { - /** - * 默认分页 - * - * @param params - * @return PageData - * @author generator - * @date 2020-09-16 - */ - PageData page(Map params); - - /** - * 默认查询 - * - * @param params - * @return java.util.List - * @author generator - * @date 2020-09-16 - */ - List list(Map params); - - /** - * 单条查询 - * - * @param id - * @return FactOriginProjectMainDailyDTO - * @author generator - * @date 2020-09-16 - */ - FactOriginProjectMainDailyDTO get(String id); - - /** - * 默认保存 - * - * @param dto - * @return void - * @author generator - * @date 2020-09-16 - */ - void save(FactOriginProjectMainDailyDTO dto); - - /** - * 默认更新 - * - * @param dto - * @return void - * @author generator - * @date 2020-09-16 - */ - void update(FactOriginProjectMainDailyDTO dto); - - /** - * 批量删除 - * - * @param ids - * @return void - * @author generator - * @date 2020-09-16 - */ - void delete(String[] ids); - /** * 获取客户下项目 * @author zhaoqifeng @@ -121,13 +61,13 @@ public interface FactOriginProjectMainDailyService extends BaseService selectGridClosedProject(String customerId,String monthId,String status); + List selectGridClosedProject(List gridIds,String monthId,String status); List selectTransferRightRatio(String customerId,String monthId); @@ -275,6 +215,16 @@ public interface FactOriginProjectMainDailyService extends BaseService selectProjectTotal(String customerId,String dateId,String monthId); + /** + * @Description 组织查询项目总数 + * @Param orgIds + * @Param dateId + * @Param monthId + * @author zxc + * @date 2021/4/12 下午5:12 + */ + List selectProjectTotalByOrg(List orgIds,String dateId,String monthId); + /** * @Description 查询已解决项目数 * @Param customerId @@ -284,6 +234,15 @@ public interface FactOriginProjectMainDailyService extends BaseService selectResolvedNum(String customerId, String dateId); + /** + * @Description 组织查询已解决项目数 + * @Param orgIds + * @Param dateId + * @author zxc + * @date 2021/4/13 上午9:28 + */ + List selectResolvedNumByOrg(List orgIds, String dateId); + /** * @Description 查询 满意度评价次数 * @Param customerId @@ -293,6 +252,16 @@ public interface FactOriginProjectMainDailyService extends BaseService selectEvaluateCount(String customerId, String dateId,List activeCodes); + /** + * @Description 组织 查询 满意度评价次数 + * @Param customerId + * @Param dateId + * @Param activeCodes + * @author zxc + * @date 2021/4/13 上午9:52 + */ + List selectEvaluateCountByOrg(List orgIds, String dateId,List activeCodes); + /** * @Description 查询本月新增项目数 * @Param customerId @@ -302,6 +271,15 @@ public interface FactOriginProjectMainDailyService extends BaseService selectProjectIncr(String customerId, String monthId); + /** + * @Description 组织查询本月新增项目数 + * @Param orgIds + * @Param monthId + * @author zxc + * @date 2021/4/16 上午9:19 + */ + List selectProjectIncrByOrg(List orgIds, String monthId); + /** * @Description 根据状态查询项目数 * @Param customerId @@ -312,6 +290,16 @@ public interface FactOriginProjectMainDailyService extends BaseService selectProjectCount(String customerId, String monthId, String status); + /** + * @Description 组织根据状态查询项目数 + * @Param orgIds + * @Param monthId + * @Param status + * @author zxc + * @date 2021/4/16 上午9:24 + */ + List selectProjectCountByOrg(List orgIds, String monthId, String status); + /** * @Description 本月新增结案项目数 * @Param customerId @@ -321,6 +309,15 @@ public interface FactOriginProjectMainDailyService extends BaseService selectClosedIncr(String customerId, String monthId); + /** + * @Description 组织本月新增结案项目数 + * @Param orgIds + * @Param monthId + * @author zxc + * @date 2021/4/16 上午9:33 + */ + List selectClosedIncrByOrg(List orgIds, String monthId); + /** * @Description 初始化screen_project_data数据 * 如果是dateId不为空,则查询前一天的数据 @@ -340,4 +337,24 @@ public interface FactOriginProjectMainDailyService extends BaseService list,Integer exceedLimit,Integer about2exceedLimit); -} \ No newline at end of file + /** + * desc: 条件获取项目数据 + * + * @param param + * @return java.util.List + * @author LiuJanJun + * @date 2021/4/12 11:07 上午 + */ + List getProjectForDiff(ScreenCentralZoneDataFormDTO param); + + /** + * desc: 根据项目数据 获取相关连的项目耗时 + * + * @param param + * @return java.util.List + * @author LiuJanJun + * @date 2021/4/12 1:53 下午 + */ + List getProjectPeriod(ScreenCentralZoneDataFormDTO param); + +} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java index c97322b4b4..6e3f7abb90 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectCategoryDailyServiceImpl.java @@ -32,6 +32,7 @@ import com.epmet.service.Issue.IssueProjectCategoryDictService; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectCategoryDailyService; import com.epmet.service.project.ProjectService; 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.transaction.annotation.Transactional; @@ -119,4 +120,18 @@ public class FactOriginProjectCategoryDailyServiceImpl extends BaseServiceImpl list=baseDao.selectListProjectCategoryGridDailyDTO(customerId); return list; } + + /** + * @Description 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 + * @Param orgIds + * @author zxc + * @date 2021/4/13 下午4:36 + */ + @Override + public List selectListProjectCategoryByOrg(List orgIds,String customerId) { + if (!CollectionUtils.isEmpty(orgIds)){ + return new ArrayList<>(); + } + return baseDao.selectListProjectCategoryByOrg(orgIds,customerId); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java index b710d08af5..9be7b9f44f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectLogDailyServiceImpl.java @@ -156,7 +156,8 @@ public class FactOriginProjectLogDailyServiceImpl extends BaseServiceImpl selectProjectAutoNoMy(String customerId, String monthId) { - return baseDao.selectProjectAutoNoMy(customerId, monthId); +// return baseDao.selectProjectAutoNoMy(customerId, monthId); + return baseDao.selectProjectAutoNoMyPlus(customerId, monthId); } @Override diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java index 7f9d220602..9553485a0e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginProjectMainDailyServiceImpl.java @@ -17,14 +17,9 @@ package com.epmet.service.evaluationindex.extract.todata.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -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.page.PageData; -import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; @@ -39,17 +34,22 @@ import com.epmet.dto.pingyin.result.*; import com.epmet.dto.result.CostDayResultDTO; import com.epmet.dto.screen.ScreenProjectDataDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; +import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; +import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; +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.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -58,6 +58,7 @@ import java.util.stream.Collectors; * @author generator generator@elink-cn.com * @since v1.0.0 2020-09-16 */ +@Slf4j @Service @DataSource(DataSourceConstant.STATS) public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl implements FactOriginProjectMainDailyService { @@ -66,57 +67,6 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, FactOriginProjectMainDailyDTO.class); - } - - @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, FactOriginProjectMainDailyDTO.class); - } - - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; - } - - @Override - public FactOriginProjectMainDailyDTO get(String id) { - FactOriginProjectMainDailyEntity entity = baseDao.selectById(id); - return ConvertUtils.sourceToTarget(entity, FactOriginProjectMainDailyDTO.class); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void save(FactOriginProjectMainDailyDTO dto) { - FactOriginProjectMainDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactOriginProjectMainDailyEntity.class); - insert(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(FactOriginProjectMainDailyDTO dto) { - FactOriginProjectMainDailyEntity entity = ConvertUtils.sourceToTarget(dto, FactOriginProjectMainDailyEntity.class); - updateById(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(String[] ids) { - // 逻辑删除(@TableLogic 注解) - baseDao.deleteBatchIds(Arrays.asList(ids)); - } @Override public List getProjectByCustomer(String customerId) { @@ -135,15 +85,18 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl selectGridClosedProject(String customerId, String monthId, String status) { - return baseDao.selectGridClosedProject(customerId, monthId,status); + public List selectGridClosedProject(List gridIds, String monthId, String status) { + if (CollectionUtils.isEmpty(gridIds)){ + return new ArrayList<>(); + } + return baseDao.selectGridClosedProject(gridIds, monthId,status); } @Override @@ -288,6 +241,15 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl(); } + @Override + public List selectProjectTotalByOrg(List orgIds, String dateId, String monthId) { + if (!CollectionUtils.isEmpty(orgIds)){ + List projectTotalResultDTOS = baseDao.selectProjectTotalByOrg(orgIds, dateId, monthId); + return projectTotalResultDTOS; + } + return new ArrayList<>(); + } + /** * @Description 查询已解决项目数 * @Param customerId @@ -304,6 +266,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl(); } + /** + * @Description 组织查询已解决项目数 + * @Param orgIds + * @Param dateId + * @author zxc + * @date 2021/4/13 上午9:29 + */ + @Override + public List selectResolvedNumByOrg(List orgIds, String dateId) { + if (!CollectionUtils.isEmpty(orgIds)){ + List resolvedNumResultDTOS = baseDao.selectResolvedNumByOrg(orgIds, dateId); + return resolvedNumResultDTOS; + } + return new ArrayList<>(); + } + /** * @Description 查询 满意度评价次数 * @Param customerId @@ -320,6 +298,23 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl(); } + /** + * @Description 组织 查询 满意度评价次数 + * @Param customerId + * @Param dateId + * @Param activeCodes + * @author zxc + * @date 2021/4/13 上午9:54 + */ + @Override + public List selectEvaluateCountByOrg(List orgIds, String dateId, List activeCodes) { + if (!CollectionUtils.isEmpty(orgIds)){ + List evaluateTotalResultDTOS = baseDao.selectEvaluateCountByOrg(orgIds, dateId, activeCodes); + return evaluateTotalResultDTOS; + } + return new ArrayList<>(); + } + /** * @Description 查询本月新增项目数 * @Param customerId @@ -336,6 +331,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl(); } + /** + * @Description 组织查询本月新增项目数 + * @Param orgIds + * @Param monthId + * @author zxc + * @date 2021/4/16 上午9:19 + */ + @Override + public List selectProjectIncrByOrg(List orgIds, String monthId) { + if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){ + List projectIncrResultDTOS = baseDao.selectProjectIncrByOrg(orgIds, monthId); + return projectIncrResultDTOS; + } + return new ArrayList<>(); + } + /** * @Description 根据状态查询项目数 * @Param customerId @@ -353,6 +364,23 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl(); } + /** + * @Description 组织根据状态查询项目数 + * @Param orgIds + * @Param monthId + * @Param status + * @author zxc + * @date 2021/4/16 上午9:24 + */ + @Override + public List selectProjectCountByOrg(List orgIds, String monthId, String status) { + if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){ + List resultDTOS = baseDao.selectProjectCountByOrg(orgIds, monthId, status); + return resultDTOS; + } + return new ArrayList<>(); + } + /** * @Description 本月新增结案项目数 * @Param customerId @@ -369,6 +397,22 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl(); } + /** + * @Description 组织本月新增结案项目数 + * @Param orgIds + * @Param monthId + * @author zxc + * @date 2021/4/16 上午9:33 + */ + @Override + public List selectClosedIncrByOrg(List orgIds, String monthId) { + if (!CollectionUtils.isEmpty(orgIds) && StringUtils.isNotBlank(monthId)){ + List result = baseDao.selectClosedIncrByOrg(orgIds, monthId); + return result; + } + return new ArrayList<>(); + } + /** * @Description 初始化screen_project_data数据 * 如果是dateId不为空,则查询前一天的数据 @@ -387,7 +431,8 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl initNewScreenProjectData(String customerId,Integer rows , String dateId,Integer exceedLimit,Integer about2exceedLimit) { boolean ifBeforeYesterday = true; - if(Integer.parseInt(DateUtils.getBeforeNDay(NumConstant.ONE)) > Integer.parseInt(dateId)){ + int beforeDate = Integer.parseInt(DateUtils.getBeforeNDay(NumConstant.ONE)); + if(beforeDate > Integer.parseInt(dateId)){ ifBeforeYesterday = false; } List projects = baseDao.initNewScreenProjectData(customerId, rows <= NumConstant.ZERO ? "" : dateId, dateId); @@ -421,6 +466,15 @@ public class FactOriginProjectMainDailyServiceImpl extends BaseServiceImpl getProjectForDiff(ScreenCentralZoneDataFormDTO param) { + return baseDao.getProjectForDiff(param.getCustomerId(),param.getDateId()); + } + + @Override + public List getProjectPeriod(ScreenCentralZoneDataFormDTO param) { + return baseDao.getProjectPeriodForDiff(param.getCustomerId(),param.getDateId()); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java index 8f1985b6be..77b4d843b8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java @@ -128,7 +128,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { factOriginProjectMainDailyService.deleteByDate(customerId, dateString); if (!CollectionUtils.isEmpty(projectList)) { //提取议题ID - List issueIds = projectList.stream().map(ProjectDTO::getOriginId).collect(Collectors.toList()); + List issueIds = + projectList.stream().filter(item -> ProjectConstant.ISSUE.equals(item.getOrigin())).map(ProjectDTO::getOriginId).collect(Collectors.toList()); //获取议题信息 List issueList = issueService.getIssueInfoByIds(issueIds); //提取话题ID @@ -144,18 +145,28 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { FactOriginProjectMainDailyEntity entity = new FactOriginProjectMainDailyEntity(); entity.setId(project.getId()); entity.setAgencyId(project.getAgencyId()); + entity.setOrigin(project.getOrigin()); + entity.setOriginId(project.getOriginId()); entity.setCustomerId(customerId); entity.setYearId(dimId.getYearId()); entity.setQuarterId(dimId.getQuarterId()); entity.setMonthId(dimId.getMonthId()); entity.setWeekId(dimId.getWeekId()); entity.setDateId(dimId.getDateId()); - entity.setIssueId(project.getOriginId()); + if (ProjectConstant.ISSUE.equals(project.getOrigin())) { + entity.setIssueId(project.getOriginId()); + } else { + entity.setIssueId(""); + } entity.setProjectStatus(project.getStatus()); entity.setIsResolved(project.getClosedStatus()); entity.setCreatedTime(project.getCreatedTime()); entity.setUpdatedTime(project.getUpdatedTime()); entity.setPids(project.getOrgIdPath()); + entity.setIssueCreatorId(""); + entity.setTopicId(""); + entity.setTopicCreatorId(""); + entity.setGridId(""); String[] pIds = project.getOrgIdPath().split(StrConstant.COLON); if (pIds.length > 1) { entity.setPid(pIds[pIds.length - 2]); @@ -168,17 +179,23 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { entity.setIsOverdue(NumConstant.ZERO_STR); return entity; }).collect(Collectors.toList()); - list.forEach(entity -> issueList.stream().filter(issueDTO -> issueDTO.getId().equals(entity.getIssueId())).forEach(issue -> { - entity.setIssueCreatorId(issue.getCreatedBy()); - entity.setTopicId(issue.getSourceId()); - })); - list.forEach(entity -> topicList.stream().filter(topicDTO -> topicDTO.getId().equals(entity.getTopicId())).forEach(topic -> { - entity.setTopicCreatorId(topic.getCreatedBy()); - entity.setGridId(topic.getGridId()); - })); - list.forEach(entity -> partyMemberList.stream().filter(partyMemberDTO -> partyMemberDTO.getGridId().equals(entity.getGridId()) && partyMemberDTO.getUserId().equals(entity.getTopicCreatorId())).forEach(partyMember -> { - entity.setIsParty(NumConstant.ONE_STR); - })); + if (CollectionUtils.isNotEmpty(issueList)) { + list.forEach(entity -> issueList.stream().filter(issueDTO -> issueDTO.getId().equals(entity.getIssueId())).forEach(issue -> { + entity.setIssueCreatorId(issue.getCreatedBy()); + entity.setTopicId(issue.getSourceId()); + })); + } + if (CollectionUtils.isNotEmpty(topicList)) { + list.forEach(entity -> topicList.stream().filter(topicDTO -> topicDTO.getId().equals(entity.getTopicId())).forEach(topic -> { + entity.setTopicCreatorId(topic.getCreatedBy()); + entity.setGridId(topic.getGridId()); + })); + } + if (CollectionUtils.isNotEmpty(partyMemberList)) { + list.forEach(entity -> partyMemberList.stream().filter(partyMemberDTO -> partyMemberDTO.getGridId().equals(entity.getGridId()) && partyMemberDTO.getUserId().equals(entity.getTopicCreatorId())).forEach(partyMember -> { + entity.setIsParty(NumConstant.ONE_STR); + })); + } list.forEach(entity -> finishOrgList.stream().filter(finish -> entity.getId().equals(finish.getProjectId())).forEach(dto -> { String[] orgIds = dto.getPIdPath().split(StrConstant.COLON); String org = ""; @@ -228,6 +245,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { entity.setOrgId(process.getGridId()); entity.setPid(process.getAgencyId()); }else{ + entity.setOrgType(OrgTypeConstant.AGENCY); + entity.setOrgId(process.getAgencyId()); if(!process.getPids().contains(StrConstant.COLON)){ entity.setPids(""); entity.setPid(NumConstant.ZERO_STR); @@ -278,6 +297,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { entity.setOrgId(process.getGridId()); entity.setPid(process.getAgencyId()); } else { + entity.setOrgType(OrgTypeConstant.AGENCY); + entity.setOrgId(process.getAgencyId()); if (!process.getPids().contains(StrConstant.COLON)) { entity.setPids(""); entity.setPid(NumConstant.ZERO_STR); @@ -358,6 +379,8 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { entity.setOrgId(process.getGridId()); entity.setPid(process.getAgencyId()); }else{ + entity.setOrgType(OrgTypeConstant.AGENCY); + entity.setOrgId(process.getAgencyId()); if(!process.getPids().contains(StrConstant.COLON)){ entity.setPids(""); entity.setPid(NumConstant.ZERO_STR); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java index 56c73b2de5..817d714096 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/ScreenGrassrootsGovernDataAbsorptionService.java @@ -26,4 +26,14 @@ public interface ScreenGrassrootsGovernDataAbsorptionService { * @date 2020.09.25 10:00 **/ void difficultyDataHub(ScreenCentralZoneDataFormDTO param); + + /** + * desc: 新的难点堵点抽取 + * + * @param param + * @return boolean + * @author LiuJanJun + * @date 2021/4/9 6:05 下午 + */ + boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java index 9cdd394e67..0210ea7b30 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenExtractServiceImpl.java @@ -171,7 +171,8 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { } ScreenCentralZoneDataFormDTO param = new ScreenCentralZoneDataFormDTO(); - param.setCustomerId(customerId);param.setDateId(dateId); + param.setCustomerId(customerId); + param.setDateId(dateId); //中央区 screen_user_total_data try { screenCentralZoneDataAbsorptionService.centralZoneDataHub(param); @@ -181,7 +182,12 @@ public class ScreenExtractServiceImpl implements ScreenExtractService { //基层治理- 难点赌点 screen_difficulty_data | screen_difficulty_img_data try { log.info("【难点赌点数据上报开始------】 当前客户Id{}",param.getCustomerId()); - screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param); + //screenGrassrootsGovernDataAbsorptionService.difficultyDataHub(param); + + ScreenCentralZoneDataFormDTO param2 = new ScreenCentralZoneDataFormDTO(); + param2.setCustomerId(customerId); + param2.setDateId(null); + screenGrassrootsGovernDataAbsorptionService.difficultyDataExtract(param2); log.info("【难点赌点数据上报结束------】 当前客户Id{}",param.getCustomerId()); }catch (Exception e){ log.error("基层治理-难点赌点抽取到大屏失败,customerId为:"+customerId+"dateId为:"+dateId, e); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java index 3554743482..d40fbd8b6a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/toscreen/impl/ScreenGrassrootsGovernDataAbsorptionServiceImpl.java @@ -4,13 +4,22 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.constant.ProjectConstant; +import com.epmet.dto.ProjectCategoryDTO; +import com.epmet.dto.ProjectDTO; import com.epmet.dto.org.GridInfoDTO; import com.epmet.dto.project.result.ProjectLatestOperationResultDTO; import com.epmet.dto.screen.form.ProjectSourceMapFormDTO; import com.epmet.dto.screen.form.ScreenCentralZoneDataFormDTO; +import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO; +import com.epmet.entity.evaluationindex.extract.FactOriginProjectMainDailyEntity; +import com.epmet.entity.evaluationindex.extract.FactOriginProjectOrgPeriodDailyEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyDataEntity; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity; import com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity; +import com.epmet.entity.issue.IssueProjectCategoryDictEntity; +import com.epmet.entity.stats.DimAgencyEntity; +import com.epmet.service.Issue.IssueProjectCategoryDictService; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; import com.epmet.service.evaluationindex.extract.toscreen.ScreenGrassrootsGovernDataAbsorptionService; import com.epmet.service.evaluationindex.indexcal.CpcIndexCalculateService; @@ -20,6 +29,7 @@ import com.epmet.service.org.CustomerGridService; import com.epmet.service.point.UserPointService; import com.epmet.service.project.ProjectProcessService; import com.epmet.service.project.ProjectService; +import com.epmet.service.stats.DimAgencyService; import com.epmet.service.topic.TopicService; import com.epmet.service.user.UserService; import lombok.extern.slf4j.Slf4j; @@ -49,6 +59,8 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr @Autowired private CustomerGridService customerGridService; @Autowired + private DimAgencyService dimAgencyService; + @Autowired private UserPointService userPointService; @Autowired private CpcIndexCalculateService cpcIndexCalculateService; @@ -64,10 +76,13 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr private TopicService topicService; @Autowired private ProjectService projectService; + @Autowired + private IssueProjectCategoryDictService issueProjectCategoryDictService; + /** - * @Description 用户积分、党员分值数据中转站 * @param param * @return + * @Description 用户积分、党员分值数据中转站 * @author wangc * @date 2020.09.25 09:53 **/ @@ -79,16 +94,16 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr //2.查询出客户下网格的相关信息 List gridList = customerGridService.queryGridInfoList(param.getCustomerId()); // list 转 map,以gridId为key,a = gridList,作为value,(o,n)->o 是遇到相同的gridId舍弃,(o,n)->n 是覆盖原来的gridId - Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO :: getGridId,a -> a,(o, n) -> o)); + Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, a -> a, (o, n) -> o)); //3.查询出客户下用户的累计积分(累计值,没有时间概念,否则需要查询积分明细计算出评价周期末的得分) - Map pointMap = userPointService.getUserPointMap(param.getCustomerId()); + Map pointMap = userPointService.getUserPointMap(param.getCustomerId()); //4.查询出客户下党员的分值 String dateId = param.getDateId(); - if(StringUtils.isEmpty(dateId)){ + if (StringUtils.isEmpty(dateId)) { //如果没有传月份,则使用当前时间的上一个月 dateId = DateUtils.getBeforeNMonth(NumConstant.ONE); - }else{ + } else { String dateType = DateUtils.identifyTimeDimension(dateId); if (StringUtils.isEmpty(dateType) || !StringUtils.equalsAny(dateType, "date", "month")) { dateId = DateUtils.getBeforeNMonth(NumConstant.ONE); @@ -98,21 +113,21 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr } final String finalDateId = dateId; // 查询党员积分 - Map scoreMap = cpcIndexCalculateService.getCpcScore(param.getCustomerId(),dateId); + Map scoreMap = cpcIndexCalculateService.getCpcScore(param.getCustomerId(), dateId); //剔除垃圾数据 registeredUsers.removeIf(user -> null == gridMap.get(user.getGridId())); //5.整合数据 - if(!CollectionUtils.isEmpty(registeredUsers)){ + if (!CollectionUtils.isEmpty(registeredUsers)) { registeredUsers.forEach(user -> { GridInfoDTO gridInfo = gridMap.get(user.getGridId()); - if(null != gridInfo){ + if (null != gridInfo) { user.setGridName(gridInfo.getGridName()); user.setOrgId(gridInfo.getAgencyId()); user.setOrgName(gridInfo.getOrgName()); //原始数据Pid使用英文:隔开,大屏数据要求按照英文,隔开 - user.setAllParentIds(gridInfo.getPids().replaceAll(StrConstant.COLON,StrConstant.COMMA)); + user.setAllParentIds(gridInfo.getPids().replaceAll(StrConstant.COLON, StrConstant.COMMA)); } Integer point = pointMap.get(user.getUserId()); BigDecimal score = scoreMap.get(user.getUserId()); @@ -127,21 +142,23 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr } /** - * @Description 难点赌点数据中转站 * @param param * @return + * @Description 难点赌点数据中转站 * @author wangc * @date 2020.09.25 10:00 **/ @Override public void difficultyDataHub(ScreenCentralZoneDataFormDTO param) { //查询数据 - List difficulties = factOriginProjectMainDailyService.getDifficultyBaseInfo(param.getCustomerId(),projectService.getOvertimeProjectByParameter(param.getCustomerId())); - if(CollectionUtils.isEmpty(difficulties)) return; + List difficulties = factOriginProjectMainDailyService.getDifficultyBaseInfo(param.getCustomerId(), projectService.getOvertimeProjectByParameter(param.getCustomerId())); + if (CollectionUtils.isEmpty(difficulties)) { + return; + } //2.查询出客户下网格的相关信息 List gridList = customerGridService.queryGridInfoList(param.getCustomerId()); - Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO :: getGridId,a -> a,(o, n) -> o)); + Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, a -> a, (o, n) -> o)); //剔除垃圾数据(本次需要更新的数据集) //for(Iterator iter = difficulties.iterator(); iter.hasNext();){ @@ -150,33 +167,36 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr // iter.remove(); // } //} - difficulties.removeIf( diff -> null == gridMap.get(diff.getOrgId())); + difficulties.removeIf(diff -> null == gridMap.get(diff.getOrgId())); - List projectIds = difficulties.stream().map(ScreenDifficultyDataEntity :: getEventId).distinct().collect(Collectors.toList()); + List projectIds = difficulties.stream().map(ScreenDifficultyDataEntity::getEventId).distinct().collect(Collectors.toList()); //最近一次操作 - Map latestOperationMap = projectProcessService.getLatestOperation(projectIds,param.getCustomerId()); + Map latestOperationMap = projectProcessService.getLatestOperation(projectIds, param.getCustomerId()); //图片 - List projectSourceMap = difficulties.stream().map(diff->{ - ProjectSourceMapFormDTO map = new ProjectSourceMapFormDTO();map.setProjectId(diff.getEventId());map.setSourceId(diff.getEventImgUrl());return map; + List projectSourceMap = difficulties.stream().map(diff -> { + ProjectSourceMapFormDTO map = new ProjectSourceMapFormDTO(); + map.setProjectId(diff.getEventId()); + map.setSourceId(diff.getEventImgUrl()); + return map; }).collect(Collectors.toList()); //factOriginProjectMainDailyService.getNewProject(param.getCustomerId(),projectIds); - Map> imgMap = topicService.getTopicImgs(projectSourceMap); + Map> imgMap = topicService.getTopicImgs(projectSourceMap); - Map contentMap = topicService.getTopicContent(projectSourceMap); + Map contentMap = topicService.getTopicContent(projectSourceMap); - difficulties.forEach( diff -> { + difficulties.forEach(diff -> { - List figureList = CollectionUtils.isEmpty(imgMap) ? null : imgMap.get(diff.getEventId()); - diff.setEventImgUrl(CollectionUtils.isEmpty(figureList) ? "" : figureList.get(NumConstant.ZERO).getEventImgUrl()); + List figureList = CollectionUtils.isEmpty(imgMap) ? null : imgMap.get(diff.getEventId()); + diff.setEventImgUrl(CollectionUtils.isEmpty(figureList) ? "" : figureList.get(NumConstant.ZERO).getEventImgUrl()); - if(!CollectionUtils.isEmpty(contentMap)) { + if (!CollectionUtils.isEmpty(contentMap)) { diff.setEventContent(contentMap.get(diff.getEventId())); } - if(! CollectionUtils.isEmpty(latestOperationMap)){ + if (!CollectionUtils.isEmpty(latestOperationMap)) { ProjectLatestOperationResultDTO oper = latestOperationMap.get(diff.getEventId()); - if(null != oper){ + if (null != oper) { diff.setLatestOperateDesc(oper.getOperationName()); diff.setEventTitle(oper.getTitle()); diff.setEventCostTime(oper.getCostTime()); @@ -196,4 +216,261 @@ public class ScreenGrassrootsGovernDataAbsorptionServiceImpl implements ScreenGr screenDifficultyDataService.dataClean(param.getCustomerId(),difficulties,imgList); log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}",param.getCustomerId(),JSON.toJSONString(difficulties)); } + + @Override + public boolean difficultyDataExtract(ScreenCentralZoneDataFormDTO param) { + //1.根据客户Id 获取所有项目数据 + List difficultyBaseList = factOriginProjectMainDailyService.getProjectForDiff(param); + if (CollectionUtils.isEmpty(difficultyBaseList)) { + log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId()); + return false; + } + //获取业务库项目标题 + List bizProjectInfoList = projectService.getProjectInfo(param.getCustomerId(), null); + if (CollectionUtils.isEmpty(bizProjectInfoList)) { + log.warn("difficultyDataExtract customerId:{} have any project", param.getCustomerId()); + return false; + } + Map bizProjectInfoMap = bizProjectInfoList.stream().collect(Collectors.toMap(ProjectDTO::getId, o -> o, (o1, o2) -> o1)); + //获取agency维度 + List agencyList = dimAgencyService.getAgencyListByCustomerId(param.getCustomerId()); + Map agencyMap = agencyList.stream().collect(Collectors.toMap(DimAgencyEntity::getId, o -> o, (o1, o2) -> o1)); + //获取grid维度 + List gridList = customerGridService.queryGridInfoList(param.getCustomerId()); + Map gridMap = gridList.stream().collect(Collectors.toMap(GridInfoDTO::getGridId, o -> o, (o1, o2) -> o1)); + + //获取客户下所有项目分类 + List categoryList = issueProjectCategoryDictService.getAllByCId(param.getCustomerId()); + + //项目分类数据 todo 暂时查询所有 + List projectCategoryData = projectService.getProjectCategoryData(param.getCustomerId(), null); + //key projectId:categoryCode Set + Map> projectCategoryMap = projectCategoryData.stream() + .collect(Collectors.groupingBy(ProjectCategoryDTO::getProjectId, Collectors.mapping(ProjectCategoryDTO::getCategoryCode, Collectors.toList()))); + + //2.获取项目的所有节点耗时数据 + List projectPeriodList = factOriginProjectMainDailyService.getProjectPeriod(param); + //处理部门数去重(只要流转到就算) + Map> orgCountMap = new HashMap<>(); + //被处理次数 + Map handleCountMap = new HashMap<>(); + Set valideProjectIdSet = fillAnyCountAndValidProject(param, projectPeriodList, orgCountMap, handleCountMap); + + List diffList = new ArrayList<>(); + List imgDataEntities = new ArrayList<>(); + for (FactOriginProjectMainDailyEntity project : difficultyBaseList) { + if (agencyMap.get(project.getAgencyId()) == null || bizProjectInfoMap.get(project.getId()) == null) { + log.warn("未获取到相关的项目信息或者项目的所属组织信息,agencyId:{},projectId:{}",project.getAgencyId(),project.getId()); + continue; + } + //判断是否符合难点堵点条件 + if (!valideProjectIdSet.contains(project.getId())) { + continue; + } + ScreenDifficultyDataEntity diffEntity = buildBaseDiffEntity(project, agencyMap, gridMap, bizProjectInfoMap); + Set regCount = orgCountMap.get(project.getId()); + if (regCount != null) { + diffEntity.setEventReOrg(regCount.size()); + } else { + diffEntity.setEventReOrg(0); + } + Integer handleOrgCount = handleCountMap.get(project.getId()); + if (handleOrgCount != null) { + diffEntity.setEventHandledCount(handleOrgCount); + } else { + diffEntity.setEventHandledCount(0); + } + + diffEntity.setDataEndTime(StringUtils.isBlank(param.getDateId())?DateUtils.getBeforeNDay(NumConstant.ONE):param.getDateId()); + setCategoryInfo(diffEntity, project.getId(), categoryList, projectCategoryMap); + + + if (StringUtils.isNotBlank(project.getTopicId())) { + //获取图片及话题内容 + ResiTopicAndImgResultDTO topicInfo = topicService.getTopicAndImgs(project.getTopicId(), "image"); + if (topicInfo != null) { + diffEntity.setEventImgUrl(topicInfo.getTopicImgList().get(NumConstant.ZERO).getAttachmentUrl()); + diffEntity.setEventContent(topicInfo.getTopicContent()); + topicInfo.getTopicImgList().forEach(img -> { + ScreenDifficultyImgDataEntity imgData = new ScreenDifficultyImgDataEntity(); + imgData.setEventId(project.getId()); + imgData.setEventImgUrl(img.getAttachmentUrl()); + imgData.setSort(img.getSort()); + imgDataEntities.add(imgData); + imgData.setCustomerId(param.getCustomerId()); + }); + log.info("projectId:{} imgs:{}", project.getId(), imgDataEntities.stream().filter(o -> o.getEventId().equals(project.getId())).count()); + } + + } + diffList.add(diffEntity); + } + List collect = diffList.stream().filter(o -> o.getEventCostTime() < 5 * 24 * 60).collect(Collectors.toList()); + log.info("========:" + JSON.toJSONString(collect)); + log.info("========:" + JSON.toJSONString(diffList)); + log.info("========:" + JSON.toJSONString(imgDataEntities)); + + screenDifficultyDataService.dataClean(param.getCustomerId(),diffList,imgDataEntities); + log.info("【大屏数据抽取-难点赌点执行完毕】 客户Id{} 难点赌点数据{}", param.getCustomerId(), JSON.toJSONString(diffList)); + //3.获取项目的最后操作记录 + return true; + } + + /** + * desc:筛选出符合条件的的项目(超过超期时间的为超期项目)和处理的部门数及处理次数 + * @param param + * @param projectPeriodList + * @param orgCountMap + * @param handleCountMap + * @return + */ + private Set fillAnyCountAndValidProject(ScreenCentralZoneDataFormDTO param, List projectPeriodList, Map> orgCountMap, Map handleCountMap) { + //已经结案的项目的结案时间 + Set valideProjectIdSet = new HashSet<>(); + Map closeProjectDateMap = projectPeriodList.stream().filter(o -> ProjectConstant.CLOSE.equals(o.getOperation())) + .collect(Collectors.toMap(FactOriginProjectOrgPeriodDailyEntity::getProjectId, FactOriginProjectOrgPeriodDailyEntity::getHandledDate, (o1, o2) -> o1)); + //超期项目阈值 + Integer overtimeConfig = projectService.getOvertimeProjectByParameter(param.getCustomerId()); + projectPeriodList.forEach(period -> { + Set orgCount = orgCountMap.get(period.getProjectId()); + if (orgCount == null) { + orgCount = new HashSet<>(); + } + orgCount.add(period.getOrgId()); + orgCountMap.put(period.getProjectId(), orgCount); + if (ProjectConstant.RESOLVED.equals(period.getIsResolved())) { + Integer handleCount = handleCountMap.getOrDefault(period.getProjectId(), 0); + handleCountMap.put(period.getProjectId(), ++handleCount); + } + + //筛选出 项目的结案时间 未结案的为当前时间(结案只有一条记录) + if (period.getHandledDate() != null) { + if (period.getHandledDate().getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) { + valideProjectIdSet.add(period.getProjectId()); + } + } else { + Date finishDate = closeProjectDateMap.getOrDefault(period.getProjectId(), new Date()); + if (finishDate.getTime() - period.getInformedDate().getTime() > overtimeConfig * 1000 * 60 * 60 * 24) { + valideProjectIdSet.add(period.getProjectId()); + } + } + + }); + return valideProjectIdSet; + } + + /** + * desc:设置项目类别 + * @param diffEntity + * @param projectId + * @param categoryList + * @param projectCategoryMap + */ + private void setCategoryInfo(ScreenDifficultyDataEntity diffEntity, String projectId, List categoryList, Map> projectCategoryMap) { + List categorySet = projectCategoryMap.get(projectId); + if (CollectionUtils.isEmpty(categorySet)) { + return; + } + projectCategoryMap.forEach((k, v) -> { + StringBuilder code = new StringBuilder(); + StringBuilder name = new StringBuilder(); + v.forEach(categoryCode -> { + List childCategory = new ArrayList<>(); + getParentNode(childCategory, categoryList, categoryCode); + String categoryCodes = childCategory.stream().map(IssueProjectCategoryDictEntity::getCategoryCode).collect(Collectors.joining(StrConstant.HYPHEN)); + String categoryNames = childCategory.stream().map(IssueProjectCategoryDictEntity::getCategoryName).collect(Collectors.joining(StrConstant.HYPHEN)); + + code.append(categoryCodes).append(StrConstant.COMMA_ZH); + name.append(categoryNames).append(StrConstant.COMMA_ZH); + }); + code.deleteCharAt(code.length() - NumConstant.ONE); + name.deleteCharAt(name.length() - NumConstant.ONE); + diffEntity.setEventCategoryCode(code.toString()); + diffEntity.setEventCategoryName(name.toString()); + log.info("code:{}",code.toString()); + log.info("name:{}",name.toString()); + }); + + } + + /** + * desc:构建难点堵点基础数据 + * @param project + * @param agencyMap + * @param gridMap + * @param bizProjectInfoMap + * @return + */ + private ScreenDifficultyDataEntity buildBaseDiffEntity(FactOriginProjectMainDailyEntity project, Map agencyMap, + Map gridMap, Map bizProjectInfoMap) { + ProjectDTO projectDTO = bizProjectInfoMap.get(project.getId()); + ScreenDifficultyDataEntity diff = new ScreenDifficultyDataEntity(); + diff.setCustomerId(project.getCustomerId()); + //大屏的是逗号隔开的 + String allPIds = project.getPids().replaceAll(StrConstant.COLON, StrConstant.COMMA); + DimAgencyEntity agencyInfoDTO = agencyMap.get(project.getAgencyId()); + diff.setEventTitle(projectDTO.getTitle()); + if (StringUtils.isBlank(project.getGridId())) { + diff.setOrgType("agency"); + diff.setOrgId(project.getAgencyId()); + diff.setParentId(project.getPid()); + diff.setAllParentIds(allPIds.replace(StrConstant.COMMA + project.getAgencyId(), StrConstant.EPMETY_STR)); + diff.setOrgName(agencyInfoDTO.getAgencyName()); + + if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) { + diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN.concat(diff.getOrgName()))); + } else { + diff.setEventSource(agencyInfoDTO.getAgencyName()); + } + //如果是组织的则 设置背景为内容 + diff.setEventContent(projectDTO.getBackGround()); + } else { + diff.setOrgType("grid"); + diff.setOrgId(project.getGridId()); + diff.setParentId(project.getAgencyId()); + //所有上级id 即包含agencyId在内的所有pids + diff.setAllParentIds(allPIds); + GridInfoDTO gridInfoDTO = gridMap.get(project.getGridId()); + diff.setOrgName(gridInfoDTO.getGridName()); + String agencyAndGridName = agencyInfoDTO.getAgencyName().concat(StrConstant.HYPHEN.concat(diff.getOrgName())); + if (StringUtils.isNotBlank(agencyInfoDTO.getAllParentName())) { + diff.setEventSource(agencyInfoDTO.getAllParentName().concat(StrConstant.HYPHEN).concat(agencyAndGridName)); + } else { + diff.setEventSource(agencyAndGridName); + } + } + + diff.setEventId(project.getId()); + String projectStatus = project.getProjectStatus(); + diff.setEventStatusCode(projectStatus); + + if (ProjectConstant.PENDING.equals(projectStatus)) { + diff.setEventStatusDesc("处理中"); + //项目耗时 当前时间-项目创建时间 + diff.setEventCostTime((int) ((System.currentTimeMillis() - projectDTO.getCreatedTime().getTime()) / 1000 / 60)); + } else { + diff.setEventStatusDesc("已结案"); + //项目耗时 更新时间-项目创建时间 + diff.setEventCostTime((int) ((projectDTO.getUpdatedTime().getTime() - projectDTO.getCreatedTime().getTime()) / 1000 / 60)); + } + //暂时不放内容 用不到 + diff.setLatestOperateDesc(""); + return diff; + } + + /** + * 递归查询父节点 + * + * @param childCategory + * @param categoryList + * @param categoryCode + */ + private void getParentNode(List childCategory, List categoryList, String categoryCode) { + categoryList.stream() + .filter(item -> Objects.nonNull(categoryCode) && Objects.equals(categoryCode, item.getCategoryCode())) + .forEach(menu -> { + getParentNode(childCategory, categoryList, menu.getParentCategoryCode()); + childCategory.add(menu); + }); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java index 8dbbe72d73..e46b85f91d 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java @@ -31,12 +31,14 @@ import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryGridDailyDao; import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryOrgDailyDao; import com.epmet.dto.ScreenCustomerGridDTO; import com.epmet.dto.extract.result.CustomerAgencyInfoResultDTO; +import com.epmet.dto.screen.ScreenProjectCategoryGridDailyDTO; import com.epmet.dto.screen.ScreenProjectCategoryOrgDailyDTO; import com.epmet.dto.screen.result.CategoryProjectResultDTO; import com.epmet.dto.screencoll.ScreenCollFormDTO; import com.epmet.entity.crm.CustomerRelationEntity; import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryOrgDailyEntity; import com.epmet.service.crm.CustomerRelationService; +import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectCategoryDailyService; import com.epmet.service.evaluationindex.screen.ScreenCustomerAgencyService; import com.epmet.service.evaluationindex.screen.ScreenCustomerGridService; import com.epmet.service.evaluationindex.screen.ScreenProjectCategoryOrgDailyService; @@ -74,6 +76,8 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl page(Map params) { @@ -194,23 +198,23 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); if (groupByLevel.containsKey(ScreenConstant.COMMUNITY)){ // 社区级别 - disposeOneCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId); + disposeOneCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.STREET)){ // 街道级别 - disposeOneCustomerSub(ScreenConstant.STREET,false,customerId,dateId); + disposeOneCustomerSub(ScreenConstant.STREET,false,customerId,dateId,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.DISTRICT)){ // 区级 - disposeOneCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId); + disposeOneCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.CITY)){ // 市级 - disposeOneCustomerSub(ScreenConstant.CITY,false,customerId,dateId); + disposeOneCustomerSub(ScreenConstant.CITY,false,customerId,dateId,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.PROVINCE)){ // 省级 - disposeOneCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId); + disposeOneCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId,agencyIdList); } } } @@ -224,7 +228,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl agencyIdList){ List result = new ArrayList<>(); if (isGrid){ // 是社区级别 @@ -255,6 +259,38 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); + List levelAgencyInfo = groupByLevel.get(level); + if (!CollectionUtils.isEmpty(levelAgencyInfo)){ + List orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId); + if (!CollectionUtils.isEmpty(result)){ + if (!CollectionUtils.isEmpty(screenProjectCategory)){ + result.forEach(r -> { + screenProjectCategory.forEach(pc -> { + if (r.getOrgId().equals(pc.getOrgId()) && r.getCategoryCode().equals(pc.getCategoryCode())){ + pc.setStatus(true); + r.setProjectTotal(r.getProjectTotal() + pc.getProjectTotal()); + } + }); + }); + Map> groupByStatus = screenProjectCategory.stream().collect(Collectors.groupingBy(ScreenProjectCategoryGridDailyDTO::getStatus)); + List screenProjectCategoryNoCal = groupByStatus.get(false); + if (!CollectionUtils.isEmpty(screenProjectCategoryNoCal)){ + List noCalCategory = ConvertUtils.sourceToTarget(screenProjectCategoryNoCal, ScreenProjectCategoryOrgDailyEntity.class); + result.addAll(noCalCategory); + } + } + }else { + if (!CollectionUtils.isEmpty(screenProjectCategory)){ + result = ConvertUtils.sourceToTarget(screenProjectCategory, ScreenProjectCategoryOrgDailyEntity.class); + } + } + if (!CollectionUtils.isEmpty(result)){ + result.forEach(r -> {r.setOrgType(level);r.setDateId(dateId);}); + } + } deleteAndInsert(customerId,dateId,result); } @@ -273,23 +309,23 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); if (groupByLevel.containsKey(ScreenConstant.COMMUNITY)){ // 社区级别 - disposeMoreCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId,relationInfo); + disposeMoreCustomerSub(ScreenConstant.COMMUNITY,true,customerId,dateId,relationInfo,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.STREET)){ // 街道级别 - disposeMoreCustomerSub(ScreenConstant.STREET,false,customerId,dateId,relationInfo); + disposeMoreCustomerSub(ScreenConstant.STREET,false,customerId,dateId,relationInfo,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.DISTRICT)){ // 区级 - disposeMoreCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId,relationInfo); + disposeMoreCustomerSub(ScreenConstant.DISTRICT,false,customerId,dateId,relationInfo,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.CITY)){ // 市级 - disposeMoreCustomerSub(ScreenConstant.CITY,false,customerId,dateId,relationInfo); + disposeMoreCustomerSub(ScreenConstant.CITY,false,customerId,dateId,relationInfo,agencyIdList); } if (groupByLevel.containsKey(ScreenConstant.PROVINCE)){ // 省级 - disposeMoreCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId,relationInfo); + disposeMoreCustomerSub(ScreenConstant.PROVINCE,false,customerId,dateId,relationInfo,agencyIdList); } } } @@ -304,7 +340,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl relationInfo){ + private void disposeMoreCustomerSub(String level,Boolean isGrid,String customerId, String dateId, List relationInfo,List agencyIdList){ List result = new ArrayList<>(); if (isGrid){ // community级别走这 @@ -363,6 +399,41 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); + List levelAgencyInfo = groupByLevel.get(level); + if (!CollectionUtils.isEmpty(levelAgencyInfo)) { + List orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId); + if (!CollectionUtils.isEmpty(result)) { + if (!CollectionUtils.isEmpty(screenProjectCategory)) { + result.forEach(r -> { + screenProjectCategory.forEach(pc -> { + if (r.getOrgId().equals(pc.getOrgId()) && r.getCategoryCode().equals(pc.getCategoryCode())) { + pc.setStatus(true); + r.setProjectTotal(r.getProjectTotal() + pc.getProjectTotal()); + } + }); + }); + Map> groupByStatus = screenProjectCategory.stream().collect(Collectors.groupingBy(ScreenProjectCategoryGridDailyDTO::getStatus)); + List screenProjectCategoryNoCal = groupByStatus.get(false); + if (!CollectionUtils.isEmpty(screenProjectCategoryNoCal)) { + List noCalCategory = ConvertUtils.sourceToTarget(screenProjectCategoryNoCal, ScreenProjectCategoryOrgDailyEntity.class); + result.addAll(noCalCategory); + } + } + } else { + if (!CollectionUtils.isEmpty(screenProjectCategory)) { + result = ConvertUtils.sourceToTarget(screenProjectCategory, ScreenProjectCategoryOrgDailyEntity.class); + } + } + if (!CollectionUtils.isEmpty(result)) { + result.forEach(r -> { + r.setOrgType(level); + r.setDateId(dateId); + }); + } + } deleteAndInsert(customerId,dateId,result); } 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 64cb66e04c..5ac44463e1 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 @@ -172,7 +172,7 @@ public class ScreenProjectGridDailyServiceImpl extends BaseServiceImpl { - if (g.getGridId().equals(pt.getGridId())){ + if (g.getGridId().equals(pt.getOrgId())){ g.setProjectTotal(pt.getProjectTotal()); } }); @@ -180,7 +180,7 @@ public class ScreenProjectGridDailyServiceImpl extends BaseServiceImpl { - if (g.getGridId().equals(rn.getGridId())){ + if (g.getGridId().equals(rn.getOrgId())){ g.setResolvedNum(rn.getResolvedNum()); } }); 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 98fc2f38f7..3a37d17a40 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 @@ -29,12 +29,17 @@ 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.EvaluateTotalResultDTO; import com.epmet.dto.pingyin.result.ProjectOrgDailyResultDTO; +import com.epmet.dto.pingyin.result.ProjectTotalResultDTO; +import com.epmet.dto.pingyin.result.ResolvedNumResultDTO; import com.epmet.dto.screen.ScreenProjectOrgDailyDTO; import com.epmet.dto.screencoll.ScreenCollFormDTO; +import com.epmet.entity.crm.CustomerRelationEntity; import com.epmet.entity.evaluationindex.screen.ScreenProjectOrgDailyEntity; import com.epmet.entity.org.CustomerAgencyEntity; import com.epmet.service.crm.CustomerRelationService; +import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; import com.epmet.service.evaluationindex.screen.ScreenProjectOrgDailyService; import com.epmet.service.org.CustomerAgencyService; import com.google.common.collect.Lists; @@ -51,6 +56,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 项目(事件)分析按组织_按天统计 @@ -69,6 +75,8 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl page(Map params) { @@ -146,7 +154,7 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl agencyInfos = new ArrayList<>(); - //如果有子客户要按照跟组织的area_code查询组织列表 if(customerRelationService.haveSubCustomer(customerId)){ - // - CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId); - agencyInfos=agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode()); + // 多客户处理 + extractionProjectOrgDailyMoreCustomer(customerId,dateId); }else{ - agencyInfos=agencyDao.selectAgencyByCustomer(customerId); + // 单客户处理 + extractionProjectOrgDailyOneCustomer(customerId, dateId); } + } + + /** + * @Description 单客户处理 + * @Param customerId + * @Param dateId + * @author zxc + * @date 2021/4/15 上午9:09 + */ + public void extractionProjectOrgDailyOneCustomer(String customerId, String dateId){ + List agencyInfos = agencyDao.selectAgencyByCustomer(customerId); if (CollectionUtils.isEmpty(agencyInfos)){ log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId)); return; } - List projectOrgDaily = baseDao.selectOrgProject(agencyInfos, dateId); + List projectOrgDaily = baseDao.selectOrgProjectByAgency(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()); + List createProjects = disposeCreateProject(agencyInfos, dateId); + 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()); + } + }); }); + agencyInfos.forEach(a -> { + createProjects.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setBadTotal(p.getBadTotal() + a.getBadTotal()); + a.setEvaluateTotal(p.getEvaluateTotal() + a.getEvaluateTotal()); + a.setGoodTotal(p.getGoodTotal() + a.getGoodTotal()); + a.setProjectTotal(p.getProjectTotal() + a.getProjectTotal()); + a.setResolvedNum(p.getResolvedNum() + a.getResolvedNum()); + a.setResolvedRatio(getRatio(a.getResolvedNum(),a.getProjectTotal())); + a.setBadRatio(getRatio(a.getBadTotal(),a.getEvaluateTotal())); + a.setGoodRatio(getRatio(a.getGoodTotal(),a.getEvaluateTotal())); + } + }); + }); + log.info(agencyInfos.toString()); + del(customerId, dateId); + insert(agencyInfos,customerId,dateId); + } + + /** + * @Description 有子客户处理 + * @Param customerId + * @Param dateId + * @author zxc + * @date 2021/4/16 上午9:15 + */ + public void extractionProjectOrgDailyMoreCustomer(String customerId, String dateId){ + CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId); + List agencyInfos = agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode()); + if (CollectionUtils.isEmpty(agencyInfos)){ + log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId)); + return; + } + List projectOrgDaily = baseDao.selectOrgProject(agencyInfos, dateId); + if (CollectionUtils.isEmpty(projectOrgDaily)){ + log.info(String.format(PingYinConstants.SELECT_GRID_INFO_BY_ORG_IS_NULL,customerId)); + return; + } log.info(projectOrgDaily.toString()); agencyInfos.forEach(a -> { a.setDateId(dateId); @@ -195,11 +260,102 @@ public class ScreenProjectOrgDailyServiceImpl extends BaseServiceImpl parentAgencyInfos = agencyDao.selectAgencyByCustomer(customerId); + List createProjects = disposeCreateProject(parentAgencyInfos, dateId); + agencyInfos.forEach(a -> { + createProjects.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setBadTotal(p.getBadTotal() + a.getBadTotal()); + a.setEvaluateTotal(p.getEvaluateTotal() + a.getEvaluateTotal()); + a.setGoodTotal(p.getGoodTotal() + a.getGoodTotal()); + a.setProjectTotal(p.getProjectTotal() + a.getProjectTotal()); + a.setResolvedNum(p.getResolvedNum() + a.getResolvedNum()); + a.setResolvedRatio(getRatio(a.getResolvedNum(),a.getProjectTotal())); + a.setBadRatio(getRatio(a.getBadTotal(),a.getEvaluateTotal())); + a.setGoodRatio(getRatio(a.getGoodTotal(),a.getEvaluateTotal())); + } + }); + }); log.info(agencyInfos.toString()); del(customerId, dateId); insert(agencyInfos,customerId,dateId); } + /** + * @Description 组织直接立项处理 + * @Param agencyInfos + * @Param dateId + * @author zxc + * @date 2021/4/16 上午9:15 + */ + public List disposeCreateProject(List agencyInfos,String dateId){ + List orgIds = agencyInfos.stream().map(m -> m.getOrgId()).collect(Collectors.toList()); + List projectTotal = projectMainDailyService.selectProjectTotalByOrg(orgIds, dateId, null); + List resolvedNum = projectMainDailyService.selectResolvedNumByOrg(orgIds, dateId); + //查询 参与满意度评价的总次数 + String[] activeCodesAll = {PingYinConstants.EVALUATE_BAD,PingYinConstants.EVALUATE_GOOD,PingYinConstants.EVALUATE_PERFECT}; + List evaluateTotal = projectMainDailyService.selectEvaluateCountByOrg(orgIds, dateId, getActiveCode(activeCodesAll)); + //查询 满意+非常满意的总次数 + String[] activeCodesGood = {PingYinConstants.EVALUATE_GOOD,PingYinConstants.EVALUATE_PERFECT}; + List evaluateGood = projectMainDailyService.selectEvaluateCountByOrg(orgIds, dateId, getActiveCode(activeCodesGood)); + agencyInfos.forEach(a -> { + // 项目总数 + if (!CollectionUtils.isEmpty(projectTotal)){ + projectTotal.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setProjectTotal(p.getProjectTotal()); + } + }); + } + // 未解决项目数 + if (!CollectionUtils.isEmpty(resolvedNum)){ + resolvedNum.forEach(r -> { + if (a.getOrgId().equals(r.getOrgId())){ + a.setResolvedNum(r.getResolvedNum()); + } + }); + } + // 参与满意度评价的总次数 + if (!CollectionUtils.isEmpty(evaluateTotal)){ + evaluateTotal.forEach(e -> { + if (a.getOrgId().equals(e.getOrgId())){ + a.setEvaluateTotal(e.getEvaluateCount()); + } + }); + } + + // 满意+非常满意的总次数 + if (!CollectionUtils.isEmpty(evaluateGood)){ + evaluateGood.forEach(e -> { + if (a.getOrgId().equals(e.getOrgId())){ + a.setGoodTotal(e.getEvaluateCount()); + } + }); + } + // 解决率 + a.setResolvedRatio(getRatio(a.getResolvedNum(),a.getProjectTotal())); + // 不满意总次数 + a.setBadTotal(a.getEvaluateTotal()==NumConstant.ZERO ? NumConstant.ZERO : a.getEvaluateTotal() - a.getGoodTotal()); + // 满意率 + a.setGoodRatio(getRatio(a.getGoodTotal(),a.getEvaluateTotal())); + // 不满意率 + a.setBadRatio(getRatio(a.getBadTotal(),a.getEvaluateTotal())); + }); + return agencyInfos; + } + + /** + * @Description activeCode处理 + * @Param actCode + * @author zxc + * @date 2021/4/13 上午10:06 + */ + public List getActiveCode(String[] actCode){ + List activeCodes = Arrays.asList(actCode); + return activeCodes; + } + /** * @Description * @Param a 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 ea99b5148a..3ca6164c62 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 @@ -183,7 +183,7 @@ public class ScreenProjectQuantityGridMonthlyServiceImpl extends BaseServiceImpl // 截止到当前月份:累计项目总数 if (!CollectionUtils.isEmpty(projectTotal)){ projectTotal.forEach(p -> { - if (g.getGridId().equals(p.getGridId())){ + if (g.getGridId().equals(p.getOrgId())){ g.setProjectTotal(p.getProjectTotal()); } }); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java index 91917d22b7..b03f7f65b8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectQuantityOrgMonthlyServiceImpl.java @@ -29,13 +29,14 @@ import com.epmet.constant.DataSourceConstant; import com.epmet.constant.PingYinConstants; import com.epmet.dao.evaluationindex.screen.ScreenCustomerAgencyDao; import com.epmet.dao.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyDao; -import com.epmet.dto.pingyin.result.ProjectOrgMonthlyResultDTO; +import com.epmet.dto.pingyin.result.*; import com.epmet.dto.screen.ScreenProjectOrgDailyDTO; import com.epmet.dto.screen.ScreenProjectQuantityOrgMonthlyDTO; import com.epmet.dto.screencoll.ScreenCollFormDTO; import com.epmet.entity.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyEntity; import com.epmet.entity.org.CustomerAgencyEntity; import com.epmet.service.crm.CustomerRelationService; +import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectMainDailyService; import com.epmet.service.evaluationindex.screen.ScreenProjectQuantityOrgMonthlyService; import com.epmet.service.org.CustomerAgencyService; import com.google.common.collect.Lists; @@ -51,6 +52,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 项目(事件)数量分析按组织_按月统计 @@ -69,6 +71,9 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl< private CustomerRelationService customerRelationService; @Autowired private CustomerAgencyService customerAgencyService; + @Autowired + private FactOriginProjectMainDailyService projectMainDailyService; + @Override public PageData page(Map params) { IPage page = baseDao.selectPage( @@ -144,7 +149,7 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl< } /** - * @Description 数据抽取【组织-月】 + * @Description 数据抽取【组织-月】,目前单客户和多客户处理是一样的,只是查询sql不一样,现在分开为了以后修改方便 * @Param customerId * @Param monthId * @author zxc @@ -152,14 +157,95 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl< */ @Override public void extractionProjectOrgMonthly(String customerId, String monthId) { - List screenProjectOrgDailyDTOS = new ArrayList<>(); - //如果有子客户要按照跟组织的area_code查询组织列表 if(customerRelationService.haveSubCustomer(customerId)){ - CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId); - screenProjectOrgDailyDTOS=agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode()); + // 多客户处理 + extractionProjectOrgMonthlyMoreCustomer(customerId, monthId); }else{ - screenProjectOrgDailyDTOS=agencyDao.selectAgencyByCustomer(customerId); + // 单客户处理 + extractionProjectOrgMonthlyOneCustomer(customerId, monthId); + } + } + + /** + * @Description 单客户处理 + * @Param customerId + * @Param monthId + * @author zxc + * @date 2021/4/15 下午2:18 + */ + public void extractionProjectOrgMonthlyOneCustomer(String customerId,String monthId){ + List screenProjectOrgDailyDTOS=agencyDao.selectAgencyByCustomer(customerId); + if (CollectionUtils.isEmpty(screenProjectOrgDailyDTOS)){ + log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId)); + return; } + + List agencyInfos = ConvertUtils.sourceToTarget(screenProjectOrgDailyDTOS, ScreenProjectQuantityOrgMonthlyDTO.class); + List projectOrg = baseDao.selectQuantityOrgMonthlyByAgency(agencyInfos, monthId); + if (!CollectionUtils.isEmpty(projectOrg)){ + projectOrg.forEach(p -> { + p.setClosedIncr(p.getClosedIncr()); + p.setProjectIncr(p.getProjectIncr()); + }); + } + List projectGrandOrg = baseDao.selectQuantityGrandOrgMonthly(agencyInfos, monthId); + if (!CollectionUtils.isEmpty(projectGrandOrg)){ + projectGrandOrg.forEach(p -> { + p.setClosedTotal(p.getClosedTotal()); + p.setProjectTotal(p.getProjectTotal()); + p.setUnClosedTotal(p.getUnClosedTotal()); + }); + } + agencyInfos.forEach(a -> { + a.setMonthId(monthId); + if (!CollectionUtils.isEmpty(projectOrg)){ + projectOrg.forEach(p -> { + if (a.getAreaCode().equals(p.getAreaCode())){ + a.setClosedIncr(null == p.getClosedIncr() ? NumConstant.ZERO : p.getClosedIncr()); + a.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr()); + a.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr()); + } + }); + } + if (!CollectionUtils.isEmpty(projectGrandOrg)){ + projectGrandOrg.forEach(p -> { + if (a.getAreaCode().equals(p.getAreaCode())){ + a.setClosedTotal(null == p.getClosedTotal() ? NumConstant.ZERO : p.getClosedTotal()); + a.setProjectTotal(null == p.getProjectTotal() ? NumConstant.ZERO : p.getProjectTotal()); + a.setUnClosedTotal(null == p.getUnClosedTotal() ? NumConstant.ZERO : p.getUnClosedTotal()); + a.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr()); + } + }); + } + }); + // 直接立项处理 + List agencyCreateProject = agencyCreateProject(agencyInfos, monthId); + agencyInfos.forEach(a -> { + agencyCreateProject.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setProjectIncr(a.getProjectIncr() + p.getProjectIncr()); + a.setProjectTotal(a.getProjectTotal() + p.getProjectTotal()); + a.setUnClosedTotal(a.getUnClosedTotal() + p.getUnClosedTotal()); + a.setClosedTotal(a.getClosedTotal() + p.getClosedTotal()); + a.setClosedIncr(a.getClosedIncr() + p.getClosedIncr()); + } + }); + }); + log.info(agencyInfos.toString()); + del(customerId, monthId); + insert(agencyInfos,customerId,monthId); + } + + /** + * @Description 多客户处理 + * @Param customerId + * @Param monthId + * @author zxc + * @date 2021/4/15 下午2:18 + */ + public void extractionProjectOrgMonthlyMoreCustomer(String customerId,String monthId){ + CustomerAgencyEntity rootAgency=customerAgencyService.getRootAgencyInfo(customerId); + List screenProjectOrgDailyDTOS=agencyDao.selectAgencyByAreaCode(rootAgency.getAreaCode()); if (CollectionUtils.isEmpty(screenProjectOrgDailyDTOS)){ log.warn(String.format(PingYinConstants.AGENCY_INFO_IS_ZERO,customerId)); return; @@ -169,16 +255,16 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl< List projectOrg = baseDao.selectQuantityOrgMonthly(agencyInfos, monthId); if (!CollectionUtils.isEmpty(projectOrg)){ projectOrg.forEach(p -> { - p.setClosedIncr(null == p.getClosedIncr() ? NumConstant.ZERO : p.getClosedIncr()); - p.setProjectIncr(null == p.getProjectIncr() ? NumConstant.ZERO : p.getProjectIncr()); + p.setClosedIncr(p.getClosedIncr()); + p.setProjectIncr(p.getProjectIncr()); }); } List projectGrandOrg = baseDao.selectQuantityGrandOrgMonthly(agencyInfos, monthId); if (!CollectionUtils.isEmpty(projectGrandOrg)){ projectGrandOrg.forEach(p -> { - p.setClosedTotal(null == p.getClosedTotal() ? NumConstant.ZERO : p.getClosedTotal()); - p.setProjectTotal(null == p.getProjectTotal() ? NumConstant.ZERO : p.getProjectTotal()); - p.setUnClosedTotal(null == p.getUnClosedTotal() ? NumConstant.ZERO : p.getUnClosedTotal()); + p.setClosedTotal(p.getClosedTotal()); + p.setProjectTotal(p.getProjectTotal()); + p.setUnClosedTotal(p.getUnClosedTotal()); }); } agencyInfos.forEach(a -> { @@ -203,11 +289,89 @@ public class ScreenProjectQuantityOrgMonthlyServiceImpl extends BaseServiceImpl< }); } }); + List parentAgency = agencyDao.selectAgencyByCustomer(customerId); + List parentAgencyInfos = ConvertUtils.sourceToTarget(parentAgency, ScreenProjectQuantityOrgMonthlyDTO.class); + List agencyCreateProject = agencyCreateProject(parentAgencyInfos, monthId); + agencyInfos.forEach(a -> { + agencyCreateProject.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setProjectIncr(a.getProjectIncr() + p.getProjectIncr()); + a.setProjectTotal(a.getProjectTotal() + p.getProjectTotal()); + a.setUnClosedTotal(a.getUnClosedTotal() + p.getUnClosedTotal()); + a.setClosedTotal(a.getClosedTotal() + p.getClosedTotal()); + a.setClosedIncr(a.getClosedIncr() + p.getClosedIncr()); + } + }); + }); log.info(agencyInfos.toString()); del(customerId, monthId); insert(agencyInfos,customerId,monthId); } + /** + * @Description 组织直接立项处理 + * @Param agencyInfos + * @Param monthId + * @author zxc + * @date 2021/4/16 上午10:03 + */ + public List agencyCreateProject(List agencyInfos, String monthId){ + List orgIds = agencyInfos.stream().map(m -> m.getOrgId()).collect(Collectors.toList()); + // 本月新增的项目数量 转项目日期在当前月份内 + List projectIncr = projectMainDailyService.selectProjectIncrByOrg(orgIds, monthId); + // 截止到当前月份:累计项目总数 + List projectTotal = projectMainDailyService.selectProjectTotalByOrg(orgIds, null, monthId); + // 截止到当前月份:累计未结项目总数 + List projectUnClosed = projectMainDailyService.selectProjectCountByOrg(orgIds, monthId, PingYinConstants.UN_CLOSED); + // 截止到当前月份:累计已结项目 + List projectClosed = projectMainDailyService.selectProjectCountByOrg(orgIds, monthId, PingYinConstants.CLOSED); + // 本月新增结案项目数 + List closedIncr = projectMainDailyService.selectClosedIncrByOrg(orgIds, monthId); + agencyInfos.forEach(a -> { + a.setMonthId(monthId); + if (!CollectionUtils.isEmpty(projectIncr)){ + projectIncr.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setProjectIncr(p.getProjectIncr()); + } + }); + } + // 截止到当前月份:累计项目总数 + if (!CollectionUtils.isEmpty(projectTotal)){ + projectTotal.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setProjectTotal(p.getProjectTotal()); + } + }); + } + // 截止到当前月份:累计未结项目总数 + if (!CollectionUtils.isEmpty(projectUnClosed)){ + projectUnClosed.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setUnClosedTotal(p.getProjectCount()); + } + }); + } + // 截止到当前月份:累计已结项目 + if (!CollectionUtils.isEmpty(projectClosed)){ + projectClosed.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setClosedTotal(p.getProjectCount()); + } + }); + } + // 本月新增结案项目数 + if (!CollectionUtils.isEmpty(closedIncr)){ + closedIncr.forEach(p -> { + if (a.getOrgId().equals(p.getOrgId())){ + a.setClosedIncr(p.getClosedIncr()); + } + }); + } + }); + return agencyInfos; + } + @Transactional(rollbackFor = Exception.class) public void del(String customerId,String monthId){ Integer flag; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java index 5dc7b17392..475fb886c7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/TopicService.java @@ -9,6 +9,7 @@ import com.epmet.dto.stats.DimTopicStatusDTO; import com.epmet.dto.stats.topic.result.TopicStatisticalData; import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.topic.TopicOriginInfoDTO; +import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity; import com.epmet.util.DimIdGenerator; @@ -104,4 +105,15 @@ public interface TopicService { * @date 2021.03.09 13:59 */ List buildNewScreenProjectImgData(List list); + + /** + * desc: 根据话题ID获取 话题内容及附件列表 + * + * @param topicId + * @param attachmentType + * @return com.epmet.dto.topic.result.ResiTopicAndImgResultDTO + * @author LiuJanJun + * @date 2021/4/13 5:39 下午 + */ + ResiTopicAndImgResultDTO getTopicAndImgs(String topicId,String attachmentType); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java index c832202e70..0b74adba49 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java @@ -18,6 +18,7 @@ import com.epmet.dto.stats.topic.result.TopicStatisticalData; import com.epmet.dto.topic.ResiTopicDTO; import com.epmet.dto.topic.TopicOriginInfoDTO; import com.epmet.dto.topic.result.ResiGroupTopicResultDTO; +import com.epmet.dto.topic.result.ResiTopicAndImgResultDTO; import com.epmet.dto.topic.result.ResiTopicOperationResultDTO; import com.epmet.dto.topic.result.ResiTopicResultDTO; import com.epmet.entity.evaluationindex.screen.ScreenDifficultyImgDataEntity; @@ -35,7 +36,6 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.text.NumberFormat; import java.util.*; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -232,6 +232,11 @@ public class TopicServiceImpl implements TopicService { )).collect(Collectors.toList()); } + @Override + public ResiTopicAndImgResultDTO getTopicAndImgs(String topicId,String attachmentType) { + return topicDao.getTopicAndImgs(topicId); + } + /** * @Description 初始化机关-所有下级网格Map * @param pid - 固定一个机关Id diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.11__add_origin.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.11__add_origin.sql new file mode 100644 index 0000000000..c2cf2e6c22 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.11__add_origin.sql @@ -0,0 +1,13 @@ +ALTER TABLE `fact_origin_project_main_daily` + ADD COLUMN `ORIGIN` varchar(32) NULL COMMENT '项目来源 来源:议题issue 组织agency' AFTER `AGENCY_ID`, + MODIFY COLUMN `GRID_ID` varchar(32) DEFAULT '' COMMENT '网格ID(立项时的网格Id)' AFTER `TOPIC_ID`, + ADD COLUMN `ORIGIN_ID` varchar(64) NULL COMMENT '项目来源ID' AFTER `ORIGIN`; + +UPDATE fact_origin_project_main_daily t1 + INNER JOIN ( SELECT ID, ISSUE_ID FROM fact_origin_project_main_daily ) t2 ON t1.ID = t2.ID +SET t1.ORIGIN = 'issue', + t1.ORIGIN_ID = t2.ISSUE_ID; +UPDATE fact_origin_project_log_daily t1 + INNER JOIN ( SELECT ID, AGENCY_ID FROM fact_origin_project_log_daily ) t2 ON t1.ID = t2.ID AND t1.ORG_TYPE IS NULL +SET t1.ORG_TYPE = 'agency', + t1.ORG_ID = t2.AGENCY_ID; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml index 7836274c05..8115c5d1ce 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml @@ -27,11 +27,12 @@ count(1)as projectTotal FROM fact_origin_project_category_daily c - LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0') + LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0' AND p.GRID_ID != '') WHERE c.DEL_FLAG = '0' AND c.CUSTOMER_ID = #{customerId} AND c.`LEVEL` = '2' + GROUP BY c.CUSTOMER_ID, c.CATEGORY_CODE, @@ -50,7 +51,7 @@ count(distinct c.project_id)as projectTotal FROM fact_origin_project_category_daily c - LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0') + LEFT JOIN fact_origin_project_main_daily p ON ( c.PROJECT_Id = p.id and p.del_flag='0' AND p.GRID_ID != '') WHERE c.DEL_FLAG = '0' AND c.CUSTOMER_ID = #{customerId} @@ -62,4 +63,46 @@ p.AGENCY_ID, P.PIDS + + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml index 1d5b5c6e79..7b2a4f9ae7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectLogDailyDao.xml @@ -388,6 +388,7 @@ WHERE fm.CUSTOMER_ID = #{customerId} AND fm.MONTH_ID = #{monthId} AND fm.PROJECT_STATUS = 'closed' + AND fm.GRID_ID != '' ) a GROUP BY GRID_ID @@ -530,4 +531,25 @@ AND CUSTOMER_ID = #{customerId} AND MONTH_ID = #{monthId} + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index b9608e9ee3..4e2d66473a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -92,15 +92,20 @@ DELETE FROM @@ -121,6 +126,7 @@ fact_origin_project_main_daily t1 WHERE t1.DEL_FLAG = '0' + AND t1.TOPIC_CREATOR_ID != '' AND t1.CUSTOMER_ID = #{customerId} AND t1.MONTH_ID = #{monthId} AND ISNULL(T1.TOPIC_CREATOR_ID)=0 @@ -269,6 +275,7 @@ fact_origin_project_main_daily fm WHERE fm.PROJECT_STATUS = 'close' + AND fm.GRID_ID != '' AND fm.CUSTOMER_ID = #{customerId} AND fm.MONTH_ID = #{monthId} GROUP BY @@ -281,6 +288,7 @@ fact_origin_project_main_daily fm WHERE fm.PROJECT_STATUS = 'close' + AND fm.GRID_ID != '' AND fm.CUSTOMER_ID = #{customerId} AND fm.MONTH_ID = #{monthId} AND fm.IS_RESOLVED = 'resolved' @@ -297,6 +305,7 @@ 1=1 AND CUSTOMER_ID = #{customerId} AND MONTH_ID = #{monthId} + AND GRID_ID != '' GROUP BY GRID_ID SELECT - GRID_ID, + GRID_ID AS orgId, COUNT(ID) AS projectTotal FROM fact_origin_project_main_daily WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId} + AND GRID_ID != '' AND DATE_ID #{dateId} @@ -467,7 +477,7 @@ @@ -506,6 +517,7 @@ WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId} AND MONTH_ID = #{monthId} + AND GRID_ID != '' GROUP BY GRID_ID @@ -518,6 +530,7 @@ WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId} AND MONTH_ID #{monthId} + AND GRID_ID != '' AND PROJECT_STATUS != 'closed' @@ -538,6 +551,7 @@ AND CUSTOMER_ID = #{customerId} AND MONTH_ID = #{monthId} AND PROJECT_STATUS = 'closed' + AND GRID_ID != '' GROUP BY GRID_ID @@ -574,5 +588,146 @@ + + + + + + + + + + + + + + + + + + + + + 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 fe274542a0..0d7434ba98 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 @@ -410,10 +410,13 @@ ( select m.PARENT_AREA_CODE from screen_customer_agency m where m.AGENCY_ID=#{agencyId} + and m.DEL_FLAG = '0' ) + and sca.DEL_FLAG = '0' 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 ace5879e53..0700977462 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 @@ -112,11 +112,12 @@ SELECT #{a.areaCode} AS areaCode, - SUM(PROJECT_TOTAL) AS projectTotal, - SUM(RESOLVED_NUM) AS resolvedNum, - SUM(EVALUATE_TOTAL) AS evaluateTotal , - SUM(GOOD_TOTAL) AS goodTotal, - SUM(BAD_TOTAL) AS badTotal + #{a.orgId} AS orgId, + IFNULL(SUM(PROJECT_TOTAL),0) AS projectTotal, + IFNULL(SUM(RESOLVED_NUM),0) AS resolvedNum, + IFNULL(SUM(EVALUATE_TOTAL),0) AS evaluateTotal , + IFNULL(SUM(GOOD_TOTAL),0) AS goodTotal, + IFNULL(SUM(BAD_TOTAL),0) AS badTotal FROM screen_project_grid_daily g LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID WHERE g.DEL_FLAG = 0 @@ -124,6 +125,23 @@ AND g.DATE_ID #{dateId} + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml index 70fe070738..17385c6462 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectQuantityOrgMonthlyDao.xml @@ -101,8 +101,8 @@ SELECT #{a.areaCode} AS areaCode, - SUM(g.PROJECT_INCR) AS projectIncr, - SUM(g.CLOSED_INCR) AS closedIncr + IFNULL(SUM(g.PROJECT_INCR),0) AS projectIncr, + IFNULL(SUM(g.CLOSED_INCR),0) AS closedIncr FROM screen_project_quantity_grid_monthly g LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID WHERE g.DEL_FLAG = 0 @@ -116,9 +116,9 @@ SELECT #{a.areaCode} AS areaCode, - SUM(g.PROJECT_TOTAL) AS projectTotal, - SUM(g.UN_CLOSED_TOTAL) AS unClosedTotal, - SUM(g.CLOSED_TOTAL) AS closedTotal + IFNULL(SUM(g.PROJECT_TOTAL),0) AS projectTotal, + IFNULL(SUM(g.UN_CLOSED_TOTAL),0) AS unClosedTotal, + IFNULL(SUM(g.CLOSED_TOTAL),0) AS closedTotal FROM screen_project_quantity_grid_monthly g LEFT JOIN screen_customer_grid cg ON cg.GRID_ID = g.GRID_ID WHERE g.DEL_FLAG = 0 @@ -127,5 +127,35 @@ + + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/IssueProjectCategoryDictDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/IssueProjectCategoryDictDao.xml index 50185c99cb..f87c10bdcd 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/IssueProjectCategoryDictDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/issue/IssueProjectCategoryDictDao.xml @@ -48,4 +48,11 @@ and customer_id = #{customerId} and id = #{id} + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml index ec1cf07215..58dd19a9e5 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/project/ProjectDao.xml @@ -24,7 +24,6 @@ FROM project WHERE DEL_FLAG = '0' - AND ORIGIN = 'issue' AND STATUS = 'closed' AND CUSTOMER_ID = #{customerId} AND DATE_FORMAT(UPDATED_TIME, '%Y-%m-%d') #{date} @@ -41,7 +40,6 @@ FROM project WHERE DEL_FLAG = '0' - AND ORIGIN = 'issue' AND STATUS = 'closed' AND CUSTOMER_ID = #{customerId} AND DATE_FORMAT(UPDATED_TIME, '%Y-%m-%d') = #{date} @@ -81,7 +79,10 @@ ID, CUSTOMER_ID, AGENCY_ID, + ORIGIN, ORIGIN_ID, + TITLE, + BACK_GROUND, STATUS, CLOSED_STATUS, ORG_ID_PATH, @@ -90,7 +91,6 @@ FROM project WHERE DEL_FLAG = '0' - AND ORIGIN = 'issue' AND CUSTOMER_ID = #{customerId} AND DATE_FORMAT(CREATED_TIME, '%Y%m%d') = #{date} diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimAgencyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimAgencyDao.xml index f0df043bf5..6881886600 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimAgencyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/stats/DimAgencyDao.xml @@ -129,7 +129,8 @@ CUSTOMER_ID, PID, AGENCY_NAME, - LEVEL + LEVEL, + ALL_PARENT_NAME FROM dim_agency WHERE @@ -332,4 +333,4 @@ AND LEVEL = #{level} - \ No newline at end of file + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml index f272c6f692..8dfb2aae2e 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/topic/TopicDao.xml @@ -15,6 +15,15 @@ + + + + + + + + + - \ No newline at end of file + + + diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CategoryTagListFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CategoryTagListFormDTO.java new file mode 100644 index 0000000000..3faaa44a58 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/CategoryTagListFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 根据分类、标签Id集合查询对应数据信息--接口入参 + * @Author sun + */ +@Data +public class CategoryTagListFormDTO implements Serializable { + + private static final long serialVersionUID = 2599592072265715951L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 分类Id + */ + private List categoryIdList; + + /** + * 标签Id + */ + private List tagIdList; + +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryTagResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryTagResultDTO.java new file mode 100644 index 0000000000..7c832fe023 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CategoryTagResultDTO.java @@ -0,0 +1,28 @@ +package com.epmet.dto.result; + +import com.epmet.dto.IssueProjectCategoryDictDTO; +import com.epmet.dto.IssueProjectTagDictDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description 根据分类、标签Id集合查询对应数据信息--接口返参 + * @Author sun + */ +@Data +public class CategoryTagResultDTO implements Serializable { + + private static final long serialVersionUID = 5957826616179876849L; + + /** + * 分类对象 + */ + private List categoryList; + /** + * 标签对象 + */ + private List tagList; + +} 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 eeccc8d836..2977849e22 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 @@ -222,7 +222,7 @@ public interface GovIssueOpenFeignClient { * @author sun **/ @PostMapping(value = "/gov/issue/issueprojectcategorydict/getprojectandcategoryinfo") - Result getProjectAndCategoryInfo(ProjectSaveCategoryFormDTO formDTO); + Result getProjectAndCategoryInfo(@RequestBody ProjectSaveCategoryFormDTO formDTO); /** * @Description 更新标签热度 数据库/缓存 @@ -293,4 +293,12 @@ public interface GovIssueOpenFeignClient { @PostMapping(value = "/gov/issue/manage/votingissuedetail") Result votingissuedetail(@RequestBody IssueDetailFormDTO issueDetail); + + /** + * @param formDTO + * @Description 根据分类、标签Id集合查询对应数据信息 + * @Author sun + **/ + @PostMapping(value = "/gov/issue/issueprojectcategorydict/getcategorytaglist") + Result getCategoryTagList(@RequestBody CategoryTagListFormDTO formDTO); } 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 9ce37add49..d8cc8c9d92 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 @@ -251,4 +251,9 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient public Result votingissuedetail(IssueDetailFormDTO issueDetail) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "votingissuedetail", issueDetail); } + + @Override + public Result getCategoryTagList(CategoryTagListFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCategoryTagList", formDTO); + } } 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 c4080d0f10..b28f0b352d 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 @@ -32,6 +32,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.IssueProjectCategoryDictDTO; import com.epmet.dto.form.*; +import com.epmet.dto.result.CategoryTagResultDTO; import com.epmet.dto.result.CustomerCategoryListResultDTO; import com.epmet.dto.result.CustomerCategoryResultDTO; import com.epmet.dto.result.ProjectIssueCategoryResultDTO; @@ -256,5 +257,16 @@ public class IssueProjectCategoryDictController { } return new Result>().ok(issueProjectCategoryDictService.customerCategoryList(map.get(FieldConstant.CUSTOMER_ID_HUMP))); } + + /** + * @param formDTO + * @Description 根据分类、标签Id集合查询对应数据信息 + * @Author sun + **/ + @PostMapping("getcategorytaglist") + public Result getCategoryTagList(@RequestBody CategoryTagListFormDTO formDTO) { + return new Result().ok(issueProjectCategoryDictService.getCategoryTagList(formDTO)); + } + } 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 ff49f564b1..f9be70d073 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 @@ -167,4 +167,10 @@ public interface IssueProjectCategoryDictDao extends BaseDao getCategoryList(@Param("customerId") String customerId, @Param("categoryIdList") List categoryIdList); } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java index 45fa05d7cf..29dade0f8c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectTagDictDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.IssueProjectTagDictDTO; import com.epmet.dto.form.IsDisableCategoryFormDTO; import com.epmet.dto.form.IssueTagFormDTO; import com.epmet.dto.result.IssueCategoryTagResultDTO; @@ -140,4 +141,10 @@ public interface IssueProjectTagDictDao extends BaseDao getTagList(@Param("customerId") String customerId, @Param("tagIdList") List tagIdList); } \ No newline at end of file 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 639888bc23..00ebcc18ca 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 @@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.IssueProjectCategoryDictDTO; import com.epmet.dto.form.*; +import com.epmet.dto.result.CategoryTagResultDTO; import com.epmet.dto.result.CustomerCategoryListResultDTO; import com.epmet.dto.result.CustomerCategoryResultDTO; import com.epmet.dto.result.ProjectIssueCategoryResultDTO; @@ -208,4 +209,11 @@ public interface IssueProjectCategoryDictService extends BaseService customerCategoryList(String customerId); + + /** + * @param formDTO + * @Description 根据分类、标签Id集合查询对应数据信息 + * @Author sun + **/ + CategoryTagResultDTO getCategoryTagList(CategoryTagListFormDTO formDTO); } 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 62d39412c3..8db5944db0 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 @@ -31,10 +31,7 @@ import com.epmet.dao.IssueCategoryDao; import com.epmet.dao.IssueProjectCategoryDictDao; import com.epmet.dao.IssueProjectRelationDao; import com.epmet.dao.IssueProjectTagDictDao; -import com.epmet.dto.IssueCategoryDTO; -import com.epmet.dto.IssueDTO; -import com.epmet.dto.IssueProjectCategoryDictDTO; -import com.epmet.dto.ProjectCategoryDTO; +import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.IssueProjectCategoryDictEntity; @@ -168,12 +165,15 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl%s", formDTO.getProjectId())); + ProjectIssueDTOResultDTO issueDTO = new ProjectIssueDTOResultDTO(); + if("issue".equals(formDTO.getOrigin())){ + //1.根据项目id查询对应的议题基本信息 + IssueDTO dto = issueProjectRelationDao.selectProjectToIssue(formDTO.getProjectId()); + if (null == dto) { + throw new RenException(String.format("保存项目分类信息,获取项目对应的议题基本信息失败,projectId->%s", formDTO.getProjectId())); + } + issueDTO = ConvertUtils.sourceToTarget(dto,ProjectIssueDTOResultDTO.class); } - ProjectIssueDTOResultDTO issueDTO = ConvertUtils.sourceToTarget(dto,ProjectIssueDTOResultDTO.class); resultDTO.setIssueDTO(issueDTO); //2.批量查询分类信息 List categoryIdList = formDTO.getCategoryList().stream().map(SaveIssueCategoryFormDTO::getId).collect(Collectors.toList()); @@ -450,4 +450,26 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl categoryList = baseDao.getCategoryList(formDTO.getCustomerId(), formDTO.getCategoryIdList()); + resultDTO.setCategoryList(categoryList); + } + //2.批量查询客户标签信息 + if (!org.springframework.util.CollectionUtils.isEmpty(formDTO.getTagIdList())) { + List tagList = issueProjectTagDictDao.getTagList(formDTO.getCustomerId(), formDTO.getTagIdList()); + resultDTO.setTagList(tagList); + } + return resultDTO; + } + } 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 3a29df5f14..0d6adbd065 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 @@ -213,6 +213,23 @@ ORDER BY SORT, CATEGORY_CODE ASC + + UPDATE issue_project_category_dict SET diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml index 6e63c32fab..923a5e9edc 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectTagDictDao.xml @@ -203,6 +203,21 @@ + + UPDATE issue_project_tag_dict SET is_disable = #{type}, diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java index fe4d260c8f..2bf18307ce 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java @@ -12,6 +12,10 @@ import java.io.Serializable; public class StaffListResultDTO implements Serializable { private static final long serialVersionUID = 5957826616179876849L; + /** + * 客户Id + */ + private String customerId=""; /** * 人员Id */ @@ -32,5 +36,9 @@ public class StaffListResultDTO implements Serializable { * 角色名称(机关领导、部门领导、网格长) */ private String roleName=""; + /** + * 工作人员手机号 + */ + private String mobile=""; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index fe67bef009..6cefd55a53 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -324,4 +324,13 @@ public interface GovOrgOpenFeignClient { **/ @GetMapping("/gov/org/customergrid/getGridIdsInCommunity/{gridId}") Result> getGridIdsInCommunity(@PathVariable("gridId") String gridId); + + /** + * @param agencyId + * @return + * @Author sun + * @Description 根据当前组织ID查询上两级组织、当前组织和所有下级(迭代)组织 + **/ + @PostMapping(value = "/gov/org/customeragency/getprocessorlist/{agencyId}") + Result getProcessorList(@PathVariable("agencyId") String agencyId); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index d9d5be0a84..f34b6f53ae 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -187,4 +187,9 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { public Result> getGridIdsInCommunity(String gridId) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGridIdsInCommunity", gridId); } + + @Override + public Result getProcessorList(String agencyId) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getProcessorList", agencyId); + } } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.4__area_code.sql b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.4__area_code.sql new file mode 100644 index 0000000000..e81f6b0f73 --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.4__area_code.sql @@ -0,0 +1,24 @@ +drop table if EXISTS customer_org_parameter; +CREATE TABLE `customer_org_parameter` ( + `ID` varchar(32) NOT NULL COMMENT '主键ID', + `CUSTOMER_ID` varchar(32) NOT NULL COMMENT '客户ID', + `PARAMETER_KEY` varchar(32) NOT NULL COMMENT '参数键 eg:area_code_switch', + `PARAMETER_NAME` varchar(32) NOT NULL COMMENT '参数名 eg:是否开启区域编码', + `PARAMETER_VALUE` varchar(32) NOT NULL COMMENT '参数值 eg:开启:open;关闭:closed ', + `DESCRIPTION` varchar(512) NOT NULL COMMENT '参数说明 eg:open:当前客户新增组织需要选择areaCode;closed: 无需选择区域编码', + `DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标志 0:未删除,1:已删除', + `REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁', + `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户组织相关参数表'; + + +alter table customer_agency MODIFY COLUMN PROVINCE VARCHAR(32) COMMENT '区域编码字典中的【省份】名称'; +alter table customer_agency MODIFY COLUMN CITY VARCHAR(32) COMMENT '区域编码字典中的【城市】名称'; +alter table customer_agency MODIFY COLUMN DISTRICT VARCHAR(64) COMMENT '区域编码字典中的【区县】名称'; +alter table customer_agency add COLUMN STREET varchar(64) comment '区域编码字典中的【街道】名称0409' AFTER DISTRICT; +alter table customer_agency add COLUMN COMMUNITY varchar(64) comment '区域编码字典中的【社区】名称0409'AFTER STREET; +alter table customer_department add COLUMN AREA_CODE VARCHAR(64) comment '部门所属的行政地区编码:实际就是所属组织的地区编码' AFTER TOTAL_USER; \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java index 1d75e9adfe..6ba33ec68a 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java @@ -51,7 +51,7 @@ public class ProjectDTO implements Serializable { private String agencyId; /** - * 来源:议题issue + * 来源:议题issue 项目立项:agency */ private String origin; @@ -65,6 +65,11 @@ public class ProjectDTO implements Serializable { */ private String title; + /** + * 项目背景 + */ + private String backGround; + /** * 状态:待处理 pending,结案closed */ diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/CategoryOrTagFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/CategoryOrTagFormDTO.java new file mode 100644 index 0000000000..6726db391f --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/CategoryOrTagFormDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 项目立项-分类、标签信息-接口入参 + * @Author sun + */ +@Data +public class CategoryOrTagFormDTO implements Serializable { + + private static final long serialVersionUID = 2599592072265715951L; + /** + * 分类Id + */ + private String id; + /** + * 分类名称 + */ + private String name; + +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectApprovalFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectApprovalFormDTO.java new file mode 100644 index 0000000000..dd2001e970 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectApprovalFormDTO.java @@ -0,0 +1,64 @@ +package com.epmet.dto.form; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.List; + +/** + * @Description 项目立项-接口入参 + * @Author sun + */ +@Data +public class ProjectApprovalFormDTO implements Serializable { + private static final long serialVersionUID = 4859779755214502427L; + public interface ApprovalCategory{} + + @NotBlank(message = "项目标题不能为空",groups = {ApprovalCategory.class}) + @Length(max=20,message = "项目标题不能超过20位") + private String title; + + @NotBlank(message = "项目背景不能为空",groups = {ApprovalCategory.class}) + @Length(max=1000,message = "项目背景不能超过1000位") + private String backGround; + + @NotBlank(message = "项目方案不能为空",groups = {ApprovalCategory.class}) + @Length(max=1000,message = "项目方案不能超过1000位") + private String publicReply; + + @NotBlank(message = "内部备注不能为空",groups = {ApprovalCategory.class}) + @Length(max=1000,message = "内部备注不能超过1000位") + private String internalRemark; + + /** + * 吹哨勾选的工作人员信息集合,不可为空 + */ + @Valid + private List staffList; + /** + * 公开答复对应文件集合 + */ + private List publicFile; + /** + * 内部备注对应文件集合 + */ + private List internalFile; + /** + * 项目所选分类集合,不可为空 + */ + @Valid + private List categoryList; + /** + * 项目所选标签集合 + */ + private List tagList; + + private String customerId; + private String app; + private String client; + private String userId; +} + diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectSaveCategoryFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectSaveCategoryFormDTO.java index 34a8732be5..64709213b7 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectSaveCategoryFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectSaveCategoryFormDTO.java @@ -23,11 +23,15 @@ public class ProjectSaveCategoryFormDTO implements Serializable { * 议题分类集合 */ private List categoryList; - /** * 客户Id */ private String customerId; + /** + * 来源:议题issue 项目立项:agency + */ + private String origin; + public interface SaveCategory{} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java index cd3c278259..ebffaef4d7 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectDetailResultDTO.java @@ -31,6 +31,10 @@ public class ProjectDetailResultDTO implements Serializable { * 项目标题 */ private String projectTitle; + /** + * 项目背景 + */ + private String backGround; /** * 项目方案 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java index 4a8696fa01..b5259e9677 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java @@ -10,6 +10,10 @@ public interface ProjectConstant { * 项目来源-议题 */ String ISSUE = "issue"; + /** + * 项目来源-组织(项目立项) + */ + String AGENCY = "agency"; /** * 状态-待处理 */ @@ -67,6 +71,10 @@ public interface ProjectConstant { * 处理名-退回 */ String OPERATION_RESPONSES_NAME = "处理/响应"; + /** + * 处理名-项目立项 + */ + String OPERATION_PROJECT_APPROVAL = "项目立项"; /** * 是否处理-未处理 diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java index c7d3a8c09a..a91cc3513b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectTraceController.java @@ -335,5 +335,32 @@ public class ProjectTraceController { return new Result(); } + /** + * @param tokenDTO + * @Author sun + * @Description 项目立项组织树查询--查询当前工作人员所属组织,上两级组织,所有下级组织 + **/ + @PostMapping("approvalagencylist") + public Result approvalAgencyList(@LoginUser TokenDto tokenDTO) { + return new Result().ok(projectTraceService.approvalAgencyList(tokenDTO)); + } + + /** + * @param tokenDTO formDTO + * @Author sun + * @Description 项目立项 + **/ + @PostMapping("projectapproval") + @RequirePermission(requirePermission = RequirePermissionEnum.WORK_PROJECT_APPROVAL) + public Result projectApproval(@LoginUser TokenDto tokenDTO, @RequestBody ProjectApprovalFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO,ProjectApprovalFormDTO.ApprovalCategory.class); + formDTO.setCustomerId(tokenDTO.getCustomerId()); + formDTO.setApp(tokenDTO.getApp()); + formDTO.setClient(tokenDTO.getClient()); + formDTO.setUserId(tokenDTO.getUserId()); + projectTraceService.projectApproval(formDTO); + return new Result(); + } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java index 38de1c8e93..444eebee06 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectEntity.java @@ -49,7 +49,7 @@ public class ProjectEntity extends BaseEpmetEntity { private String agencyId; /** - * 来源:议题issue + * 来源:议题issue 项目立项:agency */ private String origin; @@ -63,6 +63,11 @@ public class ProjectEntity extends BaseEpmetEntity { */ private String title; + /** + * 项目背景 + */ + private String backGround; + /** * 状态:待处理 pending,结案closed */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java index f692900851..d3d2cc3f3b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectTraceService.java @@ -159,4 +159,18 @@ public interface ProjectTraceService { * @return void */ void sendTo(TokenDto tokenDto, SendToFormDTO formDTO); + + /** + * @param tokenDTO + * @Author sun + * @Description 项目立项组织树查询--查询当前工作人员所属组织,上两级组织,所有下级组织 + **/ + ProcessorListResultDTO approvalAgencyList(TokenDto tokenDTO); + + /** + * @param formDTO + * @Author sun + * @Description 项目立项 + **/ + void projectApproval(ProjectApprovalFormDTO formDTO); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java index 022e777d9a..85a2d6cc7e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectCategoryServiceImpl.java @@ -27,6 +27,7 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dao.ProjectCategoryDao; +import com.epmet.dao.ProjectDao; import com.epmet.dao.ProjectTagsDao; import com.epmet.dto.ProjectCategoryDTO; import com.epmet.dto.form.DelCategoryFormDTO; @@ -34,6 +35,7 @@ import com.epmet.dto.form.ProjectCategoryTagListFormDTO; import com.epmet.dto.form.ProjectSaveCategoryFormDTO; import com.epmet.dto.result.*; import com.epmet.entity.ProjectCategoryEntity; +import com.epmet.entity.ProjectEntity; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.redis.ProjectCategoryRedis; import com.epmet.service.ProjectCategoryService; @@ -62,6 +64,8 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl page(Map params) { @@ -157,6 +161,14 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl%s", formDTO.getProjectId())); + } + formDTO.setOrigin(projectEntity.getOrigin()); + //end + //1.查询项目所属客户和所属网格信息以及分类对应的分类信息 Result result = govIssueOpenFeignClient.getProjectAndCategoryInfo(formDTO); if (!result.success()) { @@ -165,12 +177,12 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl categoryList = result.getData().getCategoryList(); - //2.汇总批量新增数据 + //2.汇总批量新增项目分类数据 List entityList = new ArrayList<>(); formDTO.getCategoryList().forEach(ca -> { ProjectCategoryEntity entity = new ProjectCategoryEntity(); - entity.setCustomerId(issue.getCustomerId()); - entity.setGridId(issue.getGridId()); + entity.setCustomerId(formDTO.getCustomerId()); + if("issue".equals(formDTO.getOrigin())){ entity.setGridId(issue.getGridId()); } entity.setProjectId(formDTO.getProjectId()); entity.setCategoryId(ca.getId()); categoryList.forEach(cl -> { @@ -182,10 +194,10 @@ public class ProjectCategoryServiceImpl extends BaseServiceImpl implements ProjectTraceService { + private Logger logger = LogManager.getLogger(ProjectTraceServiceImpl.class); @Autowired private ProjectService projectService; @Autowired @@ -45,6 +64,26 @@ public class ProjectTraceServiceImpl implements ProjectTraceService { private ProjectProcessAttachmentDao attachmentDao; @Autowired private ProjectSubProcessService projectSubProcessService; + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + @Autowired + private GovOrgOpenFeignClient govOrgOpenFeignClient; + @Value("${openapi.scan.server.url}") + private String scanApiUrl; + @Value("${openapi.scan.method.textSyncScan}") + private String textSyncScanMethod; + @Autowired + private ProjectOrgRelationDao relationDao; + @Autowired + private ProjectCategoryService projectCategoryService; + @Autowired + private ProjectTagsService projectTagsService; + @Autowired + private GovIssueOpenFeignClient govIssueOpenFeignClient; + @Autowired + private EpmetUserFeignClient epmetUserFeignClient; + @Autowired + private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Override public List getPendProjectList(TokenDto tokenDto, ProjectListFromDTO fromDTO) { @@ -213,4 +252,340 @@ public class ProjectTraceServiceImpl implements ProjectTraceService { projectService.sendTo(formDTO); } + /** + * @param tokenDTO + * @Author sun + * @Description 项目立项组织树查询--查询当前工作人员所属组织,上两级组织,所有下级组织 + **/ + @Override + public ProcessorListResultDTO approvalAgencyList(TokenDto tokenDTO) { + //1.获取token用户所属组织信息 + LoginUserDetailsFormDTO dto = new LoginUserDetailsFormDTO(); + dto.setApp(tokenDTO.getApp()); + dto.setClient(tokenDTO.getClient()); + dto.setUserId(tokenDTO.getUserId()); + Result resultDto = epmetUserOpenFeignClient.getLoginUserDetails(dto); + if (!resultDto.success() || StringUtils.isEmpty(resultDto.getData().getAgencyId())) { + throw new RenException(String.format("调用user服务查询用户数据失败,userId->", tokenDTO.getUserId())); + } + + //2.根据组织Id查询当前组织上两级组织、本级组织、所有下级组织信息 + Result result = govOrgOpenFeignClient.getProcessorList(resultDto.getData().getAgencyId()); + if (!resultDto.success()) { + throw new RenException(String.format("调用org服务查询用户数据失败,userId->", tokenDTO.getUserId())); + } + return result.getData(); + } + + /** + * @param formDTO + * @Author sun + * @Description 项目立项 + * 内容安全校验、项目|节点|人员|附件|分类|标签|统计业务数据新增、站内信|微信|短信消息推送 + **/ + @Override + @Transactional(rollbackFor = Exception.class) + public void projectApproval(ProjectApprovalFormDTO formDTO) { + List staffList = formDTO.getStaffList(); + //1.文字内容安全校验 + List list = new ArrayList<>(); + list.add(formDTO.getTitle());list.add(formDTO.getBackGround());list.add(formDTO.getPublicReply());list.add(formDTO.getInternalRemark()); + safetyCheck(list); + + //2.数据准备,查询需要用到的数据 + //2-1.获取token用户所属组织信息 + LoginUserDetailsFormDTO dto = new LoginUserDetailsFormDTO(); + dto.setApp(formDTO.getApp()); + dto.setClient(formDTO.getClient()); + dto.setUserId(formDTO.getUserId()); + Result resultDto = epmetUserOpenFeignClient.getLoginUserDetails(dto); + if (!resultDto.success() || StringUtils.isEmpty(resultDto.getData().getAgencyId())) { + throw new RenException(String.format("项目立项调用user服务查询用户数据失败,userId->", formDTO.getUserId())); + } + LoginUserDetailsResultDTO loginUser = resultDto.getData(); + + //2-2.调用gov-org服务,获取所有勾选人员以及议题数据对应的组织信息、部门信息、网格信息用于对处理部门和ORG_ID_PATH字段的赋值使用 + List agencyIdList = staffList.stream().map(TickStaffFormDTO::getAgencyId).collect(Collectors.toList()); + agencyIdList.add(loginUser.getAgencyId()); + agencyIdList = new ArrayList(new LinkedHashSet<>(agencyIdList));agencyIdList.removeAll(Collections.singleton("")); + List deptIdList = staffList.stream().map(TickStaffFormDTO::getDepartmentId).collect(Collectors.toList()); + deptIdList = new ArrayList(new LinkedHashSet<>(deptIdList));deptIdList.removeAll(Collections.singleton("")); + List gridIdList = staffList.stream().map(TickStaffFormDTO::getGridId).collect(Collectors.toList()); + gridIdList = new ArrayList(new LinkedHashSet<>(gridIdList));gridIdList.removeAll(Collections.singleton("")); + AgencyDeptGridFormDTO agencyDeptGridFormDTO = new AgencyDeptGridFormDTO(); + agencyDeptGridFormDTO.setAgencyIdList(agencyIdList); + agencyDeptGridFormDTO.setDeptIdList(deptIdList); + agencyDeptGridFormDTO.setGridIdList(gridIdList); + Result resultDTO = govOrgFeignClient.getAgencyDeptGridList(agencyDeptGridFormDTO); + if (!resultDTO.success() || null == resultDTO.getData()) { + throw new RenException(ProjectConstant.SELECT_GOV_ORG_EXCEPTION); + } + AgencyDeptGridResultDTO agencyDeptGrid = resultDTO.getData(); + + //2-3.调用issue服务,查询分类、标签数据信息 + CategoryTagListFormDTO categoryTag = new CategoryTagListFormDTO(); + List categoryIdList = formDTO.getCategoryList().stream().map(CategoryOrTagFormDTO::getId).collect(Collectors.toList()); + List tagIdList = formDTO.getTagList().stream().map(CategoryOrTagFormDTO::getId).collect(Collectors.toList()); + categoryTag.setCustomerId(formDTO.getCustomerId()); + categoryTag.setCategoryIdList(categoryIdList); + categoryTag.setTagIdList(tagIdList); + Result resultDTOResult = govIssueOpenFeignClient.getCategoryTagList(categoryTag); + if(!resultDTOResult.success()){ + throw new RenException("项目立项,调用issue服务查询分类、标签基础信息失败"); + } + List categoryList = resultDTOResult.getData().getCategoryList(); + List tagList = resultDTOResult.getData().getTagList(); + + //2-4.批量查询被勾选工作人员基础信息 + List staffIdList = staffList.stream().map(TickStaffFormDTO::getStaffId).collect(Collectors.toList()); + staffIdList.add(formDTO.getUserId()); + staffIdList = new ArrayList(new LinkedHashSet<>(staffIdList)); + Result resultStaff = epmetUserOpenFeignClient.getCustomerStaffList(staffIdList); + if (!resultStaff.success() || null == resultStaff.getData()) { + throw new RenException("项目立项,调用user服务获取被勾选工作人员基本信息失败"); + } + List staffInfoList = resultStaff.getData().getStaffList(); + + //3.封装保存业务数据 + //3-1.项目主表新增数据 + ProjectEntity projectEntity = new ProjectEntity(); + projectEntity.setCustomerId(formDTO.getCustomerId()); + projectEntity.setAgencyId(loginUser.getAgencyId()); + projectEntity.setOrigin(ProjectConstant.AGENCY); + projectEntity.setOriginId(loginUser.getAgencyId()); + projectEntity.setTitle(formDTO.getTitle()); + projectEntity.setBackGround(formDTO.getBackGround()); + projectEntity.setStatus(ProjectConstant.PENDING); + projectEntity.setOrgIdPath(loginUser.getOrgIdPath()); + projectService.insert(projectEntity); + + //3-2.项目进展表新增第一个节点数据 + ProjectProcessEntity processEntity = new ProjectProcessEntity(); + processEntity.setProjectId(projectEntity.getId()); + processEntity.setCustomerId(formDTO.getCustomerId()); + processEntity.setStaffId(formDTO.getUserId()); + processEntity.setOperation(ProjectConstant.OPERATION_CREATED); + processEntity.setOperationName(ProjectConstant.OPERATION_PROJECT_APPROVAL); + processEntity.setPublicReply(formDTO.getPublicReply()); + processEntity.setInternalRemark(formDTO.getInternalRemark()); + agencyDeptGrid.getAgencyList().forEach(agency -> { + if (loginUser.getAgencyId().equals(agency.getId())) { + processEntity.setDepartmentName(agency.getOrganizationName()); + processEntity.setAgencyId(agency.getId()); + if(org.apache.commons.lang3.StringUtils.isBlank(agency.getPids()) || org.apache.commons.lang3.StringUtils.equals(NumConstant.ZERO_STR,agency.getPids().trim()) || "".equals(agency.getPids().trim())){ + processEntity.setOrgIdPath(agency.getId()); + }else{ + processEntity.setOrgIdPath(agency.getPids().concat(":").concat(agency.getId())); + } + } + }); + projectProcessService.insert(processEntity); + + //3-3.项目人员表批量新增数据 + List entityList = new ArrayList<>(); + staffList.forEach(ts -> { + ProjectStaffEntity entity = ConvertUtils.sourceToTarget(ts, ProjectStaffEntity.class); + entity.setOrgId(ts.getAgencyId()); + entity.setProjectId(projectEntity.getId()); + entity.setProcessId(processEntity.getId()); + entity.setIsHandle(ProjectConstant.UNHANDLED); + agencyDeptGrid.getAgencyList().forEach(agency -> { + if (ts.getAgencyId().equals(agency.getId())) { + entity.setCustomerId(agency.getCustomerId()); + entity.setOrgIdPath(("".equals(agency.getPids()) ? "" : agency.getPids() + ":") + agency.getId()); + entity.setDepartmentName(agency.getOrganizationName()); + } + }); + if (org.apache.commons.lang3.StringUtils.isNotBlank(ts.getDepartmentId())) { + agencyDeptGrid.getDeptList().forEach(dept -> { + if (ts.getDepartmentId().equals(dept.getId())) { + entity.setDepartmentName(entity.getDepartmentName() + "-" + dept.getDepartmentName()); + } + }); + } + if (org.apache.commons.lang3.StringUtils.isNotBlank(ts.getGridId())) { + agencyDeptGrid.getGridList().forEach(grid -> { + if (ts.getGridId().equals(grid.getId())) { + entity.setDepartmentName(entity.getDepartmentName() + "-" + grid.getGridName()); + } + }); + } + entityList.add(entity); + }); + projectStaffService.insertBatch(entityList); + + //3-4.项目附件表新增数据 + if ((null != formDTO.getPublicFile() && formDTO.getPublicFile().size() > NumConstant.ZERO) + || (null != formDTO.getInternalFile() && formDTO.getInternalFile().size() > NumConstant.ZERO)) { + projectService.saveFile(formDTO.getPublicFile(), formDTO.getInternalFile(), formDTO.getCustomerId(), projectEntity.getId(), processEntity.getId()); + } + + //3-5.项目分类表新增数据 + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getCategoryList())) { + List categoryEntityList = new ArrayList<>(); + formDTO.getCategoryList().forEach(item -> { + categoryList.forEach(ca->{ + if(item.getId().equals(ca.getId())){ + ProjectCategoryEntity entity = new ProjectCategoryEntity(); + entity.setCustomerId(formDTO.getCustomerId()); + entity.setProjectId(projectEntity.getId()); + entity.setCategoryId(item.getId()); + entity.setCategoryPids(ca.getPids()); + entity.setCategoryCode(ca.getCategoryCode()); + categoryEntityList.add(entity); + } + }); + }); + projectCategoryService.insertBatch(categoryEntityList); + } + + //3-6.项目标签表新增数据 + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(formDTO.getTagList())) { + List tagEntityList = new ArrayList<>(); + formDTO.getTagList().forEach(item -> { + tagList.forEach(ta->{ + if(item.getId().equals(ta.getId())){ + ProjectTagsEntity entity = new ProjectTagsEntity(); + entity.setCustomerId(formDTO.getCustomerId()); + entity.setProjectId(projectEntity.getId()); + entity.setTagId(item.getId()); + entity.setTagName(ta.getTagName()); + tagEntityList.add(entity); + } + }); + }); + projectTagsService.insertBatch(tagEntityList); + } + + //3-7:初始化机关-项目时间关联数据 + Date current = new Date(); + List projectStaffIds = entityList.stream().map(ProjectStaffEntity::getId).distinct().collect(Collectors.toList()); + if(!org.apache.commons.collections4.CollectionUtils.isEmpty(projectStaffIds)){ + List container = new LinkedList<>(); + projectStaffIds.forEach(o -> { + ProjectOrgRelationEntity period = new ProjectOrgRelationEntity(); + period.setProjectStaffId(o); + period.setInformedDate(current); + period.setSourceOperation(ProjectConstant.OPERATION_CREATED); + period.setCreatedBy(formDTO.getUserId()); + container.add(period); + }); + relationDao.insertBatch(container); + } + + //4.推送站内信、微信、短信消息 + //4-1.调用epmet-message服务,给工作端勾选的工作人员发送消息 + if (!shiftProjectMessage(formDTO).success()) { + throw new RenException("项目立项,推送站内信失败"); + } + + //4-2.以及政府端调用epmet-message服务,给工作端工作人员推送微信订阅消息 + if (!wxmpShiftProjectMessage(formDTO).success()) { + logger.error("项目立项,推送微信订阅消息失败!"); + } + + //4-3.吹哨短信消息 + List smsList = new ArrayList<>(); + staffList.forEach(staff -> { + staffInfoList.forEach(st->{ + if(staff.getStaffId().equals(st.getStaffId())){ + ProjectSendMsgFormDTO sms = new ProjectSendMsgFormDTO(); + sms.setCustomerId(st.getCustomerId()); + sms.setMobile(st.getMobile()); + sms.setAliyunTemplateCode(SmsTemplateConstant.PROJECT_TRANSFER); + sms.setParameterKey("send_msg"); + smsList.add(sms); + } + }); + }); + Result result = epmetMessageOpenFeignClient.projectSendMsg(smsList); + if (!result.success()) { + logger.error("项目吹哨,发送手机短信失败" + JSON.toJSONString(result)); + } + + } + + /** + * @param list + * @Author sun + * @Description 文字内容安全校验 + **/ + private void safetyCheck(List list){ + if(!CollectionUtils.isEmpty(list)){ + list.forEach(l->{ + if (com.alibaba.nacos.client.utils.StringUtils.isNotBlank(l)) { + TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); + TextTaskDTO taskDTO = new TextTaskDTO(); + taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); + taskDTO.setContent(l); + textScanParamDTO.getTasks().add(taskDTO); + Result textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); + if (!textSyncScanResult.success()) { + throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); + } else { + if (!textSyncScanResult.getData().isAllPass()) { + throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode()); + } + } + } + }); + } + } + + /** + * @Description 项目立项给勾选的工作人员推送站内信消息 + * @author sun + */ + private Result shiftProjectMessage(ProjectApprovalFormDTO formDTO) { + List msgList = new ArrayList<>(); + //1.创建项目工作人员消息对象 + String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, formDTO.getTitle()); + //所选人员如果即在部门下又在网格下则只发一条消息 + Map map = new HashMap<>(); + formDTO.getStaffList().forEach(staff->{ + if(!map.containsKey(staff.getStaffId())){ + UserMessageFormDTO msg = new UserMessageFormDTO(); + msg.setCustomerId(formDTO.getCustomerId()); + msg.setGridId("*"); + msg.setApp(AppClientConstant.APP_GOV); + msg.setTitle(UserMessageConstant.PROJECT_TITLE); + msg.setMessageContent(projectStaffMessage); + msg.setReadFlag(ReadFlagConstant.UN_READ); + msg.setUserId(staff.getStaffId()); + msgList.add(msg); + map.put(staff.getStaffId(),staff.getStaffId()); + } + }); + return epmetMessageOpenFeignClient.saveUserMessageList(msgList); + } + + /** + * @Description 项目立项给勾选的工作人员推送微信订阅消息 + * @author sun + */ + private Result wxmpShiftProjectMessage(ProjectApprovalFormDTO formDTO) { + List msgList = new ArrayList<>(); + //1.创建项目工作人员消息对象 + String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, formDTO.getTitle()); + //所选人员如果即在部门下又在网格下则只发一条消息 + Map map = new HashMap<>(); + formDTO.getStaffList().forEach(staff->{ + if(!map.containsKey(staff.getStaffId())){ + WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO(); + msg.setCustomerId(formDTO.getCustomerId()); + msg.setClientType(AppClientConstant.APP_GOV); + msg.setUserId(staff.getStaffId()); + msg.setBehaviorType("项目消息"); + msg.setMessageContent(projectStaffMessage); + msg.setMessageTime(new Date()); + msg.setGridId("*"); + msgList.add(msg); + map.put(staff.getStaffId(),staff.getStaffId()); + } + }); + logger.info("项目立项,推送微信订阅消息"); + return epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); + } + + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.11__alter_project.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.11__alter_project.sql new file mode 100644 index 0000000000..2d700d064e --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.11__alter_project.sql @@ -0,0 +1,7 @@ +ALTER TABLE `project` +ADD COLUMN `BACK_GROUND` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目背景' AFTER `TITLE`; + + +ALTER TABLE `project` +MODIFY COLUMN `ORIGIN` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '来源:议题issue 项目立项:agency' AFTER `AGENCY_ID`; + diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml index 50f8bc6433..0a430eab87 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml @@ -124,6 +124,7 @@ SELECT p.ID AS "projectId", p.TITLE AS "projectTitle", + p.BACK_GROUND AS "backGround", p.ORIGIN AS "origin", p.ORIGIN_ID AS "originId", p.STATUS AS "projectStatus", diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 5f5ae5b5ce..52fe2a04cb 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -505,4 +505,11 @@ public interface EpmetUserOpenFeignClient { **/ @PostMapping(value = "/epmetuser/userrole/getuserroleinfo") Result> getUserRoleInfo(@RequestBody UserRoleFormDTO userRoleFormDTO); + + /** + * @Author sun + * @Description 根据staffId集合查询工作人员基础信息 + **/ + @PostMapping(value = "/epmetuser/customerstaff/getcustomerstafflist") + Result getCustomerStaffList(@RequestBody List staffIdList); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 328b98f1f3..6230e5d875 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -358,4 +358,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result> getUserRoleInfo(UserRoleFormDTO userRoleFormDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserRoleInfo", userRoleFormDTO); } + + @Override + public Result getCustomerStaffList(List staffIdList) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getCustomerStaffList", staffIdList); + } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml index f5a341bf5b..eab3a42191 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/CustomerStaffDao.xml @@ -181,10 +181,12 @@