PtlAgreementUndwrtRulesNewServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. package com.ydtech.modules.protocols.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ydtech.core.page.PageRequest;
  6. import com.ydtech.core.page.PageResult;
  7. import com.ydtech.modules.base.controller.BaseController;
  8. import com.ydtech.modules.protocol.entity.po.PtlAgreement;
  9. import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
  10. import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
  11. import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsAttrLinkMapper;
  12. import com.ydtech.modules.protocols.dao.PtlAgreementUndwrtRulesNewMapper;
  13. import com.ydtech.modules.protocols.entity.po.*;
  14. import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
  15. import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRules;
  16. import com.ydtech.modules.protocols.entity.vo.AgreementUndwrtRulesSave;
  17. import com.ydtech.modules.protocols.service.*;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.time.LocalDateTime;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. /**
  26. * @description 协议承保规则属性 service实现类
  27. * @createDate 2024-2-22 15:44:29
  28. * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
  29. */
  30. @Service
  31. public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesNewMapper, PtlAgreementUndwrtRulesNew>
  32. implements PtlAgreementUndwrtRulesNewService {
  33. @Autowired
  34. private PtlAgreementUndwrtRulesAttrLinkService ptlAgreementUndwrtRulesAttrLinkService;
  35. @Autowired
  36. private PtlAreaLicenseService ptlAreaLicenseService;
  37. @Autowired
  38. private PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
  39. @Autowired
  40. private PtlAgreementUndwrtRulesNewHistoryService ptlAgreementUndwrtRulesNewHistoryService;
  41. @Autowired
  42. private PtlAgreementUndwrtRulesAttrLinkHistoryService ptlAgreementUndwrtRulesAttrLinkHistoryService;
  43. @Override
  44. public AgreementUndwrtRulesSave rulesGet(String ruleId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
  45. //设置费用入口信息
  46. PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = baseMapper.selectOne(new LambdaQueryWrapper<PtlAgreementUndwrtRulesNew>().eq(PtlAgreementUndwrtRulesNew::getId, ruleId));
  47. AgreementUndwrtRulesSave agreementUndwrtRulesSave = new AgreementUndwrtRulesSave();
  48. BeanUtils.copyProperties(ptlAgreementUndwrtRulesNew, agreementUndwrtRulesSave);
  49. //设置费用因子属性
  50. List<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrs = new ArrayList<>();
  51. List<PtlAgreementUndwrtRulesAttrLink> list = ptlAgreementUndwrtRulesAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
  52. .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, ruleId));
  53. undwrtRulesAttrList.stream().forEach(x -> {
  54. //处理多选和下拉
  55. if ("checkbox".equals(x.getAttrType()) || "select".equals(x.getAttrType())) {
  56. //处理车牌
  57. if ("select".equals(x.getAttrType()) && "LicenseNo".equals(x.getAttrCode())) {
  58. PtlAgreementUndwrtRulesAttrLink licenseNo = list.stream().filter(l -> l.getAttrCode().equals("LicenseNo")).findFirst().orElse(null);
  59. if (licenseNo != null) {
  60. //根据operator 获取车牌的地区id
  61. List<PtlAreaLicense> byParentNumber = ptlAreaLicenseService.getByParentNumber(licenseNo.getOperator());
  62. List<PtlAgreementUndwrtRulesDictLabal> dictLabal = byParentNumber.stream().map(y -> {
  63. PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = new PtlAgreementUndwrtRulesDictLabal();
  64. ptlAgreementUndwrtRulesDictLabal.setDictId(y.getId());
  65. ptlAgreementUndwrtRulesDictLabal.setCode(y.getAreaNumber());
  66. ptlAgreementUndwrtRulesDictLabal.setName(y.getLicense());
  67. return ptlAgreementUndwrtRulesDictLabal;
  68. }).collect(Collectors.toList());
  69. x.setDictLabal(dictLabal);
  70. }
  71. }
  72. x.setMinArray(new String[]{});
  73. list.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
  74. if (null != z.getMin()) {
  75. x.setId(z.getId());
  76. x.setMinArray(z.getMin().split(","));
  77. x.setMax(z.getMax());
  78. x.setOperator(z.getOperator());
  79. }
  80. });
  81. } else {
  82. list.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
  83. x.setId(z.getId());
  84. x.setMin(z.getMin());
  85. x.setMax(z.getMax());
  86. x.setOperator(z.getOperator());
  87. });
  88. }
  89. ptlAgreementUndwrtRulesAttrs.add(x);
  90. });
  91. agreementUndwrtRulesSave.setCostsAttrLinks(ptlAgreementUndwrtRulesAttrs);
  92. return agreementUndwrtRulesSave;
  93. }
  94. @Override
  95. public List<PtlAgreementUndwrtRulesNew> rulesList(String agreementId) {
  96. List<PtlAgreementUndwrtRulesNew> rulesList = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreementUndwrtRulesNew>()
  97. .eq(PtlAgreementUndwrtRulesNew::getAgreementId, agreementId)
  98. .eq(PtlAgreementUndwrtRulesNew::getValidInd, "1"));
  99. List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinkList = ptlAgreementUndwrtRulesAttrLinkService.list();
  100. rulesList.forEach(item -> {
  101. List<PtlAgreementUndwrtRulesAttrLink> collect = ptlAgreementUndwrtRulesAttrLinkList.stream().filter(x -> Objects.equals(x.getRulesId(), item.getId())).collect(Collectors.toList());
  102. item.setRulesAttrList(collect);
  103. });
  104. return rulesList;
  105. }
  106. @Override
  107. public Page rulesPage(Page page, String agreementId) {
  108. Page<PtlAgreementUndwrtRulesNew> rulesPage = baseMapper.selectPage(page, new LambdaQueryWrapper<PtlAgreementUndwrtRulesNew>()
  109. .eq(PtlAgreementUndwrtRulesNew::getAgreementId, agreementId));
  110. // List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinkList = ptlAgreementUndwrtRulesAttrLinkService.list();
  111. List<PtlAgreementUndwrtRulesNew> records = rulesPage.getRecords();
  112. //遍历费用列表
  113. List<String> ids = new ArrayList<>();
  114. records.forEach(x -> {
  115. ids.add(x.getId());
  116. });
  117. //获取费用属性
  118. List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
  119. List<PtlAgreementUndwrtRulesAttrLink> list = ptlAgreementUndwrtRulesAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
  120. .in(PtlAgreementUndwrtRulesAttrLink::getRulesId, ids));
  121. Map<String, List<PtlAgreementUndwrtRulesAttrLink>> groupedByCostsId = list.stream()
  122. .collect(Collectors.groupingBy(PtlAgreementUndwrtRulesAttrLink::getRulesId));
  123. groupedByCostsId.forEach((k, v) -> {
  124. records.stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v, undwrtRulesAttrList)));
  125. });
  126. // records.forEach(item -> {
  127. // List<PtlAgreementUndwrtRulesAttrLink> collect = ptlAgreementUndwrtRulesAttrLinkList.stream().filter(x -> Objects.equals(x.getRulesId(), item.getId())).collect(Collectors.toList());
  128. // item.setRulesAttrList(collect);
  129. // });
  130. rulesPage.setRecords(records);
  131. return rulesPage;
  132. }
  133. /**
  134. * 遍历费用属性描述文字
  135. * @param v
  136. * @param undwrtRulesAttrList
  137. * @return
  138. */
  139. private String buildDesc(List<PtlAgreementUndwrtRulesAttrLink> v, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
  140. String desc = "";
  141. for (int i = 0; i < v.size(); i++) {
  142. int finalI = i;
  143. PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = undwrtRulesAttrList.stream().filter(x -> x.getAttrCode().equals(v.get(finalI).getAttrCode())).findAny().get();
  144. //数值范围判断
  145. if ("inputNumber".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
  146. desc += inputNumberIdentifying(ptlAgreementUndwrtRulesAttr, v.get(i)) + "\n";
  147. }
  148. if ("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
  149. desc += radioIdentifying(ptlAgreementUndwrtRulesAttr, v.get(i)) + "\n";
  150. }
  151. if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
  152. desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "包含" + v.get(i).getMin() + "\n";
  153. }
  154. }
  155. return desc;
  156. }
  157. private String radioIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink) {
  158. PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
  159. x.getCode().equals(ptlAgreementProductCostsAttrLink.getMin())).findAny().get();
  160. return ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + ptlAgreementUndwrtRulesDictLabal.getName();
  161. }
  162. private String inputNumberIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink) {
  163. if ("1".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
  164. return ptlAgreementUndwrtRulesAttr.getAttrName() + "范围值" + ptlAgreementProductCostsAttrLink.getMin() + "到" + ptlAgreementProductCostsAttrLink.getMax();
  165. } else if ("2".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
  166. return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于" + ptlAgreementProductCostsAttrLink.getMin();
  167. } else if ("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
  168. return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于等于" + ptlAgreementProductCostsAttrLink.getMin();
  169. } else if ("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
  170. return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于" + ptlAgreementProductCostsAttrLink.getMax();
  171. } else if ("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
  172. return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于等于" + ptlAgreementProductCostsAttrLink.getMax();
  173. }
  174. return "";
  175. }
  176. /**
  177. * 验证承保规则表单
  178. */
  179. private void validateRules(AgreementUndwrtRules agreementUndwrtRules){
  180. if(agreementUndwrtRules.getValidInd() == null)
  181. {
  182. throw new RuntimeException("有效标志不能为空");
  183. }
  184. }
  185. @Transactional
  186. @Override
  187. public boolean rulesAdd(AgreementUndwrtRules agreementUndwrtRules) {
  188. validateRules(agreementUndwrtRules);
  189. //添加承保规则主表信息
  190. PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = new PtlAgreementUndwrtRulesNew();
  191. BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNew);
  192. ptlAgreementUndwrtRulesNew.setId(null);
  193. int insert = baseMapper.insert(ptlAgreementUndwrtRulesNew);
  194. //保存承包规则历史记录
  195. PtlAgreementUndwrtRulesNewHistory ptlAgreementUndwrtRulesNewHistory = new PtlAgreementUndwrtRulesNewHistory();
  196. BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNewHistory);
  197. //添加承包规则ID
  198. ptlAgreementUndwrtRulesNewHistory.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  199. //生成批次ID
  200. String uuid = UUID.randomUUID().toString();
  201. ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
  202. ptlAgreementUndwrtRulesNewHistory.setId(null);
  203. ptlAgreementUndwrtRulesNewHistory.setOperatorType("add");
  204. ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
  205. ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
  206. ptlAgreementUndwrtRulesNewHistoryService.save(ptlAgreementUndwrtRulesNewHistory);
  207. //创建承包规则费用因子历史记录容器
  208. List<PtlAgreementUndwrtRulesAttrLinkHistory> undwrtRulesAttrLinkHistories = new ArrayList<>();
  209. //遍历承保规则属性
  210. List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList = agreementUndwrtRules.getRulesAttrList();
  211. List<PtlAgreementUndwrtRulesAttrLink> costsAttrLink = new ArrayList<>();
  212. rulesAttrList.forEach(x -> {
  213. //单独处理车牌号
  214. if ("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && !x.getMin().equals(""))) {
  215. x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
  216. x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  217. x.setId(0);
  218. costsAttrLink.add(x);
  219. PtlAgreementUndwrtRulesAttrLinkHistory undwrtRulesAttrLinkHistory = new PtlAgreementUndwrtRulesAttrLinkHistory();
  220. BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
  221. //设置承包规则费用因子历史记录
  222. undwrtRulesAttrLinkHistory.setBatch(uuid);
  223. undwrtRulesAttrLinkHistory.setId(null);
  224. undwrtRulesAttrLinkHistory.setOperatorType("add");
  225. undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
  226. undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
  227. undwrtRulesAttrLinkHistories.add(undwrtRulesAttrLinkHistory);
  228. } else {
  229. if ((!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
  230. x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  231. x.setId(0);
  232. costsAttrLink.add(x);
  233. PtlAgreementUndwrtRulesAttrLinkHistory undwrtRulesAttrLinkHistory = new PtlAgreementUndwrtRulesAttrLinkHistory();
  234. BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
  235. //设置承包规则费用因子历史记录
  236. undwrtRulesAttrLinkHistory.setBatch(uuid);
  237. undwrtRulesAttrLinkHistory.setId(null);
  238. undwrtRulesAttrLinkHistory.setOperatorType("add");
  239. undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
  240. undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
  241. undwrtRulesAttrLinkHistories.add(undwrtRulesAttrLinkHistory);
  242. }
  243. }
  244. });
  245. ptlAgreementUndwrtRulesAttrLinkHistoryService.saveBatch(undwrtRulesAttrLinkHistories);
  246. ptlAgreementUndwrtRulesAttrLinkService.saveBatch(costsAttrLink);
  247. return true;
  248. }
  249. @Transactional
  250. @Override
  251. public boolean rulesUpdate(AgreementUndwrtRules agreementUndwrtRules) {
  252. //更新费用主表信息
  253. PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = new PtlAgreementUndwrtRulesNew();
  254. BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNew);
  255. int update = baseMapper.updateById(ptlAgreementUndwrtRulesNew);
  256. //保存承包规则历史记录
  257. PtlAgreementUndwrtRulesNewHistory ptlAgreementUndwrtRulesNewHistory = new PtlAgreementUndwrtRulesNewHistory();
  258. BeanUtils.copyProperties(agreementUndwrtRules, ptlAgreementUndwrtRulesNewHistory);
  259. //添加承包规则ID
  260. ptlAgreementUndwrtRulesNewHistory.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  261. //生成批次ID
  262. String uuid = UUID.randomUUID().toString();
  263. ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
  264. ptlAgreementUndwrtRulesNewHistory.setId(null);
  265. ptlAgreementUndwrtRulesNewHistory.setOperatorType("update");
  266. ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
  267. ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
  268. ptlAgreementUndwrtRulesNewHistoryService.save(ptlAgreementUndwrtRulesNewHistory);
  269. //创建承包规则费用因子历史记录容器
  270. List<PtlAgreementUndwrtRulesAttrLinkHistory> undwrtRulesAttrLinkHistories = new ArrayList<>();
  271. //设置费用因子属性
  272. //先删除属性值
  273. ptlAgreementUndwrtRulesAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
  274. .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, ptlAgreementUndwrtRulesNew.getId()));
  275. List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
  276. //再添加属性值
  277. List<PtlAgreementUndwrtRulesAttrLink> costsAttrLinks = agreementUndwrtRules.getRulesAttrList();
  278. List<PtlAgreementUndwrtRulesAttrLink> costsAttrLink = new ArrayList<>();
  279. costsAttrLinks.forEach(x -> {
  280. //转换数组
  281. if(x.getMinArray() != null && x.getMinArray().length > 0){
  282. x.setMin(String.join(",",x.getMinArray()));
  283. }
  284. //处理中文逗号
  285. if(x.getMin() != null && x.getMin().contains(","))
  286. {
  287. x.setMin(x.getMin().replace(",",","));
  288. }
  289. //单独处理车牌号
  290. if ("LicenseNo".equals(x.getAttrCode()) && (x.getMin() != null && x.getMin() != "")) {
  291. x.setOperator(x.getDictLabal().getJSONObject(0).getString("parentNumber"));
  292. x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  293. x.setId(0);
  294. costsAttrLink.add(x);
  295. PtlAgreementUndwrtRulesAttrLinkHistory undwrtRulesAttrLinkHistory = new PtlAgreementUndwrtRulesAttrLinkHistory();
  296. BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
  297. //设置承包规则费用因子历史记录
  298. undwrtRulesAttrLinkHistory.setBatch(uuid);
  299. undwrtRulesAttrLinkHistory.setId(null);
  300. undwrtRulesAttrLinkHistory.setOperatorType("update");
  301. undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
  302. undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
  303. undwrtRulesAttrLinkHistories.add(undwrtRulesAttrLinkHistory);
  304. } else {
  305. PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = undwrtRulesAttrList.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().orElse(null);
  306. //单独判断radio radio中存在0的属性值
  307. if ("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
  308. if (null != x.getMin()) {
  309. x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  310. x.setId(0);
  311. costsAttrLink.add(x);
  312. PtlAgreementUndwrtRulesAttrLinkHistory undwrtRulesAttrLinkHistory = new PtlAgreementUndwrtRulesAttrLinkHistory();
  313. BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
  314. //设置承包规则费用因子历史记录
  315. undwrtRulesAttrLinkHistory.setBatch(uuid);
  316. undwrtRulesAttrLinkHistory.setId(null);
  317. undwrtRulesAttrLinkHistory.setOperatorType("update");
  318. undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
  319. undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
  320. undwrtRulesAttrLinkHistories.add(undwrtRulesAttrLinkHistory);
  321. }
  322. } else {
  323. if ((!"0".equals(x.getMin()) && null != x.getMin()) || (!"0".equals(x.getMax()) && null != x.getMax())) {
  324. x.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  325. x.setId(0);
  326. costsAttrLink.add(x);
  327. PtlAgreementUndwrtRulesAttrLinkHistory undwrtRulesAttrLinkHistory = new PtlAgreementUndwrtRulesAttrLinkHistory();
  328. BeanUtils.copyProperties(x, undwrtRulesAttrLinkHistory);
  329. //设置承包规则费用因子历史记录
  330. undwrtRulesAttrLinkHistory.setBatch(uuid);
  331. undwrtRulesAttrLinkHistory.setId(null);
  332. undwrtRulesAttrLinkHistory.setOperatorType("update");
  333. undwrtRulesAttrLinkHistory.setModifier(BaseController.getUser().getId());
  334. undwrtRulesAttrLinkHistory.setOperatorTime(LocalDateTime.now());
  335. undwrtRulesAttrLinkHistories.add(undwrtRulesAttrLinkHistory);
  336. }
  337. }
  338. }
  339. });
  340. ptlAgreementUndwrtRulesAttrLinkHistoryService.saveBatch(undwrtRulesAttrLinkHistories);
  341. ptlAgreementUndwrtRulesAttrLinkService.saveBatch(costsAttrLink);
  342. return true;
  343. }
  344. @Transactional
  345. @Override
  346. public boolean rulesDelete(String rulesId) {
  347. //获取承包规则
  348. PtlAgreementUndwrtRulesNew ptlAgreementUndwrtRulesNew = baseMapper.selectById(rulesId);
  349. //保存承包规则历史记录
  350. PtlAgreementUndwrtRulesNewHistory ptlAgreementUndwrtRulesNewHistory = new PtlAgreementUndwrtRulesNewHistory();
  351. BeanUtils.copyProperties(ptlAgreementUndwrtRulesNew, ptlAgreementUndwrtRulesNewHistory);
  352. //添加费用ID
  353. ptlAgreementUndwrtRulesNewHistory.setRulesId(ptlAgreementUndwrtRulesNew.getId());
  354. //生成批次ID
  355. String uuid = UUID.randomUUID().toString();
  356. ptlAgreementUndwrtRulesNewHistory.setBatch(uuid);
  357. ptlAgreementUndwrtRulesNewHistory.setId(null);
  358. ptlAgreementUndwrtRulesNewHistory.setOperatorType("delete");
  359. ptlAgreementUndwrtRulesNewHistory.setModifier(BaseController.getUser().getId());
  360. ptlAgreementUndwrtRulesNewHistory.setOperatorTime(LocalDateTime.now());
  361. ptlAgreementUndwrtRulesNewHistoryService.save(ptlAgreementUndwrtRulesNewHistory);
  362. //创建承包规则费用因子历史记录容器
  363. List< PtlAgreementUndwrtRulesAttrLinkHistory> costsAttrLinkHistories = new ArrayList<>();
  364. //获取承包规则费用因子出口历史记
  365. List<PtlAgreementUndwrtRulesAttrLink> costsAttrLinks = ptlAgreementUndwrtRulesAttrLinkService.list(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
  366. .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, rulesId));
  367. costsAttrLinks.forEach(x -> {
  368. PtlAgreementUndwrtRulesAttrLinkHistory costsAttrLinkHistory = new PtlAgreementUndwrtRulesAttrLinkHistory();
  369. BeanUtils.copyProperties(x, costsAttrLinkHistory);
  370. //设置承包规则费用因子历史记录
  371. costsAttrLinkHistory.setBatch(uuid);
  372. costsAttrLinkHistory.setId(null);
  373. costsAttrLinkHistory.setOperatorType("add");
  374. costsAttrLinkHistory.setModifier(BaseController.getUser().getId());
  375. costsAttrLinkHistory.setOperatorTime(LocalDateTime.now());
  376. costsAttrLinkHistories.add(costsAttrLinkHistory);
  377. });
  378. //保存产品费用因子历史记录
  379. ptlAgreementUndwrtRulesAttrLinkHistoryService.saveBatch(costsAttrLinkHistories);
  380. baseMapper.deleteById(rulesId);
  381. ptlAgreementUndwrtRulesAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>().eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, rulesId));
  382. return true;
  383. }
  384. }