diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 4b82698..fb461f7 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -937,9 +937,9 @@ public class OmsOrderServiceImpl extends ServiceImpl i Set skuIds = imminentBatches.stream() .map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet()); - if (skuIds.size() != imminentBatches.size()) { - Assert.throwEx("不同批次相同产品,请分开下单"); - } +// if (skuIds.size() != imminentBatches.size()) { +// Assert.throwEx("不同批次相同产品,请分开下单"); +// } List goodsSkuList = goodsSkuService.listByIds(skuIds); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index 627782f..3949edd 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java @@ -357,6 +357,15 @@ public interface SeeYonOperationService extends SeeYonBaseService{ targetId = affairCommit.getPolicyId()+""; } } + if (!StringUtils.hasLength(affairCommit.getComment())){ + if (affairCommit.getState().equals(0)){ + affairCommit.setComment("不同意"); + }else if (affairCommit.getState().equals(1)){ + affairCommit.setComment("同意"); + }else if (affairCommit.getState().equals(2)){ + affairCommit.setComment("退回"); + } + } String templateCode = getTemplateCode(); StopWatch stopWatch = new StopWatch(templateCode); stopWatch.start("测试连接"); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java index 855f11d..5cc87b8 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java @@ -77,7 +77,7 @@ public class TbsActivityDebugApplicationService { if(activity.getReleaseFlag().equals(1)){ if (activity.getReleaseAmount()==null||activity.getReleaseAmount().compareTo(releaseAmount)!=0){ updateActivity = true; - activity.setReleaseAmount(releaseAmount); + activity4Upd.setReleaseAmount(releaseAmount); } } @@ -456,7 +456,6 @@ public class TbsActivityDebugApplicationService { newReleaseLog.setOptType(4); newReleaseLogList.add(newReleaseLog); } - } @@ -470,7 +469,6 @@ public class TbsActivityDebugApplicationService { if(activity.getReleaseAmount()!=null && newReleaseAmt.compareTo(activity.getReleaseAmount())!=0){ log.error("预算释放金额异常 activity{},.getReleaseAmount():{} newReleaseAmt:{}",activityId,activity.getReleaseAmount(),newReleaseAmt); - return "预算释放金额异常"; } if(updateSubject){ diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalFlowController.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalFlowController.java index cf67a88..895c4ee 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalFlowController.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalFlowController.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.third; import com.qs.serve.framework.base.model.R; import com.qs.serve.modules.oms.service.OmsOrderOptionsService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.common.AuthContextUtils; import com.qs.serve.modules.sys.entity.SysSyncLog; import com.qs.serve.modules.sys.service.SysSyncLogService; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; @@ -13,6 +14,7 @@ import com.qs.serve.modules.vtb.service.VtbVerificationBatchOperationService; import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -116,6 +118,7 @@ public class PortalFlowController { public R compenstate(@PathVariable("flowCode")String flowCode, @PathVariable("formId") String formId, HttpServletRequest request){ log.info("开始补偿流程:{}",flowCode); + SysSyncLog syncLog = new SysSyncLog(); syncLog.setFromPlat("flow-compenstate:"+flowCode+":"+formId); syncLog.setUrl(request.getRequestURI()); @@ -130,7 +133,18 @@ public class PortalFlowController { if(targetId==null){ return R.error("formTableId或templateCode无效"); } + newThreadToSync(flowCode, syncLog, targetId); + return R.ok(); + } + @Async + public void newThreadToSync(String flowCode, SysSyncLog syncLog, String targetId) { + AuthContextUtils.setTenant("001"); + try { + Thread.sleep(90*1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } if(TbsSeeYonConst.PolicyConf.Code().equals(flowCode)){ //政策申请模板 tzcPolicyOperationService.runCompensate(targetId); @@ -162,14 +176,12 @@ public class PortalFlowController { //核销 批量申请 omsOrderOptionsService.runCompensate(targetId); }else { - syncLog.setRemark("业务["+flowCode+"]未被收录"); + syncLog.setRemark("业务["+ flowCode +"]未被收录"); sysSyncLogService.updateById(syncLog); - return R.error("业务["+flowCode+"]未被收录"); } syncLog.setSuccessStatus(1); syncLog.setRemark("调用成功"); sysSyncLogService.updateById(syncLog); - return R.ok(); } } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java index bead2ba..43d9e62 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java @@ -135,19 +135,22 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio tbsCostApplyService.save(costApply); Long costApplyId = costApply.getId(); - String levelRemark = levelsList.stream() - .filter(a-> StringUtils.isNotEmpty(a.getExampleRemark())) - .map(TzcRebateLevels::getExampleRemark) - .collect(Collectors.joining(";")); - if (levelRemark.length()>590){ - levelRemark = levelRemark.substring(0,590) + "..."; - } +// String levelRemark = levelsList.stream() +// .filter(a-> StringUtils.isNotEmpty(a.getExampleRemark())) +// .map(TzcRebateLevels::getExampleRemark) +// .collect(Collectors.joining(";")); +// if (levelRemark.length()>590){ +// levelRemark = levelRemark.substring(0,590) + "..."; +// } Map> centerMap = centerList.stream() .collect(Collectors.groupingBy(TzcRebateCenter::getRebateSubjectId)); List activityList = new ArrayList<>(); + // 附件只保存到第一个活动中 + boolean isFirst = true; + for (int i = 0; i < periodList.size(); i++) { TzcRebatePeriod period = periodList.get(i); //构建活动 @@ -158,7 +161,7 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio activity.setActivityCode(rebate.getRebateCode()+"_"+(i+1)); activity.setActivityState(TbsActivityState.STATE_0_Todo); activity.setCostPassFlag(0); - activity.setActTitle(levelRemark); + activity.setActTitle(period.getExtRemark()); activity.setSupplierId(rebate.getSupplierId()); activity.setSupplierName(rebate.getSupplierName()); activity.setSupplierCode(rebate.getSupplierCode()); @@ -167,6 +170,10 @@ public class TzcRebateApplication4CostServiceImpl implements TzcRebateApplicatio activity.setPreStartDate(period.getPeriodStartDate().plusDays(preCheckDays)); activity.setPreEndDate(period.getPeriodEndDate().plusDays(preCheckDays)); activity.setPreCheckDate(period.getPeriodEndDate().plusDays(preCheckDays)); + if (isFirst){ + isFirst = false; + activity.setAttachIds(rebate.getAttachIds()); + } // 核销模式:0-人工复核;1-自动核销 // 活动状态自动核销状态:0-无需自动核销;1-需自动核销;2-已自动核销 activity.setAutoCheckState(rebate.getCheckModel()); diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java index 8e91363..7b692ce 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java @@ -44,6 +44,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -196,7 +197,7 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ // 保存坎级和设置参数 List argumentList = new ArrayList<>(); - List levelsList = this.saveLevelListAndArgs(param.getLevelsList(), rebateId,argumentList); + List levelsList = this.saveLevelListAndArgs(param, rebateId,argumentList); // 返利的商品,关联主表id和code for (TzcRebateGoods rebateGoods : tzcRebateGoodsList) { @@ -386,13 +387,27 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ /** * 保存坎级和设置参数 - * @param levelsParamList + * @param param * @param rebateId * @param argumentList */ - private List saveLevelListAndArgs(List levelsParamList, + private List saveLevelListAndArgs(TzcRebateParam param, Long rebateId, List argumentList) { + // 期间最大的同期金额 + BigDecimal maxSameAmt = BigDecimal.ZERO; + // 期间最大的目标金额 + BigDecimal maxTargetAmt = BigDecimal.ZERO; + for (TzcRebatePeriodParam periodParam : param.getPeriodList()) { + if (periodParam.getPeriodAmount()!=null && periodParam.getPeriodAmount().compareTo(maxTargetAmt)>0){ + maxTargetAmt = periodParam.getPeriodAmount(); + } + if (periodParam.getSamePeriodAmount()!= null && periodParam.getSamePeriodAmount().compareTo(maxSameAmt)>0){ + maxSameAmt = periodParam.getSamePeriodAmount(); + } + } + + List levelsParamList = param.getLevelsList(); List levelsList = new ArrayList<>(); for (TzcRebateLevelsParam levelsParam : levelsParamList) { TzcRebateLevels levels = new TzcRebateLevels(); @@ -412,13 +427,35 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ levelsList.add(levels); Long levelId = levels.getId(); + // 年度补偿返利 TzcRebateLevelsArgument argument = buildArgByParam(levelsParam.getOverallTargetArgument()); argument.setBusinessType(TzcArgTypes.LevelOverallReturn.name()); argument.setLevelId(levelId); argument.setRebateId(rebateId); tzcRebateLevelsArgumentService.save(argument); - TzcRebateLevelsArgument argument2 = buildArgByParam(levelsParam.getTargetArgument()); + // 目标返利 + TzcRebateArgumentParam targetArgument = levelsParam.getTargetArgument(); + TzcRebateLevelsArgument argument2 = buildArgByParam(targetArgument); + // 最高返利上限如果为空,流程修改 + if (argument2.getMaxReturn()==null){ + // 如果设置固定金额,则返利上限 = 返利固定金额 + if (argument2.getRateAmtFlag()==1){ + argument2.setMaxReturn(argument2.getReturnFixed()); + }else { + if (levels.getConditionSelect()==1){ + // 匹配条件为固定金额情况:返利上限 = 条件的固定金额 * 返利比率 + argument2.setMaxReturn(levels.getConditionAmountEnd().multiply(argument2.getReturnRate() + .divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP))); + }else { + // 匹配条件为百分比情况:返利上限 = 符合条件的金额A * 返利比率 + // 符合条件的金额A-为期间最高的同期金额或者期间最高目标金额 + BigDecimal allowAmt = levels.getConditionType()==0?maxSameAmt:maxTargetAmt; + argument2.setMaxReturn(allowAmt.multiply(argument2.getReturnRate() + .divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP))); + } + } + } argument2.setBusinessType(TzcArgTypes.LevelReturn.name()); argument2.setLevelId(levelId); argument2.setRebateId(rebateId); @@ -651,9 +688,13 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ // Assert.throwEx("科目额度合计异常金额:"+totalAmount+"元"); // } + boolean isCompensation = false; List periodList = param.getPeriodList(); for (int i = 0; i < periodList.size(); i++) { TzcRebatePeriodParam period = periodList.get(i); + if (period.getCompensationFlag()!=null&&period.getCompensationFlag().equals(1)){ + isCompensation = true; + } for (int j = i + 1; j < periodList.size(); j++) { TzcRebatePeriodParam period2 = periodList.get(j); if (period.getPeriodEndDate().compareTo(period2.getPeriodStartDate()) >= 0 @@ -673,7 +714,9 @@ public class TzcRebateApplicationServiceImpl implements TzcRebateApplicationServ this.checkSameLevelSameSettings(entry.getKey(), levelsList); TzcRebateLevelsParam levels = levelsList.get(0); levels.getTargetArgument().check("返利"); - levels.getOverallTargetArgument().check("总目标返利"); + if (isCompensation){ + levels.getOverallTargetArgument().check("总目标返利"); + } } } diff --git a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index f91cf5b..783669f 100644 --- a/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -1623,6 +1623,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl