| src/main/java/com/ruoyi/basic/controller/EnumController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/enums/BaseEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/utils/EnumUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/basic/controller/EnumController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.basic.controller; import com.ruoyi.common.enums.StockRecordTypeEnum; import com.ruoyi.common.utils.EnumUtil; import com.ruoyi.framework.aspectj.lang.annotation.Anonymous; import com.ruoyi.framework.web.domain.R; import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @Api(tags = "æä¸¾æ¥å£") @RequestMapping("/basic/enum") public class EnumController { //è·ååºåæä¸¾ @GetMapping("/stockRecordType") @Anonymous public R getStockRecordTypeEnum(){ List<Map<String, Object>> list = EnumUtil.toList(StockRecordTypeEnum.class); return R.ok(list); } } src/main/java/com/ruoyi/common/enums/BaseEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ package com.ruoyi.common.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; public interface BaseEnum { @JsonValue Integer getCode(); String getValue(); /** * éç¨éæå·¥å ·æ¹æ³ï¼å¯è¢«æææä¸¾è°ç¨ï¼ */ /** * éç¨éæå·¥å ·æ¹æ³ï¼æ¯æä» Integer æ String ç±»åç Code è¿è¡ååºåå */ @JsonCreator(mode = JsonCreator.Mode.DELEGATING) static <E extends Enum<E> & BaseEnum> E fromCode(Class<E> enumClass, Object code) { if (code == null) { return null; } // ç®æ Code çæ´æ°å¼ Integer targetCode = null; if (code instanceof Integer) { // 1. å¦æä¼ å ¥çæ¯æ°å (Integer) targetCode = (Integer) code; } else if (code instanceof String) { // 2. å¦æä¼ å ¥çæ¯å符串 ("1") try { // å°è¯å°å符串转æ¢ä¸ºæ´æ° targetCode = Integer.valueOf((String) code); } catch (NumberFormatException e) { // 妿åç¬¦ä¸²ä¸æ¯ææçæ°åï¼ä¾å¦ "Unknown"ï¼ï¼å targetCode ä¿æä¸º null // æ¨ä¹å¯ä»¥å¨è¿éè®°å½æ¥å¿ææ§è¡å ¶ä»é误å¤ç // System.err.println("æ æ³å°å符串 Code 转æ¢ä¸ºæ°å: " + code); return null; // æè 卿¾ä¸å°å¹é çæ åµä¸è¿å null } } // else if (code instanceof Long) { ... æ¨ä¹å¯ä»¥æ·»å 对 Long ç±»åçæ¯æ } if (targetCode == null) { return null; } // 使ç¨è·åå°çæ´æ°å¼è¿è¡æ¥æ¾ for (E e : enumClass.getEnumConstants()) { if (e.getCode().equals(targetCode)) { return e; } } return null; } } src/main/java/com/ruoyi/common/enums/StockRecordTypeEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.common.enums; import lombok.Getter; /** * @author buhuazhen * @date 2025/11/3 * @email 3038525872@qq.com */ @Getter public enum StockRecordTypeEnum implements BaseEnum { CUSTOMIZATION_STOCK_IN(0, "èªå®ä¹å ¥åº"), CUSTOMIZATION_STOCK_OUT(1, "èªå®ä¹åºåº"), PRODUCTION_REPORT_STOCK_IN(2, "ç产æ¥å·¥-å ¥åº"), PRODUCTION_REPORT_STOCK_OUT(3, "ç产æ¥å·¥-åºåº"), PRODUCTION_SCRAP(4, "ç产æ¥å·¥-æ¥åº"), DEFECTIVE_SCRAP(5, "ä¸åæ ¼å¤ç-æ¥åº"), DEFECTIVE_PASS(6, "ä¸åæ ¼å¤ç-è®©æ¥æ¾è¡"), PURCHASE_STOCK_IN(7, "éè´-å ¥åº"), SALE_STOCK_OUT(8, "éå®-åºåº"); private final Integer code; private final String value; StockRecordTypeEnum(Integer code, String value) { this.code = code; this.value = value; } } src/main/java/com/ruoyi/common/utils/EnumUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,107 @@ package com.ruoyi.common.utils; import com.ruoyi.common.enums.BaseEnum; import com.ruoyi.common.enums.StockRecordTypeEnum; import java.util.*; import java.util.stream.Collectors; /** * éç¨æä¸¾å·¥å ·ç±» * éç¨äºææå®ç° BaseEnum æ¥å£çæä¸¾ * * @author Bu */ public class EnumUtil { /** * æ ¹æ® code è·åæä¸¾å®ä¾ */ public static <E extends Enum<E> & BaseEnum> E fromCode(Class<E> enumClass, int code) { for (E e : enumClass.getEnumConstants()) { if (e.getCode() == code) { return e; } } throw new IllegalArgumentException("æªç¥ç code: " + code + " å¯¹äºæä¸¾ " + enumClass.getSimpleName()); } public static <E extends Enum<E> & BaseEnum> E fromCodeHasNull(Class<E> enumClass, int code) { for (E e : enumClass.getEnumConstants()) { if (e.getCode() == code) { return e; } } return null; } public static <E extends Enum<E> & BaseEnum> E fromCodeHasDefault(Class<E> enumClass, int code,E defaultE) { for (E e : enumClass.getEnumConstants()) { if (e.getCode() == code) { return e; } } return defaultE; } /** * æ ¹æ® value è·åæä¸¾å®ä¾ */ public static <E extends Enum<E> & BaseEnum> E fromValue(Class<E> enumClass, String value) { for (E e : enumClass.getEnumConstants()) { if (Objects.equals(e.getValue(), value)) { return e; } } throw new IllegalArgumentException("æªç¥ç value: " + value + " å¯¹äºæä¸¾ " + enumClass.getSimpleName()); } /** * è·åæææä¸¾é¡¹å表 */ public static <E extends Enum<E> & BaseEnum> List<E> listAll(Class<E> enumClass) { return Arrays.asList(enumClass.getEnumConstants()); } /** * 转为 List<Map>ï¼éåè¿åç»åç«¯ï¼ * æ ¼å¼: [{ "code": 1, "value": "ç»çº¿" }, ...] */ public static <E extends Enum<E> & BaseEnum> List<Map<String, Object>> toList(Class<E> enumClass) { return Arrays.stream(enumClass.getEnumConstants()) .map(e -> { Map<String, Object> map = new HashMap<>(); map.put("key", e.getCode()); map.put("value", e.getValue()); return map; }) .collect(Collectors.toList()); } /** * 转为 Map<Integer, String> * æ ¼å¼: { 1: "ç»çº¿", 0: "æä¸" } */ public static <E extends Enum<E> & BaseEnum> Map<Integer, String> toMap(Class<E> enumClass) { return Arrays.stream(enumClass.getEnumConstants()) .collect(Collectors.toMap(BaseEnum::getCode, BaseEnum::getValue)); } public static void main(String[] args) { // â 1. æ ¹æ® code è·åæä¸¾ StockRecordTypeEnum status = EnumUtil.fromCode(StockRecordTypeEnum.class, 1); System.out.println(status.getValue()); // ç»çº¿ // â 2. 转æ list (éåå端) System.out.println(EnumUtil.toList(StockRecordTypeEnum.class)); // è¾åº: [{code=1, value=ç»çº¿}, {code=0, value=æä¸}] // â 3. 转æ map System.out.println(EnumUtil.toMap(StockRecordTypeEnum.class)); // è¾åº: {1=ç»çº¿, 0=æä¸} } } src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -2,6 +2,11 @@ import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper; import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.service.StockInventoryService; import com.ruoyi.stock.service.StockUninventoryService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -14,6 +19,8 @@ public class StockUtils { private final ProcurementRecordOutMapper procurementRecordOutMapper; private final ProcurementRecordMapper procurementRecordMapper; private final StockUninventoryService stockUninventoryService; private final StockInventoryService stockInventoryService; // è·åååå ¥åºæ°é,åºåºæ°é,å©ä½åºå public Map<String, BigDecimal> getStockQuantity(Long productModelId) { @@ -29,4 +36,68 @@ stockMap.put("stockQuantity", stockQuantity); return stockMap; } /** * ä¸åæ ¼å ¥åº * @param productModelId * @param quantity * @param recordType * @param recordId */ public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); stockUninventoryDto.setRecordId(recordId); stockUninventoryDto.setRecordType(recordType); stockUninventoryDto.setQualitity(quantity); stockUninventoryDto.setProductModelId(productModelId); stockUninventoryService.addStockUninventory(stockUninventoryDto); } /** * ä¸åæ ¼åºåº * @param productModelId * @param quantity * @param recordType * @param recordId */ public void subtractUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); stockUninventoryDto.setRecordId(recordId); stockUninventoryDto.setRecordType(recordType); stockUninventoryDto.setQualitity(quantity); stockUninventoryDto.setProductModelId(productModelId); stockUninventoryService.subtractStockUninventory(stockUninventoryDto); } /** * åæ ¼å ¥åº * @param productModelId * @param quantity * @param recordType * @param recordId */ public void addStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockInventoryDto stockInventoryDto = new StockInventoryDto(); stockInventoryDto.setRecordId(recordId); stockInventoryDto.setRecordType(recordType); stockInventoryDto.setQualitity(quantity); stockInventoryDto.setProductModelId(productModelId); stockInventoryService.addstockInventory(stockInventoryDto); } /** * åæ ¼åºåº * @param productModelId * @param quantity * @param recordType * @param recordId */ public void substractStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { StockInventoryDto stockInventoryDto = new StockInventoryDto(); stockInventoryDto.setRecordId(recordId); stockInventoryDto.setRecordType(recordType); stockInventoryDto.setQualitity(quantity); stockInventoryDto.setProductModelId(productModelId); stockInventoryService.subtractStockInventory(stockInventoryDto); } } src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -18,6 +18,7 @@ import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.pojo.StockUninventory; import com.ruoyi.stock.service.StockInRecordService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,12 +26,11 @@ import java.util.List; @Service @AllArgsConstructor public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService { @Autowired private StockInRecordMapper stockInRecordMapper; @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private StockUninventoryMapper stockUninventoryMapper; @Override src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -15,6 +15,7 @@ import com.ruoyi.stock.service.StockInventoryService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.stock.service.StockOutRecordService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,14 +29,11 @@ * @since 2026-01-21 04:16:36 */ @Service @AllArgsConstructor public class StockInventoryServiceImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryService { @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private StockInRecordService stockInRecordService; @Autowired private StockOutRecordService stockOutRecordService; @Override src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -18,6 +18,7 @@ import com.ruoyi.stock.pojo.StockOutRecord; import com.ruoyi.stock.pojo.StockUninventory; import com.ruoyi.stock.service.StockOutRecordService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,12 +33,10 @@ * @since 2026-01-21 05:27:04 */ @Service @AllArgsConstructor public class StockOutRecordServiceImpl extends ServiceImpl<StockOutRecordMapper, StockOutRecord> implements StockOutRecordService { @Autowired private StockOutRecordMapper stockOutRecordMapper; @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private StockUninventoryMapper stockUninventoryMapper; @Override src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -14,6 +14,7 @@ import com.ruoyi.stock.service.StockOutRecordService; import com.ruoyi.stock.service.StockUninventoryService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,6 +27,7 @@ * @since 2026-01-22 10:17:45 */ @Service @AllArgsConstructor public class StockUninventoryServiceImpl extends ServiceImpl<StockUninventoryMapper, StockUninventory> implements StockUninventoryService { private StockUninventoryMapper stockUninventoryMapper;