From 78d73df2f8e0c6855d65eb1f2c6df08e0f99bab1 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 22 十月 2025 12:45:05 +0800
Subject: [PATCH] 仓储后端接口返回信息国际化处理

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java |  137 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 117 insertions(+), 20 deletions(-)

diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
index 510c58f..582ac35 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -19,9 +19,13 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -43,6 +47,12 @@
     @Autowired(required = false)
     MiloService miloService;
 
+    @Resource
+    private MessageSource messageSource;
+
+    // 鍚婅浣�
+    private static final Integer LEFTING_01 = 99;
+
     @Override
     public boolean deleteRawGlassStorageDetails(String device_id) {
         QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
@@ -59,28 +69,58 @@
         return list();
     }
 
-
+    // 绌烘灦瀛愬埌鍚婅浣�
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public String warehousingRequest(int leftingStation) {
         RawGlassStorageDetails storageDetails = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                 .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN_ALL)
-                .eq(RawGlassStorageDetails::getSlot, leftingStation));
+                .eq(RawGlassStorageDetails::getSlot, leftingStation)
+                // 娣诲姞琛岄攣锛屽叾浠栬姹傞渶绛夊緟閿侀噴鏀�
+                .last("FOR UPDATE"));
+
         if (null != storageDetails) {
             log.info("褰撳墠鍚婅浣嶆湁鏋跺瓙锛岀粨鏉熸湰鍦板叆搴撹姹�");
-            return "fail";
+            return messageSource.getMessage(
+                    "rawglass.warehousing.slot.occupied",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
         }
+
         List<RawGlassStorageDetails> shelfList = listBySlotState(Const.RAW_GLASS_DEVICE, Const.RAW_GLASS_STATE_IN_ALL);
         if (CollectionUtils.isEmpty(shelfList)) {
             log.info("褰撳墠宸ヤ綅涓嶅瓨鍦ㄥ彲鐢ㄧ殑绌烘灦瀛�");
-            return "fail";
+            return messageSource.getMessage(
+                    "rawglass.no.empty.shelf",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
         }
+
+        if (rawGlassStorageTaskService.count(new LambdaQueryWrapper<RawGlassStorageTask>()
+                .eq(RawGlassStorageTask::getEndSlot, leftingStation)
+                .in(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW, Const.RAW_GLASS_TASK_RUNNING)) > 0) {
+
+            log.info("鍚婅浣� {} 宸叉湁鏈畬鎴愪换鍔★紝鎷掔粷閲嶅涓嬪彂", leftingStation);
+            return messageSource.getMessage(
+                    "rawglass.warehousing.task.exists",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
+        }
+
         Integer shelf = shelfList.get(0).getSlot();
         Integer deviceId = shelfList.get(0).getDeviceId();
         log.info("鐢熸垚浠诲姟");
         try {
             generateTask(shelf, leftingStation, shelf, 0, Const.RAW_GLASS_TASK_TYPE_IN_REQUEST);
         } catch (Exception e) {
-            return "fail";
+            return messageSource.getMessage(
+                    "rawglass.task.generate.error",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
         }
         //鐢熸垚涓�鏉¤鎯呮暟鎹�  浠呰褰曟灦瀛愮姸鎬�
         RawGlassStorageDetails details = new RawGlassStorageDetails();
@@ -92,13 +132,24 @@
         return "success";
     }
 
+    /**
+     * 鍘熺墖鍏ュ簱
+     *
+     * @param request
+     * @return
+     */
     @Override
     public String patternWarehousing(RawGlassRequest request) {
         RawGlassStorageDetails glassStorageDetails = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                 .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
                 .eq(RawGlassStorageDetails::getSlot, request.getSlot()));
         if (null == glassStorageDetails) {
-            log.info("褰撳墠鍚婅浣嶆病鏈夋灦瀛�");
+            log.info("褰撳墠宸ヤ綅涓嶅瓨鍦ㄥ彲鐢ㄧ殑鏋跺瓙");
+            return messageSource.getMessage(
+                    "rawglass.no.empty.shelf",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
         }
         //鍘熺墖淇℃伅瀛樺叆璇︽儏琛�
         BeanUtils.copyProperties(request, glassStorageDetails);
@@ -138,13 +189,51 @@
         return "success";
     }
 
+    // 鍑哄簱
     @Override
     public String outWarehousing(Long slotId) {
-        update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, slotId)
-                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)
+        // 1. 妫�鏌ュ綋鍓嶆灦瀛愮姸鎬�
+        RawGlassStorageDetails details = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
+                .eq(RawGlassStorageDetails::getSlot, slotId)
+                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
+        if (details == null) {
+            log.info("鏋跺瓙鐘舵�佸紓甯革紝鏃犳硶鎵ц鍑哄簱鎿嶄綔");
+            return messageSource.getMessage(
+                    "rawglass.outWarehousing.error",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
+        }
+
+        // 2. 灏嗘灦瀛愮姸鎬佹敼涓衡�滃緟鍑哄簱鈥濓紙鏍囪涓哄彲鎵ц锛�
+        update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
+                .eq(RawGlassStorageDetails::getSlot, slotId)
                 .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT));
-        //鐢熸垚涓�鏉¤鎯呮暟鎹�  浠呰褰曟灦瀛愮姸鎬�
-        return "success";
+
+        // 3. 鐩存帴鐢熸垚鍑哄簱浠诲姟锛堝叧閿細鍦ㄩ〉闈㈢偣鍑绘椂灏卞垱寤轰换鍔¤褰曪級
+        try {
+            // 璧峰浣嶏細浠撳簱瀛樺偍浣嶏紙slotId锛夛紝鐩爣浣嶏細鍚婅浣�99
+            generateTask(
+                    slotId.intValue(),          // 璧峰浣嶏細浠撳簱瀛樺偍浣嶏紙slotId锛�
+                    LEFTING_01,                 // 鐩爣浣嶏細鍚婅浣�99
+                    slotId.intValue(),          // 鏋跺瓙鍙�
+                    details.getRemainQuantity(), // 鏁伴噺
+                    Const.RAW_GLASS_TASK_TYPE_OUT // 浠诲姟绫诲瀷锛氬嚭搴�
+            );
+            log.info("鍑哄簱浠诲姟鐢熸垚鎴愬姛锛屾灦瀛愶細{}锛岀洰鏍囦綅锛歿}", slotId, LEFTING_01);
+            return "success";
+        } catch (Exception e) {
+            log.error("鐢熸垚鍑哄簱浠诲姟澶辫触", e);
+            // 澶辫触鏃跺洖婊氱姸鎬�
+            update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
+                    .eq(RawGlassStorageDetails::getSlot, slotId)
+                    .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN));
+            return messageSource.getMessage(
+                    "rawglass.task.generate.error",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
+        }
     }
 
     @Override
@@ -152,15 +241,19 @@
         return baseMapper.listBySlotState(liftingStation, state);
     }
 
-
+    // 鍥炲簱
     @Override
     public String outWarehousingRequest(int leftingStation) {
         //瀵瑰簲宸ヤ綅鏄惁鏈夌┖鏋跺瓙
         RawGlassStorageDetails details = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
                 .eq(RawGlassStorageDetails::getSlot, leftingStation));
         if (null == details) {
-            log.info("鏃犵┖鏋跺瓙锛岀粨鏉熸湰鍦板嚭鐗囪姹�");
-            return "fail";
+            log.info("鏃犵┖鏋跺瓙锛岀粨鏉熷洖搴撲换鍔�");
+            return messageSource.getMessage(
+                    "rawglass.no.empty.shelf",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
         }
         //鐢熸垚涓�鏉¤鎯呮暟鎹�  浠呰褰曟灦瀛愮姸鎬�
         update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
@@ -168,9 +261,13 @@
                 .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
                 .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
         try {
-            generateTask(leftingStation, details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT_REQUEST);
+            generateTask(leftingStation, details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
         } catch (Exception e) {
-            return "fail";
+            return messageSource.getMessage(
+                    "rawglass.task.generate.error",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
         }
         return "success";
     }
@@ -195,11 +292,11 @@
                 .shelf(shelf)
                 .createTime(new Date()).build();
         rawGlassStorageTaskService.save(task);
-        List<ReadWriteEntity> list = new ArrayList<>();
-        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
-        list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot));
-        list.add(generateReadWriteEntity("CC.CC.endSlot", endSlot));
-        miloService.writeToOpcWord(list);
+//        List<ReadWriteEntity> list = new ArrayList<>();
+//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
+//        list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot));
+//        list.add(generateReadWriteEntity("CC.CC.endSlot", endSlot));
+//        miloService.writeToOpcWord(list);
         return Boolean.TRUE;
     }
 

--
Gitblit v1.8.0