From 6d6a1b26fcdad0ae743a6e99c8f321969bd2345f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 12 五月 2025 16:26:16 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx                                   |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java         |   77 +++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java          |   18 ++++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java                  |    9 +++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java        |   45 +++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java |    4 +
 6 files changed, 154 insertions(+), 1 deletions(-)

diff --git a/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx b/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
index 172f17c..6509b57 100644
--- a/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
+++ b/rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -140,7 +140,7 @@
                         label="table.field.basStation.outAble"
                         render={record => record.inAble === 1 ? '鏄�' : '鍚�'}
                     />
-                    <TextField source="useStatus" label="table.field.basStation.useStatus" />
+                    <TextField source="useStatus$" label="table.field.basStation.useStatus" />
                     <NumberField source="area$" label="table.field.basStation.area" />                    
                     <FunctionField
                         source="isCrossZone"
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java
new file mode 100644
index 0000000..f436604
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/AgvController.java
@@ -0,0 +1,45 @@
+package com.vincent.rsf.server.api.controller.pda;
+
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.service.AgvService;
+import com.vincent.rsf.server.system.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+import java.util.Objects;
+
+@Api(tags = "PDA鎿嶄綔鎺ュ彛")
+@RequestMapping("/pda")
+@RestController
+public class AgvController extends BaseController {
+
+    @Autowired
+    private AgvService agvService;
+
+    @PreAuthorize("hasAuthority('manager:basStation:list')")
+    @ApiOperation("鑾峰彇鎷栫洏鏄庣粏")
+    @PostMapping("/AGV/staBind")
+    public R getAGVStaBind(@RequestBody Map<String, Object> params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return agvService.getAGVStaBind(params);
+    }
+
+    @PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
+    @ApiOperation("鑾峰彇鎷栫洏鏄庣粏")
+    @PostMapping("/AGV/staUnBind")
+    public R getAGVStaUnBind(@RequestBody Map<String, Object> params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return agvService.getAGVStaBind(params);
+    }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
new file mode 100644
index 0000000..5f12328
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
@@ -0,0 +1,9 @@
+package com.vincent.rsf.server.api.service;
+
+import com.vincent.rsf.framework.common.R;
+
+import java.util.Map;
+
+public interface AgvService {
+    R getAGVStaBind(Map<String, Object> params);
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
new file mode 100644
index 0000000..3e87aed
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -0,0 +1,77 @@
+package com.vincent.rsf.server.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.service.AgvService;
+import com.vincent.rsf.server.manager.entity.BasStation;
+import com.vincent.rsf.server.manager.entity.WaitPakin;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
+import com.vincent.rsf.server.manager.enums.StaUseStatusType;
+import com.vincent.rsf.server.manager.service.BasStationService;
+import com.vincent.rsf.server.manager.service.WaitPakinService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class AgvServiceImpl implements AgvService {
+
+    @Autowired
+    private WaitPakinService waitPakinService;
+    @Autowired
+    private BasStationService basStationService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R getAGVStaBind(Map<String, Object> params) {
+        String barcode = params.get("barcode").toString();
+        String sta = params.get("sta").toString();
+        //楠岃瘉鍩虹淇℃伅
+        BasStation basStation = checkStaStatus(barcode, sta);
+        //鏇存柊绔欑偣鐘舵��
+        basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
+        basStation.setBarcode(barcode);
+        if (!basStationService.updateById(basStation)){
+            throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
+        }
+        return R.ok("缁戝畾鎴愬姛");
+    }
+
+    private BasStation checkStaStatus(String barcode, String sta){
+        if (Cools.isEmpty(barcode)){
+            throw new CoolException("瀹瑰櫒鐮佷笉鑳戒负绌�");
+        }
+        if (Cools.isEmpty(sta)){
+            throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
+        }
+        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+                .eq(WaitPakin::getBarcode, barcode)
+                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
+        );
+        if (Cools.isEmpty(waitPakin)){
+            throw new CoolException("瀹瑰櫒鐮佹湭鎵惧埌缁勬墭淇℃伅,璇锋鏌ョ粍鎵樼姸鎬�");
+        }
+        BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                        .eq(BasStation::getBarcode, barcode)
+                ,false
+        );
+        if (!Cools.isEmpty(isBarcodeSta)){
+            throw new CoolException("璇ユ潯鐮佸凡琚�"+isBarcodeSta.getStationName()+"绔欑粦瀹�");
+        }
+        BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                .eq(BasStation::getStationName, sta)
+        );
+        if (Cools.isEmpty(basStation)){
+            throw new CoolException("鏈壘鍒扮珯鐐逛俊鎭�");
+        }
+        if (!basStation.getUseStatus().equals("O")){
+            throw new CoolException("绔欑偣鐘舵�佷笉涓虹┖闂�");
+        }
+        return basStation;
+    }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
index 6bea7f0..7a5e03e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
@@ -80,6 +80,10 @@
         basStation.setCreateTime(new Date());
         basStation.setUpdateBy(getLoginUserId());
         basStation.setUpdateTime(new Date());
+        BasStation serviceOne = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, basStation.getStationName()));
+        if (!Cools.isEmpty(serviceOne)) {
+            return R.error(basStation.getStationName()+"绔欏凡琚垵濮嬪寲");
+        }
         if (!basStationService.save(basStation)) {
             return R.error("淇濆瓨澶辫触");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
new file mode 100644
index 0000000..4a14128
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
@@ -0,0 +1,18 @@
+package com.vincent.rsf.server.manager.enums;
+
+public enum StaUseStatusType {
+    //璁㈠崟绫诲瀷
+    TYPE_O("O", "绌洪棽"),
+    TYPE_F("F", "鍗犵敤"),
+    TYPE_X("X", "绂佺敤"),
+
+    ;
+
+    StaUseStatusType(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    public String type;
+    public String desc;
+}

--
Gitblit v1.9.1