| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | |
| | | @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())) { |
| | |
| | | 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); |