ソースを参照

Merge remote-tracking branch 'origin/master' into master

yangyj 1 年間 前
コミット
edfb04c383

+ 1 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApply.java

@@ -108,7 +108,7 @@ public class InventoryFormApply extends BaseEntity {
     @ApiModelProperty(value = "审批状态,0未上报,1待审批,2已审批,3已废除")
     private Integer approveStatus;
 
-    @ApiModelProperty(value = "最高支付比例")
+    @ApiModelProperty(value = "支付比例")
     private BigDecimal payRatio;
 
     @ApiModelProperty(value = "支付金额")

+ 7 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/InventoryFormApplyVO.java

@@ -16,10 +16,13 @@
  */
 package org.springblade.meter.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.meter.entity.InventoryFormApply;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+
 /**
  * 工程清单与中间计量申请	中间表视图实体类
  *
@@ -29,6 +32,9 @@ import lombok.EqualsAndHashCode;
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class InventoryFormApplyVO extends InventoryFormApply {
-	private static final long serialVersionUID = 1L;
+	private static final long serialVersionUID = 456L;
+
+	@ApiModelProperty(value = "是否关联质检资料1是0否")
+	private Integer isLinkData;
 
 }

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml

@@ -253,7 +253,7 @@
     </select>
 
     <select id="getFormList2" resultType="org.springblade.meter.vo.ChangeFormVO2">
-        select cti.contract_form_id as id,cti.form_number,cti.form_name,cti.current_price,cti.contract_meter_id,cti.change_token_id,
+        select cti.contract_form_id as id,cti.form_number,cti.form_name,cti.current_price,cti.contract_meter_id,cti.change_token_id,contract_id,
                cti.change_before_total as contractTotal,cti.change_total as currentChangeTotal,
                cti.change_after_total as changeTotal,cti.change_before_money as contractMoney,
                cti.change_money as currentChangeMoney,cti.change_after_money as changeMoney,

+ 6 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormApplyMapper.java

@@ -19,6 +19,10 @@ package org.springblade.meter.mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.InventoryFormApply;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ChangeFormVO2;
+import org.springblade.meter.vo.InventoryFormApplyVO;
+
+import java.util.List;
 
 /**
  * 工程清单与中间计量申请	中间表 Mapper 接口
@@ -30,4 +34,6 @@ public interface InventoryFormApplyMapper extends BaseMapper<InventoryFormApply>
 
 
     void deleteByMiddleId(@Param("id") Long id);
+
+    List<InventoryFormApplyVO> getByMeterIdAndFormId(@Param("vo") ChangeFormVO2 vo2);
 }

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormApplyMapper.xml

@@ -22,5 +22,10 @@
         DELETE FROM s_inventory_form_apply
         where middle_meter_id = #{id}
     </delete>
+    <select id="getByMeterIdAndFormId" resultType="org.springblade.meter.vo.InventoryFormApplyVO">
+        select * from s_inventory_form_apply
+        where is_deleted = 0 and contract_id = #{vo.contractId} and contract_form_id = #{vo.id}
+        and contract_meter_id = #{vo.contractMeterId}
+    </select>
 
 </mapper>

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml

@@ -137,7 +137,7 @@
                       and contract_meter_id = #{nodeId} and contract_form_id = ifa.contract_form_id and id != ifa.id),0)) as otherMeterTotal,
                (IFNULL((select sum(current_meter_total) from s_inventory_form_apply where is_deleted = 0
                       and contract_meter_id = #{nodeId} and contract_form_id = ifa.contract_form_id),0)) as allMeterTotal,
-               (IFNULL((select sum(pay_ratio) from s_inventory_form_apply where is_deleted = 0
+               (IFNULL((select sum(pay_ratio) from s_inventory_form_apply ifa2 where is_deleted = 0 and ifa2.id != ifa.id
                       and contract_meter_id = #{nodeId} and contract_form_id = ifa.contract_form_id),0)) as otherPayRatio,
                (select up_pay_ratio from s_inventory_form_meter where is_deleted = 0
                       and contract_meter_id = #{nodeId} and contract_form_id = ifa.contract_form_id) as upPayRatio

+ 6 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormApplyService.java

@@ -18,6 +18,9 @@ package org.springblade.meter.service;
 
 import org.springblade.meter.entity.InventoryFormApply;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.ChangeFormVO2;
+
+import java.util.List;
 
 /**
  * 工程清单与中间计量申请	中间表 服务类
@@ -29,4 +32,7 @@ public interface IInventoryFormApplyService extends BaseService<InventoryFormApp
 
     void deleteByMiddleId(Long id);
 
+    //异步重新计算受变更影响的中间计量清单的支付比
+    void asyncCalculateMiddleMeterRatio(List<ChangeFormVO2> allForm);
+
 }

+ 3 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java

@@ -688,6 +688,9 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
         if (list7.size() > 0) {
             middleMeterApplyService.asyncCalculateMiddleMeter(list7);
         }
+        //异步重新计算受变更影响的中间计量清单的支付比
+        inventoryFormApplyService.asyncCalculateMiddleMeterRatio(allForm);
+
     }
 
     /**

+ 45 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormApplyServiceImpl.java

@@ -16,12 +16,21 @@
  */
 package org.springblade.meter.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springblade.meter.entity.InventoryFormApply;
 import org.springblade.meter.mapper.InventoryFormApplyMapper;
 import org.springblade.meter.service.IInventoryFormApplyService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.vo.ChangeFormVO2;
+import org.springblade.meter.vo.InventoryFormApplyVO;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 工程清单与中间计量申请	中间表 服务实现类
  *
@@ -36,4 +45,40 @@ public class InventoryFormApplyServiceImpl extends BaseServiceImpl<InventoryForm
     public void deleteByMiddleId(Long id) {
         baseMapper.deleteByMiddleId(id);
     }
+
+    @Override
+    @Async
+    public void asyncCalculateMiddleMeterRatio(List<ChangeFormVO2> allForm) {
+        //等待一秒
+        try {
+            Thread.sleep(1000L);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        //需要修改的数据
+        List<InventoryFormApply> needUpdateData = new ArrayList<>();
+        //目前先这样查询,后期优化
+        for (ChangeFormVO2 vo2 : allForm) {
+            //查询指定节点,指定清单,在中间计量申请和清单中间表的数据,结果为多个计量期
+            List<InventoryFormApplyVO> vos = baseMapper.getByMeterIdAndFormId(vo2);
+            //不存在则跳过
+            if (vos.size() == 0){
+                continue;
+            }
+            //循环修改
+            BigDecimal total = vo2.getNewestChangeTotal().add(vo2.getCurrentChangeTotal());
+            for (InventoryFormApplyVO vo : vos) {
+                InventoryFormApply apply = new InventoryFormApply();
+                apply.setId(vo.getId());
+                if (total.compareTo(BigDecimal.ZERO) == 0) {
+                    apply.setPayRatio(BigDecimal.ZERO);
+                }else {
+                    apply.setPayRatio(vo.getCurrentMeterTotal().divide(total,2, RoundingMode.HALF_UP));
+                }
+                needUpdateData.add(apply);
+            }
+        }
+        this.updateBatchById(needUpdateData);
+
+    }
 }