Browse Source

多客户修改

dev_shibei_match
zxc 4 years ago
parent
commit
80f9bce380
  1. 12
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java
  2. 17
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java
  3. 53
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml

12
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.java

@ -65,7 +65,17 @@ public interface ScreenProjectCategoryOrgDailyDao extends BaseDao<ScreenProjectC
*/ */
List<CategoryProjectResultDTO> selectOrgCategoryMoreCustomerInfo(@Param("customerIds")List<String> customerIds, @Param("dateId") String dateId, List<CategoryProjectResultDTO> selectOrgCategoryMoreCustomerInfo(@Param("customerIds")List<String> customerIds, @Param("dateId") String dateId,
@Param("level")String level, @Param("customerId")String customerId, @Param("existsStatus")Boolean existsStatus); @Param("level")String level, @Param("customerId")String customerId, @Param("existsStatus")Boolean existsStatus);
/**
* @Description 查询组织分类信息多客户升级版
* @Param customerIds
* @Param dateId
* @Param level
* @Param customerId
* @author zxc
* @date 2021/8/19 10:40 上午
*/
List<CategoryProjectResultDTO> selectOrgCategoryMoreCustomerInfoPlus(@Param("customerIds")List<String> customerIds, @Param("dateId") String dateId,
@Param("level")String level, @Param("customerId")String customerId);
/** /**
* @Description 根据客户ID天ID组织ID删除旧数据 * @Description 根据客户ID天ID组织ID删除旧数据
* @Param customerId * @Param customerId

17
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java

@ -187,6 +187,10 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
* 2.查询子客户的分类标签把子客户分类标签一样的累加 * 2.查询子客户的分类标签把子客户分类标签一样的累加
* 3.子客户累加后的跟父客户对比 categoryCode一样累加到父客户不一样直接添加到父客户agencyId一并改为父客户的 * 3.子客户累加后的跟父客户对比 categoryCode一样累加到父客户不一样直接添加到父客户agencyId一并改为父客户的
* 4.父客户数据处理好在存储一套子客户数据 * 4.父客户数据处理好在存储一套子客户数据
*
*
* 2021-08-19新注释新修改
* 利用 EPMET_CATEGORY_CODE把外部客户的分类计算到内部客户
*/ */
disposeMoreCustomer(customerId,dateId,relationInfo); disposeMoreCustomer(customerId,dateId,relationInfo);
} }
@ -399,16 +403,9 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl<Sc
List<CategoryProjectResultDTO> categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, true); List<CategoryProjectResultDTO> categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, true);
// 父客户不存在的分类 // 父客户不存在的分类
List<CategoryProjectResultDTO> categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false); List<CategoryProjectResultDTO> categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false);
// 子级客户的分类标签数据 // 外部客户所有分类 = 父客户存在的分类 + 父客户不存在的分类
List<CategoryProjectResultDTO> sonResult = new ArrayList<>(); List<CategoryProjectResultDTO> sonResult = baseDao.selectOrgCategoryMoreCustomerInfoPlus(customerIds, dateId, level, customerId);
if (!CollectionUtils.isEmpty(categoryProjectExists)){ categoryProjectResultDTOS.addAll(sonResult);
categoryProjectResultDTOS.addAll(categoryProjectExists);
sonResult.addAll(categoryProjectExists);
}
if (!CollectionUtils.isEmpty(categoryProjectNotExists)){
categoryProjectResultDTOS.addAll(categoryProjectNotExists);
sonResult.addAll(categoryProjectNotExists);
}
// 此时的 'categoryProjectResultDTOS' 等于 父子客户所有的分类标签 // 此时的 'categoryProjectResultDTOS' 等于 父子客户所有的分类标签
Map<String, List<CategoryProjectResultDTO>> groupByCategoryCode = categoryProjectResultDTOS.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode)); Map<String, List<CategoryProjectResultDTO>> groupByCategoryCode = categoryProjectResultDTOS.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode));
// 这时的result集合要清空,因为被上边使用 【result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);】 // 这时的result集合要清空,因为被上边使用 【result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);】

53
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml

@ -102,4 +102,57 @@
GROUP BY od.CATEGORY_CODE GROUP BY od.CATEGORY_CODE
</select> </select>
<!-- 查询组织分类信息【多客户】升级版 -->
<select id="selectOrgCategoryMoreCustomerInfoPlus" resultType="com.epmet.dto.screen.result.CategoryProjectResultDTO">
SELECT
IF(od.pid = '0', od.ORG_ID,od.pid) AS orgId,
IFNULL(sca.PID,'0') AS pid,
IFNULL(sca.PIDS,'0') AS pids,
#{customerId} as customerId,
od.level,
#{level} as orgType,
cd.EPMET_CATEGORY_CODE AS categoryCode,
SUM(od.PROJECT_TOTAL) AS projectTotal,
od.DATE_ID
FROM screen_project_category_org_daily od
LEFT JOIN customer_project_category_dict cd ON (cd.CATEGORY_CODE = od.CATEGORY_CODE AND cd.CUSTOMER_ID = od.CUSTOMER_ID)
LEFT JOIN screen_customer_agency sca ON sca.AGENCY_ID = od.PID
WHERE 1=1
AND od.DEL_FLAG = '0'
AND od.CUSTOMER_ID IN (
<foreach collection="customerIds" item="customer" separator=",">
#{customer}
</foreach>
)
AND cd.EPMET_CATEGORY_CODE IS NOT NULL
AND od.pid = '0'
AND od.date_id = #{dateId}
GROUP BY od.CATEGORY_CODE,od.pid
UNION ALL
SELECT
IF(od.pid = '0', od.ORG_ID,od.pid) AS orgId,
IFNULL(sca.PID,'0') AS pid,
IFNULL(sca.PIDS,'0') AS pids,
#{customerId} as customerId,
od.level,
#{level} as orgType,
od.CATEGORY_CODE AS categoryCode,
SUM(od.PROJECT_TOTAL) AS projectTotal,
od.DATE_ID
FROM screen_project_category_org_daily od
LEFT JOIN customer_project_category_dict cd ON (cd.CATEGORY_CODE = od.CATEGORY_CODE AND cd.CUSTOMER_ID = od.CUSTOMER_ID)
LEFT JOIN screen_customer_agency sca ON sca.AGENCY_ID = od.PID
WHERE 1=1
AND od.DEL_FLAG = '0'
AND od.CUSTOMER_ID IN (
<foreach collection="customerIds" item="customer" separator=",">
#{customer}
</foreach>
)
AND cd.EPMET_CATEGORY_CODE IS NULL
AND od.pid = '0'
AND od.date_id = #{dateId}
GROUP BY od.CATEGORY_CODE,od.pid
</select>
</mapper> </mapper>
Loading…
Cancel
Save