|
@@ -0,0 +1,154 @@
|
|
|
|
|
+package com.energy.manage.service.service.company.impl;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import com.energy.manage.common.base.BaseServiceImpl;
|
|
|
|
|
+import com.energy.manage.common.constant.Constants;
|
|
|
|
|
+import com.energy.manage.common.constant.redis.ManagerRedisKeyConstant;
|
|
|
|
|
+import com.energy.manage.common.enums.DeleteStatusEnum;
|
|
|
|
|
+import com.energy.manage.common.enums.IdPrefixEnum;
|
|
|
|
|
+import com.energy.manage.common.enums.TypeRelationEnum;
|
|
|
|
|
+import com.energy.manage.common.po.company.CompanyPO;
|
|
|
|
|
+import com.energy.manage.common.po.company.WindCompanyPO;
|
|
|
|
|
+import com.energy.manage.common.po.system.SysPermissionPO;
|
|
|
|
|
+import com.energy.manage.common.po.system.SysRolePermissionPO;
|
|
|
|
|
+import com.energy.manage.common.po.system.SysUserInfoPO;
|
|
|
|
|
+import com.energy.manage.common.util.IdGeneratorUtil;
|
|
|
|
|
+import com.energy.manage.service.domain.dto.company.*;
|
|
|
|
|
+import com.energy.manage.service.domain.dto.system.RoleUpdateOrganizationDto;
|
|
|
|
|
+import com.energy.manage.service.domain.dto.windrelation.WindRelationDelDto;
|
|
|
|
|
+import com.energy.manage.service.domain.dto.windrelation.WindRelationDto;
|
|
|
|
|
+import com.energy.manage.service.domain.vo.company.WindCompanyPageVo;
|
|
|
|
|
+import com.energy.manage.service.domain.vo.company.WindCompanyVo;
|
|
|
|
|
+import com.energy.manage.service.domain.vo.system.PermissionVo;
|
|
|
|
|
+import com.energy.manage.service.mappers.company.CompanyMapper;
|
|
|
|
|
+import com.energy.manage.service.mappers.company.WindCompanyMapper;
|
|
|
|
|
+import com.energy.manage.service.mappers.system.SysPermissionMapper;
|
|
|
|
|
+import com.energy.manage.service.mappers.system.SysRolePermissionMapper;
|
|
|
|
|
+import com.energy.manage.service.service.cache.CacheService;
|
|
|
|
|
+import com.energy.manage.service.service.company.CompanyService;
|
|
|
|
|
+import com.energy.manage.service.service.company.WindCompanyService;
|
|
|
|
|
+import com.energy.manage.service.service.system.SysOrganizationAuthService;
|
|
|
|
|
+import com.energy.manage.service.service.system.SysPermissionService;
|
|
|
|
|
+import com.energy.manage.service.service.windrelation.WindRelationService;
|
|
|
|
|
+import com.energy.manage.service.util.BeanMapUtils;
|
|
|
|
|
+import com.energy.manage.service.util.SplitUtil;
|
|
|
|
|
+import com.energy.manage.service.util.TreeUtil;
|
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import tk.mybatis.mapper.entity.Example;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+@Service
|
|
|
|
|
+public class CompanyServiceImpl extends BaseServiceImpl<CompanyPO> implements CompanyService {
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private CompanyMapper companyMapper;
|
|
|
|
|
+
|
|
|
|
|
+ public List<CompanyPO> getAllCompany(WindCompanyDelDto windCompanyDelDto) {
|
|
|
|
|
+ List<CompanyPO> result = null;
|
|
|
|
|
+
|
|
|
|
|
+ if (windCompanyDelDto != null && windCompanyDelDto.getCompanyCode()!=null && windCompanyDelDto.getCompanyCode().isEmpty()) {
|
|
|
|
|
+ CompanyPO po = new CompanyPO();
|
|
|
|
|
+ po.setCompanyCode(windCompanyDelDto.getCompanyCode());
|
|
|
|
|
+ CompanyPO tpo = companyMapper.selectOne(po);
|
|
|
|
|
+
|
|
|
|
|
+ if (tpo == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ result = new ArrayList<>();
|
|
|
|
|
+ CompanyPO vo = new CompanyPO();
|
|
|
|
|
+ vo.setCompanyCode(tpo.getCompanyCode());
|
|
|
|
|
+ vo.setCityId(tpo.getCityId());
|
|
|
|
|
+ vo.setCityName(tpo.getCityName());
|
|
|
|
|
+ vo.setCompanyName(tpo.getCompanyName());
|
|
|
|
|
+ result.add(vo);
|
|
|
|
|
+
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<CompanyPO> list = companyMapper.getAllCompany();
|
|
|
|
|
+ result = BeanUtil.copyToList(list, CompanyPO.class);
|
|
|
|
|
+
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public List<Map<String, Object>> getCompany(WindCompanyDelDto windCompanyDelDto) {
|
|
|
|
|
+ List<CompanyPO> list = null;
|
|
|
|
|
+ list = this.getAllCompany(windCompanyDelDto);
|
|
|
|
|
+
|
|
|
|
|
+ // 转化为Map集合
|
|
|
|
|
+ List<Map<String, Object>> mapList = BeanMapUtils.listBeanToListMap(list);
|
|
|
|
|
+ // 获取树形结构
|
|
|
|
|
+ // List<Map<String, Object>> java8ResultTree = TreeUtil.getJava8ResultTree(mapList);
|
|
|
|
|
+
|
|
|
|
|
+ return mapList;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public boolean batchUpdateCompany(List<CompanyPO> list) {
|
|
|
|
|
+ log.info("开始批量更新企业信息,总数:{}", list == null ? 0 : list.size());
|
|
|
|
|
+
|
|
|
|
|
+ // 参数校验
|
|
|
|
|
+ if (CollectionUtils.isEmpty(list)) {
|
|
|
|
|
+ log.warn("批量更新企业信息参数为空");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 数据预处理
|
|
|
|
|
+ preprocessCompanyList(list);
|
|
|
|
|
+ int batchSize=50;
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 分批处理,避免一次性处理过多数据
|
|
|
|
|
+ List<List<CompanyPO>> partitions = Lists.partition(list, batchSize);
|
|
|
|
|
+ int totalSuccess = 0;
|
|
|
|
|
+
|
|
|
|
|
+ for (int i = 0; i < partitions.size(); i++) {
|
|
|
|
|
+ List<CompanyPO> partition = partitions.get(i);
|
|
|
|
|
+ log.info("处理第 {}/{} 批次,本批数量:{}", i + 1, partitions.size(), partition.size());
|
|
|
|
|
+
|
|
|
|
|
+ boolean result = companyMapper.batchUpdateCompany(partition);
|
|
|
|
|
+ if (result) {
|
|
|
|
|
+ totalSuccess += partition.size();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("第 {} 批次更新失败", i + 1);
|
|
|
|
|
+ throw new RuntimeException("第 " + (i + 1) + " 批次更新失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ log.info("批量更新企业信息完成,成功处理记录数:{}", totalSuccess);
|
|
|
|
|
+ return true;
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("批量更新企业信息异常", e);
|
|
|
|
|
+ throw new RuntimeException("批量更新企业信息失败: " + e.getMessage(), e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 数据预处理:设置默认值、数据清洗等
|
|
|
|
|
+ */
|
|
|
|
|
+ private void preprocessCompanyList(List<CompanyPO> companyList) {
|
|
|
|
|
+ companyList.forEach(company -> {
|
|
|
|
|
+ if (company.getState()== null) {
|
|
|
|
|
+ company.setState(1);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (company.getDelState() == null) {
|
|
|
|
|
+ company.setDelState(0);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (company.getUpdateTime() == null) {
|
|
|
|
|
+ company.setUpdateTime(new java.util.Date());
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+}
|