From cebbcb63dfd7c9599868959c7fc36f16ed3b1911 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期三, 24 四月 2024 13:54:11 +0800 Subject: [PATCH] 合同导入模板生成、导入合同及规则、合同规则展示 --- ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java | 8 +- ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 33 ++++++++-- ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java | 5 + ycl-common/src/main/java/enumeration/general/RuleDeductCategoryEnum.java | 27 +++++++++ ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java | 3 ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java | 3 ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java | 47 +++++++++++++++ ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java | 5 + 8 files changed, 118 insertions(+), 13 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java b/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java new file mode 100644 index 0000000..a972243 --- /dev/null +++ b/ycl-common/src/main/java/enumeration/converter/RuleDeductCategoryConverter.java @@ -0,0 +1,47 @@ +package enumeration.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import enumeration.general.RuleDeductCategoryEnum; +import lombok.extern.slf4j.Slf4j; + +/** + * 鎵e垎绫诲瀷鏋氫妇瑁呮崲鍣� + * + * @author gonghl + */ +@Slf4j +public class RuleDeductCategoryConverter implements Converter<RuleDeductCategoryEnum> { + + @Override + public Class supportJavaTypeKey() { + return null; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return null; + } + + @Override + public RuleDeductCategoryEnum convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + if (cellData.getStringValue().equals(RuleDeductCategoryEnum.DEDUCT_POINTS.getDesc())) { + return RuleDeductCategoryEnum.DEDUCT_POINTS; + } else if (cellData.getStringValue().equals(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY.getDesc())) { + return RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY; + } else if (cellData.getStringValue().equals(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY.getDesc())) { + return RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY; + } else { + return null; + } + } + + @Override + public WriteCellData convertToExcelData(RuleDeductCategoryEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + return new WriteCellData(value.getDesc()); + } +} \ No newline at end of file diff --git a/ycl-common/src/main/java/enumeration/general/RuleDeductCategoryEnum.java b/ycl-common/src/main/java/enumeration/general/RuleDeductCategoryEnum.java new file mode 100644 index 0000000..0a2b04f --- /dev/null +++ b/ycl-common/src/main/java/enumeration/general/RuleDeductCategoryEnum.java @@ -0,0 +1,27 @@ +package enumeration.general; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * 鍚堝悓瑙勫垯鎵e垎绫诲瀷 + * @author gonghl + */ +@Getter +public enum RuleDeductCategoryEnum { + DEDUCT_POINTS("DEDUCT_POINTS", "鎵f寚瀹氬垎鏁�"), + MULTIPLY_POINTS_BY_QUANTITY("MULTIPLY_POINTS_BY_QUANTITY", "鍒嗘暟涔樹互鏁伴噺"), + MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY("MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY", "闄や互鏁伴噺鍚庝箻浠ュ垎鏁�"); + + @EnumValue // 鏍囨槑璇ュ瓧娈靛瓨鍏ユ暟鎹簱 + private final String code; + + @JsonValue // 鏍囨槑鍦ㄨ浆JSON鏃朵娇鐢ㄨ瀛楁 + private final String desc; + + RuleDeductCategoryEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java index 5b750d4..b6af342 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateRule.java @@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.ycl.system.domain.TreeEntity; import com.ycl.system.domain.TreeNode; +import enumeration.converter.RuleDeductCategoryConverter; +import enumeration.general.RuleDeductCategoryEnum; import lombok.Data; import java.util.Date; @@ -61,10 +63,10 @@ private String ruleCondition; /** - * 鎵e噺鏂瑰紡 1/2/3 鎵f寚瀹氬垎鏁�/鍒嗘暟涔樹互鏁伴噺/闄や互鏁伴噺鍚庝箻浠ュ垎鏁� + * 鎵e噺鏂瑰紡 鎵f寚瀹氬垎鏁�/鍒嗘暟涔樹互鏁伴噺/闄や互鏁伴噺鍚庝箻浠ュ垎鏁� */ - @ExcelProperty("鎵e垎鏂瑰紡") - private String deductCategory; + @ExcelProperty(value = "鎵e垎鏂瑰紡", converter = RuleDeductCategoryConverter.class) + private RuleDeductCategoryEnum deductCategory; /** * 鎵i櫎鍒嗘暟 diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java index e3498b4..e4c77d9 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TContract.java @@ -57,6 +57,11 @@ @JsonFormat(pattern = "yyyy-MM-dd hh-mm-ss") private Date endTime; + /** + * 鍚堝悓闄勪欢 + */ + private String attachment; + private Date createTime; private Date updateTime; diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java b/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java index aaa12f7..a4f51da 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/TContractController.java @@ -59,8 +59,7 @@ @PreAuthorize("@ss.hasPermi('system:user:import')") @PostMapping("/importData") public AjaxResult importData(MultipartFile file, TContract tContract) { - tContractService.importData(file, tContract); - return success(); + return tContractService.importData(file, tContract); } /** diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java index 0f5aaab..2be0456 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateRuleService.java @@ -69,5 +69,10 @@ */ List<CalculateRule> readExcel(MultipartFile file); + /** + * 鏍规嵁鍚堝悓id鏌ヨ瑙勫垯 + * @param contractId 鍚堝悓id + * @return 鍚堝悓瑙勫垯 + */ List<CalculateRule> getRuleListByContractId(Integer contractId); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java index d9835a0..338ad78 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/ITContractService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.platform.domain.entity.TContract; +import com.ycl.system.AjaxResult; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; @@ -27,7 +28,7 @@ * @param tContract 鍚堝悓淇℃伅 * @return 瀵煎叆缁撴灉 */ - void importData(MultipartFile file, TContract tContract); + AjaxResult importData(MultipartFile file, TContract tContract); List<TContract> selectAll(); } 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 810cd7b..c3e1b55 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 @@ -12,13 +12,17 @@ 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.utils.DateUtils; import com.ycl.utils.StringUtils; +import enumeration.general.RuleDeductCategoryEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; +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; import java.net.URLEncoder; @@ -77,19 +81,19 @@ calculateRule1.setRuleName("瑙嗛骞冲潎鍦ㄧ嚎鐜�"); calculateRule1.setRuleDesc("锛�1锛夎棰戝湪绾跨巼=瑙嗛鍦ㄧ嚎鏁伴噺梅鍓嶇鏈嶅姟閰嶇疆鏁帮紙搴旀墸闄や笉鍙姉鍔涙垨涓庝腑鏍囦汉鏈嶅姟鏃犲叧閫犳垚鐨勬帀绾块櫎澶栥�傦級"); calculateRule1.setRuleCondition("鈮�98%"); - calculateRule1.setDeductCategory("鎵f寚瀹氬垎鏁�"); + calculateRule1.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); calculateRule1.setCalcFraction(0.00); list.add(calculateRule1); CalculateRule calculateRule2 = new CalculateRule(); calculateRule2.setRuleDesc("锛�2锛夎棰戝钩鍧囧湪绾跨巼锛氬綋鏈堟瘡鏃ヨ棰戝湪绾跨巼鐨勫钩鍧囧�笺��"); calculateRule2.setRuleCondition("95%鈮よ棰戝钩鍧囧湪绾跨巼锛�98%"); - calculateRule2.setDeductCategory("鎵f寚瀹氬垎鏁�"); + calculateRule2.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); calculateRule2.setCalcFraction(5.00); list.add(calculateRule2); CalculateRule calculateRule3 = new CalculateRule(); calculateRule3.setRuleDesc("锛�3锛夎棰戝湪绾跨巼淇濈暀鏁存暟骞朵笖鍚戜笅鍙栨暣銆�"); calculateRule3.setRuleCondition("90%鈮よ棰戝钩鍧囧湪绾跨巼锛�95%"); - calculateRule3.setDeductCategory("鎵f寚瀹氬垎鏁�"); + calculateRule3.setDeductCategory(RuleDeductCategoryEnum.DEDUCT_POINTS); calculateRule3.setCalcFraction(10.00); list.add(calculateRule3); CalculateRule calculateRule4 = new CalculateRule(); @@ -97,7 +101,7 @@ calculateRule4.setRuleName("鍓嶇鎰熺煡婧愭不鐞嗗伐浣�"); calculateRule4.setRuleDesc("鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級"); calculateRule4.setRuleCondition("瑙嗛鐩戞帶鎽勫儚鏈烘椂閽熶笉鍚屾锛�24灏忔椂鍐呮湭淇鐨�"); - calculateRule4.setDeductCategory("鍒嗘暟涔樹互鏁伴噺"); + calculateRule4.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY); calculateRule4.setCalcFraction(0.1); list.add(calculateRule4); CalculateRule calculateRule7 = new CalculateRule(); @@ -113,7 +117,7 @@ calculateRule5.setRuleName("鍚庡彴绯荤粺鐨勪繚闅�"); calculateRule5.setRuleDesc("鍦ㄤ釜鍒澶囨晠闅滀絾涓嶅奖鍝嶈鍔熻兘妯″潡鏁翠綋搴旂敤鎯呭喌涓嬶紝椤诲湪72灏忔椂浠ュ唴鎺掗櫎鏁呴殰銆�"); calculateRule5.setRuleCondition("鍗曟鏁呴殰鏃堕暱鑻ヨ秴鍑�144灏忔椂浠ュ悗锛屾瘡瓒呭嚭12灏忔椂锛堜笉瓒�12灏忔椂鎸�12灏忔椂璁★級"); - calculateRule5.setDeductCategory("闄や互鏁伴噺鍚庝箻浠ュ垎鏁�"); + calculateRule5.setDeductCategory(RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY); calculateRule5.setCalcFraction(2.00); calculateRule5.setCalcUnit(12); list.add(calculateRule5); @@ -122,7 +126,8 @@ @Override @Transactional - public void importData(MultipartFile file, TContract tContract) { + public AjaxResult importData(MultipartFile file, TContract tContract) { + // 淇濆瓨鍚堝悓 tContract.setCreateTime(DateUtils.getNowDate()); tContract.setDeleted("0"); save(tContract); @@ -132,7 +137,20 @@ List<CalculateRule> calculateRulesToSave = new ArrayList<>(); CalculateRule temp = new CalculateRule(); for (CalculateRule calculateRule : list) { - // 鐖惰鍒� + // 鍒ゆ柇鏁版嵁瀹屾暣鎬� + if (ObjectUtils.isEmpty(calculateRule.getDeductCategory())) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.warn("璇烽�夋嫨" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "鎵e垎鏂瑰紡"); + } + if (RuleDeductCategoryEnum.MULTIPLY_POINTS_AFTER_DIVIDING_QUANTITY.equals(calculateRule.getDeductCategory()) && ObjectUtils.isEmpty(calculateRule.getCalcUnit())) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.warn("璇峰~鍐�" + calculateRule.getRuleName() + calculateRule.getRuleCondition() + "闄や互鏁伴噺"); + } + if(ObjectUtils.isEmpty(calculateRule.getCalcFraction())) { + 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()); @@ -150,6 +168,7 @@ } // 鎵归噺淇濆瓨瑙勫垯 calculateRuleService.saveBatch(calculateRulesToSave); + return AjaxResult.success("鎿嶄綔鎴愬姛"); } @Override -- Gitblit v1.8.0