PtlAgreementServiceImpl.java 57 KB

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