Browse Source

合同段计量导入

Signed-off-by: liuyc <56808083@qq.com>
liuyc 1 year ago
parent
commit
cd29dda9ff

+ 286 - 79
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java

@@ -18,11 +18,13 @@ import org.springblade.meter.entity.ContractInventoryForm;
 import org.springblade.meter.entity.InventoryFormMeter;
 import org.springblade.meter.entity.InventoryFormMeter;
 import org.springblade.meter.entity.MeterTreeContract;
 import org.springblade.meter.entity.MeterTreeContract;
 import org.springblade.meter.entity.MeterTreeProject;
 import org.springblade.meter.entity.MeterTreeProject;
+import org.springblade.meter.mapper.ContractInventoryFormMapper;
 import org.springblade.meter.mapper.InventoryFormMeterMapper;
 import org.springblade.meter.mapper.InventoryFormMeterMapper;
 import org.springblade.meter.mapper.MeterTreeContractMapper;
 import org.springblade.meter.mapper.MeterTreeContractMapper;
 import org.springblade.meter.mapper.MeterTreeProjectMapper;
 import org.springblade.meter.mapper.MeterTreeProjectMapper;
 import org.springblade.meter.service.MeterTreeContractService;
 import org.springblade.meter.service.MeterTreeContractService;
 import org.springblade.meter.vo.ChangeNodeVO;
 import org.springblade.meter.vo.ChangeNodeVO;
+import org.springblade.meter.vo.ContractFromVO;
 import org.springblade.meter.vo.MeterTreeContractVO;
 import org.springblade.meter.vo.MeterTreeContractVO;
 import org.springblade.system.entity.Dict;
 import org.springblade.system.entity.Dict;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
@@ -46,6 +48,7 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
     private final JdbcTemplate jdbcTemplate;
     private final JdbcTemplate jdbcTemplate;
     private final MeterTreeProjectMapper meterTreeProjectMapper;
     private final MeterTreeProjectMapper meterTreeProjectMapper;
     private final InventoryFormMeterMapper inventoryFormMeterMapper;
     private final InventoryFormMeterMapper inventoryFormMeterMapper;
+    private final ContractInventoryFormMapper contractInventoryFormMapper;
 
 
     @Override
     @Override
     public Integer selectMaxSort(Long parentId) {
     public Integer selectMaxSort(Long parentId) {
@@ -583,29 +586,75 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
             rootNodesImport.add(meterTreeContract);
             rootNodesImport.add(meterTreeContract);
         }
         }
 
 
-        List<MeterTreeContract> resultNodeList = new ArrayList<>();
-        List<InventoryFormMeter> resultFormList = new ArrayList<>();
+        /*解析excel*/
         List<Map<String, String>> parseExcelFileToList = this.parseExcelFile(file);
         List<Map<String, String>> parseExcelFileToList = this.parseExcelFile(file);
+
+        /*节点新增*/
+        List<MeterTreeContract> resultNodeListAdd = new LinkedList<>();
+        /*节点金额修改Ids*/
+        Set<Long> updateNodeSet = new HashSet<>();
+        /*清单中间新增*/
+        List<InventoryFormMeter> resultFormListAdd = new LinkedList<>();
+        /*清单中间数量修改*/
+        List<InventoryFormMeter> resultFormListUpdate = new LinkedList<>();
+
+        /*导入节点的子级信息*/
+        List<Long> rootNodeIds = rootNodesImport.stream().map(MeterTreeContract::getId).collect(Collectors.toList());
+        List<MeterTreeContract> rootNodeChild = baseMapper.selectList(Wrappers.<MeterTreeContract>lambdaQuery().in(MeterTreeContract::getParentId, rootNodeIds).isNotNull(MeterTreeContract::getNodeCode));
+        Map<String, MeterTreeContract> rootNodeChildMap = rootNodeChild.stream().collect(Collectors.toMap(MeterTreeContract::getNodeCode, Function.identity()));
+        List<Long> rootNodeChildIds = rootNodeChild.stream().map(MeterTreeContract::getId).collect(Collectors.toList());
+        Map<Long, List<InventoryFormMeter>> inventoryFormMeterMapsGroupByContractMeterId = new HashMap<>();
+        Map<String, InventoryFormMeter> inventoryFormMeterMapsByContractFormId = new HashMap<>();
+        if (rootNodeChildIds.size() > 0) {
+            /*子级的中间表关联的清单信息*/
+            List<InventoryFormMeter> query = jdbcTemplate.query("SELECT * FROM s_inventory_form_meter WHERE is_deleted = 0" +
+                            " AND contract_id = " + meterTreeContract.getContractId() +
+                            " AND contract_meter_id IN(" + StringUtils.join(rootNodeChildIds, ",") + ")",
+                    new BeanPropertyRowMapper<>(InventoryFormMeter.class));
+            inventoryFormMeterMapsGroupByContractMeterId = query.stream().collect(Collectors.groupingBy(InventoryFormMeter::getContractMeterId));
+            inventoryFormMeterMapsByContractFormId =
+                    query.stream()
+                            .collect(Collectors.toMap(
+                                    meter -> meter.getContractFormId() + ":" + meter.getContractMeterId(),
+                                    Function.identity()
+                            ));
+        }
+
+        /*桩号类型*/
         Map<String, String> meterStakeTypeMaps = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_stake_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictValue, Dict::getDictKey));
         Map<String, String> meterStakeTypeMaps = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_stake_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictValue, Dict::getDictKey));
-        Map<String, ContractInventoryForm> contractInventoryFormMaps = jdbcTemplate.query("SELECT id,change_price,form_number FROM s_contract_inventory_form WHERE is_deleted = 0 AND contract_id = " + meterTreeContract.getContractId(), new BeanPropertyRowMapper<>(ContractInventoryForm.class)).stream().collect(Collectors.toMap(ContractInventoryForm::getFormNumber, Function.identity()));
+
+        /*清单信息*/
+        List<ContractInventoryForm> query = jdbcTemplate.query("SELECT id,change_price,form_number FROM s_contract_inventory_form WHERE is_deleted = 0 AND contract_id = " + meterTreeContract.getContractId(), new BeanPropertyRowMapper<>(ContractInventoryForm.class));
+        Map<String, ContractInventoryForm> contractInventoryFormMapsByFormNumber = query.stream().collect(Collectors.toMap(ContractInventoryForm::getFormNumber, Function.identity()));
+        Map<Long, ContractInventoryForm> contractInventoryFormMapsById = query.stream().collect(Collectors.toMap(ContractInventoryForm::getId, Function.identity()));
+
         Map<String, List<Map<String, String>>> rootCodeMaps = parseExcelFileToList.stream()
         Map<String, List<Map<String, String>>> rootCodeMaps = parseExcelFileToList.stream()
                 .collect(Collectors.groupingBy(
                 .collect(Collectors.groupingBy(
                         map -> map.get("工程编号"),
                         map -> map.get("工程编号"),
                         LinkedHashMap::new,
                         LinkedHashMap::new,
-                        Collectors.toList()
-                ));
+                        Collectors.toList()));
+
         for (MeterTreeContract treeContract : rootNodesImport) {
         for (MeterTreeContract treeContract : rootNodesImport) {
+
+            /*工程编号匹配*/
             List<Map<String, String>> projectCodeGroup = rootCodeMaps.getOrDefault(treeContract.getNodeCode(), null);
             List<Map<String, String>> projectCodeGroup = rootCodeMaps.getOrDefault(treeContract.getNodeCode(), null);
+
             if (ObjectUtil.isNotEmpty(projectCodeGroup)) {
             if (ObjectUtil.isNotEmpty(projectCodeGroup)) {
+
                 Map<String, List<Map<String, String>>> nodeCodeGroup = projectCodeGroup.stream()
                 Map<String, List<Map<String, String>>> nodeCodeGroup = projectCodeGroup.stream()
                         .collect(Collectors.groupingBy(
                         .collect(Collectors.groupingBy(
                                 map -> map.get("节点编号"),
                                 map -> map.get("节点编号"),
                                 LinkedHashMap::new,
                                 LinkedHashMap::new,
-                                Collectors.toList()
-                        ));
+                                Collectors.toList()));
+                nodeCodeGroup.values().forEach(list -> list.forEach(map -> map.entrySet().removeIf(entry -> entry.getKey().isEmpty())));
+
                 int sort = 1;
                 int sort = 1;
+
+                /*节点编号匹配*/
                 for (Map.Entry<String, List<Map<String, String>>> listEntry : nodeCodeGroup.entrySet()) {
                 for (Map.Entry<String, List<Map<String, String>>> listEntry : nodeCodeGroup.entrySet()) {
+
                     String nodeCode = listEntry.getKey();
                     String nodeCode = listEntry.getKey();
+
                     List<Map<String, String>> rows = listEntry.getValue().stream()
                     List<Map<String, String>> rows = listEntry.getValue().stream()
                             .sorted(Comparator.comparing(map -> {
                             .sorted(Comparator.comparing(map -> {
                                 String formCode = map.get("清单编号");
                                 String formCode = map.get("清单编号");
@@ -614,108 +663,266 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
                     long nullFormCodeCount = rows.stream()
                     long nullFormCodeCount = rows.stream()
                             .filter(map -> ObjectUtil.isEmpty(map.get("清单编号")))
                             .filter(map -> ObjectUtil.isEmpty(map.get("清单编号")))
                             .count();
                             .count();
+                    if (nullFormCodeCount == 0) {
+                        throw new RuntimeException("节点编号【" + nodeCode + "】没有清单编号为空的数据,请确认至少有一条");
+                    }
                     if (nullFormCodeCount > 1) {
                     if (nullFormCodeCount > 1) {
                         throw new RuntimeException("节点编号【" + nodeCode + "】存在多条清单编号为空的数据,请确认是否只有一条");
                         throw new RuntimeException("节点编号【" + nodeCode + "】存在多条清单编号为空的数据,请确认是否只有一条");
                     }
                     }
 
 
-                    MeterTreeContract obj = new MeterTreeContract();
-                    Long nodeId = SnowFlakeUtil.getId();
-                    BigDecimal money = BigDecimal.ZERO;
-                    BigDecimal moneyChange = BigDecimal.ZERO;
+                    MeterTreeContract orDefault = rootNodeChildMap.getOrDefault(nodeCode, null);
 
 
-                    for (Map<String, String> map : rows) {
-                        String currCode = map.get("节点编号");
-                        if (currCode.equals(nodeCode)) {
-                            String formCode = map.get("清单编号");
-                            String nodeName = map.get("工程名称");
-                            String buildPictureTotal = map.get("施工图数量");
-                            String stakeType = map.get("桩号类型");
-                            String startStake = map.get("起始桩号");
-                            String endStake = map.get("结束桩号");
-                            String contractPicture = map.get("合同图号");
-                            String remarks = map.get("备注");
-
-                            //节点
-                            if (ObjectUtil.isEmpty(formCode)) {
-                                obj.setId(nodeId);
-                                obj.setParentId(treeContract.getId());
-                                obj.setAncestor(treeContract.getAncestor() + "," + obj.getParentId());
-                                obj.setNodeName(nodeName);
-                                obj.setNodeCode(currCode);
-                                obj.setUpdateStatus(0);
-                                obj.setSort(sort);
-                                if (ObjectUtil.isNotEmpty(stakeType)) {
-                                    String upperCase = stakeType.toUpperCase();
-                                    String key = meterStakeTypeMaps.getOrDefault(upperCase, null);
-                                    if (key != null) {
-                                        obj.setStakeType(Integer.parseInt(key));
+                    /*不存在节点编号,新增节点、清单*/
+                    if (orDefault == null) {
+                        MeterTreeContract obj = new MeterTreeContract();
+                        Long nodeId = SnowFlakeUtil.getId();
+                        BigDecimal money = BigDecimal.ZERO;
+                        BigDecimal moneyChange = BigDecimal.ZERO;
+
+                        for (Map<String, String> map : rows) {
+                            String currCode = map.get("节点编号");
+                            if (currCode.equals(nodeCode)) {
+                                String formCode = map.get("清单编号");
+                                String nodeName = map.get("工程名称");
+                                String buildPictureTotal = map.get("施工图数量");
+                                String stakeType = map.get("桩号类型");
+                                String startStake = map.get("起始桩号");
+                                String endStake = map.get("结束桩号");
+                                String contractPicture = map.get("合同图号");
+                                String remarks = map.get("备注");
+
+                                //节点
+                                if (ObjectUtil.isEmpty(formCode)) {
+                                    obj.setId(nodeId);
+                                    obj.setParentId(treeContract.getId());
+                                    obj.setAncestor(treeContract.getAncestor() + "," + obj.getParentId());
+                                    obj.setNodeName(nodeName);
+                                    obj.setNodeCode(currCode);
+                                    obj.setUpdateStatus(0);
+                                    obj.setSort(sort);
+
+                                    /*获取父节点下一级类型,如果父节点是最大类型6,那么默认最大6*/
+                                    if (ObjectUtil.isNotEmpty(treeContract.getNodeType())) {
+                                        obj.setNodeType(treeContract.getNodeType().equals(6) ? 6 : treeContract.getNodeType() + 1);
+                                    }
+
+                                    if (ObjectUtil.isNotEmpty(stakeType)) {
+                                        String upperCase = stakeType.toUpperCase();
+                                        String key = meterStakeTypeMaps.getOrDefault(upperCase, null);
+                                        if (key != null) {
+                                            obj.setStakeType(Integer.parseInt(key));
+                                        }
+                                    }
+                                    obj.setStartStake(startStake);
+                                    obj.setEndStake(endStake);
+                                    obj.setContractPicture(contractPicture);
+                                    obj.setRemarks(remarks);
+
+                                    obj.setTemplateId(treeContract.getTemplateId());
+                                    obj.setProjectId(treeContract.getProjectId());
+                                    obj.setContractId(treeContract.getContractId());
+
+                                    obj.setDataSourceType(4); //导入
+
+                                } else {
+                                    //清单
+                                    ContractInventoryForm contractInventoryForm = contractInventoryFormMapsByFormNumber.getOrDefault(formCode, null);
+                                    if (contractInventoryForm != null) {
+                                        InventoryFormMeter objForm = new InventoryFormMeter();
+                                        objForm.setId(SnowFlakeUtil.getId());
+                                        objForm.setProjectId(treeContract.getProjectId());
+                                        objForm.setContractId(treeContract.getContractId());
+
+                                        if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
+                                            objForm.setCreateUser(SecureUtil.getUserId());
+                                            objForm.setUpdateUser(SecureUtil.getUserId());
+                                            if (SecureUtil.getDeptId().contains(",")) {
+                                                objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId().split(",")[0]));
+                                            } else {
+                                                objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId()));
+                                            }
+                                        }
+
+                                        objForm.setContractMeterId(nodeId);
+                                        objForm.setContractFormId(contractInventoryForm.getId());
+
+                                        objForm.setBuildPictureTotal(this.parseString(buildPictureTotal));
+                                        objForm.setChangeBuildPictureTotal(objForm.getBuildPictureTotal());
+                                        objForm.setBuildPictureMoney(objForm.getBuildPictureTotal().multiply(contractInventoryForm.getChangePrice())); //数量*变更后单价
+                                        objForm.setChangeBuildPictureMoney(objForm.getBuildPictureMoney());
+
+                                        /*计量单元节点金额相关累加*/
+                                        money = money.add(objForm.getBuildPictureMoney());
+                                        moneyChange = moneyChange.add(objForm.getChangeBuildPictureMoney());
+
+                                        resultFormListAdd.add(objForm);
                                     }
                                     }
                                 }
                                 }
-                                obj.setStartStake(startStake);
-                                obj.setEndStake(endStake);
-                                obj.setContractPicture(contractPicture);
-                                obj.setRemarks(remarks);
+                            }
+                        }
 
 
-                                obj.setTemplateId(treeContract.getTemplateId());
-                                obj.setProjectId(treeContract.getProjectId());
-                                obj.setContractId(treeContract.getContractId());
+                        obj.setBuildPictureMoney(money);
+                        obj.setChangeMoney(moneyChange);
+                        resultNodeListAdd.add(obj);
+                        sort++;
+
+                    } else {
+                        /*存在节点编号,只同步累加或者新增清单*/
+                        /*获取该节点的原始的清单中间信息*/
+                        List<InventoryFormMeter> inventoryFormMeters = inventoryFormMeterMapsGroupByContractMeterId.get(orDefault.getId());
+                        Map<String, ContractInventoryForm> ysContractInventoryFormMapsByFormNumber = new HashMap<>();
+                        for (InventoryFormMeter objForm : inventoryFormMeters) {
+                            /*获取原始清单详细详细*/
+                            ContractInventoryForm contractInventoryForm = contractInventoryFormMapsById.getOrDefault(objForm.getContractFormId(), null);
+                            if (contractInventoryForm != null) {
+                                ysContractInventoryFormMapsByFormNumber.put(contractInventoryForm.getFormNumber(), contractInventoryForm);
+                            }
+                        }
+
+                        for (Map<String, String> map : rows) {
+                            String formCode = map.get("清单编号");
+                            if (formCode.isEmpty()) {
+                                continue;
+                            }
+                            String buildPictureTotal = map.get("施工图数量");
+
+                            /*获取原始清单详细详细*/
+                            ContractInventoryForm contractInventoryForm = ysContractInventoryFormMapsByFormNumber.getOrDefault(formCode, null);
+                            if (contractInventoryForm != null) {
+                                //相同清单编号,则同步累加
+                                if (contractInventoryForm.getFormNumber().equals(formCode)) {
+                                    /*获取到对应的中间关联清单信息*/
+                                    InventoryFormMeter formUpdate = inventoryFormMeterMapsByContractFormId.getOrDefault(contractInventoryForm.getId() + ":" + orDefault.getId(), null);
+                                    if (formUpdate != null) {
+                                        //累加
+                                        BigDecimal bigDecimal = this.parseString(buildPictureTotal);
+                                        formUpdate.setBuildPictureTotal(formUpdate.getBuildPictureTotal().add(bigDecimal));
+
+                                        formUpdate.setChangeBuildPictureTotal(formUpdate.getBuildPictureTotal());
 
 
-                                obj.setDataSourceType(4); //导入
+                                        formUpdate.setBuildPictureMoney(formUpdate.getBuildPictureTotal().multiply(contractInventoryForm.getChangePrice())); //数量*变更后单价
+
+                                        formUpdate.setChangeBuildPictureMoney(formUpdate.getBuildPictureMoney());
+
+                                        /*更改数量*/
+                                        resultFormListUpdate.add(formUpdate);
+
+                                        /*更新节点金额*/
+                                        updateNodeSet.add(orDefault.getId());
+
+                                    }
+                                }
 
 
                             } else {
                             } else {
-                                //清单
-                                ContractInventoryForm contractInventoryForm = contractInventoryFormMaps.getOrDefault(formCode, null);
-                                if (contractInventoryForm != null) {
-                                    InventoryFormMeter objForm = new InventoryFormMeter();
-                                    objForm.setId(SnowFlakeUtil.getId());
-                                    objForm.setProjectId(treeContract.getProjectId());
-                                    objForm.setContractId(treeContract.getContractId());
+
+                                //没有获取到,那么证明是不相同清单编号,则获取对应的清单数据,进行新增清单
+                                ContractInventoryForm contractInventoryFormAdd = contractInventoryFormMapsByFormNumber.getOrDefault(formCode, null);
+                                if (contractInventoryFormAdd != null) {
+                                    InventoryFormMeter formAdd = new InventoryFormMeter();
+                                    formAdd.setId(SnowFlakeUtil.getId());
+                                    formAdd.setProjectId(orDefault.getProjectId());
+                                    formAdd.setContractId(orDefault.getContractId());
 
 
                                     if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
                                     if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
-                                        objForm.setCreateUser(SecureUtil.getUserId());
-                                        objForm.setUpdateUser(SecureUtil.getUserId());
+                                        formAdd.setCreateUser(SecureUtil.getUserId());
+                                        formAdd.setUpdateUser(SecureUtil.getUserId());
                                         if (SecureUtil.getDeptId().contains(",")) {
                                         if (SecureUtil.getDeptId().contains(",")) {
-                                            objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId().split(",")[0]));
+                                            formAdd.setCreateDept(Long.parseLong(SecureUtil.getDeptId().split(",")[0]));
                                         } else {
                                         } else {
-                                            objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId()));
+                                            formAdd.setCreateDept(Long.parseLong(SecureUtil.getDeptId()));
                                         }
                                         }
                                     }
                                     }
 
 
-                                    objForm.setContractMeterId(nodeId);
-                                    objForm.setContractFormId(contractInventoryForm.getId());
+                                    formAdd.setContractMeterId(orDefault.getId());
+                                    formAdd.setContractFormId(contractInventoryFormAdd.getId());
 
 
-                                    objForm.setBuildPictureTotal(this.parseString(buildPictureTotal));
-                                    objForm.setChangeBuildPictureTotal(objForm.getBuildPictureTotal());
-                                    objForm.setBuildPictureMoney(objForm.getBuildPictureTotal().multiply(contractInventoryForm.getChangePrice())); //数量*变更后单价
-                                    objForm.setChangeBuildPictureMoney(objForm.getBuildPictureMoney());
+                                    formAdd.setBuildPictureTotal(this.parseString(buildPictureTotal));
+                                    formAdd.setChangeBuildPictureTotal(formAdd.getBuildPictureTotal());
+                                    formAdd.setBuildPictureMoney(formAdd.getBuildPictureTotal().multiply(contractInventoryFormAdd.getChangePrice())); //数量*变更后单价
+                                    formAdd.setChangeBuildPictureMoney(formAdd.getBuildPictureMoney());
 
 
-                                    /*计量单元节点金额相关累加*/
-                                    money = money.add(objForm.getBuildPictureMoney());
-                                    moneyChange = moneyChange.add(objForm.getChangeBuildPictureMoney());
+                                    /*新增清单*/
+                                    resultFormListAdd.add(formAdd);
+
+                                    /*更新节点金额*/
+                                    updateNodeSet.add(orDefault.getId());
 
 
-                                    resultFormList.add(objForm);
                                 }
                                 }
                             }
                             }
                         }
                         }
                     }
                     }
-                    obj.setBuildPictureMoney(money);
-                    obj.setChangeMoney(moneyChange);
-                    resultNodeList.add(obj);
-                    sort++;
                 }
                 }
             }
             }
         }
         }
-        if (resultNodeList.size() > 0) {
-            this.saveBatch(resultNodeList, 1000);
-            if (resultFormList.size() > 0) {
-                inventoryFormMeterMapper.batchInsert(resultFormList);
-                /*for (InventoryFormMeter inventoryFormMeter : resultFormList) {
-                    inventoryFormMeterMapper.insert(inventoryFormMeter);
-                }*/
+
+        boolean var = false;
+
+        /*节点*/
+        if (resultNodeListAdd.size() > 0) {
+            this.saveBatch(resultNodeListAdd, 1000);
+            var = true;
+        }
+
+        /*清单中间新增*/
+        if (resultFormListAdd.size() > 0) {
+            inventoryFormMeterMapper.batchInsert(resultFormListAdd);
+            /*for (InventoryFormMeter inventoryFormMeter : resultFormListAdd) {
+                inventoryFormMeterMapper.insert(inventoryFormMeter);
+            }*/
+            var = true;
+        }
+
+        /*清单中间数量修改*/
+        if (resultFormListUpdate.size() > 0) {
+            for (InventoryFormMeter inventoryFormMeter : resultFormListUpdate) {
+                String sql = "UPDATE s_inventory_form_meter " +
+                        "SET build_picture_total = ? ," +
+                        "change_build_picture_total = ? ," +
+                        "build_picture_money = ? ," +
+                        "change_build_picture_money = ? WHERE id = ?";
+                jdbcTemplate.update(sql,
+                        inventoryFormMeter.getBuildPictureTotal(),
+                        inventoryFormMeter.getChangeBuildPictureTotal(),
+                        inventoryFormMeter.getBuildPictureMoney(),
+                        inventoryFormMeter.getChangeBuildPictureMoney(),
+                        inventoryFormMeter.getId());
+            }
+            var = true;
+        }
+
+        /*节点金额修改*/
+        if (updateNodeSet.size() > 0) {
+            for (Long treeContractId : updateNodeSet) {
+                /*重新计算节点下的清单数量金额等*/
+                List<ContractFromVO> decompositionList = contractInventoryFormMapper.getNodeResolveForm(meterTreeContract.getContractId(), treeContractId);
+                if (ObjectUtil.isNotEmpty(decompositionList) && decompositionList.size() > 0) {
+                    BigDecimal moneyAll = BigDecimal.ZERO;
+                    BigDecimal moneyChangeAll = BigDecimal.ZERO;
+
+                    for (ContractFromVO contractFromVO : decompositionList) {
+                        BigDecimal buildPictureTotal = contractFromVO.getBuildPictureTotal(); //变更前数量
+                        BigDecimal changeBuildPictureTotal = contractFromVO.getChangeBuildPictureTotal(); //变更后数量
+                        BigDecimal currentPrice = contractFromVO.getCurrentPrice(); //单价
+
+                        BigDecimal buildPictureMoney = buildPictureTotal.multiply(currentPrice); //变更前金额
+                        BigDecimal changeBuildPictureMoney = changeBuildPictureTotal.multiply(currentPrice); //变更后金额
+
+                        moneyAll = moneyAll.add(buildPictureMoney);
+                        moneyChangeAll = moneyChangeAll.add(changeBuildPictureMoney);
+                    }
+
+                    String sql = "UPDATE s_meter_tree_contract " +
+                            "SET build_picture_money = ?, " +
+                            "change_money = ? WHERE id = ?";
+                    jdbcTemplate.update(sql,
+                            moneyAll,
+                            moneyChangeAll,
+                            treeContractId);
+                }
+                var = true;
             }
             }
-            return true;
         }
         }
-        return false;
+        return var;
     }
     }
 
 
     /**
     /**