|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
@ -18,6 +19,7 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; |
|
|
|
import com.epmet.commons.tools.security.dto.TokenDto; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.utils.DateUtils; |
|
|
|
import com.epmet.commons.tools.utils.ExcelPoiUtils; |
|
|
|
import com.epmet.constant.IcCommunitySelfOrganizationConstant; |
|
|
|
import com.epmet.dao.IcCommunitySelfOrganizationDao; |
|
|
|
import com.epmet.dto.IcCommunitySelfOrganizationDTO; |
|
|
@ -31,6 +33,7 @@ import com.epmet.dto.result.CommunitySelfOrganizationListResultDTO; |
|
|
|
import com.epmet.dto.result.demand.OptionDTO; |
|
|
|
import com.epmet.entity.IcCommunitySelfOrganizationEntity; |
|
|
|
import com.epmet.entity.IcCommunitySelfOrganizationPersonnelEntity; |
|
|
|
import com.epmet.excel.ImportCommunitySelfOrganization; |
|
|
|
import com.epmet.service.IcCommunitySelfOrganizationPersonnelService; |
|
|
|
import com.epmet.service.IcCommunitySelfOrganizationService; |
|
|
|
import com.epmet.service.IcUserDemandRecService; |
|
|
@ -41,7 +44,10 @@ import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.io.IOException; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.atomic.AtomicReference; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -316,4 +322,81 @@ public class IcCommunitySelfOrganizationServiceImpl extends BaseServiceImpl<IcCo |
|
|
|
return resultList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 导入 |
|
|
|
* @param tokenDto |
|
|
|
* @param response |
|
|
|
* @param file |
|
|
|
* @author zxc |
|
|
|
* @date 2021/11/25 9:03 上午 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void importCommunitySelfOrganization(TokenDto tokenDto, HttpServletResponse response, MultipartFile file) throws IOException { |
|
|
|
ExcelImportResult<ImportCommunitySelfOrganization> testExcelImportResult = ExcelPoiUtils.importExcelMore(file, 0, 2, ImportCommunitySelfOrganization.class); |
|
|
|
List<ImportCommunitySelfOrganization> list = testExcelImportResult.getList(); |
|
|
|
if (CollectionUtils.isNotEmpty(list)){ |
|
|
|
String customerId = tokenDto.getCustomerId(); |
|
|
|
List<String> existsNames = baseDao.selectOrgByOrgName(list.stream().map(m -> m.getOrganizationName()).collect(Collectors.toList()), customerId); |
|
|
|
Map<String, List<ImportCommunitySelfOrganization>> groupByName = list.stream().collect(Collectors.groupingBy(ImportCommunitySelfOrganization::getOrganizationName)); |
|
|
|
groupByName.forEach((k,v) -> { |
|
|
|
if (v.size() > NumConstant.ONE){ |
|
|
|
existsNames.add(k); |
|
|
|
} |
|
|
|
}); |
|
|
|
List<String> repeatName = existsNames.stream().distinct().collect(Collectors.toList()); |
|
|
|
if (CollectionUtils.isNotEmpty(repeatName)){ |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
|
|
repeatName.forEach(p -> { |
|
|
|
sb.append(p).append(","); |
|
|
|
}); |
|
|
|
String copywriter = sb.toString().substring(NumConstant.ZERO, sb.length() - NumConstant.ONE); |
|
|
|
EpmetErrorCode.COMMUNITY_SELF_ORGANIZATION_LIST_REPART_ERROR.setMsg(String.format(EpmetErrorCode.COMMUNITY_SELF_ORGANIZATION_LIST_REPART_ERROR.getMsg(),copywriter)); |
|
|
|
throw new RenException(EpmetErrorCode.COMMUNITY_SELF_ORGANIZATION_LIST_REPART_ERROR.getCode()); |
|
|
|
} |
|
|
|
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); |
|
|
|
if (null == staffInfo){ |
|
|
|
throw new RenException(String.format("查询人员{%s}信息失败",tokenDto.getUserId())); |
|
|
|
} |
|
|
|
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfo.getAgencyId()); |
|
|
|
if (null == agencyInfo){ |
|
|
|
throw new RenException(String.format("查询组织信息失败%s",staffInfo.getAgencyId())); |
|
|
|
} |
|
|
|
list.forEach(l -> { |
|
|
|
IcCommunitySelfOrganizationEntity e = ConvertUtils.sourceToTarget(l, IcCommunitySelfOrganizationEntity.class); |
|
|
|
e.setCustomerId(customerId); |
|
|
|
e.setOrgId(staffInfo.getAgencyId()); |
|
|
|
e.setOrgType(IcCommunitySelfOrganizationConstant.ORG_TYPE_AGENCY); |
|
|
|
e.setPid(agencyInfo.getPid()); |
|
|
|
e.setPids(agencyInfo.getPids()); |
|
|
|
e.setOrganizationCreatedTime(l.getOrganizationCreatedTime()); |
|
|
|
baseDao.insert(e); |
|
|
|
if (CollectionUtils.isNotEmpty(l.getPersons())){ |
|
|
|
List<IcCommunitySelfOrganizationPersonnelEntity> persons = ConvertUtils.sourceToTarget(l.getPersons(), IcCommunitySelfOrganizationPersonnelEntity.class); |
|
|
|
Map<String, List<IcCommunitySelfOrganizationPersonnelEntity>> groupByPhone = persons.stream().collect(Collectors.groupingBy(IcCommunitySelfOrganizationPersonnelEntity::getPersonPhone)); |
|
|
|
List<String> phones = new ArrayList<>(); |
|
|
|
groupByPhone.forEach((k,v) -> { |
|
|
|
if (v.size() > NumConstant.ONE){ |
|
|
|
phones.add(k); |
|
|
|
} |
|
|
|
}); |
|
|
|
if (CollectionUtils.isNotEmpty(phones)){ |
|
|
|
StringBuffer sb = new StringBuffer(); |
|
|
|
phones.forEach(p -> { |
|
|
|
sb.append(p).append(","); |
|
|
|
}); |
|
|
|
String copywriter = sb.toString().substring(NumConstant.ZERO, sb.length() - NumConstant.ONE); |
|
|
|
EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.setMsg(String.format(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getMsg(),copywriter)); |
|
|
|
throw new RenException(EpmetErrorCode.EXISTS_SAME_PHONE_ERROR.getCode()); |
|
|
|
} |
|
|
|
persons.forEach(p -> { |
|
|
|
p.setCustomerId(customerId); |
|
|
|
p.setOrgId(e.getId()); |
|
|
|
}); |
|
|
|
personnelService.insertBatch(persons); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |