PtlAgreementServiceImpl.java 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056
  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. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getDockingPerson()), PtlAgreement::getDockingPerson,
  430. ptlAgreementPageVo.getDockingPerson());
  431. // 录入时间
  432. if (!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())) {
  433. LocalDateTime startDateTime = ptlAgreementPageVo.getStartDate().atTime(LocalTime.MIN);
  434. LocalDateTime endDateTime = ptlAgreementPageVo.getEndDate().atTime(LocalTime.MAX);
  435. wrapper.between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, startDateTime, endDateTime);
  436. }
  437. // 修改时间
  438. if (!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime())) {
  439. LocalDateTime startDateTime = ptlAgreementPageVo.getUpdateStarTime().atTime(LocalTime.MIN);
  440. LocalDateTime endDateTime = ptlAgreementPageVo.getUpdateEndTime().atTime(LocalTime.MAX);
  441. wrapper.between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateStarTime()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getUpdateEndTime()), PtlAgreement::getUpdateTime, startDateTime, endDateTime);
  442. }
  443. // 省市县
  444. if (ptlAgreementPageVo.getAreaCode() != null && !"".equals(ptlAgreementPageVo.getAreaCode()) && ptlAgreementPageVo.getLevel() != null) {
  445. String area = ptlAgreementPageVo.getAreaCode();
  446. String prefix = null;
  447. Integer sign = 0;
  448. switch (ptlAgreementPageVo.getLevel()) {
  449. case "1": { // 省级查询逻辑
  450. sign = 2;
  451. prefix = area.substring(0, 2);
  452. break;
  453. }
  454. case "2": { // 市级查询逻辑
  455. sign = 4;
  456. prefix = area.substring(0, 4);
  457. break;
  458. }
  459. case "3": { // 区县级查询逻辑
  460. sign = 6;
  461. prefix = area.substring(0, 6);
  462. break;
  463. }
  464. }
  465. wrapper.apply("SUBSTRING(partner_companies_id, 6, " + sign + ") =" + prefix);
  466. }
  467. Page<PtlAgreement> agreementPage = page(page, wrapper);
  468. agreementPage.getRecords().forEach(agreement -> {
  469. LocalDate startDate = agreement.getStartDate();
  470. LocalDate endDate = agreement.getEndDate();
  471. LocalDate now = LocalDate.now();
  472. //更新是否有效
  473. if (now.isEqual(startDate) || (now.isAfter(startDate) && now.isBefore(endDate))) {
  474. agreement.setIsValid("1");
  475. } else {
  476. agreement.setIsValid("0");
  477. }
  478. });
  479. return agreementPage;
  480. }
  481. @Override
  482. public HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo) {
  483. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  484. if (!ObjectUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId())){
  485. // 获取供应商本级id 及其 下级id
  486. List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
  487. wrapper.in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(),
  488. PtlAgreement::getPartnerCompaniesId, lowerId);
  489. }
  490. // 审核状态
  491. wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus,
  492. ptlAgreementPageVo.getAuditStatus())
  493. //是否有效
  494. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus,
  495. ptlAgreementPageVo.getValidStatus())
  496. // 供应商类型
  497. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType,
  498. ptlAgreementPageVo.getCompaniesType())
  499. // 录入时间
  500. .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())
  501. , PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate())
  502. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getIsExternal()),PtlAgreement::getIsExternal,
  503. ptlAgreementPageVo.getIsExternal())
  504. ;
  505. List<PtlAgreement> agreementPage = list(wrapper);
  506. return HttpResult.ok(agreementPage);
  507. }
  508. @Override
  509. public HttpResult<List<PtlAgreement>> listAgreementInternal(PtlAgreementPageVo ptlAgreementPageVo) {
  510. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  511. // 获取供应商本级id 及其 下级id
  512. List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
  513. // 审核状态
  514. wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus,
  515. ptlAgreementPageVo.getAuditStatus())
  516. //是否有效
  517. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus,
  518. ptlAgreementPageVo.getValidStatus())
  519. .eq(PtlAgreement::getIsExternal, "0")
  520. // 供应商类型
  521. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType,
  522. ptlAgreementPageVo.getCompaniesType())
  523. // 合作公司
  524. .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(),
  525. PtlAgreement::getPartnerCompaniesId, lowerId)
  526. // 录入时间
  527. .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate())
  528. , PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
  529. List<PtlAgreement> agreementPage = list(wrapper);
  530. return HttpResult.ok(agreementPage);
  531. }
  532. @Override
  533. public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
  534. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  535. // // 获取产品费用
  536. // List<PltAgreementSchemeSaveDto> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(agreementId);
  537. // // 获取非车险产品费用
  538. // List<PtlAgreementNonCarProductCosts> nonCarProductCosts = ptlAgreementNonCarProductCostsService.getByAgreementId(agreementId);
  539. // // 获取承保规则
  540. // List<PtlAgreementUndwrtRulesSaveDto> underwritingRules = ptlAgreementUndwrtRulesService.getByAgreementId(agreementId);
  541. // 账号信息查询
  542. PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
  543. //2023-08-28 lig 增加 解决前端空对象为null问题,改为返回为空对象
  544. if (null == ptlAgreementAttribution) {
  545. ptlAgreementAttribution = new PtlAgreementAttribution();
  546. ptlAgreementAttribution.setId("");
  547. ptlAgreementAttribution.setInsCompanyId("");
  548. ptlAgreementAttribution.setInsCompanyName("");
  549. ptlAgreementAttribution.setTemplateId("");
  550. ptlAgreementAttribution.setApiType(1);
  551. ptlAgreementAttribution.setFields(new JSONArray());
  552. ptlAgreementAttribution.setUsername("");
  553. ptlAgreementAttribution.setPassword("");
  554. }
  555. // 授权查询
  556. List<PtlAgreementDept> deptList = ptlAgreementDeptService.getByAgreementId(agreementId);
  557. PtlAgreementQueryVo ptlAgreementQueryVo = new PtlAgreementQueryVo(ptlAgreement, ptlAgreementAttribution, deptList);
  558. return HttpResult.ok(ptlAgreementQueryVo);
  559. }
  560. @Override
  561. @Transactional
  562. public HttpResult<Object> deleteAgreement(String agreementId, String userName) {
  563. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  564. HttpResult<PtlAgreementQueryVo> byAgreementId = getByAgreementId(agreementId);
  565. boolean b = removeById(agreementId);
  566. AssertionUtils.isSucceed(b, "协议信息删除失败");
  567. // 删除协议后按序号重新排序
  568. List<PtlAgreement> updateList = new ArrayList<>();
  569. List<PtlAgreement> list = ptlAgreementMapper.selectList(new QueryWrapper<PtlAgreement>()
  570. .ge("serial_number", ptlAgreement.getSerialNumber())
  571. .ne("id", agreementId)
  572. .eq("is_external", ptlAgreement.getIsExternal()));
  573. if (list != null && !list.isEmpty()) {
  574. int newSerialNumber = ptlAgreement.getSerialNumber(); // 被删除协议的序列号
  575. for (PtlAgreement ptlAgreement1 : list) {
  576. // 对于每一个协议,如果其序列号大于等于被删除协议的序列号,则递增
  577. if (ptlAgreement1.getSerialNumber() >= ptlAgreement.getSerialNumber()) {
  578. ptlAgreement1.setSerialNumber(newSerialNumber++);
  579. }
  580. updateList.add(ptlAgreement1);
  581. }
  582. proxyObject.updateBatchById(updateList);
  583. }
  584. // 关联表删除
  585. proxyObject.deleteAssociationInformation(agreementId);
  586. // 添加 历史记录表
  587. //生成批次号
  588. String batchNo = IdGenerate.nextId();
  589. List<PtlAgreementDept> dept = byAgreementId.getData().getDept();
  590. ArrayList<PtlAgreementDeptHistory> histories = new ArrayList<>();
  591. for (PtlAgreementDept ptlAgreementDept : dept) {
  592. PtlAgreementDeptHistory deptHistory = new PtlAgreementDeptHistory();
  593. deptHistory.setAgreementId(ptlAgreementDept.getAgreementId());
  594. deptHistory.setDeptId(ptlAgreementDept.getDeptId());
  595. deptHistory.setBatch(batchNo);
  596. }
  597. ptlAgreementDeptHistoryService.saveBatch(histories);
  598. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD,
  599. byAgreementId.getData().getAgreement());
  600. ptlAgreementHistory.setStartDate(byAgreementId.getData().getAgreement().getStartDate().format(DateTimeFormatter.ofPattern("yyyy" +
  601. "-MM-dd")));
  602. ptlAgreementHistory.setEndDate(byAgreementId.getData().getAgreement().getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"
  603. )));
  604. ptlAgreementHistory.setAgreementId(ptlAgreementHistory.getId());
  605. ptlAgreementHistory.setId(IdGenerate.nextId());
  606. ptlAgreementHistory.setOperatorType("delete");
  607. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  608. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo, agreementId,
  609. byAgreementId.getData().getAgreement().getInsuranceCompanyId(),
  610. byAgreementId.getData().getAgreement().getInsuranceCompany(),
  611. byAgreementId.getData().getPtlAgreementAttribution()
  612. );
  613. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  614. if (StringUtils.isNotEmpty(ptlAgreementAttributionHistory.getTemplateId())) {
  615. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  616. }
  617. return HttpResult.ok("删除成功");
  618. }
  619. @Override
  620. @Transactional
  621. public HttpResult<Object> reviseAgreement(String userName, String agreementId, PtlAgreementSaveVo agreement) {
  622. PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
  623. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  624. attribution.setCheck(pythonCheck);
  625. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  626. BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
  627. EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution,
  628. "1".equals(ptlAgreement.getValidStatus()));
  629. ptlAgreement.setIsExternal(agreementSaveDto.getIsExternal());
  630. ptlAgreement.setProductsCode(agreementSaveDto.getProductsCode());
  631. ptlAgreement.setModifiedBy(userName);
  632. ptlAgreement.setModifiedName(BaseController.getUser().getName());
  633. ptlAgreement.setUpdateTime(LocalDateTime.now());
  634. //add by hxl 2024-06-12 修改协议改为可以更新null的判断
  635. boolean b = ptlAgreementMapper.updateWithNull(ptlAgreement);
  636. // 修改协议序号
  637. List<PtlAgreement> updateList = new ArrayList<>();
  638. List<PtlAgreement> list = ptlAgreementMapper.selectList(new QueryWrapper<PtlAgreement>()
  639. .ge("serial_number", ptlAgreement.getSerialNumber())
  640. .ne("id", agreementId)
  641. .eq("is_external", ptlAgreement.getIsExternal()));
  642. if (list != null && list.size() > 0) {
  643. int newSerialNumber = ptlAgreement.getSerialNumber();
  644. for (PtlAgreement ptlAgreement1 : list) {
  645. ptlAgreement1.setSerialNumber(++newSerialNumber);
  646. updateList.add(ptlAgreement1);
  647. }
  648. proxyObject.updateBatchById(updateList);
  649. }
  650. // 修改协议
  651. //boolean b = updateById(ptlAgreement);
  652. AssertionUtils.isSucceed(b, "协议信息修改失败");
  653. //添加协议修改轨迹
  654. PtlAgreementTrajectory ptlAgreementTrajectory = new PtlAgreementTrajectory();
  655. ptlAgreementTrajectory.setId(IdGenerate.nextId());
  656. ptlAgreementTrajectory.setAgreementId(agreementId);
  657. ptlAgreementTrajectory.setReadme("修改协议");
  658. ptlAgreementTrajectory.setCreateTime(LocalDateTime.now());
  659. ptlAgreementTrajectory.setCreateBy(userName);
  660. ptlAgreementTrajectoryService.save(ptlAgreementTrajectory);
  661. // 关联表都是先删除后添加
  662. proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
  663. // 提交 账号信息 授权部门
  664. proxyObject.saveAssociationInformation(agreementId, esmInsCompany, agreement);
  665. // 添加 历史记录表
  666. //生成批次号
  667. String batchNo = IdGenerate.nextId();
  668. //添加授权部门历史信息
  669. List<String> dept = agreement.getDept();
  670. List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(ptlAgreement.getId(),
  671. dept, batchNo);
  672. ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
  673. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo, userName, HistoryStatusConstants.HISTORY_TYPE_ADD,
  674. ptlAgreement);
  675. ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  676. ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  677. ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
  678. ptlAgreementHistory.setId(IdGenerate.nextId());
  679. ptlAgreementHistory.setOperatorType("update");
  680. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  681. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo, ptlAgreement.getId(),
  682. esmInsCompany.getId(), esmInsCompany.getName(), agreement.getAttribution());
  683. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  684. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  685. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  686. }
  687. return HttpResult.ok("修改成功");
  688. }
  689. @Override
  690. public void saveAssociationInformation(String agreementId, EsmInsCompany esmInsCompany, PtlAgreementSaveVo agreement) {
  691. // 账号添加
  692. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  693. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  694. ptlAgreementAttributionService.saveAttribution(agreementId, esmInsCompany, agreement.getAttribution());
  695. }
  696. // 部门授权
  697. ptlAgreementDeptService.saveBatchDept(agreementId, agreement.getDept());
  698. }
  699. @Override
  700. public void deleteAssociationInformation(String agreementId) {
  701. // 删除产品费用
  702. ptlAgreementProductCostsService.deleteByAgreementId(agreementId);
  703. // 删除关联信息 删除非车险产品费用 承保规则 账号信息 授权部门
  704. proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
  705. }
  706. @Override
  707. public void deleteAssociationInformationExcludeCosts(String agreementId) {
  708. // 删除非车险产品费用
  709. ptlAgreementNonCarProductCostsService.deleteByAgreementId(agreementId);
  710. // 删除承保规则
  711. ptlAgreementUndwrtRulesService.deleteByAgreementId(agreementId);
  712. // 删除账号信息
  713. ptlAgreementAttributionService.removeById(agreementId);
  714. // 删除授权部门
  715. ptlAgreementDeptService.deleteByAgreementId(agreementId);
  716. }
  717. @Override
  718. public EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto,
  719. PtlAgreementAttributionDto attribution, boolean verificationLogin) {
  720. EsmInsCompany esmInsCompany;
  721. esmInsCompany = esmInsCompanyService.getBySubsidiary(agreementSaveDto.getPartnerCompaniesId());
  722. // 验证用户名密码 python api 对接需要验证用户名
  723. if (!ObjectUtils.isEmpty(attribution.getApiType()) && PtlApiType.PTL_API_2.getCode() == attribution.getApiType() && verificationLogin) {
  724. String nameSimple = esmInsCompany.getNamesimple();
  725. String id = esmInsCompany.getId();
  726. insCrawlerOrderController.isLogin(attribution, id, nameSimple);
  727. }
  728. ptlAgreement.setCompaniesType(esmInsCompany.getType());
  729. ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());
  730. ptlAgreement.setInsuranceCompany(esmInsCompany.getNamesimple());
  731. // 生成协议id
  732. ptlAgreement.generateTheProtocolCode();
  733. return esmInsCompany;
  734. }
  735. @Override
  736. public HttpResult<Object> auditAgreement(String agreementId, PtlAgreementAuditVo ptlAgreementAuditVo) {
  737. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  738. ptlAgreement.setAuditStatus(ptlAgreementAuditVo.getAuditStatus());
  739. ptlAgreement.setAuditContent(ptlAgreementAuditVo.getAuditContent());
  740. // 修改协议
  741. boolean b = updateById(ptlAgreement);
  742. AssertionUtils.isSucceed(b, "协议信息修改失败");
  743. return HttpResult.ok("修改成功");
  744. }
  745. @Override
  746. public HttpResult<List<PtlAgreementNonCarProductCostsVo>> getNonCarCostsInfo(String agreementId, String companyId) {
  747. List<PtlAgreementNonCarProductCostsVo> result = new ArrayList<>();
  748. //先根据传过来的保险公司代码,找上下级所有机构层级对应的非车产品列表
  749. if (companyId != null && !"".equals(companyId)) {
  750. //先获取相关保险公司列表
  751. List<String> companyIdList = esmInsCompanyService.getAllRelationCompanyId(companyId);
  752. //再根据保险公司列表获取所有非车产品列表
  753. List<PtlNonCarInsuranceProduct> productList = ptlNonCarInsuranceProductService.findProductListByCompangIds(companyIdList);
  754. if (productList != null && productList.size() > 0) {
  755. for (int i = 0; i < productList.size(); i++) {
  756. PtlNonCarInsuranceProduct tempProductDto = productList.get(i);
  757. PtlAgreementNonCarProductCostsVo costsVo = new PtlAgreementNonCarProductCostsVo();
  758. costsVo.setProductId(tempProductDto.getProductCode());
  759. costsVo.setProductName(tempProductDto.getProductName());
  760. costsVo.setCompanyId(tempProductDto.getCompanyId());
  761. EsmInsCompany tempInsCompany = esmInsCompanyService.getById(tempProductDto.getCompanyId());
  762. costsVo.setCompanyName(tempInsCompany.getName());
  763. costsVo.setRiskCode(tempProductDto.getInsuranceCode());
  764. Map<String, DictionaryManagement> m = DictEnumConfig.getDmMap();
  765. DictionaryManagement dictionaryManagement = m.get("nonCarInsuranceCode");
  766. String riskName = "";
  767. for (DictionaryData data : dictionaryManagement.getDdList()) {
  768. if (tempProductDto.getInsuranceCode().equals(data.getDictValue())) {
  769. riskName = data.getDictTag();
  770. }
  771. }
  772. costsVo.setRiskName(riskName);
  773. //然后根据协议ID 查询所有已配置费用的产品进行赋值
  774. if (agreementId != null && !"".equals(agreementId)) {
  775. //使用协议ID 产品ID 获取已经配置好的信息
  776. PtlAgreementNonCarProductCosts agreementNonCarProductCosts =
  777. ptlAgreementNonCarProductCostsService.getNonCarProductCostsInfo(agreementId,
  778. tempProductDto.getProductCode());
  779. //赋值已配置的费用比例
  780. if (agreementNonCarProductCosts != null) {
  781. costsVo.setCostsProportion(agreementNonCarProductCosts.getCostsProportion());
  782. }
  783. }
  784. result.add(costsVo);
  785. }
  786. }
  787. } else {
  788. //如果归属保司没选,则直接返回空列表,相当于没查到对应非车产品信息
  789. }
  790. return HttpResult.ok(result);
  791. }
  792. @Override
  793. public HttpResult<List<PtlAgreement>> findRelationAgreement(String companyId) {
  794. List<PtlAgreement> resultList = new ArrayList<>();
  795. if (companyId != null && !"".equals(companyId)) {
  796. //先获取相关保险公司列表
  797. List<String> companyIdList = esmInsCompanyService.getAllRelationCompanyId(companyId);
  798. if (companyIdList != null && companyIdList.size() > 0) {
  799. for (int i = 0; i < companyIdList.size(); i++) {
  800. String tempCom = companyIdList.get(i);
  801. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  802. wrapper.eq(PtlAgreement::getValidStatus, "1");
  803. wrapper.and(wq1 -> wq1.eq(PtlAgreement::getPartnerCompaniesId, tempCom).or(wq2 -> wq2.eq(PtlAgreement::getAssociationCompaniesId, tempCom)));
  804. resultList.addAll(list(wrapper));
  805. }
  806. for (int j = 0; j < resultList.size(); j++) {
  807. PtlAgreement agreement = resultList.get(j);
  808. String tempCompanyId =
  809. agreement.getAssociationCompaniesId() != null && !"".equals(agreement.getAssociationCompaniesId()) ?
  810. agreement.getAssociationCompaniesId() : agreement.getPartnerCompaniesId();
  811. EsmInsCompany tempCompany = esmInsCompanyService.getById(tempCompanyId);
  812. agreement.setInsuranceCompany(tempCompany.getName());
  813. }
  814. }
  815. }
  816. return HttpResult.ok(resultList);
  817. }
  818. /**
  819. * @version
  820. * @author: hxl
  821. * @Date: 2024/4/15 18:02
  822. * @Description: 查询审核的协议
  823. */
  824. public List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement) {
  825. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  826. // wrapper.eq(PtlAgreement::getAuditStatus,"1");
  827. //添加协议编码排序
  828. wrapper.orderByAsc(PtlAgreement::getAgreementCode);
  829. List<PtlAgreement> list = proxyObject.list(wrapper);
  830. return list;
  831. }
  832. /**
  833. * @version
  834. * @author: whp
  835. * @Date: 2024/07/23
  836. * @Description: 查询审核的所有协议 协议名称拼接
  837. */
  838. public List<PtlAgreement> findCheckAgreementListNew(PtlAgreement ptlAgreement) {
  839. List<PtlAgreement> list = baseMapper.findCheckAgreementListNew(ptlAgreement);
  840. return list;
  841. }
  842. // @Autowired
  843. // private PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
  844. public List<PtlAgreement> getCurrentAgreementList(String agreementId) {
  845. PtlAgreement ptlAgreement = this.getById(agreementId);
  846. String insuranceCompanyId = ptlAgreement.getInsuranceCompanyId();
  847. List<PtlAgreement> ptlAgreements =
  848. baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getInsuranceCompanyId, insuranceCompanyId));
  849. return ptlAgreements;
  850. }
  851. @Override
  852. public PtlAgreement getByAgreementIdNew(String agreementId) {
  853. PtlAgreement ptlAgreement = baseMapper.getByAgreementIdNew(agreementId);
  854. return ptlAgreement;
  855. }
  856. @Override
  857. public List<PtlAgreement> getByCompanyCode(String companyCode) {
  858. return baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getInsuranceCompanyId, companyCode));
  859. }
  860. @Override
  861. public List<HashMap<String, Object>> getDockingPersonList() {
  862. return baseMapper.getDockingPersonList();
  863. }
  864. @Override
  865. public PtlAgreement selectAgreeId(HashMap<String, Object> params) {
  866. return baseMapper.selectAgreeId(params);
  867. }
  868. @Override
  869. public List<PtlAgreementInsCompanyDto> getExternalAgreement() {
  870. LocalDate localDate = LocalDate.now();
  871. List<PtlAgreement> list = this.list(new LambdaQueryWrapper<PtlAgreement>()
  872. .eq(PtlAgreement::getIsExternal, "1")
  873. .eq(PtlAgreement::getValidStatus, "1"));
  874. List<String> agreementCompanys = list.stream().map(PtlAgreement::getInsuranceCompanyId).collect(Collectors.toList());
  875. List<EsmInsCompany> companyList = esmInsCompanyService.list(new LambdaQueryWrapper<EsmInsCompany>().in(EsmInsCompany::getId, agreementCompanys));
  876. List<PtlAgreementInsCompanyDto> result = new ArrayList<>();
  877. companyList.forEach(item -> {
  878. PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto = new PtlAgreementInsCompanyDto();
  879. ptlAgreementInsCompanyDto.setId(item.getId());
  880. ptlAgreementInsCompanyDto.setCnName(item.getCnName());
  881. ptlAgreementInsCompanyDto.setLogo(item.getLogo());
  882. ptlAgreementInsCompanyDto.setName(item.getName());
  883. ptlAgreementInsCompanyDto.setNamesimple(item.getNamesimple());
  884. List<PtlAgreement> collect = list.stream().filter(x -> x.getInsuranceCompanyId().equals(item.getId())).collect(Collectors.toList());
  885. List<PtlAgreementDto> agreementDtos = new ArrayList<>();
  886. collect.forEach(x -> {
  887. PtlAgreementDto ptlAgreementDto = new PtlAgreementDto();
  888. BeanUtils.copyProperties(x, ptlAgreementDto);
  889. agreementDtos.add(ptlAgreementDto);
  890. });
  891. ptlAgreementInsCompanyDto.setAgreement(agreementDtos);
  892. result.add(ptlAgreementInsCompanyDto);
  893. });
  894. return result;
  895. }
  896. @Override
  897. public List<PtlAgreement> getAllAgreement(String agreementId) {
  898. PtlAgreement ptlAgreement = getById(agreementId);
  899. return baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>()
  900. .eq(PtlAgreement::getInsuranceCompanyId, ptlAgreement.getInsuranceCompanyId()));
  901. }
  902. @Override
  903. public HttpResult getAgreementCopy(PtlAgreementVo ptlAgreementVo) {
  904. PtlAgreement ptlAgreement = baseMapper.selectById(ptlAgreementVo.getId());
  905. PtlAgreement newPtlAgreement = new PtlAgreement();
  906. BeanUtils.copyProperties(ptlAgreement, newPtlAgreement, "id", "agreementCode");
  907. newPtlAgreement.setPartnerCompaniesId(ptlAgreement.getPartnerCompaniesId());
  908. newPtlAgreement.generateTheProtocolCode();
  909. save(newPtlAgreement);
  910. PtlAgreementAttribution ptlAgreementAttributionOld = ptlAgreementAttributionService.getById(ptlAgreementVo.getId());
  911. // 复制账号配置
  912. PtlAgreementAttribution ptlAgreementAttributionNew = new PtlAgreementAttribution();
  913. BeanUtils.copyProperties(ptlAgreementAttributionOld, ptlAgreementAttributionNew, "id");
  914. ptlAgreementAttributionNew.setId(newPtlAgreement.getId());
  915. ptlAgreementAttributionService.save(ptlAgreementAttributionNew);
  916. EsmInsCompany esmInsCompany = esmInsCompanyService.getById(newPtlAgreement.getInsuranceCompanyId());
  917. // 添加账号配置记录
  918. String batchNo = IdGenerate.nextId();
  919. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory();
  920. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  921. ptlAgreementAttributionHistory.setBatch(batchNo);
  922. ptlAgreementAttributionHistory.setInsCompanyId(newPtlAgreement.getInsuranceCompanyId());
  923. ptlAgreementAttributionHistory.setInsCompanyName(esmInsCompany.getName());
  924. ptlAgreementAttributionHistory.setFields(ptlAgreementAttributionNew.getFields());
  925. ptlAgreementAttributionHistory.setTemplateId(ptlAgreementAttributionNew.getTemplateId());
  926. ptlAgreementAttributionHistory.setApiType(ptlAgreementAttributionNew.getApiType());
  927. ptlAgreementAttributionHistory.setUsername(ptlAgreementAttributionNew.getUsername());
  928. ptlAgreementAttributionHistory.setPassword(ptlAgreementAttributionNew.getPassword());
  929. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  930. // 复制授权部门
  931. List<PtlAgreementDept> ptlAgreementDept = ptlAgreementDeptService.list(new LambdaQueryWrapper<PtlAgreementDept>().eq(PtlAgreementDept::getAgreementId, ptlAgreement.getId()));
  932. List<String> deptIds = ptlAgreementDept.stream().map(PtlAgreementDept::getDeptId).collect(Collectors.toList());
  933. ptlAgreementDeptService.saveBatchDept(newPtlAgreement.getId(),deptIds);
  934. // 添加授权部门记录
  935. List<PtlAgreementDeptHistory> ptlAgreementDeptList = PtlAgreementDeptHistory.toPtlAgreementDeptHistoryList(newPtlAgreement.getId(),
  936. deptIds, batchNo);
  937. ptlAgreementDeptHistoryService.saveBatch(ptlAgreementDeptList);
  938. // 添加协议轨迹
  939. PtlAgreementTrajectory ptlAgreementTrajectory = new PtlAgreementTrajectory();
  940. ptlAgreementTrajectory.setId(IdGenerate.nextId());
  941. ptlAgreementTrajectory.setAgreementId(newPtlAgreement.getId());
  942. ptlAgreementTrajectory.setReadme("添加协议");
  943. ptlAgreementTrajectory.setCreateTime(LocalDateTime.now());
  944. ptlAgreementTrajectory.setCreateBy(BaseController.getUserId());
  945. ptlAgreementTrajectoryService.save(ptlAgreementTrajectory);
  946. return HttpResult.ok("协议复制成功");
  947. }
  948. /**
  949. * @version
  950. * @author: hxl
  951. * @Date: 2024/9/21 15:33
  952. * @Description: 通过协议名称查询数据
  953. */
  954. @Override
  955. public PtlAgreement getByAgreementTitle(String title) {
  956. LambdaQueryWrapper<PtlAgreement> lqw = new LambdaQueryWrapper<>();
  957. lqw.eq(PtlAgreement::getAgreementTitle, title);
  958. List<PtlAgreement> list = list(lqw);
  959. if (null != list && !list.isEmpty()) {
  960. return list.get(0);
  961. }
  962. return null;
  963. }
  964. }