PtlAgreementServiceImpl.java 64 KB

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