Ver Fonte

Merge remote-tracking branch 'origin/master'

liuyc há 1 ano atrás
pai
commit
76e288b507
23 ficheiros alterados com 165 adições e 85 exclusões
  1. 4 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlContractInfoDTO.java
  2. 4 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ContractReturnedInfo.java
  3. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/BaseInfo.java
  4. 10 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/Material.java
  5. 38 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InterimPayCertificate.java
  6. 6 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApply.java
  7. 6 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApplyTask.java
  8. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java
  9. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractFromVO.java
  10. 8 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterInventoryVO.java
  11. 3 3
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractReturnedInfoController.java
  12. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IContractReturnedInfoService.java
  13. 1 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java
  14. 10 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java
  15. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorInit.java
  16. 30 69
      blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java
  17. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  18. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java
  19. 4 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java
  20. 2 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InterimPayCertificateMapper.xml
  21. 13 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyMapper.xml
  22. 5 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java
  23. 8 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

+ 4 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlContractInfoDTO.java

@@ -16,6 +16,10 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class ControlContractInfoDTO extends ControlContractInfo {
+
+    @ApiModelProperty(value = "合同id")
+    private String contractId;
+
     @ApiModelProperty(value = "搜索值")
     private String queryValue;
 

+ 4 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ContractReturnedInfo.java

@@ -1,5 +1,7 @@
 package org.springblade.control.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
@@ -50,9 +52,11 @@ public class ContractReturnedInfo extends BaseEntity {
     @JsonFormat(
             pattern = "yyyy-MM-dd"
     )
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     @ApiModelProperty(value = "实际回款时间")
     private LocalDate practicalReturnedTime;
 
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     @ApiModelProperty(value = "实际回款金额")
     private BigDecimal practicalReturnedMoney;
 

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/BaseInfo.java

@@ -65,7 +65,7 @@ public class BaseInfo  {
     private String  bankAccount = "未设置";
     /**合同总金额*/
     @JSONField(name = "key_11",label="合同总金额",ordinal = 11)
-    private String  TotalAmount;
+    private BigDecimal  TotalAmount;
     /**预付款比例*/
     @JSONField(name = "key_12",label="预付款比例",ordinal = 12)
     private Double  deductRatio=0.7;

+ 10 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/Material.java

@@ -65,4 +65,14 @@ public class Material {
         data.add(remark);
         return data;
     }
+
+    private String[] NO_YES=new String[]{"否","是"};
+
+    public void setMaterialConform(String materialConform) {
+        this.materialConform = "1".equals(materialConform)?NO_YES[1]:NO_YES[0];
+    }
+
+    public void setStorageConform(String storageConform) {
+        this.storageConform = "1".equals(storageConform)?NO_YES[1]:NO_YES[0];
+    }
 }

+ 38 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InterimPayCertificate.java

@@ -16,16 +16,26 @@
  */
 package org.springblade.meter.entity;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang.StringUtils;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springblade.core.tool.utils.Func;
 
 /**
  * 中期支付证书实体类
@@ -109,6 +119,34 @@ public class InterimPayCertificate extends BaseEntity {
     @ApiModelProperty(value = "审批状态,0未上报,1待审批,2已审批")
     private Integer approveStatus;
 
+    /**
+     * 原始PDF地址
+     */
+    @ApiModelProperty(value = "原始PDF地址")
+    private String rawUrl;
+
+    /**
+     * 每份表格独立的PDF地址
+     */
+    @ApiModelProperty(value = "每份表格独立的PDF地址")
+    private String fileUrlList;
 
+    @TableField(exist = false)
+    private List<Map<String,String>> urlListData = new ArrayList<>();
+    public List<Map<String,String>> getUrlListData() {
+        if(fileUrlList!=null && StringUtils.isNotEmpty(fileUrlList)){
+            JSONObject data = JSONObject.parseObject(this.fileUrlList);
+            for(String key:data.keySet()){
+                Map<String,String> dataV=new HashMap<String,String>();
+                dataV.put("title",key);
+                dataV.put("url",data.getString(key));
+                urlListData.add(dataV);
+            }
+        }
+        return urlListData;
+    }
 
+    public void setUrlListData(List<Map<String,String>> urlListData) {
+        this.urlListData = urlListData;
+    }
 }

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

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

+ 6 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormApplyTask.java

@@ -91,4 +91,10 @@ public class InventoryFormApplyTask extends BaseEntity {
     @ApiModelProperty(value = "审批状态,0未上报,1待审批,2已审批,3已废除")
     private Integer approveStatus;
 
+    @ApiModelProperty(value = "最高支付比例")
+    private Integer upPayRatio;
+
+    @ApiModelProperty(value = "支付金额")
+    private BigDecimal PayMoney;
+
 }

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java

@@ -81,4 +81,7 @@ public class InventoryFormMeter extends BaseEntity {
     @ApiModelProperty(value = "最高支付比例")
     private Integer upPayRatio;
 
+    @ApiModelProperty(value = "最高支付金额")
+    private BigDecimal upPayMoney;
+
 }

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractFromVO.java

@@ -110,4 +110,7 @@ public class ContractFromVO {
 
     @ApiModelProperty(value = "最高支付比例")
     private Integer upPayRatio;
+
+    @ApiModelProperty(value = "最高支付比例金额")
+    private BigDecimal upPayMoney;
 }

+ 8 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterInventoryVO.java

@@ -64,5 +64,13 @@ public class MeterInventoryVO {
     @ApiModelProperty(value = "清单合同变更后数量")
     private BigDecimal contractChangeAllTotal;
 
+    @ApiModelProperty(value = "最高支付比例")
+    private Integer upPayRatio;
+
+    @ApiModelProperty(value = "最高支付金额")
+    private BigDecimal upPayMoney;
+
+    @ApiModelProperty(value = "其他期支付金额")
+    private BigDecimal otherPayMoney;
 
 }

+ 3 - 3
blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractReturnedInfoController.java

@@ -32,11 +32,11 @@ public class ContractReturnedInfoController {
     private final IContractReturnedInfoService contractReturnedInfoService;
 
     /**
-     * 批量新增或修改回款信息
+     * 合同回款更新,修改时间和金额
      */
     @PostMapping("/saveOrUpdateBatchReturned")
     @ApiOperationSupport(order = 1)
-    @ApiOperation(value = "批量新增或修改回款信息")
+    @ApiOperation(value = "合同回款更新,修改时间和金额")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "合同id", required = true),
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
@@ -44,7 +44,7 @@ public class ContractReturnedInfoController {
     })
     public R saveOrUpdateBatchReturned(@RequestBody ControlContractInfoDTO dto) {
         contractReturnedInfoService.saveOrUpdateBatchReturned(dto);
-        return R.success("保存成功");
+        return R.success("修改成功");
     }
 
     /**

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IContractReturnedInfoService.java

@@ -20,8 +20,11 @@ import java.util.List;
  **/
 public interface IContractReturnedInfoService extends BaseService<ContractReturnedInfo> {
 
+    //合同回款更新,修改时间和金额
     void saveOrUpdateBatchReturned(ControlContractInfoDTO dto);
 
+    void saveOrUpdateBatchReturned2(ControlContractInfoDTO dto);
+
     /**
      * 根据合同id获取合同已回款金额
      */

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java

@@ -141,7 +141,7 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
             jdbcTemplate.execute("update c_control_project_info set start_time = '"+dto.getStartTime() + "', end_time = '"+ dto.getEndTime() +"' where id = "+ dto.getProjectId());
         }
         this.updateById(contractInfo);
-        returnedInfoService.saveOrUpdateBatchReturned(dto);
+        returnedInfoService.saveOrUpdateBatchReturned2(dto);
     }
 
     /**

+ 10 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java

@@ -34,12 +34,21 @@ public class ContractReturnedInfoServiceImpl extends BaseServiceImpl<ContractRet
 
 
     /**
-     * 批量新增或保存合同回款信息
+     * 合同回款更新,修改时间和金额
      * @param dto
      */
     @Override
     @Transactional
     public void saveOrUpdateBatchReturned(ControlContractInfoDTO dto) {
+        //获取所有回款信息
+        List<ContractReturnedInfo> list = dto.getList();
+        this.updateBatchById(list);
+
+    }
+
+    @Override
+    @Transactional
+    public void saveOrUpdateBatchReturned2(ControlContractInfoDTO dto) {
         //删除所有回款信息
         baseMapper.deleteOldInfo(dto.getId());
         List<ContractReturnedInfo> list = dto.getList();

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorInit.java

@@ -32,6 +32,7 @@ public class ExecutorInit extends FormulaExecutor {
 
         /*加载合同数据*/
         BaseInfo baseInfo = baseInfoFc.apply(tec.getContractId());
+        baseInfo.setTotalAmount(baseInfo.getContractAmount());
         tec.getConstantMap().put(BaseInfo.TBN,baseInfo);
         tec.formDataMap.putAll(FormulaUtils.toFormDataMap(baseInfo));
         if(MeterType.MATERIAL.equals(tec.getMeterType())||MeterType.START.equals(tec.getMeterType())){

+ 30 - 69
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -109,20 +109,20 @@ public class ExecutorMeter extends FormulaExecutor {
 
     @Data
     public  class MaterialCalc implements Special{
-        private FormData index;
+/*        private FormData index;
         private FormData materialName;
         private FormData unit;
         private FormData meterAmount;
-        private FormData price;
+        private FormData price;*/
         private FormData sum;
-        private FormData ratio;
+       /* private FormData ratio;*/
         private FormData advancePayment;
-        private FormData source;
+/*        private FormData source;
         private FormData materialConform;
         private FormData storagePlace;
         private FormData storageStatus;
         private FormData storageConform;
-        private FormData remark;
+        private FormData remark;*/
         /**材料合计*/
         private String total;
         /**预付款合计*/
@@ -145,55 +145,23 @@ public class ExecutorMeter extends FormulaExecutor {
            }
             select(candidate);
         }
+
+        private  final List<String> FIELD_SORT_ORDER = Arrays.asList(
+                "序号", "材料名称", "单位", "数量", "单价", "材料合计价",
+                "预付比例(%)", "材料预付款", "材料来源", "是否符合要求",
+                "备料堆放地点", "存储情况", "存储方法是否符合要求", "备注"
+        );
+
         public void select(List<FormData> candidate ){
-            for(FormData fd:candidate){
-                if(fd.getEName().contains("序号")){
-                    this.index=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("材料名称")){
-                    this.materialName=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("单位")){
-                    this.unit=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("数量")){
-                    this.meterAmount=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("单价")){
-                    this.price=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("材料合计价")){
-                    this.sum=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("预付比例")){
-                    this.ratio=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("材料预付款")){
-                    this.advancePayment=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("材料来源")){
-                    this.source=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("是否符合要求")){
-                    this.materialConform=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("备料堆放地点")){
-                    this.storagePlace=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("存储情况")){
-                    this.storageStatus=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("存储方法是否符合要求")){
-                    this.storageConform=fd;
-                    fds.add(fd);
-                }else if(fd.getEName().contains("备注")){
-                    this.remark=fd;
-                    fds.add(fd);
-                }
-                if(fds.size()>=14){
-                    break;
-                }
+            Map<String, FormData> fieldMap = new HashMap<>();
+            for (FormData fd : candidate) {
+                fieldMap.put(fd.getEName(), fd);
             }
+            this.sum=fieldMap.get(FIELD_SORT_ORDER.get(5));
+            this.advancePayment=fieldMap.get(FIELD_SORT_ORDER.get(7));
+            this.fds = FIELD_SORT_ORDER.stream()
+                    .map(fieldMap::get)
+                    .collect(Collectors.toList());
         }
 
         @Override
@@ -216,6 +184,13 @@ public class ExecutorMeter extends FormulaExecutor {
                 }
                 this.total=StringUtils.number2StringZero(materials.stream().mapToDouble(m->Double.parseDouble(m.getSum())).sum(),1);
                 this.totalAdvance=StringUtils.number2StringZero(materials.stream().mapToDouble(m->Double.parseDouble(m.getAdvancePayment())).sum(),1);
+                /*合计*/
+                Material summary= new Material();
+                summary.setMaterialName("合计");
+                summary.setIndex(materials.size());
+                summary.setSum(this.total);
+                summary.setAdvancePayment(this.totalAdvance);
+                materials.add(summary);
                 List<Object> dataList= materials.stream().flatMap(m->m.getData().stream()).collect(Collectors.toList());
                 if(dataList.size()>0){
                    Map<Integer,List<Object>> groupData= IntStream.range(0, dataList.size()).boxed()
@@ -224,28 +199,14 @@ public class ExecutorMeter extends FormulaExecutor {
                    for(int i=0;i<this.fds.size();i++){
                        List<Object> dl= groupData.get(i);
                        FormData fd= fds.get(i);
+                       /*计算完结*/
+                       fd.setFinished(true);
                        elementWriter.write(fd,dl);
                    }
-                   /*追加合计*/
-                   append(this.sum,this.total);
-                   append(this.advancePayment,this.totalAdvance);
                 }
             }
         }
-        public void append(FormData fd,Object value){
-             if(fd!=null&&value!=null&&fd.getCoordsList().size()>0){
-                 if(fd.empty()){
-                  fd.getValues().get(0).setValue(value);
-                 }else{
-                     for(int n=0;n<fd.getValues().size();n++){
-                         ElementData ed = fd.getValues().get(n);
-                         if(ed.isEmpty()){
-                             ed.setValue(value);
-                         }
-                     }
-                 }
-             }
-        }
+
     }
 
 

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -750,6 +750,7 @@
         from u_operation_log a,
              blade_user b
         where b.tenant_id = '000000' /*只查询后管系统的用户*/
+          and a.contract_id = 1
           and a.operation_account = b.account
           and a.operation_type = 1
           and a.business_id like concat('%', #{sonId}, '%')

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java

@@ -69,7 +69,7 @@ public class FormulaDaoImpl implements IFormulaDao {
     @Override
     public Function<Long, List<Material>> getMaterialFormFc() {
         return id->{
-            String sql="select  b.material_name name,b.unit,b.price,a.meter_amount amount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id where a.meter_period_id="+id+"  and a.is_deleted=0";
+            String sql="select  b.material_name materialName,b.unit,b.price,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id where a.meter_period_id="+id+"  and a.is_deleted=0";
             return  getEntityList(sql,Material.class);
         };
     }

+ 4 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -43,10 +43,12 @@ import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.feign.ArchiveFileTaskClient;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.feign.FormulaClient;
 import org.springblade.manager.vo.ReportResult;
 import org.springblade.meter.dto.*;
 import org.springblade.meter.entity.*;
+import org.springblade.meter.mapper.MaterialStartStatementMapper;
 import org.springblade.meter.mapper.MiddleMeterApplyMapper;
 import org.springblade.meter.service.IMaterialStartStatementService;
 import org.springblade.meter.service.impl.*;
@@ -2680,7 +2682,7 @@ public class TaskController extends BladeController {
                                         sheet.getPrintSetup().setPaperSize(PrintSetup.A4_PAPERSIZE);
                                         ByteArrayOutputStream out = new ByteArrayOutputStream();
                                         workbook.write(out);
-                                       // workbook.write(new FileOutputStream(rs.getExcelPath()));
+                                        //workbook.write(new FileOutputStream(rs.getExcelPath()));
                                         com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook( new ByteArrayInputStream(out.toByteArray()));
                                         out.reset();
                                         wb.save(out, SaveFormat.PDF);
@@ -2773,7 +2775,7 @@ public class TaskController extends BladeController {
                 }
             },(v1,v2)->v1,LinkedHashMap::new));
             String upSql = "update "+REPORT_TYPE[this.type]+" set raw_url=?,file_url_list=? where id="+this.id;
-            jdbcTemplate.update(upSql,this.pdfUrl ,JSON.toJSONString(fileListMap));
+            jdbcTemplate.update(upSql,this.pdfUrl , JSON.toJSONString(fileListMap));
             return  this.pdfUrl;
         }
 

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InterimPayCertificateMapper.xml

@@ -23,6 +23,8 @@
         <result column="print_date" property="printDate"/>
         <result column="calculate_date" property="calculateDate"/>
         <result column="pay_money" property="payMoney"/>
+        <result column="raw_url" property="rawUrl"/>
+        <result column="file_url_list" property="fileUrlList" />
     </resultMap>
     <select id="getById" resultType="org.springblade.meter.vo.InterimPayCertificateVO">
         select * from s_interim_pay_certificate

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

@@ -51,13 +51,19 @@
         select id,form_number,form_name,current_price,change_total as contractChangeAllTotal,
                IF (cif.build_change_total is null ,0,1) as isCreateDivide,
                (select is_over_meter from m_contract_info mci WHERE id = #{contractId}) as isContractOver,
+                (select up_pay_ratio from s_inventory_form_meter where is_deleted = 0
+                and contract_meter_id = #{nodeId} and contract_form_id = cif.id) as upPayRatio,
+                (select up_pay_money from s_inventory_form_meter where is_deleted = 0
+                and contract_meter_id = #{nodeId} and contract_form_id = cif.id) as upPayMoney,
                IFNULL((select sum(change_build_picture_total) from s_inventory_form_meter where is_deleted = 0
                     and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0) as change_total,
                IFNULL((select sum(build_picture_total) from s_inventory_form_meter where is_deleted = 0
                             and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0) as resolveTotal,
                0 as currentMeterTotal,0 as containChangeTotal,0 as currentMeterMoney,
                (IFNULL((select sum(current_meter_total) from s_inventory_form_apply where is_deleted = 0
-                            and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0)) as allMeterTotal
+                            and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0)) as allMeterTotal,
+                (IFNULL((select sum(pay_money) from s_inventory_form_apply where is_deleted = 0
+                and contract_meter_id = #{nodeId} and contract_form_id = cif.id),0)) as otherPayMoney
         from s_contract_inventory_form  cif where contract_id = #{contractId} and is_deleted = 0 and is_form_node = 1
         AND id in
         <foreach collection="ids" item="id" open="(" separator="," close=")">
@@ -121,7 +127,7 @@
     </select>
     <select id="getForm" resultType="org.springblade.meter.vo.MeterInventoryVO">
         select ifa.id as taskDetailId,ifa.contract_form_id as id,ifa.form_number,ifa.form_name,ifa.current_price,ifa.build_picture_total as resolveTotal,
-               ifa.change_build_picture_total as changeTotal,
+               ifa.change_build_picture_total as changeTotal,ifa.up_pay_ratio as upPayRatio,
                ifa.current_meter_total as currentMeterTotal,0 as containChangeTotal,
                ifa.current_meter_money as currentMeterMoney,
                (select cif.change_total  from s_contract_inventory_form cif where cif.id = ifa.contract_form_id ) as contractChangeAllTotal,
@@ -130,7 +136,11 @@
                (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 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
+                      and contract_meter_id = #{nodeId} and contract_form_id = ifa.contract_form_id),0)) as allMeterTotal,
+               (IFNULL((select sum(pay_money) from s_inventory_form_apply where is_deleted = 0
+                      and contract_meter_id = #{nodeId} and contract_form_id = ifa.contract_form_id),0)) as otherPayMoney,
+               (select up_pay_money from s_inventory_form_meter ifm where ifm.is_deleted = 0
+                      and ifm.contract_meter_id = #{nodeId} and ifm.contract_form_id = ifa.contract_form_id) as upPayMoney
         from s_inventory_form_apply ifa
         where ifa.contract_id = #{contractId} and ifa.is_deleted = 0
         AND ifa.middle_meter_id = #{id}

+ 5 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java

@@ -101,6 +101,9 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
             if (vo.getBuildPictureTotal() == null){
                 throw new ServiceException("请填写施工图数量");
             }
+            if (vo.getUpPayRatio() == null){
+                throw new ServiceException("请填写最高支付比例");
+            }
             //校验当前节点下当前清单,是否在变更令中变更,或计量中计量
             if (vo.getCiteStatus() == 0 && formIsChange(meterId,vo.getContractFormId())){
                 throw new ServiceException("清单["+vo.getFormName()+"]已经变更或计量,请刷新页面");
@@ -108,6 +111,7 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
             //统计
             vo.setBuildPictureMoney(vo.getCurrentPrice().multiply(vo.getBuildPictureTotal()));
             vo.setChangeBuildPictureMoney(vo.getCurrentPrice().multiply(vo.getChangeBuildPictureTotal()));
+            vo.setUpPayMoney(vo.getChangeBuildPictureMoney().multiply(new BigDecimal(vo.getUpPayRatio()).divide(new BigDecimal(100))));
             b1 = b1.add(vo.getBuildPictureMoney());
             b2 = b2.add(vo.getChangeBuildPictureMoney());
             //修改,如果是已经被引用则跳过
@@ -119,6 +123,7 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
                        .set(InventoryFormMeter::getBuildPictureMoney,vo.getBuildPictureMoney())
                        .set(InventoryFormMeter::getChangeBuildPictureMoney,vo.getChangeBuildPictureMoney())
                        .set(InventoryFormMeter::getUpPayRatio,vo.getUpPayRatio())
+                       .set(InventoryFormMeter::getUpPayMoney,vo.getUpPayMoney())
                );
             }
         }

+ 8 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MiddleMeterApplyServiceImpl.java

@@ -198,12 +198,14 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 formApply.setCurrentPrice(l.getCurrentPrice());
                 formApply.setBuildPictureTotal(l.getResolveTotal());
                 formApply.setChangeBuildPictureTotal(l.getChangeTotal());
-                if (l.getCurrentMeterTotal() != null && l.getCurrentPrice() != null) {
+                if (l.getCurrentMeterTotal() != null && l.getCurrentPrice() != null && l.getUpPayRatio() != null) {
                     formApply.setCurrentMeterTotal(l.getCurrentMeterTotal());
                     formApply.setCurrentMeterMoney(l.getCurrentPrice().multiply(l.getCurrentMeterTotal()));
+                    formApply.setPayMoney(formApply.getCurrentMeterMoney().multiply(new BigDecimal(l.getUpPayRatio()).divide(new BigDecimal(100))));
                 }else {
-                    throw new ServiceException("计量金额和计量数量不能为空");
+                    throw new ServiceException("单价和计量数量和支付比例不能为空");
                 }
+                formApply.setUpPayRatio(l.getUpPayRatio());
                 return formApply;
             }).collect(Collectors.toList());
              for (InventoryFormApply formApply : formApplies) {
@@ -345,12 +347,14 @@ public class MiddleMeterApplyServiceImpl extends BaseServiceImpl<MiddleMeterAppl
                 formApply.setCurrentPrice(l.getCurrentPrice());
                 formApply.setBuildPictureTotal(l.getResolveTotal());
                 formApply.setChangeBuildPictureTotal(l.getChangeTotal());
-                if (l.getCurrentMeterTotal() != null && l.getCurrentPrice() != null) {
+                if (l.getCurrentMeterTotal() != null && l.getCurrentPrice() != null && l.getUpPayRatio() != null) {
                     formApply.setCurrentMeterTotal(l.getCurrentMeterTotal());
                     formApply.setCurrentMeterMoney(l.getCurrentPrice().multiply(l.getCurrentMeterTotal()));
+                    formApply.setPayMoney(formApply.getCurrentMeterMoney().multiply(new BigDecimal(l.getUpPayRatio()).divide(new BigDecimal(100))));
                 }else {
-                    throw new ServiceException("计量金额和计量数量不能为空");
+                    throw new ServiceException("单价和计量数量和支付比例不能为空");
                 }
+                formApply.setUpPayRatio(l.getUpPayRatio());
                 return formApply;
             }).collect(Collectors.toList());
             for (InventoryFormApply formApply : formApplies) {