ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java
@@ -7,12 +7,10 @@ import com.alibaba.excel.enums.poi.VerticalAlignmentEnum; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.ycl.system.domain.TreeNode; import enumeration.converter.RuleDeductCategoryConverter; import enumeration.general.RuleDeductCategoryEnum; import lombok.Data; import java.io.Serial; import java.util.Date; /** @@ -25,10 +23,12 @@ @ExcelIgnoreUnannotated @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER) @TableName("t_calculate_rule") public class CalculateRule extends TreeNode { public class CalculateRule { @Serial private static final long serialVersionUID = 1L; /** * id */ private Integer id; /** * 合同id @@ -40,11 +40,6 @@ */ @ExcelProperty("考核内容") private String ruleName; /** * 关联上级id */ private Long parentId; /** * 规则条件 ycl-server/src/main/java/com/ycl/handler/CustomCellWriteHandler.java
@@ -197,7 +197,7 @@ private static List<CalculateRule> getExcelData() { ArrayList<CalculateRule> list = new ArrayList<>(); CalculateRule calculateRule1 = new CalculateRule(); calculateRule1.setId(1L); calculateRule1.setId(1); calculateRule1.setRuleName("视频平均在线率"); calculateRule1.setRuleCondition("≥98%"); calculateRule1.setMax(98D); @@ -228,7 +228,7 @@ calculateRule33.setCalcFraction(10.00); list.add(calculateRule33); CalculateRule calculateRule4 = new CalculateRule(); calculateRule4.setId(2L); calculateRule4.setId(2); calculateRule4.setRuleName("前端感知源治理工作"); calculateRule4.setRuleCondition("时钟同步(超过±3秒为不合格)"); calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); @@ -243,7 +243,7 @@ calculateRule6.setRuleCondition("一机一档"); list.add(calculateRule6); CalculateRule calculateRule5 = new CalculateRule(); calculateRule5.setId(3L); calculateRule5.setId(3); calculateRule5.setRuleName("后台系统的保障"); calculateRule5.setRuleCondition("单次故障时长若超出72小时不足144小时的,每超出12小时(不足12小时按12小时计)"); calculateRule5.setMax(144D); ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java
@@ -2,9 +2,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; @@ -62,13 +60,6 @@ * @return 结果 */ public int deleteDefaultRuleById(Long id); /** * 读取Excel数据 * * @param file 文件 */ List<CalculateRule> readExcel(MultipartFile file); /** * 根据合同id查询规则 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateRuleServiceImpl.java
@@ -1,12 +1,8 @@ package com.ycl.platform.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; 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; @@ -14,11 +10,8 @@ import com.ycl.system.domain.TreeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import utils.DateUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** @@ -102,44 +95,11 @@ return calculateRuleMapper.deleteDefaultRuleById(id); } /** * 获取合同Excel规则 * * @param file 合同Excel文件 * @return 规则 */ @Override public List<CalculateRule> readExcel(MultipartFile file) { List<CalculateRule> calculateRuleList = new ArrayList<>(); try { EasyExcel.read(file.getInputStream(), CalculateRule.class, new ReadListener<CalculateRule>() { @Override public void invoke(CalculateRule calculateRule, AnalysisContext analysisContext) { calculateRule.setId(null); calculateRuleList.add(calculateRule); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }) .head(CalculateRule.class) .sheet() .doRead(); } catch (IOException e) { throw new RuntimeException(e); } return calculateRuleList; } @Override public List<CalculateRule> getRuleListByContractId(Integer contractId) { List<CalculateRule> list = new LambdaQueryChainWrapper<>(calculateRuleMapper) return new LambdaQueryChainWrapper<>(calculateRuleMapper) .eq(CalculateRule::getContractId, contractId) .list(); return TreeUtils.build(list, 0L); } @Override ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -1,6 +1,7 @@ package com.ycl.platform.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.read.listener.PageReadListener; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -26,6 +27,7 @@ import enumeration.general.RuleDeductCategoryEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -78,7 +80,7 @@ private List<CalculateRule> getExcelData() { ArrayList<CalculateRule> list = new ArrayList<>(); CalculateRule calculateRule1 = new CalculateRule(); calculateRule1.setId(1L); calculateRule1.setId(1); calculateRule1.setRuleName("视频平均在线率"); calculateRule1.setRuleCondition("≥98%"); calculateRule1.setMax(98D); @@ -109,7 +111,7 @@ calculateRule33.setCalcFraction(10.00); list.add(calculateRule33); CalculateRule calculateRule4 = new CalculateRule(); calculateRule4.setId(2L); calculateRule4.setId(2); calculateRule4.setRuleName("前端感知源治理工作"); calculateRule4.setRuleCondition("时钟同步(超过±3秒为不合格)"); calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); @@ -118,13 +120,17 @@ CalculateRule calculateRule7 = new CalculateRule(); calculateRule7.setRuleName("前端感知源治理工作"); calculateRule7.setRuleCondition("OSD标识"); calculateRule7.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); calculateRule7.setCalcFraction(0.1); list.add(calculateRule7); CalculateRule calculateRule6 = new CalculateRule(); calculateRule6.setRuleName("前端感知源治理工作"); calculateRule6.setRuleCondition("一机一档"); calculateRule6.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); calculateRule6.setCalcFraction(0.1); list.add(calculateRule6); CalculateRule calculateRule5 = new CalculateRule(); calculateRule5.setId(3L); calculateRule5.setId(3); calculateRule5.setRuleName("后台系统的保障"); calculateRule5.setRuleCondition("单次故障时长若超出72小时不足144小时的,每超出12小时(不足12小时按12小时计)"); calculateRule5.setMax(144D); @@ -138,17 +144,18 @@ @Override @Transactional @SneakyThrows public AjaxResult importData(MultipartFile file, TContract tContract) { // 保存合同 tContract.setCreateTime(DateUtils.getNowDate()); save(tContract); List<CalculateRule> list = calculateRuleService.readExcel(file); // 获取合同Excel规则 List<CalculateRule> list = new ArrayList<>(); EasyExcel.read(file.getInputStream(), CalculateRule.class, new PageReadListener<CalculateRule>(list::addAll)).sheet().doRead(); // 遍历父子关系 List<CalculateRule> calculateRulesToSave = new ArrayList<>(); CalculateRule fu1 = new CalculateRule(); CalculateRule fu2 = new CalculateRule(); boolean fuNew = true; for (CalculateRule calculateRule : list) { // 判断数据完整性 if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) { @@ -163,35 +170,13 @@ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.warn("请填写" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "扣分数值"); } // 保存父规则获取父id // 保存规则 if (StringUtils.isNotBlank(calculateRule.getRuleName())) { 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; calculateRule.setContractId(tContract.getId().intValue()); calculateRule.setCreateTime(DateUtils.getNowDate()); calculateRule.setUpdateTime(DateUtils.getNowDate()); calculateRulesToSave.add(calculateRule); } // 保存第二层父规则获取第二层父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(fuNew ? fu1.getId() : fu2.getId()); calculateRulesToSave.add(calculateRule); } // 批量保存规则 calculateRuleService.saveBatch(calculateRulesToSave);