PtlAgreementUndwrtRulesNewServiceImpl.java 27 KB

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