PtlAgreementServiceImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594
  1. package com.ydtech.modules.protocol.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.ydtech.config.DictEnumConfig;
  9. import com.ydtech.constants.enums.dict.DictionaryData;
  10. import com.ydtech.constants.enums.dict.DictionaryManagement;
  11. import com.ydtech.constants.enums.dict.agreement.AgreementType;
  12. import com.ydtech.constants.enums.dict.agreement.ProductsType;
  13. import com.ydtech.core.page.HttpResult;
  14. import com.ydtech.core.page.PageResult;
  15. import com.ydtech.exception.SystemException;
  16. import com.ydtech.modules.esm.model.EsmInsCompany;
  17. import com.ydtech.modules.esm.service.EsmInsCompanyService;
  18. import com.ydtech.modules.order.service.InsCrawlerOrderService;
  19. import com.ydtech.modules.protocol.constants.HistoryStatusConstants;
  20. import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
  21. import com.ydtech.modules.protocol.entity.constants.PtlApiType;
  22. import com.ydtech.modules.protocol.entity.dto.*;
  23. import com.ydtech.modules.protocol.entity.dto.history.PtlAgreementUndwrtRulesHistory;
  24. import com.ydtech.modules.protocol.entity.po.*;
  25. import com.ydtech.modules.protocol.entity.vo.*;
  26. import com.ydtech.modules.protocol.service.*;
  27. import com.ydtech.modules.protocol.utils.AssertionUtils;
  28. import com.ydtech.utils.idgen.IdGenerate;
  29. import org.apache.commons.lang3.ObjectUtils;
  30. import org.apache.commons.lang3.StringUtils;
  31. import org.springframework.beans.BeanUtils;
  32. import org.springframework.context.annotation.Lazy;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import java.time.LocalDate;
  36. import java.time.LocalDateTime;
  37. import java.time.format.DateTimeFormatter;
  38. import java.util.ArrayList;
  39. import java.util.Date;
  40. import java.util.List;
  41. import java.util.Map;
  42. import java.util.stream.Collectors;
  43. /**
  44. * @author wenks
  45. * @description 针对表【ptl_agreement(协议信息表)】的数据库操作Service实现
  46. * @createDate 2023-06-05 17:59:52
  47. */
  48. @Service
  49. public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, PtlAgreement> implements PtlAgreementService {
  50. private final PtlAgreementProductCostsService ptlAgreementProductCostsService;
  51. private final PtlAgreementAttributionService ptlAgreementAttributionService;
  52. private final PtlAgreementDeptService ptlAgreementDeptService;
  53. private final EsmInsCompanyService esmInsCompanyService;
  54. private final InsCrawlerOrderService insCrawlerOrderController;
  55. private final PtlAgreementService proxyObject;
  56. private final PtlAgreementHistoryService ptlAgreementHistoryService;
  57. private final PtlNonCarInsuranceProductService ptlNonCarInsuranceProductService;
  58. private final PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService;
  59. private final PtlAgreementUndwrtRulesService ptlAgreementUndwrtRulesService;
  60. private final PtlAgreementProductCostsHistoryService ptlAgreementProductCostsHistoryService;
  61. private final PtlAgreementUndwrtRulesHistoryService ptlAgreementUndwrtRulesHistoryService;
  62. private final PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService;
  63. public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService,
  64. PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService,
  65. EsmInsCompanyService esmInsCompanyService, PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService,
  66. @Lazy InsCrawlerOrderService insCrawlerOrderController, @Lazy PtlAgreementService proxyObject,PtlNonCarInsuranceProductService ptlNonCarInsuranceProductService,@Lazy PtlAgreementUndwrtRulesService ptlAgreementUndwrtRulesService,
  67. PtlAgreementHistoryService ptlAgreementHistoryService,PtlAgreementProductCostsHistoryService ptlAgreementProductCostsHistoryService,
  68. PtlAgreementUndwrtRulesHistoryService ptlAgreementUndwrtRulesHistoryService,PtlAgreementAttributionHistoryService ptlAgreementAttributionHistoryService) {
  69. this.ptlAgreementProductCostsService = ptlAgreementProductCostsService;
  70. this.ptlAgreementAttributionService = ptlAgreementAttributionService;
  71. this.ptlAgreementDeptService = ptlAgreementDeptService;
  72. this.esmInsCompanyService = esmInsCompanyService;
  73. this.ptlAgreementNonCarProductCostsService = ptlAgreementNonCarProductCostsService;
  74. this.insCrawlerOrderController = insCrawlerOrderController;
  75. this.proxyObject = proxyObject;
  76. this.ptlNonCarInsuranceProductService=ptlNonCarInsuranceProductService;
  77. this.ptlAgreementUndwrtRulesService=ptlAgreementUndwrtRulesService;
  78. this.ptlAgreementHistoryService = ptlAgreementHistoryService;
  79. this.ptlAgreementProductCostsHistoryService = ptlAgreementProductCostsHistoryService;
  80. this.ptlAgreementUndwrtRulesHistoryService = ptlAgreementUndwrtRulesHistoryService;
  81. this.ptlAgreementAttributionHistoryService=ptlAgreementAttributionHistoryService;
  82. }
  83. @Override
  84. public List<PtlAgreementInsCompanyDto> getAgreementCompany(String deptId) {
  85. LocalDate localDate = LocalDate.now();
  86. List<PtlAgreementInsCompanyDto> agreementCompany = baseMapper.getAgreementCompany(localDate, deptId);
  87. List<String> agreementIdList = agreementCompany.stream()
  88. .flatMap(x -> x.getAgreement().stream().map(PtlAgreementDto::getId))
  89. .collect(Collectors.toList());
  90. /*Map<String, List<String>> licenseNoList = ptlAgreementUndwrtRulesService.getByLicenseNo(agreementIdList);
  91. agreementCompany.forEach(
  92. x -> x.getAgreement().forEach(a -> a.setLicenseNo(licenseNoList.get(a.getId())))
  93. );*/
  94. return agreementCompany;
  95. }
  96. @Override
  97. public PtlAgreementInsCompanyDto getAgreementCompany(String deptId,String companyId) {
  98. LocalDate localDate = LocalDate.now();
  99. PtlAgreementInsCompanyDto agreementCompany = baseMapper.getAgreementCompanyByCompanyId(localDate, deptId,companyId);
  100. return agreementCompany;
  101. }
  102. @Override
  103. public PtlAgreement ifExistsById(String agreementId) {
  104. PtlAgreement ptlAgreement = getById(agreementId);
  105. if (ObjectUtils.isEmpty(ptlAgreement)) {
  106. throw new SystemException("协议id 不存在");
  107. }
  108. return ptlAgreement;
  109. }
  110. @Override
  111. @Transactional
  112. public HttpResult<Object> saveAgreement(PtlAgreementSaveVo agreement, String userName) {
  113. PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
  114. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  115. PtlAgreement ptlAgreement = new PtlAgreement();
  116. BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
  117. EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
  118. // ptlAgreement.setId(IdGenerate.nextId());
  119. ptlAgreement.setCreator(userName);
  120. ptlAgreement.setCreateTime(LocalDateTime.now());
  121. save(ptlAgreement);
  122. // 提交 账号信息 授权部门
  123. proxyObject.saveAssociationInformation(ptlAgreement.getId(), esmInsCompany,agreement);
  124. // 添加 历史记录表
  125. //生成批次号
  126. String batchNo = IdGenerate.nextId();
  127. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
  128. ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  129. ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  130. ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
  131. ptlAgreementHistory.setId(IdGenerate.nextId());
  132. ptlAgreementHistory.setOperatorType("add");
  133. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  134. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo,ptlAgreement.getId(),esmInsCompany.getId(),esmInsCompany.getName(),agreement.getAttribution());
  135. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  136. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  137. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  138. }
  139. return HttpResult.ok("添加成功");
  140. }
  141. @Override
  142. @Transactional
  143. public HttpResult<Object> saveAgreementProduct(PtlAgreementProductCosts ptlAgreementProductCosts, String userName) {
  144. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId, ptlAgreementProductCosts.getAgreementId()));
  145. if(ptlAgreement==null){
  146. throw new SystemException("协议不存在");
  147. }
  148. ptlAgreement.setModifiedBy(userName);
  149. ptlAgreement.setUpdateTime(LocalDateTime.now());
  150. //更新协议信息
  151. baseMapper.updateById(ptlAgreement);
  152. // 产品费用
  153. ptlAgreementProductCostsService.save(ptlAgreementProductCosts);
  154. // 添加 历史记录表
  155. PtlAgreementProductCostsHistory history = new PtlAgreementProductCostsHistory(userName, DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"),
  156. HistoryStatusConstants.HISTORY_TYPE_UPDATE,ptlAgreementProductCosts);
  157. ptlAgreementProductCostsHistoryService.save(history);
  158. return HttpResult.ok("添加成功");
  159. }
  160. @Override
  161. public HttpResult<Object> updateAgreementProduct(PtlAgreementProductCosts agreement, String userName) {
  162. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId, agreement.getAgreementId()));
  163. if(ptlAgreement==null){
  164. throw new SystemException("协议不存在");
  165. }
  166. ptlAgreement.setModifiedBy(userName);
  167. ptlAgreement.setUpdateTime(LocalDateTime.now());
  168. //更新协议信息
  169. baseMapper.updateById(ptlAgreement);
  170. // 产品费用
  171. ptlAgreementProductCostsService.updateById(agreement);
  172. // 添加 历史记录表
  173. PtlAgreementProductCostsHistory history = new PtlAgreementProductCostsHistory(userName, DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"),
  174. HistoryStatusConstants.HISTORY_TYPE_UPDATE,agreement);
  175. ptlAgreementProductCostsHistoryService.save(history);
  176. return HttpResult.ok("修改成功");
  177. }
  178. @Override
  179. @Transactional
  180. public HttpResult<Object> deleteAgreementProduct(String id,String userName) {
  181. PtlAgreementProductCosts ptlAg=ptlAgreementProductCostsService.getById(id);
  182. if(ptlAg==null){
  183. throw new SystemException("协议产品费用不存在");
  184. }
  185. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId, ptlAg.getAgreementId()));
  186. if(ptlAgreement==null){
  187. throw new SystemException("协议不存在");
  188. }
  189. ptlAgreement.setModifiedBy(userName);
  190. ptlAgreement.setUpdateTime(LocalDateTime.now());
  191. //更新协议信息
  192. baseMapper.updateById(ptlAgreement);
  193. //删除协议
  194. ptlAgreementProductCostsService.removeById(id);
  195. PtlAgreementProductCostsHistory history = new PtlAgreementProductCostsHistory(userName, DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"),
  196. HistoryStatusConstants.HISTORY_TYPE_DELETE,ptlAg);
  197. ptlAgreementProductCostsHistoryService.save(history);
  198. return HttpResult.ok("删除成功");
  199. }
  200. @Override
  201. @Transactional
  202. public HttpResult<Object> saveAgreementNonCarProductCosts(PtlAgreementNonVehicleProductCostsVo agreement, String userName) {
  203. //同步刷新其他协议非车产品费用信息(有待同步协议时,进行同步)
  204. if(agreement.getSyncAgreementIds()!=null&&agreement.getSyncAgreementIds().size()>0){
  205. for(int i=0;i<agreement.getSyncAgreementIds().size();i++){
  206. String tempAgreementId=agreement.getSyncAgreementIds().get(i);
  207. PtlAgreement destAgreement= getById(tempAgreementId);
  208. //根据归属保司,找出本级和上级 所有产品代码
  209. //先获取相关保险公司列表
  210. String companyId=destAgreement.getPartnerCompaniesId();
  211. if(destAgreement.getAssociationCompaniesId()!=null&&!"".equals(destAgreement.getAssociationCompaniesId())){
  212. companyId=destAgreement.getAssociationCompaniesId();
  213. }
  214. List<String> companyIdList=esmInsCompanyService.getAllRelationCompanyId(companyId);
  215. //再根据保险公司列表获取所有非车产品列表
  216. List<PtlNonCarInsuranceProduct> productList=ptlNonCarInsuranceProductService.findProductListByCompangIds(companyIdList);
  217. List<PtlAgreementNonCarProductCostsSaveVo> finalList=new ArrayList<>();
  218. //按找出的产品过滤传进来的 费用方案列表
  219. for(PtlNonCarInsuranceProduct tempProductDto:productList){
  220. for(PtlAgreementNonCarProductCostsSaveVo productCostDto:agreement.getNonCarProductCosts()){
  221. if(productCostDto.getProductId().equals(tempProductDto.getProductCode())){
  222. finalList.add(productCostDto);
  223. }
  224. }
  225. }
  226. ptlAgreementNonCarProductCostsService.synNonCarProductCosts(destAgreement,finalList);
  227. }
  228. }
  229. return HttpResult.ok("添加成功");
  230. }
  231. @Override
  232. @Transactional
  233. public HttpResult<Object> saveAgreementUndwrtRules(PtlAgreementUndwrtRules ptlAgreementUndwrtRules, String userName) {
  234. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId, ptlAgreementUndwrtRules.getAgreementId()));
  235. if(ptlAgreement==null){
  236. throw new SystemException("协议不存在");
  237. }
  238. ptlAgreement.setModifiedBy(userName);
  239. ptlAgreement.setUpdateTime(LocalDateTime.now());
  240. //更新协议信息
  241. baseMapper.updateById(ptlAgreement);
  242. //添加承保规则
  243. ptlAgreementUndwrtRulesService.save(ptlAgreementUndwrtRules);
  244. //添加历史记录
  245. PtlAgreementUndwrtRulesHistory ptlAgreementUndwrtRulesHistory=new PtlAgreementUndwrtRulesHistory(userName,HistoryStatusConstants.HISTORY_TYPE_ADD,ptlAgreementUndwrtRules);
  246. ptlAgreementUndwrtRulesHistoryService.save(ptlAgreementUndwrtRulesHistory);
  247. return HttpResult.ok("添加成功");
  248. }
  249. @Override
  250. @Transactional
  251. public HttpResult<Object> updateAgreementUndwrtRules(PtlAgreementUndwrtRules ptlAgreementUndwrtRules, String userName) {
  252. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId, ptlAgreementUndwrtRules.getAgreementId()));
  253. if(ptlAgreement==null){
  254. throw new SystemException("协议不存在");
  255. }
  256. ptlAgreement.setModifiedBy(userName);
  257. ptlAgreement.setUpdateTime(LocalDateTime.now());
  258. //更新协议信息
  259. baseMapper.updateById(ptlAgreement);
  260. //添加承保规则
  261. ptlAgreementUndwrtRulesService.updateById(ptlAgreementUndwrtRules);
  262. //添加历史记录
  263. PtlAgreementUndwrtRulesHistory ptlAgreementUndwrtRulesHistory=new PtlAgreementUndwrtRulesHistory(userName,HistoryStatusConstants.HISTORY_TYPE_UPDATE,ptlAgreementUndwrtRules);
  264. ptlAgreementUndwrtRulesHistoryService.save(ptlAgreementUndwrtRulesHistory);
  265. return HttpResult.ok("修改成功");
  266. }
  267. @Override
  268. @Transactional
  269. public HttpResult<Object> deleteAgreementUndwrtRules(String id, String userName) {
  270. PtlAgreementUndwrtRules ptlAgreementUndwrtRules = ptlAgreementUndwrtRulesService.getOne(new LambdaQueryWrapper<PtlAgreementUndwrtRules>().eq(PtlAgreementUndwrtRules::getId, id));
  271. if(ptlAgreementUndwrtRules==null){
  272. throw new SystemException("协议承保规则不存在");
  273. }
  274. PtlAgreement ptlAgreement = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>().eq(PtlAgreement::getId, ptlAgreementUndwrtRules.getAgreementId()));
  275. if(ptlAgreement==null){
  276. throw new SystemException("协议不存在");
  277. }
  278. ptlAgreement.setModifiedBy(userName);
  279. ptlAgreement.setUpdateTime(LocalDateTime.now());
  280. //更新协议信息
  281. baseMapper.updateById(ptlAgreement);
  282. //删除承保规则
  283. ptlAgreementUndwrtRulesService.removeById(id);
  284. //添加历史记录
  285. PtlAgreementUndwrtRulesHistory ptlAgreementUndwrtRulesHistory=new PtlAgreementUndwrtRulesHistory(userName,HistoryStatusConstants.HISTORY_TYPE_DELETE,ptlAgreementUndwrtRules);
  286. ptlAgreementUndwrtRulesHistoryService.save(ptlAgreementUndwrtRulesHistory);
  287. return HttpResult.ok("删除成功");
  288. }
  289. @Override
  290. public HttpResult<PageResult<PtlAgreement>> pageAgreement(PtlAgreementPageVo ptlAgreementPageVo) {
  291. int pageNum = ptlAgreementPageVo.getPageNum();
  292. int pageSize = ptlAgreementPageVo.getPageSize();
  293. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  294. // 获取供应商本级id 及其 下级id
  295. List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
  296. // 审核状态
  297. wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus, ptlAgreementPageVo.getAuditStatus())
  298. //是否有效
  299. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getValidStatus()), PtlAgreement::getValidStatus, ptlAgreementPageVo.getValidStatus())
  300. // 供应商类型
  301. .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getCompaniesType()), PtlAgreement::getCompaniesType, ptlAgreementPageVo.getCompaniesType())
  302. // 合作公司
  303. .in(!StringUtils.isEmpty(ptlAgreementPageVo.getPartnerCompaniesId()) && !lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
  304. // 录入时间
  305. .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && !ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
  306. Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
  307. Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
  308. PageResult<PtlAgreement> ptlAgreementPageResult = new PageResult<>(pageNum, pageSize, (int) agreementPage.getTotal(), agreementPage.getRecords());
  309. return HttpResult.ok(ptlAgreementPageResult);
  310. }
  311. @Override
  312. public HttpResult<PtlAgreementQueryVo> getByAgreementId(String agreementId) {
  313. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  314. // // 获取产品费用
  315. // List<PltAgreementSchemeSaveDto> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(agreementId);
  316. // // 获取非车险产品费用
  317. // List<PtlAgreementNonCarProductCosts> nonCarProductCosts = ptlAgreementNonCarProductCostsService.getByAgreementId(agreementId);
  318. // // 获取承保规则
  319. // List<PtlAgreementUndwrtRulesSaveDto> underwritingRules = ptlAgreementUndwrtRulesService.getByAgreementId(agreementId);
  320. // 账号信息查询
  321. PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(agreementId);
  322. //2023-08-28 lig 增加 解决前端空对象为null问题,改为返回为空对象
  323. if (null == ptlAgreementAttribution) {
  324. ptlAgreementAttribution = new PtlAgreementAttribution();
  325. ptlAgreementAttribution.setId("");
  326. ptlAgreementAttribution.setInsCompanyId("");
  327. ptlAgreementAttribution.setInsCompanyName("");
  328. ptlAgreementAttribution.setTemplateId("");
  329. ptlAgreementAttribution.setApiType(1);
  330. ptlAgreementAttribution.setFields(new JSONArray());
  331. ptlAgreementAttribution.setUsername("");
  332. ptlAgreementAttribution.setPassword("");
  333. }
  334. // 授权查询
  335. List<PtlAgreementDept> deptList = ptlAgreementDeptService.getByAgreementId(agreementId);
  336. PtlAgreementQueryVo ptlAgreementQueryVo = new PtlAgreementQueryVo(ptlAgreement,ptlAgreementAttribution, deptList);
  337. return HttpResult.ok(ptlAgreementQueryVo);
  338. }
  339. @Override
  340. @Transactional
  341. public HttpResult<Object> deleteAgreement(String agreementId,String userName) {
  342. proxyObject.ifExistsById(agreementId);
  343. HttpResult<PtlAgreementQueryVo> byAgreementId = getByAgreementId(agreementId);
  344. boolean b = removeById(agreementId);
  345. AssertionUtils.isSucceed(b, "协议信息删除失败");
  346. // 关联表删除
  347. proxyObject.deleteAssociationInformation(agreementId);
  348. // 添加 历史记录表
  349. //生成批次号
  350. String batchNo = IdGenerate.nextId();
  351. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, byAgreementId.getData().getAgreement());
  352. ptlAgreementHistory.setStartDate(byAgreementId.getData().getAgreement().getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  353. ptlAgreementHistory.setEndDate(byAgreementId.getData().getAgreement().getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  354. ptlAgreementHistory.setAgreementId(ptlAgreementHistory.getId());
  355. ptlAgreementHistory.setId(IdGenerate.nextId());
  356. ptlAgreementHistory.setOperatorType("delete");
  357. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  358. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo,agreementId,
  359. byAgreementId.getData().getAgreement().getInsuranceCompanyId(),
  360. byAgreementId.getData().getAgreement().getInsuranceCompany(),
  361. byAgreementId.getData().getPtlAgreementAttribution()
  362. );
  363. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  364. if (StringUtils.isNotEmpty(ptlAgreementAttributionHistory.getTemplateId())) {
  365. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  366. }
  367. return HttpResult.ok("删除成功");
  368. }
  369. @Override
  370. @Transactional
  371. public HttpResult<Object> reviseAgreement(String userName, String agreementId, PtlAgreementSaveVo agreement) {
  372. PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
  373. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  374. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  375. BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
  376. EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
  377. ptlAgreement.setModifiedBy(userName);
  378. ptlAgreement.setUpdateTime(LocalDateTime.now());
  379. HttpResult<PtlAgreementQueryVo> byAgreementId = this.getByAgreementId(agreementId);
  380. // 修改协议
  381. boolean b = updateById(ptlAgreement);
  382. AssertionUtils.isSucceed(b, "协议信息修改失败");
  383. // 关联表都是先删除后添加
  384. proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
  385. // 提交 账号信息 授权部门
  386. proxyObject.saveAssociationInformation(agreementId, esmInsCompany, agreement);
  387. // 添加 历史记录表
  388. //生成批次号
  389. String batchNo = IdGenerate.nextId();
  390. PtlAgreementHistory ptlAgreementHistory = new PtlAgreementHistory(batchNo,userName, HistoryStatusConstants.HISTORY_TYPE_ADD, ptlAgreement);
  391. ptlAgreementHistory.setStartDate(ptlAgreement.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  392. ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
  393. ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
  394. ptlAgreementHistory.setId(IdGenerate.nextId());
  395. ptlAgreementHistory.setOperatorType("update");
  396. ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
  397. PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo,ptlAgreement.getId(),esmInsCompany.getId(),esmInsCompany.getName(),agreement.getAttribution());
  398. ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
  399. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  400. ptlAgreementAttributionHistoryService.save(ptlAgreementAttributionHistory);
  401. }
  402. return HttpResult.ok("修改成功");
  403. }
  404. @Override
  405. public void saveAssociationInformation(String agreementId, EsmInsCompany esmInsCompany, PtlAgreementSaveVo agreement) {
  406. // 账号添加
  407. PtlAgreementAttributionDto attribution = agreement.getAttribution();
  408. if (StringUtils.isNotEmpty(attribution.getTemplateId())) {
  409. ptlAgreementAttributionService.saveAttribution(agreementId, esmInsCompany, agreement.getAttribution());
  410. }
  411. // 部门授权
  412. ptlAgreementDeptService.saveBatchDept(agreementId, agreement.getDept());
  413. }
  414. @Override
  415. public void deleteAssociationInformation(String agreementId) {
  416. // 删除产品费用
  417. ptlAgreementProductCostsService.deleteByAgreementId(agreementId);
  418. // 删除关联信息 删除非车险产品费用 承保规则 账号信息 授权部门
  419. proxyObject.deleteAssociationInformationExcludeCosts(agreementId);
  420. }
  421. @Override
  422. public void deleteAssociationInformationExcludeCosts(String agreementId) {
  423. // 删除非车险产品费用
  424. ptlAgreementNonCarProductCostsService.deleteByAgreementId(agreementId);
  425. // 删除承保规则
  426. ptlAgreementUndwrtRulesService.deleteByAgreementId(agreementId);
  427. // 删除账号信息
  428. ptlAgreementAttributionService.removeById(agreementId);
  429. // 删除授权部门
  430. ptlAgreementDeptService.deleteByAgreementId(agreementId);
  431. }
  432. @Override
  433. public EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto, PtlAgreementAttributionDto attribution) {
  434. EsmInsCompany esmInsCompany;
  435. // 获取保险公司
  436. if (AgreementType.AT2.getCode().equals(agreementSaveDto.getAgreementType())) {
  437. String message = String.format("协议为 %s 保险公司必须传入", AgreementType.AT2.getDesc());
  438. AssertionUtils.isStringEmpty(agreementSaveDto.getAssociationCompaniesId(), message);
  439. esmInsCompany = esmInsCompanyService.isExists(agreementSaveDto.getAssociationCompaniesId());
  440. } else {
  441. esmInsCompany = esmInsCompanyService.getBySubsidiary(agreementSaveDto.getPartnerCompaniesId());
  442. }
  443. // 验证用户名密码 python api 对接需要验证用户名
  444. if (!ObjectUtils.isEmpty(attribution.getApiType()) && PtlApiType.PTL_API_2.getCode() == attribution.getApiType()) {
  445. String nameSimple = esmInsCompany.getNamesimple();
  446. String id = esmInsCompany.getId();
  447. insCrawlerOrderController.isLogin(attribution, id, nameSimple);
  448. }
  449. ptlAgreement.setCompaniesType(esmInsCompany.getType());
  450. ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());
  451. ptlAgreement.setInsuranceCompany(esmInsCompany.getNamesimple());
  452. // 生成协议id
  453. ptlAgreement.generateTheProtocolCode();
  454. return esmInsCompany;
  455. }
  456. @Override
  457. public HttpResult<Object> auditAgreement(String agreementId, PtlAgreementAuditVo ptlAgreementAuditVo) {
  458. PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
  459. ptlAgreement.setAuditStatus(ptlAgreementAuditVo.getAuditStatus());
  460. ptlAgreement.setAuditContent(ptlAgreementAuditVo.getAuditContent());
  461. // 修改协议
  462. boolean b = updateById(ptlAgreement);
  463. AssertionUtils.isSucceed(b, "协议信息修改失败");
  464. return HttpResult.ok("修改成功");
  465. }
  466. @Override
  467. public HttpResult<List<PtlAgreementNonCarProductCostsVo>> getNonCarCostsInfo(String agreementId, String companyId){
  468. List<PtlAgreementNonCarProductCostsVo> result=new ArrayList<>();
  469. //先根据传过来的保险公司代码,找上下级所有机构层级对应的非车产品列表
  470. if(companyId!=null&&!"".equals(companyId)){
  471. //先获取相关保险公司列表
  472. List<String> companyIdList=esmInsCompanyService.getAllRelationCompanyId(companyId);
  473. //再根据保险公司列表获取所有非车产品列表
  474. List<PtlNonCarInsuranceProduct> productList=ptlNonCarInsuranceProductService.findProductListByCompangIds(companyIdList);
  475. if(productList!=null&&productList.size()>0){
  476. for(int i=0;i<productList.size();i++){
  477. PtlNonCarInsuranceProduct tempProductDto=productList.get(i);
  478. PtlAgreementNonCarProductCostsVo costsVo=new PtlAgreementNonCarProductCostsVo();
  479. costsVo.setProductId(tempProductDto.getProductCode());
  480. costsVo.setProductName(tempProductDto.getProductName());
  481. costsVo.setCompanyId(tempProductDto.getCompanyId());
  482. EsmInsCompany tempInsCompany=esmInsCompanyService.getById(tempProductDto.getCompanyId());
  483. costsVo.setCompanyName(tempInsCompany.getName());
  484. costsVo.setRiskCode(tempProductDto.getInsuranceCode());
  485. Map<String, DictionaryManagement> m = DictEnumConfig.getDmMap();
  486. DictionaryManagement dictionaryManagement=m.get("nonCarInsuranceCode");
  487. String riskName="";
  488. for(DictionaryData data: dictionaryManagement.getDdList()){
  489. if(tempProductDto.getInsuranceCode().equals(data.getDictValue())){
  490. riskName=data.getDictTag();
  491. }
  492. }
  493. costsVo.setRiskName(riskName);
  494. //然后根据协议ID 查询所有已配置费用的产品进行赋值
  495. if(agreementId!=null&&!"".equals(agreementId)){
  496. //使用协议ID 产品ID 获取已经配置好的信息
  497. PtlAgreementNonCarProductCosts agreementNonCarProductCosts=ptlAgreementNonCarProductCostsService.getNonCarProductCostsInfo(agreementId,tempProductDto.getProductCode());
  498. //赋值已配置的费用比例
  499. if(agreementNonCarProductCosts!=null){
  500. costsVo.setCostsProportion(agreementNonCarProductCosts.getCostsProportion());
  501. }
  502. }
  503. result.add(costsVo);
  504. }
  505. }
  506. }else{
  507. //如果归属保司没选,则直接返回空列表,相当于没查到对应非车产品信息
  508. }
  509. return HttpResult.ok(result);
  510. }
  511. @Override
  512. public HttpResult<List<PtlAgreement>> findRelationAgreement(String companyId){
  513. List<PtlAgreement> resultList=new ArrayList<>();
  514. if(companyId!=null&&!"".equals(companyId)) {
  515. //先获取相关保险公司列表
  516. List<String> companyIdList = esmInsCompanyService.getAllRelationCompanyId(companyId);
  517. if(companyIdList!=null&&companyIdList.size()>0){
  518. for(int i=0;i<companyIdList.size();i++){
  519. String tempCom=companyIdList.get(i);
  520. LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
  521. wrapper.eq(PtlAgreement::getValidStatus,"1");
  522. wrapper.and(wq1->wq1.eq(PtlAgreement::getPartnerCompaniesId,tempCom).or(wq2->wq2.eq(PtlAgreement::getAssociationCompaniesId,tempCom)));
  523. resultList.addAll(list(wrapper));
  524. }
  525. for(int j=0;j<resultList.size();j++){
  526. PtlAgreement agreement=resultList.get(j);
  527. String tempCompanyId=agreement.getAssociationCompaniesId()!=null&&!"".equals(agreement.getAssociationCompaniesId())?agreement.getAssociationCompaniesId():agreement.getPartnerCompaniesId();
  528. EsmInsCompany tempCompany= esmInsCompanyService.getById(tempCompanyId);
  529. agreement.setInsuranceCompany(tempCompany.getName());
  530. }
  531. }
  532. }
  533. return HttpResult.ok(resultList);
  534. }
  535. }