PtlAgreementServiceImpl.java 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011
  1. package com.ydtech.modules.protocol.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.ydtech.config.DictEnumConfig;
  9. import com.ydtech.constants.enums.dict.DictionaryData;
  10. import com.ydtech.constants.enums.dict.DictionaryManagement;
  11. import com.ydtech.core.page.HttpResult;
  12. import com.ydtech.exception.SystemException;
  13. import com.ydtech.modules.base.controller.BaseController;
  14. import com.ydtech.modules.esm.model.EsmInsCompany;
  15. import com.ydtech.modules.esm.service.EsmInsCompanyService;
  16. import com.ydtech.modules.order.service.InsCrawlerOrderService;
  17. import com.ydtech.modules.protocol.constants.HistoryStatusConstants;
  18. import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
  19. import com.ydtech.modules.protocol.entity.constants.PtlApiType;
  20. import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
  21. import com.ydtech.modules.protocol.entity.dto.PtlAgreementDto;
  22. import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
  23. import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
  24. import com.ydtech.modules.protocol.entity.dto.history.PtlAgreementUndwrtRulesHistory;
  25. import com.ydtech.modules.protocol.entity.po.*;
  26. import com.ydtech.modules.protocol.entity.vo.*;
  27. import com.ydtech.modules.protocol.service.*;
  28. import com.ydtech.modules.protocol.utils.AssertionUtils;
  29. import com.ydtech.utils.idgen.IdGenerate;
  30. import org.apache.commons.lang3.ObjectUtils;
  31. import org.apache.commons.lang3.StringUtils;
  32. import org.springframework.beans.BeanUtils;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.beans.factory.annotation.Value;
  35. import org.springframework.context.annotation.Lazy;
  36. import org.springframework.stereotype.Service;
  37. import org.springframework.transaction.annotation.Transactional;
  38. import java.time.LocalDate;
  39. import java.time.LocalDateTime;
  40. import java.time.LocalTime;
  41. import java.time.format.DateTimeFormatter;
  42. import java.util.*;
  43. import java.util.stream.Collectors;
  44. /**
  45. * @author wenks
  46. * @description 针对表【ptl_agreement(协议信息表)】的数据库操作Service实现
  47. * @createDate 2023-06-05 17:59:52
  48. */
  49. @Service
  50. public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, PtlAgreement> implements PtlAgreementService {
  51. private final PtlAgreementProductCostsService ptlAgreementProductCostsService;
  52. private final PtlAgreementAttributionService ptlAgreementAttributionService;
  53. private final PtlAgreementDeptService ptlAgreementDeptService;
  54. private final EsmInsCompanyService esmInsCompanyService;
  55. private final InsCrawlerOrderService insCrawlerOrderController;
  56. private final PtlAgreementService proxyObject;
  57. private final PtlAgreementHistoryService ptlAgreementHistoryService;
  58. private final PtlNonCarInsuranceProductService ptlNonCarInsuranceProductService;
  59. private final PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService;
  60. private final PtlAgreementUndwrtRulesService ptlAgreementUndwrtRulesService;
  61. private final PtlAgreementProductCostsHistoryService ptlAgreementProductCostsHistoryService;
  62. private final PtlAgreementUndwrtRulesHistoryService ptlAgreementUndwrtRulesHistoryService;
  63. private final PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService;
  64. private final PtlAgreementTrajectoryService ptlAgreementTrajectoryService;
  65. @Autowired
  66. private PtlAgreementDeptHistoryService ptlAgreementDeptHistoryService;
  67. @Autowired
  68. private PtlAgreementMapper ptlAgreementMapper;
  69. @Value("${python.check}")
  70. private String pythonCheck;
  71. public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
  72. PtlAgreementAttributionService ptlAgreementAttributionService,
  73. PtlAgreementDeptService ptlAgreementDeptService,
  74. EsmInsCompanyService esmInsCompanyService,
  75. PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService,
  76. @Lazy InsCrawlerOrderService insCrawlerOrderController, @Lazy PtlAgreementService proxyObject,
  77. PtlNonCarInsuranceProductService ptlNonCarInsuranceProductService,
  78. @Lazy PtlAgreementUndwrtRulesService ptlAgreementUndwrtRulesService,
  79. PtlAgreementHistoryService ptlAgreementHistoryService,
  80. PtlAgreementProductCostsHistoryService ptlAgreementProductCostsHistoryService,
  81. PtlAgreementUndwrtRulesHistoryService ptlAgreementUndwrtRulesHistoryService,
  82. PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService,
  83. PtlAgreementTrajectoryService ptlAgreementTrajectoryService) {
  84. this.ptlAgreementProductCostsService = ptlAgreementProductCostsService;
  85. this.ptlAgreementAttributionService = ptlAgreementAttributionService;
  86. this.ptlAgreementDeptService = ptlAgreementDeptService;
  87. this.esmInsCompanyService = esmInsCompanyService;
  88. this.ptlAgreementNonCarProductCostsService = ptlAgreementNonCarProductCostsService;
  89. this.insCrawlerOrderController = insCrawlerOrderController;
  90. this.proxyObject = proxyObject;
  91. this.ptlNonCarInsuranceProductService = ptlNonCarInsuranceProductService;
  92. this.ptlAgreementUndwrtRulesService = ptlAgreementUndwrtRulesService;
  93. this.ptlAgreementHistoryService = ptlAgreementHistoryService;
  94. this.ptlAgreementProductCostsHistoryService = ptlAgreementProductCostsHistoryService;
  95. this.ptlAgreementUndwrtRulesHistoryService = ptlAgreementUndwrtRulesHistoryService;
  96. this.ptlAgreementAttributionHistoryService = ptlAgreementAttributionHistoryService;
  97. this.ptlAgreementTrajectoryService = ptlAgreementTrajectoryService;
  98. }
  99. @Override
  100. public List<PtlAgreementInsCompanyDto> getAgreementCompany(String deptId) {
  101. LocalDate localDate = LocalDate.now();
  102. List<PtlAgreementInsCompanyDto> agreementCompany = baseMapper.getAgreementCompany(localDate, deptId);
  103. for (PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto : agreementCompany) {
  104. List<PtlAgreementDto> agreement = ptlAgreementInsCompanyDto.getAgreement();
  105. for (PtlAgreementDto ptlAgreementDto : agreement) {
  106. if (ptlAgreementDto.getProductsCode() != null && !ptlAgreementDto.getProductsCode().equals("")) {
  107. String[] split = ptlAgreementDto.getProductsCode().split(",");
  108. ptlAgreementDto.setProductsCodes(split);
  109. }
  110. }
  111. }
  112. List<String> agreementIdList = agreementCompany.stream()
  113. .flatMap(x -> x.getAgreement().stream().map(PtlAgreementDto::getId))
  114. .collect(Collectors.toList());
  115. /*Map<String, List<String>> licenseNoList = ptlAgreementUndwrtRulesService.getByLicenseNo(agreementIdList);
  116. agreementCompany.forEach(
  117. x -> x.getAgreement().forEach(a -> a.setLicenseNo(licenseNoList.get(a.getId())))
  118. );*/
  119. return agreementCompany;
  120. }
  121. @Override
  122. public List<PtlAgreementInsCompanyDto> getAgreementCompanyExternal(String deptId) {
  123. LocalDate localDate = LocalDate.now();
  124. List<PtlAgreementInsCompanyDto> agreementCompany = baseMapper.getAgreementCompanyExternal(localDate, deptId);
  125. for (PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto : agreementCompany) {
  126. List<PtlAgreementDto> agreement = ptlAgreementInsCompanyDto.getAgreement();
  127. for (PtlAgreementDto ptlAgreementDto : agreement) {
  128. if (ptlAgreementDto.getProductsCode() != null && !ptlAgreementDto.getProductsCode().equals("")) {
  129. String[] split = ptlAgreementDto.getProductsCode().split(",");
  130. ptlAgreementDto.setProductsCodes(split);
  131. }
  132. }
  133. }
  134. List<String> agreementIdList = agreementCompany.stream()
  135. .flatMap(x -> x.getAgreement().stream().map(PtlAgreementDto::getId))
  136. .collect(Collectors.toList());
  137. /*Map<String, List<String>> licenseNoList = ptlAgreementUndwrtRulesService.getByLicenseNo(agreementIdList);
  138. agreementCompany.forEach(
  139. x -> x.getAgreement().forEach(a -> a.setLicenseNo(licenseNoList.get(a.getId())))
  140. );*/
  141. return agreementCompany;
  142. }
  143. @Override
  144. public PtlAgreementInsCompanyDto getAgreementCompany(String deptId, String companyId) {
  145. LocalDate localDate = LocalDate.now();
  146. PtlAgreementInsCompanyDto agreementCompany = baseMapper.getAgreementCompanyByCompanyId(localDate, deptId, companyId);
  147. return agreementCompany;
  148. }
  149. @Override
  150. public PtlAgreement ifExistsById(String agreementId) {
  151. PtlAgreement ptlAgreement = getById(agreementId);
  152. if (ObjectUtils.isEmpty(ptlAgreement)) {
  153. throw new SystemException("协议id 不存在");
  154. }
  155. return ptlAgreement;
  156. }
  157. @Override
  158. @Transactional
  159. public HttpResult<Object> saveAgreement(PtlAgreementSaveVo agreement, String userName) {
  160. PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
  161. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  162. attribution.setCheck(pythonCheck);
  163. PtlAgreement ptlAgreement = new PtlAgreement();
  164. BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
  165. EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution, true);
  166. // ptlAgreement.setId(IdGenerate.nextId());
  167. ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
  168. ptlAgreement.setCreator(userName);
  169. ptlAgreement.setCreateTime(LocalDateTime.now());
  170. ptlAgreement.setDeleted(0);
  171. save(ptlAgreement);
  172. // 新增协议轨迹
  173. PtlAgreementTrajectory ptlAgreementTrajectory = new PtlAgreementTrajectory();
  174. ptlAgreementTrajectory.setId(IdGenerate.nextId());
  175. ptlAgreementTrajectory.setAgreementId(ptlAgreement.getId());
  176. ptlAgreementTrajectory.setReadme("添加协议");
  177. ptlAgreementTrajectory.setCreateTime(LocalDateTime.now());
  178. ptlAgreementTrajectory.setCreateBy(userName);
  179. ptlAgreementTrajectoryService.save(ptlAgreementTrajectory);
  180. // 新增协议后按序号重新排序
  181. List<PtlAgreement> updateList = new ArrayList<>();
  182. List<PtlAgreement> list = ptlAgreementMapper.selectList(new QueryWrapper<PtlAgreement>()
  183. .ge("serial_number", ptlAgreement.getSerialNumber())
  184. .ne("id", ptlAgreement.getId())
  185. .eq("is_external", ptlAgreement.getIsExternal()));
  186. if (list != null && !list.isEmpty()) {
  187. int newSerialNumber = ptlAgreement.getSerialNumber();
  188. for (PtlAgreement ptlAgreement1 : list) {
  189. ptlAgreement1.setSerialNumber(++newSerialNumber);
  190. updateList.add(ptlAgreement1);
  191. }
  192. proxyObject.updateBatchById(updateList);
  193. }
  194. // 提交 账号信息 授权部门
  195. proxyObject.saveAssociationInformation(ptlAgreement.getId(), esmInsCompany, agreement);
  196. // 添加 历史记录表
  197. //生成批次号
  198. String batchNo = IdGenerate.nextId();
  199. //添加授权部门历史信息
  200. List<String> dept = agreement.getDept();
  201. List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(),
  202. dept, batchNo);
  203. ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
  204. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD,
  205. ptlAgreement);
  206. ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  207. ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  208. ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
  209. ptlAgreementHistory.setId(IdGenerate.nextId());
  210. ptlAgreementHistory.setOperatorType("add");
  211. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  212. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo, ptlAgreement.getId(),
  213. esmInsCompany.getId(), esmInsCompany.getName(), agreement.getAttribution());
  214. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  215. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  216. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  217. }
  218. return HttpResult.ok("添加成功");
  219. }
  220. @Override
  221. @Transactional
  222. public HttpResult<Object> saveAgreementProduct(PtlAgreementProductCosts ptlAgreementProductCosts, String userName) {
  223. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId,
  224. ptlAgreementProductCosts.getAgreementId()));
  225. if (ptlAgreement == null) {
  226. throw new SystemException("协议不存在");
  227. }
  228. ptlAgreement.setModifiedBy(userName);
  229. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  230. ptlAgreement.setUpdateTime(LocalDateTime.now());
  231. //更新协议信息
  232. baseMapper.updateById(ptlAgreement);
  233. // 产品费用
  234. ptlAgreementProductCostsService.save(ptlAgreementProductCosts);
  235. // 添加 历史记录表
  236. PtlAgreementProductCostsHistory history = new PtlAgreementProductCostsHistory(userName, DateUtil.format(new Date(), "yyyy-MM-dd " +
  237. "HH:mm:ss"),
  238. HistoryStatusConstants.HISTORY_TYPE_UPDATE, ptlAgreementProductCosts);
  239. ptlAgreementProductCostsHistoryService.save(history);
  240. return HttpResult.ok("添加成功");
  241. }
  242. @Override
  243. public HttpResult<Object> updateAgreementProduct(PtlAgreementProductCosts agreement, String userName) {
  244. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId,
  245. agreement.getAgreementId()));
  246. if (ptlAgreement == null) {
  247. throw new SystemException("协议不存在");
  248. }
  249. ptlAgreement.setModifiedBy(userName);
  250. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  251. ptlAgreement.setUpdateTime(LocalDateTime.now());
  252. //更新协议信息
  253. baseMapper.updateById(ptlAgreement);
  254. // 产品费用
  255. ptlAgreementProductCostsService.updateById(agreement);
  256. // 添加 历史记录表
  257. PtlAgreementProductCostsHistory history = new PtlAgreementProductCostsHistory(userName, DateUtil.format(new Date(), "yyyy-MM-dd " +
  258. "HH:mm:ss"),
  259. HistoryStatusConstants.HISTORY_TYPE_UPDATE, agreement);
  260. ptlAgreementProductCostsHistoryService.save(history);
  261. return HttpResult.ok("修改成功");
  262. }
  263. @Override
  264. @Transactional
  265. public HttpResult<Object> deleteAgreementProduct(String id, String userName) {
  266. PtlAgreementProductCosts ptlAg = ptlAgreementProductCostsService.getById(id);
  267. if (ptlAg == null) {
  268. throw new SystemException("协议产品费用不存在");
  269. }
  270. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId,
  271. ptlAg.getAgreementId()));
  272. if (ptlAgreement == null) {
  273. throw new SystemException("协议不存在");
  274. }
  275. ptlAgreement.setModifiedBy(userName);
  276. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  277. ptlAgreement.setUpdateTime(LocalDateTime.now());
  278. //更新协议信息
  279. baseMapper.updateById(ptlAgreement);
  280. //删除协议
  281. ptlAgreementProductCostsService.removeById(id);
  282. PtlAgreementProductCostsHistory history = new PtlAgreementProductCostsHistory(userName, DateUtil.format(new Date(), "yyyy-MM-dd " +
  283. "HH:mm:ss"),
  284. HistoryStatusConstants.HISTORY_TYPE_DELETE, ptlAg);
  285. ptlAgreementProductCostsHistoryService.save(history);
  286. return HttpResult.ok("删除成功");
  287. }
  288. @Override
  289. @Transactional
  290. public HttpResult<Object> saveAgreementNonCarProductCosts(PtlAgreementNonVehicleProductCostsVo agreement, String userName) {
  291. //同步刷新其他协议非车产品费用信息(有待同步协议时,进行同步)
  292. if (agreement.getSyncAgreementIds() != null && agreement.getSyncAgreementIds().size() > 0) {
  293. for (int i = 0; i < agreement.getSyncAgreementIds().size(); i++) {
  294. String tempAgreementId = agreement.getSyncAgreementIds().get(i);
  295. PtlAgreement destAgreement = getById(tempAgreementId);
  296. //根据归属保司,找出本级和上级 所有产品代码
  297. //先获取相关保险公司列表
  298. String companyId = destAgreement.getPartnerCompaniesId();
  299. if (destAgreement.getAssociationCompaniesId() != null && !"".equals(destAgreement.getAssociationCompaniesId())) {
  300. companyId = destAgreement.getAssociationCompaniesId();
  301. }
  302. List<String> companyIdList = esmInsCompanyService.getAllRelationCompanyId(companyId);
  303. //再根据保险公司列表获取所有非车产品列表
  304. List<PtlNonCarInsuranceProduct> productList = ptlNonCarInsuranceProductService.findProductListByCompangIds(companyIdList);
  305. List<PtlAgreementNonCarProductCostsSaveVo> finalList = new ArrayList<>();
  306. //按找出的产品过滤传进来的 费用方案列表
  307. for (PtlNonCarInsuranceProduct tempProductDto : productList) {
  308. for (PtlAgreementNonCarProductCostsSaveVo productCostDto : agreement.getNonCarProductCosts()) {
  309. if (productCostDto.getProductId().equals(tempProductDto.getProductCode())) {
  310. finalList.add(productCostDto);
  311. }
  312. }
  313. }
  314. ptlAgreementNonCarProductCostsService.synNonCarProductCosts(destAgreement, finalList);
  315. }
  316. }
  317. return HttpResult.ok("添加成功");
  318. }
  319. @Override
  320. @Transactional
  321. public HttpResult<Object> saveAgreementUndwrtRules(PtlAgreementUndwrtRules ptlAgreementUndwrtRules, String userName) {
  322. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId,
  323. ptlAgreementUndwrtRules.getAgreementId()));
  324. if (ptlAgreement == null) {
  325. throw new SystemException("协议不存在");
  326. }
  327. ptlAgreement.setModifiedBy(userName);
  328. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  329. ptlAgreement.setUpdateTime(LocalDateTime.now());
  330. //更新协议信息
  331. baseMapper.updateById(ptlAgreement);
  332. //添加承保规则
  333. ptlAgreementUndwrtRulesService.save(ptlAgreementUndwrtRules);
  334. //添加历史记录
  335. PtlAgreementUndwrtRulesHistory ptlAgreementUndwrtRulesHistory = new PtlAgreementUndwrtRulesHistory(userName,
  336. HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreementUndwrtRules);
  337. ptlAgreementUndwrtRulesHistoryService.save(ptlAgreementUndwrtRulesHistory);
  338. return HttpResult.ok("添加成功");
  339. }
  340. @Override
  341. @Transactional
  342. public HttpResult<Object> updateAgreementUndwrtRules(PtlAgreementUndwrtRules ptlAgreementUndwrtRules, String userName) {
  343. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId,
  344. ptlAgreementUndwrtRules.getAgreementId()));
  345. if (ptlAgreement == null) {
  346. throw new SystemException("协议不存在");
  347. }
  348. ptlAgreement.setModifiedBy(userName);
  349. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  350. ptlAgreement.setUpdateTime(LocalDateTime.now());
  351. //更新协议信息
  352. baseMapper.updateById(ptlAgreement);
  353. //添加承保规则
  354. ptlAgreementUndwrtRulesService.updateById(ptlAgreementUndwrtRules);
  355. //添加历史记录
  356. PtlAgreementUndwrtRulesHistory ptlAgreementUndwrtRulesHistory = new PtlAgreementUndwrtRulesHistory(userName,
  357. HistoryStatusConstants.HISTORY_TYPE_UPDATE, ptlAgreementUndwrtRules);
  358. ptlAgreementUndwrtRulesHistoryService.save(ptlAgreementUndwrtRulesHistory);
  359. return HttpResult.ok("修改成功");
  360. }
  361. @Override
  362. @Transactional
  363. public HttpResult<Object> deleteAgreementUndwrtRules(String id, String userName) {
  364. PtlAgreementUndwrtRules ptlAgreementUndwrtRules =
  365. ptlAgreementUndwrtRulesService.getOne(new LambdaQueryWrapper<PtlAgreementUndwrtRules>().eq(PtlAgreementUndwrtRules::getId
  366. , id));
  367. if (ptlAgreementUndwrtRules == null) {
  368. throw new SystemException("协议承保规则不存在");
  369. }
  370. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId,
  371. ptlAgreementUndwrtRules.getAgreementId()));
  372. if (ptlAgreement == null) {
  373. throw new SystemException("协议不存在");
  374. }
  375. ptlAgreement.setModifiedBy(userName);
  376. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  377. ptlAgreement.setUpdateTime(LocalDateTime.now());
  378. //更新协议信息
  379. baseMapper.updateById(ptlAgreement);
  380. //删除承保规则
  381. ptlAgreementUndwrtRulesService.removeById(id);
  382. //添加历史记录
  383. PtlAgreementUndwrtRulesHistory ptlAgreementUndwrtRulesHistory = new PtlAgreementUndwrtRulesHistory(userName,
  384. HistoryStatusConstants.HISTORY_TYPE_DELETE, ptlAgreementUndwrtRules);
  385. ptlAgreementUndwrtRulesHistoryService.save(ptlAgreementUndwrtRulesHistory);
  386. return HttpResult.ok("删除成功");
  387. }
  388. @Override
  389. public Page<PtlAgreement> pageAgreement(Page page, PtlAgreementPageVo ptlAgreementPageVo) {
  390. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  391. // 获取供应商本级id 及其 下级id
  392. List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
  393. //是否有效
  394. wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus,
  395. ptlAgreementPageVo.getValidStatus())
  396. // 供应商类型
  397. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType,
  398. ptlAgreementPageVo.getCompaniesType())
  399. // 协议类型
  400. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementType()), PtlAgreement::getAgreementType,
  401. ptlAgreementPageVo.getAgreementType())
  402. // 录入人
  403. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCreator()), PtlAgreement::getCreator, ptlAgreementPageVo.getCreator())
  404. // 修改人
  405. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getModifiedBy()), PtlAgreement::getModifiedBy,
  406. ptlAgreementPageVo.getModifiedBy())
  407. // 修改人名字
  408. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getModifiedName()), PtlAgreement::getModifiedName,
  409. ptlAgreementPageVo.getModifiedName())
  410. // 合作公司
  411. .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(),
  412. PtlAgreement::getPartnerCompaniesId, lowerId)
  413. // 费用描述
  414. .like(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCostsDescription()), PtlAgreement::getUnderwritingDescription,
  415. ptlAgreementPageVo.getCostsDescription())
  416. // 协议起期
  417. .le(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementStartDate()), PtlAgreement::getStartDate,
  418. ptlAgreementPageVo.getAgreementStartDate())
  419. // 协议止期
  420. .ge(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAgreementEndDate()), PtlAgreement::getEndDate,
  421. ptlAgreementPageVo.getAgreementEndDate())
  422. // 外部订单
  423. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getIsExternal()), PtlAgreement::getIsExternal,
  424. ptlAgreementPageVo.getIsExternal())
  425. // 审核方式
  426. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditType()), PtlAgreement::getAuditType,
  427. ptlAgreementPageVo.getAuditType());
  428. // 录入时间
  429. if (!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())) {
  430. LocalDateTime startDateTime = ptlAgreementPageVo.getStartDate().atTime(LocalTime.MIN);
  431. LocalDateTime endDateTime = ptlAgreementPageVo.getEndDate().atTime(LocalTime.MAX);
  432. wrapper.between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, startDateTime, endDateTime);
  433. }
  434. // 修改时间
  435. if (!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime())) {
  436. LocalDateTime startDateTime = ptlAgreementPageVo.getUpdateStarTime().atTime(LocalTime.MIN);
  437. LocalDateTime endDateTime = ptlAgreementPageVo.getUpdateEndTime().atTime(LocalTime.MAX);
  438. wrapper.between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime()), PtlAgreement::getUpdateTime, startDateTime, endDateTime);
  439. }
  440. // 省市县
  441. if (ptlAgreementPageVo.getAreaCode() != null && !"".equals(ptlAgreementPageVo.getAreaCode()) && ptlAgreementPageVo.getLevel() != null) {
  442. String area = ptlAgreementPageVo.getAreaCode();
  443. String prefix = null;
  444. Integer sign = 0;
  445. switch (ptlAgreementPageVo.getLevel()) {
  446. case "1": { // 省级查询逻辑
  447. sign = 2;
  448. prefix = area.substring(0, 2);
  449. break;
  450. }
  451. case "2": { // 市级查询逻辑
  452. sign = 4;
  453. prefix = area.substring(0, 4);
  454. break;
  455. }
  456. case "3": { // 区县级查询逻辑
  457. sign = 6;
  458. prefix = area.substring(0, 6);
  459. break;
  460. }
  461. }
  462. wrapper.apply("SUBSTRING(partner_companies_id, 6, " + sign + ") =" + prefix);
  463. }
  464. Page<PtlAgreement> agreementPage = page(page, wrapper);
  465. agreementPage.getRecords().forEach(agreement -> {
  466. LocalDate startDate = agreement.getStartDate();
  467. LocalDate endDate = agreement.getEndDate();
  468. LocalDate now = LocalDate.now();
  469. if (now.isEqual(startDate)) {
  470. agreement.setIsValid("1");
  471. }
  472. if (now.isAfter(startDate) && now.isBefore(endDate)) {
  473. agreement.setIsValid("1");
  474. } else {
  475. agreement.setIsValid("0");
  476. }
  477. });
  478. return agreementPage;
  479. }
  480. @Override
  481. public HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo) {
  482. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  483. // 获取供应商本级id 及其 下级id
  484. List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
  485. // 审核状态
  486. wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus,
  487. ptlAgreementPageVo.getAuditStatus())
  488. //是否有效
  489. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus,
  490. ptlAgreementPageVo.getValidStatus())
  491. // 供应商类型
  492. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType,
  493. ptlAgreementPageVo.getCompaniesType())
  494. // 合作公司
  495. .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(),
  496. PtlAgreement::getPartnerCompaniesId, lowerId)
  497. // 录入时间
  498. .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())
  499. , PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
  500. List<PtlAgreement> agreementPage = list(wrapper);
  501. return HttpResult.ok(agreementPage);
  502. }
  503. @Override
  504. public HttpResult<List<PtlAgreement>> listAgreementInternal(PtlAgreementPageVo ptlAgreementPageVo) {
  505. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  506. // 获取供应商本级id 及其 下级id
  507. List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
  508. // 审核状态
  509. wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus,
  510. ptlAgreementPageVo.getAuditStatus())
  511. //是否有效
  512. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus,
  513. ptlAgreementPageVo.getValidStatus())
  514. .eq(PtlAgreement::getIsExternal, "0")
  515. // 供应商类型
  516. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType,
  517. ptlAgreementPageVo.getCompaniesType())
  518. // 合作公司
  519. .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(),
  520. PtlAgreement::getPartnerCompaniesId, lowerId)
  521. // 录入时间
  522. .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())
  523. , PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
  524. List<PtlAgreement> agreementPage = list(wrapper);
  525. return HttpResult.ok(agreementPage);
  526. }
  527. @Override
  528. public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
  529. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  530. // // 获取产品费用
  531. // List<PltAgreementSchemeSaveDto> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(agreementId);
  532. // // 获取非车险产品费用
  533. // List<PtlAgreementNonCarProductCosts> nonCarProductCosts = ptlAgreementNonCarProductCostsService.getByAgreementId(agreementId);
  534. // // 获取承保规则
  535. // List<PtlAgreementUndwrtRulesSaveDto> underwritingRules = ptlAgreementUndwrtRulesService.getByAgreementId(agreementId);
  536. // 账号信息查询
  537. PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
  538. //2023-08-28 lig 增加 解决前端空对象为null问题,改为返回为空对象
  539. if (null == ptlAgreementAttribution) {
  540. ptlAgreementAttribution = new PtlAgreementAttribution();
  541. ptlAgreementAttribution.setId("");
  542. ptlAgreementAttribution.setInsCompanyId("");
  543. ptlAgreementAttribution.setInsCompanyName("");
  544. ptlAgreementAttribution.setTemplateId("");
  545. ptlAgreementAttribution.setApiType(1);
  546. ptlAgreementAttribution.setFields(new JSONArray());
  547. ptlAgreementAttribution.setUsername("");
  548. ptlAgreementAttribution.setPassword("");
  549. }
  550. // 授权查询
  551. List<PtlAgreementDept> deptList = ptlAgreementDeptService.getByAgreementId(agreementId);
  552. PtlAgreementQueryVo ptlAgreementQueryVo = new PtlAgreementQueryVo(ptlAgreement, ptlAgreementAttribution, deptList);
  553. return HttpResult.ok(ptlAgreementQueryVo);
  554. }
  555. @Override
  556. @Transactional
  557. public HttpResult<Object> deleteAgreement(String agreementId, String userName) {
  558. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  559. HttpResult<PtlAgreementQueryVo> byAgreementId = getByAgreementId(agreementId);
  560. boolean b = removeById(agreementId);
  561. AssertionUtils.isSucceed(b, "协议信息删除失败");
  562. // 删除协议后按序号重新排序
  563. List<PtlAgreement> updateList = new ArrayList<>();
  564. List<PtlAgreement> list = ptlAgreementMapper.selectList(new QueryWrapper<PtlAgreement>()
  565. .ge("serial_number", ptlAgreement.getSerialNumber())
  566. .ne("id", agreementId)
  567. .eq("is_external", ptlAgreement.getIsExternal()));
  568. if (list != null && !list.isEmpty()) {
  569. int newSerialNumber = ptlAgreement.getSerialNumber(); // 被删除协议的序列号
  570. for (PtlAgreement ptlAgreement1 : list) {
  571. // 对于每一个协议,如果其序列号大于等于被删除协议的序列号,则递增
  572. if (ptlAgreement1.getSerialNumber() >= ptlAgreement.getSerialNumber()) {
  573. ptlAgreement1.setSerialNumber(newSerialNumber++);
  574. }
  575. updateList.add(ptlAgreement1);
  576. }
  577. proxyObject.updateBatchById(updateList);
  578. }
  579. // 关联表删除
  580. proxyObject.deleteAssociationInformation(agreementId);
  581. // 添加 历史记录表
  582. //生成批次号
  583. String batchNo = IdGenerate.nextId();
  584. List<PtlAgreementDept> dept = byAgreementId.getData().getDept();
  585. ArrayList<PtlAgreementDeptHistory> histories = new ArrayList<>();
  586. for (PtlAgreementDept ptlAgreementDept : dept) {
  587. PtlAgreementDeptHistory deptHistory = new PtlAgreementDeptHistory();
  588. deptHistory.setAgreementId(ptlAgreementDept.getAgreementId());
  589. deptHistory.setDeptId(ptlAgreementDept.getDeptId());
  590. deptHistory.setBatch(batchNo);
  591. }
  592. ptlAgreementDeptHistoryService.saveBatch(histories);
  593. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD,
  594. byAgreementId.getData().getAgreement());
  595. ptlAgreementHistory.setStartDate(byAgreementId.getData().getAgreement().getStartDate().format(DateTimeFormatter.ofPattern("yyyy" +
  596. "-MM-dd")));
  597. ptlAgreementHistory.setEndDate(byAgreementId.getData().getAgreement().getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"
  598. )));
  599. ptlAgreementHistory.setAgreementId(ptlAgreementHistory.getId());
  600. ptlAgreementHistory.setId(IdGenerate.nextId());
  601. ptlAgreementHistory.setOperatorType("delete");
  602. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  603. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo, agreementId,
  604. byAgreementId.getData().getAgreement().getInsuranceCompanyId(),
  605. byAgreementId.getData().getAgreement().getInsuranceCompany(),
  606. byAgreementId.getData().getPtlAgreementAttribution()
  607. );
  608. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  609. if (StringUtils.isNotEmpty(ptlAgreementAttributionHistory.getTemplateId())) {
  610. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  611. }
  612. return HttpResult.ok("删除成功");
  613. }
  614. @Override
  615. @Transactional
  616. public HttpResult<Object> reviseAgreement(String userName, String agreementId, PtlAgreementSaveVo agreement) {
  617. PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
  618. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  619. attribution.setCheck(pythonCheck);
  620. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  621. BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
  622. EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution,
  623. "1".equals(ptlAgreement.getValidStatus()));
  624. ptlAgreement.setIsExternal(agreementSaveDto.getIsExternal());
  625. ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
  626. ptlAgreement.setModifiedBy(userName);
  627. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  628. ptlAgreement.setUpdateTime(LocalDateTime.now());
  629. //add by hxl 2024-06-12 修改协议改为可以更新null的判断
  630. boolean b = ptlAgreementMapper.updateWithNull(ptlAgreement);
  631. // 修改协议序号
  632. List<PtlAgreement> updateList = new ArrayList<>();
  633. List<PtlAgreement> list = ptlAgreementMapper.selectList(new QueryWrapper<PtlAgreement>()
  634. .ge("serial_number", ptlAgreement.getSerialNumber())
  635. .ne("id", agreementId)
  636. .eq("is_external", ptlAgreement.getIsExternal()));
  637. if (list != null && list.size() > 0) {
  638. int newSerialNumber = ptlAgreement.getSerialNumber();
  639. for (PtlAgreement ptlAgreement1 : list) {
  640. ptlAgreement1.setSerialNumber(++newSerialNumber);
  641. updateList.add(ptlAgreement1);
  642. }
  643. proxyObject.updateBatchById(updateList);
  644. }
  645. // 修改协议
  646. //boolean b = updateById(ptlAgreement);
  647. AssertionUtils.isSucceed(b, "协议信息修改失败");
  648. //添加协议修改轨迹
  649. PtlAgreementTrajectory ptlAgreementTrajectory = new PtlAgreementTrajectory();
  650. ptlAgreementTrajectory.setId(IdGenerate.nextId());
  651. ptlAgreementTrajectory.setAgreementId(agreementId);
  652. ptlAgreementTrajectory.setReadme("修改协议");
  653. ptlAgreementTrajectory.setCreateTime(LocalDateTime.now());
  654. ptlAgreementTrajectory.setCreateBy(userName);
  655. ptlAgreementTrajectoryService.save(ptlAgreementTrajectory);
  656. // 关联表都是先删除后添加
  657. proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
  658. // 提交 账号信息 授权部门
  659. proxyObject.saveAssociationInformation(agreementId, esmInsCompany, agreement);
  660. // 添加 历史记录表
  661. //生成批次号
  662. String batchNo = IdGenerate.nextId();
  663. //添加授权部门历史信息
  664. List<String> dept = agreement.getDept();
  665. List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(),
  666. dept, batchNo);
  667. ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
  668. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD,
  669. ptlAgreement);
  670. ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  671. ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  672. ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
  673. ptlAgreementHistory.setId(IdGenerate.nextId());
  674. ptlAgreementHistory.setOperatorType("update");
  675. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  676. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo, ptlAgreement.getId(),
  677. esmInsCompany.getId(), esmInsCompany.getName(), agreement.getAttribution());
  678. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  679. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  680. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  681. }
  682. return HttpResult.ok("修改成功");
  683. }
  684. @Override
  685. public void saveAssociationInformation(String agreementId, EsmInsCompany esmInsCompany, PtlAgreementSaveVo agreement) {
  686. // 账号添加
  687. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  688. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  689. ptlAgreementAttributionService.saveAttribution(agreementId, esmInsCompany, agreement.getAttribution());
  690. }
  691. // 部门授权
  692. ptlAgreementDeptService.saveBatchDept(agreementId, agreement.getDept());
  693. }
  694. @Override
  695. public void deleteAssociationInformation(String agreementId) {
  696. // 删除产品费用
  697. ptlAgreementProductCostsService.deleteByAgreementId(agreementId);
  698. // 删除关联信息 删除非车险产品费用 承保规则 账号信息 授权部门
  699. proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
  700. }
  701. @Override
  702. public void deleteAssociationInformationExcludeCosts(String agreementId) {
  703. // 删除非车险产品费用
  704. ptlAgreementNonCarProductCostsService.deleteByAgreementId(agreementId);
  705. // 删除承保规则
  706. ptlAgreementUndwrtRulesService.deleteByAgreementId(agreementId);
  707. // 删除账号信息
  708. ptlAgreementAttributionService.removeById(agreementId);
  709. // 删除授权部门
  710. ptlAgreementDeptService.deleteByAgreementId(agreementId);
  711. }
  712. @Override
  713. public EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto,
  714. PtlAgreementAttributionDto attribution, boolean verificationLogin) {
  715. EsmInsCompany esmInsCompany;
  716. esmInsCompany = esmInsCompanyService.getBySubsidiary(agreementSaveDto.getPartnerCompaniesId());
  717. // 验证用户名密码 python api 对接需要验证用户名
  718. if (!ObjectUtils.isEmpty(attribution.getApiType()) && PtlApiType.PTL_API_2.getCode() == attribution.getApiType() && verificationLogin) {
  719. String nameSimple = esmInsCompany.getNamesimple();
  720. String id = esmInsCompany.getId();
  721. insCrawlerOrderController.isLogin(attribution, id, nameSimple);
  722. }
  723. ptlAgreement.setCompaniesType(esmInsCompany.getType());
  724. ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());
  725. ptlAgreement.setInsuranceCompany(esmInsCompany.getNamesimple());
  726. // 生成协议id
  727. ptlAgreement.generateTheProtocolCode();
  728. return esmInsCompany;
  729. }
  730. @Override
  731. public HttpResult<Object> auditAgreement(String agreementId, PtlAgreementAuditVo ptlAgreementAuditVo) {
  732. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  733. ptlAgreement.setAuditStatus(ptlAgreementAuditVo.getAuditStatus());
  734. ptlAgreement.setAuditContent(ptlAgreementAuditVo.getAuditContent());
  735. // 修改协议
  736. boolean b = updateById(ptlAgreement);
  737. AssertionUtils.isSucceed(b, "协议信息修改失败");
  738. return HttpResult.ok("修改成功");
  739. }
  740. @Override
  741. public HttpResult<List<PtlAgreementNonCarProductCostsVo>> getNonCarCostsInfo(String agreementId, String companyId) {
  742. List<PtlAgreementNonCarProductCostsVo> result = new ArrayList<>();
  743. //先根据传过来的保险公司代码,找上下级所有机构层级对应的非车产品列表
  744. if (companyId != null && !"".equals(companyId)) {
  745. //先获取相关保险公司列表
  746. List<String> companyIdList = esmInsCompanyService.getAllRelationCompanyId(companyId);
  747. //再根据保险公司列表获取所有非车产品列表
  748. List<PtlNonCarInsuranceProduct> productList = ptlNonCarInsuranceProductService.findProductListByCompangIds(companyIdList);
  749. if (productList != null && productList.size() > 0) {
  750. for (int i = 0; i < productList.size(); i++) {
  751. PtlNonCarInsuranceProduct tempProductDto = productList.get(i);
  752. PtlAgreementNonCarProductCostsVo costsVo = new PtlAgreementNonCarProductCostsVo();
  753. costsVo.setProductId(tempProductDto.getProductCode());
  754. costsVo.setProductName(tempProductDto.getProductName());
  755. costsVo.setCompanyId(tempProductDto.getCompanyId());
  756. EsmInsCompany tempInsCompany = esmInsCompanyService.getById(tempProductDto.getCompanyId());
  757. costsVo.setCompanyName(tempInsCompany.getName());
  758. costsVo.setRiskCode(tempProductDto.getInsuranceCode());
  759. Map<String, DictionaryManagement> m = DictEnumConfig.getDmMap();
  760. DictionaryManagement dictionaryManagement = m.get("nonCarInsuranceCode");
  761. String riskName = "";
  762. for (DictionaryData data : dictionaryManagement.getDdList()) {
  763. if (tempProductDto.getInsuranceCode().equals(data.getDictValue())) {
  764. riskName = data.getDictTag();
  765. }
  766. }
  767. costsVo.setRiskName(riskName);
  768. //然后根据协议ID 查询所有已配置费用的产品进行赋值
  769. if (agreementId != null && !"".equals(agreementId)) {
  770. //使用协议ID 产品ID 获取已经配置好的信息
  771. PtlAgreementNonCarProductCosts agreementNonCarProductCosts =
  772. ptlAgreementNonCarProductCostsService.getNonCarProductCostsInfo(agreementId,
  773. tempProductDto.getProductCode());
  774. //赋值已配置的费用比例
  775. if (agreementNonCarProductCosts != null) {
  776. costsVo.setCostsProportion(agreementNonCarProductCosts.getCostsProportion());
  777. }
  778. }
  779. result.add(costsVo);
  780. }
  781. }
  782. } else {
  783. //如果归属保司没选,则直接返回空列表,相当于没查到对应非车产品信息
  784. }
  785. return HttpResult.ok(result);
  786. }
  787. @Override
  788. public HttpResult<List<PtlAgreement>> findRelationAgreement(String companyId) {
  789. List<PtlAgreement> resultList = new ArrayList<>();
  790. if (companyId != null && !"".equals(companyId)) {
  791. //先获取相关保险公司列表
  792. List<String> companyIdList = esmInsCompanyService.getAllRelationCompanyId(companyId);
  793. if (companyIdList != null && companyIdList.size() > 0) {
  794. for (int i = 0; i < companyIdList.size(); i++) {
  795. String tempCom = companyIdList.get(i);
  796. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  797. wrapper.eq(PtlAgreement::getValidStatus, "1");
  798. wrapper.and(wq1 -> wq1.eq(PtlAgreement::getPartnerCompaniesId, tempCom).or(wq2 -> wq2.eq(PtlAgreement::getAssociationCompaniesId, tempCom)));
  799. resultList.addAll(list(wrapper));
  800. }
  801. for (int j = 0; j < resultList.size(); j++) {
  802. PtlAgreement agreement = resultList.get(j);
  803. String tempCompanyId =
  804. agreement.getAssociationCompaniesId() != null && !"".equals(agreement.getAssociationCompaniesId()) ?
  805. agreement.getAssociationCompaniesId() : agreement.getPartnerCompaniesId();
  806. EsmInsCompany tempCompany = esmInsCompanyService.getById(tempCompanyId);
  807. agreement.setInsuranceCompany(tempCompany.getName());
  808. }
  809. }
  810. }
  811. return HttpResult.ok(resultList);
  812. }
  813. /**
  814. * @version
  815. * @author: hxl
  816. * @Date: 2024/4/15 18:02
  817. * @Description: 查询审核的协议
  818. */
  819. public List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement) {
  820. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  821. // wrapper.eq(PtlAgreement::getAuditStatus,"1");
  822. //添加协议编码排序
  823. wrapper.orderByAsc(PtlAgreement::getAgreementCode);
  824. List<PtlAgreement> list = proxyObject.list(wrapper);
  825. return list;
  826. }
  827. /**
  828. * @version
  829. * @author: whp
  830. * @Date: 2024/07/23
  831. * @Description: 查询审核的所有协议 协议名称拼接
  832. */
  833. public List<PtlAgreement> findCheckAgreementListNew(PtlAgreement ptlAgreement) {
  834. List<PtlAgreement> list = baseMapper.findCheckAgreementListNew(ptlAgreement);
  835. return list;
  836. }
  837. // @Autowired
  838. // private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
  839. public List<PtlAgreement> getCurrentAgreementList(String agreementId) {
  840. PtlAgreement ptlAgreement = this.getById(agreementId);
  841. String insuranceCompanyId = ptlAgreement.getInsuranceCompanyId();
  842. List<PtlAgreement> ptlAgreements =
  843. baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getInsuranceCompanyId, insuranceCompanyId));
  844. return ptlAgreements;
  845. }
  846. @Override
  847. public PtlAgreement getByAgreementIdNew(String agreementId) {
  848. PtlAgreement ptlAgreement = baseMapper.getByAgreementIdNew(agreementId);
  849. return ptlAgreement;
  850. }
  851. @Override
  852. public List<PtlAgreement> getByCompanyCode(String companyCode) {
  853. return baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getInsuranceCompanyId, companyCode));
  854. }
  855. @Override
  856. public List<HashMap<String, Object>> getDockingPersonList() {
  857. return baseMapper.getDockingPersonList();
  858. }
  859. @Override
  860. public PtlAgreement selectAgreeId(HashMap<String, Object> params) {
  861. return baseMapper.selectAgreeId(params);
  862. }
  863. @Override
  864. public List<PtlAgreementInsCompanyDto> getExternalAgreement() {
  865. LocalDate localDate = LocalDate.now();
  866. List<PtlAgreement> list = this.list(new LambdaQueryWrapper<PtlAgreement>()
  867. .eq(PtlAgreement::getIsExternal, "1")
  868. .eq(PtlAgreement::getValidStatus, "1"));
  869. List<String> agreementCompanys = list.stream().map(PtlAgreement::getInsuranceCompanyId).collect(Collectors.toList());
  870. List<EsmInsCompany> companyList = esmInsCompanyService.list(new LambdaQueryWrapper<EsmInsCompany>().in(EsmInsCompany::getId, agreementCompanys));
  871. List<PtlAgreementInsCompanyDto> result = new ArrayList<>();
  872. companyList.forEach(item -> {
  873. PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto = new PtlAgreementInsCompanyDto();
  874. ptlAgreementInsCompanyDto.setId(item.getId());
  875. ptlAgreementInsCompanyDto.setCnName(item.getCnName());
  876. ptlAgreementInsCompanyDto.setLogo(item.getLogo());
  877. ptlAgreementInsCompanyDto.setName(item.getName());
  878. ptlAgreementInsCompanyDto.setNamesimple(item.getNamesimple());
  879. List<PtlAgreement> collect = list.stream().filter(x -> x.getInsuranceCompanyId().equals(item.getId())).collect(Collectors.toList());
  880. List<PtlAgreementDto> agreementDtos = new ArrayList<>();
  881. collect.forEach(x -> {
  882. PtlAgreementDto ptlAgreementDto = new PtlAgreementDto();
  883. BeanUtils.copyProperties(x, ptlAgreementDto);
  884. agreementDtos.add(ptlAgreementDto);
  885. });
  886. ptlAgreementInsCompanyDto.setAgreement(agreementDtos);
  887. result.add(ptlAgreementInsCompanyDto);
  888. });
  889. return result;
  890. }
  891. @Override
  892. public List<PtlAgreement> getAllAgreement(String agreementId) {
  893. PtlAgreement ptlAgreement = getById(agreementId);
  894. return baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>()
  895. .eq(PtlAgreement::getInsuranceCompanyId, ptlAgreement.getInsuranceCompanyId()));
  896. }
  897. @Override
  898. public HttpResult getAgreementCopy(PtlAgreementVo ptlAgreementVo) {
  899. PtlAgreement ptlAgreement = baseMapper.selectById(ptlAgreementVo.getId());
  900. PtlAgreement newPtlAgreement = new PtlAgreement();
  901. BeanUtils.copyProperties(ptlAgreement, newPtlAgreement, "id", "agreementCode");
  902. newPtlAgreement.setPartnerCompaniesId(ptlAgreement.getPartnerCompaniesId());
  903. newPtlAgreement.generateTheProtocolCode();
  904. save(newPtlAgreement);
  905. PtlAgreementTrajectory ptlAgreementTrajectory = new PtlAgreementTrajectory();
  906. ptlAgreementTrajectory.setId(IdGenerate.nextId());
  907. ptlAgreementTrajectory.setAgreementId(newPtlAgreement.getId());
  908. ptlAgreementTrajectory.setReadme("添加协议");
  909. ptlAgreementTrajectory.setCreateTime(LocalDateTime.now());
  910. ptlAgreementTrajectory.setCreateBy(BaseController.getUserId());
  911. ptlAgreementTrajectoryService.save(ptlAgreementTrajectory);
  912. return HttpResult.ok("协议复制成功");
  913. }
  914. }