24282 3 months ago
parent
commit
a7cba81c8d

+ 9 - 0
jy-business/src/main/java/com/jy/business/contract/controller/ContractInfoController.java

@@ -5,6 +5,7 @@ import com.jy.business.contract.model.dto.ContractInfoDto;
 import com.jy.business.contract.model.dto.ContractInfoSelectDto;
 import com.jy.business.contract.model.vo.ContractInfoVo;
 import com.jy.business.contract.model.vo.ContractStatisticsVo;
+import com.jy.business.contract.model.vo.TransactionVo;
 import com.jy.business.contract.service.ContractInfoService;
 import com.jy.framework.model.base.BaseSelectDto;
 import jakarta.annotation.Resource;
@@ -84,4 +85,12 @@ public class ContractInfoController {
         contractInfoService.delete(dto.getIdList());
     }
 
+    /**
+     * 交易明细
+     */
+    @GetMapping("getTransactionList")
+    public List<TransactionVo> getTransactionList(BaseSelectDto dto) {
+        return contractInfoService.getTransactionList(dto.getId());
+    }
+
 }

+ 65 - 0
jy-business/src/main/java/com/jy/business/contract/dao/ContractInfoDao.java

@@ -1,6 +1,7 @@
 package com.jy.business.contract.dao;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.model.table.CapitalAccountTable;
 import com.jy.business.capital.model.table.CapitalTransactionsTable;
 import com.jy.business.contract.mapper.ContractInfoMapper;
 import com.jy.business.contract.model.dto.ContractInfoSelectDto;
@@ -9,6 +10,10 @@ import com.jy.business.contract.model.table.ContractDetailTable;
 import com.jy.business.contract.model.table.ContractInfoTable;
 import com.jy.business.contract.model.vo.ContractInfoVo;
 import com.jy.business.contract.model.vo.ContractStatisticsVo;
+import com.jy.business.contract.model.vo.TransactionVo;
+import com.jy.business.payment.model.table.PaymentRemitTable;
+import com.jy.business.payment.model.table.PaymentRequestsDetailTable;
+import com.jy.business.payment.model.table.PaymentRequestsTable;
 import com.jy.framework.model.base.BaseDao;
 import com.jy.framework.mybatis.join.TempTable;
 import org.springframework.stereotype.Service;
@@ -105,4 +110,64 @@ public class ContractInfoDao extends BaseDao<ContractInfoMapper, ContractInfo> {
                 )
                 .one();
     }
+
+    public List<TransactionVo> getTransactionList(Long id) {
+        CapitalTransactionsTable ct = CapitalTransactionsTable.ct;
+        CapitalAccountTable ca = CapitalAccountTable.ca;
+        PaymentRequestsDetailTable prd = PaymentRequestsDetailTable.prd;
+        PaymentRequestsTable pr = PaymentRequestsTable.pr;
+        PaymentRemitTable pre = PaymentRemitTable.payment_remit;
+
+
+        // 请款
+        TempTable t = sql()
+                .select(
+                        pre.remitTime.as(TransactionVo::getTradingTime),
+                        column("1").as(TransactionVo::getType),
+                        prd.amount.as(TransactionVo::getTradingAmount),
+                        prd.remark.as(TransactionVo::getRemark),
+                        ca.depositBank.as(TransactionVo::getDepositBank),
+                        ca.accountName.as(TransactionVo::getAccountName),
+                        ca.account.as(TransactionVo::getAccount),
+                        pr.depositBank.as(TransactionVo::getTargetDepositBank),
+                        pr.accountName.as(TransactionVo::getTargetAccountName),
+                        pr.account.as(TransactionVo::getTargetAccount)
+                )
+                .from(prd)
+                .innerJoin(pr).on(prd.paymentRequestsId.eq(pr.id))
+                .innerJoin(pre).on(pre.paymentRequestsId.eq(pr.id))
+                .innerJoin(ca).on(pre.capitalAccountId.eq(ca.id))
+                .where(
+                        prd.contractId.eq(id)
+                )
+
+                .unionAll()
+
+                // 到账认领
+                .select(
+                        ct.tradingTime.as(TransactionVo::getTradingTime),
+                        column("2").as(TransactionVo::getType),
+                        ct.amount.as(TransactionVo::getTradingAmount),
+                        ct.remark.as(TransactionVo::getRemark),
+                        ca.depositBank.as(TransactionVo::getDepositBank),
+                        ca.accountName.as(TransactionVo::getAccountName),
+                        ca.account.as(TransactionVo::getAccount),
+                        ct.targetDepositBank.as(TransactionVo::getTargetDepositBank),
+                        ct.targetAccountName.as(TransactionVo::getTargetAccountName),
+                        ct.targetAccount.as(TransactionVo::getTargetAccount)
+                )
+                .from(ct)
+                .leftJoin(ca).on(ct.capitalAccountId.eq(ca.id))
+                .where(
+                        ct.contractId.eq(id),
+                        ct.targetType.eq(70)
+                ).toTable("t");
+
+        return sql(TransactionVo.class)
+                .select(column("*"))
+                .from(t)
+                .orderBy(t.field(TransactionVo::getTradingTime).desc())
+                .list();
+    }
+
 }

+ 62 - 0
jy-business/src/main/java/com/jy/business/contract/model/vo/TransactionVo.java

@@ -0,0 +1,62 @@
+package com.jy.business.contract.model.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Getter
+@Setter
+public class TransactionVo {
+
+    /**
+     * 交易时间
+     */
+    private Date tradingTime;
+
+    /**
+     * 类型 1请款 2到账认领
+     */
+    private Integer type;
+
+    /**
+     * 交易金额
+     */
+    private Boolean tradingAmount;
+
+    /**
+     * 摘要
+     */
+    private String remark;
+
+    /**
+     * 开户银行
+     */
+    private String depositBank;
+
+    /**
+     * 账户名
+     */
+    private String accountName;
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 对方开户银行
+     */
+    private String targetDepositBank;
+
+    /**
+     * 对方账户名
+     */
+    private String targetAccountName;
+
+    /**
+     * 对方账号
+     */
+    private String targetAccount;
+
+}

+ 6 - 0
jy-business/src/main/java/com/jy/business/contract/service/ContractInfoService.java

@@ -5,6 +5,7 @@ import com.jy.business.contract.model.dto.ContractInfoDto;
 import com.jy.business.contract.model.dto.ContractInfoSelectDto;
 import com.jy.business.contract.model.vo.ContractInfoVo;
 import com.jy.business.contract.model.vo.ContractStatisticsVo;
+import com.jy.business.contract.model.vo.TransactionVo;
 
 import java.util.List;
 
@@ -50,4 +51,9 @@ public interface ContractInfoService {
      */
     void delete(List<Long> idList);
 
+    /**
+     * 交易明细
+     */
+    List<TransactionVo> getTransactionList(Long id);
+
 }

+ 6 - 0
jy-business/src/main/java/com/jy/business/contract/service/impl/ContractInfoServiceImpl.java

@@ -12,6 +12,7 @@ import com.jy.business.contract.model.dto.ContractInfoSelectDto;
 import com.jy.business.contract.model.entity.ContractDetail;
 import com.jy.business.contract.model.vo.ContractInfoVo;
 import com.jy.business.contract.model.vo.ContractStatisticsVo;
+import com.jy.business.contract.model.vo.TransactionVo;
 import com.jy.business.contract.service.ContractInfoService;
 import com.jy.framework.model.base.BaseIdPo;
 import com.jy.framework.utils.AssertUtil;
@@ -135,4 +136,9 @@ public class ContractInfoServiceImpl implements ContractInfoService {
         contractInfoDao.removeBatchByIds(idList);
     }
 
+    @Override
+    public List<TransactionVo> getTransactionList(Long id) {
+        return contractInfoDao.getTransactionList(id);
+    }
+
 }

+ 5 - 0
jy-business/src/main/java/com/jy/business/payment/model/entity/PaymentRequestsDetail.java

@@ -30,6 +30,11 @@ public class PaymentRequestsDetail extends BaseIdPo {
     private Long paymentRequestsId;
 
     /**
+     * 合同id
+     */
+    private Long contractId;
+
+    /**
      * 费用类型
      */
     private Integer expenseType;

+ 6 - 0
jy-business/src/main/java/com/jy/business/payment/model/table/PaymentRequestsDetailTable.java

@@ -1,5 +1,6 @@
 package com.jy.business.payment.model.table;
 
+import com.jy.business.capital.model.entity.CapitalTransactions;
 import com.jy.business.payment.model.entity.PaymentRequestsDetail;
 import com.jy.framework.mybatis.join.QueryColumn;
 import com.jy.framework.mybatis.join.Table;
@@ -20,6 +21,11 @@ public class PaymentRequestsDetailTable extends Table<PaymentRequestsDetail> {
     public QueryColumn paymentRequestsId = this.field(PaymentRequestsDetail::getPaymentRequestsId);
 
     /**
+     * 合同id
+     */
+    public QueryColumn contractId = this.field(PaymentRequestsDetail::getContractId);
+
+    /**
      * 费用类型
      */
     public QueryColumn expenseType = this.field(PaymentRequestsDetail::getExpenseType);

+ 17 - 0
jy-framework/src/main/java/com/jy/framework/model/base/BaseDao.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jy.framework.mybatis.join.DefaultFunction;
+import com.jy.framework.mybatis.join.QueryColumn;
 import com.jy.framework.mybatis.join.Sql;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -30,6 +31,22 @@ public class BaseDao<M extends BaseMapper<T>, T extends BaseIdPo> extends Servic
         return Sql.create(clazz);
     }
 
+    public <E> QueryColumn column(SFunction<E, ?> function) {
+        return new QueryColumn(function);
+    }
+
+    public <E> QueryColumn column(String tableAlias, SFunction<E, ?> function) {
+        return new QueryColumn(tableAlias, function);
+    }
+
+    public QueryColumn column(String field) {
+        return new QueryColumn(field);
+    }
+
+    public QueryColumn column(String tableAlias, String field) {
+        return new QueryColumn(tableAlias, field);
+    }
+
     public <K> List<K> fieldList(SFunction<T, K> mapper, Consumer<LambdaQueryWrapper<T>> consumer) {
         List<T> list = list(Wrappers.<T>lambdaQuery().select(mapper).func(ObjectUtil.isNotEmpty(consumer), consumer));
         return list.stream().map(mapper).filter(ObjectUtil::isNotEmpty).toList();

+ 28 - 2
jy-framework/src/main/java/com/jy/framework/mybatis/join/QueryColumn.java

@@ -1,9 +1,13 @@
 package com.jy.framework.mybatis.join;
 
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
+import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import lombok.RequiredArgsConstructor;
+import org.apache.ibatis.reflection.property.PropertyNamer;
 
-@RequiredArgsConstructor
 public class QueryColumn extends AbstractQueryColumn {
 
     /**
@@ -16,6 +20,28 @@ public class QueryColumn extends AbstractQueryColumn {
      */
     private final String field;
 
+    public QueryColumn(String field) {
+        this.tableAlias = StringPool.EMPTY;
+        this.field = field;
+    }
+
+    public QueryColumn(String tableAlias, String field) {
+        this.tableAlias = tableAlias;
+        this.field = field;
+    }
+
+    public <T> QueryColumn(SFunction<T, ?> function) {
+        this.tableAlias = StringPool.EMPTY;
+        LambdaMeta meta = LambdaUtils.extract(function);
+        this.field = StrUtil.toUnderlineCase(PropertyNamer.methodToProperty(meta.getImplMethodName()));
+    }
+
+    public <T> QueryColumn(String tableAlias, SFunction<T, ?> function) {
+        this.tableAlias = tableAlias;
+        LambdaMeta meta = LambdaUtils.extract(function);
+        this.field = StrUtil.toUnderlineCase(PropertyNamer.methodToProperty(meta.getImplMethodName()));
+    }
+
     @Override
     protected QueryColumn copy() {
         return new QueryColumn(this.tableAlias, this.field);
@@ -23,7 +49,7 @@ public class QueryColumn extends AbstractQueryColumn {
 
     @Override
     protected String format() {
-        String sql = tableAlias + StringPool.DOT + field;
+        String sql = StrUtil.isBlank(tableAlias) ? field : tableAlias + StringPool.DOT + field;
         return spliceCompute(sql);
     }