From b6d477ad41e2a8ff9393de2beba2e735c78cf781 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 22 七月 2024 18:06:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 96 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 74 insertions(+), 22 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 810cd7b..9182297 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 @@ -3,22 +3,29 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.merge.LoopMergeStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.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.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; @@ -26,6 +33,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞� @@ -38,6 +46,7 @@ public class TContractServiceImpl extends ServiceImpl<TContractMapper, TContract> implements ITContractService { private final ICalculateRuleService calculateRuleService; + private final CalculateMoneyRuleServiceImpl calculateMoneyRuleService; private final YwUnitServiceImpl ywUnitService; @Override @@ -77,19 +86,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 +106,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 +122,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,42 +131,85 @@ @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); List<CalculateRule> list = calculateRuleService.readExcel(file); // 閬嶅巻鐖跺瓙鍏崇郴 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())) { + 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()); - 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); } // 鎵归噺淇濆瓨瑙勫垯 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(); + return baseMapper.selectAll(); + } + + @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