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 4a1ae47b8b..b73ceb3d9c 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 @@ -242,6 +242,9 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl agencyIdList){ List result = new ArrayList<>(); + Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); + List orgIds = groupByLevel.get(level).stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + del(customerId,dateId,orgIds); if (isGrid){ // 是社区级别 List categoryInfos = gridDailyDao.selectCategoryInfo(customerId, dateId,null,null); @@ -274,11 +277,8 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl orgIds = new ArrayList<>(); - Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); List levelAgencyInfo = groupByLevel.get(level); if (!CollectionUtils.isEmpty(levelAgencyInfo)){ - orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId); if (!CollectionUtils.isEmpty(result)){ if (!CollectionUtils.isEmpty(screenProjectCategory)){ @@ -306,7 +306,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl {r.setOrgType(level);r.setDateId(dateId);}); } } - deleteAndInsert(customerId,dateId,result,orgIds); + insert(result); } /** @@ -357,7 +357,15 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl relationInfo,List agencyIdList){ List result = new ArrayList<>(); - List orgIds = new ArrayList<>(); + Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); + List orgIds = groupByLevel.get(level).stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + if (ScreenConstant.DISTRICT.equals(level)){ + // 添加此 锦水、孔村、榆山 orgId,删除时使用 + orgIds.add(PingYinConstant.JIN_SHUI_AGENCY_ID); + orgIds.add(PingYinConstant.KONG_CUN_AGENCY_ID); + orgIds.add(PingYinConstant.YU_SHAN_AGENCY_ID); + } + del(customerId,dateId,orgIds); if (isGrid){ // community级别走这 List categoryInfos = gridDailyDao.selectCategoryInfo(customerId, dateId,null,null); @@ -401,11 +409,9 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl customerIds = relationInfo.stream().map(m -> m.getCustomerId()).collect(Collectors.toList()); // 父客户存在的分类 List categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, true); - // 内部客户进行分组 - Map> groupByCategoryCode = categoryProjectResultDTOS.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode)); // 这时的result集合要清空,因为被上边使用 【result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);】 result.clear(); - List finalResult = result; +/* List finalResult = result; groupByCategoryCode.forEach((code, list) -> { ScreenProjectCategoryOrgDailyEntity e = new ScreenProjectCategoryOrgDailyEntity(); e.setCustomerId(customerId); @@ -418,35 +424,45 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl { + categoryProjectResultDTOS.forEach(f -> { categoryProjectExists.forEach(c -> { if (f.getCategoryCode().equals(c.getCategoryCode())){ f.setProjectTotal(f.getProjectTotal() + c.getProjectTotal()); + c.setStatus(true); } }); }); } + List finalResult = result; + categoryProjectResultDTOS.forEach(c -> { + ScreenProjectCategoryOrgDailyEntity e = ConvertUtils.sourceToTarget(c, ScreenProjectCategoryOrgDailyEntity.class); + e.setCustomerId(customerId); + e.setCategoryOriginCustomerId(customerId); + e.setOrgId(entity.getAgencyId()); + e.setPid(entity.getPid()); + e.setPids(StringUtils.isEmpty(entity.getPids()) ? NumConstant.ZERO_STR : entity.getPids()); + finalResult.add(e); + }); + // 父客户存在分类,但是父客户没有使用过此分类 + Map> groupByStatus = categoryProjectExists.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus)); + if (!CollectionUtils.isEmpty(groupByStatus.get(false))){ + List entities = ConvertUtils.sourceToTarget(groupByStatus.get(false), ScreenProjectCategoryOrgDailyEntity.class); + result.addAll(entities); + } // 父客户不存在的分类 List categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false); if (!CollectionUtils.isEmpty(categoryProjectNotExists)){ List entities = ConvertUtils.sourceToTarget(categoryProjectNotExists, ScreenProjectCategoryOrgDailyEntity.class); result.addAll(entities); } - // 添加此 锦水、孔村、榆山 orgId,删除时使用 - orgIds.add(PingYinConstant.JIN_SHUI_AGENCY_ID); - orgIds.add(PingYinConstant.KONG_CUN_AGENCY_ID); - orgIds.add(PingYinConstant.YU_SHAN_AGENCY_ID); } } // 目前不考虑计算子客户组织直接创建的项目,只算内部客户 - Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); List levelAgencyInfo = groupByLevel.get(level); if (!CollectionUtils.isEmpty(levelAgencyInfo)) { - List orgIdss = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); - orgIds.addAll(orgIdss); // 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId); if (!CollectionUtils.isEmpty(result)) { @@ -485,21 +501,29 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl needInsert,List orgIds){ + public void insert(List needInsert){ if (CollectionUtils.isEmpty(needInsert)){ return; } + List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + insertBatch(p); + }); + } + + @Transactional(rollbackFor = Exception.class) + public void del(String customerId, String dateId,List orgIds){ if (CollectionUtils.isEmpty(orgIds)){ return; } @@ -507,10 +531,6 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl NumConstant.ZERO && row == NumConstant.ONE_THOUSAND); - List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); - partition.forEach(p -> { - insertBatch(p); - }); } } \ No newline at end of file