Browse Source

fix: 修复bir生成;

opt: 重构协议类支付核销
v1.0
Yen 1 year ago
parent
commit
4e4d28b2e8
  1. 18
      src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java
  2. 2
      src/main/java/com/qs/serve/modules/pay/service/PayPaymentItemService.java
  3. 6
      src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentItemServiceImpl.java
  4. 12
      src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java
  5. 6
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java
  6. 2
      src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java
  7. 15
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java
  8. 12
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java
  9. 82
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  10. 8
      src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java
  11. 11
      src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationSubjectMapper.java
  12. 17
      src/main/java/com/qs/serve/task/BirTask.java
  13. 41
      src/main/java/com/qs/serve/task/BitTask.java
  14. 2
      src/main/resources/mapper/tzc/TzcPolicyMapper.xml

18
src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java

@ -216,7 +216,23 @@ public class BirRoiRateController {
// Long[] costIds = new Long[]{
// 6234L
// };
// birActivityCenterGoodsService.rebuildBir(Arrays.asList(costIds).stream().distinct().collect(Collectors.toList()));
//更新CA
LambdaQueryWrapper<TbsCostApply> lqw = new LambdaQueryWrapper<>();
lqw.select(TbsCostApply::getId);
lqw.likeRight(TbsCostApply::getCode,"CA");
List<TbsCostApply> costApplyList = costApplyService.list(lqw);
List<Long> costIds = costApplyList.stream().map(TbsCostApply::getId).distinct().collect(Collectors.toList());
birActivityCenterGoodsService.rebuildBir(costIds);
List<TbsActivity> activityList = tbsActivityMapper.selectList(
new LambdaQueryWrapper<TbsActivity>().likeRight(TbsActivity::getActivityCode,"CA")
.select(TbsActivity::getId)
);
List<Long> actIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList());
activityService.removeErrorData(actIds);
return R.ok();
}

2
src/main/java/com/qs/serve/modules/pay/service/PayPaymentItemService.java

@ -17,5 +17,7 @@ public interface PayPaymentItemService extends IService<PayPaymentItem> {
List<PayPaymentItem> listByPaymentId(Long paymentId);
void removeByPaymentId(Long payId);
}

6
src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentItemServiceImpl.java

@ -35,5 +35,11 @@ public class PayPaymentItemServiceImpl extends ServiceImpl<PayPaymentItemMapper,
return this.list(lqw);
}
@Override
public void removeByPaymentId(Long payId) {
LambdaQueryWrapper<PayPaymentItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(PayPaymentItem::getPaymentId,payId);
this.remove(lqw);
}
}

12
src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java

@ -35,6 +35,11 @@ public class CtpAffairQo {
String rowState;
String targetId;
/**
* v2 版本接口添加
*/
String targetCode;
String startTime;
String endTime;
@ -58,4 +63,11 @@ public class CtpAffairQo {
String queryBizRegion;
String querySaleRegion;
/**
* 接口版本
* v1.原始接口
* v2.添加评论拼接
*/
String ver;
}

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

@ -162,6 +162,12 @@ public interface SeeYonOperationService extends SeeYonBaseService{
*/
boolean checkSyFormIdIsNotNull(String targetId);
default R<List<CtpAffairVo>> pageAffairV2(String targetId,String targetCode){
return null;
}
/**
* 审批列表(用于详情页)
* @param targetId

2
src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java

@ -22,7 +22,7 @@ public interface SeeYonRequestService {
R<List<CtpAffair>> commonListAffairs(String targetId,String syFormId,String templateCode);
R<List<CtpAffair>> commonListAffairsV2(String targetId,String targetCode,String syFormId,String templateCode);
R<String> commonCommit(TbsAffairCommitBo affairCommit,String formCode,String formRecordId);

15
src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java

@ -51,6 +51,21 @@ public class SeeYonRequestServiceImpl implements SeeYonRequestService {
return this.listFormAffair(param);
}
@Override
public R<List<CtpAffair>> commonListAffairsV2(String targetId,String targetCode, String syFormId, String templateCode) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());
if(!StringUtils.hasText(sysUser.getSyUserId())||!StringUtils.hasText(sysUser.getSyAccount())){
return R.error("当前账号未绑定致远用户信息");
}
CtpAffairQo param = new CtpAffairQo();
param.setTargetId(targetId);
param.setFormMainId(syFormId);
param.setTargetCode(targetCode);
param.setVer("v2");
param.setTemplateCode(templateCode);
return this.listFormAffair(param);
}
@Override
public R<String> commonCommit(TbsAffairCommitBo affairCommit,String formCode,String formRecordId) {
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());

12
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java

@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@ -182,7 +183,16 @@ public class TbsCostApplyCheckController {
return R.ok();
}
List<Long> activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList());
List<TbsBudgetMatchMsgVo> result = budgetManagerService.compare(activityIds,budgetManagerService.listBudgetIdsByActivityId(activityIds));
List<Long> budgetIds = budgetManagerService.listBudgetIdsByActivityId(activityIds);
if(CollectionUtil.isEmpty(budgetIds)){
return R.ok(
activityList.stream().map(activity ->
new TbsBudgetMatchMsgVo(new TbsBudget(),activity,
"科目与品类组合的预算,不存在或不可用"))
.collect(Collectors.toList())
);
}
List<TbsBudgetMatchMsgVo> result = budgetManagerService.compare(activityIds,budgetIds);
return R.ok(result);
}

82
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -40,6 +40,7 @@ import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult;
import com.qs.serve.modules.tbs.mapper.TbsActivitySubjectMapper;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.service.*;
import com.qs.serve.modules.third.entity.*;
@ -55,6 +56,7 @@ import com.qs.serve.modules.tzc.service.TzcPolicyItemService;
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.mapper.VtbVerificationSubjectMapper;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService;
import lombok.AllArgsConstructor;
@ -1044,6 +1046,26 @@ public class PortalOfCostApplication {
BigDecimal totalAmount = createBo.getAmount();
SysUser user = userService.getByAccount(createBo.getUserCode());
LocalDateTime nowTime = LocalDateTime.now();
//移除历史记录
String payCode = createBo.getRemark();
LambdaQueryWrapper<VtbVerification> hisVtbLqw = new LambdaQueryWrapper<>();
hisVtbLqw.eq(VtbVerification::getRemark,payCode);
List<VtbVerification> oldDateList = verificationService.list(hisVtbLqw);
for (VtbVerification verification : oldDateList) {
Long verificationId = verification.getId();
verificationService.removeById(verificationId);
verificationSubjectService.removeByVerificationId(verificationId);
}
LambdaQueryWrapper<PayPayment> hisPaymentLqw = new LambdaQueryWrapper<>();
hisPaymentLqw.eq(PayPayment::getRemark,payCode);
List<PayPayment> payPayments = paymentService.list(hisPaymentLqw);
for (PayPayment payment : payPayments) {
Long payId = payment.getId();
paymentService.removeById(payId);
paymentItemService.removeByPaymentId(payId);
}
//保存核销申请
VtbVerification verification = new VtbVerification();
verification.setDisCode(createBo.getDispatchCode());
@ -1063,6 +1085,7 @@ public class PortalOfCostApplication {
verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount);
verification.setPaymentState(ResultFlag.OK);
verification.setRemark(payCode);
verificationService.save(verification);
//协议类的要直接支付
@ -1082,19 +1105,33 @@ public class PortalOfCostApplication {
payPayment.setBillNumber(createBo.getBillNumber());
payPayment.setCreateBy(user.getName());
payPayment.setCreateTime(LocalDateTime.now());
payPayment.setRemark(payCode);
paymentService.save(payPayment);
//保存核销费用结果
BigDecimal subjectSurplus = createBo.getAmount();
for (TbsActivitySubject subject : subjectList) {
if(subjectSurplus.compareTo(BigDecimal.ZERO)==0){
break;
VtbVerificationSubjectMapper activitySubjectMapper = (VtbVerificationSubjectMapper)verificationSubjectService.getBaseMapper();
//科目已用
BigDecimal usedSubjectAmt = activitySubjectMapper.selectSumSubjectAmt(subject.getActivityId(),subject.getSubjectId());
if(usedSubjectAmt==null){
usedSubjectAmt = BigDecimal.ZERO;
}
//科目还有多少金额未支付
BigDecimal totalUnPay = subject.getAmount().subtract(usedSubjectAmt);
if(totalUnPay.compareTo(BigDecimal.ZERO)==0){
//修正已支付数据
if(subject.getUsedAmount()==null||
subject.getUsedAmount().compareTo(usedSubjectAmt)!=0){
TbsActivitySubject activitySubject = new TbsActivitySubject();
activitySubject.setId(subject.getId());
activitySubject.setUsedAmount(usedSubjectAmt);
activitySubjectService.updateById(subject);
}
continue;
}
//当前项支付多少
BigDecimal currItemAmount;
//科目还有多少金额未支付
BigDecimal totalUnPay = subject.getUsedAmount()==null?subject.getAmount():subject.getAmount().subtract(subject.getUsedAmount());
//节点金额>科目的剩余金额
if(totalUnPay.compareTo(subjectSurplus)>=0){
currItemAmount = subjectSurplus;
@ -1104,7 +1141,7 @@ public class PortalOfCostApplication {
currItemAmount = totalUnPay;
}
//科目总支付
BigDecimal totalPay = subject.getUsedAmount().add(currItemAmount);
BigDecimal totalPay = usedSubjectAmt.add(currItemAmount);
VtbVerificationSubject verificationSubject = new VtbVerificationSubject();
verificationSubject.setVerificationId(verification.getId());
@ -1149,10 +1186,37 @@ public class PortalOfCostApplication {
activitySubjectService.updateById(subject);
paymentItemService.save(paymentItem);
verificationSubjectService.save(verificationSubject);
}
verificationService.successCommit(verification.getId(),false);
//判断金额是否用完,用完直接更新状态
//根据ActivitySubject更新活动金额
List<TbsActivitySubject> subjectNewList = activitySubjectService.listByActivityId(activity.getId());
Map<Long,List<TbsActivitySubject>> groupActSubject= subjectNewList.stream()
.collect(Collectors.groupingBy(TbsActivitySubject::getActivityId));
//统计费用申请
BigDecimal totalCostAmt = BigDecimal.ZERO;
for (Long actId : groupActSubject.keySet()) {
TbsActivity tbsActivity = activityService.getById(actId);
List<TbsActivitySubject> activitySubjects = groupActSubject.get(actId);
//统计活动
BigDecimal totalActAmt = BigDecimal.ZERO;
for (TbsActivitySubject actSubject : activitySubjects) {
if(actSubject.getUsedAmount()==null){
continue;
}
totalActAmt = totalActAmt.add(actSubject.getUsedAmount());
}
if(tbsActivity.getTotalAmount().compareTo(totalActAmt)<=0){
tbsActivity.setActivityState(2);
}
tbsActivity.setUsedAmount(totalActAmt);
activityService.updateById(tbsActivity);
totalCostAmt.add(totalActAmt);
}
costApply.setTotalActivityUsedAmount(totalCostAmt);
if(costApply.getTotalActivityAmount().compareTo(costApply.getTotalActivityUsedAmount())==0){
costApply.setChargeState(3);
}
costApplyService.updateById(costApply);
}
/**

8
src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java

@ -81,6 +81,14 @@ public class TzcPolicy implements Serializable {
@TableField(condition = SqlCondition.LIKE)
private String supplierName;
/** 客户省市区 */
@TableField(condition = SqlCondition.LIKE)
private String supplierRegion2;
/** 客户省市区编码 */
@TableField(condition = SqlCondition.LIKE)
private String supplierRegion2Code;
/** 申请人 */
@NotBlank(message = "申请人不能为空")
@Length(max = 32,message = "申请人长度不能超过32字")

11
src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationSubjectMapper.java

@ -2,6 +2,10 @@ package com.qs.serve.modules.vtb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
/**
* 核销科目费用 Mapper
@ -10,5 +14,12 @@ import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
*/
public interface VtbVerificationSubjectMapper extends BaseMapper<VtbVerificationSubject> {
@Select("select sum(used_amount) " +
" from vtb_verification_subject " +
" where del_flag = 0 " +
" and activity_id = #{activityId} " +
" and subject_id = #{subjectId}")
BigDecimal selectSumSubjectAmt(@Param("activityId") Long activityId,@Param("subjectId") Long subjectId);
}

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

@ -2,6 +2,7 @@ package com.qs.serve.task;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.bir.service.BirActivityCenterGoodsService;
import com.qs.serve.modules.bir.service.BirBaseActivityService;
import com.qs.serve.task.controller.TaskActivityController;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -21,16 +22,24 @@ import java.time.LocalDate;
@ConditionalOnProperty(value = "project.task", havingValue = "true")
public class BirTask {
private final BirBaseActivityService activityService;
private final BirActivityCenterGoodsService birActivityCenterGoodsService;
@Scheduled(cron="0 0 1 * * ?")
public void buildTempTable(){
AuthContextUtils.setTenant("001");
//移除取消的和删除的费用ID
for (int i = 1;i < 13; i++) {
birActivityCenterGoodsService.buildReport(2023,i);
birActivityCenterGoodsService.buildReport(2024,i);
}
birActivityCenterGoodsService.buildReport(2023,12);
birActivityCenterGoodsService.buildReport(2024,1);
birActivityCenterGoodsService.buildReport(2024,2);
birActivityCenterGoodsService.buildReport(2024,3);
birActivityCenterGoodsService.buildReport(2024,4);
activityService.buildReport(2023,12);
activityService.buildReport(2024,1);
activityService.buildReport(2024,2);
activityService.buildReport(2024,3);
activityService.buildReport(2024,4);
}
}

41
src/main/java/com/qs/serve/task/BitTask.java

@ -1,41 +0,0 @@
package com.qs.serve.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.service.BirBaseActivityService;
import com.qs.serve.modules.bir.service.BirRoiRateService;
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/6/26
*/
@Slf4j
@Component
@AllArgsConstructor
@ConditionalOnProperty(value = "project.task", havingValue = "true")
public class BitTask {
private BirBaseActivityService activityService;
@Scheduled(cron="0 0 1 * * ?")
public void buildTempTable(){
AuthContextUtils.setTenant("001");
//移除当年所有
int year = 2023;
//重新生成记录
for (int i = 0; i < 12; i++) {
activityService.buildReport(year,i+1);
}
activityService.buildReport(2024,1);
activityService.buildReport(2024,2);
activityService.buildReport(2024,3);
}
}

2
src/main/resources/mapper/tzc/TzcPolicyMapper.xml

@ -82,6 +82,8 @@
<if test="query.supplierId != null"> and `tzc_policy`.`supplier_id` = #{query.supplierId}</if>
<if test="query.supplierCode != null and query.supplierCode != ''"> and `tzc_policy`.`supplier_code` like concat('%',#{query.supplierCode},'%') </if>
<if test="query.supplierName != null and query.supplierName != ''"> and `tzc_policy`.`supplier_name` like concat('%',#{query.supplierName},'%') </if>
<if test="query.supplierRegion2 != null and query.supplierRegion2 != ''"> and `tzc_policy`.`supplier_region2` like concat('%',#{query.supplierRegion2},'%') </if>
<if test="query.supplierRegion2Code != null and query.supplierRegion2Code != ''"> and `tzc_policy`.`supplier_region2_code` like concat('%',#{query.supplierRegion2Code},'%') </if>
<if test="query.userId != null and query.userId != ''"> and `tzc_policy`.`user_id` = #{query.userId}</if>
<if test="query.userCode != null and query.userCode != ''"> and `tzc_policy`.`user_code` like concat('%',#{query.userCode},'%')</if>
<if test="query.userName != null and query.userName != ''"> and `tzc_policy`.`user_name` like concat('%',#{query.userName},'%') </if>

Loading…
Cancel
Save