Browse Source

feat:核销合并审批

checkBack
Yen 1 year ago
parent
commit
9f024827c8
  1. 6
      src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java
  2. 1
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  3. 4
      src/main/java/com/qs/serve/modules/tag/entity/TagData.java
  4. 2
      src/main/java/com/qs/serve/modules/tag/entity/vo/TagDataVo.java
  5. 7
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java
  6. 10
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  7. 21
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java
  8. 92
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  9. 2
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java
  10. 20
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java
  11. 3
      src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java
  12. 17
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java
  13. 142
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java
  14. 466
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java
  15. 1
      src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java
  16. 1
      src/main/resources/mapper/tag/TagDataMapper.xml

6
src/main/java/com/qs/serve/common/model/oa/OaFormMainProcess.java

@ -33,4 +33,10 @@ public class OaFormMainProcess {
*/ */
private String templateCode; private String templateCode;
private String userId;
/**
* 模板编码
*/
private String tableName;
} }

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

@ -26,6 +26,7 @@ public class CodeGenUtil {
Activity("activity"), Activity("activity"),
OmsOrder("OmsOrder"), OmsOrder("OmsOrder"),
Verification("verification"), Verification("verification"),
VerificationBatch("verificationBatch"),
Policy("policy"), Policy("policy"),
Budget("Budget"), Budget("Budget"),
BudgetChange("BudgetChange"), BudgetChange("BudgetChange"),

4
src/main/java/com/qs/serve/modules/tag/entity/TagData.java

@ -97,6 +97,10 @@ public class TagData implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String bgColorVal; private String bgColorVal;
/** 背景颜色 */
@TableField(exist = false)
private String tagRemark;
@TableField(exist = false) @TableField(exist = false)
private List<String> queryTagIds; private List<String> queryTagIds;

2
src/main/java/com/qs/serve/modules/tag/entity/vo/TagDataVo.java

@ -14,6 +14,8 @@ public class TagDataVo {
private String type; private String type;
private String remark;
private List<?> infoList; private List<?> infoList;
} }

7
src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

@ -38,6 +38,13 @@ public interface TbsSeeYonConst {
} }
} }
/** 核销 */
class BatchCostCheckConf{
public static String Code(){
return DevEnvironmentConfig.isDev()?"BatchCheckCost_Test":"BatchCheckCost";
}
}
/** 预算申请 */ /** 预算申请 */
class BudgetApplyConf{ class BudgetApplyConf{
public static String Code(){ public static String Code(){

10
src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java

@ -105,6 +105,16 @@ public class TbsBudgetController {
} }
} }
} }
//已用的预算
List<TbsBudgetLogWithAmount> budgetLogWithUsedAmountList = tbsScheduleItemBudgetMapper.getSumAmtNotInList(scheduleItemBudgetIds, Arrays.asList(0,2,3));
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) {
for (TbsBudgetLogWithAmount withAmount : budgetLogWithUsedAmountList) {
if (itemBudget.getId().equals(withAmount.getId())){
itemBudget.setUsedBudgetAmount(withAmount.getAmt());
break;
}
}
}
budget.setBudgetConditionList(conditionList); budget.setBudgetConditionList(conditionList);
Map<String,List<TbsBudgetCondition>> map = conditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType)); Map<String,List<TbsBudgetCondition>> map = conditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getTargetType));
budget.setBrandConditions(map.get(TbsGoodsType.brand.name())); budget.setBrandConditions(map.get(TbsGoodsType.brand.name()));

21
src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationBatchController.java

@ -10,7 +10,10 @@ import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBatchBo;
import com.qs.serve.modules.vtb.service.VtbVerificationApplication2;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -35,7 +38,8 @@ public class VtbVerificationBatchController {
private SeeYonRequestService seeYonService; private SeeYonRequestService seeYonService;
private VtbVerificationBatchService vtbVerificationBatchService; private VtbVerificationBatchService vtbVerificationBatchService;
private VtbVerificationService vtbVerificationService;
private VtbVerificationApplication2 vtbVerificationApplication2;
/** /**
* 翻页 * 翻页
@ -56,10 +60,19 @@ public class VtbVerificationBatchController {
* @return * @return
*/ */
@GetMapping("/getById/{id}") @GetMapping("/getById/{id}")
@SysLog(module = SystemModule.Verification, title = "", biz = BizType.QUERY)
public R<VtbVerificationBatch> getById(@PathVariable("id") String id){ public R<VtbVerificationBatch> getById(@PathVariable("id") String id){
VtbVerificationBatch vtbVerificationBatch = vtbVerificationBatchService.getById(id); VtbVerificationBatch batch = vtbVerificationBatchService.getById(id);
return R.ok(vtbVerificationBatch); if(batch.getVtbBatchStatus().equals(VtbVerificationBatch.BatchState.CHECKING)){
//TODO 补偿回调
}
List<VtbVerification> verificationList = vtbVerificationService
.list(new LambdaQueryWrapper<VtbVerification>()
.eq(VtbVerification::getBatchId,batch.getId()));
for (VtbVerification verification : verificationList) {
vtbVerificationApplication2.buildRelateInfo(verification);
}
batch.setVerificationList(verificationList);
return R.ok(batch);
} }

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

@ -65,18 +65,9 @@ public class VtbVerificationController {
private ProjectApisProperties projectApisProperties; private ProjectApisProperties projectApisProperties;
private VtbVerificationService vtbVerificationService; private VtbVerificationService vtbVerificationService;
private VtbVerificationMapper vtbVerificationMapper; private VtbVerificationMapper vtbVerificationMapper;
private VtbVerificationChannelService vtbVerificationChannelService;
private VtbVerificationChannelPointService vtbVerificationChannelPointService;
private VtbVerificationYardCenterItemService vtbVerificationYardCenterItemService; private VtbVerificationYardCenterItemService vtbVerificationYardCenterItemService;
private VtbVerificationSubjectService vtbVerificationSubjectService;
private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService;
private TbsActivitySubjectService activitySubjectService;
private TbsActivityCenterService activityCenterService;
private TbsActivityCenterGoodsService activityCenterGoodsService;
private TbsCostApplyService tbsCostApplyService; private TbsCostApplyService tbsCostApplyService;
private TbsActivityService tbsActivityService; private TbsActivityService tbsActivityService;
private TbsActivityPayConditionService tbsActivityPayConditionService;
private SysAttachService attachService;
private SysUserService sysUserService; private SysUserService sysUserService;
private SysPostUserService sysPostUserService; private SysPostUserService sysPostUserService;
private SeeYonRequestService seeYonService; private SeeYonRequestService seeYonService;
@ -84,7 +75,7 @@ public class VtbVerificationController {
private VtbVerificationYardService verificationYardService; private VtbVerificationYardService verificationYardService;
private VtbVerificationYardItemService vtbVerificationYardItemService; private VtbVerificationYardItemService vtbVerificationYardItemService;
private VtbVerificationOperationServiceImpl vtbVerificationOperationService; private VtbVerificationOperationServiceImpl vtbVerificationOperationService;
private VtbVerificationExtService vtbVerificationExtService; private VtbVerificationApplication2 vtbVerificationApplication2;
/** /**
@ -204,86 +195,7 @@ public class VtbVerificationController {
vtbVerificationOperationService.runCompensate(id); vtbVerificationOperationService.runCompensate(id);
vtbVerification = vtbVerificationService.getById(id); vtbVerification = vtbVerificationService.getById(id);
} }
if(CollectionUtil.isNotEmpty(vtbVerification.getAttachIds())){ vtbVerificationApplication2.buildRelateInfo(vtbVerification);
List<String> attachIds = Arrays.asList(vtbVerification.getAttachIds());
List<SysAttach> attachList = attachService.listByIds(attachIds);
vtbVerification.setAttachList(attachList);
}
LambdaQueryWrapper<VtbVerificationChannel> channelLqw = new LambdaQueryWrapper<>();
channelLqw.eq(VtbVerificationChannel::getVerificationId,id);
List<VtbVerificationChannel> verificationChannelList = vtbVerificationChannelService.list(channelLqw);
vtbVerification.setChannelList(verificationChannelList);
LambdaQueryWrapper<VtbVerificationChannelPoint> channelPointLqw = new LambdaQueryWrapper<>();
channelPointLqw.eq(VtbVerificationChannelPoint::getVerificationId,id);
List<VtbVerificationChannelPoint> verificationChannelPointList = vtbVerificationChannelPointService.list(channelPointLqw);
vtbVerification.setPointList(verificationChannelPointList);
LambdaQueryWrapper<VtbVerificationSubject> subjectLqw = new LambdaQueryWrapper<>();
subjectLqw.eq(VtbVerificationSubject::getVerificationId,id);
List<VtbVerificationSubject> subjectList = vtbVerificationSubjectService.list(subjectLqw);
List<VtbVerificationSubjectCenter> subjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(Long.parseLong(id));
List<TbsActivitySubject> activitySubjects = activitySubjectService.listByActivityId(vtbVerification.getActivityId());
List<TbsActivityCenter> activityCenters = activityCenterService.listByActivity(vtbVerification.getActivityId());
for (VtbVerificationSubject verificationSubject : subjectList) {
for (TbsActivitySubject activitySubject : activitySubjects) {
if(verificationSubject.getSubjectId().equals(activitySubject.getSubjectId())){
BigDecimal used = activitySubject.getUsedAmount()==null?BigDecimal.ZERO:activitySubject.getUsedAmount();
BigDecimal diff = activitySubject.getAmount().subtract(used);
verificationSubject.setMaxChangeAmount(diff);
}
}
}
if(subjectCenterList.size()<1){
//subjectCenterList为空,代表是旧的审批,需要兼容
for (VtbVerificationSubject verificationSubject : subjectList) {
for (TbsActivityCenter activityCenter : activityCenters) {
BigDecimal userAmountRecord = verificationSubject.getUsedAmountRecord();
BigDecimal useAmount = verificationSubject.getUsedAmount();
VtbVerificationSubjectCenter verCenter = new VtbVerificationSubjectCenter();
verCenter.setCostApplyId(verificationSubject.getCostApplyId());
verCenter.setActivityId(verificationSubject.getActivityId());
verCenter.setSubjectId(verificationSubject.getSubjectId());
verCenter.setSubjectCode(verificationSubject.getSubjectCode());
verCenter.setSubjectName(verificationSubject.getSubjectName());
verCenter.setSupplierId(verificationSubject.getSupplierId());
verCenter.setSupplierCode(verificationSubject.getSupplierCode());
verCenter.setSupplierName(verificationSubject.getSupplierName());
BigDecimal usedItemRecord = userAmountRecord
.multiply(activityCenter.getCenterRate())
.divide(new BigDecimal("100"),2, RoundingMode.DOWN);
BigDecimal usedItem = useAmount
.multiply(activityCenter.getCenterRate())
.divide(new BigDecimal("100"),2, RoundingMode.DOWN);
verCenter.setUsedAmount(usedItem);
verCenter.setUsedAmountRecord(usedItemRecord);
verCenter.setCenterType(activityCenter.getCenterType());
verCenter.setCenterId(activityCenter.getCenterId());
verCenter.setCenterCode(activityCenter.getCenterCode());
verCenter.setCenterName(activityCenter.getCenterName());
verCenter.setActivityCenterId(activityCenter.getId());
subjectCenterList.add(verCenter);
}
}
}
for (VtbVerificationSubjectCenter verCenter : subjectCenterList) {
for (TbsActivityCenter actCenter : activityCenters) {
if(verCenter.getActivityCenterId().equals(actCenter.getId())){
BigDecimal used = actCenter.getUsedAmount()==null?BigDecimal.ZERO:actCenter.getUsedAmount();
BigDecimal diff = actCenter.getCenterAmount().subtract(used);
verCenter.setMaxChangeAmount(diff);
}
}
for (VtbVerificationSubject subject : subjectList) {
if(verCenter.getSubjectId().equals(subject.getSubjectId())){
subject.getSubjectCenterList().add(verCenter);
break;
}
}
}
vtbVerification.setActivityInfo(tbsActivityService.getById(vtbVerification.getActivityId()));
vtbVerification.setSubjectList(subjectList);
return R.ok(vtbVerification); return R.ok(vtbVerification);
} }

2
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java

@ -35,6 +35,8 @@ public class VtbVerification implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
private String batchId;
@TableField(condition = SqlCondition.LIKE) @TableField(condition = SqlCondition.LIKE)
private String verificationMainCode; private String verificationMainCode;

20
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerificationBatch.java

@ -4,6 +4,7 @@ import java.time.LocalDate;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -36,7 +37,7 @@ public class VtbVerificationBatch implements Serializable {
@Length(max = 255,message = "批次编码长度不能超过255字") @Length(max = 255,message = "批次编码长度不能超过255字")
private String vtbBatchCode; private String vtbBatchCode;
/** 状态 */ /** 状态:0-审批中;1-通过;2-拒绝;3-回退 */
@NotNull(message = "状态不能为空") @NotNull(message = "状态不能为空")
private Integer vtbBatchStatus; private Integer vtbBatchStatus;
@ -93,7 +94,7 @@ public class VtbVerificationBatch implements Serializable {
/** 客户id */ /** 客户id */
@NotNull(message = "客户id不能为空") @NotNull(message = "客户id不能为空")
private Long supplierId; private String supplierId;
/** 客户编码 */ /** 客户编码 */
@NotBlank(message = "客户编码不能为空") @NotBlank(message = "客户编码不能为空")
@ -132,5 +133,20 @@ public class VtbVerificationBatch implements Serializable {
@Length(max = 255,message = "业务继承人长度不能超过255字") @Length(max = 255,message = "业务继承人长度不能超过255字")
private String extUserName; private String extUserName;
/** 核销明细列表 */
@TableField(exist = false)
private List<?> verificationList;
/**
* 审批状态
*/
public interface BatchState{
//0-审批中;1-通过;2-拒绝;3-回退
int CHECKING = 0;
int CHECK_OK = 1;
int CHECK_FAIL = 2;
int CHECK_BACK = 2;
}
} }

3
src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationBatchBo.java

@ -11,6 +11,9 @@ import java.util.List;
@Data @Data
public class VtbVerificationBatchBo { public class VtbVerificationBatchBo {
/** 退回重新核销时传 */
private Long batchId;
/** 核销列表 */ /** 核销列表 */
List<VtbVerificationBo> verificationList; List<VtbVerificationBo> verificationList;

17
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication2.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.vtb.service;
import com.qs.serve.modules.vtb.entity.VtbVerification;
/**
* @author YenHex
* @since 2024/6/25
*/
public interface VtbVerificationApplication2 {
/**
* 构建核销详情
* @param verification
*/
void buildRelateInfo(VtbVerification verification);
}

142
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationApplication2Impl.java

@ -0,0 +1,142 @@
package com.qs.serve.modules.vtb.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysAttach;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.entity.TbsActivityCenter;
import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper;
import com.qs.serve.modules.vtb.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.List;
/**
* @author YenHex
* @since 2024/6/25
*/
@Service
@RequiredArgsConstructor
public class VtbVerificationApplication2Impl implements VtbVerificationApplication2 {
private ProjectApisProperties projectApisProperties;
private VtbVerificationService vtbVerificationService;
private VtbVerificationMapper vtbVerificationMapper;
private VtbVerificationChannelService vtbVerificationChannelService;
private VtbVerificationChannelPointService vtbVerificationChannelPointService;
private VtbVerificationYardCenterItemService vtbVerificationYardCenterItemService;
private VtbVerificationSubjectService vtbVerificationSubjectService;
private VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService;
private TbsActivitySubjectService activitySubjectService;
private TbsActivityCenterService activityCenterService;
private TbsActivityCenterGoodsService activityCenterGoodsService;
private TbsCostApplyService tbsCostApplyService;
private TbsActivityService tbsActivityService;
private TbsActivityPayConditionService tbsActivityPayConditionService;
private SysAttachService attachService;
private SysUserService sysUserService;
private SysPostUserService sysPostUserService;
private SeeYonRequestService seeYonService;
private VtbVerificationApplication verificationApplication;
private VtbVerificationYardService verificationYardService;
private VtbVerificationYardItemService vtbVerificationYardItemService;
private VtbVerificationOperationServiceImpl vtbVerificationOperationService;
private VtbVerificationExtService vtbVerificationExtService;
@Override
public void buildRelateInfo(VtbVerification vtbVerification) {
Long id = vtbVerification.getId();
if(CollectionUtil.isNotEmpty(vtbVerification.getAttachIds())){
List<String> attachIds = Arrays.asList(vtbVerification.getAttachIds());
List<SysAttach> attachList = attachService.listByIds(attachIds);
vtbVerification.setAttachList(attachList);
}
LambdaQueryWrapper<VtbVerificationChannel> channelLqw = new LambdaQueryWrapper<>();
channelLqw.eq(VtbVerificationChannel::getVerificationId,id);
List<VtbVerificationChannel> verificationChannelList = vtbVerificationChannelService.list(channelLqw);
vtbVerification.setChannelList(verificationChannelList);
LambdaQueryWrapper<VtbVerificationChannelPoint> channelPointLqw = new LambdaQueryWrapper<>();
channelPointLqw.eq(VtbVerificationChannelPoint::getVerificationId,id);
List<VtbVerificationChannelPoint> verificationChannelPointList = vtbVerificationChannelPointService.list(channelPointLqw);
vtbVerification.setPointList(verificationChannelPointList);
LambdaQueryWrapper<VtbVerificationSubject> subjectLqw = new LambdaQueryWrapper<>();
subjectLqw.eq(VtbVerificationSubject::getVerificationId,id);
List<VtbVerificationSubject> subjectList = vtbVerificationSubjectService.list(subjectLqw);
List<VtbVerificationSubjectCenter> subjectCenterList = vtbVerificationSubjectCenterService.listByVerificationId(id);
List<TbsActivitySubject> activitySubjects = activitySubjectService.listByActivityId(vtbVerification.getActivityId());
List<TbsActivityCenter> activityCenters = activityCenterService.listByActivity(vtbVerification.getActivityId());
for (VtbVerificationSubject verificationSubject : subjectList) {
for (TbsActivitySubject activitySubject : activitySubjects) {
if(verificationSubject.getSubjectId().equals(activitySubject.getSubjectId())){
BigDecimal used = activitySubject.getUsedAmount()==null?BigDecimal.ZERO:activitySubject.getUsedAmount();
BigDecimal diff = activitySubject.getAmount().subtract(used);
verificationSubject.setMaxChangeAmount(diff);
}
}
}
if(subjectCenterList.size()<1){
//subjectCenterList为空,代表是旧的审批,需要兼容
for (VtbVerificationSubject verificationSubject : subjectList) {
for (TbsActivityCenter activityCenter : activityCenters) {
BigDecimal userAmountRecord = verificationSubject.getUsedAmountRecord();
BigDecimal useAmount = verificationSubject.getUsedAmount();
VtbVerificationSubjectCenter verCenter = new VtbVerificationSubjectCenter();
verCenter.setCostApplyId(verificationSubject.getCostApplyId());
verCenter.setActivityId(verificationSubject.getActivityId());
verCenter.setSubjectId(verificationSubject.getSubjectId());
verCenter.setSubjectCode(verificationSubject.getSubjectCode());
verCenter.setSubjectName(verificationSubject.getSubjectName());
verCenter.setSupplierId(verificationSubject.getSupplierId());
verCenter.setSupplierCode(verificationSubject.getSupplierCode());
verCenter.setSupplierName(verificationSubject.getSupplierName());
BigDecimal usedItemRecord = userAmountRecord
.multiply(activityCenter.getCenterRate())
.divide(new BigDecimal("100"),2, RoundingMode.DOWN);
BigDecimal usedItem = useAmount
.multiply(activityCenter.getCenterRate())
.divide(new BigDecimal("100"),2, RoundingMode.DOWN);
verCenter.setUsedAmount(usedItem);
verCenter.setUsedAmountRecord(usedItemRecord);
verCenter.setCenterType(activityCenter.getCenterType());
verCenter.setCenterId(activityCenter.getCenterId());
verCenter.setCenterCode(activityCenter.getCenterCode());
verCenter.setCenterName(activityCenter.getCenterName());
verCenter.setActivityCenterId(activityCenter.getId());
subjectCenterList.add(verCenter);
}
}
}
for (VtbVerificationSubjectCenter verCenter : subjectCenterList) {
for (TbsActivityCenter actCenter : activityCenters) {
if(verCenter.getActivityCenterId().equals(actCenter.getId())){
BigDecimal used = actCenter.getUsedAmount()==null?BigDecimal.ZERO:actCenter.getUsedAmount();
BigDecimal diff = actCenter.getCenterAmount().subtract(used);
verCenter.setMaxChangeAmount(diff);
}
}
for (VtbVerificationSubject subject : subjectList) {
if(verCenter.getSubjectId().equals(subject.getSubjectId())){
subject.getSubjectCenterList().add(verCenter);
break;
}
}
}
vtbVerification.setActivityInfo(tbsActivityService.getById(vtbVerification.getActivityId()));
vtbVerification.setSubjectList(subjectList);
}
}

466
src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationBatchServiceImpl.java

@ -1,9 +1,17 @@
package com.qs.serve.modules.vtb.service.impl; package com.qs.serve.modules.vtb.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectProperties;
import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.oa.OaFormMainProcess;
import com.qs.serve.common.model.oa.OaUploadFile;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.model.DateFormatString;
import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
@ -13,28 +21,39 @@ import com.qs.serve.modules.bms.service.BmsSubjectService;
import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.pay.entity.PayWay; import com.qs.serve.modules.pay.entity.PayWay;
import com.qs.serve.modules.pay.mapper.PayWayMapper; import com.qs.serve.modules.pay.mapper.PayWayMapper;
import com.qs.serve.modules.seeyon.entity.BaseCreateCallbackBo;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
import com.qs.serve.modules.sys.entity.SysAttach;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysAttachService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tag.mapper.TagInfoMapper;
import com.qs.serve.modules.tbs.common.TbsActivityState; 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.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityCenter;
import com.qs.serve.modules.tbs.entity.TbsActivitySubject;
import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.entity.dto.TbsCostSubItem;
import com.qs.serve.modules.tbs.service.TbsActivityCenterService;
import com.qs.serve.modules.tbs.service.TbsActivityService; import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.tbs.service.TbsActivitySubjectService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService; import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import com.qs.serve.modules.vtb.common.VerificationUtil; import com.qs.serve.modules.vtb.common.VerificationUtil;
import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.common.VtbVerificationState;
import com.qs.serve.modules.vtb.entity.*; import com.qs.serve.modules.vtb.entity.*;
import com.qs.serve.modules.vtb.entity.bo.*; import com.qs.serve.modules.vtb.entity.bo.*;
import com.qs.serve.modules.vtb.entity.dto.VtbSubjectDTO;
import com.qs.serve.modules.vtb.service.*; import com.qs.serve.modules.vtb.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.vtb.mapper.VtbVerificationBatchMapper; import com.qs.serve.modules.vtb.mapper.VtbVerificationBatchMapper;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -53,6 +72,8 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
private final BmsSupplierService bmsSupplierService; private final BmsSupplierService bmsSupplierService;
private final TbsActivityService tbsActivityService; private final TbsActivityService tbsActivityService;
private final TbsCostApplyService tbsCostApplyService; private final TbsCostApplyService tbsCostApplyService;
private final TbsActivitySubjectService tbsActivitySubjectService;
private final TbsActivityCenterService tbsActivityCenterService;
private final SysUserService sysUserService; private final SysUserService sysUserService;
private final VtbVerificationService vtbVerificationService; private final VtbVerificationService vtbVerificationService;
private final PayWayMapper payWayMapper; private final PayWayMapper payWayMapper;
@ -64,16 +85,21 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
private final VtbVerificationSubjectService verificationSubjectService; private final VtbVerificationSubjectService verificationSubjectService;
private final VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService; private final VtbVerificationSubjectCenterService vtbVerificationSubjectCenterService;
private final VtbFundFlowService vtbFundFlowService; private final VtbFundFlowService vtbFundFlowService;
private final ProjectProperties projectProperties;
private final TagInfoMapper tagInfoMapper;
private SysAttachService sysAttachService;
private SeeYonRequestService seeYonService;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void submit(VtbVerificationBatchBo submitBo) { public void submit(VtbVerificationBatchBo submitBo) {
String templateCode = TbsSeeYonConst.BatchCostCheckConf.Code();
TbsCostApply costApply = tbsCostApplyService.getById(submitBo.getCostApplyId()); TbsCostApply costApply = tbsCostApplyService.getById(submitBo.getCostApplyId());
BmsSupplier supplier = bmsSupplierService.getById(costApply.getSupplierId()); BmsSupplier supplier = bmsSupplierService.getById(costApply.getSupplierId());
List<TbsActivity> activityList = tbsActivityService.listByCostApplyId(costApply.getId()); List<TbsActivity> activityList = tbsActivityService.listByCostApplyId(costApply.getId());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
sysUser.checkSyAccount(); sysUser.checkSyAccount();
redisService.throwResLock(VtbVerificationBatch.class.getSimpleName(),submitBo.getCostApplyId()+""); //redisService.throwResLock(VtbVerificationBatch.class.getSimpleName(),submitBo.getCostApplyId()+"");
// 校验核销状态 // 校验核销状态
VerificationUtil.verifyCostState(costApply); VerificationUtil.verifyCostState(costApply);
@ -117,7 +143,186 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
List<VtbVerificationSubject> allVerificationSubjects = new ArrayList<>(); List<VtbVerificationSubject> allVerificationSubjects = new ArrayList<>();
List<VtbVerificationSubjectCenter> allVerificationCenters = new ArrayList<>(); List<VtbVerificationSubjectCenter> allVerificationCenters = new ArrayList<>();
//校验BO参数 //主创建方法,校验BO参数和创建数据
this.mainCheckAndCreateBatchItemData(submitBo, costApply, supplier, activityList, sysUser, payWay,
orgVerificationIds, newVerificationList, allVerificationChannelList, allVerificationChannelPointList,
allVerificationSubjects, allVerificationCenters);
VtbVerificationBatch verificationBatch = new VtbVerificationBatch();
verificationBatch.setVtbBatchCode("VB"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.VerificationBatch));
verificationBatch.setVtbBatchStatus(0);
verificationBatch.setCostApplyId(costApply.getId());
//verificationBatch.setRemark();
//verificationBatch.setSyFormId();
//verificationBatch.setSyFlowId();
verificationBatch.setSupplierId(supplier.getId());
verificationBatch.setSupplierCode(supplier.getCode());
verificationBatch.setSupplierName(supplier.getName());
verificationBatch.setUserId(sysUser.getId());
verificationBatch.setUserCode(sysUser.getCode());
verificationBatch.setUserName(sysUser.getName());
this.save(verificationBatch);
String batchId = verificationBatch.getId()+"";
Map<String, Object> newWayData = new HashMap<>();
Map<String, Object> data = new HashMap<>();
data.put("title", verificationBatch.getVtbBatchCode());
data.put("orgId", batchId);
data.put("targetId", batchId);
data.put("targetCode", verificationBatch.getVtbBatchCode());
data.put("applyUserCode", sysUser.getCode());
data.put("applyUserName", sysUser.getName());
data.put("supplierName", supplier.getName());
data.put("supplierCode", supplier.getCode());
data.put("exsp1",templateCode);
data.put("exsp2", saleBizNames);
data.put("biz_region", bizBizNames);
//添加跳转地址业务
String urlKey = "exsp5";
String baseJumpUrl = JumpToUtil.getJumpUrl(projectProperties.getWebUrl(),TbsSeeYonConst.BatchCostCheckConf.Code(),batchId);
data.put("exsp5",urlKey);
data.put("cmsLink",baseJumpUrl);
data.put("rowDate",DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME));
data.put("rowState","00");
//添加客户标签
List<String> tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode());
data.put("tags",tags);
List<String> oaAttachmentsIdList = new ArrayList<>();
submitBo.getVerificationList().forEach(obj->{
if(obj.getAttachIds()!=null && obj.getAttachIds().length>0){
oaAttachmentsIdList.addAll(Arrays.asList(obj.getAttachIds()));
}
});
//科目
List<TbsActivitySubject> subjectList = tbsActivitySubjectService.listByCostApplyId(costApply.getId());
List<VtbSubjectDTO> subjectDTOList = new ArrayList<>();
for (TbsActivitySubject activitySubject : subjectList) {
VtbSubjectDTO subjectDTO = new VtbSubjectDTO();
subjectDTO.setKeMuName(activitySubject.getSubjectName());
subjectDTOList.add(subjectDTO);
}
newWayData.put("formson_2180",subjectDTOList);
//成本中心
List<Object> centerDataList = new ArrayList<>();
List<TbsActivityCenter> activityCenter = tbsActivityCenterService.listByCostApplyId(costApply.getId());
for(TbsActivityCenter center : activityCenter){
TbsCostSubItem.CostCenterTranStr costCenter = new TbsCostSubItem.CostCenterTranStr();
if(costCenter.getChengBenZhongXin()==null){
costCenter.setChengBenZhongXin(center.getCenterName());
costCenter.setChengBenZhongXinId(center.getCenterType()+"-"+center.getId());
}
centerDataList.add(costCenter);
}
newWayData.put("formson_2179",centerDataList);
//加载附件
List<OaUploadFile> uploadFileList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(oaAttachmentsIdList)){
List<SysAttach> attachList = sysAttachService.listByIds(oaAttachmentsIdList);
for (SysAttach sysAttach : attachList) {
OaUploadFile uploadFile = new OaUploadFile();
uploadFile.setField("file");
uploadFile.setName("核销附件"+sysAttach.getName());
uploadFile.setUrl("https://qsjslservice.oss-cn-guangzhou.aliyuncs.com/"+sysAttach.getRelativePath());
uploadFileList.add(uploadFile);
}
}
OaFormMainProcess mainProcess = new OaFormMainProcess();
mainProcess.setTargetId(batchId);
mainProcess.setUploadFiles(uploadFileList);
newWayData.put("formmain_2178",data);
mainProcess.setTableName("formmain_2178");
mainProcess.setData(newWayData);
mainProcess.setTemplateCode(templateCode);
mainProcess.setUserId(sysUser.getId());
mainProcess.setSenderLoginName(sysUser.getAccount());
R flowIdResult = seeYonService.newCreateProcess(mainProcess);
if(flowIdResult==null||flowIdResult.getStatus()!=200){
assert flowIdResult != null;
Assert.throwEx("远程服务调用失败:"+flowIdResult.getMsg());
}
if(flowIdResult.getMsg()!=null && flowIdResult.getMsg().length()>45){
log.error(flowIdResult.getMsg());
JSONObject object = JSON.parseObject(flowIdResult.getMsg());
if(!object.get("code").toString().equals("0")){
Assert.throwEx("流程发起被拦截了");
}
}
//移除历史提交记录
for (Long orgVerificationId : orgVerificationIds) {
verificationChannelService.removeByVerificationId(orgVerificationId);
verificationChannelPointService.removeByVerificationId(orgVerificationId);
verificationSubjectService.removeByVerificationId(orgVerificationId);
vtbVerificationSubjectCenterService.removeByVerificationId(orgVerificationId);
vtbFundFlowService.removeByVerificationId(orgVerificationId);
}
Map<Long,List<VtbVerificationChannel>> allVerificationChannelListMap = allVerificationChannelList.stream()
.collect(Collectors.groupingBy(VtbVerificationChannel::getVerificationId));
Map<Long,List<VtbVerificationChannelPoint>> allVerificationChannelPointListMap = allVerificationChannelPointList.stream()
.collect(Collectors.groupingBy(VtbVerificationChannelPoint::getVerificationId));
Map<Long,List<VtbVerificationSubject>> allVerificationSubjectsMap = allVerificationSubjects.stream()
.collect(Collectors.groupingBy(VtbVerificationSubject::getVerificationId));
Map<Long,List<VtbVerificationSubjectCenter>> allVerificationCentersMap = allVerificationCenters.stream()
.collect(Collectors.groupingBy(VtbVerificationSubjectCenter::getVerificationId));
for (VtbVerification verification : newVerificationList) {
//临时ID,实际是活动ID
Long tmpId = verification.getId();
verification.setId(null);
//关联批量ID
verification.setBatchId(batchId);
vtbVerificationService.save(verification);
Long verificationId = verification.getId();
this.saveVerificationRelateData(allVerificationChannelListMap, allVerificationChannelPointListMap, allVerificationSubjectsMap, allVerificationCentersMap, tmpId, verificationId);
//更新活动状态
TbsActivity activityParam = new TbsActivity();
activityParam.setId(verification.getActivityId());
activityParam.setActivityState(TbsActivityState.STATE_1_Checking);
activityParam.setCurrVerificationId(verification.getId()+"");
tbsActivityService.updateById(activityParam);
}
//更变费用申请的活动状态
TbsCostApply costApplyParam = new TbsCostApply();
costApplyParam.setId(costApply.getId());
costApplyParam.setCheckState(1);
tbsCostApplyService.updateById(costApplyParam);
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(templateCode,batchId);
seeYonService.createCallbackStatus(callbackBo);
}
/**
* 主创建方法校验BO参数和创建数据
* @param submitBo
* @param costApply
* @param supplier
* @param activityList
* @param sysUser
* @param payWay
* @param orgVerificationIds
* @param newVerificationList
* @param allVerificationChannelList
* @param allVerificationChannelPointList
* @param allVerificationSubjects
* @param allVerificationCenters
*/
private void mainCheckAndCreateBatchItemData(VtbVerificationBatchBo submitBo, TbsCostApply costApply, BmsSupplier supplier, List<TbsActivity> activityList, SysUser sysUser, PayWay payWay, List<Long> orgVerificationIds, List<VtbVerification> newVerificationList, List<VtbVerificationChannel> allVerificationChannelList, List<VtbVerificationChannelPoint> allVerificationChannelPointList, List<VtbVerificationSubject> allVerificationSubjects, List<VtbVerificationSubjectCenter> allVerificationCenters) {
for (VtbVerificationBo verificationBo : submitBo.getVerificationList()) { for (VtbVerificationBo verificationBo : submitBo.getVerificationList()) {
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
if(verificationBo.getActivityId().equals(activity.getId())){ if(verificationBo.getActivityId().equals(activity.getId())){
@ -141,70 +346,13 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
//创建 verification //创建 verification
VtbVerification verification = new VtbVerification(); VtbVerification verification = new VtbVerification();
//临时ID //临时ID 使用活动ID
verification.setId(activity.getId()); verification.setId(activity.getId());
// 给核销赋值
verification.setCostApplyCode(costApply.getCode()); this.verificationSetAssign(costApply, sysUser, payWay, verificationBo, activity, verification);
verification.setActivityCode(activity.getActivityCode()); //创建核销相关数据(未存入数据库)
verification.setPayConditionId(verificationBo.getPayConditionId()); this.buildVerificationRelateData(costApply, allVerificationChannelList, allVerificationChannelPointList,
verification.setVerificationCode("HX"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification)); verificationBo, activity, verification);
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setVerificationState(VtbVerificationState.Commiting.getCode());
verification.setCostApplyId(costApply.getId());
verification.setActivityId(verificationBo.getActivityId());
verification.setAttachIds(verificationBo.getAttachIds());
verification.setInputReleaseFlag(verificationBo.getInputReleaseFlag());
if(verificationBo.getInputReleaseFlag()!=null&&verificationBo.getInputReleaseFlag().equals(0)){
verification.setRegReleaseFlag(1);
}
verification.setSupplierId(activity.getSupplierId());
verification.setSupplierCode(activity.getSupplierCode());
verification.setSupplierName(activity.getSupplierName());
verification.setUserId(sysUser.getId());
verification.setUserCode(sysUser.getCode());
verification.setUserName(sysUser.getName());
verification.setRemark(verificationBo.getRemark());
verification.setWayId(payWay.getId());
verification.setWayTitle(payWay.getTitle());
verification.setSupplierBizRegionFirstName(costApply.getSupplierBizRegionFirstName());
verification.setSupplierBizRegionSecondName(costApply.getSupplierBizRegionSecondName());
verification.setSupplierBizRegionThirdName(costApply.getSupplierBizRegionThirdName());
List<VtbVerificationChannelBo> channelBoList = verificationBo.getChannelList();
List<VtbVerificationChannelPointBo> pointBoList = verificationBo.getPointList();
if(CollectionUtil.isNotEmpty(channelBoList)){
for (VtbVerificationChannelBo channelBo : channelBoList) {
BmsChannel channel = channelService.getById(channelBo.getChannelId());
VtbVerificationChannel verificationChannel = new VtbVerificationChannel();
verificationChannel.setActivityId(activity.getId());
verificationChannel.setCostApplyId(costApply.getId());
verificationChannel.setVerificationId(verification.getId());
verificationChannel.setChannelId(channel.getId());
verificationChannel.setChannelCode(channel.getChannelCode());
verificationChannel.setChannelName(channel.getChannelName());
verificationChannel.setChannelRate(channelBo.getChannelRate());
verificationChannel.setPreCountPoint(channelBo.getPreCountPoint());
verificationChannel.setRemark(channelBo.getRemark());
allVerificationChannelList.add(verificationChannel);
}
}else if (CollectionUtil.isNotEmpty(pointBoList)){
for (VtbVerificationChannelPointBo channelPointBo : pointBoList) {
BmsChannelPoint channelPoint = channelPointService.getById(channelPointBo.getPointId());
BmsChannel channel = channelService.getById(channelPoint.getChannelId());
VtbVerificationChannelPoint channelPoint1 = new VtbVerificationChannelPoint();
channelPoint1.setCostApplyId(costApply.getId());
channelPoint1.setActivityId(activity.getId());
channelPoint1.setChannelId(channel.getId());
channelPoint1.setVerificationId(verification.getId());
channelPoint1.setChannelCode(channel.getChannelCode());
channelPoint1.setChannelName(channel.getChannelName());
channelPoint1.setPointId(channelPoint.getId());
channelPoint1.setPointCode(channelPoint.getPointCode());
channelPoint1.setPointName(channelPoint.getPointName());
channelPoint1.setPointRate(channelPointBo.getPointRate());
channelPoint1.setRemark(channelPointBo.getRemark());
allVerificationChannelPointList.add(channelPoint1);
}
}
List<VtbVerificationSubject> verificationSubjects = new ArrayList<>(); List<VtbVerificationSubject> verificationSubjects = new ArrayList<>();
List<VtbVerificationSubjectCenter> verificationCenters = new ArrayList<>(); List<VtbVerificationSubjectCenter> verificationCenters = new ArrayList<>();
@ -237,79 +385,131 @@ public class VtbVerificationBatchServiceImpl extends ServiceImpl<VtbVerification
} }
} }
} }
}
//TODO 提交审批 /**
* 给核销赋值
//移除历史提交记录 * @param costApply
for (Long orgVerificationId : orgVerificationIds) { * @param sysUser
verificationChannelService.removeByVerificationId(orgVerificationId); * @param payWay
verificationChannelPointService.removeByVerificationId(orgVerificationId); * @param verificationBo
verificationSubjectService.removeByVerificationId(orgVerificationId); * @param activity
vtbVerificationSubjectCenterService.removeByVerificationId(orgVerificationId); * @param verification
vtbFundFlowService.removeByVerificationId(orgVerificationId); */
private void verificationSetAssign(TbsCostApply costApply, SysUser sysUser, PayWay payWay,
VtbVerificationBo verificationBo, TbsActivity activity,
VtbVerification verification) {
verification.setCostApplyCode(costApply.getCode());
verification.setActivityCode(activity.getActivityCode());
verification.setPayConditionId(verificationBo.getPayConditionId());
verification.setVerificationCode("HX"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification));
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setVerificationState(VtbVerificationState.Commiting.getCode());
verification.setCostApplyId(costApply.getId());
verification.setActivityId(verificationBo.getActivityId());
verification.setAttachIds(verificationBo.getAttachIds());
verification.setInputReleaseFlag(verificationBo.getInputReleaseFlag());
if(verificationBo.getInputReleaseFlag()!=null&& verificationBo.getInputReleaseFlag().equals(0)){
verification.setRegReleaseFlag(1);
} }
verification.setSupplierId(activity.getSupplierId());
verification.setSupplierCode(activity.getSupplierCode());
verification.setSupplierName(activity.getSupplierName());
verification.setUserId(sysUser.getId());
verification.setUserCode(sysUser.getCode());
verification.setUserName(sysUser.getName());
verification.setRemark(verificationBo.getRemark());
verification.setWayId(payWay.getId());
verification.setWayTitle(payWay.getTitle());
verification.setSupplierBizRegionFirstName(costApply.getSupplierBizRegionFirstName());
verification.setSupplierBizRegionSecondName(costApply.getSupplierBizRegionSecondName());
verification.setSupplierBizRegionThirdName(costApply.getSupplierBizRegionThirdName());
verification.setRemark(verificationBo.getRemark());
verification.setWayId(verificationBo.getPayWayId());
verification.setWayTitle(payWay.getTitle());
}
//获取临时ID重新赋值 /**
//List<Long> activityIds = newVerificationList.stream().map(VtbVerification::getId).collect(Collectors.toList()); * 创建核销相关数据(未存入数据库)
* @param costApply
Map<Long,List<VtbVerificationChannel>> allVerificationChannelListMap = allVerificationChannelList.stream() * @param allVerificationChannelList
.collect(Collectors.groupingBy(VtbVerificationChannel::getVerificationId)); * @param allVerificationChannelPointList
Map<Long,List<VtbVerificationChannelPoint>> allVerificationChannelPointListMap = allVerificationChannelPointList.stream() * @param verificationBo
.collect(Collectors.groupingBy(VtbVerificationChannelPoint::getVerificationId)); * @param activity
* @param verification
Map<Long,List<VtbVerificationSubject>> allVerificationSubjectsMap = allVerificationSubjects.stream() */
.collect(Collectors.groupingBy(VtbVerificationSubject::getVerificationId)); private void buildVerificationRelateData(TbsCostApply costApply, List<VtbVerificationChannel> allVerificationChannelList, List<VtbVerificationChannelPoint> allVerificationChannelPointList, VtbVerificationBo verificationBo, TbsActivity activity, VtbVerification verification) {
Map<Long,List<VtbVerificationSubjectCenter>> allVerificationCentersMap = allVerificationCenters.stream() List<VtbVerificationChannelBo> channelBoList = verificationBo.getChannelList();
.collect(Collectors.groupingBy(VtbVerificationSubjectCenter::getVerificationId)); List<VtbVerificationChannelPointBo> pointBoList = verificationBo.getPointList();
if(CollectionUtil.isNotEmpty(channelBoList)){
for (VtbVerificationChannelBo channelBo : channelBoList) {
for (VtbVerification verification : newVerificationList) { BmsChannel channel = channelService.getById(channelBo.getChannelId());
//临时ID,实际是活动ID VtbVerificationChannel verificationChannel = new VtbVerificationChannel();
Long tmpId = verification.getId(); verificationChannel.setActivityId(activity.getId());
verificationChannel.setCostApplyId(costApply.getId());
verification.setId(null); verificationChannel.setVerificationId(verification.getId());
vtbVerificationService.save(verification); verificationChannel.setChannelId(channel.getId());
Long verificationId = verification.getId(); verificationChannel.setChannelCode(channel.getChannelCode());
verificationChannel.setChannelName(channel.getChannelName());
List<VtbVerificationChannel> vtbVerificationChannels = allVerificationChannelListMap.get(tmpId); verificationChannel.setChannelRate(channelBo.getChannelRate());
if(vtbVerificationChannels!=null){ verificationChannel.setPreCountPoint(channelBo.getPreCountPoint());
vtbVerificationChannels.forEach(a->a.setVerificationId(verificationId)); verificationChannel.setRemark(channelBo.getRemark());
verificationChannelService.saveBatch(vtbVerificationChannels); allVerificationChannelList.add(verificationChannel);
}
List<VtbVerificationChannelPoint> verificationChannelPointList = allVerificationChannelPointListMap.get(tmpId);
if(verificationChannelPointList!=null){
verificationChannelPointList.forEach(a->a.setVerificationId(verificationId));
verificationChannelPointService.saveBatch(verificationChannelPointList);
} }
}else if (CollectionUtil.isNotEmpty(pointBoList)){
List<VtbVerificationSubject> verificationSubjects = allVerificationSubjectsMap.get(tmpId); for (VtbVerificationChannelPointBo channelPointBo : pointBoList) {
if(verificationSubjects!=null){ BmsChannelPoint channelPoint = channelPointService.getById(channelPointBo.getPointId());
verificationSubjects.forEach(a->a.setVerificationId(verificationId)); BmsChannel channel = channelService.getById(channelPoint.getChannelId());
verificationSubjectService.saveBatch(verificationSubjects); VtbVerificationChannelPoint channelPoint1 = new VtbVerificationChannelPoint();
} channelPoint1.setCostApplyId(costApply.getId());
channelPoint1.setActivityId(activity.getId());
List<VtbVerificationSubjectCenter> vtbVerificationSubjectCenterList = allVerificationCentersMap.get(tmpId); channelPoint1.setChannelId(channel.getId());
if(vtbVerificationSubjectCenterList!=null){ channelPoint1.setVerificationId(verification.getId());
vtbVerificationSubjectCenterList.forEach(a->a.setVerificationId(verificationId)); channelPoint1.setChannelCode(channel.getChannelCode());
vtbVerificationSubjectCenterService.saveBatch(vtbVerificationSubjectCenterList); channelPoint1.setChannelName(channel.getChannelName());
channelPoint1.setPointId(channelPoint.getId());
channelPoint1.setPointCode(channelPoint.getPointCode());
channelPoint1.setPointName(channelPoint.getPointName());
channelPoint1.setPointRate(channelPointBo.getPointRate());
channelPoint1.setRemark(channelPointBo.getRemark());
allVerificationChannelPointList.add(channelPoint1);
} }
}
}
//更新活动状态 /**
TbsActivity activityParam = new TbsActivity(); * 保存核销相关数据
activityParam.setId(verification.getActivityId()); * @param allVerificationChannelListMap
activityParam.setActivityState(TbsActivityState.STATE_1_Checking); * @param allVerificationChannelPointListMap
activityParam.setCurrVerificationId(verification.getId()+""); * @param allVerificationSubjectsMap
tbsActivityService.updateById(activityParam); * @param allVerificationCentersMap
* @param tmpId
* @param verificationId
*/
private void saveVerificationRelateData(Map<Long, List<VtbVerificationChannel>> allVerificationChannelListMap, Map<Long, List<VtbVerificationChannelPoint>> allVerificationChannelPointListMap, Map<Long, List<VtbVerificationSubject>> allVerificationSubjectsMap, Map<Long, List<VtbVerificationSubjectCenter>> allVerificationCentersMap, Long tmpId, Long verificationId) {
List<VtbVerificationChannel> vtbVerificationChannels = allVerificationChannelListMap.get(tmpId);
if(vtbVerificationChannels!=null){
vtbVerificationChannels.forEach(a->a.setVerificationId(verificationId));
verificationChannelService.saveBatch(vtbVerificationChannels);
}
List<VtbVerificationChannelPoint> verificationChannelPointList = allVerificationChannelPointListMap.get(tmpId);
if(verificationChannelPointList!=null){
verificationChannelPointList.forEach(a->a.setVerificationId(verificationId));
verificationChannelPointService.saveBatch(verificationChannelPointList);
} }
//更变费用申请的活动状态 List<VtbVerificationSubject> verificationSubjects = allVerificationSubjectsMap.get(tmpId);
TbsCostApply costApplyParam = new TbsCostApply(); if(verificationSubjects!=null){
costApplyParam.setId(costApply.getId()); verificationSubjects.forEach(a->a.setVerificationId(verificationId));
costApplyParam.setCheckState(1); verificationSubjectService.saveBatch(verificationSubjects);
tbsCostApplyService.updateById(costApplyParam); }
List<VtbVerificationSubjectCenter> vtbVerificationSubjectCenterList = allVerificationCentersMap.get(tmpId);
if(vtbVerificationSubjectCenterList!=null){
vtbVerificationSubjectCenterList.forEach(a->a.setVerificationId(verificationId));
vtbVerificationSubjectCenterService.saveBatch(vtbVerificationSubjectCenterList);
}
} }
} }

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

@ -1545,6 +1545,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl<VtbVerificationMappe
lqw.eq(SysSyncLog::getFromPlat,"to支付请求") lqw.eq(SysSyncLog::getFromPlat,"to支付请求")
.eq(SysSyncLog::getSuccessStatus,0) .eq(SysSyncLog::getSuccessStatus,0)
.eq(SysSyncLog::getTodoState,1) .eq(SysSyncLog::getTodoState,1)
.notLike(SysSyncLog::getFailReason,"已存在支付")
//重试两次 //重试两次
.lt(SysSyncLog::getTryTimes,3); .lt(SysSyncLog::getTryTimes,3);
List<SysSyncLog> sysSyncLogs = sysSyncLogService.list(lqw); List<SysSyncLog> sysSyncLogs = sysSyncLogService.list(lqw);

1
src/main/resources/mapper/tag/TagDataMapper.xml

@ -41,6 +41,7 @@
SELECT SELECT
tag_info.color_val, tag_info.color_val,
tag_info.bg_color_val, tag_info.bg_color_val,
tag_info.remark as tagRemark,
<include refid="tagDataSql"/> <include refid="tagDataSql"/>
FROM `tag_data` `tag_data` FROM `tag_data` `tag_data`
left join tag_info on tag_data.tag_id = tag_info.id left join tag_info on tag_data.tag_id = tag_info.id

Loading…
Cancel
Save