Kaynağa Gözat

合同交接单增加是否i到账

caozj 1 yıl önce
ebeveyn
işleme
91eb4a76cb

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractProductSelectDto.java

@@ -50,4 +50,9 @@ public class ContractProductSelectDto extends BaseSelectDto {
      * 采购状态
      */
     private Integer purchaseStatus;
+
+    /**
+     * 是否到账 0:未到账  1已到账
+     */
+    private String isArrival;
 }

+ 4 - 3
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -290,14 +291,14 @@ public class ContractUpdateFlow extends FlowDelegate {
         List<Long> claimIds = claimContractList.stream().map(ClaimContract::getClaimId).collect(Collectors.toList());
         List<Long> claimContractIds = claimContractList.stream().map(ClaimContract::getId).collect(Collectors.toList());
         //取出到账认领数据
-        List<Claim> claims = claimService.list(q -> q.in(Claim::getId, claimIds));
+        List<Claim> claims = claimService.list(q -> q.in(Claim::getId, CollectionUtils.isEmpty(claimIds)? Arrays.asList("0000"):claimIds));
         for(Claim c : claims){
             //查询流水数据
             AccountRunningWater accountRunningWater = accountRunningWaterService.getById(c.getBusinessId());
-            BigDecimal sumClaimMoney = accountRunningWater.getClaimAmount().add(c.getAmount());
+            BigDecimal sumClaimMoney = accountRunningWater.getClaimAmount().subtract(c.getAmount());
             //更新流水数据为认领状态---已认领金额还原
             AccountRunningWater water = new AccountRunningWater();
-            if(accountRunningWater.getAmount().compareTo(sumClaimMoney)>0){
+            if(sumClaimMoney.compareTo(BigDecimal.ZERO)>0){
                 water.setIsClaim(2);//部分认领
             }else{
                 water.setIsClaim(0);//未认领

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductMapper.java

@@ -23,7 +23,7 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
     /**
      * 外销合同-产品分页
      */
-    Page<ContractProductVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper);
+    Page<ContractProductVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper, @Param("isArrival") String isArrival);
 
     /**
      * 根据合同产品ID集合查询合同产品

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -157,7 +157,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
             }
         }
         wrapper.groupBy("t1.id");
-        Page<ContractProductVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        Page<ContractProductVo> page = this.baseMapper.getPage(dto.getPage(), wrapper,dto.getIsArrival());
         List<ContractProductVo> list = page.getRecords();
 
         if (list.size() == 0) {

+ 48 - 25
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -3,37 +3,60 @@
 <mapper namespace="com.fjhx.sale.mapper.contract.ContractProductMapper">
 
     <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
-        SELECT t1.id,
-               t2.create_time     AS contractTime,
-               t1.contract_id,
-               t1.product_id,
-               t2.`code`          AS contractCode,
-               t2.user_name       AS userName,
-               t2.create_user     AS salesmanId,
-               t2.version         AS contractVersion,
-               t1.expend_quantity AS expendQuantity,
-               (SELECT create_time
-                FROM claim_contract
-                WHERE contract_id = t2.id
-                ORDER BY create_time DESC
-                                     LIMIT 1)               AS claimTime,
-               t2.contract_template_id AS contractTemplateId,
-               t1.quantity,
-                (SELECT
-                    if(sum( pd.count ) is null,0,sum( pd.count ))
+        SELECT
+            *
+        FROM
+            (
+                SELECT
+                    t1.id,
+                    t2.create_time AS contractTime,
+                    t1.contract_id,
+                    t1.product_id,
+                    t2.`code` AS contractCode,
+                    t2.user_name AS userName,
+                    t2.create_user AS salesmanId,
+                    t2.version AS contractVersion,
+                    t1.expend_quantity AS expendQuantity,
+                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
+            t2.contract_template_id AS contractTemplateId,
+            t1.quantity,
+            (
+                SELECT
+                    IF
+                        (
+                            sum( pd.count ) IS NULL,
+                            0,
+                            sum( pd.count ))
                 FROM
                     bytesailing_purchase.purchase_detail pd
-                    LEFT JOIN bytesailing_purchase.purchase p ON pd.purchase_id = p.id
+                        LEFT JOIN bytesailing_purchase.purchase p ON pd.purchase_id = p.id
                 WHERE
                     p.purchase_status = 10
-                    and pd.data_resource_id = t1.id
-                ) as startPurchaseCount
-        FROM contract_product t1
+                  AND pd.data_resource_id = t1.id
+            ) AS startPurchaseCount,
+            (
+                SELECT
+                    IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
+                FROM
+                    claim_contract cc
+                        LEFT JOIN claim c ON cc.claim_id = c.id
+                        LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
+                WHERE
+                    cc.contract_id = t2.id
+            ) / t2.amount * 100 AS ad,
+		t2.advance_ratio AS advanceRatio
+        FROM
+            contract_product t1
             LEFT JOIN contract t2
-            LEFT JOIN claim_contract co
-        on co.contract_id = t2.id
-            ON t1.contract_id = t2.id
+            LEFT JOIN claim_contract co ON co.contract_id = t2.id ON t1.contract_id = t2.id
             ${ew.customSqlSegment}
+            ) t1
+        <where>
+            <if test="isArrival neq null" >
+                t1.ad &lt; t1.advanceRatio
+            </if>
+
+        </where>
     </select>
 
     <select id="getEHSDPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">