Browse Source

添加AGV坐标回调,库位同步接口

zhifei 1 year ago
parent
commit
9f58d58cc9

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/base/BaseLocationInfoController.java

@@ -139,4 +139,12 @@ public class BaseLocationInfoController extends BaseController {
         ExcelUtil<BaseLocationInfo> util = new ExcelUtil<>(BaseLocationInfo.class);
         util.importTemplateExcel(response, "库位信息");
     }
+
+    @PostMapping("/syncLocStatus")
+    public AjaxResult syncLocStatus(@RequestBody List<BaseLocationInfo> locationInfoList) {
+        if (locationInfoList.size()==0){
+            return  AjaxResult.error("库位不能为空");
+        }
+        return  baseLocationInfoService.syncLocStatus(locationInfoList);
+    }
 }

+ 6 - 18
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/tianao/TianaoApiContoller.java

@@ -1,30 +1,14 @@
 package com.ruoyi.web.controller.warewms.tianao;
 
-import cn.hutool.core.util.ObjectUtil;
-import com.ruoyi.ams.task.domain.WcsTask;
-import com.ruoyi.ams.task.form.AddTaskForm;
-import com.ruoyi.ams.task.service.IWcsTaskService;
-import com.ruoyi.base.constant.Constant;
-import com.ruoyi.base.domain.BaseLocationInfo;
-import com.ruoyi.base.service.IBaseLocationInfoService;
-import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.model.LoginUser;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.tianao.domian.TianaoTask;
 import com.ruoyi.tianao.service.TianaoService;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-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.Date;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * Created with IntelliJ IDEA.
@@ -45,6 +29,11 @@ public class TianaoApiContoller extends BaseController {
     @Autowired
     private TianaoService tianaoService;
 
+    /**
+     * 任务管理接口
+     * @param tianaoTask
+     * @return
+     */
     @PostMapping(value = "/addTask")
     public AjaxResult addTestTask(@Validated @RequestBody TianaoTask tianaoTask) {
         if ("0".equals(tianaoTask.getTaskType())){
@@ -59,5 +48,4 @@ public class TianaoApiContoller extends BaseController {
         return AjaxResult.error("任务类型不存在");
     }
 
-
 }

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

@@ -118,6 +118,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/tianao/**").permitAll()
                 // 库位视图
                 .antMatchers("/ams/locationView/**").permitAll()
+                //库位同步
+                .antMatchers("/base/locationInfo/syncLocStatus").permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 8 - 0
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/SocketBufferServiceImpl.java

@@ -1,12 +1,15 @@
 package com.ruoyi.ams.agv.ndc.service.impl;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.agv.ndc.common.Aci;
 import com.ruoyi.ams.agv.ndc.common.ByteUtil;
 import com.ruoyi.ams.agv.ndc.domain.AmsNdcEvent;
 import com.ruoyi.ams.agv.ndc.domain.AmsTask;
+import com.ruoyi.ams.agv.ndc.entity.CarStatus;
 import com.ruoyi.ams.agv.ndc.entity.Order;
 import com.ruoyi.ams.agv.ndc.service.*;
+import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
 import com.ruoyi.common.core.redis.RedisCache;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -116,6 +119,11 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                 //xy轴位置
                 //car.setX(251770 - ByteUtil.getUnsignedShort(parameters, 6) * 10);
                 //car.setY(96620 - ByteUtil.getUnsignedShort(parameters, 14) * 10);
+                CarStatus carStatus = new CarStatus();
+                carStatus.setCarNo(carNo);
+                carStatus.setX(251770 - ByteUtil.getUnsignedShort(parameters, 6) * 10);
+                carStatus.setY(96620 - ByteUtil.getUnsignedShort(parameters, 14) * 10);
+                SpringUtil.getApplicationContext().publishEvent(carStatus);
                 //car.update();
                 break;
         }

+ 2 - 0
warewms-base/src/main/java/com/ruoyi/base/mapper/BaseLocationInfoMapper.java

@@ -249,4 +249,6 @@ public interface BaseLocationInfoMapper {
      * @return
      */
     List<BaseLocationGuiDTO> queryByListAllInvLotAttView(@Param("zoneId") String zoneId, @Param("sort") String sort);
+
+    int updateAddress(BaseLocationInfo baseLocationInfo);
 }

+ 2 - 0
warewms-base/src/main/java/com/ruoyi/base/service/IBaseLocationInfoService.java

@@ -299,4 +299,6 @@ public interface IBaseLocationInfoService {
      * @return
      */
     AjaxResult importLocation(List<BaseLocationInfo> list, boolean updateSupport, String opname);
+
+    AjaxResult syncLocStatus(List<BaseLocationInfo> locationInfoList);
 }

+ 14 - 0
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseLocationInfoServiceImpl.java

@@ -422,4 +422,18 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
         }
         return AjaxResult.success(successMsg);
     }
+
+    @Override
+    public AjaxResult syncLocStatus(List<BaseLocationInfo> locationInfoList) {
+        try {
+            for (BaseLocationInfo baseLocationInfo : locationInfoList) {
+                baseLocationInfo.setUpdateTime(DateUtils.getNowDate());
+                baseLocationInfoMapper.updateAddress(baseLocationInfo);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage());
+            return AjaxResult.error("库位同步失败,请联系管理员");
+        }
+        return AjaxResult.success();
+    }
 }

+ 3 - 0
warewms-base/src/main/resources/mapper/base/BaseLocationInfoMapper.xml

@@ -359,6 +359,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateLocationStockStatus">
         update base_location_info set stock_status = #{status} where id = #{id}
     </update>
+    <update id="updateAddress">
+        update base_location_info set is_empty = #{isEmpty} where location_no = #{locationNo}
+    </update>
 
     <select id="checkIsRepeat" parameterType="BaseLocationInfo" resultMap="BaseLocationInfoResult">
         select * from base_location_info b

+ 1 - 0
warewms-tianao/src/main/java/com/ruoyi/tianao/service/TianaoService.java

@@ -19,4 +19,5 @@ public interface TianaoService {
     AjaxResult cancelTask(TianaoTask tianaoTask);
 
     AjaxResult updateTask(TianaoTask tianaoTask);
+
 }

+ 29 - 7
warewms-tianao/src/main/java/com/ruoyi/tianao/service/impl/TianaoServiceImpl.java

@@ -2,7 +2,9 @@ package com.ruoyi.tianao.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.ams.agv.ndc.domain.AmsTask;
+import com.ruoyi.ams.agv.ndc.entity.CarStatus;
 import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
 import com.ruoyi.ams.agv.ndc.service.StatusUpdateService;
 import com.ruoyi.ams.task.domain.WcsTask;
@@ -57,7 +59,9 @@ public class TianaoServiceImpl implements TianaoService {
     @Autowired
     private IAmsTaskService amsTaskService;
 
-    private final String  backUrl = "" ;
+    private final String  taskBackUrl = "" ;
+
+    private final String  AGVStatusBackUrl = "" ;
 
     private final List<Long> statusLsit = Arrays.asList(11L,12L,5L,6L,7L);
 
@@ -142,16 +146,34 @@ public class TianaoServiceImpl implements TianaoService {
         return AjaxResult.success("卸货点修改成功");
     }
 
+    @EventListener
+    @Async
+    public String getAGVCoordinate(CarStatus car) {
+        System.out.println(String.format("叉车信息:%s", car));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("carNo",car.getCarNo());
+        jsonObject.put("y",car.getY());
+        jsonObject.put("x",car.getX());
+        String body = HttpRequest.post(AGVStatusBackUrl)
+                .form(jsonObject)
+                .contentType("application/json").execute().body();
+        System.out.println(String.format("回调结果:%s", body));
+        return body;
+    }
+
     @EventListener
     @Async
     public void tianaoCallBack(WcsTask wcsTask){
         if (StringUtils.isNotEmpty(wcsTask.getExt7())){
-            String body = HttpRequest.post(backUrl)
-                    .form("lcsTaskId", wcsTask.getExt7())
-                    .form("containerNo", wcsTask.getExt8())
-                    .form("task_type", wcsTask.getBusinessType())
-                    .form("task_status", wcsTask.getState())
-                    .form("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date())).execute().body();
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("lcsTaskId", wcsTask.getExt7());
+            jsonObject.put("containerNo", wcsTask.getExt8());
+            jsonObject.put("task_type", wcsTask.getBusinessType());
+            jsonObject.put("task_status", wcsTask.getState());
+            jsonObject.put("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
+            String body = HttpRequest.post(taskBackUrl)
+                    .form(jsonObject)
+                    .contentType("application/json").execute().body();
             System.out.println(String.format("回调结果:%s", body));
         }
     }