|
|
@@ -0,0 +1,226 @@
|
|
|
+package com.jzg.organization.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.jzg.commons.entity.dto.AgreementRulesAddParam;
|
|
|
+import com.jzg.commons.entity.dto.AgreementRulesEditParam;
|
|
|
+import com.jzg.commons.entity.po.PtlAgreementUndwrtRules;
|
|
|
+import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
|
|
|
+import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttrLink;
|
|
|
+import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesDictLabal;
|
|
|
+import com.jzg.commons.entity.vo.AgreementRulesVo;
|
|
|
+import com.jzg.organization.mapper.PtlAgreementUndwrtRulesAttrLinkMapper;
|
|
|
+import com.jzg.organization.mapper.PtlAgreementUndwrtRulesAttrMapper;
|
|
|
+import com.jzg.organization.mapper.PtlAgreementUndwrtRulesMapper;
|
|
|
+import com.jzg.organization.service.PtlAgreementUndwrtRulesAttrLinkService;
|
|
|
+import com.jzg.organization.service.PtlAgreementUndwrtRulesAttrService;
|
|
|
+import com.jzg.organization.service.PtlAgreementUndwrtRulesService;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+* @author dongxin
|
|
|
+* @description 针对表【ptl_agreement_undwrt_rules(协议承保规则)】的数据库操作Service实现
|
|
|
+* @createDate 2025-02-20 09:32:09
|
|
|
+*/
|
|
|
+@Service
|
|
|
+public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreementUndwrtRulesMapper, PtlAgreementUndwrtRules>
|
|
|
+ implements PtlAgreementUndwrtRulesService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PtlAgreementUndwrtRulesAttrLinkMapper agreementUndwrtRulesAttrLinkMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PtlAgreementUndwrtRulesAttrService agreementUndwrtRulesAttrService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PtlAgreementUndwrtRulesAttrLinkService agreementUndwrtRulesAttrLinkService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<AgreementRulesVo> queryList(String agreementId) {
|
|
|
+ List<AgreementRulesVo> rulesVos = baseMapper.queryList(agreementId);
|
|
|
+ return rulesVos;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean rulesAdd(AgreementRulesAddParam param) {
|
|
|
+ // 根据协议id获取最大的序号
|
|
|
+ LambdaQueryWrapper<PtlAgreementUndwrtRules> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.orderByDesc(PtlAgreementUndwrtRules::getOrderNum);
|
|
|
+ queryWrapper.last("LIMIT 1"); // 只取一个结果
|
|
|
+ PtlAgreementUndwrtRules maxRules = baseMapper.selectOne(queryWrapper);
|
|
|
+ PtlAgreementUndwrtRules rules = new PtlAgreementUndwrtRules();
|
|
|
+ rules.setOrderNum(Objects.nonNull(maxRules) ? maxRules.getOrderNum() + 1 : 1);
|
|
|
+ rules.setAgreementId(param.getAgreementId());
|
|
|
+ baseMapper.insert(rules);
|
|
|
+ //遍历承保规则属性
|
|
|
+ List<PtlAgreementUndwrtRulesAttrLink> rulesAttrList = param.getRulesAttrList();
|
|
|
+ List<PtlAgreementUndwrtRulesAttrLink> costsAttrLink = new ArrayList<>();
|
|
|
+ rulesAttrList.forEach(attr -> {
|
|
|
+ attr.setRulesId(rules.getId());
|
|
|
+ costsAttrLink.add(attr);
|
|
|
+ });
|
|
|
+ agreementUndwrtRulesAttrLinkMapper.insert(costsAttrLink);
|
|
|
+ //获取费用属性
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
|
|
|
+ rules.setRuleDescription(buildDesc(costsAttrLink, undwrtRulesAttrList));
|
|
|
+ baseMapper.updateById(rules);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean rulesEdit(AgreementRulesEditParam param) {
|
|
|
+ PtlAgreementUndwrtRules rules = new PtlAgreementUndwrtRules();
|
|
|
+ BeanUtils.copyProperties(param, rules);
|
|
|
+
|
|
|
+ // 删除费用因子
|
|
|
+ agreementUndwrtRulesAttrLinkService.remove(new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
|
|
|
+ .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, rules.getId()));
|
|
|
+
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> attrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
|
|
|
+ //再添加属性值
|
|
|
+ List<PtlAgreementUndwrtRulesAttrLink> costsAttrLinks = param.getRulesAttrList();
|
|
|
+ List<PtlAgreementUndwrtRulesAttrLink> costsAttrLink = new ArrayList<>();
|
|
|
+ costsAttrLinks.forEach(link -> {
|
|
|
+ //转换数组
|
|
|
+ if (link.getMinArray() != null && link.getMinArray().length > 0) {
|
|
|
+ link.setMin(String.join(",", link.getMinArray()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理中文逗号
|
|
|
+ if (link.getMin() != null && link.getMin().contains(",")) {
|
|
|
+ link.setMin(link.getMin().replace(",", ","));
|
|
|
+ }
|
|
|
+
|
|
|
+ PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = attrList.stream()
|
|
|
+ .filter(attr -> attr.getAttrCode().equals(link.getAttrCode()))
|
|
|
+ .findFirst().orElse(null);
|
|
|
+ //单独判断radio radio中存在0的属性值
|
|
|
+ link.setRulesId(rules.getId());
|
|
|
+ link.setId("0");
|
|
|
+ costsAttrLink.add(link);
|
|
|
+ });
|
|
|
+ agreementUndwrtRulesAttrLinkService.saveBatch(costsAttrLink);
|
|
|
+
|
|
|
+ rules.setRuleDescription(buildDesc(costsAttrLink, attrList));
|
|
|
+ baseMapper.updateById(rules);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AgreementRulesVo rulesGet(String ruleId) {
|
|
|
+ PtlAgreementUndwrtRules rules = baseMapper.selectById(ruleId);
|
|
|
+ AgreementRulesVo rulesVo = new AgreementRulesVo();
|
|
|
+ BeanUtils.copyProperties(rules, rulesVo);
|
|
|
+ List<PtlAgreementUndwrtRulesAttrLink> linkList = agreementUndwrtRulesAttrLinkService.list(
|
|
|
+ new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
|
|
|
+ .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, ruleId));
|
|
|
+
|
|
|
+ // 获取费用因子属性
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> attrList = agreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
|
|
|
+
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> newAttrList = new ArrayList<>();
|
|
|
+ attrList.forEach(attr -> {
|
|
|
+ //处理多选和下拉
|
|
|
+ if ("checkbox".equals(attr.getAttrType()) || "select".equals(attr.getAttrType())) {
|
|
|
+ linkList.stream().filter(link -> link.getAttrCode().equals(attr.getAttrCode()))
|
|
|
+ .findFirst().ifPresent(z -> {
|
|
|
+ if (null != z.getMin()) {
|
|
|
+ attr.setId(z.getId());
|
|
|
+ attr.setMinArray(z.getMin().split(","));
|
|
|
+ attr.setMax(z.getMax());
|
|
|
+ attr.setOperator(z.getOperator());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ linkList.stream().filter(link -> link.getAttrCode().equals(attr.getAttrCode()))
|
|
|
+ .findFirst().ifPresent(z -> {
|
|
|
+ attr.setId(z.getId());
|
|
|
+ attr.setMin(z.getMin());
|
|
|
+ attr.setMax(z.getMax());
|
|
|
+ attr.setOperator(z.getOperator());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ newAttrList.add(attr);
|
|
|
+ });
|
|
|
+ rulesVo.setCostsAttrLinks(newAttrList);
|
|
|
+ return rulesVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean deleteById(String id) {
|
|
|
+ agreementUndwrtRulesAttrLinkService.remove(
|
|
|
+ new LambdaQueryWrapper<PtlAgreementUndwrtRulesAttrLink>()
|
|
|
+ .eq(PtlAgreementUndwrtRulesAttrLink::getRulesId, id));
|
|
|
+ return baseMapper.deleteById(id) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 遍历费用属性描述文字
|
|
|
+ *
|
|
|
+ * @param linkList
|
|
|
+ * @param undwrtRulesAttrList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String buildDesc(List<PtlAgreementUndwrtRulesAttrLink> linkList, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
|
|
|
+ StringBuilder desc = new StringBuilder();
|
|
|
+ for (int i = 0; i < linkList.size(); i++) {
|
|
|
+ int finalI = i;
|
|
|
+ PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = undwrtRulesAttrList.stream()
|
|
|
+ .filter(x -> x.getAttrCode().equals(linkList.get(finalI).getAttrCode()))
|
|
|
+ .findAny()
|
|
|
+ .get();
|
|
|
+ //数值范围判断
|
|
|
+
|
|
|
+ if ("inputNumber".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
|
|
|
+ desc.append(inputNumberIdentifying(ptlAgreementUndwrtRulesAttr, linkList.get(i))).append("\n");
|
|
|
+ }
|
|
|
+ if ("radio".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
|
|
|
+ desc.append(radioIdentifying(ptlAgreementUndwrtRulesAttr, linkList.get(i))).append("\n");
|
|
|
+ }
|
|
|
+ if ("checkbox".equals(ptlAgreementUndwrtRulesAttr.getAttrType()) || "select".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
|
|
|
+ desc.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("包含").append(linkList.get(i).getMin()).append("\n");
|
|
|
+ }
|
|
|
+ if ("input".equals(ptlAgreementUndwrtRulesAttr.getAttrType())) {
|
|
|
+ if (linkList.get(i).getOperator() != null && linkList.get(i).getOperator().equals("1")) {
|
|
|
+ desc.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("包含").append(linkList.get(i).getMin()).append("\n");
|
|
|
+ } else {
|
|
|
+ desc.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("不包含").append(linkList.get(i).getMin()).append("\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return desc.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String radioIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink) {
|
|
|
+ PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x -> x.getCode().equals(ptlAgreementProductCostsAttrLink.getMin())).findAny().get();
|
|
|
+ return ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + ptlAgreementUndwrtRulesDictLabal.getName();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String inputNumberIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink) {
|
|
|
+ if ("1".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
|
|
|
+ return ptlAgreementUndwrtRulesAttr.getAttrName() + "范围值" + ptlAgreementProductCostsAttrLink.getMin() + "到" + ptlAgreementProductCostsAttrLink.getMax();
|
|
|
+ } else if ("2".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
|
|
|
+ return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于" + ptlAgreementProductCostsAttrLink.getMin();
|
|
|
+ } else if ("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
|
|
|
+ return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于等于" + ptlAgreementProductCostsAttrLink.getMin();
|
|
|
+ } else if ("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
|
|
|
+ return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于" + ptlAgreementProductCostsAttrLink.getMax();
|
|
|
+ } else if ("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
|
|
|
+ return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于等于" + ptlAgreementProductCostsAttrLink.getMax();
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|