From 94509204d25f7c0ad213ae2322be2bd5bfd17424 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 14 七月 2025 16:30:28 +0800
Subject: [PATCH] 1.初始化配煤计算器数据 2。配煤到待入库

---
 main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java |  124 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 118 insertions(+), 6 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
index 275e084..cacd7f6 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
@@ -6,9 +6,11 @@
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mchange.v2.lang.SystemUtils;
 import com.ruoyi.basic.dto.CoalFieldDto;
 import com.ruoyi.basic.entity.CoalField;
 import com.ruoyi.basic.entity.CoalInfo;
+import com.ruoyi.basic.entity.CoalPlan;
 import com.ruoyi.basic.entity.CoalValue;
 import com.ruoyi.basic.mapper.CoalFieldMapper;
 import com.ruoyi.basic.mapper.CoalInfoMapper;
@@ -16,6 +18,7 @@
 import com.ruoyi.basic.mapper.CoalValueMapper;
 import com.ruoyi.basic.service.CoalFieldService;
 import com.ruoyi.basic.service.CoalPlanService;
+import com.ruoyi.basic.service.CoalValueService;
 import com.ruoyi.business.dto.PendingInventoryDto;
 import com.ruoyi.business.entity.OfficialInventory;
 import com.ruoyi.business.entity.PendingInventory;
@@ -29,6 +32,7 @@
 import com.ruoyi.business.service.PendingInventoryService;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.system.mapper.SysUserMapper;
@@ -38,11 +42,13 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.format.DateTimeParseException;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 import java.util.stream.Stream;
 
 /**
@@ -72,10 +78,8 @@
     private final InputInventoryRecordService inputInventoryRecordService;
 
     private final InventorySummaryService inventorySummaryService;
-
-    private final CoalFieldService coalFieldService;
-
-    private final CoalPlanService coalPlanService;
+    private final CoalPlanMapper coalPlanMapper;
+    private final CoalValueService coalValueService;
 
     @Override
     public IPage<PendingInventoryDto> selectPendingInventoryList(Page page, PendingInventoryDto pendingInventoryDto) {
@@ -297,7 +301,115 @@
 
     @Override
     @Transactional
-    public int addPending(PendingInventoryDto pendingInventoryDto) {
-      return 1;
+    public boolean addPending(PendingInventoryDto pendingInventoryDto) {
+        try {
+            CoalPlan coalPlan = coalPlanMapper.selectOne(new LambdaQueryWrapper<CoalPlan>().eq(CoalPlan::getPlan, "閰嶇叅璁$畻鍣ㄦ柟妗�"));
+            if (coalPlan == null) {
+                return false;
+            }
+
+            // 娣诲姞鍒板緟鍏ュ簱
+            Long userId = SecurityUtils.getUserId();
+            PendingInventory pendingInventory = new PendingInventory();
+            pendingInventory.setUnit("t");
+            pendingInventory.setRegistrantId(userId);
+            pendingInventory.setRegistrationDate(LocalDate.now());
+
+            for (Map<String, Object> map : pendingInventoryDto.getFieldsResultList()) {
+                pendingInventory.setSupplierName("閰嶇叅璁$畻鍣ㄦ柟妗堝叆搴�");
+
+                // 澶勭悊鐓ょ偔ID
+                if (map.get("coalId") == null) {
+                    CoalInfo coalInfo = new CoalInfo();
+                    coalInfo.setCoal((String) map.get("createCoal"));
+                    coalInfo.setMaintainerId(userId);
+                    coalInfo.setMaintenanceDate(LocalDate.now());
+                    if (coalInfoMapper.insert(coalInfo) <= 0) {
+                        return false;
+                    }
+                    pendingInventory.setCoalId(coalInfo.getId());
+                } else {
+                    pendingInventory.setCoalId((Long) map.get("coalId"));
+                }
+
+                // 璁剧疆浠锋牸鍜屾暟閲�
+                BigDecimal cost = BigDecimal.valueOf((Double) map.get("cost"));
+                BigDecimal tonnage = BigDecimal.valueOf((Double) map.get("totalTonnage"));
+
+                pendingInventory.setPriceIncludingTax(cost);
+                pendingInventory.setInventoryQuantity(tonnage);
+                pendingInventory.setTotalPriceIncludingTax(cost.multiply(tonnage));
+
+                BigDecimal costExcludingTax = cost.divide(BigDecimal.valueOf(1.13), 2, RoundingMode.HALF_UP);
+                pendingInventory.setPriceExcludingTax(costExcludingTax);
+                pendingInventory.setTotalPriceExcludingTax(costExcludingTax.multiply(tonnage));
+                pendingInventory.setCoalPlanId(coalPlan.getId());
+
+                // 鐓よ川瀛楁鍊�
+                String coalFields = coalPlan.getCoalFields();
+                List<String> coalFieldList = Arrays.asList(coalFields.split(","));
+
+                for (String field : coalFieldList) {
+                    CoalField coalField = coalFieldMapper.selectOne(
+                            new LambdaQueryWrapper<CoalField>().eq(CoalField::getFields, field));
+                    if (coalField == null) {
+                        continue;
+                    }
+
+                    CoalValue coalValue = new CoalValue();
+                    coalValue.setPlanId(coalPlan.getId());
+                    coalValue.setFields(field);
+                    coalValue.setFieldName(coalField.getFieldName());
+                    coalValue.setType("1");
+
+                    switch (coalField.getFieldName()) {
+                        case "鍙戠儹閲�":
+                            coalValue.setCoalValue((String) map.get("cv"));
+                            break;
+                        case "纭垎":
+                            coalValue.setCoalValue((String) map.get("sulfur"));
+                            break;
+                        case "鐏板垎":
+                            coalValue.setCoalValue((String) map.get("ash"));
+                            break;
+                        case "姘村垎":
+                            coalValue.setCoalValue((String) map.get("moisture"));
+                            break;
+                    }
+
+                    // 淇濆瓨鐓よ川鍊�
+                    if (coalValueMapper.insert(coalValue) <= 0) {
+                        return false;
+                    }
+                }
+            }
+
+            // 鎻掑叆寰呭叆搴撹褰�
+            if (pendingInventoryMapper.insert(pendingInventory) <= 0) {
+                return false;
+            }
+
+            // 鏇存柊姝e紡搴�
+            for (Map<String, Object> coalResult : pendingInventoryDto.getCoalResultList()) {
+                Long officialId = (Long) coalResult.get("officialId");
+                BigDecimal quantity = (BigDecimal) coalResult.get("quantity");
+                OfficialInventory officialInventory = officialInventoryMapper.selectById(officialId);
+
+                if (officialInventory == null || officialInventory.getInventoryQuantity().compareTo(quantity) < 0) {
+                    throw new BaseException("搴撳瓨鏁伴噺涓嶈冻锛屾坊鍔犺嚦寰呭叆搴撳け璐�");
+                }
+
+                officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(quantity));
+                if (officialInventoryMapper.updateById(officialInventory) <= 0) {
+                    return false;
+                }
+            }
+
+            return true;
+        } catch (Exception e) {
+            // 璁板綍鏃ュ織
+            log.error("娣诲姞寰呭叆搴撳け璐�", e);
+            throw new BaseException("娣诲姞寰呭叆搴撳け璐�: " + e.getMessage());
+        }
     }
 }

--
Gitblit v1.9.3