diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java index 8575a8e244..965869be12 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java @@ -73,7 +73,7 @@ public class GovWebServiceImpl implements GovWebService { form.setMobile(formDTO.getPhone()); Result result = epmetUserFeignClient.getStaffIdAndPwd(form); if (!result.success() || null == result.getData() || null == result.getData().getUserId()) { - logger.error("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在"); + logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在"); throw new RenException(EpmetErrorCode.ERR10003.getCode()); } GovWebOperLoginResultDTO resultDTO = result.getData(); diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java index 0b0e86c104..41f9469ec2 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/SsoServiceImpl.java @@ -167,7 +167,7 @@ public class SsoServiceImpl implements SsoService { //test end if (!result.success() || null == result.getData() || null == result.getData().getUserId()) { - logger.error("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在,param:{}", JSON.toJSONString(form)); + logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在,param:{}", JSON.toJSONString(form)); throw new RenException(EpmetErrorCode.ERR10003.getCode()); } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java index 41302f5e32..25cfa3e0b2 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java @@ -82,5 +82,8 @@ public interface StrConstant { String MAX="MAX"; + //青岛体悟实训客户 String SPECIAL_CUSTOMER = "150282ed25c14ff0785e7e06283b6283"; + //平音客户 + String PY_CUSTOMER = "6f203e30de1a65aab7e69c058826cd80"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectSatisfactionStatisticsDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectSatisfactionStatisticsDTO.java index 8e2f609f3e..9328ef8552 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectSatisfactionStatisticsDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govproject/ProjectSatisfactionStatisticsDTO.java @@ -93,4 +93,9 @@ public class ProjectSatisfactionStatisticsDTO implements Serializable { */ private String customerId; + /** + * 应评价人数【等于实际表决人数】 + */ + private Integer shouldEvaluateCount; + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectSatisfactionStatisticsEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectSatisfactionStatisticsEntity.java index 6af728022a..d3c93ba38c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectSatisfactionStatisticsEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/govproject/ProjectSatisfactionStatisticsEntity.java @@ -66,4 +66,9 @@ public class ProjectSatisfactionStatisticsEntity extends BaseEpmetEntity { @TableField(fill = FieldFill.INSERT) private String customerId; + /** + * 应评价人数【等于实际表决人数】 + */ + private Integer shouldEvaluateCount; + } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/screen/CategoryAnalysisResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/screen/CategoryAnalysisResultDTO.java index da023e6c0b..f91ef35e09 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/screen/CategoryAnalysisResultDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/result/screen/CategoryAnalysisResultDTO.java @@ -23,4 +23,14 @@ public class CategoryAnalysisResultDTO implements Serializable { * 项目总数 */ private Integer projectTotal; + + /** + * 数据更新至 + */ + private String dateId; + + /** + * 分类编码 + */ + private String categoryCode; } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java index e75abb9f63..9cd0d8cf49 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/IndexScoreFormDTO.java @@ -3,7 +3,6 @@ package com.epmet.evaluationindex.screen.dto.form; import lombok.Data; -import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -31,6 +30,8 @@ public class IndexScoreFormDTO implements Serializable { */ //@NotBlank(message = "月份Id不能为空",groups = {IndexScoreFormDTO.AddUserInternalGroup.class}) private String monthId; + + private String customerId; public interface AddUserInternalGroup {} } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/ScreenProjectDetailFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/ScreenProjectDetailFormDTO.java index be3585067d..d9d7062a1a 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/ScreenProjectDetailFormDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/form/ScreenProjectDetailFormDTO.java @@ -16,4 +16,7 @@ public class ScreenProjectDetailFormDTO implements Serializable { @NotBlank(message = "projectId不能为空") private String projectId; + + @NotBlank(message = "customerId不能为空") + private String customerId; } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/AdvanceBranchRankResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/AdvanceBranchRankResultDTO.java index 216214d05c..48c80b86dc 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/AdvanceBranchRankResultDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/AdvanceBranchRankResultDTO.java @@ -55,4 +55,6 @@ public class AdvanceBranchRankResultDTO implements Serializable { */ private String parentAgencyName; + private Integer sort; + private String orgId; } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java index a52b035475..fa37c1f731 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/OrgRankDataResultDTO.java @@ -56,4 +56,5 @@ public class OrgRankDataResultDTO implements Serializable { */ private String parentAgencyName; + private String orgId; } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/SubAgencyIndexRankResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/SubAgencyIndexRankResultDTO.java index 246b374752..af9d6caf5e 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/SubAgencyIndexRankResultDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/dto/result/SubAgencyIndexRankResultDTO.java @@ -37,4 +37,8 @@ public class SubAgencyIndexRankResultDTO implements Serializable { * 服务能力 */ private Double serviceAbility = 0.0; + + private String orgId; + private String orgType; + private String areaCode; } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/CustomerProjectCategoryDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/CustomerProjectCategoryDTO.java new file mode 100644 index 0000000000..2487eaee67 --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/CustomerProjectCategoryDTO.java @@ -0,0 +1,29 @@ +package com.epmet.project; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 描述一下 + * + * @author yinzuomei@elink-cn.com + * @date 2021/5/12 11:19 + */ +@Data +public class CustomerProjectCategoryDTO implements Serializable { + + /** + * 客户自己的分类编码 + */ + private String categoryCode; + + /** + * 客户自己的分类名称 + */ + private String categoryName; + /** + * 分类等级:1、2....;产品只有2级分类 + */ + private Integer level; +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java index cb851647af..55543e1e70 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/IndexController.java @@ -134,7 +134,8 @@ public class IndexController { * @author sun */ @PostMapping("month/indexscore") - public Result indexScore(@RequestBody IndexScoreFormDTO formDTO) { + public Result indexScore(@RequestHeader("CustomerId") String customerId,@RequestBody IndexScoreFormDTO formDTO) { + formDTO.setCustomerId(customerId); ValidatorUtils.validateEntity(formDTO, IndexScoreFormDTO.AddUserInternalGroup.class); return new Result().ok(indexService.indexScore(formDTO)); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java index 87547a1777..e63eb501f8 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java @@ -74,7 +74,9 @@ public class ScreenProjectController { * @Date 2021/2/24 16:10 */ @PostMapping("projectdetailv2") - public Result projectDetail(@RequestBody ScreenProjectDetailFormDTO formDTO){ + public Result projectDetail(@RequestHeader("CustomerId") String customerId,@RequestBody ScreenProjectDetailFormDTO formDTO){ + formDTO.setCustomerId(customerId); + ValidatorUtils.validateEntity(formDTO); return screenProjectService.projectDistributionDetail(formDTO); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java index 498f57309c..a0992f8d97 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java @@ -150,6 +150,14 @@ public interface ScreenCustomerAgencyDao { **/ List selectGridList(@Param("areaCode") String areaCode,@Param("agencyId") String agencyId); + /** + * @return java.util.List + * @param areaCode + * @param agencyId + * @author yinzuomei + * @description 下一级组织+直属网格 + * @Date 2021/5/10 14:02 + **/ List getNextAgencyIds(@Param("areaCode")String areaCode,@Param("agencyId")String agencyId); List selectSubAgencyIds(@Param("areaCode")String areaCode,@Param("agencyId")String agencyId); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java index 3064505cf6..9e203ee3e4 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java @@ -18,6 +18,7 @@ package com.epmet.datareport.dao.evaluationindex.screen; import com.epmet.dto.result.screen.CategoryAnalysisResultDTO; +import com.epmet.project.CustomerProjectCategoryDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -39,4 +40,6 @@ public interface ScreenProjectCategoryOrgDailyDao { * @return java.util.List */ List selectCategoryAnalysis(@Param("agencyId") String agencyId,@Param("customerId")String customerId); + + CustomerProjectCategoryDTO selectProjectCategory(@Param("categoryCode")String categoryCode, @Param("customerId")String customerId, @Param("subCustomerIds")List subCustomerIds); } \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java index 727c52298a..061d0b81f1 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/evaluationindex/screen/ScreenProjectDataDao.java @@ -19,9 +19,13 @@ public interface ScreenProjectDataDao { List projectDistributionDetail(@Param("projectId") String projectId); - List selectProjectImgs(@Param("projectId") String projectId); + List selectProjectImgs(@Param("projectId") String projectId, + @Param("customerId") String customerId); - List selectProjectProcess(@Param("projectId") String projectId); + List selectProjectProcess(@Param("projectId") String projectId, + @Param("customerId") String customerId); - List selectProjectProcessAttachments(@Param("processId") String processId); + List selectProjectProcessAttachments(@Param("processId") String processId, + @Param("projectId") String projectId, + @Param("customerId") String customerId); } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java index bf3f8dbdcc..535362f3ea 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java @@ -303,7 +303,7 @@ public class AgencyServiceImpl implements AgencyService { * @param agencyId * @return java.util.List * @author yinzuomei - * @description 获取当前组织的下级组织集合 + * @description 获取当前组织的下级组织集合:下一级组织+直属网格 * @Date 2021/2/25 16:52 **/ @DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true) diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java index 333c129f87..54b0b797be 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/GrassrootsPartyDevServiceImpl.java @@ -67,6 +67,7 @@ public class GrassrootsPartyDevServiceImpl implements GrassrootsPartyDevService public PartymemberPercentResultDTO partymemberBaseInfo(ParymemberFormDTO param) { if(StringUtils.isNotBlank(param.getAreaCode())){ logger.info(String.format("党员基本情况-饼状图概况按照areaCode查询:%s",param.getAreaCode())); + //下一级组织+直属网格 List ids=screenCustomerAgencyService.getNextAgencyIds(param.getAreaCode(),param.getAgencyId()); if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(ids)){ PartymemberPercentResultDTO result = screenUserTotalDataDao.selectAgencyPartymemberPercentByIds(ids); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java index 7b873568f9..12c470cd25 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/IndexServiceImpl.java @@ -404,6 +404,7 @@ public class IndexServiceImpl implements IndexService { List streetList = screenIndexDataMonthlyDao.selectSubStreetByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum()); // 小数四舍五入 streetList.forEach(indexRank -> { + indexRank.setOrgType("street"); indexRank.setPartyDevAbility(getRound(indexRank.getPartyDevAbility())); indexRank.setGovernAbility(getRound(indexRank.getGovernAbility())); indexRank.setServiceAbility(getRound(indexRank.getServiceAbility())); @@ -414,6 +415,7 @@ public class IndexServiceImpl implements IndexService { List gridList = screenIndexDataMonthlyDao.selectSubGridByAreaCode(formDTO.getCustomerId(),yearId,formDTO.getAreaCode(),formDTO.getTopNum()); // 小数四舍五入 gridList.forEach(indexRank -> { + indexRank.setOrgType("grid"); indexRank.setPartyDevAbility(getRound(indexRank.getPartyDevAbility())); indexRank.setGovernAbility(getRound(indexRank.getGovernAbility())); indexRank.setServiceAbility(getRound(indexRank.getServiceAbility())); diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java index fce388ec23..150bde5417 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/PartyMemberLeadServiceImpl.java @@ -119,11 +119,17 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { @DataSource(value = DataSourceConstant.EVALUATION_INDEX,datasourceNameFromArg = true) @Override public ContactMassLineChartResultDTO contactMassLineChart(ContactMassLineChartFormDTO contactMassLineChartFormDTO) { + ContactMassLineChartResultDTO result = new ContactMassLineChartResultDTO(); List subAgencyIdorGridIdList=screenCustomerAgencyService.getNextAgencyIds(contactMassLineChartFormDTO.getAreaCode(),contactMassLineChartFormDTO.getAgencyId()); log.info("当前组织的下级id:"+JSON.toJSONString(subAgencyIdorGridIdList)); - - ContactMassLineChartResultDTO result = new ContactMassLineChartResultDTO(); + if(CollectionUtils.isEmpty(subAgencyIdorGridIdList)){ + //如果没有下级组织或者直属网格 + result.setXAxis(new ArrayList<>()); + result.setGroupMemberData(new ArrayList<>()); + result.setGroupData(new ArrayList<>()); + return result; + } // List contactMassLineChartResults = screenPartyLinkMassesDataDao.selectContactMassLineChart(contactMassLineChartFormDTO.getAgencyId()); //多客户版修改如下: List contactMassLineChartResults = screenPartyLinkMassesDataDao.selectContactMassLineChartByAgencyIds(subAgencyIdorGridIdList); @@ -276,12 +282,16 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { gridData = screenOrgRankDataDao.selectGridDataMonthlyAreaCode(monthId,param.getAreaCode()); } if(null == gridData || gridData.isEmpty()) return result; - gridData.forEach( data -> { + int num=1; + for(OrgRankDataResultDTO data:gridData){ AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class); o.setClosedProjectRatio(convertPercentStr(data.getClosedProjectRatio())); o.setSatisfactionRatio(convertPercentStr(data.getSatisfactionRatio())); + o.setSort(num); + o.setOrgId(data.getOrgId()); + num++; result.add(o); - }); + }; }else{ List gridData = screenOrgRankDataDao.selectGridDataMonthly(param.getAgencyId(),monthId); @@ -293,12 +303,16 @@ public class PartyMemberLeadServiceImpl implements PartyMemberLeadService { gridData = screenOrgRankDataDao.selectGridDataMonthly(param.getAgencyId(),monthId); } if(null == gridData || gridData.isEmpty()) return result; - gridData.forEach( data -> { + int num=1; + for(OrgRankDataResultDTO data:gridData){ AdvanceBranchRankResultDTO o = ConvertUtils.sourceToTarget(data,AdvanceBranchRankResultDTO.class); o.setClosedProjectRatio(convertPercentStr(data.getClosedProjectRatio())); o.setSatisfactionRatio(convertPercentStr(data.getSatisfactionRatio())); + o.setSort(num); + o.setOrgId(data.getOrgId()); + num++; result.add(o); - }); + }; } return result; } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java index bed88ec3d4..c2728396d0 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java @@ -2,6 +2,7 @@ package com.epmet.datareport.service.evaluationindex.screen.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; import com.epmet.datareport.dao.evaluationindex.screen.ScreenEventDataDao; @@ -17,10 +18,15 @@ import com.epmet.evaluationindex.screen.dto.form.ScreenProjectDistributionFormDT import com.epmet.evaluationindex.screen.dto.result.ProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDetailResultDTO; import com.epmet.evaluationindex.screen.dto.result.ScreenProjectDistributionResultDTO; +import com.epmet.feign.OperCrmOpenFeignClient; +import com.epmet.project.CustomerProjectCategoryDTO; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.List; /** @@ -29,6 +35,8 @@ import java.util.List; * @author yinzuomei@elink-cn.com * @date 2020/8/18 10:23 */ + +@Slf4j @Service @DataSource(DataSourceConstant.EVALUATION_INDEX) public class ScreenProjectServiceImpl implements ScreenProjectService { @@ -42,6 +50,8 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { @Autowired private ScreenProjectCategoryOrgDailyDao screenProjectCategoryOrgDailyDao; + @Autowired + private OperCrmOpenFeignClient operCrmOpenFeignClient; /** * @Description 3、项目详情 @@ -74,14 +84,15 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { // 1:红色:为刚提交未做任何响应处理未结案的项目; // 2:黄色: 至少做过一次响应处理答复但未结案的项目; // 3:绿色:已经结案的项目。 - List areaIds = null; + List orgIds = null; if (StringUtils.isNotBlank(formDTO.getAreaCode())){ - areaIds = screenProjectDataDao.selectIdsByAreaCode(formDTO.getAreaCode()); + //所有组织+网格 + orgIds = screenProjectDataDao.selectIdsByAreaCode(formDTO.getAreaCode()); } if (formDTO.getPageSize() == null){ formDTO.setPageSize(NumConstant.TWO_HUNDRED); } - List resultDTOS = screenProjectDataDao.projectDistribution(formDTO.getAgencyId(),areaIds,formDTO.getLevel(),formDTO.getPageSize()); + List resultDTOS = screenProjectDataDao.projectDistribution(formDTO.getAgencyId(),orgIds,formDTO.getLevel(),formDTO.getPageSize()); return resultDTOS; } @@ -90,13 +101,14 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { List resultDTOS = screenProjectDataDao.projectDistributionDetail(formDTO.getProjectId()); resultDTOS.forEach(item -> { //项目图片 - List imgList = screenProjectDataDao.selectProjectImgs(formDTO.getProjectId()); + List imgList = screenProjectDataDao.selectProjectImgs(formDTO.getProjectId(),item.getCustomerId()); item.setImgList(imgList); //项目处理流程 - List processDTOS = screenProjectDataDao.selectProjectProcess(formDTO.getProjectId()); + List processDTOS = screenProjectDataDao.selectProjectProcess(formDTO.getProjectId(),item.getCustomerId()); //流程附件 processDTOS.forEach(processDTO -> { - List attachmentDTOS = screenProjectDataDao.selectProjectProcessAttachments(processDTO.getProcessId()); + List attachmentDTOS = + screenProjectDataDao.selectProjectProcessAttachments(processDTO.getProcessId(),formDTO.getProjectId(),item.getCustomerId()); processDTO.setAttachments(attachmentDTOS); }); item.setProcessList(processDTOS); @@ -116,6 +128,25 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { @DataSource(value = DataSourceConstant.EVALUATION_INDEX, datasourceNameFromArg = true) @Override public List categoryAnalysis(String customerId, CategoryAnalysisFormDTO formDTO) { - return screenProjectCategoryOrgDailyDao.selectCategoryAnalysis(formDTO.getAgencyId(),customerId); + List resultDTOList = screenProjectCategoryOrgDailyDao.selectCategoryAnalysis(formDTO.getAgencyId(), customerId); + List resultList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(resultDTOList)) { + Result> crmRes = operCrmOpenFeignClient.getAllSubCustomerIds(customerId); + List subCustomerIds = new ArrayList<>(); + if (crmRes.success() && !CollectionUtils.isEmpty(crmRes.getData())) { + subCustomerIds = crmRes.getData(); + } + for (CategoryAnalysisResultDTO dto : resultDTOList) { + CustomerProjectCategoryDTO projectCategoryDTO = screenProjectCategoryOrgDailyDao.selectProjectCategory(dto.getCategoryCode(), customerId, subCustomerIds); + if (null == projectCategoryDTO || StringUtils.isBlank(projectCategoryDTO.getCategoryName())) { + log.warn(String.format("查询分类名称失败,当前客户:%s, categoryCode:%s", dto.getCategoryCode(), customerId)); + continue; + } + CategoryAnalysisResultDTO resultDto = ConvertUtils.sourceToTarget(dto, CategoryAnalysisResultDTO.class); + resultDto.setCategoryName(projectCategoryDTO.getCategoryName()); + resultList.add(resultDto); + } + } + return resultList; } } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/UserAnalysisServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/UserAnalysisServiceImpl.java index c4bf48603a..7e7e2864dd 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/UserAnalysisServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/UserAnalysisServiceImpl.java @@ -199,6 +199,15 @@ public class UserAnalysisServiceImpl implements UserAnalysisService { for(UserSubAgencyResultDTO m:dimList){ logger.info("机关名:"+m.getName()+",总数="+m.getTotal()); } + //2021.5.25 平音客户热心居民改网格员 sun start + if (StrConstant.PY_CUSTOMER.equals(tokenDto.getCustomerId())) { + dimList.forEach(d->{ + if("热心居民".equals(d.getType())){ + d.setType("网格员"); + } + }); + } + //2021.5.25 平音客户热心居民改网格员 sun end return dimList; } @@ -323,6 +332,15 @@ public class UserAnalysisServiceImpl implements UserAnalysisService { for(UserSubGridResultDTO m:dimList){ logger.info("网格名:"+m.getName()+",总数="+m.getTotal()); } + //2021.5.25 平音客户热心居民改网格员 sun start + if (StrConstant.PY_CUSTOMER.equals(tokenDto.getCustomerId())) { + dimList.forEach(d->{ + if("热心居民".equals(d.getType())){ + d.setType("网格员"); + } + }); + } + //2021.5.25 平音客户热心居民改网格员 sun end return dimList; } @@ -488,6 +506,15 @@ public class UserAnalysisServiceImpl implements UserAnalysisService { party.setValue(userIncrTrendResDTO.getPartymemberIncr()); resultList.add(party); } + //2021.5.25 平音客户热心居民改网格员 sun start + if (StrConstant.PY_CUSTOMER.equals(tokenDto.getCustomerId())) { + resultList.forEach(d->{ + if("热心居民".equals(d.getType())){ + d.setType("网格员"); + } + }); + } + //2021.5.25 平音客户热心居民改网格员 sun end return resultList; } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml index fba3b96602..328bb2f753 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml @@ -272,6 +272,7 @@ and grid.PARENT_AGENCY_ID=#{agencyId} + - SELECT D.CATEGORY_NAME AS categoryName, - M.PROJECT_TOTAL AS projectTotal + SELECT '' AS categoryName, + M.PROJECT_TOTAL AS projectTotal, + m.DATE_ID as dateId, + m.CATEGORY_CODE as categoryCode FROM screen_project_category_org_daily m - left join customer_project_category_dict d - on(m.CATEGORY_CODE=D.CATEGORY_CODE - AND D.DEL_FLAG='0' - and d.CUSTOMER_ID=#{customerId}) WHERE M.DEL_FLAG = '0' - AND M.ORG_ID = #{agencyId} - AND M.DATE_ID = ( - select - date_id - from - screen_project_category_org_daily - where - del_flag = '0' - and ORG_ID = #{agencyId} - and CUSTOMER_ID=#{customerId} - order by - date_id desc, - created_time desc - limit 1 - ) - ORDER BY M.PROJECT_TOTAL desc,D.CATEGORY_NAME asc - limit 20 + and m.level='1' + AND M.ORG_ID = #{agencyId} + and M.CUSTOMER_ID=#{customerId} + AND M.DATE_ID = ( + select + date_id + from + screen_project_category_org_daily + where + del_flag = '0' + and ORG_ID = #{agencyId} + and CUSTOMER_ID=#{customerId} + order by + date_id desc, + created_time desc + limit 1 + ) + ORDER BY M.PROJECT_TOTAL desc + + + + \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml index f6c6f2b20e..2f173078a0 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectDataDao.xml @@ -77,6 +77,7 @@ select PROJECT_IMG_URL from screen_project_img_data where del_flag = '0' and project_id = #{projectId} + and CUSTOMER_ID= #{customerId} order by sort asc diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectGridDailyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectGridDailyDao.xml index 056abec87a..7fecb846cb 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectGridDailyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenProjectGridDailyDao.xml @@ -4,6 +4,7 @@ + + \ No newline at end of file diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPublicPartiTotalDataDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPublicPartiTotalDataDao.xml index 1f3e4623c0..37b98a4bc9 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPublicPartiTotalDataDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenPublicPartiTotalDataDao.xml @@ -35,6 +35,7 @@ + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicMainDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicMainDailyDao.java index eb9339e5eb..1834e7fd04 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicMainDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/extract/FactOriginTopicMainDailyDao.java @@ -107,6 +107,14 @@ public interface FactOriginTopicMainDailyDao extends BaseDao topicIds); + /** * @return java.lang.Integer * @param customerId diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java index 67cbe37e23..b0dedb0db5 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenCustomerAgencyDao.java @@ -223,4 +223,12 @@ public interface ScreenCustomerAgencyDao extends BaseDao selectAllOrgByCustomerId(@Param("customerId")String customerId); + + /** + * @Description 查询顶级组织ID + * @Param customerId + * @author zxc + * @date 2021/5/24 9:42 上午 + */ + ScreenCustomerAgencyEntity selectTopAgency(@Param("customerId")String customerId); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java index 9f55340594..df66aca920 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java @@ -65,4 +65,14 @@ public interface ScreenProjectCategoryOrgDailyDao extends BaseDao selectOrgCategoryMoreCustomerInfo(@Param("customerIds")List customerIds, @Param("dateId") String dateId, @Param("level")String level, @Param("customerId")String customerId, @Param("existsStatus")Boolean existsStatus); + + /** + * @Description 根据客户ID,天ID,组织ID删除旧数据 + * @Param customerId + * @Param dateId + * @Param orgIds + * @author zxc + * @date 2021/5/21 3:26 下午 + */ + int deleteAppointData(@Param("customerId") String customerId, @Param("dateId") String dateId,@Param("orgIds")List orgIds); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicMainDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicMainDailyServiceImpl.java index d535012b15..c9e42a3a49 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicMainDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/FactOriginTopicMainDailyServiceImpl.java @@ -42,6 +42,7 @@ import com.epmet.service.evaluationindex.extract.todata.FactOriginTopicMainDaily import com.epmet.service.org.CustomerGridService; import com.epmet.service.topic.TopicService; import com.epmet.service.user.UserService; +import com.epmet.util.ModuleConstant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -93,6 +94,7 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl map = this.constructFactOriginData(topicOriginInfoList, gridMap); List mainDailyEntityList = (List) map.get("main"); List logDailyEntityList = (List) map.get("log"); + List topicIds = (List) map.get(ModuleConstant.NEED_UPDATE_STATUS_TOPIC); //删除之前统计的数据 deleteFactOriginData(customerId,dateId); //批量保存主表 @@ -101,6 +103,8 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl topicIds){ + if (!CollectionUtils.isEmpty(topicIds)){ + baseDao.updateTopicMainStatus(topicIds); + } + } + private Map getGridInfoMap(String customerId) { Map map=new HashMap<>(); @@ -174,12 +190,13 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl userIds = topicOriginInfoList.stream().map(topic -> topic.getOperateUserId()).distinct().collect(Collectors.toList()); Map userIsPartyMap = userService.selectUserIsParty(userIds); + List topicIds = new ArrayList<>(); for(TopicOriginInfoDTO topicOriginInfoDTO:topicOriginInfoList){ GridInfoDTO gridInfoDTO=gridMap.get(topicOriginInfoDTO.getGridId()); if(null==gridInfoDTO){ - log.error("没有找到 gridId="+topicOriginInfoDTO.getGridId()+" 的基本信息"); + log.warn("没有找到 gridId="+topicOriginInfoDTO.getGridId()+" 的基本信息"); // continue; - throw new RenException("xxxxxx"); + throw new RenException("gridInfoDTO is null gridId="+topicOriginInfoDTO.getGridId()); } // 一年的第几周 String weekId = DateUtils.format(topicOriginInfoDTO.getOriginalBusinessTime(), DateUtils.DATE_PATTERN_YYYY).concat("W").concat(String.valueOf(DateUtils.getWeekOfYear(topicOriginInfoDTO.getOriginalBusinessTime()))); @@ -221,9 +238,13 @@ public class FactOriginTopicMainDailyServiceImpl extends BaseServiceImpl selectOrgNameAgency(List agencyIds); + + /** + * @Description 查询顶级组织ID + * @Param customerId + * @author zxc + * @date 2021/5/24 9:42 上午 + */ + ScreenCustomerAgencyEntity selectTopAgency(String customerId); } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java index f89e48740e..96019615ea 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenCustomerAgencyServiceImpl.java @@ -256,5 +256,16 @@ public class ScreenCustomerAgencyServiceImpl implements ScreenCustomerAgencyServ return screenCustomerAgencyDao.selectAllAgencyId(customerId); } + /** + * @Description 查询顶级组织ID + * @Param customerId + * @author zxc + * @date 2021/5/24 9:42 上午 + */ + @Override + public ScreenCustomerAgencyEntity selectTopAgency(String customerId) { + return screenCustomerAgencyDao.selectTopAgency(customerId); + } + } \ No newline at end of file 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 e46b85f91d..e87a8567fa 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 @@ -36,6 +36,7 @@ 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.ScreenCustomerAgencyEntity; import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryOrgDailyEntity; import com.epmet.service.crm.CustomerRelationService; import com.epmet.service.evaluationindex.extract.todata.FactOriginProjectCategoryDailyService; @@ -179,6 +180,12 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByStatus = categoryProjectGrid.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus)); List categoryProjectResultDTOS1 = groupByStatus.get(false); - if (!CollectionUtils.isEmpty(categoryProjectResultDTOS1)) categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1); + if (!CollectionUtils.isEmpty(categoryProjectResultDTOS1)) { + categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1); + } } } result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class); } // 组织项目分类 项目数 + List orgIds = new ArrayList<>(); Map> 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()); + orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId); if (!CollectionUtils.isEmpty(result)){ if (!CollectionUtils.isEmpty(screenProjectCategory)){ @@ -291,7 +301,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl {r.setOrgType(level);r.setDateId(dateId);}); } } - deleteAndInsert(customerId,dateId,result); + deleteAndInsert(customerId,dateId,result,orgIds); } /** @@ -349,15 +359,18 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl categoryProjectResultDTOS = baseDao.selectOrgCategoryInfo(customerId, dateId, level); List belongGridInfos = gridService.selectBelongGridInfo(customerId, level); if (!CollectionUtils.isEmpty(belongGridInfos)){ // 存在直属网格 List gridIds = belongGridInfos.stream().map(m -> m.getGridId()).collect(Collectors.toList()); + // 根据网格ID查询分类标签 List categoryProjectGrid = gridDailyDao.selectCategoryInfo(customerId, dateId, level, gridIds); if (!CollectionUtils.isEmpty(categoryProjectGrid)){ categoryProjectResultDTOS.forEach(agency -> { categoryProjectGrid.forEach(grid -> { + // 组织ID 和 分类标签code一样时,项目数累加 if (agency.getOrgId().equals(grid.getOrgId()) && agency.getCategoryCode().equals(grid.getCategoryCode())){ agency.setProjectTotal(agency.getProjectTotal() + grid.getProjectTotal()); grid.setStatus(true); @@ -365,17 +378,57 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByStatus = categoryProjectGrid.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus)); + // 取出分类标签code同agency级别不一样的数据 List categoryProjectResultDTOS1 = groupByStatus.get(false); categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1); } } result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class); + /** + * 查询父子客户所有的分类,根据分类分组,然后把agencyId统一换成父客户的 + * 在保存一份子客户自己agencyId的 + */ if (ScreenConstant.DISTRICT.equals(level)){ + // 查询 平阴的agencyId + ScreenCustomerAgencyEntity entity = agencyService.selectTopAgency(customerId); // 子级客户ID List customerIds = relationInfo.stream().map(m -> m.getCustomerId()).collect(Collectors.toList()); // 父客户存在的分类 List categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, true); + // 父客户不存在的分类 + List categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false); + // 子级客户的分类标签数据 + List sonResult = new ArrayList<>(); if (!CollectionUtils.isEmpty(categoryProjectExists)){ + categoryProjectResultDTOS.addAll(categoryProjectExists); + sonResult.addAll(categoryProjectExists); + } + if (!CollectionUtils.isEmpty(categoryProjectNotExists)){ + categoryProjectResultDTOS.addAll(categoryProjectNotExists); + sonResult.addAll(categoryProjectNotExists); + } + // 此时的 'categoryProjectResultDTOS' 等于 父子客户所有的分类标签 + Map> groupByCategoryCode = categoryProjectResultDTOS.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode)); + // 这时的result集合要清空,因为被上边使用 【result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);】 + result.clear(); + List finalResult = result; + groupByCategoryCode.forEach((code, list) -> { + ScreenProjectCategoryOrgDailyEntity e = new ScreenProjectCategoryOrgDailyEntity(); + e.setCustomerId(customerId); + e.setCategoryCode(code); + e.setOrgId(entity.getAgencyId()); + e.setProjectTotal(CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.stream().collect(Collectors.summingInt(CategoryProjectResultDTO::getProjectTotal))); + e.setPid(entity.getPid()); + e.setPids(StringUtils.isEmpty(entity.getPids()) ? NumConstant.ZERO_STR : entity.getPids()); + // 因为根据categoryCode分组,所以level都一样,取第一条的 + e.setLevel(list.get(NumConstant.ZERO).getLevel()); + finalResult.add(e); + }); + if (!CollectionUtils.isEmpty(sonResult)){ + List entities = ConvertUtils.sourceToTarget(sonResult, ScreenProjectCategoryOrgDailyEntity.class); + result.addAll(entities); + } + /*if (!CollectionUtils.isEmpty(categoryProjectExists)){ result.forEach(r -> { categoryProjectExists.forEach(c -> { if (r.getCategoryCode().equals(c.getCategoryCode())){ @@ -391,19 +444,19 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false); if (!CollectionUtils.isEmpty(categoryProjectNotExists)){ List notExists = ConvertUtils.sourceToTarget(categoryProjectNotExists, ScreenProjectCategoryOrgDailyEntity.class); result.addAll(notExists); - } + }*/ } } // 目前不考虑计算子客户组织直接创建的项目,只算内部客户 + List orgIds = new ArrayList<>(); Map> 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()); + orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + // 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId); if (!CollectionUtils.isEmpty(result)) { if (!CollectionUtils.isEmpty(screenProjectCategory)) { @@ -416,6 +469,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByStatus = screenProjectCategory.stream().collect(Collectors.groupingBy(ScreenProjectCategoryGridDailyDTO::getStatus)); + // 取出没有累加过的数据 List screenProjectCategoryNoCal = groupByStatus.get(false); if (!CollectionUtils.isEmpty(screenProjectCategoryNoCal)) { List noCalCategory = ConvertUtils.sourceToTarget(screenProjectCategoryNoCal, ScreenProjectCategoryOrgDailyEntity.class); @@ -434,7 +488,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl needInsert){ + public void deleteAndInsert(String customerId, String dateId, List needInsert,List orgIds){ if (CollectionUtils.isEmpty(needInsert)){ return; } + if (CollectionUtils.isEmpty(orgIds)){ + return; + } Integer row = NumConstant.ZERO; do { - row = baseDao.deleteByDateIdAndCustomerId(customerId, dateId); + row = baseDao.deleteAppointData(customerId, dateId,orgIds); }while (row > NumConstant.ZERO && row == NumConstant.ONE_THOUSAND); List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); partition.forEach(p -> { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java index 65f54cbefc..28532046fb 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java @@ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.util.ArrayList; @@ -132,6 +133,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService { @Override @Transactional(rollbackFor = Exception.class) public void insertPartyBranchData(PartyBranchDataListFormDTO formDTO, String customerId) { + if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) { + throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId()); + } if (formDTO.getIsFirst()) { int deleteNum; do { @@ -147,6 +151,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService { @Override @Transactional(rollbackFor = Exception.class) public void insertOrgRankData(OrgRankDataListFormDTO formDTO, String customerId) { + if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) { + throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId()); + } if (formDTO.getIsFirst()) { int deleteNum; do { @@ -162,6 +169,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService { @Override @Transactional(rollbackFor = Exception.class) public void insertGovernRankData(GovernRankDataListFormDTO formDTO, String customerId) { + if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) { + throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId()); + } if (formDTO.getIsFirst()) { int deleteNum; do { @@ -250,6 +260,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService { @Override @Transactional(rollbackFor = Exception.class) public void insertIndexDataMonthly(IndexDataListMonthlyFormDTO formDTO, String customerId) { + if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) { + throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId()); + } if (formDTO.getIsFirst()) { int deleteNum; do { @@ -345,6 +358,9 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService { @Override @Transactional(rollbackFor = Exception.class) public void insertUserJoin(UserJoinListFormDTO formDTO, String customerId) { + if (StringUtils.isEmpty(formDTO.getMonthId()) || formDTO.getMonthId().length() != NumConstant.SIX) { + throw new RenException("monthId格式应为: yyyyMM,当前传入:"+formDTO.getMonthId()); + } if (formDTO.getIsFirst()) { int deleteNum; do { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java index 7473434df9..1881ed5c77 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java @@ -39,4 +39,8 @@ public interface ModuleConstant { String EXCEPTION_DING_INTERCEPTOR_PREFIX_TOPIC_STATISTICAL = "topicStats"; String LOG_WARN_NO_AGENCY_MESSAGE = "没有相应的机关集合"; + + String TOPIC_STATUS_SHIFT_ISSUE = "shift_issue"; + + String NEED_UPDATE_STATUS_TOPIC = "needUpdateStatusTopic"; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.16__add_shiftIssue.sql b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.16__add_shiftIssue.sql new file mode 100644 index 0000000000..367af0a9b7 --- /dev/null +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/db/migration/V0.0.16__add_shiftIssue.sql @@ -0,0 +1 @@ +ALTER TABLE `fact_origin_topic_main_daily` ADD `SHIFT_ISSUE` tinyint(1) NOT NULL default '0' COMMENT '是否转为议题,0:false,1:true' AFTER `CREATE_TOPIC_USER_IS_PARTY`; \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicMainDailyDao.xml index 9ad06cd4b5..ebf9f0a4f5 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginTopicMainDailyDao.xml @@ -139,6 +139,19 @@ where id = #{topicId} + + + UPDATE fact_origin_topic_main_daily + SET SHIFT_ISSUE = 1, + UPDATED_TIME = NOW() + WHERE 1=1 + AND ( + + ID = #{topicId} + + ) + + + + + SELECT diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml index 6ced5d827a..fa4978c985 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/group/GroupDataDao.xml @@ -26,12 +26,12 @@ COUNT(rgm.id) AS gridGroupPeopleTotal FROM resi_group rg - LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id + LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0 WHERE rg.DEL_FLAG = 0 AND rg.state = #{state} AND rg.customer_id = #{customerId} - AND rgm.status != #{status} + AND (rgm.status = 'approved' OR rgm.status = 'silent') AND DATE_FORMAT(rgm.created_time,'%Y%m%d') #{dateId} GROUP BY rg.grid_id @@ -45,12 +45,12 @@ COUNT( rgm.id ) AS groupCount FROM resi_group rg - LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id + LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0 WHERE rg.DEL_FLAG = 0 AND rg.state = #{state} AND rg.customer_id = #{customerId} - AND rgm.STATUS != #{status} + AND (rgm.status = 'approved' OR rgm.status = 'silent') AND DATE_FORMAT(rgm.created_time,'%Y%m%d') #{dateId} GROUP BY rgm.resi_group_id @@ -94,12 +94,12 @@ COUNT(rgm.id) AS gridGroupPeopleTotal FROM resi_group rg - LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id + LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0 WHERE rg.DEL_FLAG = 0 AND rg.state = 'approved' AND rg.customer_id = #{customerId} - AND rgm.status != 'removed' + AND (rgm.status = 'approved' OR rgm.status = 'silent') AND DATE_FORMAT(rgm.created_time,'%Y%m%d') #{dateId} GROUP BY rg.grid_id @@ -112,12 +112,12 @@ COUNT( rgm.id ) AS groupCount FROM resi_group rg - LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id + LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0 WHERE rg.DEL_FLAG = 0 AND rg.state = 'approved' AND rg.customer_id = #{customerId} - AND rgm.STATUS != 'removed' + AND (rgm.status = 'approved' OR rgm.status = 'silent') AND DATE_FORMAT(rgm.created_time,'%Y%m%d') #{dateId} GROUP BY rgm.resi_group_id @@ -145,12 +145,12 @@ COUNT( rgm.id ) AS groupCount FROM resi_group rg - LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id + LEFT JOIN resi_group_member rgm ON rgm.resi_group_id = rg.id AND rgm.DEL_FLAG = 0 WHERE rg.DEL_FLAG = 0 AND rg.state = 'approved' AND rg.grid_id = #{gridId} - AND rgm.STATUS != 'removed' + AND (rgm.status = 'approved' OR rgm.status = 'silent') GROUP BY rgm.resi_group_id diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java index a45dc77644..89e72048cf 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java @@ -779,6 +779,15 @@ public class CodeServiceImpl implements CodeService { dto.setCreateTime(DateUtils.formatTimestamp(temp.getCreateTime(), DateUtils.DATE_TIME_PATTERN)); resultList.add(dto); }); + //按时间降序 + if (resultList.size() > NumConstant.ZERO) { + Collections.sort(resultList, new Comparator() { + @Override + public int compare(TemplateDraftListResultDTO o1, TemplateDraftListResultDTO o2) { + return o2.getCreateTime().compareTo(o1.getCreateTime()); + } + }); + } return resultList; } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java index 95f8b34591..5cec27354e 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxLoginServiceImpl.java @@ -41,6 +41,7 @@ public class WxLoginServiceImpl implements WxLoginService { @Override public UserWechatDTO resiAndWorkLogin(String appId, String wxCode, String customerId, String clientType) { //1.获取用户openid和session_key + logger.info(String.format("wxcode获取微信用户信息,接口入参appId:[%s];wxCode:[%s];customerId:[%s];clientType:[%s]", appId, wxCode, customerId, clientType)); Map map = new HashMap<>(); map.put("appid", appId); map.put("js_code", wxCode); @@ -62,6 +63,7 @@ public class WxLoginServiceImpl implements WxLoginService { UserWechatDTO dto = new UserWechatDTO(); dto.setWxOpenId(openid); dto.setSessionKey(sessionKey); + logger.info("wxcode获取微信用户信息,接口返参UserWechatDTO->" + dto); /*//2.换取用户基本信息 //小程序access_token diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CanEvaluateProjectCountBatchResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CanEvaluateProjectCountBatchResultDTO.java new file mode 100644 index 0000000000..3e27b04112 --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/CanEvaluateProjectCountBatchResultDTO.java @@ -0,0 +1,26 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/5/12 11:16 上午 + * @DESC + */ +@Data +public class CanEvaluateProjectCountBatchResultDTO implements Serializable { + + private static final long serialVersionUID = -3577868520393911786L; + + private String issueId; + + private List userIds = new ArrayList<>(); + + @JsonIgnore + private String userId; +} diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueVoteResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueVoteResultDTO.java new file mode 100644 index 0000000000..cf38c9b55c --- /dev/null +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueVoteResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/5/12 1:44 下午 + * @DESC + */ +@Data +public class IssueVoteResultDTO implements Serializable { + + private static final long serialVersionUID = -616467646035136184L; + + private String issueId; + + private String userId; +} 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 b0e0fef141..a5179ea765 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 @@ -310,6 +310,24 @@ public interface GovIssueOpenFeignClient { @PostMapping(value = "/gov/issue/issue/getissuelist") Result> getIssueList(@RequestParam String customerId); + /** + * @Description 查询可评价项目人数 + * @Param issueId + * @author zxc + * @date 2021/5/12 9:31 上午 + */ + @PostMapping("/gov/issue/issue/canevaluateprojectcount") + Result> canEvaluateProjectCount(@RequestParam("issueId")String issueId); + + /** + * @Description 查询可评价项目人数 【批量】 + * @Param issueIds + * @author zxc + * @date 2021/5/12 9:31 上午 + */ + @PostMapping("/gov/issue/issue/canevaluateprojectcountbatch") + Result> canEvaluateProjectCountBatch(@RequestParam("issueIds")List issueIds); + /** * @Description 查询项目分类标签 * @Param list 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 ef83b497e2..6808afaee5 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 @@ -262,6 +262,16 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getIssueList", customerId); } + @Override + public Result> canEvaluateProjectCount(String issueId) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "canEvaluateProjectCount", issueId); + } + + @Override + public Result> canEvaluateProjectCountBatch(List issueIds) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "canEvaluateProjectCountBatch", issueIds); + } + @Override public Result> getProjectCategory(List list) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getProjectCategory", list); diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java index a539727606..4f1125b356 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueController.java @@ -256,5 +256,27 @@ public class IssueController { return new Result>().ok(issueService.getIssueList(customerId)); } + /** + * @Description 查询可评价项目人数 + * @Param issueId + * @author zxc + * @date 2021/5/11 4:50 下午 + */ + @PostMapping("canevaluateprojectcount") + public Result> canEvaluateProjectCount(@RequestParam("issueId")String issueId){ + return new Result>().ok(issueService.canEvaluateProjectCount(issueId)); + } + + /** + * @Description 查询可评价项目人数【批量】 + * @Param issueId + * @author zxc + * @date 2021/5/11 4:50 下午 + */ + @PostMapping("canevaluateprojectcountbatch") + public Result> canEvaluateProjectCountBatch(@RequestParam("issueIds")List issueIds){ + return new Result>().ok(issueService.canEvaluateProjectCountBatch(issueIds)); + } + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java index c5c96901ea..65d2d35904 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java @@ -22,6 +22,7 @@ import com.epmet.dto.IssueVoteDetailDTO; import com.epmet.dto.form.VoteFormDTO; import com.epmet.dto.form.VoteRedisFormDTO; import com.epmet.dto.result.IssueAttitudeCountResultDTO; +import com.epmet.dto.result.IssueVoteResultDTO; import com.epmet.dto.result.MyPartIssuesResultDTO; import com.epmet.entity.IssueVoteDetailEntity; import org.apache.ibatis.annotations.Mapper; @@ -113,4 +114,20 @@ public interface IssueVoteDetailDao extends BaseDao { * @date 2021.03.18 14:58 */ List selectBatchVoteCount(@Param("issueIds")Set issueIds); + + /** + * @Description 查询议题表决数 + * @Param issueId + * @author zxc + * @date 2021/5/11 5:15 下午 + */ + List selectIssueVoteCount(@Param("issueId")String issueId); + + /** + * @Description 查询议题表决数【批量】 + * @Param issueIds + * @author zxc + * @date 2021/5/12 1:48 下午 + */ + List selectIssueVoteCountBatch(@Param("issueIds")List issueIds); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java index 90e06f1185..dd1eb23013 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueService.java @@ -325,4 +325,20 @@ public interface IssueService extends BaseService { * @date 2021/4/27 10:23 上午 */ List getIssueList(String customerId); + + /** + * @Description 查询可评价项目人数 + * @Param issueId + * @author zxc + * @date 2021/5/11 4:50 下午 + */ + List canEvaluateProjectCount(String issueId); + + /** + * @Description 查询可评价项目人数【批量】 + * @Param issueId + * @author zxc + * @date 2021/5/11 4:50 下午 + */ + List canEvaluateProjectCountBatch(List issueIds); } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index 7532a52fdb..f35ca71dce 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java @@ -27,6 +27,7 @@ import com.epmet.constant.UserMessageConstant; import com.epmet.dao.IssueDao; import com.epmet.dao.IssueProcessDao; import com.epmet.dao.IssueProjectRelationDao; +import com.epmet.dao.IssueVoteDetailDao; import com.epmet.dto.*; import com.epmet.dto.form.IssueAuditionFormDTO; import com.epmet.dto.form.IssueShiftedFromTopicFormDTO; @@ -49,6 +50,7 @@ import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO; import com.epmet.resi.group.dto.topic.form.*; import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO; +import com.epmet.resi.group.dto.topic.result.TopicCreatedUserBatchResultDTO; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.send.SendMqMsgUtil; import com.epmet.service.*; @@ -121,7 +123,8 @@ public class IssueServiceImpl extends BaseServiceImpl imp private IssueTagsService issueTagsService; @Autowired private IssueProjectTagDictService issueProjectTagDictService; - + @Autowired + private IssueVoteDetailDao issueVoteDetailDao; @Value("${openapi.scan.server.url}") @@ -1408,4 +1411,94 @@ public class IssueServiceImpl extends BaseServiceImpl imp return ConvertUtils.sourceToTarget(issueEntities,IssueDTO.class); } + /** + * @Description 查询可评价项目人数 + * @Param issueId + * @author zxc + * @date 2021/5/11 4:50 下午 + */ + @Override + public List canEvaluateProjectCount(String issueId) { + List userIds = new ArrayList<>(); + IssueEntity issueEntity = baseDao.selectById(issueId); + if(null == issueEntity){ + throw new RenException("议题信息不存在"); + } + // 议题创建者 + userIds.add(issueEntity.getCreatedBy()); + // 表决过的人 + List votedCount = issueVoteDetailDao.selectIssueVoteCount(issueId); + if (!CollectionUtils.isEmpty(votedCount)){ + userIds.addAll(votedCount); + } + // 话题创建者 + Result topicCreatedUser = resiGroupOpenFeignClient.topicCreatedUser(issueEntity.getSourceId()); + if (!topicCreatedUser.success()){ + throw new RenException("【查询话题创建者失败】["+topicCreatedUser.getMsg()+"]"); + } + userIds.add(topicCreatedUser.getData()); + // 去重 + return userIds.stream().distinct().collect(Collectors.toList()); + } + + /** + * @Description 查询可评价项目人数【批量】 + * @Param issueId + * @author zxc + * @date 2021/5/11 4:50 下午 + */ + @Override + public List canEvaluateProjectCountBatch(List issueIds) { + // 根据议题查询 + List issueEntities = baseDao.selectBatchIds(issueIds); + if (CollectionUtils.isEmpty(issueEntities)){ + throw new RenException("议题信息不存在"); + } + List result = new ArrayList<>(); + issueEntities.forEach(i -> { + CanEvaluateProjectCountBatchResultDTO r = new CanEvaluateProjectCountBatchResultDTO(); + r.setIssueId(i.getId()); + r.setUserId(i.getCreatedBy()); + result.add(r); + }); + // 所有议题表决 + List issueVoteResult = issueVoteDetailDao.selectIssueVoteCountBatch(issueIds); + Map> groupByIssue = new HashMap<>(16); + if (!CollectionUtils.isEmpty(issueVoteResult)){ + // 根据议题分组 + groupByIssue = issueVoteResult.stream().collect(Collectors.groupingBy(IssueVoteResultDTO::getIssueId)); + } + Map> finalGroupByIssue = groupByIssue; + boolean empty = finalGroupByIssue.isEmpty(); + Result> topicCreatedUserBatch = resiGroupOpenFeignClient.topicCreatedUserBatch(issueEntities.stream().map(m -> m.getSourceId()).collect(Collectors.toList())); + if (!topicCreatedUserBatch.success()){ + throw new RenException("【查询话题创建者失败】["+topicCreatedUserBatch.getMsg()+"]"); + } + List topicCreatedUserBatchData = topicCreatedUserBatch.getData(); + result.forEach(r -> { + List userIds = new ArrayList<>(); + // 议题创建者 + userIds.add(r.getUserId()); + if (!empty){ + // 实际表决人数 + finalGroupByIssue.forEach((issueId, list) -> { + if (r.getIssueId().equals(issueId)){ + List votePeople = list.stream().map(m -> m.getUserId()).collect(Collectors.toList()); + userIds.addAll(votePeople); + } + }); + } + // 话题创建者 + if (!CollectionUtils.isEmpty(topicCreatedUserBatchData)){ + topicCreatedUserBatchData.forEach(t -> { + if (r.getIssueId().equals(t.getIssueId())){ + userIds.add(t.getUserId()); + } + }); + } + r.setUserIds(userIds.stream().distinct().collect(Collectors.toList())); + }); + return result; + } + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml index 166f3d2b17..3b5b4be83a 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml @@ -155,4 +155,30 @@ + + + + + \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 263fe905e7..a3695f6362 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -99,7 +99,7 @@ public class AgencyController { ValidatorUtils.validateEntity(formDTO, AddAgencyV2FormDTO.AreaCodeGroup.class); } //当前客户下,同级组织中,组织名称不允许重复 - customerAgencyService.checkAgencyName(formDTO.getAgencyName(),tokenDTO.getCustomerId(),formDTO.getLevel(),null); + customerAgencyService.checkAgencyName(formDTO.getAgencyName(),tokenDTO.getCustomerId(),null,formDTO.getParentAgencyId()); return new Result().ok(agencyService.addAgencyV2(formDTO)); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index bdc8814ff4..dc5518a35c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -58,6 +58,7 @@ public interface CustomerAgencyDao extends BaseDao { * @Description 组织首页-下级机关列表 **/ List selectSubAgencyById(@Param("pId") String pId, @Param("agencyNum") Integer agencyNum); + List selectSubAgencyByAgencyId(@Param("pId") String pId); /** * @param pId @@ -230,6 +231,6 @@ public interface CustomerAgencyDao extends BaseDao { List checkAgencyName(@Param("agencyName") String agencyName, @Param("customerId") String customerId, - @Param("level") String level, - @Param("agencyId") String agencyId); + @Param("agencyId") String agencyId, + @Param("parentAgencyId") String parentAgencyId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java index 59941f1f60..fda2f4d09e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/CustomerAgencyService.java @@ -235,5 +235,5 @@ public interface CustomerAgencyService extends BaseService **/ OrganizeTreeResultDTO organizeTree(String agencyId); - void checkAgencyName(String agencyName,String customerId,String level,String agencyId); + void checkAgencyName(String agencyName,String customerId,String agencyId,String parentAgencyId); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 2324c7d1d2..b60e0ff31c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -134,7 +134,7 @@ public class AgencyServiceImpl implements AgencyService { Result result = new Result(); CustomerAgencyEntity originalEntity = customerAgencyDao.selectById(formDTO.getAgencyId()); //当前客户下,同级组织中,组织名称不允许重复 - customerAgencyService.checkAgencyName(formDTO.getAgencyName(),originalEntity.getCustomerId(),originalEntity.getLevel(),originalEntity.getId()); + customerAgencyService.checkAgencyName(formDTO.getAgencyName(),originalEntity.getCustomerId(),originalEntity.getId(),originalEntity.getPid()); originalEntity.setOrganizationName(formDTO.getAgencyName()); //1:更新当前组织信息 if (customerAgencyDao.updateById(originalEntity) < NumConstant.ONE) { @@ -300,7 +300,7 @@ public class AgencyServiceImpl implements AgencyService { public Result subAgencyList(SubAgencyFormDTO formDTO) { SubAgencyResultDTO subAgencyResultDTO = new SubAgencyResultDTO(); //1:根据当前机关Id查询直属下一级机关列表,只返回前十条 - List agencyList = customerAgencyDao.selectSubAgencyById(formDTO.getAgencyId(),formDTO.getAgencyNum()); + List agencyList = customerAgencyDao.selectSubAgencyByAgencyId(formDTO.getAgencyId()); if (null == agencyList || agencyList.size() < NumConstant.ONE) { subAgencyResultDTO.setAgencyList(new ArrayList()); subAgencyResultDTO.setSubAgencyCount(NumConstant.ZERO); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index 3753412331..f19e1a8af5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -1060,8 +1060,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl entityList = baseDao.checkAgencyName(agencyName,customerId,level,agencyId); + public void checkAgencyName(String agencyName,String customerId,String agencyId,String parentAgencyId) { + List entityList = baseDao.checkAgencyName(agencyName,customerId,agencyId,parentAgencyId); if (CollectionUtils.isNotEmpty(entityList)) { throw new RenException(EpmetErrorCode.AGENCY_NAME_ALREADY_EXISTS.getCode(), EpmetErrorCode.AGENCY_NAME_ALREADY_EXISTS.getMsg()); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index ea6f94a1e8..49dbe8f5ef 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -70,6 +70,16 @@ ORDER BY created_time DESC LIMIT #{agencyNum} + SELECT - ca.id + ca.id FROM - customer_agency ca + customer_agency ca WHERE - ca.DEL_FLAG = '0' - AND ca.CUSTOMER_ID = #{customerId} - AND ca.ORGANIZATION_NAME = #{agencyName} - AND ca.`LEVEL` = #{level} - - AND ca.id !=#{agencyId} - + ca.DEL_FLAG = '0' + AND ca.CUSTOMER_ID = #{customerId} + AND ca.ORGANIZATION_NAME = #{agencyName} + + AND ca.id !=#{agencyId} + + + AND ca.pid =#{parentAgencyId} + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectSatisfactionStatisticsDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectSatisfactionStatisticsDTO.java index 27c2a68a7a..20507c91d4 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectSatisfactionStatisticsDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectSatisfactionStatisticsDTO.java @@ -93,4 +93,9 @@ public class ProjectSatisfactionStatisticsDTO implements Serializable { */ private String customerId; + /** + * 应评价人数【等于实际表决人数】 + */ + private Integer shouldEvaluateCount; + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java index d70fe56a24..9f67f12c7b 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java @@ -33,5 +33,10 @@ public class ProjectEvaluateFormDTO implements Serializable { */ private String userId; + /** + * 客户ID + */ + private String customerId; + } diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ComplementedProjectEvaluateResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ComplementedProjectEvaluateResultDTO.java new file mode 100644 index 0000000000..ae80b92d25 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ComplementedProjectEvaluateResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/5/12 10:24 上午 + * @DESC + */ +@Data +public class ComplementedProjectEvaluateResultDTO implements Serializable { + + private static final long serialVersionUID = -300492311961684245L; + + private String projectId; + + private String issueId; + + private String customerId; + + private Boolean disposeStatus = false; +} diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectEvaluateDetailResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectEvaluateDetailResultDTO.java new file mode 100644 index 0000000000..3e58285bd0 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/ProjectEvaluateDetailResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/5/12 4:34 下午 + * @DESC + */ +@Data +public class ProjectEvaluateDetailResultDTO implements Serializable { + + private static final long serialVersionUID = -6651646333040235330L; + + private String projectId; + + private String satisfaction; +} 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 eec6371298..d5be20752e 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 @@ -175,6 +175,10 @@ public interface ProjectConstant { String EXTERNAL_SYSTEM = "third_platform_project_send"; + String EVALUATE_GOOD = "good"; + String EVALUATE_BAD = "bad"; + String EVALUATE_PERFECT = "perfect"; + /** * 三个月,六个月,12个月 */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionDetailController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionDetailController.java index e6cff263f9..ac8d77458a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionDetailController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectSatisfactionDetailController.java @@ -127,4 +127,15 @@ public class ProjectSatisfactionDetailController { return new Result>().ok(projectSatisfactionDetailService.projectEvaluationList(formDTO)); } + /** + * @Description 补全项目评价统计 + * @author zxc + * @date 2021/5/12 10:04 上午 + */ + @PostMapping("complementedprojectevaluate") + public Result complementedProjectEvaluate(){ + projectSatisfactionDetailService.complementedProjectEvaluate(); + return new Result(); + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index ed73518a58..2c2fe53f31 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -148,6 +148,13 @@ public interface ProjectDao extends BaseDao { ProjectInfoDTO queryProjectInfoByProjectId(String projectId); + /** + * @Description 查询所以已关闭的项目【项目来源为 'issue'】 + * @author zxc + * @date 2021/5/12 10:29 上午 + */ + List selectAllClosedProject(); + /** * @Description 查询时间段内的项目ID * @Param agencyId diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java index 83ab6375c0..d015d6900c 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionDetailDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.form.ProjectEvaluationListFormDTO; import com.epmet.dto.form.ProjectInitEvaluationFormDTO; +import com.epmet.dto.result.ProjectEvaluateDetailResultDTO; import com.epmet.dto.result.ProjectEvaluateInfoResultDTO; import com.epmet.dto.result.EvaluationListResultDTO; import com.epmet.dto.result.ProjectEvaluationListResultDTO; @@ -60,4 +61,12 @@ public interface ProjectSatisfactionDetailDao extends BaseDao projectEvaluationList(ProjectEvaluationListFormDTO formDTO); + /** + * @Description 查询项目的评价人 + * @Param projectIds + * @author zxc + * @date 2021/5/12 4:42 下午 + */ + List selectProjectEvaluateDetail(@Param("projectIds")List projectIds); + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java index b174075bcd..89e4d5049e 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectSatisfactionStatisticsDao.java @@ -35,6 +35,31 @@ import java.util.List; @Mapper public interface ProjectSatisfactionStatisticsDao extends BaseDao { + /** + * @Description 校验此项目是否存在 + * @Param projectId + * @author zxc + * @date 2021/5/10 4:35 下午 + */ + Integer checkProjectExists(@Param("projectId")String projectId); + + /** + * @Description 更新项目评价数据 + * @Param projectId + * @Param evalType + * @author zxc + * @date 2021/5/10 4:57 下午 + */ + void updateEvaluateData(@Param("projectId")String projectId,@Param("evalType")String evalType); + + /** + * @Description 查询已经存在的记录 + * @author zxc + * @date 2021/5/12 10:35 上午 + */ + List selectExistsProject(); + + /** * @Description 根据项目ID查询此项目评价信息 * @Param projectId diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java index d943a4a6cf..c55338cf80 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectSatisfactionStatisticsEntity.java @@ -72,10 +72,12 @@ public class ProjectSatisfactionStatisticsEntity extends BaseEpmetEntity { @TableField(fill = FieldFill.INSERT) private String customerId; + public ProjectSatisfactionStatisticsEntity() { this.goodCount = NumConstant.ZERO; this.perfectCount = NumConstant.ZERO; this.badCount = NumConstant.ZERO; this.shouldEvaluateCount = NumConstant.ZERO; } + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/redis/ProjectRedis.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/redis/ProjectRedis.java index e285bd2572..519dc8f18d 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/redis/ProjectRedis.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/redis/ProjectRedis.java @@ -17,10 +17,17 @@ package com.epmet.redis; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.dto.form.VoteRedisFormDTO; +import com.epmet.issue.constant.IssueConstant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Map; + +import static com.epmet.commons.tools.utils.ConvertUtils.mapToEntity; + /** * 项目表 * @@ -29,6 +36,9 @@ import org.springframework.stereotype.Component; */ @Component public class ProjectRedis { + + private final static String issueVoteKey = "epmet:issue:"; + @Autowired private RedisUtils redisUtils; @@ -44,4 +54,20 @@ public class ProjectRedis { return null; } + /** + * @Description 获取议题表决详情 + * @Param issueId + * @author zxc + * @date 2021/5/11 1:51 下午 + */ + public VoteRedisFormDTO getIssueVoteDetail(String issueId){ + String key = issueVoteKey + issueId; + Map stringObjectMap = redisUtils.hGetAll(key); + if (stringObjectMap.size()== NumConstant.ZERO || stringObjectMap == null){ + return new VoteRedisFormDTO(); + } + VoteRedisFormDTO voteRedisFormDTO = mapToEntity(stringObjectMap, VoteRedisFormDTO.class); + return voteRedisFormDTO; + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java index 245b443e28..1457866c04 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectSatisfactionDetailService.java @@ -129,4 +129,11 @@ public interface ProjectSatisfactionDetailService extends BaseService projectEvaluationList(@RequestBody ProjectEvaluationListFormDTO formDTO); + + /** + * @Description 补全项目评价统计 + * @author zxc + * @date 2021/5/12 10:04 上午 + */ + void complementedProjectEvaluate(); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java index 55a6425703..acc06b2281 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectSatisfactionDetailServiceImpl.java @@ -20,6 +20,7 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.constant.FieldConstant; @@ -32,21 +33,30 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; import com.epmet.constant.ProjectConstant; +import com.epmet.dao.ProjectDao; import com.epmet.dao.ProjectSatisfactionDetailDao; +import com.epmet.dao.ProjectSatisfactionStatisticsDao; import com.epmet.dto.ProjectSatisfactionDetailDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.entity.ProjectEntity; import com.epmet.entity.ProjectSatisfactionDetailEntity; +import com.epmet.entity.ProjectSatisfactionStatisticsEntity; import com.epmet.feign.EpmetUserFeignClient; +import com.epmet.feign.GovIssueOpenFeignClient; +import com.epmet.redis.ProjectRedis; import com.epmet.redis.ProjectSatisfactionDetailRedis; import com.epmet.service.ProjectSatisfactionDetailService; +import com.epmet.service.ProjectSatisfactionStatisticsService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.redisson.api.RLock; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.*; import java.util.stream.Collectors; @@ -69,6 +79,18 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl page(Map params) { @@ -216,6 +238,8 @@ public class ProjectSatisfactionDetailServiceImpl extends BaseServiceImpl allProjects = projectDao.selectAllClosedProject(); + if (CollectionUtils.isEmpty(allProjects)){ + log.warn("不存在可补全的数据"); + return; + } + // 查询已存在的项目记录 + List existsProjects = statisticsDao.selectExistsProject(); + List projects = new ArrayList<>(); + // 要是 评价统计库没有记录,所有的项目都得插入 + if (CollectionUtils.isEmpty(existsProjects)){ + projects = allProjects; + }else { + // 把 评价统计库存在的 标记为true, + allProjects.forEach(a -> { + existsProjects.forEach(p -> { + if (a.getProjectId().equals(p)){ + a.setDisposeStatus(true); + } + }); + }); + Map> groupByStatus = allProjects.stream().collect(Collectors.groupingBy(ComplementedProjectEvaluateResultDTO::getDisposeStatus)); + // 去除存在记录的项目 + projects = groupByStatus.get(false); + } + + List needAdd = new ArrayList<>(); + if (!CollectionUtils.isEmpty(projects)){ + List projectIds = projects.stream().map(m -> m.getProjectId()).collect(Collectors.toList()); + List issueIds = projects.stream().map(m -> m.getIssueId()).collect(Collectors.toList()); + // 根据项目ID查询 项目的评价细节 + List projectEvaluateDetailResult = baseDao.selectProjectEvaluateDetail(projectIds); + // 根据项目ID分组 + Map> groupByProject = projectEvaluateDetailResult.stream().collect(Collectors.groupingBy(ProjectEvaluateDetailResultDTO::getProjectId)); + boolean empty = groupByProject.isEmpty(); + // 项目应评价人数 = 话题创建者 + 议题发起者 + 议题表决人 【去重】 + Result> canEvaluateProjectCountBatch = govIssueOpenFeignClient.canEvaluateProjectCountBatch(issueIds); + if (!canEvaluateProjectCountBatch.success()){ + throw new RenException("【查询项目应评价人数失败】,【"+canEvaluateProjectCountBatch.getMsg()+"】"); + } + projects.forEach(p -> { + ProjectSatisfactionStatisticsEntity e = new ProjectSatisfactionStatisticsEntity(); + e.setCustomerId(p.getCustomerId()); + e.setProjectId(p.getProjectId()); + if (!empty){ + groupByProject.forEach((projectId,list) -> { + if (p.getProjectId().equals(projectId)){ + Map> groupByS = list.stream().collect(Collectors.groupingBy(ProjectEvaluateDetailResultDTO::getSatisfaction)); + e.setBadCount(CollectionUtils.isEmpty(groupByS.get(ProjectConstant.EVALUATE_BAD)) ? NumConstant.ZERO : groupByS.get(ProjectConstant.EVALUATE_BAD).size()); + e.setGoodCount(CollectionUtils.isEmpty(groupByS.get(ProjectConstant.EVALUATE_GOOD)) ? NumConstant.ZERO : groupByS.get(ProjectConstant.EVALUATE_GOOD).size()); + e.setPerfectCount(CollectionUtils.isEmpty(groupByS.get(ProjectConstant.EVALUATE_PERFECT)) ? NumConstant.ZERO : groupByS.get(ProjectConstant.EVALUATE_PERFECT).size()); + } + }); + } + if (!CollectionUtils.isEmpty(canEvaluateProjectCountBatch.getData())){ + canEvaluateProjectCountBatch.getData().forEach(ep -> { + if (p.getIssueId().equals(ep.getIssueId())){ + e.setShouldEvaluateCount(ep.getUserIds().size()); + } + }); + } + needAdd.add(e); + }); + } + if (!CollectionUtils.isEmpty(needAdd)){ + projectSatisfactionStatisticsService.insertBatch(needAdd); + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 30b1db9641..26971b84d9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -36,6 +36,7 @@ import com.epmet.constant.SmsTemplateConstant; import com.epmet.constant.UserMessageConstant; import com.epmet.dao.ProjectDao; import com.epmet.dao.ProjectOrgRelationDao; +import com.epmet.dao.ProjectSatisfactionStatisticsDao; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; @@ -132,6 +133,8 @@ public class ProjectServiceImpl extends BaseServiceImpl> canEvaluateProjectCount = govIssueOpenFeignClient.canEvaluateProjectCount(projectEntity.getOriginId()); + if (!canEvaluateProjectCount.success()){ + throw new RenException("【查询项目应评价人数失败】,【"+canEvaluateProjectCount.getMsg()+"】"); + } + List userIds = canEvaluateProjectCount.getData(); + ProjectSatisfactionStatisticsEntity entity1 = new ProjectSatisfactionStatisticsEntity(); + entity1.setShouldEvaluateCount(userIds.size()); + entity1.setCustomerId(projectEntity.getCustomerId()); + entity1.setProjectId(fromDTO.getProjectId()); + entity1.setBadCount(NumConstant.ZERO); + entity1.setGoodCount(NumConstant.ZERO); + entity1.setPerfectCount(NumConstant.ZERO); + // 新添一条记录 + statisticsDao.insert(entity1); } @Override diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.12__alter_shouldEvaluateCount.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.12__alter_shouldEvaluateCount.sql new file mode 100644 index 0000000000..61f86068b0 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.12__alter_shouldEvaluateCount.sql @@ -0,0 +1 @@ +ALTER TABLE `project_satisfaction_statistics` ADD `SHOULD_EVALUATE_COUNT` int(11) NOT NULL COMMENT '应评价人数【等于实际表决人数】'; \ No newline at end of file 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 13309309c8..166917e5d7 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 @@ -270,6 +270,18 @@ AND p.id=#{projectId} + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml index 9a194a2db4..0b4a51c479 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectSatisfactionStatisticsDao.xml @@ -3,6 +3,39 @@ + + + UPDATE project_satisfaction_statistics + SET + + BAD_COUNT = BAD_COUNT + 1, + + + GOOD_COUNT = GOOD_COUNT + 1, + + + PERFECT_COUNT = PERFECT_COUNT + 1, + + UPDATED_TIME = NOW() + WHERE DEL_FLAG = '0' + AND PROJECT_ID = #{projectId} + + + + + + + - SELECT id,userId,releaseTime,content,status,issueId,contentType,firstPhoto,isChanged FROM + SELECT id,userId,releaseTime,content,status,issueId,contentType,firstPhoto,isExpirat,isChanged FROM ((SELECT t.ID, t.CREATED_BY AS userId, @@ -701,7 +701,7 @@ GROUP_ACT_ID = #{id} ) - AND `VIEW_DETAIL` = 'un_read' + AND READ_FLAG = 'un_read' AND GROUP_ID = #{groupId} GROUP BY GROUP_ACT_ID ) @@ -716,7 +716,7 @@ NOTICE_ID = #{id} ) - AND `VIEW_DETAIL` = 'un_read' + AND READ_FLAG = 'un_read' AND GROUP_ID = #{groupId} GROUP BY NOTICE_ID ) diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml index 243b301d19..9fcc9983e6 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml @@ -103,7 +103,8 @@ ) FROM RESI_GROUP groupp - INNER JOIN RESI_GROUP_MEMBER member ON member.RESI_GROUP_ID = groupp.ID AND member.DEL_FLAG = '0' AND member.STATUS ]]> 'removed' + INNER JOIN RESI_GROUP_MEMBER member ON member.RESI_GROUP_ID = groupp.ID AND member.DEL_FLAG = '0' AND (member.STATUS = 'approved' OR + member.STATUS = 'silent') WHERE groupp.DEL_FLAG = '0' AND @@ -122,7 +123,8 @@ ) as votableCount FROM RESI_GROUP groupp - LEFT JOIN RESI_GROUP_MEMBER member ON member.RESI_GROUP_ID = groupp.ID AND member.DEL_FLAG = '0' AND member.STATUS ]]> 'removed' + LEFT JOIN RESI_GROUP_MEMBER member ON member.RESI_GROUP_ID = groupp.ID AND member.DEL_FLAG = '0' AND (member.STATUS = 'approved' OR + member.STATUS = 'silent') WHERE groupp.DEL_FLAG = '0' AND @@ -163,6 +165,7 @@ AND CUSTOMER_USER_ID = #{userId} AND RESI_GROUP_ID = #{groupId} AND `STATUS` != 'removed' + AND `STATUS` != 'exit' diff --git a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java index d70fe56a24..1133ffff3b 100644 --- a/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java +++ b/epmet-module/resi-hall/resi-hall-client/src/main/java/com/epmet/dto/form/ProjectEvaluateFormDTO.java @@ -33,5 +33,7 @@ public class ProjectEvaluateFormDTO implements Serializable { */ private String userId; + private String customerId; + } diff --git a/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index 163fda848c..ae56650c44 100644 --- a/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/epmet-module/resi-hall/resi-hall-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java @@ -271,6 +271,7 @@ public class IssueServiceImpl implements IssueService { @Override public Result projectEvaluate(TokenDto tokenDto, ProjectEvaluateFormDTO projectEvaluateFormDTO) { projectEvaluateFormDTO.setUserId(tokenDto.getUserId()); + projectEvaluateFormDTO.setCustomerId(tokenDto.getCustomerId()); return govProjectFeignClient.projectEvaluate(projectEvaluateFormDTO); } diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java index cc9dfa5198..549a5ce8af 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/warmhearted/service/impl/ResiWarmheartedApplyServiceImpl.java @@ -165,7 +165,7 @@ public class ResiWarmheartedApplyServiceImpl extends BaseServiceImpl