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 d0cb1d1726..53f4074eab 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 @@ -213,4 +213,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/screen/ScreenCustomerAgencyService.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java index 5ff8fdf050..86fbe9e336 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/ScreenCustomerAgencyService.java @@ -106,4 +106,12 @@ public interface ScreenCustomerAgencyService{ * @date 2020/9/24 1:27 下午 */ List 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..432e71f2b7 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,55 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl> groupByStatus = categoryProjectGrid.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus)); + // 取出分类标签code不一样的数据 List categoryProjectResultDTOS1 = groupByStatus.get(false); categoryProjectResultDTOS.addAll(categoryProjectResultDTOS1); } } - result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class); +// 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)); + 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 +442,18 @@ 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()); List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId); if (!CollectionUtils.isEmpty(result)) { if (!CollectionUtils.isEmpty(screenProjectCategory)) { @@ -434,7 +484,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/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml index acb10f1bad..c1b8578691 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenCustomerAgencyDao.xml @@ -426,4 +426,18 @@ (SELECT GRID_ID AS orgId FROM screen_customer_grid WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId}) UNION ALL (SELECT DEPT_ID AS orgId FROM screen_customer_dept WHERE DEL_FLAG = 0 AND CUSTOMER_ID = #{customerId}) + + + diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml index 07b8d2f5b8..9a4718aca8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml @@ -9,6 +9,19 @@ limit 1000 + + + delete from screen_project_category_org_daily + where customer_id = #{customerId} + and date_id = #{dateId} + and ( + + ORG_ID = #{orgId} + + ) + limit 1000 + + 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/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