24282 3 luni în urmă
părinte
comite
99c8941308

+ 10 - 2
jy-business/src/main/java/com/jy/business/contract/dao/ContractInfoDao.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.framework.model.base.BaseDao;
@@ -33,7 +34,7 @@ public class ContractInfoDao extends BaseDao<ContractInfoMapper, ContractInfo> {
                 .where(
                 )
                 .orderBy(
-                    ci.id.desc()
+                        ci.id.desc()
                 )
                 .list();
     }
@@ -43,13 +44,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()

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

+ 6 - 0
jy-business/src/main/java/com/jy/business/contract/model/vo/ContractInfoVo.java

@@ -5,6 +5,7 @@ import com.jy.business.contract.model.entity.ContractInfo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -17,6 +18,11 @@ import java.util.List;
 @Setter
 public class ContractInfoVo extends ContractInfo {
 
+    /**
+     * 成本价
+     */
+    private BigDecimal costPrice;
+
     private List<ContractDetail> list;
 
 }

+ 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) {

+ 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";