Browse Source

按钮盒对接

andy 2 năm trước cách đây
mục cha
commit
f0a49a3da2

+ 58 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wcs/WcsController.java

@@ -0,0 +1,58 @@
+package com.ruoyi.web.controller.warewms.wcs;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.ams.agv.ndc.domain.AmsTask;
+import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
+import com.ruoyi.ams.business.IBusinessService;
+import com.ruoyi.ams.task.domain.WcsTask;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.web.form.BtnOpForm;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+@Slf4j
+@RestController
+@RequestMapping("/wcs/ctl")
+public class WcsController {
+
+    @Autowired
+    private RedisCache redisCache;
+    @Autowired
+    private IAmsTaskService amsTaskService;
+    @Autowired
+    private IBusinessService businessService;
+
+    @PostMapping("/btnOp")
+    public AjaxResult add(@RequestBody BtnOpForm btnOpForm) {
+        log.info("按钮盒请求------------------------》" + JSON.toJSONString(btnOpForm));
+        if (redisCache.tryLock(btnOpForm.getIp() + btnOpForm.getOpType(), 15)) {
+            log.info("交管操作执行");
+            //1: 192.168.77.105
+            //2: 192.168.77.104
+            String op = "";
+            String businessType = "";
+            if (btnOpForm.getOpType().equals("CLOSE")) {
+                businessType = "74";
+            } else if (btnOpForm.getOpType().equals("OPEN")) {
+                businessType = "75";
+            }
+            if (btnOpForm.getIp().equals("192.168.77.105")) {
+                op = "1";
+            } else if (btnOpForm.getIp().equals("192.168.77.104")) {
+                op = "2";
+            }
+            WcsTask wcsTask = new WcsTask();
+            wcsTask.setBusinessType(businessType);
+            wcsTask.setPriority(1L);
+            wcsTask.setExt1(op);
+            wcsTask.setTaskNo(System.currentTimeMillis() + "");
+            businessService.sendTask(wcsTask);
+        }
+        return AjaxResult.success("");
+    }
+}

+ 9 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/form/BtnOpForm.java

@@ -0,0 +1,9 @@
+package com.ruoyi.web.form;
+
+import lombok.Data;
+
+@Data
+public class BtnOpForm {
+    private String ip;
+    private String opType;
+}

+ 16 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java

@@ -8,6 +8,7 @@ import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 import com.ruoyi.common.exception.ServiceException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.BoundSetOperations;
 import org.springframework.data.redis.core.HashOperations;
@@ -255,4 +256,19 @@ public class RedisCache {
     public Collection<String> keys(final String pattern) {
         return redisTemplate.keys(pattern);
     }
+
+    /**
+     * 尝试锁定时间
+     * @param key
+     * @param time
+     * @return
+     */
+    public boolean tryLock(String key, int time) {
+        if (redisTemplate.opsForValue().setIfAbsent(key, key)) {
+            redisTemplate.expire(key, time, TimeUnit.SECONDS);
+            return true;
+        } else {
+            return false;
+        }
+    }
 }

+ 1 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -112,6 +112,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/webjars/**").anonymous()
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/druid/**").anonymous()
+                .antMatchers("/wcs/**").anonymous()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/common/ByteUtil.java

@@ -216,7 +216,7 @@ public class ByteUtil {
 
 
     public static void main(String[] args) {
-        String str = "001205";
+        String str = "FFFF0008FF00";
         byte[] bytes = DatatypeConverter.parseHexBinary(str);
         System.out.println((bytes[3] & 0xff));
         //System.out.println(ByteUtil.getUnsignedShort(bytes,4));

+ 26 - 23
warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java

@@ -620,8 +620,14 @@ public class BusinessServiceImpl implements IBusinessService {
 
     @Override
     public AjaxResult sendTask(WcsTask wcsTask) {
-        BaseLocationInfo locFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID);
-        BaseLocationInfo locTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationTo(), Constant.WAREHOUSE_ID);
+        BaseLocationInfo locFrom = null;
+        BaseLocationInfo locTo = null;
+        if (!StringUtils.isEmpty(wcsTask.getLocationFrom())) {
+            locFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID);
+        }
+        if (!StringUtils.isEmpty(wcsTask.getLocationTo())) {
+            locTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationTo(), Constant.WAREHOUSE_ID);
+        }
         AmsTask amsTask = new AmsTask();
         amsTask.setTaskNo(wcsTask.getTaskNo());
         if (wcsTask.getBusinessType() == null || wcsTask.getBusinessType().equals("")) {
@@ -637,31 +643,26 @@ public class BusinessServiceImpl implements IBusinessService {
         } else {
             amsTask.setPriority(1);
         }
-        amsTask.setStFrom(locFrom.getAgvStation().intValue());
-        amsTask.setStTo(locTo.getAgvStation().intValue());
+        if (locFrom != null) {
+            amsTask.setStFrom(locFrom.getAgvStation().intValue());
+        } else {
+            amsTask.setStFrom(0);
+        }
+        if (locTo != null) {
+            amsTask.setStTo(locTo.getAgvStation().intValue());
+        } else {
+            amsTask.setStTo(0);
+        }
         amsTask.setExt1(wcsTask.getExt1());
         amsTask.setExt2(wcsTask.getExt2());
         amsTask.setExt3(wcsTask.getExt3());
-        if (wcsTask.getBusinessType().equals("m")) {
-            //m类消息特殊处理
-            wcsTask.setState(2L);
-            int result = wcsTaskService.updateWcsTask(wcsTask);
-            if (result > 0) {
-                //更新
-                return AjaxResult.success("下发成功");
-            } else {
-                return AjaxResult.error("下发失败");
-            }
+        int result = amsTaskService.insertAmsTask(amsTask);
+        if (result > 0) {
+            //更新
+            return AjaxResult.success("下发成功");
         } else {
-            int result = amsTaskService.insertAmsTask(amsTask);
-            if (result > 0) {
-                //更新
-                return AjaxResult.success("下发成功");
-            } else {
-                return AjaxResult.error("下发失败");
-            }
+            return AjaxResult.error("下发失败");
         }
-
     }
 
     @Override
@@ -677,7 +678,9 @@ public class BusinessServiceImpl implements IBusinessService {
             for (WcsTask wcsTask : wcsTaskList) {
                 //如果是充电任务直接下发
                 if (wcsTask.getBusinessType().equals(Constant.TASK_BUSINESS_TYPE.TASK_POWER.getValue()) ||
-                        wcsTask.getBusinessType().equals(Constant.TASK_BUSINESS_TYPE.TASK_m.getValue())) {
+                        wcsTask.getBusinessType().equals(Constant.TASK_BUSINESS_TYPE.TASK_m.getValue()) ||
+                        wcsTask.getBusinessType().equals(Constant.TASK_BUSINESS_TYPE.TASK_74.getValue())
+                ) {
                     log.info("定时充电/盘点取消任务直接下发");
                     sendTask(wcsTask);
                     wcsTask.setState(2L);

+ 2 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -91,6 +91,8 @@ public class Constant {
          * m
          */
         TASK_m("m"),
+        //交通管制
+        TASK_74("74"),
         /**
          * 暂停
          */