diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index 9008eff6..edfbe9f2 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/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 lqw = new LambdaQueryWrapper<>(); + lqw.select(TbsCostApply::getId); + lqw.likeRight(TbsCostApply::getCode,"CA"); + List costApplyList = costApplyService.list(lqw); + List costIds = costApplyList.stream().map(TbsCostApply::getId).distinct().collect(Collectors.toList()); + + birActivityCenterGoodsService.rebuildBir(costIds); + + + List activityList = tbsActivityMapper.selectList( + new LambdaQueryWrapper().likeRight(TbsActivity::getActivityCode,"CA") + .select(TbsActivity::getId) + ); + List actIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList()); + activityService.removeErrorData(actIds); return R.ok(); } diff --git a/src/main/java/com/qs/serve/modules/pay/service/PayPaymentItemService.java b/src/main/java/com/qs/serve/modules/pay/service/PayPaymentItemService.java index 591b8dbe..cfc219a9 100644 --- a/src/main/java/com/qs/serve/modules/pay/service/PayPaymentItemService.java +++ b/src/main/java/com/qs/serve/modules/pay/service/PayPaymentItemService.java @@ -17,5 +17,7 @@ public interface PayPaymentItemService extends IService { List listByPaymentId(Long paymentId); + void removeByPaymentId(Long payId); + } diff --git a/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentItemServiceImpl.java b/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentItemServiceImpl.java index fefe3058..27d79a17 100644 --- a/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentItemServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentItemServiceImpl.java @@ -35,5 +35,11 @@ public class PayPaymentItemServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.eq(PayPaymentItem::getPaymentId,payId); + this.remove(lqw); + } } diff --git a/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java b/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java index d5fa9fa6..819b7696 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/entity/CtpAffairQo.java +++ b/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; } diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java index a75d3025..7b8ee5c5 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonOperationService.java +++ b/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> pageAffairV2(String targetId,String targetCode){ + return null; + } + /** * 审批列表(用于详情页) * @param targetId diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java index c14a47a8..7ed7a9ee 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java +++ b/src/main/java/com/qs/serve/modules/seeyon/service/SeeYonRequestService.java @@ -22,7 +22,7 @@ public interface SeeYonRequestService { R> commonListAffairs(String targetId,String syFormId,String templateCode); - + R> commonListAffairsV2(String targetId,String targetCode,String syFormId,String templateCode); R commonCommit(TbsAffairCommitBo affairCommit,String formCode,String formRecordId); diff --git a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java b/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java index 6bd47f8b..b4cab5c4 100644 --- a/src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonRequestServiceImpl.java +++ b/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> 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 commonCommit(TbsAffairCommitBo affairCommit,String formCode,String formRecordId) { SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java index 569278ea..9f73ff37 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java +++ b/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 activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList()); - List result = budgetManagerService.compare(activityIds,budgetManagerService.listBudgetIdsByActivityId(activityIds)); + List budgetIds = budgetManagerService.listBudgetIdsByActivityId(activityIds); + if(CollectionUtil.isEmpty(budgetIds)){ + return R.ok( + activityList.stream().map(activity -> + new TbsBudgetMatchMsgVo(new TbsBudget(),activity, + "科目与品类组合的预算,不存在或不可用")) + .collect(Collectors.toList()) + ); + } + List result = budgetManagerService.compare(activityIds,budgetIds); return R.ok(result); } diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index 59120406..766393d3 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/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 hisVtbLqw = new LambdaQueryWrapper<>(); + hisVtbLqw.eq(VtbVerification::getRemark,payCode); + List oldDateList = verificationService.list(hisVtbLqw); + for (VtbVerification verification : oldDateList) { + Long verificationId = verification.getId(); + verificationService.removeById(verificationId); + verificationSubjectService.removeByVerificationId(verificationId); + } + LambdaQueryWrapper hisPaymentLqw = new LambdaQueryWrapper<>(); + hisPaymentLqw.eq(PayPayment::getRemark,payCode); + List 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 subjectNewList = activitySubjectService.listByActivityId(activity.getId()); + Map> groupActSubject= subjectNewList.stream() + .collect(Collectors.groupingBy(TbsActivitySubject::getActivityId)); + //统计费用申请 + BigDecimal totalCostAmt = BigDecimal.ZERO; + for (Long actId : groupActSubject.keySet()) { + TbsActivity tbsActivity = activityService.getById(actId); + List 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); } /** diff --git a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java b/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java index 7a23f226..cbd6dcd2 100644 --- a/src/main/java/com/qs/serve/modules/tzc/entity/TzcPolicy.java +++ b/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字") diff --git a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationSubjectMapper.java b/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationSubjectMapper.java index d9fd4537..d42b088c 100644 --- a/src/main/java/com/qs/serve/modules/vtb/mapper/VtbVerificationSubjectMapper.java +++ b/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 { + @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); + } diff --git a/src/main/java/com/qs/serve/task/BirTask.java b/src/main/java/com/qs/serve/task/BirTask.java index 6a54936f..3e846fcf 100644 --- a/src/main/java/com/qs/serve/task/BirTask.java +++ b/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); } } diff --git a/src/main/java/com/qs/serve/task/BitTask.java b/src/main/java/com/qs/serve/task/BitTask.java deleted file mode 100644 index b2fca8e3..00000000 --- a/src/main/java/com/qs/serve/task/BitTask.java +++ /dev/null @@ -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); - } - -} diff --git a/src/main/resources/mapper/tzc/TzcPolicyMapper.xml b/src/main/resources/mapper/tzc/TzcPolicyMapper.xml index 21c653d2..250dbc1f 100644 --- a/src/main/resources/mapper/tzc/TzcPolicyMapper.xml +++ b/src/main/resources/mapper/tzc/TzcPolicyMapper.xml @@ -82,6 +82,8 @@ and `tzc_policy`.`supplier_id` = #{query.supplierId} and `tzc_policy`.`supplier_code` like concat('%',#{query.supplierCode},'%') and `tzc_policy`.`supplier_name` like concat('%',#{query.supplierName},'%') + and `tzc_policy`.`supplier_region2` like concat('%',#{query.supplierRegion2},'%') + and `tzc_policy`.`supplier_region2_code` like concat('%',#{query.supplierRegion2Code},'%') and `tzc_policy`.`user_id` = #{query.userId} and `tzc_policy`.`user_code` like concat('%',#{query.userCode},'%') and `tzc_policy`.`user_name` like concat('%',#{query.userName},'%')