Browse Source

feat(check): 临期品订单可用支持多批次单品下单;返利调整自动计算上限;核销微调

master
Yen 2 days ago
parent
commit
9d65c3dbe9
  1. 6
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  2. 9
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  3. 4
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tbs/service/TbsActivityDebugApplicationService.java
  4. 18
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/third/PortalFlowController.java
  5. 23
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplication4CostServiceImpl.java
  6. 53
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/tzc/service/impl/TzcRebateApplicationServiceImpl.java
  7. 1
      cms-modules/cms-system/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

6
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<OmsOrderMapper, OmsOrder> i
Set<String> skuIds = imminentBatches.stream()
.map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet());
if (skuIds.size() != imminentBatches.size()) {
Assert.throwEx("不同批次相同产品,请分开下单");
}
// if (skuIds.size() != imminentBatches.size()) {
// Assert.throwEx("不同批次相同产品,请分开下单");
// }
List<GoodsSku> goodsSkuList = goodsSkuService.listByIds(skuIds);

9
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("测试连接");

4
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){

18
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();
}
}

23
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<Long,List<TzcRebateCenter>> centerMap = centerList.stream()
.collect(Collectors.groupingBy(TzcRebateCenter::getRebateSubjectId));
List<TbsActivity> 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());

53
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<TzcRebateLevelsArgument> argumentList = new ArrayList<>();
List<TzcRebateLevels> levelsList = this.saveLevelListAndArgs(param.getLevelsList(), rebateId,argumentList);
List<TzcRebateLevels> 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<TzcRebateLevels> saveLevelListAndArgs(List<TzcRebateLevelsParam> levelsParamList,
private List<TzcRebateLevels> saveLevelListAndArgs(TzcRebateParam param,
Long rebateId,
List<TzcRebateLevelsArgument> 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<TzcRebateLevelsParam> levelsParamList = param.getLevelsList();
List<TzcRebateLevels> 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<TzcRebatePeriodParam> 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("总目标返利");
}
}
}

1
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<VtbVerificationMappe
}
@Override
@Transactional(rollbackFor = Exception.class)
public void successCommit(Long verificationId) {
this.successCommit(verificationId,true);
}

Loading…
Cancel
Save