Kaynağa Gözat

Merge branch 'master' of http://8.149.142.40:3000/fjhx2012/jy_erp

lxf 3 ay önce
ebeveyn
işleme
17439761c8
24 değiştirilmiş dosya ile 456 ekleme ve 21 silme
  1. 25 0
      jy-business/src/main/java/com/jy/business/capital/dao/CapitalTransactionsDao.java
  2. 5 0
      jy-business/src/main/java/com/jy/business/capital/model/entity/CapitalTransactions.java
  3. 5 0
      jy-business/src/main/java/com/jy/business/capital/model/table/CapitalTransactionsTable.java
  4. 5 0
      jy-business/src/main/java/com/jy/business/capital/model/vo/CapitalTransactionsVo.java
  5. 16 1
      jy-business/src/main/java/com/jy/business/contract/controller/ContractInfoController.java
  6. 102 6
      jy-business/src/main/java/com/jy/business/contract/dao/ContractInfoDao.java
  7. 3 1
      jy-business/src/main/java/com/jy/business/contract/model/dto/ContractInfoSelectDto.java
  8. 5 0
      jy-business/src/main/java/com/jy/business/contract/model/entity/ContractDetail.java
  9. 5 0
      jy-business/src/main/java/com/jy/business/contract/model/table/ContractDetailTable.java
  10. 15 1
      jy-business/src/main/java/com/jy/business/contract/model/vo/ContractInfoVo.java
  11. 32 0
      jy-business/src/main/java/com/jy/business/contract/model/vo/ContractStatisticsVo.java
  12. 63 0
      jy-business/src/main/java/com/jy/business/contract/model/vo/TransactionVo.java
  13. 10 1
      jy-business/src/main/java/com/jy/business/contract/service/ContractInfoService.java
  14. 1 0
      jy-business/src/main/java/com/jy/business/contract/service/impl/ContractFundReceivedServiceImpl.java
  15. 75 2
      jy-business/src/main/java/com/jy/business/contract/service/impl/ContractInfoServiceImpl.java
  16. 5 0
      jy-business/src/main/java/com/jy/business/payment/model/entity/PaymentRequestsDetail.java
  17. 6 0
      jy-business/src/main/java/com/jy/business/payment/model/table/PaymentRequestsDetailTable.java
  18. 17 0
      jy-framework/src/main/java/com/jy/framework/model/base/BaseDao.java
  19. 7 0
      jy-framework/src/main/java/com/jy/framework/mybatis/join/DefaultFunction.java
  20. 28 2
      jy-framework/src/main/java/com/jy/framework/mybatis/join/QueryColumn.java
  21. 1 0
      jy-framework/src/main/java/com/jy/framework/mybatis/join/SqlConstant.java
  22. 1 1
      jy-ui/.env.development
  23. 22 4
      jy-ui/src/views/business/contract/info/index.vue
  24. 2 2
      jy-ui/src/views/login/components/LoginForm.vue

+ 25 - 0
jy-business/src/main/java/com/jy/business/capital/dao/CapitalTransactionsDao.java

@@ -9,8 +9,11 @@ import com.jy.business.capital.model.table.CapitalTransactionsTable;
 import com.jy.business.capital.model.vo.CapitalTransactionsVo;
 import com.jy.business.corporation.model.table.CorporationTable;
 import com.jy.framework.model.base.BaseDao;
+import com.jy.system.model.table.SysUserTable;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class CapitalTransactionsDao extends BaseDao<CapitalTransactionsMapper, CapitalTransactions> {
 
@@ -67,4 +70,26 @@ public class CapitalTransactionsDao extends BaseDao<CapitalTransactionsMapper, C
     public boolean capitalAccountExists(Long id) {
         return lambdaQuery().eq(CapitalTransactions::getCapitalAccountId, id).exists();
     }
+
+    public List<CapitalTransactionsVo> getByContract(List<Long> contractIdList) {
+        CapitalTransactionsTable ct = CapitalTransactionsTable.ct;
+        SysUserTable su = SysUserTable.su;
+
+        return sql(CapitalTransactionsVo.class)
+                .select(
+                        ct.all,
+                        su.nickname
+                )
+                .from(ct)
+                .leftJoin(su).on(ct.createUser.eq(su.id))
+                .where(
+                        ct.targetType.eq(70),
+                        ct.contractId.in(contractIdList)
+                )
+                .orderBy(
+                        ct.tradingTime.desc(),
+                        ct.id.desc()
+                )
+                .list();
+    }
 }

+ 5 - 0
jy-business/src/main/java/com/jy/business/capital/model/entity/CapitalTransactions.java

@@ -78,6 +78,11 @@ public class CapitalTransactions extends BaseIdPo {
     private String remark;
 
     /**
+     * 合同id
+     */
+    private Long contractId;
+
+    /**
      * 订单id
      */
     private Long orderId;

+ 5 - 0
jy-business/src/main/java/com/jy/business/capital/model/table/CapitalTransactionsTable.java

@@ -60,6 +60,11 @@ public class CapitalTransactionsTable extends Table<CapitalTransactions> {
     public QueryColumn remark = this.field(CapitalTransactions::getRemark);
 
     /**
+     * 合同id
+     */
+    public QueryColumn contractId = this.field(CapitalTransactions::getContractId);
+
+    /**
      * 订单id
      */
     public QueryColumn orderId = this.field(CapitalTransactions::getOrderId);

+ 5 - 0
jy-business/src/main/java/com/jy/business/capital/model/vo/CapitalTransactionsVo.java

@@ -41,4 +41,9 @@ public class CapitalTransactionsVo extends CapitalTransactions {
      */
     private BigDecimal dateAmount;
 
+    /**
+     * 用户名称
+     */
+    private String nickname;
+
 }

+ 16 - 1
jy-business/src/main/java/com/jy/business/contract/controller/ContractInfoController.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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;
@@ -20,7 +22,7 @@ import java.util.List;
  * 合同 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2025-06-10
  */
 @RestController
@@ -30,6 +32,11 @@ public class ContractInfoController {
     @Resource
     private ContractInfoService contractInfoService;
 
+    @GetMapping("/statistics")
+    public List<ContractStatisticsVo> getStatistics() {
+        return contractInfoService.getStatistics();
+    }
+
     /**
      * 合同列表
      */
@@ -78,4 +85,12 @@ public class ContractInfoController {
         contractInfoService.delete(dto.getIdList());
     }
 
+    /**
+     * 交易明细
+     */
+    @GetMapping("getTransactionList")
+    public List<TransactionVo> getTransactionList(BaseSelectDto dto) {
+        return contractInfoService.getTransactionList(dto.getId());
+    }
+
 }

+ 102 - 6
jy-business/src/main/java/com/jy/business/contract/dao/ContractInfoDao.java

@@ -1,14 +1,21 @@
 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;
 import com.jy.business.contract.model.entity.ContractInfo;
+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.system.service.AuthService;
-import jakarta.annotation.Resource;
+import com.jy.framework.mybatis.join.TempTable;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -16,8 +23,31 @@ import java.util.List;
 @Service
 public class ContractInfoDao extends BaseDao<ContractInfoMapper, ContractInfo> {
 
-    @Resource
-    private AuthService authService;
+    public List<ContractStatisticsVo> getStatistics() {
+        ContractInfoTable ci = ContractInfoTable.ci;
+        CapitalTransactionsTable ct = CapitalTransactionsTable.ct;
+
+        TempTable t = sql().select(
+                        _ifNull(_sum(ct.amount), 0).as(ContractStatisticsVo::getFundReceivedAmount),
+                        ci.sellerCompany
+                )
+                .from(ci)
+                .leftJoin(ct).on(ct.targetType.eq(70), ci.id.eq(ct.contractId))
+                .groupBy(ci.sellerCompany)
+                .toTable("t");
+
+        return sql(ContractStatisticsVo.class)
+                .select(
+                        ci.sellerCompany,
+                        _count(0).as(ContractStatisticsVo::getContractQuantity),
+                        _sum(ci.amount).as(ContractStatisticsVo::getContractAmount),
+                        t.field(ContractStatisticsVo::getFundReceivedAmount)
+                )
+                .from(ci)
+                .leftJoin(t).on(ci.sellerCompany.eq(t.field(ContractInfo::getSellerCompany)))
+                .groupBy(ci.sellerCompany)
+                .list();
+    }
 
     /**
      * 合同列表
@@ -33,7 +63,7 @@ public class ContractInfoDao extends BaseDao<ContractInfoMapper, ContractInfo> {
                 .where(
                 )
                 .orderBy(
-                    ci.id.desc()
+                        ci.id.desc()
                 )
                 .list();
     }
@@ -43,13 +73,20 @@ public class ContractInfoDao extends BaseDao<ContractInfoMapper, ContractInfo> {
      */
     public Page<ContractInfoVo> getPage(ContractInfoSelectDto dto) {
         ContractInfoTable ci = ContractInfoTable.ci;
+        ContractDetailTable cd = ContractDetailTable.cd;
 
         return sql(ContractInfoVo.class)
                 .select(
-                        ci.all
+                        ci.all,
+                        sql()
+                                .select(_sum(_ifNull(cd.costPrice, 0).multiply(cd.quantity))).from(cd).where(ci.id.eq(cd.contractId))
+                                .add(ci.freightPrice)
+                                .add(ci.insurance)
+                                .as(ContractInfoVo::getCostPrice)
                 )
                 .from(ci)
                 .where(
+                        ci.contractNo.like(dto.getContractNo())
                 )
                 .orderBy(
                         ci.id.desc()
@@ -74,4 +111,63 @@ 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();
+    }
+
 }

+ 3 - 1
jy-business/src/main/java/com/jy/business/contract/model/dto/ContractInfoSelectDto.java

@@ -7,11 +7,13 @@ import lombok.Setter;
 /**
  * 合同列表查询入参实体
  *
- * @author 
+ * @author
  * @since 2025-06-10
  */
 @Getter
 @Setter
 public class ContractInfoSelectDto extends BaseSelectDto {
 
+    private String contractNo;
+
 }

+ 5 - 0
jy-business/src/main/java/com/jy/business/contract/model/entity/ContractDetail.java

@@ -74,6 +74,11 @@ public class ContractDetail extends BaseIdPo {
     private BigDecimal unitPrice;
 
     /**
+     * 成本价
+     */
+    private BigDecimal costPrice;
+
+    /**
      * 金额
      */
     private BigDecimal amount;

+ 5 - 0
jy-business/src/main/java/com/jy/business/contract/model/table/ContractDetailTable.java

@@ -70,6 +70,11 @@ public class ContractDetailTable extends Table<ContractDetail> {
     public QueryColumn amount = this.field(ContractDetail::getAmount);
 
     /**
+     * 成本价
+     */
+    public QueryColumn costPrice = this.field(ContractDetail::getCostPrice);
+
+    /**
      * 备注
      */
     public QueryColumn remark = this.field(ContractDetail::getRemark);

+ 15 - 1
jy-business/src/main/java/com/jy/business/contract/model/vo/ContractInfoVo.java

@@ -1,22 +1,36 @@
 package com.jy.business.contract.model.vo;
 
+import com.jy.business.capital.model.vo.CapitalTransactionsVo;
 import com.jy.business.contract.model.entity.ContractDetail;
 import com.jy.business.contract.model.entity.ContractInfo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
  * 合同列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2025-06-10
  */
 @Getter
 @Setter
 public class ContractInfoVo extends ContractInfo {
 
+    /**
+     * 成本价
+     */
+    private BigDecimal costPrice;
+
+    /**
+     * 到账金额
+     */
+    private BigDecimal receivedAmount;
+
+    private List<CapitalTransactionsVo> capitalTransactionsList;
+
     private List<ContractDetail> list;
 
 }

+ 32 - 0
jy-business/src/main/java/com/jy/business/contract/model/vo/ContractStatisticsVo.java

@@ -0,0 +1,32 @@
+package com.jy.business.contract.model.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class ContractStatisticsVo {
+
+    /**
+     * 合同数量
+     */
+    private Integer contractQuantity;
+
+    /**
+     * 公司名称
+     */
+    private String sellerCompany;
+
+    /**
+     * 合同金额
+     */
+    private BigDecimal contractAmount;
+
+    /**
+     * 到账金额
+     */
+    private BigDecimal fundReceivedAmount;
+
+}

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

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

+ 10 - 1
jy-business/src/main/java/com/jy/business/contract/service/ContractInfoService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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;
 
@@ -12,11 +14,13 @@ import java.util.List;
  * 合同 服务类
  * </p>
  *
- * @author 
+ * @author
  * @since 2025-06-10
  */
 public interface ContractInfoService {
 
+    List<ContractStatisticsVo> getStatistics();
+
     /**
      * 合同列表
      */
@@ -47,4 +51,9 @@ public interface ContractInfoService {
      */
     void delete(List<Long> idList);
 
+    /**
+     * 交易明细
+     */
+    List<TransactionVo> getTransactionList(Long id);
+
 }

+ 1 - 0
jy-business/src/main/java/com/jy/business/contract/service/impl/ContractFundReceivedServiceImpl.java

@@ -88,6 +88,7 @@ public class ContractFundReceivedServiceImpl implements ContractFundReceivedServ
         capitalTransactionsDto.setType(1);
         capitalTransactionsDto.setAmount(dto.getReceivedAmount());
         capitalTransactionsDto.setTargetType(70);
+        capitalTransactionsDto.setContractId(dto.getContractId());
 
         dto.setCapitalTransactionsId(capitalTransactionsDto.getId());
         boolean update = contractFundReceivedDao.update(q -> q

+ 75 - 2
jy-business/src/main/java/com/jy/business/contract/service/impl/ContractInfoServiceImpl.java

@@ -1,26 +1,37 @@
 package com.jy.business.contract.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.dao.CapitalTransactionsDao;
+import com.jy.business.capital.model.entity.CapitalTransactions;
+import com.jy.business.capital.model.vo.CapitalTransactionsVo;
 import com.jy.business.contract.dao.ContractDetailDao;
 import com.jy.business.contract.dao.ContractInfoDao;
 import com.jy.business.contract.model.dto.ContractInfoDto;
 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;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
  * 合同 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2025-06-10
  */
 @Service
@@ -32,6 +43,33 @@ public class ContractInfoServiceImpl implements ContractInfoService {
     @Resource
     private ContractDetailDao contractDetailDao;
 
+    @Resource
+    private CapitalTransactionsDao capitalTransactionsDao;
+
+    @Override
+    public List<ContractStatisticsVo> getStatistics() {
+        List<ContractStatisticsVo> list = contractInfoDao.getStatistics();
+
+        int contractQuantity = 0;
+        BigDecimal contractAmount = BigDecimal.ZERO;
+        BigDecimal fundReceivedAmount = BigDecimal.ZERO;
+
+        ContractStatisticsVo contractStatisticsVo = new ContractStatisticsVo();
+        for (ContractStatisticsVo item : list) {
+            contractQuantity = contractQuantity + item.getContractQuantity();
+            contractAmount = contractAmount.add(item.getContractAmount());
+            fundReceivedAmount = fundReceivedAmount.add(item.getFundReceivedAmount());
+        }
+
+        contractStatisticsVo.setContractQuantity(contractQuantity);
+        contractStatisticsVo.setContractAmount(contractAmount);
+        contractStatisticsVo.setFundReceivedAmount(fundReceivedAmount);
+        contractStatisticsVo.setSellerCompany("合计");
+
+        list.add(0, contractStatisticsVo);
+        return list;
+    }
+
     @Override
     public List<ContractInfoVo> getList(ContractInfoSelectDto dto) {
         return contractInfoDao.getList(dto);
@@ -39,7 +77,37 @@ public class ContractInfoServiceImpl implements ContractInfoService {
 
     @Override
     public Page<ContractInfoVo> getPage(ContractInfoSelectDto dto) {
-        return contractInfoDao.getPage(dto);
+        Page<ContractInfoVo> page = contractInfoDao.getPage(dto);
+        List<ContractInfoVo> records = page.getRecords();
+
+        if (records.isEmpty()) {
+            return page;
+        }
+
+        // 合同id
+        List<Long> idList = records.stream().map(BaseIdPo::getId).toList();
+        Map<Long, List<CapitalTransactionsVo>> map = capitalTransactionsDao.getByContract(idList)
+                .stream()
+                .collect(Collectors.groupingBy(CapitalTransactions::getContractId));
+
+        for (ContractInfoVo record : records) {
+            List<CapitalTransactionsVo> capitalTransactionsList = map.get(record.getId());
+
+            if (ObjectUtil.isEmpty(capitalTransactionsList)) {
+                record.setReceivedAmount(BigDecimal.ZERO);
+                record.setCapitalTransactionsList(Collections.emptyList());
+            } else {
+                record.setReceivedAmount(
+                        capitalTransactionsList.stream()
+                                .map(CapitalTransactions::getAmount)
+                                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                );
+
+                record.setCapitalTransactionsList(capitalTransactionsList);
+            }
+        }
+
+        return page;
     }
 
     @Override
@@ -68,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();

+ 7 - 0
jy-framework/src/main/java/com/jy/framework/mybatis/join/DefaultFunction.java

@@ -17,6 +17,13 @@ public interface DefaultFunction {
     }
 
     /**
+     * 求和
+     */
+    default QueryFunction _sum(Object obj) {
+        return new QueryFunction(SqlConstant.SUM, obj);
+    }
+
+    /**
      * 将多个字符串跳过,拼接
      */
     default QueryFunction _groupConcat(Object... objs) {

+ 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);
     }
 

+ 1 - 0
jy-framework/src/main/java/com/jy/framework/mybatis/join/SqlConstant.java

@@ -61,6 +61,7 @@ public interface SqlConstant {
     // ===========================================
     String COUNT = "COUNT";
     String CONCAT = "CONCAT";
+    String SUM = "SUM";
     String GROUP_CONCAT = "GROUP_CONCAT";
     String IF = "IF";
     String IFNULL = "IFNULL";

+ 1 - 1
jy-ui/.env.development

@@ -5,4 +5,4 @@ VITE_APP_PORT=7620
 VITE_APP_BASE_API=/dev-api
 
 # 开发接口地址
-VITE_APP_API_URL=http://localhost:9898
+VITE_APP_API_URL=http://8.148.108.223:9502/api

+ 22 - 4
jy-ui/src/views/business/contract/info/index.vue

@@ -65,13 +65,21 @@ const columnConfig: ColumnConfigType[] = [
     label: '签订日期'
   },
   {
-    prop: 'startDate',
-    label: '开始日期'
+    prop: 'sellerCompany',
+    label: '归属公司'
   },
   {
-    prop: 'endDate',
-    label: '结束日期'
+    prop: 'customerName',
+    label: '客户'
   },
+  // {
+  //   prop: 'startDate',
+  //   label: '开始日期'
+  // },
+  // {
+  //   prop: 'endDate',
+  //   label: '结束日期'
+  // },
   {
     prop: 'currency',
     label: '币种'
@@ -81,6 +89,10 @@ const columnConfig: ColumnConfigType[] = [
     label: '汇率'
   },
   {
+    prop: 'amount',
+    label: '合同金额'
+  },
+  {
     prop: 'freightPrice',
     label: '运费'
   },
@@ -97,6 +109,12 @@ const columnConfig: ColumnConfigType[] = [
     label: '金额'
   },
   {
+    label: '预期收益',
+    formatter: (row) => {
+      return row.amount - row.costPrice
+    }
+  },
+  {
     width: 120,
     handleConfig: [
       {

+ 2 - 2
jy-ui/src/views/login/components/LoginForm.vue

@@ -24,7 +24,7 @@
         </template>
       </el-input>
     </el-form-item>
-    <el-form-item v-if="captchaOnOff" prop="code" class="login-code">
+    <!-- <el-form-item v-if="captchaOnOff" prop="code" class="login-code">
       <el-input v-model="loginForm.code" placeholder="验证码">
         <template #prefix>
           <el-icon class="el-input__icon">
@@ -33,7 +33,7 @@
         </template>
       </el-input>
       <img :src="captchaImg" @click="getCaptchaImage" alt="" />
-    </el-form-item>
+    </el-form-item> -->
   </el-form>
   <div class="login-btn">
     <el-button