PtlAgreementServiceImpl.java 67 KB

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