Browse Source

BirActivityCenterGood添加核销分割;修改费用补偿;核销补偿;各审批编码修改;subList异常修复

contract
Yen 2 years ago
parent
commit
12b8db02f4
  1. 8
      src/main/java/com/qs/serve/common/framework/redis/RedisService.java
  2. 67
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  3. 1
      src/main/java/com/qs/serve/controller/AdminPortalController.java
  4. 3
      src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java
  5. 3
      src/main/java/com/qs/serve/modules/bir/entity/dto/BirCenterGoodSplitDTO.java
  6. 44
      src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java
  7. 77
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonCompensateService.java
  8. 71
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  9. 20
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  10. 16
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java
  11. 82
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyCompensateServiceImpl.java
  12. 32
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  13. 68
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  14. 14
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyItemServiceImpl.java
  15. 21
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyOperationServiceImpl.java
  16. 7
      src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyServiceImpl.java
  17. 10
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  18. 6
      src/main/java/com/qs/serve/modules/vtb/entity/VtbFundFlow.java
  19. 18
      src/main/java/com/qs/serve/modules/vtb/entity/dto/VtbFundFlowSumAmtDTO.java
  20. 10
      src/main/java/com/qs/serve/modules/vtb/mapper/VtbFundFlowMapper.java
  21. 110
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java
  22. 2
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  23. 27
      src/main/java/com/qs/serve/task/BirTask.java
  24. 20
      src/main/java/com/qs/serve/task/controller/TaskActivityController.java
  25. 90
      src/main/resources/mapper/vtb/VtbFundFlowMapper.xml

8
src/main/java/com/qs/serve/common/framework/redis/RedisService.java

@ -227,6 +227,14 @@ public class RedisService {
return null;
}
public Long getLong(final String key) {
String result = getString(key);
if(result!=null){
return Long.parseLong(result);
}
return null;
}
/**
* 哈希 添加
*

67
src/main/java/com/qs/serve/common/util/CodeGenUtil.java

@ -2,6 +2,8 @@ package com.qs.serve.common.util;
import cn.hutool.core.util.IdUtil;
import com.qs.serve.common.framework.redis.RedisService;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.beans.BeansException;
import java.time.LocalDate;
@ -15,19 +17,76 @@ import java.time.format.DateTimeFormatter;
*/
public class CodeGenUtil {
public static String generate(String key,int perch){
@Getter
@AllArgsConstructor
public enum SourceKey{
CostApply("cost_apply"),
Activity("activity"),
Verification("verification"),
Policy("policy"),
PolicyItem("policy_item");
private String code;
}
public static String generate(SourceKey sourceKey){
try {
String key = "code_index:"+sourceKey.getCode();
RedisService redisService = SpringUtils.getBean(RedisService.class);
Long value = redisService.getLong(key);
if(value==null){
redisService.set(key,1);
value = 1L;
}else {
value++;
}
if(value>8000000){
redisService.set(key,1);
}else {
redisService.set(key,value);
}
LocalDate localDateTime = LocalDate.now();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");
String localTime = df.format(localDateTime);
Integer value = redisService.getInteger(key)+1;
String appendStr = String.format("%0"+perch+"d", value);
return localTime + appendStr;
String appendStr = digits32(value);
return localTime.substring(2) + appendStr;
} catch (BeansException e) {
e.printStackTrace();
}
return IdUtil.getSnowflakeNextIdStr();
}
/**
* 32个字符用来表示32进制
*/
final static char[] digits = {
'0' , '1' , '2' , '3' , '4' , '5' ,
'6' , '7' , '8' , '9' , 'A' , 'B' ,
'C' , 'D' , 'E' , 'F' , 'G' , 'H' ,
'J' , 'K' , 'L' , 'M' , 'N' , 'P' ,
'Q' , 'R' , 'T' , 'U' , 'V' , 'W' ,
'X' , 'Y'
};
/**
* 10=>32
* @param val
* @return
*/
static String digits32(long val) {
// 32=2^5=二进制100000
int shift = 5;
// numberOfLeadingZeros 获取long值从高位连续为0的个数,比如val=0,则返回64
// 此处mag=long值二进制减去高位0之后的长度
int mag = Long.SIZE - Long.numberOfLeadingZeros(val);
int len = Math.max(((mag + (shift - 1)) / shift), 1);
char[] buf = new char[len];
do {
// &31相当于%32
buf[--len] = digits[((int) val) & 31];
val >>>= shift;
} while (val != 0 && len > 0);
return new String(buf);
}
}

1
src/main/java/com/qs/serve/controller/AdminPortalController.java

@ -30,7 +30,6 @@ import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyCompensateServiceImpl;
import com.qs.serve.modules.third.ThirdTokenUtil;
import com.qs.serve.modules.tzc.entity.TzcPolicy;
import com.qs.serve.modules.tzc.service.TzcPolicyService;

3
src/main/java/com/qs/serve/modules/bir/entity/BirActivityCenterGoods.java

@ -93,6 +93,9 @@ public class BirActivityCenterGoods implements Serializable {
/** 活动完成主题 */
private Integer activityFinishedFlag;
/** 活动释放 */
private BigDecimal activityTotalReleaseAmount;
/** 科目id */
@NotNull(message = "科目id不能为空")
private Long subjectId;

3
src/main/java/com/qs/serve/modules/bir/entity/dto/BirCenterGoodSplitDTO.java

@ -17,4 +17,7 @@ public class BirCenterGoodSplitDTO {
//当前CenterGoods分割项核销金额(粗略计算)
BigDecimal currentSplitCheckAmount;
//当前CenterGoods分割项核销金额(粗略计算)
BigDecimal currentSplitReleaseAmount;
}

44
src/main/java/com/qs/serve/modules/bir/service/impl/BirActivityCenterGoodsServiceImpl.java

@ -18,6 +18,10 @@ import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityCenter;
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods;
import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService;
import com.qs.serve.modules.vtb.common.VtbFundFlowType;
import com.qs.serve.modules.vtb.entity.VtbFundFlow;
import com.qs.serve.modules.vtb.entity.dto.VtbFundFlowSumAmtDTO;
import com.qs.serve.modules.vtb.mapper.VtbFundFlowMapper;
import com.tencentcloudapi.cii.v20201210.models.ResultObject;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -30,6 +34,7 @@ import com.qs.serve.modules.bir.mapper.BirActivityCenterGoodsMapper;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -52,6 +57,8 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
private final BmsRegion2Mapper region2Mapper;
private final VtbFundFlowMapper fundFlowMapper;
@Override
public void buildReport(int year, int month) {
LocalDate startDate = LocalDate.of(year,month,1);
@ -76,6 +83,14 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
Map<Long,List<TbsActivityCenterGoods>> collectMap = activityCenterGoodsAllList.stream()
.collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId));
//TODO查询费用释放
VtbFundFlow flow = new VtbFundFlow();
flow.setFundType(VtbFundFlowType.Release);
flow.setSelectActivityIds(new ArrayList<>(collectMap.keySet()));
List<VtbFundFlowSumAmtDTO> actReleaseList = fundFlowMapper.listSumAmount(flow);
final Map<Long,BigDecimal> actReleaseMap = new HashMap<>();
actReleaseList.forEach(actRelease -> actReleaseMap.put(actRelease.getActivityId(),actRelease.getTotalAmt()));
for (Long activityId : collectMap.keySet()) {
//用于保存的对象列表
List<BirActivityCenterGoods> bacgList = new ArrayList<>();
@ -90,20 +105,20 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
for (DateSplitDTO currDateSplit : dateSplitList) {
//获取该项分割金额对象
BirCenterGoodSplitDTO goodSplitDTO = this.buildSplitAmount(activityCenterGoods,
dateSplitList, currDateSplit,currentActDays);
dateSplitList, currDateSplit,currentActDays,actReleaseMap);
//创建底表对象
BirActivityCenterGoods entity = createBirActivityCenterGoodsEntity(costCenterList,
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO);
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO,actReleaseMap);
bacgList.add(entity);
}
}else if (dateSplitList.size()==1){
DateSplitDTO currDateSplit = dateSplitList.get(0);
//获取该项分割金额对象
BirCenterGoodSplitDTO goodSplitDTO = this.buildSplitAmount(activityCenterGoods,
dateSplitList, currDateSplit,currentActDays);
dateSplitList, currDateSplit,currentActDays,actReleaseMap);
//创建底表对象
BirActivityCenterGoods entity = createBirActivityCenterGoodsEntity(costCenterList,
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO);
activityCenterGoods, currentActDays, currDateSplit, goodSplitDTO,actReleaseMap);
bacgList.add(entity);
}
}
@ -129,7 +144,8 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
TbsActivityCenterGoods activityCenterGoods,
Integer currentActDays,
DateSplitDTO currDateSplit,
BirCenterGoodSplitDTO goodSplitDTO) {
BirCenterGoodSplitDTO goodSplitDTO,
Map<Long,BigDecimal> actReleaseMap) {
BirActivityCenterGoods entity = new BirActivityCenterGoods();
entity.setActivityCenterGoodsId(activityCenterGoods.getId());
entity.setKeyNum(currDateSplit.getYearMonth());
@ -138,12 +154,14 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
entity.setEndDate(currDateSplit.getEndDate());
entity.setSplitAmount(goodSplitDTO.getCurrentSplitAmount());
entity.setSplitUsedAmount(goodSplitDTO.getCurrentSplitCheckAmount());
entity.setSplitReleaseAmount(goodSplitDTO.getCurrentSplitReleaseAmount());
entity.setCenterGoodsCode(activityCenterGoods.getCenterGoodsCode());
entity.setCostApplyId(activityCenterGoods.getCostApplyId());
entity.setActivityId(activityCenterGoods.getActivityId());
entity.setActivityCode(activityCenterGoods.getActivityCode());
entity.setActivityTotalAmount(activityCenterGoods.getActivityAmt());
entity.setActivityTotalCheckAmount(activityCenterGoods.getActivityCheckAmt());
entity.setActivityTotalReleaseAmount(actReleaseMap.get(activityCenterGoods.getActivityId()));
entity.setActivityFinishedFlag(activityCenterGoods.getActivityFinishedFlag());
entity.setSubjectId(activityCenterGoods.getSubjectId());
entity.setSubjectCode(activityCenterGoods.getSubjectCode());
@ -273,12 +291,21 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
private BirCenterGoodSplitDTO buildSplitAmount(TbsActivityCenterGoods activityCenterGoods,
List<DateSplitDTO> dateSplitList ,
DateSplitDTO currDateSplit,
Integer currentActDays){
Integer currentActDays,
Map<Long,BigDecimal> actReleaseMap){
//释放金额
BigDecimal activityReleaseAmt = actReleaseMap.get(activityCenterGoods.getActivityId());
//活动相关
BigDecimal activityAmt = activityCenterGoods.getActivityAmt();
BigDecimal activityCheckAmt = activityCenterGoods.getActivityCheckAmt();
//当前CenterGoods项金额
BigDecimal centerGoodsAmount = activityCenterGoods.getCenterGoodsAmount();
//当前CenterGoods项释放金额
BigDecimal currentReleaseAmount = activityReleaseAmt==null?BigDecimal.ZERO:
activityReleaseAmt
.multiply(activityCenterGoods.getCenterGoodsRate())
.multiply(activityCenterGoods.getCenterGoodsRate())
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN);
//当前CenterGoods分割项金额
BigDecimal currentSplitAmount = activityCenterGoods.getCenterGoodsAmount();
//当前CenterGoods项核销金额(粗略计算)
@ -288,7 +315,7 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
.divide(new BigDecimal("10000"),BigDecimal.ROUND_DOWN);
//当前CenterGoods分割项核销金额(粗略计算)
BigDecimal currentSplitCheckAmount = currentSplitAmount;
BigDecimal currentReleaseSplitAmount = currentCheckAmount;
//日期占比
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "")
.divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN);
@ -301,15 +328,18 @@ public class BirActivityCenterGoodsServiceImpl extends ServiceImpl<BirActivityCe
}
currentSplitAmount = currentSplitAmount.subtract(centerGoodsAmount.multiply(dayRate));
currentSplitCheckAmount = currentSplitCheckAmount.subtract(currentCheckAmount.multiply(dayRate));
currentReleaseSplitAmount = currentReleaseSplitAmount.subtract(currentReleaseSplitAmount.multiply(dayRate));
break;
}
} else {
currentSplitAmount = centerGoodsAmount.multiply(dayRate);
currentSplitCheckAmount = currentCheckAmount.multiply(dayRate);
currentReleaseSplitAmount = currentReleaseSplitAmount.multiply(dayRate);
}
BirCenterGoodSplitDTO goodSplitDTO = new BirCenterGoodSplitDTO();
goodSplitDTO.setCurrentSplitAmount(currentSplitAmount);
goodSplitDTO.setCurrentSplitCheckAmount(currentSplitCheckAmount);
goodSplitDTO.setCurrentSplitReleaseAmount(currentReleaseSplitAmount);
return goodSplitDTO;
}

77
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonCompensateService.java

@ -1,77 +0,0 @@
package com.qs.serve.modules.seeyon.service;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.seeyon.entity.SyAffairStateResult;
import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
/**
* @author YenHex
* @since 2023/5/23
*/
public interface SeeYonCompensateService extends SeeYonBaseService{
/**
* 补偿:审批中
* @param targetId
* @return
*/
Object compensateNext(String targetId);
/**
* 补偿:审批退回
* @param targetId
* @return
*/
Object compensateBacked(String targetId);
/**
* 补偿:审批完成
* @param targetId
* @return
*/
Object compensateFinished(String targetId);
/**
* 补偿:审批拒绝
* @param targetId
* @return
*/
Object compensateRefuse(String targetId);
/**
* 执行的主要方法
* @param targetId
* @return
*/
default R<?> runCompensate(String targetId){
testConnection();
String templateCode = getTemplateCode();
SyAffairStateResult stateResult =checkAffairState(targetId,templateCode);
SyAffairState affairState = stateResult.getState();
if(affairState.equals(SyAffairState.next)){
return R.ok(compensateNext(targetId));
}else if(affairState.equals(SyAffairState.backed)){
return R.ok(compensateBacked(targetId));
}else if(affairState.equals(SyAffairState.finished)){
return R.ok(compensateFinished(targetId));
}else if(affairState.equals(SyAffairState.refuse)){
return R.ok(compensateRefuse(targetId));
}else if(affairState.equals(SyAffairState.error)){
return R.error("数据异常请联系管理员");
}else{
return R.error("OA无相关审批数据");
}
}
/**
* 发送请求获取状态
* @param targetId
* @param templateCode
* @return
*/
default SyAffairStateResult checkAffairState(String targetId, String templateCode){
return getRequestService().checkAffairState(targetId,templateCode);
};
}

71
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java

@ -8,8 +8,10 @@ import com.qs.serve.common.util.SpringUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.seeyon.entity.CtpAffair;
import com.qs.serve.modules.seeyon.entity.CtpAffairQo;
import com.qs.serve.modules.seeyon.entity.SyAffairStateResult;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO;
import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeParam;
import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.sys.entity.SysPostUser;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysPostUserService;
@ -75,7 +77,9 @@ public interface SeeYonOperationService extends SeeYonBaseService{
* @param param
* @return
*/
Object doNext(TbsAffairCommitBo param);
default Object doNext(TbsAffairCommitBo param){
return null;
}
default SysUserService getSysUserService(){
return SpringUtils.getBean(SysUserService.class);
@ -278,4 +282,69 @@ public interface SeeYonOperationService extends SeeYonBaseService{
}
/**
* 补偿:审批中
* @param targetId
* @return
*/
default Object compensateNext(String targetId){
return null;
}
/**
* 补偿:审批退回
* @param targetId
* @return
*/
Object compensateBacked(String targetId);
/**
* 补偿:审批完成
* @param targetId
* @return
*/
Object compensateFinished(String targetId);
/**
* 补偿:审批拒绝
* @param targetId
* @return
*/
Object compensateRefuse(String targetId);
/**
* 执行的主要方法
* @param targetId
* @return
*/
default R<?> runCompensate(String targetId){
testConnection();
String templateCode = getTemplateCode();
SyAffairStateResult stateResult =checkAffairState(targetId,templateCode);
SyAffairState affairState = stateResult.getState();
if(affairState.equals(SyAffairState.next)){
return R.ok(compensateNext(targetId));
}else if(affairState.equals(SyAffairState.backed)){
return R.ok(compensateBacked(targetId));
}else if(affairState.equals(SyAffairState.finished)){
return R.ok(compensateFinished(targetId));
}else if(affairState.equals(SyAffairState.refuse)){
return R.ok(compensateRefuse(targetId));
}else if(affairState.equals(SyAffairState.error)){
return R.error("数据异常请联系管理员");
}else{
return R.error("OA无相关审批数据");
}
}
/**
* 发送请求获取状态
* @param targetId
* @param templateCode
* @return
*/
default SyAffairStateResult checkAffairState(String targetId, String templateCode){
return getRequestService().checkAffairState(targetId,templateCode);
};
}

20
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -34,7 +34,6 @@ import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyCompensateServiceImpl;
import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -74,7 +73,6 @@ public class TbsCostApplyController {
private SeeYonRequestService seeYonService;
private TbsBudgetApplicationService budgetApplicationService;
private SysPostUserService postUserService;
private TbsCostApplyCompensateServiceImpl tbsCostApplyCompensateService;
private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl;
/**
@ -242,7 +240,7 @@ public class TbsCostApplyController {
if(contract&&!supplier.getSupplierFlag().equals(1)){
return R.error("当前用户非供应商");
}
entity.setCode(IdUtil.dateTimeStampId());
entity.setCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply));
entity.setSupplierCode(supplier.getCode());
entity.setSupplierName(supplier.getName());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
@ -273,7 +271,7 @@ public class TbsCostApplyController {
TbsCostApply entity = CopierUtil.copy(costApplyBo,new TbsCostApply());
BmsSupplier supplier = bmsSupplierService.getById(entity.getSupplierId());
//entity.setId(IdUtil.getSnowFlakeId());
entity.setCode("CA"+IdUtil.timeStampId());
entity.setCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply));
entity.setTemplateId(param.getTemplateId());
entity.setTemplateTitle(param.getTemplateTitle());
activityBo.setTemplateId(param.getTemplateId());
@ -367,18 +365,6 @@ public class TbsCostApplyController {
return tbsCostApplyOperationServiceImpl.commitAffair(affairCommit);
}
/**
* 补偿接口
* @param param
* @return
*/
@PostMapping("/compensate")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.DELETE)
public R<?> compensateOAResult(@RequestBody CompensateDTO param){
tbsCostApplyCompensateService.runCompensate(param.getId());
return R.ok();
}
/**
* 补偿按钮
* @param id
@ -387,7 +373,7 @@ public class TbsCostApplyController {
@PostMapping("/compensate/{id}")
@SysLog(module = SystemModule.Budget, title = "费用申请", biz = BizType.UPDATE)
public R<?> compensate(@PathVariable("id") String id){
return tbsCostApplyCompensateService.runCompensate(id);
return tbsCostApplyOperationServiceImpl.runCompensate(id);
}
/**

16
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsActivityServiceImpl.java

@ -124,8 +124,20 @@ public class TbsActivityServiceImpl extends ServiceImpl<TbsActivityMapper,TbsAct
activity.setAttachIds(null);
}else {
activity = CopierUtil.copy(activityBo,new TbsActivity());
String random = String.format("%03d",new Random().nextInt(999));
activity.setActivityCode("G"+ StringUtils.genShortId() + random);
List<TbsActivity> activityList = listByCostApplyId(costApply.getId());
int max = 0;
for (TbsActivity tbsActivity : activityList) {
try {
String tml = tbsActivity.getActivityCode().split("_")[1];
Integer i = Integer.parseInt(tml);
if(i>max){
max = i;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
activity.setActivityCode(costApply.getCode()+"_"+(max+1));
}
if(activityBo.getTemplateBudgetIds()!=null && activityBo.getTemplateBudgetIds().size()>0){
String budgetIds = activityBo.getTemplateBudgetIds().stream()

82
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyCompensateServiceImpl.java

@ -1,82 +0,0 @@
package com.qs.serve.modules.tbs.service.impl;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.seeyon.service.SeeYonCompensateService;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.mapper.TbsCostApplyMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 费用申请补偿实现类
* @author YenHex
* @since 2023/5/23
*/
@Slf4j
@Service
@AllArgsConstructor
public class TbsCostApplyCompensateServiceImpl implements SeeYonCompensateService {
private final SeeYonRequestService requestService;
private final TbsCostApplyMapper costApplyMapper;
private final SysUserMapper userMapper;
@Override
public SysUserMapper getUserMapper() {
return userMapper;
}
@Override
public String getTemplateCode() {
return TbsSeeYonConst.CostApplyConf.Code();
}
@Override
public SeeYonRequestService getRequestService() {
return requestService;
}
@Override
public Object compensateNext(String targetId) {
TbsCostApply costApply = costApplyMapper.selectById(targetId);
if (costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())) {
}
return null;
}
@Override
public Object compensateBacked(String targetId) {
TbsCostApply costApply = costApplyMapper.selectById(targetId);
if (costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())) {
}
return null;
}
@Override
public Object compensateFinished(String targetId) {
TbsCostApply costApply = costApplyMapper.selectById(targetId);
if (costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())) {
}
return null;
}
@Override
public Object compensateRefuse(String targetId) {
TbsCostApply costApply = costApplyMapper.selectById(targetId);
if (costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())) {
}
return null;
}
}

32
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -204,4 +204,36 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService
return costApply.getSyFormId();
}
@Override
public Object compensateBacked(String targetId) {
TbsCostApply costApply = costApplyService.getById(targetId);
if(costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){
TbsAffairCommitBo bo = new TbsAffairCommitBo();
bo.setCostApplyId(costApply.getId());
this.doBacked(bo);
}
return null;
}
@Override
public Object compensateFinished(String targetId) {
TbsCostApply costApply = costApplyService.getById(targetId);
if(costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){
TbsAffairCommitBo bo = new TbsAffairCommitBo();
bo.setCostApplyId(costApply.getId());
this.doFinished(bo);
}
return null;
}
@Override
public Object compensateRefuse(String targetId) {
TbsCostApply costApply = costApplyService.getById(targetId);
if(costApply.getChargeState().equals(TbsCostApplyState.State_1_apply.getCode())){
TbsAffairCommitBo bo = new TbsAffairCommitBo();
bo.setCostApplyId(costApply.getId());
this.doRefuse(bo);
}
return null;
}
}

68
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -174,7 +174,6 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
}
}
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){
LambdaQueryWrapper<TbsActivityPayCondition> lqw = new LambdaQueryWrapper<>();
lqw.eq(TbsActivityPayCondition::getCostApplyId,id);
@ -229,7 +228,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
data.put("money",tbsCostApply.getTotalActivityAmount());
//记录主表费率参数
this.buildMainData4ROI(tbsCostApply, data);
try {
this.buildMainData4ROI(tbsCostApply, data);
} catch (Exception e) {
e.printStackTrace();
}
//拓展添加审批关联区域
String saleRegionId = supplier.handleSaleRegionId();
@ -257,7 +260,11 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<String> subjectNames = tbsActivitySubjects.stream().map(TbsActivitySubject::getSubjectName).distinct().collect(Collectors.toList());
List<Object> subList = new ArrayList<>();
//创建子表数据
this.buildSubList(result, tbsActivityCenters, subjectNames, subList);
try {
this.buildSubList(result, tbsActivityCenters, subjectNames, subList);
} catch (Exception e) {
e.printStackTrace();
}
//创建商品抬头列表
List<TbsActivityGoods> tbsActivityGoods = tbsActivityGoodsService.listByCostApplyId(Long.parseLong(id));
Set<String> bands = new HashSet<>();
@ -520,33 +527,36 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
//发货金额
List<ErpDispatchSumVo> erpDispatchSumVoList = supplierCodeMapWithCenterType.get(centerKey);
//年费率
//所有相关费率记录
List<BirActivityCenterGoods> centerGoods = birGroupByCenter.get(centerKey);
TbsCenterGoodBirDTO bir4Year = this.getTbsCenterGoodBirDTO(centerGoods,erpDispatchSumVoList);
costCenter.setYtdRealSales(bir4Year.getRealSales());
costCenter.setYtdRealCost(bir4Year.getRealCost());
costCenter.setYtdRealExpenseRate(bir4Year.getRealExpenseRate());
//季度
List<Integer> yearMonthList =QuarterUtil.getQuarterNumbers(year, month);
List<BirActivityCenterGoods> centerGoodsQuarter = centerGoods.stream()
.filter(a-> yearMonthList.contains(a.getKeyNum()))
.collect(Collectors.toList());
TbsCenterGoodBirDTO bir4Quarter = this.getTbsCenterGoodBirDTO(centerGoodsQuarter,erpDispatchSumVoList);
costCenter.setQtdRealSales(bir4Quarter.getRealSales());
costCenter.setQtdRealCost(bir4Quarter.getRealCost());
costCenter.setQtdRealExpenseRate(bir4Quarter.getRealExpenseRate());
//月份
String mStr = month >9? month +"":"0"+ month;
Integer currYearMonth = Integer.parseInt(year +mStr);
List<BirActivityCenterGoods> centerGoodsM = centerGoods.stream()
.filter(a-> currYearMonth.equals(a.getKeyNum()))
.collect(Collectors.toList());
TbsCenterGoodBirDTO bir4Month = this.getTbsCenterGoodBirDTO(centerGoodsM,erpDispatchSumVoList);
costCenter.setMtdRealSales(bir4Month.getRealSales());
costCenter.setMtdRealCost(bir4Month.getRealCost());
costCenter.setMtdRealExpenseRate(bir4Month.getRealExpenseRate());
if(CollectionUtil.isNotEmpty(centerGoods)){
//年费率
TbsCenterGoodBirDTO bir4Year = this.getTbsCenterGoodBirDTO(centerGoods,erpDispatchSumVoList);
costCenter.setYtdRealSales(bir4Year.getRealSales());
costCenter.setYtdRealCost(bir4Year.getRealCost());
costCenter.setYtdRealExpenseRate(bir4Year.getRealExpenseRate());
//季度
List<Integer> yearMonthList =QuarterUtil.getQuarterNumbers(year, month);
List<BirActivityCenterGoods> centerGoodsQuarter = centerGoods.stream()
.filter(a-> yearMonthList.contains(a.getKeyNum()))
.collect(Collectors.toList());
TbsCenterGoodBirDTO bir4Quarter = this.getTbsCenterGoodBirDTO(centerGoodsQuarter,erpDispatchSumVoList);
costCenter.setQtdRealSales(bir4Quarter.getRealSales());
costCenter.setQtdRealCost(bir4Quarter.getRealCost());
costCenter.setQtdRealExpenseRate(bir4Quarter.getRealExpenseRate());
//月份
String mStr = month >9? month +"":"0"+ month;
Integer currYearMonth = Integer.parseInt(year +mStr);
List<BirActivityCenterGoods> centerGoodsM = centerGoods.stream()
.filter(a-> currYearMonth.equals(a.getKeyNum()))
.collect(Collectors.toList());
TbsCenterGoodBirDTO bir4Month = this.getTbsCenterGoodBirDTO(centerGoodsM,erpDispatchSumVoList);
costCenter.setMtdRealSales(bir4Month.getRealSales());
costCenter.setMtdRealCost(bir4Month.getRealCost());
costCenter.setMtdRealExpenseRate(bir4Month.getRealExpenseRate());
}
return costCenter;
}

14
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyItemServiceImpl.java

@ -86,7 +86,19 @@ public class TzcPolicyItemServiceImpl extends ServiceImpl<TzcPolicyItemMapper,Tz
tzcPolicyItem.setPolicyItemCode(item.getPolicyItemCode());
}else {
List<TzcPolicyItem> policyItemList = this.listByPolicyId(tzcPolicy.getId());
tzcPolicyItem.setPolicyItemCode(tzcPolicy.getPolicyCode()+"_"+(policyItemList.size()+1));
int max = 0;
for (TzcPolicyItem policyItem : policyItemList) {
try {
String tml = policyItem.getPolicyItemCode().split("_")[1];
Integer i = Integer.parseInt(tml);
if(i>max){
max = i;
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
tzcPolicyItem.setPolicyItemCode(tzcPolicy.getPolicyCode()+"_"+(max+1));
}
BmsSubject bmsSubject = bmsSubjectService.getByCode("FYMC05");
TbsCenterDto centerDto = tbsCenterDtoService.getCenterDto(param.getCenterType(),param.getCenterId());

21
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyOperationServiceImpl.java

@ -9,7 +9,6 @@ import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.TbsBudgetLog;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo;
import com.qs.serve.modules.tbs.service.TbsBudgetLogService;
@ -151,4 +150,24 @@ public class TzcPolicyOperationServiceImpl implements SeeYonOperationService {
return TbsSeeYonConst.PolicyConf.Code();
}
@Override
public Object compensateNext(String targetId) {
return null;
}
@Override
public Object compensateBacked(String targetId) {
return null;
}
@Override
public Object compensateFinished(String targetId) {
return null;
}
@Override
public Object compensateRefuse(String targetId) {
return null;
}
}

7
src/main/java/com/qs/serve/modules/tzc/service/impl/TzcPolicyServiceImpl.java

@ -3,10 +3,7 @@ package com.qs.serve.modules.tzc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.IdUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSubject;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSubjectService;
@ -57,7 +54,7 @@ public class TzcPolicyServiceImpl extends ServiceImpl<TzcPolicyMapper,TzcPolicy>
}else {
tzcPolicy = new TzcPolicy();
//tzcPolicy.setId(IdUtil.getSnowFlakeId());
tzcPolicy.setPolicyCode(StringUtils.genShortId()+"");
tzcPolicy.setPolicyCode(CodeGenUtil.generate(CodeGenUtil.SourceKey.Policy));
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
tzcPolicy.setUserId(sysUser.getId());
tzcPolicy.setUserCode(sysUser.getCode());

10
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java

@ -310,7 +310,15 @@ public class VtbVerificationController {
return vtbVerificationOperationService.getUnfinished();
}
/**
* 补偿按钮
* @param id
* @return
*/
@PostMapping("/compensate/{id}")
public R<?> compensate(@PathVariable("id") String id){
return vtbVerificationOperationService.runCompensate(id);
}
}

6
src/main/java/com/qs/serve/modules/vtb/entity/VtbFundFlow.java

@ -15,7 +15,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 核销流水 实体类
* @author YenHex
@ -153,5 +153,9 @@ public class VtbFundFlow implements Serializable {
/** 客户名称 */
private String supplierName;
@TableField(exist = false)
private List<Long> selectActivityIds;
}

18
src/main/java/com/qs/serve/modules/vtb/entity/dto/VtbFundFlowSumAmtDTO.java

@ -0,0 +1,18 @@
package com.qs.serve.modules.vtb.entity.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/7/13
*/
@Data
public class VtbFundFlowSumAmtDTO {
private BigDecimal totalAmt;
private Long activityId;
}

10
src/main/java/com/qs/serve/modules/vtb/mapper/VtbFundFlowMapper.java

@ -2,7 +2,10 @@ package com.qs.serve.modules.vtb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.vtb.entity.VtbFundFlow;
import com.qs.serve.modules.vtb.entity.dto.VtbFundFlowSumAmtDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 核销流水 Mapper
* @author YenHex
@ -10,5 +13,12 @@ import com.qs.serve.modules.vtb.entity.VtbFundFlow;
*/
public interface VtbFundFlowMapper extends BaseMapper<VtbFundFlow> {
/**
* 统计金额
* @param flow
* @return
*/
List<VtbFundFlowSumAmtDTO> listSumAmount(@Param("query") VtbFundFlow flow);
}

110
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationOperationServiceImpl.java

@ -1,14 +1,34 @@
package com.qs.serve.modules.vtb.service.impl;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.SpringUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.seeyon.service.SeeYonOperationService;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityPayCondition;
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.tbs.service.TbsActivityPayConditionService;
import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
import com.qs.serve.modules.vtb.entity.VtbVerificationYard;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService;
import com.qs.serve.modules.vtb.service.VtbVerificationYardService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author YenHex
* @since 2023/5/26
@ -19,6 +39,8 @@ import org.springframework.stereotype.Service;
public class VtbVerificationOperationServiceImpl implements SeeYonOperationService {
private VtbVerificationMapper vtbVerificationMapper;
private TbsActivityPayConditionService activityPayConditionService;
private TbsActivityService tbsActivityService;
@Override
public String getTemplateCode() {
@ -32,12 +54,12 @@ public class VtbVerificationOperationServiceImpl implements SeeYonOperationServi
@Override
public String getSyFormIdByTargetInfo(TbsAffairCommitBo affairCommit) {
VtbVerification verification = vtbVerificationMapper.selectById(affairCommit.getCostApplyId());
Assert.throwEx("方法未定义");
return null;
}
@Override
public Object doBacked(TbsAffairCommitBo param) {
public Object doBacked(TbsAffairCommitBo affairCommit) {
return null;
}
@ -47,12 +69,92 @@ public class VtbVerificationOperationServiceImpl implements SeeYonOperationServi
}
@Override
public Object doRefuse(TbsAffairCommitBo param) {
public Object doRefuse(TbsAffairCommitBo affairCommit) {
return null;
}
@Override
public Object compensateBacked(String targetId) {
VtbVerification verification = vtbVerificationMapper.selectById(targetId);
if(verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){
//设置回退
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setVerificationState(VtbVerificationState.Rollback.getCode());
vtbVer.setSyFormId("");
vtbVer.setSyFlowId("");
vtbVerificationMapper.updateById(vtbVer);
//还原支付条件
if(verification.getPayConditionId()!=null){
TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId());
payCondition.setFinishedFlag(0);
activityPayConditionService.updateById(payCondition);
}
//还原活动为待核销状态
TbsActivity activity = new TbsActivity();
activity.setId(verification.getActivityId());
activity.setActivityState(TbsActivityState.STATE_0_Todo);
tbsActivityService.updateById(activity);
}
return null;
}
@Override
public Object compensateFinished(String targetId) {
VtbVerification verification = vtbVerificationMapper.selectById(targetId);
if(verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){
if(verification.getPayConditionId()!=null){
//支付条件完成
TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId());
payCondition.setFinishedFlag(1);
activityPayConditionService.updateById(payCondition);
}else {
//刷新活动金额
TbsActivity activity = tbsActivityService.getById(verification.getActivityId());
BigDecimal totalUsed = activity.getUsedAmount().add(verification.getAmount());
TbsActivity activity4Upd = new TbsActivity();
activity4Upd.setId(activity.getId());
activity4Upd.setUsedAmount(totalUsed);
if(totalUsed.compareTo(activity.getTotalAmount())>=0){
activity4Upd.setActivityState(TbsActivityState.STATE_1_Finished);
}else {
activity4Upd.setActivityState(TbsActivityState.STATE_0_Todo);
}
tbsActivityService.updateById(activity4Upd);
}
//更新金额,已完成
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setVerificationState(VtbVerificationState.Finished.getCode());
vtbVer.setFinishedTime(LocalDateTime.now());
vtbVerificationMapper.updateById(vtbVer);
VtbVerificationService vtbVerificationService = SpringUtils.getBean(VtbVerificationService.class);
vtbVerificationService.successCommit(verification.getId());
}
return null;
}
@Override
public Object doNext(TbsAffairCommitBo param) {
public Object compensateRefuse(String targetId) {
VtbVerification verification = vtbVerificationMapper.selectById(targetId);
if(verification.getVerificationState().equals(VtbVerificationState.Commiting.getCode())){
//设置拒绝
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setVerificationState(VtbVerificationState.Stop.getCode());
vtbVerificationMapper.updateById(vtbVer);
//还原支付条件
if(verification.getPayConditionId()!=null){
TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId());
payCondition.setFinishedFlag(0);
activityPayConditionService.updateById(payCondition);
}
//还原活动为待核销状态
TbsActivity activity = new TbsActivity();
activity.setId(verification.getActivityId());
activity.setActivityState(TbsActivityState.STATE_0_Todo);
tbsActivityService.updateById(activity);
}
return null;
}
}

2
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java

@ -273,7 +273,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
VtbVerification verification = new VtbVerification();
verification.setId(verificationBo.getId());
verification.setPayConditionId(verificationBo.getPayConditionId());
verification.setVerificationCode("HX"+IdUtil.timeStampId());
verification.setVerificationCode("HX"+CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification));
verification.setVerificationState(VtbVerificationState.Commiting.getCode());
verification.setCostApplyId(costApply.getId());
verification.setActivityId(verificationBo.getActivityId());

27
src/main/java/com/qs/serve/task/BirTask.java

@ -0,0 +1,27 @@
package com.qs.serve.task;
import com.qs.serve.task.controller.TaskActivityController;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @author YenHex
* @since 2023/7/14
*/
@Slf4j
@Component
@AllArgsConstructor
@ConditionalOnProperty(value = "project.task", havingValue = "true")
public class BirTask {
TaskActivityController activityController;
@Scheduled(cron="0 0 1 * * ?")
public void buildTempTable(){
activityController.taskBir(null);
}
}

20
src/main/java/com/qs/serve/task/controller/TaskActivityController.java

@ -5,6 +5,7 @@ import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService;
import com.qs.serve.modules.bir.service.BirBaseActivityService;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.entity.TbsActivity;
@ -37,8 +38,27 @@ public class TaskActivityController {
private final TbsActivityService activityService;
private final TbsActivityTemplateService activityTemplateService;
private final BirBaseActivityService birBaseActivityService;
private final BirActivityCenterGoodsService birActivityCenterGoodsService;
/**
* 同步活动底表ActivityCenterGoods
* @param month
* @return
*/
@GetMapping("syncActivityCenterGoods")
public R taskBir(Integer month){
Integer year = 2023;
if(month == null){
for (int i = 1;i < 13; i++) {
birActivityCenterGoodsService.buildReport(year,i);
}
}else {
birActivityCenterGoodsService.buildReport(year,month);
}
return R.ok();
}
/**
* 同步ERP的发货单用于计算活动费率
* @return

90
src/main/resources/mapper/vtb/VtbFundFlowMapper.xml

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.vtb.mapper.VtbFundFlowMapper">
<resultMap id="vtbFundFlowMap" type="com.qs.serve.modules.vtb.entity.VtbFundFlow" >
<result property="id" column="id"/>
<result property="fundType" column="fund_type"/>
<result property="verificationId" column="verification_id"/>
<result property="centerGoodsCode" column="center_goods_code"/>
<result property="costApplyId" column="cost_apply_id"/>
<result property="activityId" column="activity_id"/>
<result property="subjectId" column="subject_id"/>
<result property="subjectCode" column="subject_code"/>
<result property="subjectName" column="subject_name"/>
<result property="centerType" column="center_type"/>
<result property="centerId" column="center_id"/>
<result property="centerCode" column="center_code"/>
<result property="centerName" column="center_name"/>
<result property="usedAmount" column="used_amount"/>
<result property="targetType" column="target_type"/>
<result property="targetId" column="target_id"/>
<result property="targetCode" column="target_code"/>
<result property="targetName" column="target_name"/>
<result property="targetLevelPathIds" column="target_level_path_ids"/>
<result property="targetLevelPathNames" column="target_level_path_names"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
<result property="centerGoodItemId" column="center_good_item_id"/>
<result property="supplierId" column="supplier_id"/>
<result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/>
</resultMap>
<sql id="vtbFundFlowSql">
vtb_fund_flow.`id`,
vtb_fund_flow.`fund_type`,
vtb_fund_flow.`verification_id`,
vtb_fund_flow.`center_goods_code`,
vtb_fund_flow.`cost_apply_id`,
vtb_fund_flow.`activity_id`,
vtb_fund_flow.`subject_id`,
vtb_fund_flow.`subject_code`,
vtb_fund_flow.`subject_name`,
vtb_fund_flow.`center_type`,
vtb_fund_flow.`center_id`,
vtb_fund_flow.`center_code`,
vtb_fund_flow.`center_name`,
vtb_fund_flow.`used_amount`,
vtb_fund_flow.`target_type`,
vtb_fund_flow.`target_id`,
vtb_fund_flow.`target_code`,
vtb_fund_flow.`target_name`,
vtb_fund_flow.`target_level_path_ids`,
vtb_fund_flow.`target_level_path_names`,
vtb_fund_flow.`remark`,
vtb_fund_flow.`create_time`,
vtb_fund_flow.`update_time`,
vtb_fund_flow.`tenant_id`,
vtb_fund_flow.`create_by`,
vtb_fund_flow.`update_by`,
vtb_fund_flow.`del_flag`,
vtb_fund_flow.`center_good_item_id`,
vtb_fund_flow.`supplier_id`,
vtb_fund_flow.`supplier_code`,
vtb_fund_flow.`supplier_name` </sql>
<select id="listSumAmount" resultType="com.qs.serve.modules.vtb.entity.dto.VtbFundFlowSumAmtDTO">
SELECT
vtb_fund_flow.activity_id,
sum( vtb_fund_flow.used_amount ) as total_amt
FROM
`vtb_fund_flow`
WHERE
vtb_fund_flow.activity_id IN
<foreach collection="query.selectActivityIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
AND vtb_fund_flow.fund_type = #{query.fundType}
GROUP BY
vtb_fund_flow.activity_id
</select>
</mapper>
Loading…
Cancel
Save