ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleCascaderVO.java
New file @@ -0,0 +1,36 @@ package com.ycl.platform.domain.vo; import com.ycl.system.domain.TreeNode; import enumeration.general.RuleDeductCategoryEnum; import lombok.Data; /** * 分数核算规则对象 t_default_rule * * @author ruoyi * @date 2024-04-01 */ @Data public class CalculateRuleCascaderVO extends TreeNode { private static final long serialVersionUID = 1L; private Long value; private String label; /** * 扣分方式 */ private RuleDeductCategoryEnum deductCategory; /** * 扣除分数 */ private Double calcFraction; /** * 当方式为除以时,除以当前字段数量 */ private Integer calcUnit; } ycl-server/src/main/java/com/ycl/platform/controller/CalculateRuleController.java
@@ -49,6 +49,16 @@ } /** * 根据运维单位查询违约规则列表 */ @PreAuthorize("@ss.hasPermi('system:rule:query')") @GetMapping("/getRuleListByUnitId") public AjaxResult getRuleListByUnitId(Integer unitId) { return success(defaultRuleService.getRuleListByUnitId(unitId)); } /** * 导出违约规则列表 */ @PreAuthorize("@ss.hasPermi('system:rule:export')") ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRuleMapper.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.platform.domain.entity.CalculateRule; import com.ycl.platform.domain.vo.CalculateRuleCascaderVO; import java.util.List; @@ -60,4 +61,11 @@ * @return 结果 */ public int deleteDefaultRuleByIds(Long[] ids); /** * 获取违约规则列表-用于Cascader下拉 * @param unitId 运维单位 * @return 数据 */ List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId); } ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.platform.domain.entity.CalculateRule; import com.ycl.platform.domain.entity.TContract; import com.ycl.platform.domain.vo.CalculateRuleCascaderVO; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -75,4 +76,11 @@ * @return 合同规则 */ List<CalculateRule> getRuleListByContractId(Integer contractId); /** * 根据单位id查询规则 * @param unitId 运维单位 * @return 规则 */ List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId); } ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
@@ -2,17 +2,15 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.enums.CellExtraTypeEnum; import com.alibaba.excel.metadata.CellExtra; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.entity.CalculateRule; import com.ycl.platform.domain.entity.TContract; import com.ycl.platform.domain.vo.CalculateRuleCascaderVO; import com.ycl.platform.mapper.CalculateRuleMapper; import com.ycl.platform.mapper.TContractMapper; import com.ycl.platform.service.ICalculateRuleService; import com.ycl.system.domain.TreeNode; import com.ycl.system.domain.TreeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -33,6 +31,8 @@ public class CalculateRuleServiceImpl extends ServiceImpl<CalculateRuleMapper, CalculateRule> implements ICalculateRuleService { @Autowired private CalculateRuleMapper calculateRuleMapper; @Autowired private TContractMapper contractMapper; /** * 查询违约规则 @@ -141,4 +141,9 @@ .list(); return TreeUtils.build(list, 0L); } @Override public List<CalculateRuleCascaderVO> getRuleListByUnitId(Integer unitId) { return TreeUtils.build(calculateRuleMapper.getRuleListByUnitId(unitId), 0L); } } ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -135,7 +135,9 @@ // 遍历父子关系 List<CalculateRule> calculateRulesToSave = new ArrayList<>(); CalculateRule temp = new CalculateRule(); CalculateRule fu1 = new CalculateRule(); CalculateRule fu2 = new CalculateRule(); boolean fuNew = true; for (CalculateRule calculateRule : list) { // 判断数据完整性 if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) { @@ -152,18 +154,32 @@ } // 保存父规则获取父id if (StringUtils.isNotBlank(calculateRule.getRuleName())) { CalculateRule fu = new CalculateRule(); fu.setContractId(tContract.getId().intValue()); fu.setRuleName(calculateRule.getRuleName()); fu.setCreateTime(DateUtils.getNowDate()); fu.setDeleted(0); calculateRuleService.save(fu); temp = fu; CalculateRule one = new CalculateRule(); one.setParentId(0L); one.setContractId(tContract.getId().intValue()); one.setRuleName(calculateRule.getRuleName()); one.setCreateTime(DateUtils.getNowDate()); one.setDeleted(0); calculateRuleService.save(one); fu1 = one; fuNew = true; } // 保存第二层父规则获取第二层父id if (StringUtils.isNotBlank(calculateRule.getRuleDesc())) { CalculateRule two = new CalculateRule(); two.setContractId(tContract.getId().intValue()); two.setParentId(fu1.getId()); two.setRuleDesc(calculateRule.getRuleDesc()); two.setCreateTime(DateUtils.getNowDate()); two.setDeleted(0); calculateRuleService.save(two); fu2 = two; fuNew = false; } calculateRule.setContractId(tContract.getId().intValue()); calculateRule.setCreateTime(DateUtils.getNowDate()); calculateRule.setDeleted(0); calculateRule.setParentId(temp.getId()); calculateRule.setParentId(fuNew ? fu1.getId() : fu2.getId()); calculateRulesToSave.add(calculateRule); } // 批量保存规则 ycl-server/src/main/resources/mapper/zgyw/CalculateRuleMapper.xml
@@ -35,6 +35,20 @@ where id = #{id} </select> <select id="getRuleListByUnitId" resultType="com.ycl.platform.domain.vo.CalculateRuleCascaderVO"> select id, deduct_category, calc_fraction, calc_unit, id as value, if(rule_condition is not null, rule_condition, if(rule_desc is not null, rule_desc, rule_name)) as label, parent_id from t_calculate_rule where deleted = 0 and contract_id in (select id from t_contract where unit_id = #{unitId}) </select> <insert id="insertDefaultRule" useGeneratedKeys="true" keyProperty="id"> insert into t_calculate_rule <trim prefix="(" suffix=")" suffixOverrides=",">