Browse Source

支付记录到中间表

mssql
Yen 3 years ago
parent
commit
17f7005419
  1. 1
      src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java
  2. 3
      src/main/java/com/qs/serve/modules/pay/entity/PayPayment.java
  3. 9
      src/main/java/com/qs/serve/modules/pay/entity/bo/PayPaymentBo.java
  4. 15
      src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java
  5. 81
      src/main/java/com/qs/serve/modules/seeyon/entity/XltApticlaim.java
  6. 99
      src/main/java/com/qs/serve/modules/seeyon/entity/XltPaymentRecord.java
  7. 28
      src/main/java/com/qs/serve/modules/seeyon/service/XiaoLuTonService.java
  8. 40
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java
  9. 52
      src/main/java/com/qs/serve/modules/seeyon/service/impl/SyBaseService.java
  10. 35
      src/main/java/com/qs/serve/modules/seeyon/service/impl/XiaoLuTonServiceImpl.java
  11. 3
      src/main/java/com/qs/serve/modules/tbs/common/TbsSeeYonConst.java

1
src/main/java/com/qs/serve/modules/pay/controller/PayPaymentController.java

@ -121,6 +121,7 @@ public class PayPaymentController {
@SysLog(module = SystemModule.Payment, title = "支付", biz = BizType.DELETE)
@PreAuthorize("hasRole('pay:payment:cancel')")
public R<?> cancelById(@PathVariable("id") Long id){
//TODO 远程同步东哥的数据,方案暂未落实
payPaymentService.cancel(id);
return R.ok();
}

3
src/main/java/com/qs/serve/modules/pay/entity/PayPayment.java

@ -59,6 +59,9 @@ public class PayPayment implements Serializable {
private String erpCode;
/** 发票编号 */
private String billNumber;
/** 支付人id */
@NotBlank(message = "支付人id不能为空")
@Length(max = 32,message = "支付人id长度不能超过32字")

9
src/main/java/com/qs/serve/modules/pay/entity/bo/PayPaymentBo.java

@ -24,6 +24,9 @@ import javax.validation.constraints.NotBlank;
@Data
public class PayPaymentBo implements Serializable {
/** 标题 */
private String title;
/** 供应商id */
@NotNull(message = "供应商id不能为空")
private Long supplierId;
@ -36,6 +39,10 @@ public class PayPaymentBo implements Serializable {
/** ERP编码 */
private String erpCode;
/** 发票编号 */
@NotNull(message = "发票编号不能为空")
private String billNumber;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
@ -44,7 +51,7 @@ public class PayPaymentBo implements Serializable {
/**
* 支付类型
* pay - 支付
* unPay - 不再支付
* unPay - 不再支付 TODO 同步告知东哥
**/
@NotNull(message = "支付类型不能为空")
private String payType;

15
src/main/java/com/qs/serve/modules/pay/service/impl/PayPaymentServiceImpl.java

@ -13,11 +13,15 @@ import com.qs.serve.modules.pay.entity.bo.PayPaymentBo;
import com.qs.serve.modules.pay.entity.dto.PayPaymentAmountDto;
import com.qs.serve.modules.pay.service.PayHistoryItemService;
import com.qs.serve.modules.pay.service.PayPaymentItemService;
import com.qs.serve.modules.seeyon.entity.XltPaymentRecord;
import com.qs.serve.modules.seeyon.service.XiaoLuTonService;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.service.TbsActivityService;
import com.qs.serve.modules.vtb.entity.VtbVerification;
import com.qs.serve.modules.vtb.entity.VtbVerificationSubject;
import com.qs.serve.modules.vtb.service.VtbVerificationService;
import com.qs.serve.modules.vtb.service.VtbVerificationSubjectService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -48,12 +52,15 @@ public class PayPaymentServiceImpl extends ServiceImpl<PayPaymentMapper,PayPayme
private BmsSupplierService supplierService;
private PayPaymentItemService paymentItemService;
private VtbVerificationSubjectService verificationSubjectService;
private VtbVerificationService verificationService;
private TbsActivityService activityService;
private PayHistoryItemService payHistoryItemService;
private XiaoLuTonService xiaoLuTonService;
@Override
@Transactional(rollbackFor = Exception.class)
public PayPayment payment(PayPaymentBo paymentBo) {
LocalDateTime now = LocalDateTime.now();
String payType = paymentBo.getPayType();
if(!payType.equals(PaymentType.PAYMENT)&&!payType.equals(PaymentType.UN_PAYMENT)){
Assert.throwEx("param err P1 ");
@ -99,6 +106,14 @@ public class PayPaymentServiceImpl extends ServiceImpl<PayPaymentMapper,PayPayme
break;
}
currentBalance = this.buildPaymentItems(paymentBo, currentBalance, paymentItemList, verificationSubjectUpdateList, verificationSubject);
if(payType.equals(PaymentType.PAYMENT)){
//TODO 保存支付记录
XltPaymentRecord paymentRecord = new XltPaymentRecord();
//xiaoLuTonService.savePaymentRecord(paymentRecord);
}else if(payType.equals(PaymentType.UN_PAYMENT)){
//TODO 不再支付保存记录待定
}
}
PayPayment payPayment = new PayPayment();
payPayment.setPayType(payType);

81
src/main/java/com/qs/serve/modules/seeyon/entity/XltApticlaim.java

@ -0,0 +1,81 @@
package com.qs.serve.modules.seeyon.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 核销
* @author YenHex
* @since 2023/1/3
*/
@Data
public class XltApticlaim implements Serializable {
private static final long serialVersionUID = 1L;
/** 核销编号 */
private String verificationCode;
/** 费用编号(后缀表示详情子项) */
@NotBlank(message = "费用编号(后缀表示详情子项)不能为空")
private String costCode;
/** 费用编号 */
@NotBlank(message = "费用编号不能为空")
private String costCode2;
/** 客户编号 */
@NotBlank(message = "客户编号不能为空")
private String cusCode;
/** 金额 */
private BigDecimal amount;
/** 科目 */
private String subjectCode;
/** 费用科目描述 */
private String subjectName;
/** 申请类型 */
private String expType;
/** 单据类型 */
private String applyType;
/** 生效日期 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime effDate;
/** 有无发票(0:没有 1:有) */
private String invoiced;
/** 新增时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;
/** 处理状态(00:写入时初始状态 10: 处理成功 20: 处理失败) */
private String status;
/** 处理时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime dealTime;
/** 主题 */
private String topic;
}

99
src/main/java/com/qs/serve/modules/seeyon/entity/XltPaymentRecord.java

@ -0,0 +1,99 @@
package com.qs.serve.modules.seeyon.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author YenHex
* @since 2023/1/4
*/
@Data
public class XltPaymentRecord implements Serializable {
private static final long serialVersionUID = 1L;
/** 账套号 */
@Length(max = 50,message = "账套号长度不能超过50字")
private String cAcc;
/** 单据编号 */
@Length(max = 50,message = "单据编号长度不能超过50字")
private String cFyCode;
/** 单据名称 */
@Length(max = 500,message = "单据名称长度不能超过500字")
private String cFyName;
/** 制单日期 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime dDate;
/** 开始日期 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime dFyDate1;
/** 截止日期 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime dFyDate2;
/** 费用编号 */
@Length(max = 50,message = "费用编号长度不能超过50字")
private String cExpCode;
/** 费用金额 */
private Long nFyJe;
/** 单据备注 */
@Length(max = 500,message = "单据备注长度不能超过500字")
private String cFyMemo;
/** 销路通录入人 */
@Length(max = 50,message = "销路通录入人长度不能超过50字")
private String cXltUser;
/** 销路通录入时间 */
@Length(max = 50,message = "销路通录入时间长度不能超过50字")
private String dXltTime;
/** BI同步执行人 */
@Length(max = 50,message = "BI同步执行人长度不能超过50字")
private String cBIUser;
/** BI同步执行时间 */
@Length(max = 50,message = "BI同步执行时间长度不能超过50字")
private String dBITime;
/** 客户编号 */
@Length(max = 50,message = "客户编号长度不能超过50字")
private String cCusCode;
/** 客户名称 */
@Length(max = 200,message = "客户名称长度不能超过200字")
private String cCusName;
/** 发票编号 */
@Length(max = 50,message = "发票编号长度不能超过50字")
private String cSBVCode;
/** 发货单 */
@Length(max = 1000,message = "发货单长度不能超过1000字")
private String cDLCode;
/** 发票核销日期 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime dHxDate;
}

28
src/main/java/com/qs/serve/modules/seeyon/service/XiaoLuTonService.java

@ -0,0 +1,28 @@
package com.qs.serve.modules.seeyon.service;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.seeyon.entity.XltApticlaim;
import com.qs.serve.modules.seeyon.entity.XltPaymentRecord;
/**
* @author YenHex
* @since 2023/1/3
*/
public interface XiaoLuTonService {
/**
* 保存核销记录
* @param apticlaim
* @return
*/
R<String> saveApticlaim(XltApticlaim apticlaim);
/**
* 保存支付记录
* @param paymentRecord
* @return
*/
R<String> savePaymentRecord(XltPaymentRecord paymentRecord);
}

40
src/main/java/com/qs/serve/modules/seeyon/service/impl/SeeYonServiceImpl.java

@ -34,7 +34,7 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class SeeYonServiceImpl implements SeeYonService {
private SeeYonProperties seeYonProperties;
private SyBaseService syBaseService;
private SysUserService sysUserService;
@Nullable
@ -85,39 +85,39 @@ public class SeeYonServiceImpl implements SeeYonService {
@Override
public R<String> baseCreateProcess(BaseCreateProcessBo createProcessBo) {
String title = "创建流程";
return postBase(TbsSeeYonConst.API_PROCESS_CREATE,createProcessBo,title);
return syBaseService.postBase(TbsSeeYonConst.API_PROCESS_CREATE,createProcessBo,title);
}
@Override
public R<String> getCostFormId(Long costApplyId) {
String title = "获取表单ID";
String url2 = TbsSeeYonConst.API_GET_COST_FORM_ID+"?costApplyId="+costApplyId;
return getBase(url2,title);
return syBaseService.getBase(url2,title);
}
@Override
public R<String> getCheckFormId(Long checkId) {
String title = "获取表单ID";
String url2 = TbsSeeYonConst.API_GET_CHECK_FORM_ID+"?checkId="+checkId;
return getBase(url2,title);
return syBaseService.getBase(url2,title);
}
@Override
public R<String> affairCommit(CtpAffairCommit affairCommit) {
String title = "审批流程";
return postBase(TbsSeeYonConst.API_PROCESS_COMMIT,affairCommit,title);
return syBaseService.postBase(TbsSeeYonConst.API_PROCESS_COMMIT,affairCommit,title);
}
@Override
public R<String> affairCancel(CtpAffairCancel affairCancel) {
String title = "取消流程";
return postBase(TbsSeeYonConst.API_PROCESS_CANCEL,affairCancel,title);
return syBaseService.postBase(TbsSeeYonConst.API_PROCESS_CANCEL,affairCancel,title);
}
@Override
public R<PageVo<CtpAffair>> pageMemberAffair(CtpAffairQo ctpAffairQo) {
String title = "用户审批流程";
R<String> result = postBase(TbsSeeYonConst.API_PAGE_AFFAIR,ctpAffairQo,title);
R<String> result = syBaseService.postBase(TbsSeeYonConst.API_PAGE_AFFAIR,ctpAffairQo,title);
if(result.getStatus()==200){
PageVo<?> pageVo = JsonUtil.jsonToPojo(result.getData(),PageVo.class);
List<CtpAffair> affairList = new ArrayList<>();
@ -137,7 +137,7 @@ public class SeeYonServiceImpl implements SeeYonService {
@Override
public R<List<CtpAffair>> listFormAffair(CtpAffairQo ctpAffairQo) {
String title = "表单审批节点";
R<String> result = postBase(TbsSeeYonConst.API_LIST_AFFAIR,ctpAffairQo,title);
R<String> result = syBaseService.postBase(TbsSeeYonConst.API_LIST_AFFAIR,ctpAffairQo,title);
if(result.getStatus()==200){
List<?> list = JsonUtil.jsonToPojo(result.getData(),List.class);
List<CtpAffair> affairList = new ArrayList<>();
@ -153,30 +153,6 @@ public class SeeYonServiceImpl implements SeeYonService {
return null;
}
private R<String> getBase(String url2, String title){
String url = getBaseUrl();
R<String> result = HttpUtil.doGetResult(url+url2,null);
if(result.getStatus()!=200){
log.error("致远服务失败[{},{}] url2:{}",title,result.getMsg(),url2);
}
return result;
}
private R<String> postBase(String url2,Object param,String title){
String url = getBaseUrl();
R<String> result = HttpUtil.doPostResult(url + url2, JsonUtil.objectToJson(param),null);
if(result.getStatus()!=200){
log.error("致远服务失败[{},{}]\nParam:{}",title,result.getMsg(),JsonUtil.objectToJson(param));
}
log.debug("致远服务返回R<String>:{}",JsonUtil.objectToJson(result));
return result;
}
private String getBaseUrl(){
if(!seeYonProperties.getEnable()){
Assert.throwEx("远程服务未开启");
}
return seeYonProperties.getUrl();
}
}

52
src/main/java/com/qs/serve/modules/seeyon/service/impl/SyBaseService.java

@ -0,0 +1,52 @@
package com.qs.serve.modules.seeyon.service.impl;
import com.qs.serve.common.config.properties.SeeYonProperties;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.HttpUtil;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author YenHex
* @since 2023/1/4
*/
@Slf4j
@Service
@AllArgsConstructor
public class SyBaseService {
private SeeYonProperties seeYonProperties;
private SysUserService sysUserService;
public R<String> getBase(String url2, String title){
String url = getBaseUrl();
R<String> result = HttpUtil.doGetResult(url+url2,null);
if(result.getStatus()!=200){
log.error("致远服务失败[{},{}] url2:{}",title,result.getMsg(),url2);
}
return result;
}
public R<String> postBase(String url2,Object param,String title){
String url = getBaseUrl();
R<String> result = HttpUtil.doPostResult(url + url2, JsonUtil.objectToJson(param),null);
if(result.getStatus()!=200){
log.error("致远服务失败[{},{}]\nParam:{}",title,result.getMsg(),JsonUtil.objectToJson(param));
}
log.debug("致远服务返回R<String>:{}",JsonUtil.objectToJson(result));
return result;
}
public String getBaseUrl(){
if(!seeYonProperties.getEnable()){
Assert.throwEx("远程服务未开启");
}
return seeYonProperties.getUrl();
}
}

35
src/main/java/com/qs/serve/modules/seeyon/service/impl/XiaoLuTonServiceImpl.java

@ -0,0 +1,35 @@
package com.qs.serve.modules.seeyon.service.impl;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.modules.seeyon.entity.XltApticlaim;
import com.qs.serve.modules.seeyon.entity.XltPaymentRecord;
import com.qs.serve.modules.seeyon.service.XiaoLuTonService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author YenHex
* @since 2023/1/3
*/
@Slf4j
@Service
@AllArgsConstructor
public class XiaoLuTonServiceImpl implements XiaoLuTonService {
private SyBaseService syBaseService;
@Override
public R<String> saveApticlaim(XltApticlaim apticlaim) {
String title = "保存核销记录";
return syBaseService.postBase(TbsSeeYonConst.XLT_SAVE_CHECK,apticlaim,title);
}
@Override
public R<String> savePaymentRecord(XltPaymentRecord paymentRecord) {
String title = "保存支付记录";
return syBaseService.postBase(TbsSeeYonConst.XLT_SAVE_PAYMENT,paymentRecord,title);
}
}

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

@ -20,4 +20,7 @@ public interface TbsSeeYonConst {
String API_PAGE_AFFAIR = "/process/pageMemberAffair";
String API_LIST_AFFAIR = "/process/listFormAffair";
String XLT_SAVE_CHECK = "/xlt/saveCheck";
String XLT_SAVE_PAYMENT = "/xlt/savePayment";
}

Loading…
Cancel
Save