From bb5bf872de5e67d7b406e3a305c9dfcbd0f218a6 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 26 六月 2025 18:03:55 +0800
Subject: [PATCH] 采购,正式库优化

---
 main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java |   86 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 1 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
index 6e1f4d6..ceafff7 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
@@ -9,9 +9,11 @@
 import com.ruoyi.basic.entity.CoalField;
 import com.ruoyi.basic.entity.CoalInfo;
 import com.ruoyi.basic.entity.CoalValue;
+import com.ruoyi.basic.entity.Supply;
 import com.ruoyi.basic.mapper.CoalFieldMapper;
 import com.ruoyi.basic.mapper.CoalInfoMapper;
 import com.ruoyi.basic.mapper.CoalValueMapper;
+import com.ruoyi.basic.mapper.SupplyMapper;
 import com.ruoyi.business.dto.OfficialInventoryDto;
 import com.ruoyi.business.entity.OfficialInventory;
 import com.ruoyi.business.mapper.OfficialInventoryMapper;
@@ -48,12 +50,15 @@
 
     private final CoalInfoMapper coalInfoMapper;
 
+    private final SupplyMapper supplyMapper;
+
 
     @Override
     public IPage<OfficialInventoryDto> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto) {
 
         //  鍏堟煡鍑哄師濮嬫暟鎹紙OfficialInventory锛�
         LambdaQueryWrapper<OfficialInventory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.orderByAsc(OfficialInventory::getCreateTime);
         IPage<OfficialInventory> entityPage = officialInventoryMapper.selectPage(page, queryWrapper);
 
         //  鍒涘缓涓�涓柊鐨� Dto 鍒嗛〉缁撴灉
@@ -61,6 +66,19 @@
         BeanUtils.copyProperties(entityPage, dtoPage);
 
         List<OfficialInventoryDto> dtoList = new ArrayList<>();
+
+        List<Long> supplierIds = entityPage.getRecords().stream()
+                .map(OfficialInventory::getSupplierId)
+                .toList();
+
+        Map<Long, Supply> supplyMap;
+        if (!supplierIds.isEmpty()) {
+            List<Supply> infos = supplyMapper.selectList(new LambdaQueryWrapper<Supply>().in(Supply::getId, supplierIds));
+            supplyMap = infos.stream().collect(Collectors.toMap(Supply::getId, Function.identity()));
+        } else {
+            supplyMap = new HashMap<>();
+        }
+
 
         //  鏌ヨ鎵�鏈夊彲鐢ㄥ瓧娈碉紙CoalField锛�
         List<CoalField> coalFields = coalFieldMapper.selectList(null);
@@ -88,6 +106,13 @@
         for (OfficialInventory entity : entityPage.getRecords()) {
             OfficialInventoryDto dto = new OfficialInventoryDto();
             BeanUtils.copyProperties(entity, dto);
+
+            // 渚涘簲鍟嗕俊鎭�
+            Supply supply = supplyMap.get(entity.getSupplierId());
+            if (supply != null) {
+                dto.setSupplierName(supply.getSupplierName());
+            }
+
             List<CoalValue> coalValues;
             if (entity.getMergeId() == null) {
                 coalValues = coalValueMapper.selectList(new LambdaQueryWrapper<CoalValue>()
@@ -136,6 +161,64 @@
     public int editOfficial(OfficialInventoryDto officialInventoryDto) {
         OfficialInventory officialInventory = new OfficialInventory();
         BeanUtils.copyProperties(officialInventoryDto, officialInventory);
+
+        if (officialInventoryDto.getMergeId() != null) {
+            // 1. 鏋勫缓鏌ヨ鏉′欢
+            LambdaQueryWrapper<CoalValue> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CoalValue::getPlanId, officialInventoryDto.getId())
+                    .eq(CoalValue::getType, "2");
+
+            // 2. 鏌ヨ澶氫釜绗﹀悎鏉′欢鐨凜oalValue璁板綍
+            List<CoalValue> coalValues = coalValueMapper.selectList(queryWrapper);
+
+            if (!CollectionUtils.isEmpty(coalValues) && !CollectionUtils.isEmpty(officialInventoryDto.getFields())) {
+                // 3. 鍒涘缓瀛楁鏄犲皠鍏崇郴 (field key -> coal_value)
+                Map<String, String> fieldValueMap = new HashMap<>();
+                for (Map<String, String> fieldMap : officialInventoryDto.getFields()) {
+                    fieldValueMap.putAll(fieldMap);
+                }
+
+                // 4. 鏇存柊
+                for (CoalValue coalValue : coalValues) {
+                    String fieldKey = coalValue.getFields(); // 鏁版嵁搴撲腑鐨刦ield key
+                    if (fieldValueMap.containsKey(fieldKey)) {
+                        String newValue = fieldValueMap.get(fieldKey);
+                        if (!Objects.equals(coalValue.getCoalValue(), newValue)) {
+                            coalValue.setCoalValue(newValue);
+                            coalValueMapper.updateById(coalValue);
+                        }
+                    }
+                }
+            }
+        } else {
+            // 鏋勫缓鏌ヨ鏉′欢
+            LambdaQueryWrapper<CoalValue> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CoalValue::getPlanId, officialInventoryDto.getPendingId())
+                    .eq(CoalValue::getType, "1");
+
+            // 2. 鏌ヨ澶氫釜绗﹀悎鏉′欢鐨凜oalValue璁板綍
+            List<CoalValue> coalValues = coalValueMapper.selectList(queryWrapper);
+
+            if (!CollectionUtils.isEmpty(coalValues) && !CollectionUtils.isEmpty(officialInventoryDto.getFields())) {
+                // 3. 鍒涘缓瀛楁鏄犲皠鍏崇郴 (field key -> coal_value)
+                Map<String, String> fieldValueMap = new HashMap<>();
+                for (Map<String, String> fieldMap : officialInventoryDto.getFields()) {
+                    fieldValueMap.putAll(fieldMap);
+                }
+
+                // 4. 鏇存柊
+                for (CoalValue coalValue : coalValues) {
+                    String fieldKey = coalValue.getFields(); // 鏁版嵁搴撲腑鐨刦ield key
+                    if (fieldValueMap.containsKey(fieldKey)) {
+                        String newValue = fieldValueMap.get(fieldKey);
+                        if (!Objects.equals(coalValue.getCoalValue(), newValue)) {
+                            coalValue.setCoalValue(newValue);
+                            coalValueMapper.updateById(coalValue);
+                        }
+                    }
+                }
+            }
+        }
         return officialInventoryMapper.updateById(officialInventory);
     }
 
@@ -185,7 +268,8 @@
         BeanUtils.copyProperties(officialInventoryDto, officialInventory);
         officialInventory.setId(null);
         officialInventory.setMergeId(ids.toString());
-        officialInventory.setRegistrantId(SecurityUtils.getLoginUser().getUser().getUserName());
+        officialInventory.setSupplierId(officialInventoryDto.getSupplierId());
+        officialInventory.setRegistrantId(SecurityUtils.getLoginUser().getUser().getUserId());
         if (officialInventoryMapper.insert(officialInventory) <= 0) {
             throw new BaseException("搴撳瓨璁板綍鍒涘缓澶辫触");
         }

--
Gitblit v1.9.3