|
|
@ -1,20 +1,15 @@ |
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.epmet.commons.tools.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.constant.StrConstant; |
|
|
|
import com.epmet.constant.IcResiCategoryStatsConfigConstant; |
|
|
|
import com.epmet.dao.IcFormItemDao; |
|
|
|
import com.epmet.dao.IcFormItemGroupDao; |
|
|
|
import com.epmet.dao.IcResiCategoryStatsConfigDao; |
|
|
|
import com.epmet.dao.IcResiCategoryWarnConfigDao; |
|
|
|
import com.epmet.dto.IcResiCategoryStatsConfigDTO; |
|
|
|
import com.epmet.dto.form.IcResiCategoryStatsConfigFormDTO; |
|
|
|
import com.epmet.dto.form.IcResiCategoryStatsConfigSortFormDTO; |
|
|
|
import com.epmet.dto.form.ResiCategoryStatsConfigListFormDTO; |
|
|
|
import com.epmet.dto.result.IcFormDataAnalysisDTO; |
|
|
|
import com.epmet.dto.result.IcResiCategoryStatsConfigResultDTO; |
|
|
|
import com.epmet.entity.IcFormItemEntity; |
|
|
|
import com.epmet.entity.IcFormItemGroupEntity; |
|
|
|
import com.epmet.entity.IcResiCategoryStatsConfigEntity; |
|
|
|
import com.epmet.entity.IcResiCategoryWarnConfigEntity; |
|
|
|
import com.epmet.service.IcResiCategoryStatsConfigService; |
|
|
@ -28,7 +23,10 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.util.*; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@Slf4j |
|
|
@ -40,8 +38,6 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf |
|
|
|
@Resource |
|
|
|
private IcFormItemDao icFormItemDao; |
|
|
|
@Resource |
|
|
|
private IcFormItemGroupDao icFormItemGroupDao; |
|
|
|
@Resource |
|
|
|
private IcResiCategoryStatsConfigDao icResiCategoryStatsConfigDao; |
|
|
|
@Resource |
|
|
|
private IcResiCategoryWarnConfigDao icResiCategoryWarnConfigDao; |
|
|
@ -52,60 +48,39 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public List<IcResiCategoryStatsConfigResultDTO> list(String customerId, ResiCategoryStatsConfigListFormDTO formDTO) { |
|
|
|
//1.获取IC_FORM_ITEM 中 用于数据分析字段的 id 和label
|
|
|
|
List<IcFormItemEntity> icFormItemEntityList = icFormItemDao.selectList(new QueryWrapper<IcFormItemEntity>().lambda().eq(IcFormItemEntity::getCustomerId,customerId).eq(IcFormItemEntity::getDataAnalyse, 1)); |
|
|
|
if(CollectionUtils.isEmpty(icFormItemEntityList)){ |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
Set<String> groupIds = icFormItemEntityList.stream().filter(item-> !"0".equals(item.getItemGroupId())).map(IcFormItemEntity::getItemGroupId).collect(Collectors.toSet()); |
|
|
|
List<IcFormItemGroupEntity> icFormItemGroupEntityList = new ArrayList<>(); |
|
|
|
if(!CollectionUtils.isEmpty(groupIds)){ |
|
|
|
icFormItemGroupEntityList.addAll(icFormItemGroupDao.selectList(new QueryWrapper<IcFormItemGroupEntity>().lambda().eq(IcFormItemGroupEntity::getCustomerId,customerId).in(IcFormItemGroupEntity::getId, groupIds))); |
|
|
|
} |
|
|
|
|
|
|
|
//获取tableName和COLUMN_NAME
|
|
|
|
Map<String,IcFormItemEntity> tableColumnMap = new HashMap<>(); |
|
|
|
List<IcFormDataAnalysisDTO> dataItemList=icFormItemDao.selectDataAnalysisItem(customerId); |
|
|
|
//key:tableName-columnName value: ic_form_item
|
|
|
|
Map<String,IcFormDataAnalysisDTO> tableColumnMap = new HashMap<>(); |
|
|
|
//key:ic_form_item.id value:对应的表名
|
|
|
|
Map<String,String> idTableMap = new HashMap<>(); |
|
|
|
icFormItemEntityList.forEach(item->{ |
|
|
|
Map<String,String> map = new HashMap<>(); |
|
|
|
item.setColumnName(item.getColumnName().concat(NumConstant.ZERO == item.getColumnNum() ? StrConstant.EPMETY_STR : item.getColumnNum().toString())); |
|
|
|
if("0".equals(item.getItemGroupId())){ |
|
|
|
tableColumnMap.put(IcResiCategoryStatsConfigConstant.IC_RESI_USER+"-"+item.getColumnName(),item); |
|
|
|
idTableMap.put(item.getId(),IcResiCategoryStatsConfigConstant.IC_RESI_USER); |
|
|
|
}else{ |
|
|
|
List<IcFormItemGroupEntity> collect = icFormItemGroupEntityList.stream().filter(i -> item.getItemGroupId().equals(i.getId())).collect(Collectors.toList()); |
|
|
|
tableColumnMap.put(CollectionUtils.isEmpty(collect)?IcResiCategoryStatsConfigConstant.IC_RESI_USER:collect.get(0).getTableName()+"-"+item.getColumnName(),item); |
|
|
|
idTableMap.put(item.getId(),CollectionUtils.isEmpty(collect)?IcResiCategoryStatsConfigConstant.IC_RESI_USER:collect.get(0).getTableName()); |
|
|
|
} |
|
|
|
|
|
|
|
dataItemList.forEach(item->{ |
|
|
|
tableColumnMap.put(item.getTableName()+"-"+item.getColumnName(),item); |
|
|
|
idTableMap.put(item.getItemId(),item.getTableName()); |
|
|
|
}); |
|
|
|
|
|
|
|
//2.获取ic_resi_category_stats_config 和 ic_resi_category_warn_config 表中的数据
|
|
|
|
//2.获取居民类别配置表ic_resi_category_stats_config 和 居民类别预警配置表ic_resi_category_warn_config 表中的数据
|
|
|
|
List<IcResiCategoryStatsConfigEntity> statsConfigEntityList = icResiCategoryStatsConfigDao.selectList(new QueryWrapper<IcResiCategoryStatsConfigEntity>().lambda().eq(IcResiCategoryStatsConfigEntity::getCustomerId,customerId)); |
|
|
|
if (!CollectionUtils.isEmpty(statsConfigEntityList)){ |
|
|
|
return icResiCategoryStatsConfigDao.listInfo(customerId,formDTO.getIsWarn(),formDTO.getLevel()); |
|
|
|
} |
|
|
|
|
|
|
|
List<IcResiCategoryWarnConfigEntity> warnConfigEntityList = icResiCategoryWarnConfigDao.selectList(new QueryWrapper<IcResiCategoryWarnConfigEntity>().lambda().eq(IcResiCategoryWarnConfigEntity::getCustomerId,customerId)); |
|
|
|
//3.新增不存在的,删除不在tableColumnMap的
|
|
|
|
|
|
|
|
//获取居民类别配置表
|
|
|
|
Map<String,IcResiCategoryStatsConfigEntity> statsTableColumnMap = new HashMap<>(); |
|
|
|
statsConfigEntityList.forEach(item->{ |
|
|
|
statsTableColumnMap.put(item.getTableName()+"-"+item.getColumnName(),item); |
|
|
|
}); |
|
|
|
Map<String,IcResiCategoryWarnConfigEntity> warnTableColumnMap = new HashMap<>(); |
|
|
|
warnConfigEntityList.forEach(item->{ |
|
|
|
warnTableColumnMap.put(item.getTableName()+"-"+item.getColumnName(),item); |
|
|
|
}); |
|
|
|
|
|
|
|
//3.新增不存在的,删除不在tableColumnMap的
|
|
|
|
//差集
|
|
|
|
//新增
|
|
|
|
List<String> newStatsList = tableColumnMap.keySet().stream().filter(item -> !statsTableColumnMap.containsKey(item)).collect(Collectors.toList()); |
|
|
|
|
|
|
|
List<IcResiCategoryStatsConfigEntity> newStatsEntityList = new ArrayList<>(); |
|
|
|
newStatsList.forEach(item->{ |
|
|
|
IcFormItemEntity icFormItemEntity = tableColumnMap.get(item); |
|
|
|
IcFormDataAnalysisDTO icFormItemEntity = tableColumnMap.get(item); |
|
|
|
IcResiCategoryStatsConfigEntity entity = new IcResiCategoryStatsConfigEntity(); |
|
|
|
entity.setCustomerId(customerId); |
|
|
|
entity.setLabel(icFormItemEntity.getLabel()); |
|
|
|
entity.setTableName(idTableMap.get(icFormItemEntity.getId())); |
|
|
|
entity.setTableName(idTableMap.get(icFormItemEntity.getItemId())); |
|
|
|
entity.setColumnName(icFormItemEntity.getColumnName()); |
|
|
|
entity.setManagementIcon(""); |
|
|
|
entity.setDataIcon(""); |
|
|
@ -115,16 +90,24 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf |
|
|
|
newStatsEntityList.add(entity); |
|
|
|
}); |
|
|
|
if(!CollectionUtils.isEmpty(newStatsEntityList)){ |
|
|
|
//新增居民类别配置表
|
|
|
|
icResiCategoryStatsConfigService.insertBatch(newStatsEntityList); |
|
|
|
} |
|
|
|
|
|
|
|
//4、新增居民类别预警配置表
|
|
|
|
Map<String,IcResiCategoryWarnConfigEntity> warnTableColumnMap = new HashMap<>(); |
|
|
|
warnConfigEntityList.forEach(item->{ |
|
|
|
warnTableColumnMap.put(item.getTableName()+"-"+item.getColumnName(),item); |
|
|
|
}); |
|
|
|
|
|
|
|
List<String> newWarnList = tableColumnMap.keySet().stream().filter(item -> !warnTableColumnMap.containsKey(item)).collect(Collectors.toList()); |
|
|
|
List<IcResiCategoryWarnConfigEntity> newWarnEntityList = new ArrayList<>(); |
|
|
|
newWarnList.forEach(item->{ |
|
|
|
IcFormItemEntity icFormItemEntity = tableColumnMap.get(item); |
|
|
|
IcFormDataAnalysisDTO icFormItemEntity = tableColumnMap.get(item); |
|
|
|
IcResiCategoryWarnConfigEntity entity = new IcResiCategoryWarnConfigEntity(); |
|
|
|
entity.setCustomerId(customerId); |
|
|
|
entity.setLabel(icFormItemEntity.getLabel()); |
|
|
|
entity.setTableName(idTableMap.get(icFormItemEntity.getId())); |
|
|
|
entity.setTableName(idTableMap.get(icFormItemEntity.getItemId())); |
|
|
|
entity.setColumnName(icFormItemEntity.getColumnName()); |
|
|
|
entity.setWarn("0"); |
|
|
|
entity.setSort(icFormItemEntity.getSort()); |
|
|
@ -133,6 +116,8 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf |
|
|
|
if(!CollectionUtils.isEmpty(newWarnEntityList)){ |
|
|
|
icResiCategoryWarnConfigService.insertBatch(newWarnEntityList); |
|
|
|
} |
|
|
|
|
|
|
|
//5、原来用于数据分析,现在不用于数据分析的,要删除类别配置表和预警表
|
|
|
|
List<String> delStatsEntityIdList = new ArrayList<>(); |
|
|
|
List<String> delWarnEntityIdList = new ArrayList<>(); |
|
|
|
//需要删除的
|
|
|
@ -151,7 +136,7 @@ public class ResiCategoryStatsConfigServiceImpl implements ResiCategoryStatsConf |
|
|
|
icResiCategoryWarnConfigService.deleteBatchIds(delWarnEntityIdList); |
|
|
|
} |
|
|
|
|
|
|
|
//4.返回数据
|
|
|
|
//6.返回数据
|
|
|
|
return icResiCategoryStatsConfigDao.listInfo(customerId,formDTO.getIsWarn(),formDTO.getLevel()); |
|
|
|
} |
|
|
|
|
|
|
|