From 2656ae9bce8544d81da66c07aaede5386d6fbebb Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 25 七月 2025 15:41:01 +0800
Subject: [PATCH] 1.序列化问题 2.设备领用逻辑优化
---
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java | 6
main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java | 93 +++++++++++++-----
main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java | 2
main-business/src/main/java/com/ruoyi/business/service/EquipmentUsageDetailService.java | 6
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageDetailServiceImpl.java | 113 ++++++++++------------
main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java | 37 +++---
main-business/src/main/java/com/ruoyi/business/entity/EquipmentManagement.java | 2
main-business/src/main/java/com/ruoyi/business/controller/EquipmentUsageDetailController.java | 13 -
main-business/src/main/java/com/ruoyi/business/vo/EquipmentManagementVo.java | 4
9 files changed, 156 insertions(+), 120 deletions(-)
diff --git a/main-business/src/main/java/com/ruoyi/business/controller/EquipmentUsageDetailController.java b/main-business/src/main/java/com/ruoyi/business/controller/EquipmentUsageDetailController.java
index 466c033..72cf267 100644
--- a/main-business/src/main/java/com/ruoyi/business/controller/EquipmentUsageDetailController.java
+++ b/main-business/src/main/java/com/ruoyi/business/controller/EquipmentUsageDetailController.java
@@ -1,19 +1,14 @@
package com.ruoyi.business.controller;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.business.dto.EquipmentManagementDto;
import com.ruoyi.business.dto.EquipmentUsageDetailDto;
-import com.ruoyi.business.entity.EquipmentManagement;
-import com.ruoyi.business.entity.EquipmentUsageDetail;
-import com.ruoyi.business.mapper.EquipmentUsageDetailMapper;
-import com.ruoyi.business.service.EquipmentManagementService;
import com.ruoyi.business.service.EquipmentUsageDetailService;
import com.ruoyi.common.core.domain.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
/**
* <p>
@@ -35,8 +30,8 @@
* 璁惧棰嗙敤褰掕繕璁板綍鏌ヨ
*/
@GetMapping("/list")
- public R<IPage<EquipmentUsageDetailDto>> list(Page<EquipmentUsageDetail> page,EquipmentUsageDetailDto equipmentUsageDetailDto) {
- IPage<EquipmentUsageDetailDto> list = equipmentUsageDetailService.selectEquipmentUsageDetailList(page,equipmentUsageDetailDto);
+ public R<List<EquipmentUsageDetailDto>> list(EquipmentUsageDetailDto equipmentUsageDetailDto) {
+ List<EquipmentUsageDetailDto> list = equipmentUsageDetailService.selectEquipmentUsageDetailList(equipmentUsageDetailDto);
return R.ok(list);
}
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/EquipmentManagement.java b/main-business/src/main/java/com/ruoyi/business/entity/EquipmentManagement.java
index 7ad6c05..9e03627 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/EquipmentManagement.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/EquipmentManagement.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import com.ruoyi.common.core.domain.MyBaseEntity;
@@ -80,5 +81,6 @@
* 鏄惁鑰楁潗绫�
*/
@TableField(value = "is_consumables")
+ @JsonProperty("isConsumables")
private boolean isConsumables;
}
\ No newline at end of file
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java b/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
index 7bd1688..809680e 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/SalesRecord.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.MyBaseEntity;
import lombok.Data;
@@ -131,5 +132,6 @@
* 鏄惁娣诲姞鑷冲緟琛ュ簱
*/
@TableField(value = "is_add")
+ @JsonProperty("isAdd")
private boolean isAdd;
}
\ No newline at end of file
diff --git a/main-business/src/main/java/com/ruoyi/business/service/EquipmentUsageDetailService.java b/main-business/src/main/java/com/ruoyi/business/service/EquipmentUsageDetailService.java
index 6dd1ff2..0ef1273 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/EquipmentUsageDetailService.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/EquipmentUsageDetailService.java
@@ -1,10 +1,10 @@
package com.ruoyi.business.service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.business.dto.EquipmentUsageDetailDto;
import com.ruoyi.business.entity.EquipmentUsageDetail;
import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
/**
* <p>
@@ -16,5 +16,5 @@
*/
public interface EquipmentUsageDetailService extends IService<EquipmentUsageDetail> {
- IPage<EquipmentUsageDetailDto> selectEquipmentUsageDetailList(Page<EquipmentUsageDetail> page, EquipmentUsageDetailDto equipmentUsageDetailDto);
+ List<EquipmentUsageDetailDto> selectEquipmentUsageDetailList(EquipmentUsageDetailDto equipmentUsageDetailDto);
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
index e2fe1bf..9c88381 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
@@ -3,23 +3,22 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.dto.EquipmentManagementDto;
import com.ruoyi.business.entity.EquipmentManagement;
import com.ruoyi.business.entity.EquipmentUsageRecord;
import com.ruoyi.business.mapper.EquipmentManagementMapper;
import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
import com.ruoyi.business.service.EquipmentManagementService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.vo.EquipmentManagementVo;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
-import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
-import java.beans.Transient;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -108,6 +107,7 @@
vo.setId(equipment.getId()); // 璁惧id
vo.setEquipmentName(equipment.getEquipmentName()); // 璁惧鍚嶇О
vo.setQuantity(equipment.getQuantity()); // 鏁伴噺
+ vo.setConsumables(equipment.isConsumables()); // 鏄惁鑰楁潗绫�
return vo;
})
.toList();
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageDetailServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageDetailServiceImpl.java
index cb19b1a..3f0025b 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageDetailServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageDetailServiceImpl.java
@@ -1,9 +1,7 @@
package com.ruoyi.business.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.business.dto.EquipmentManagementDto;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.dto.EquipmentUsageDetailDto;
import com.ruoyi.business.entity.EquipmentManagement;
import com.ruoyi.business.entity.EquipmentUsageDetail;
@@ -11,14 +9,11 @@
import com.ruoyi.business.mapper.EquipmentManagementMapper;
import com.ruoyi.business.mapper.EquipmentUsageDetailMapper;
import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
-import com.ruoyi.business.service.EquipmentManagementService;
import com.ruoyi.business.service.EquipmentUsageDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.business.service.EquipmentUsageRecordService;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.bean.BeanUtils;
-import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashMap;
@@ -47,72 +42,70 @@
@Override
- public IPage<EquipmentUsageDetailDto> selectEquipmentUsageDetailList(Page<EquipmentUsageDetail> page,EquipmentUsageDetailDto equipmentUsageDetailDto) {
- // 蹇呴』浼犻�抲sageId鍙傛暟
+ public List<EquipmentUsageDetailDto> selectEquipmentUsageDetailList(EquipmentUsageDetailDto equipmentUsageDetailDto) {
+ // 蹇呴』浼犻�� usageId 鍙傛暟
if (equipmentUsageDetailDto.getUsageId() == null) {
throw new BaseException("璇烽�夋嫨浣跨敤璁板綍");
}
+
+ // 鏌ヨ鏄庣粏鍒楄〃锛堜笉鍒嗛〉锛�
LambdaQueryWrapper<EquipmentUsageDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EquipmentUsageDetail::getUsageId, equipmentUsageDetailDto.getUsageId());
+ List<EquipmentUsageDetail> details = equipmentUsageDetailMapper.selectList(queryWrapper);
- Page<EquipmentUsageDetail> entityPage = equipmentUsageDetailMapper.selectPage(page, queryWrapper);
- IPage<EquipmentUsageDetailDto> dtoPage = new Page<>();
- BeanUtils.copyProperties(entityPage, dtoPage);
- // 鍏堣幏鍙栦富琛ㄨ褰�
- List<Long> usageIds = entityPage.getRecords().stream()
+ // 濡傛灉娌℃湁鏁版嵁锛岀洿鎺ヨ繑鍥炵┖鍒楄〃
+ if (details.isEmpty()) {
+ return Collections.emptyList();
+ }
+
+ // 鑾峰彇鎵�鏈夊叧鑱旂殑 usageId
+ List<Long> usageIds = details.stream()
.map(EquipmentUsageDetail::getUsageId)
.distinct()
.collect(Collectors.toList());
- if (!usageIds.isEmpty()) {
- // 鏌ヨ鍏宠仈鐨勪娇鐢ㄨ褰�
- List<EquipmentUsageRecord> usageRecords = equipmentUsageRecordMapper.selectList(
- new LambdaQueryWrapper<EquipmentUsageRecord>()
- .in(EquipmentUsageRecord::getId, usageIds)
- );
+ // 鏌ヨ鍏宠仈鐨勪娇鐢ㄨ褰�
+ List<EquipmentUsageRecord> usageRecords = equipmentUsageRecordMapper.selectList(
+ new LambdaQueryWrapper<EquipmentUsageRecord>()
+ .in(EquipmentUsageRecord::getId, usageIds)
+ );
- // 鑾峰彇鎵�鏈夎澶嘔D
- List<Long> equipmentIds = usageRecords.stream()
- .map(EquipmentUsageRecord::getEquipmentId)
- .distinct()
- .collect(Collectors.toList());
+ // 鑾峰彇鎵�鏈夎澶嘔D
+ List<Long> equipmentIds = usageRecords.stream()
+ .map(EquipmentUsageRecord::getEquipmentId)
+ .distinct()
+ .collect(Collectors.toList());
- // 鏌ヨ璁惧淇℃伅
- Map<Long, EquipmentManagement> equipmentMap;
- if (!equipmentIds.isEmpty()) {
- equipmentMap = equipmentManagementMapper.selectList(
- new LambdaQueryWrapper<EquipmentManagement>()
- .in(EquipmentManagement::getId, equipmentIds)
- ).stream().collect(Collectors.toMap(EquipmentManagement::getId, Function.identity()));
- } else {
- equipmentMap = new HashMap<>();
+ // 鏌ヨ璁惧淇℃伅
+ Map<Long, EquipmentManagement> equipmentMap;
+ if (!equipmentIds.isEmpty()) {
+ equipmentMap = equipmentManagementMapper.selectList(
+ new LambdaQueryWrapper<EquipmentManagement>()
+ .in(EquipmentManagement::getId, equipmentIds)
+ ).stream().collect(Collectors.toMap(EquipmentManagement::getId, Function.identity()));
+ } else {
+ equipmentMap = new HashMap<>();
+ }
+
+ // 鏋勫缓 usageId 鈫� equipmentId 鐨勬槧灏�
+ Map<Long, Long> usageIdToEquipmentIdMap = usageRecords.stream()
+ .collect(Collectors.toMap(EquipmentUsageRecord::getId, EquipmentUsageRecord::getEquipmentId));
+
+ // 杞崲涓� DTO 骞跺~鍏呰澶囦俊鎭�
+ return details.stream().map(detail -> {
+ EquipmentUsageDetailDto detailDto = new EquipmentUsageDetailDto();
+ BeanUtils.copyProperties(detail, detailDto);
+
+ // 鑾峰彇鍏宠仈鐨勮澶囦俊鎭�
+ Long equipmentId = usageIdToEquipmentIdMap.get(detail.getUsageId());
+ if (equipmentId != null && equipmentMap.containsKey(equipmentId)) {
+ EquipmentManagement equipment = equipmentMap.get(equipmentId);
+ detailDto.setEquipmentNo(equipment.getEquipmentNo());
+ detailDto.setEquipmentName(equipment.getEquipmentName());
+ detailDto.setSpecification(equipment.getSpecification());
}
- // 鏋勫缓浣跨敤璁板綍ID鍒拌澶嘔D鐨勬槧灏�
- Map<Long, Long> usageIdToEquipmentIdMap = usageRecords.stream()
- .collect(Collectors.toMap(EquipmentUsageRecord::getId, EquipmentUsageRecord::getEquipmentId));
-
- // 杞崲DTO骞跺~鍏呰澶囦俊鎭�
- List<EquipmentUsageDetailDto> dtoList = entityPage.getRecords().stream().map(detail -> {
- EquipmentUsageDetailDto detailDto = new EquipmentUsageDetailDto();
- BeanUtils.copyProperties(detail, detailDto);
-
- // 鑾峰彇鍏宠仈鐨勮澶嘔D
- Long equipmentId = usageIdToEquipmentIdMap.get(detail.getUsageId());
- if (equipmentId != null && equipmentMap.containsKey(equipmentId)) {
- EquipmentManagement equipment = equipmentMap.get(equipmentId);
- detailDto.setEquipmentNo(equipment.getEquipmentNo());
- detailDto.setEquipmentName(equipment.getEquipmentName());
- detailDto.setSpecification(equipment.getSpecification());
- }
-
- return detailDto;
- }).collect(Collectors.toList());
-
- dtoPage.setRecords(dtoList);
- } else {
- dtoPage.setRecords(Collections.emptyList());
- }
- return dtoPage;
+ return detailDto;
+ }).collect(Collectors.toList());
}
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
index 13c1d08..c272fa3 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
@@ -3,9 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.basic.entity.Supply;
-import com.ruoyi.basic.mapper.CoalInfoMapper;
-import com.ruoyi.business.dto.EquipmentManagementDto;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.dto.EquipmentUsageRecordDto;
import com.ruoyi.business.entity.EquipmentManagement;
import com.ruoyi.business.entity.EquipmentUsageDetail;
@@ -14,12 +12,11 @@
import com.ruoyi.business.mapper.EquipmentUsageDetailMapper;
import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
import com.ruoyi.business.service.EquipmentUsageRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.mapper.SysUserMapper;
-import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
@@ -133,7 +130,7 @@
}
// 澶勭悊褰掕繕閫昏緫
- if (equipmentUsageRecordDto.getEquipmentStatus() == 2) {
+ if (equipmentUsageRecordDto.getEquipmentStatus() != 1) {
result = handleReturnOperation(equipmentUsageRecordDto, equipment, originalRecord, userId, username);
} else {
// 澶勭悊鏅�氱紪杈戦�昏緫锛堥潪褰掕繕鐘舵�侊級
@@ -173,7 +170,7 @@
private int handleReturnOperation(EquipmentUsageRecordDto dto, EquipmentManagement equipment,
EquipmentUsageRecord originalRecord, Long userId, String username) {
- // 鑾峰彇鏈褰掕繕鏁伴噺
+ // 鏍¢獙褰掕繕鏁伴噺
Integer returnQuantity = dto.getReturnQuantity();
if (returnQuantity == null || returnQuantity <= 0) {
throw new RuntimeException("褰掕繕鏁伴噺蹇呴』澶т簬0");
@@ -185,18 +182,19 @@
throw new RuntimeException("褰掕繕鏁伴噺涓嶈兘瓒呰繃鏈綊杩樻暟閲忥紝鍓╀綑鏈綊杩樻暟閲忥細" + remainingQuantity);
}
- // 鏇存柊涓昏褰�
+ // 鍑嗗鏇存柊璁板綍
EquipmentUsageRecord updateRecord = new EquipmentUsageRecord();
updateRecord.setId(originalRecord.getId());
- updateRecord.setReturnQuantity(originalRecord.getReturnQuantity() + returnQuantity);
- updateRecord.setEquipmentStatus(2); // 宸插綊杩樼姸鎬�
- updateRecord.setUsageEndTime(LocalDate.now());
- // 濡傛灉鍏ㄩ儴褰掕繕锛屾洿鏂扮姸鎬佸拰鏃堕棿
-// if (updateRecord.getReturnQuantity().equals(originalRecord.getUsageQuantity())) {
-//
-// }
+ int newReturnQuantity = originalRecord.getReturnQuantity() + returnQuantity;
+ updateRecord.setReturnQuantity(newReturnQuantity);
- // 鎭㈠搴撳瓨
+ // 鍒ゆ柇鏄惁鍏ㄩ儴褰掕繕
+ boolean isFullReturn = newReturnQuantity == originalRecord.getUsageQuantity();
+ int newStatus = isFullReturn ? 3 : 2; // 3琛ㄧず鍏ㄩ儴褰掕繕锛�2琛ㄧず閮ㄥ垎褰掕繕
+ updateRecord.setEquipmentStatus(newStatus);
+ updateRecord.setUsageEndTime(LocalDate.now());
+
+ // 鎭㈠搴撳瓨鏁伴噺
equipment.setQuantity(equipment.getQuantity() + returnQuantity);
equipmentManagementMapper.updateById(equipment);
@@ -205,10 +203,11 @@
// 淇濆瓨褰掕繕鏄庣粏璁板綍
if (result > 0) {
- String remark = "璁惧褰掕繕" + (updateRecord.getEquipmentStatus() == 2 ? "锛堝叏閮ㄥ綊杩橈級" : "锛堥儴鍒嗗綊杩橈級");
- saveUsageDetail(originalRecord.getId(), originalRecord.getEquipmentId(), 2, returnQuantity, userId, username, remark);
+ String remark = isFullReturn ? "璁惧褰掕繕锛堝叏閮ㄥ綊杩橈級" : "璁惧褰掕繕锛堥儴鍒嗗綊杩橈級";
+ int operationType = isFullReturn ? 3 : 2; // 涓庝富璁板綍鐘舵�佷繚鎸佷竴鑷�
+ saveUsageDetail(originalRecord.getId(), originalRecord.getEquipmentId(),
+ operationType, returnQuantity, userId, username, remark);
}
-
return result;
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
index 1a9c849..da90280 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/SalesRecordServiceImpl.java
@@ -9,7 +9,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.entity.CoalInfo;
import com.ruoyi.basic.entity.Customer;
-import com.ruoyi.basic.entity.Supply;
import com.ruoyi.basic.mapper.CoalInfoMapper;
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.business.dto.SalesRecordDto;
@@ -40,13 +39,9 @@
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.TemporalAdjusters;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
-import java.util.*;
/**
* <p>
@@ -153,23 +148,20 @@
// 鍙傛暟鏍¢獙
validateSalesRecordDto(salesRecordDto);
- // 鏇存柊姝e紡搴撳緟琛ュ簱鏁伴噺
+ // 鑾峰彇鐓ょ搴撳瓨淇℃伅
OfficialInventory officialInventory = officialInventoryMapper.selectById(salesRecordDto.getCoalId());
if (officialInventory == null) {
throw new BaseException("姝e紡搴撶叅绉嶄俊鎭笉瀛樺湪");
}
- if (salesRecordDto.getSaleQuantity().compareTo(officialInventory.getInventoryQuantity()) > 0) {
- throw new BaseException("閿�鍞暟閲忎笉鑳藉ぇ浜庡簱瀛樻暟閲�");
- }
- officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(salesRecordDto.getSaleQuantity()));
- if (salesRecordDto.isAdd()){
- officialInventory.setPendingReplenishment(salesRecordDto.getSaleQuantity());
- }
- officialInventoryMapper.updateById(officialInventory);
+ // 澶勭悊閿�鍞暟閲忓彉鏇撮�昏緫
+ SalesRecord existingRecord = salesRecordDto.getId() == null ? null : salesRecordMapper.selectById(salesRecordDto.getId());
+ handleQuantityChanges(salesRecordDto, officialInventory, existingRecord);
// 鏋勫缓閿�鍞褰曞疄浣�
SalesRecord salesRecord = buildSalesRecord(salesRecordDto, officialInventory.getCoalId());
+ // 璁剧疆閿�鍞褰曚腑鐨勫簱瀛樻暟閲�
+ salesRecord.setInventoryQuantity(officialInventory.getInventoryQuantity());
// 澶勭悊鏂板/鏇存柊閫昏緫
if (salesRecordDto.getId() == null) {
@@ -179,18 +171,52 @@
}
}
- private void validateSalesRecordDto(SalesRecordDto dto) {
- if (dto == null) {
- throw new BaseException("閿�鍞褰曟暟鎹笉鑳戒负绌�");
+ private void handleQuantityChanges(SalesRecordDto dto, OfficialInventory officialInventory, SalesRecord existingRecord) {
+ if (existingRecord == null) {
+ // 鏂板璁板綍
+ if (dto.getSaleQuantity().compareTo(officialInventory.getInventoryQuantity()) > 0) {
+ throw new BaseException("閿�鍞暟閲忎笉鑳藉ぇ浜庡簱瀛樻暟閲�");
+ }
+ // 鏇存柊搴撳瓨鏁伴噺
+ officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(dto.getSaleQuantity()));
+ // 璁剧疆寰呰ˉ搴撴暟閲�
+ if (dto.isAdd()) {
+ officialInventory.setPendingReplenishment(
+ officialInventory.getPendingReplenishment() == null ?
+ dto.getSaleQuantity() :
+ officialInventory.getPendingReplenishment().add(dto.getSaleQuantity())
+ );
+ }
+ } else {
+ // 鏇存柊璁板綍
+ // 姣旇緝閿�鍞暟閲忔槸鍚︽湁鍙樺寲
+ int quantityComparison = dto.getSaleQuantity().compareTo(existingRecord.getSaleQuantity());
+ if (quantityComparison != 0) {
+ // 璁$畻鏁伴噺宸��
+ BigDecimal quantityDiff = dto.getSaleQuantity().subtract(existingRecord.getSaleQuantity());
+
+ // 妫�鏌ユ柊鏁伴噺鏄惁浼氬鑷村簱瀛樹笉瓒�
+ if (quantityComparison > 0 && quantityDiff.compareTo(officialInventory.getInventoryQuantity()) > 0) {
+ throw new BaseException("閿�鍞暟閲忓鍔犲悗涓嶈兘澶т簬搴撳瓨鏁伴噺");
+ }
+
+ // 鏇存柊搴撳瓨鏁伴噺
+ officialInventory.setInventoryQuantity(officialInventory.getInventoryQuantity().subtract(quantityDiff));
+
+ // 鏇存柊寰呰ˉ搴撴暟閲忥紙濡傛灉鏄渶瑕佽ˉ搴撶殑璁板綍锛�
+ if (dto.isAdd()) {
+ BigDecimal pendingDiff = officialInventory.getPendingReplenishment() == null ?
+ quantityDiff :
+ officialInventory.getPendingReplenishment().add(quantityDiff);
+ officialInventory.setPendingReplenishment(pendingDiff);
+ }
+ }
}
- if (dto.getRegistrantId() == null) {
- throw new BaseException("鐧昏浜篒D涓嶈兘涓虹┖");
- }
- if (dto.getCustomerId() == null) {
- throw new BaseException("瀹㈡埛ID涓嶈兘涓虹┖");
- }
- if (dto.getCoalId() == null) {
- throw new BaseException("璇烽�夋嫨涓�鏉$叅绉嶄俊鎭�");
+
+ // 鏇存柊搴撳瓨璁板綍
+ int updateResult = officialInventoryMapper.updateById(officialInventory);
+ if (updateResult <= 0) {
+ throw new BaseException("搴撳瓨鏇存柊澶辫触");
}
}
@@ -234,6 +260,21 @@
return record;
}
+ private void validateSalesRecordDto(SalesRecordDto dto) {
+ if (dto == null) {
+ throw new BaseException("閿�鍞褰曟暟鎹笉鑳戒负绌�");
+ }
+ if (dto.getRegistrantId() == null) {
+ throw new BaseException("鐧昏浜篒D涓嶈兘涓虹┖");
+ }
+ if (dto.getCustomerId() == null) {
+ throw new BaseException("瀹㈡埛ID涓嶈兘涓虹┖");
+ }
+ if (dto.getCoalId() == null) {
+ throw new BaseException("璇烽�夋嫨涓�鏉$叅绉嶄俊鎭�");
+ }
+ }
+
private int insertSalesRecord(SalesRecord record) {
int result = salesRecordMapper.insert(record);
if (result <= 0) {
diff --git a/main-business/src/main/java/com/ruoyi/business/vo/EquipmentManagementVo.java b/main-business/src/main/java/com/ruoyi/business/vo/EquipmentManagementVo.java
index 3ec641c..b137ddf 100644
--- a/main-business/src/main/java/com/ruoyi/business/vo/EquipmentManagementVo.java
+++ b/main-business/src/main/java/com/ruoyi/business/vo/EquipmentManagementVo.java
@@ -1,5 +1,6 @@
package com.ruoyi.business.vo;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
@@ -10,4 +11,7 @@
private String equipmentName; //璁惧鍚嶇О
private Integer quantity; //鏁伴噺
+
+ @JsonProperty("isConsumables")
+ private boolean isConsumables; //鏄惁鑰楁潗绫�
}
--
Gitblit v1.9.3