From 009e3e6fe18e3229ef1a6b2a39c9de57dd9d34bc Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 31 七月 2024 15:58:38 +0800
Subject: [PATCH] 数据中心响应类调整
---
ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 141 +++++++++++++++++++++++++++++-----------------
1 files changed, 89 insertions(+), 52 deletions(-)
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
index c3e1b55..346b141 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -1,26 +1,35 @@
package com.ycl.platform.service.impl;
import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.write.merge.LoopMergeStrategy;
+import com.alibaba.excel.read.listener.PageReadListener;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.handler.CommentWriteHandler;
+import com.ycl.handler.CustomCellWriteHandler;
import com.ycl.handler.CustomSheetWriteHandler;
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
import com.ycl.platform.domain.entity.CalculateRule;
import com.ycl.platform.domain.entity.TContract;
+import com.ycl.platform.domain.query.ContractQuery;
+import com.ycl.platform.domain.vo.ContractVO;
import com.ycl.platform.mapper.TContractMapper;
import com.ycl.platform.service.ICalculateRuleService;
import com.ycl.platform.service.ITContractService;
import com.ycl.system.AjaxResult;
+import com.ycl.system.Result;
+import com.ycl.system.page.PageUtil;
import com.ycl.utils.DateUtils;
import com.ycl.utils.StringUtils;
+import enumeration.ContractStatus;
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.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
@@ -28,8 +37,10 @@
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
+import java.util.stream.Collectors;
/**
* 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞�
@@ -42,33 +53,25 @@
public class TContractServiceImpl extends ServiceImpl<TContractMapper, TContract> implements ITContractService {
private final ICalculateRuleService calculateRuleService;
- private final YwUnitServiceImpl ywUnitService;
+ private final CalculateMoneyRuleServiceImpl calculateMoneyRuleService;
@Override
public void importTemplate(HttpServletResponse response) {
try {
- List<CalculateRule> list = getExcelData();
- ArrayList<String> arrayList = new ArrayList<>();
- arrayList.add("鎵f寚瀹氬垎鏁�");
- arrayList.add("鍒嗘暟涔樹互鏁伴噺");
- arrayList.add("闄や互鏁伴噺鍚庝箻浠ュ垎鏁�");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("瀵煎叆鍚堝悓妯℃澘", StandardCharsets.UTF_8).replace("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
- // 绗竴鍒椼�佺浜屽垪涓婁笅鍚堝苟3琛�
- LoopMergeStrategy loopMergeStrategy1 = new LoopMergeStrategy(3, 0);
- LoopMergeStrategy loopMergeStrategy2 = new LoopMergeStrategy(3, 1);
EasyExcel.write(response.getOutputStream(), CalculateRule.class)
- .registerWriteHandler(loopMergeStrategy1)
- .registerWriteHandler(loopMergeStrategy2)
// 鑷�傚簲鍒楀
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
// 涓嬫媺妗�
- .registerWriteHandler(new CustomSheetWriteHandler(arrayList))
+ .registerWriteHandler(new CustomSheetWriteHandler(Arrays.asList("鎵f寚瀹氬垎鏁�", "鍒嗘暟涔樹互鏁伴噺", "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�")))
+ .registerWriteHandler(new CustomCellWriteHandler())
// 鏍囨敞
.registerWriteHandler(new CommentWriteHandler())
- .sheet("鍚堝悓瀵煎叆妯℃澘").doWrite(list);
+ .sheet("鍚堝悓瀵煎叆妯℃澘")
+ .doWrite(getExcelData());
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -77,46 +80,61 @@
private List<CalculateRule> getExcelData() {
ArrayList<CalculateRule> list = new ArrayList<>();
CalculateRule calculateRule1 = new CalculateRule();
- calculateRule1.setId(1L);
+ calculateRule1.setId(1);
calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
- calculateRule1.setRuleDesc("锛�1锛夎棰戝湪绾跨巼=瑙嗛鍦ㄧ嚎鏁伴噺梅鍓嶇鏈嶅姟閰嶇疆鏁帮紙搴旀墸闄や笉鍙姉鍔涙垨涓庝腑鏍囦汉鏈嶅姟鏃犲叧閫犳垚鐨勬帀绾块櫎澶栥�傦級");
calculateRule1.setRuleCondition("鈮�98%");
+ calculateRule1.setMax(98D);
calculateRule1.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
calculateRule1.setCalcFraction(0.00);
list.add(calculateRule1);
CalculateRule calculateRule2 = new CalculateRule();
- calculateRule2.setRuleDesc("锛�2锛夎棰戝钩鍧囧湪绾跨巼锛氬綋鏈堟瘡鏃ヨ棰戝湪绾跨巼鐨勫钩鍧囧�笺��");
+ calculateRule2.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
calculateRule2.setRuleCondition("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%");
+ calculateRule2.setMax(97D);
+ calculateRule2.setMin(95D);
calculateRule2.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
calculateRule2.setCalcFraction(5.00);
list.add(calculateRule2);
CalculateRule calculateRule3 = new CalculateRule();
- calculateRule3.setRuleDesc("锛�3锛夎棰戝湪绾跨巼淇濈暀鏁存暟骞朵笖鍚戜笅鍙栨暣銆�");
+ calculateRule3.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
calculateRule3.setRuleCondition("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%");
+ calculateRule3.setMax(94D);
+ calculateRule3.setMin(90D);
calculateRule3.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
calculateRule3.setCalcFraction(10.00);
list.add(calculateRule3);
+ CalculateRule calculateRule33 = new CalculateRule();
+ calculateRule33.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�");
+ calculateRule33.setRuleCondition("锛�90%");
+ calculateRule33.setMin(89D);
+ calculateRule33.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS);
+ calculateRule33.setCalcFraction(10.00);
+ list.add(calculateRule33);
CalculateRule calculateRule4 = new CalculateRule();
- calculateRule4.setId(2L);
+ calculateRule4.setId(2);
calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
- calculateRule4.setRuleDesc("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
- calculateRule4.setRuleCondition("瑙嗛鐩戞帶鎽勫儚鏈烘椂閽熶笉鍚屾锛�24灏忔椂鍐呮湭淇鐨�");
+ calculateRule4.setRuleCondition("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級");
calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
calculateRule4.setCalcFraction(0.1);
list.add(calculateRule4);
CalculateRule calculateRule7 = new CalculateRule();
- calculateRule7.setRuleDesc("鈥︹�︹�︹��");
- calculateRule7.setRuleCondition("鈥︹�︹�︹��");
+ calculateRule7.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�");
+ calculateRule7.setRuleCondition("OSD鏍囪瘑");
+ calculateRule7.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY);
+ calculateRule7.setCalcFraction(0.1);
list.add(calculateRule7);
CalculateRule calculateRule6 = new CalculateRule();
- calculateRule6.setRuleDesc("鈥︹�︹�︹��");
- calculateRule6.setRuleCondition("鈥︹�︹�︹��");
+ 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.setRuleDesc("鍦ㄤ釜鍒澶囨晠闅滀絾涓嶅奖鍝嶈鍔熻兘妯″潡鏁翠綋搴旂敤鎯呭喌涓嬶紝椤诲湪72灏忔椂浠ュ唴鎺掗櫎鏁呴殰銆�");
- calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�144灏忔椂浠ュ悗锛屾瘡瓒呭嚭12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
+ calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�72灏忔椂涓嶈冻144灏忔椂鐨勶紝姣忚秴鍑�12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級");
+ calculateRule5.setMax(144D);
+ calculateRule5.setMin(72D);
calculateRule5.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY);
calculateRule5.setCalcFraction(2.00);
calculateRule5.setCalcUnit(12);
@@ -126,16 +144,18 @@
@Override
@Transactional
+ @SneakyThrows
public AjaxResult importData(MultipartFile file, TContract tContract) {
// 淇濆瓨鍚堝悓
tContract.setCreateTime(DateUtils.getNowDate());
- tContract.setDeleted("0");
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 temp = new CalculateRule();
for (CalculateRule calculateRule : list) {
// 鍒ゆ柇鏁版嵁瀹屾暣鎬�
if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) {
@@ -150,33 +170,50 @@
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.warn("璇峰~鍐�" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "鎵e垎鏁板��");
}
- // 淇濆瓨鐖惰鍒欒幏鍙栫埗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.setContractId(tContract.getId().intValue());
+ calculateRule.setCreateTime(DateUtils.getNowDate());
+ calculateRule.setUpdateTime(DateUtils.getNowDate());
+ calculateRulesToSave.add(calculateRule);
}
- calculateRule.setContractId(tContract.getId().intValue());
- calculateRule.setCreateTime(DateUtils.getNowDate());
- calculateRule.setDeleted(0);
- calculateRule.setParentId(temp.getId());
- calculateRulesToSave.add(calculateRule);
}
// 鎵归噺淇濆瓨瑙勫垯
calculateRuleService.saveBatch(calculateRulesToSave);
+ //鎵归噺淇濆瓨鑰冩牳缁撴灉搴旂敤瑙勫垯
+ calculateMoneyRuleService.saveBatch(JSON.parseArray(tContract.getRuleList(), CalculateMoneyRule.class).stream().peek(
+ calculateMoneyRule -> calculateMoneyRule.setContractId(tContract.getId().intValue())
+ ).collect(Collectors.toList()));
return AjaxResult.success("鎿嶄綔鎴愬姛");
}
@Override
- public List<TContract> selectAll() {
- return list(new LambdaQueryWrapper<TContract>()
- .orderByDesc(TContract::getCreateTime))
- .stream().peek(
- tContract -> tContract.setUnitName(ywUnitService.getById(tContract.getUnitId()).getUnitName())
- ).toList();
+ public Result selectAll(ContractQuery query) {
+ IPage<ContractVO> page = PageUtil.getPage(query, ContractVO.class);
+ baseMapper.getPage(page, query);
+ page.getRecords().stream().forEach(contract -> {
+ Date now = new Date();
+ if (now.before(contract.getStartTime())) {
+ contract.setStatus(ContractStatus.NOT_START);
+ } else if (now.after(contract.getEndTime())) {
+ contract.setStatus(ContractStatus.FINISHED);
+ } else {
+ contract.setStatus(ContractStatus.ACTIVE);
+ }
+ });
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ public List<CalculateMoneyRule> selectMoneyRules(Integer contractId) {
+ return calculateMoneyRuleService.selectMoneyRules(contractId);
+ }
+
+ @Override
+ public List<TContract> selectUsingContract() {
+ return new LambdaQueryChainWrapper<>(baseMapper)
+ .le(TContract::getStartTime, DateUtils.getDate())
+ .ge(TContract::getEndTime, DateUtils.getDate())
+ .list();
}
}
--
Gitblit v1.8.0