Explorar el Código

引用不修改

Signed-off-by: liuyc <56808083@qq.com>
liuyc hace 1 año
padre
commit
3caeb9590d

+ 42 - 7
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MeterTreeContractServiceImpl.java

@@ -14,10 +14,7 @@ import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.meter.dto.MeterTreeContractSaveBatchDTO;
 import org.springblade.meter.dto.MeterTreeContractSaveDTO;
-import org.springblade.meter.entity.ContractInventoryForm;
-import org.springblade.meter.entity.InventoryFormMeter;
-import org.springblade.meter.entity.MeterTreeContract;
-import org.springblade.meter.entity.MeterTreeProject;
+import org.springblade.meter.entity.*;
 import org.springblade.meter.mapper.ContractInventoryFormMapper;
 import org.springblade.meter.mapper.InventoryFormMeterMapper;
 import org.springblade.meter.mapper.MeterTreeContractMapper;
@@ -604,7 +601,9 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
         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<>();
+        Map<String, InventoryFormMeter> inventoryFormMeterMapsByFormIdAndMeterId = new HashMap<>();
+        Map<String, ChangeTokenInventory> changeTokenInventoryMapsByFormIdAndMeterId = new HashMap<>();
+        Map<String, InventoryFormApply> inventoryFormApplyMapsByFormIdAndMeterId = new HashMap<>();
         if (rootNodeChildIds.size() > 0) {
             /*子级的中间表关联的清单信息*/
             List<InventoryFormMeter> query = jdbcTemplate.query("SELECT * FROM s_inventory_form_meter WHERE is_deleted = 0" +
@@ -612,12 +611,36 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
                             " AND contract_meter_id IN(" + StringUtils.join(rootNodeChildIds, ",") + ")",
                     new BeanPropertyRowMapper<>(InventoryFormMeter.class));
             inventoryFormMeterMapsGroupByContractMeterId = query.stream().collect(Collectors.groupingBy(InventoryFormMeter::getContractMeterId));
-            inventoryFormMeterMapsByContractFormId =
+            inventoryFormMeterMapsByFormIdAndMeterId =
                     query.stream()
                             .collect(Collectors.toMap(
                                     meter -> meter.getContractFormId() + ":" + meter.getContractMeterId(),
                                     Function.identity()
                             ));
+
+            /*变更令引用*/
+            List<ChangeTokenInventory> query1 = jdbcTemplate.query("SELECT contract_meter_id,contract_form_id FROM s_change_token_inventory WHERE is_deleted = 0" +
+                            " AND contract_id = " + meterTreeContract.getContractId() +
+                            " AND contract_meter_id IN(" + StringUtils.join(rootNodeChildIds, ",") + ")",
+                    new BeanPropertyRowMapper<>(ChangeTokenInventory.class));
+            changeTokenInventoryMapsByFormIdAndMeterId =
+                    query1.stream()
+                            .collect(Collectors.toMap(
+                                    change -> change.getContractFormId() + ":" + change.getContractMeterId(),
+                                    Function.identity()
+                            ));
+
+            /*中间计量引用*/
+            List<InventoryFormApply> query2 = jdbcTemplate.query("SELECT contract_meter_id,contract_form_id FROM s_inventory_form_apply WHERE is_deleted = 0" +
+                            " AND contract_id = " + meterTreeContract.getContractId() +
+                            " AND contract_meter_id IN(" + StringUtils.join(rootNodeChildIds, ",") + ")",
+                    new BeanPropertyRowMapper<>(InventoryFormApply.class));
+            inventoryFormApplyMapsByFormIdAndMeterId =
+                    query2.stream()
+                            .collect(Collectors.toMap(
+                                    inventoryFormApply -> inventoryFormApply.getContractFormId() + ":" + inventoryFormApply.getContractMeterId(),
+                                    Function.identity()
+                            ));
         }
 
         /*桩号类型*/
@@ -628,6 +651,9 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
         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()));
 
+        /*判断是否被引用、变更*/
+        jdbcTemplate.query("SELECT * FROM s_change_token_inventory WHERE is_deleted = 0", new BeanPropertyRowMapper<>(ChangeTokenInventory.class)).stream();
+
         Map<String, List<Map<String, String>>> rootCodeMaps = parseExcelFileToList.stream()
                 .collect(Collectors.groupingBy(
                         map -> map.get("工程编号"),
@@ -792,8 +818,17 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
                                 //相同清单编号,则同步累加
                                 if (contractInventoryForm.getFormNumber().equals(formCode)) {
                                     /*获取到对应的中间关联清单信息*/
-                                    InventoryFormMeter formUpdate = inventoryFormMeterMapsByContractFormId.getOrDefault(contractInventoryForm.getId() + ":" + orDefault.getId(), null);
+                                    String key = contractInventoryForm.getId() + ":" + orDefault.getId();
+                                    InventoryFormMeter formUpdate = inventoryFormMeterMapsByFormIdAndMeterId.getOrDefault(key, null);
                                     if (formUpdate != null) {
+
+                                        /*判断是否被引用、变更*/
+                                        ChangeTokenInventory orDefault1 = changeTokenInventoryMapsByFormIdAndMeterId.getOrDefault(key, null);
+                                        InventoryFormApply orDefault2 = inventoryFormApplyMapsByFormIdAndMeterId.getOrDefault(key, null);
+                                        if (orDefault1 != null || orDefault2 != null) {
+                                            continue;
+                                        }
+
                                         //累加
                                         BigDecimal bigDecimal = this.parseString(buildPictureTotal);
                                         formUpdate.setBuildPictureTotal(formUpdate.getBuildPictureTotal().add(bigDecimal));