Browse Source

微调查询;添加协议类支付核销

v1.0
Yen 2 years ago
parent
commit
d5a3e8b26b
  1. 1
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
  2. 32
      src/main/java/com/qs/serve/modules/third/PortalOfCostController.java
  3. 32
      src/main/java/com/qs/serve/modules/third/entity/ProcessCreateContractCheckBo.java
  4. 120
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java
  5. 3
      src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java
  6. 4
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java
  7. 3
      src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationSo.java

1
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java

@ -207,6 +207,7 @@ public class TbsActivity implements Serializable {
/** 模板id */
private Long templateId;
@TableField(condition = SqlCondition.LIKE)
private String templateTitle;
private String templateBudgetIds;

32
src/main/java/com/qs/serve/modules/third/PortalOfCostController.java

@ -8,6 +8,7 @@ import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.modules.sys.entity.SysSyncLog;
import com.qs.serve.modules.sys.service.SysSyncLogService;
import com.qs.serve.modules.third.consts.ThirtyConst;
import com.qs.serve.modules.third.entity.ProcessCreateContractCheckBo;
import com.qs.serve.modules.third.entity.ProcessCreateCostApplyBo;
import com.qs.serve.modules.third.entity.ProcessCreatePolicyCostBo;
import com.qs.serve.modules.third.service.PortalOfCostApplication;
@ -66,6 +67,37 @@ public class PortalOfCostController {
return R.error("支付异常");
}
/**
* 协议类费用 核销支付记录添加释放接口释放合同不再支付的金额
* @param createBo
* @return
*/
@PostMapping("createByContractCheck")
public R<?> createByContractCheck(@Valid @RequestBody ProcessCreateContractCheckBo createBo, HttpServletRequest request){
SysSyncLog syncLog = new SysSyncLog();
syncLog.setFromPlat("协议类核销支付");
syncLog.setUrl(request.getRequestURI());
syncLog.setRequestJson(JsonUtil.objectToJson(createBo));
syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName());
try {
ThirdTokenUtil.checkToken(request);
portalOfCostApplication.createByContractCheck(createBo);
syncLog.setSuccessStatus(1);
} catch (Exception e) {
log.error("协议类核销支付(费用申请)===>{}", JsonUtil.objectToJson(createBo));
syncLog.setFailReason(e.getMessage());
return R.error(e.getMessage());
}
sysSyncLogService.save(syncLog);
if(syncLog.getSuccessStatus()!=null&&syncLog.getSuccessStatus().equals(1)){
return R.ok();
}
return R.error("支付异常");
}
/**
* 一站式创建费用(政策)
* @param createBo

32
src/main/java/com/qs/serve/modules/third/entity/ProcessCreateContractCheckBo.java

@ -0,0 +1,32 @@
package com.qs.serve.modules.third.entity;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author YenHex
* @since 2023/11/13
*/
@Data
public class ProcessCreateContractCheckBo {
/** 费用编码 */
private String costCode;
/** 核销与支付金额 */
private BigDecimal amount;
/** 发票号 */
private String billNumber;
/** 发货单号 */
private String dispatchCode;
/** 业务人员编码 */
private String userCode;
/** 核销与支付备注 */
private String remark;
}

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

@ -940,7 +940,127 @@ public class PortalOfCostApplication {
}
@Transactional(rollbackFor = Exception.class)
public void createByContractCheck(ProcessCreateContractCheckBo createBo){
TbsCostApply costApply = costApplyService.getByCode(createBo.getCostCode());
TbsActivity activity = activityService.listByCostApplyId(costApply.getId()).get(0);
List<TbsActivitySubject> subjectList = activitySubjectService.listByActivityId(activity.getId());
BmsSupplier supplier = supplierService.getById(costApply.getSupplierId());
BigDecimal totalAmount = createBo.getAmount();
SysUser user = userService.getByAccount(createBo.getUserCode());
LocalDateTime nowTime = LocalDateTime.now();
//保存核销申请
VtbVerification verification = new VtbVerification();
verification.setDisCode(createBo.getDispatchCode());
verification.setBillNumber(createBo.getBillNumber());
verification.setVerificationCode("HXC"+ CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification));
verification.setVerificationMainCode(verification.getVerificationCode());
verification.setCostApplyId(costApply.getId());
verification.setFinishedTime(nowTime);
verification.setVerificationState(VtbVerificationState.Finished.getCode());
verification.setActivityId(activity.getId());
verification.setSupplierId(activity.getSupplierId());
verification.setSupplierCode(activity.getSupplierCode());
verification.setSupplierName(activity.getSupplierName());
verification.setUserId(user.getId());
verification.setUserCode(user.getCode());
verification.setUserName(user.getName());
verification.setAmount(totalAmount);
verification.setAmountRecord(totalAmount);
verification.setPaymentState(ResultFlag.OK);
verificationService.save(verification);
//协议类的要直接支付
PayPayment payPayment = new PayPayment();
payPayment.setPayType(PaymentType.PAYMENT);
payPayment.setPayCode("PM" + StringUtils.genShortId());
payPayment.setSupplierId(Long.parseLong(supplier.getId()));
payPayment.setSupplierCode(supplier.getCode());
payPayment.setSupplierName(supplier.getName());
payPayment.setPayAmount(totalAmount);
payPayment.setCostApplyId(costApply.getId());
payPayment.setUserId(user.getId());
payPayment.setUserCode(user.getCode());
payPayment.setUserName(user.getName());
payPayment.setPayTime(nowTime);
payPayment.setErpCode(createBo.getDispatchCode());
payPayment.setBillNumber(createBo.getBillNumber());
payPayment.setCreateBy(user.getName());
payPayment.setCreateTime(LocalDateTime.now());
paymentService.save(payPayment);
//保存核销费用结果
BigDecimal subjectSurplus = createBo.getAmount();
for (TbsActivitySubject subject : subjectList) {
if(subjectSurplus.compareTo(BigDecimal.ZERO)==0){
break;
}
//当前项支付多少
BigDecimal currItemAmount;
//科目还有多少金额未支付
BigDecimal totalUnPay = subject.getUsedAmount()==null?subject.getAmount():subject.getAmount().subtract(subject.getUsedAmount());
//节点金额>科目的剩余金额
if(totalUnPay.compareTo(subjectSurplus)>=0){
currItemAmount = subjectSurplus;
subjectSurplus = BigDecimal.ZERO;
}else {
subjectSurplus = subjectSurplus.subtract(totalUnPay);
currItemAmount = totalUnPay;
}
//科目总支付
BigDecimal totalPay = subject.getUsedAmount().add(currItemAmount);
VtbVerificationSubject verificationSubject = new VtbVerificationSubject();
verificationSubject.setVerificationId(verification.getId());
verificationSubject.setVerificationSubCode(verification.getVerificationCode()+"_1");
verificationSubject.setCostApplyId(costApply.getId());
verificationSubject.setActivityId(activity.getId());
verificationSubject.setSubjectId(subject.getId());
verificationSubject.setSubjectCode(subject.getSubjectCode());
verificationSubject.setSubjectName(subject.getSubjectName());
verificationSubject.setSupplierId(Long.parseLong(supplier.getId()));
verificationSubject.setSupplierCode(supplier.getCode());
verificationSubject.setSupplierName(supplier.getName());
verificationSubject.setPayFinishedFlag(ResultFlag.OK);
verificationSubject.setUsedAmount(currItemAmount);
verificationSubject.setUsedAmountRecord(currItemAmount);
verificationSubject.setCountPerson(0);
verificationSubject.setCountSession(0);
PayPaymentItem paymentItem = new PayPaymentItem();
paymentItem.setPaymentId(payPayment.getId());
paymentItem.setPayType(PaymentType.PAYMENT);
paymentItem.setSupplierId(Long.parseLong(supplier.getId()));
paymentItem.setItemPayAmount(totalAmount);
paymentItem.setVerificationId(verification.getId());
paymentItem.setVerificationCode(verification.getVerificationCode());
paymentItem.setVerificationMainCode(verification.getVerificationCode());
paymentItem.setVerificationSubjectId(verificationSubject.getId());
paymentItem.setCostApplyId(costApply.getId());
paymentItem.setActivityId(activity.getId());
paymentItem.setActivityCode(activity.getActivityCode());
paymentItem.setSubjectId(subject.getId());
paymentItem.setSubjectCode(subject.getSubjectCode());
paymentItem.setSubjectName(subject.getSubjectName());
paymentItem.setCreateBy(user.getName());
paymentItem.setCreateTime(LocalDateTime.now());
//保存和更新项
TbsActivitySubject activitySubject = new TbsActivitySubject();
activitySubject.setId(subject.getId());
activitySubject.setUsedAmount(totalPay);
activitySubjectService.updateById(subject);
paymentItemService.save(paymentItem);
verificationSubjectService.save(verificationSubject);
}
}
/**
* 创建流程中初始化SKU列表

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

@ -137,6 +137,9 @@ public class VtbVerificationController {
}else if(loadMy!=null&&loadMy.equals(1)){
lqw.eq(VtbVerification::getUserId,AuthContextUtils.getSysUserId());
}
if(StringUtils.hasText(param.getTemplateTitle())){
lqw.like(VtbVerification::getTemplateTitle,param.getTemplateTitle());
}
lqw.orderByDesc(VtbVerification::getId);
PageUtil.startPage();
List<VtbVerification> listObjectIds = vtbVerificationService.list(lqw);

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

@ -183,6 +183,9 @@ public class VtbVerification implements Serializable {
@TableField(condition = SqlCondition.LIKE)
private String userName;
@TableField(condition = SqlCondition.LIKE)
private String templateTitle;
/**
* 业务继承人
*/
@ -214,6 +217,5 @@ public class VtbVerification implements Serializable {
@TableField(exist = false)
private Object costApplyInfo;
}

3
src/main/java/com/qs/serve/modules/vtb/entity/so/VtbVerificationSo.java

@ -71,5 +71,8 @@ public class VtbVerificationSo implements Serializable {
@TableField(condition = SqlCondition.LIKE)
private String supplierBizRegionThirdName;
/** 模板名称 */
private String templateTitle;
}

Loading…
Cancel
Save