PtlAgreementServiceImpl.java 54 KB

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