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