| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- package com.ydtech.modules.protocol.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.constants.enums.dict.agreement.AgreementType;
- import com.ydtech.core.page.HttpResult;
- import com.ydtech.core.page.PageResult;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.esm.model.EsmInsCompany;
- import com.ydtech.modules.esm.service.EsmInsCompanyService;
- import com.ydtech.modules.order.service.InsCrawlerOrderService;
- import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
- import com.ydtech.modules.protocol.entity.constants.PtlApiType;
- import com.ydtech.modules.protocol.entity.dto.*;
- import com.ydtech.modules.protocol.entity.po.PtlAgreement;
- import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
- import com.ydtech.modules.protocol.entity.po.PtlAgreementDept;
- import com.ydtech.modules.protocol.entity.po.PtlAgreementUnderwritingRules;
- import com.ydtech.modules.protocol.entity.vo.PtlAgreementAuditVo;
- import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
- import com.ydtech.modules.protocol.entity.vo.PtlAgreementQueryVo;
- import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
- import com.ydtech.modules.protocol.service.*;
- import com.ydtech.modules.protocol.utils.AssertionUtils;
- import org.apache.commons.lang3.ObjectUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * @author wenks
- * @description 针对表【ptl_agreement(协议信息表)】的数据库操作Service实现
- * @createDate 2023-06-05 17:59:52
- */
- @Service
- public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, PtlAgreement> implements PtlAgreementService {
- private final PtlAgreementProductCostsService ptlAgreementProductCostsService;
- private final PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService;
- private final PtlAgreementAttributionService ptlAgreementAttributionService;
- private final PtlAgreementDeptService ptlAgreementDeptService;
- private final EsmInsCompanyService esmInsCompanyService;
- private InsCrawlerOrderService insCrawlerOrderController;
- private PtlAgreementService proxyObject;
- public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService, PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService, PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService, EsmInsCompanyService esmInsCompanyService) {
- this.ptlAgreementProductCostsService = ptlAgreementProductCostsService;
- this.ptlAgreementUnderwritingRulesService = ptlAgreementUnderwritingRulesService;
- this.ptlAgreementAttributionService = ptlAgreementAttributionService;
- this.ptlAgreementDeptService = ptlAgreementDeptService;
- this.esmInsCompanyService = esmInsCompanyService;
- }
- @Autowired
- public void setProxyObject(PtlAgreementService proxyObject) {
- this.proxyObject = proxyObject;
- }
- @Autowired
- public void setInsCrawlerOrderController(InsCrawlerOrderService insCrawlerOrderController) {
- this.insCrawlerOrderController = insCrawlerOrderController;
- }
- @Override
- public List<PtlAgreementInsCompanyDto> getAgreementCompany(String deptId) {
- LocalDate localDate = LocalDate.now();
- List<PtlAgreementInsCompanyDto> agreementCompany = baseMapper.getAgreementCompany(localDate, deptId);
- List<String> agreementIdList = agreementCompany.stream()
- .flatMap(x -> x.getAgreement().stream().map(PtlAgreementDto::getId))
- .collect(Collectors.toList());
- Map<String, List<String>> licenseNoList = ptlAgreementUnderwritingRulesService.getByLicenseNo(agreementIdList);
- agreementCompany.forEach(
- x -> x.getAgreement().forEach(a -> a.setLicenseNo(licenseNoList.get(a.getId())))
- );
- return agreementCompany;
- }
- @Override
- public PtlAgreement ifExistsById(String agreementId) {
- PtlAgreement ptlAgreement = getById(agreementId);
- if (ObjectUtils.isEmpty(ptlAgreement)) {
- throw new SystemException("协议id 不存在");
- }
- return ptlAgreement;
- }
- @Override
- @Transactional
- public HttpResult<Object> saveAgreement(PtlAgreementSaveVo agreement, String userName) {
- PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
- PtlAgreementAttributionDto attribution = agreement.getAttribution();
- PtlAgreement ptlAgreement = new PtlAgreement();
- BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
- EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
- ptlAgreement.setCreator(userName);
- ptlAgreement.setCreateTime(LocalDateTime.now());
- save(ptlAgreement);
- // 产品费用
- String insuranceCompanyId = esmInsCompany.getId();
- proxyObject.saveAssociationInformation(ptlAgreement.getId(), insuranceCompanyId, agreement);
- return HttpResult.ok("添加成功");
- }
- @Override
- public HttpResult<PageResult<PtlAgreement>> pageAgreement(PtlAgreementPageVo ptlAgreementPageVo) {
- int pageNum = ptlAgreementPageVo.getPageNum();
- int pageSize = ptlAgreementPageVo.getPageSize();
- LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
- // 获取供应商本级id 及其 下级id
- List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
- // 审核状态
- wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus, ptlAgreementPageVo.getAuditStatus())
- // 供应商类型
- .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType, ptlAgreementPageVo.getCompaniesType())
- // 合作公司
- .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
- // 录入时间
- .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
- Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
- Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
- PageResult<PtlAgreement> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, (int) agreementPage.getTotal(), agreementPage.getRecords());
- return HttpResult.ok(ptlAgreementPageResult);
- }
- @Override
- public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
- PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
- // 获取产品费用
- List<PltAgreementSchemeQueryDto> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(agreementId);
- // 获取承保规则
- List<PtlAgreementUnderwritingRules> underwritingRules = ptlAgreementUnderwritingRulesService.getByAgreementId(agreementId);
- // 账号信息查询
- PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
- // 授权查询
- List<PtlAgreementDept> deptList = ptlAgreementDeptService.getByAgreementId(agreementId);
- PtlAgreementQueryVo ptlAgreementQueryVo = new PtlAgreementQueryVo(ptlAgreement, schemeQueryDto, underwritingRules, ptlAgreementAttribution, deptList);
- return HttpResult.ok(ptlAgreementQueryVo);
- }
- @Override
- @Transactional
- public HttpResult<Object> deleteAgreement(String agreementId) {
- proxyObject.ifExistsById(agreementId);
- boolean b = removeById(agreementId);
- AssertionUtils.isSucceed(b, "协议信息删除失败");
- // 关联表删除
- proxyObject.deleteAssociationInformation(agreementId);
- return HttpResult.ok("删除成功");
- }
- @Override
- @Transactional
- public HttpResult<Object> reviseAgreement(String userName, String agreementId, PtlAgreementSaveVo agreement) {
- PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
- PtlAgreementAttributionDto attribution = agreement.getAttribution();
- PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
- BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
- EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
- ptlAgreement.setModifiedBy(userName);
- ptlAgreement.setUpdateTime(LocalDateTime.now());
- // 修改协议
- boolean b = updateById(ptlAgreement);
- AssertionUtils.isSucceed(b, "协议信息修改失败");
- // 关联表都是先删除后添加
- proxyObject.deleteAssociationInformation(agreementId);
- String insuranceCompanyId = esmInsCompany.getId();
- proxyObject.saveAssociationInformation(agreementId, insuranceCompanyId, agreement);
- return HttpResult.ok("修改成功");
- }
- @Override
- public void saveAssociationInformation(String agreementId, String insuranceCompanyId, PtlAgreementSaveVo agreement) {
- // 产品费用
- ptlAgreementProductCostsService.saveBatchProductCosts(agreementId, agreement.getScheme());
- // 承包规则
- ptlAgreementUnderwritingRulesService.saveBatchUnderwritingRules(agreementId, agreement.getUnderwritingRules());
- // 账号添加
- ptlAgreementAttributionService.saveAttribution(agreementId, insuranceCompanyId, agreement.getAttribution());
- // 部门授权
- ptlAgreementDeptService.saveBatchDept(agreementId, agreement.getDept());
- }
- @Override
- public void deleteAssociationInformation(String agreementId) {
- // 删除产品费用
- ptlAgreementProductCostsService.deleteByAgreementId(agreementId);
- // 删除承保规则
- ptlAgreementUnderwritingRulesService.deleteByAgreementId(agreementId);
- // 删除账号信息
- ptlAgreementAttributionService.removeById(agreementId);
- // 删除授权部门
- ptlAgreementDeptService.deleteByAgreementId(agreementId);
- }
- @Override
- public EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto, PtlAgreementAttributionDto attribution) {
- EsmInsCompany esmInsCompany;
- // 获取保险公司
- if (AgreementType.AT2.getCode().equals(agreementSaveDto.getAgreementType())) {
- String message = String.format("协议为 %s 保险公司必须传入", AgreementType.AT2.getDesc());
- AssertionUtils.isStringEmpty(agreementSaveDto.getAssociationCompaniesId(), message);
- esmInsCompany = esmInsCompanyService.isExists(agreementSaveDto.getAssociationCompaniesId());
- } else {
- esmInsCompany = esmInsCompanyService.getBySubsidiary(agreementSaveDto.getPartnerCompaniesId());
- }
- // 验证用户名密码 python api 对接需要验证用户名
- if (PtlApiType.PTL_API_2.getCode() == attribution.getApiType()) {
- String nameSimple = esmInsCompany.getNamesimple();
- insCrawlerOrderController.isLogin(attribution, nameSimple);
- }
- ptlAgreement.setCompaniesType(esmInsCompany.getType());
- ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());
- ptlAgreement.setInsuranceCompany(esmInsCompany.getNamesimple());
- // 生成协议id
- ptlAgreement.generateTheProtocolCode();
- return esmInsCompany;
- }
- @Override
- public HttpResult<Object> auditAgreement(String agreementId, PtlAgreementAuditVo ptlAgreementAuditVo) {
- PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
- ptlAgreement.setAuditStatus(ptlAgreementAuditVo.getAuditStatus());
- ptlAgreement.setAuditContent(ptlAgreementAuditVo.getAuditContent());
- // 修改协议
- boolean b = updateById(ptlAgreement);
- AssertionUtils.isSucceed(b, "协议信息修改失败");
- return HttpResult.ok("修改成功");
- }
- }
|