Ver código fonte

金银花搭建

zhangxin 1 ano atrás
pai
commit
14ce772d80
18 arquivos alterados com 389 adições e 196 exclusões
  1. 8 1
      warewms-ams/src/main/java/com/warewms/ams/common/AmsConstant.java
  2. 107 105
      warewms-ams/src/main/java/com/warewms/ams/ndc/AciService.java
  3. 13 5
      warewms-ams/src/main/java/com/warewms/ams/ndc/controller/AmsTaskController.java
  4. 3 5
      warewms-ams/src/main/java/com/warewms/ams/ndc/controller/BaseLocationInfoController.java
  5. 77 5
      warewms-ams/src/main/java/com/warewms/ams/ndc/domain/AmsTask.java
  6. 3 0
      warewms-ams/src/main/java/com/warewms/ams/ndc/domain/BaseLocationInfo.java
  7. 20 0
      warewms-ams/src/main/java/com/warewms/ams/ndc/dto/AmsTaskCancelToWmsDTO.java
  8. 5 1
      warewms-ams/src/main/java/com/warewms/ams/ndc/dto/AmsTaskDTO.java
  9. 0 1
      warewms-ams/src/main/java/com/warewms/ams/ndc/dto/BaseLocationInfoDTO.java
  10. 45 0
      warewms-ams/src/main/java/com/warewms/ams/ndc/dto/BaseLocationInfoInsertDTO.java
  11. 7 4
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/IAmsTaskService.java
  12. 2 0
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/IBaseLocationInfoService.java
  13. 4 15
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/AmsHexdefineDetailServiceImpl.java
  14. 65 15
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/AmsTaskServiceImpl.java
  15. 20 7
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/BaseLocationInfoServiceImpl.java
  16. 7 3
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/SocketBufferServiceImpl.java
  17. 2 28
      warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/StatusUpdateServiceImpl.java
  18. 1 1
      warewms-ams/src/main/resources/application-dev.yml

+ 8 - 1
warewms-ams/src/main/java/com/warewms/ams/common/AmsConstant.java

@@ -21,12 +21,19 @@ public class AmsConstant {
      * agv点位缓存key
      */
     public static final String WMS_CORRESPOND_AGV_STATION_KEY = "wms_correspond_agv_station:";
-
+    /**
+     * agv点位缓存key
+     */
+    public static final String AGV_TO_PILLING_CAR_KEY = "agv_to_piling_car:";
     /**
      * 区域信息缓存key
      */
     public static final String LOCATION_ROW_KEY = "location_row:";
 
+    public static final String WMS_URL = "http://localhost:28080/erp/execResult";
+
+    public static final String AMS_SYS_NAME = "AMS";
+
     /**
      * 是否下发NDC
      */

+ 107 - 105
warewms-ams/src/main/java/com/warewms/ams/ndc/AciService.java

@@ -12,19 +12,16 @@ import com.warewms.ams.ndc.entity.Order;
 import com.warewms.ams.ndc.service.IAmsHexdefineDetailService;
 import com.warewms.ams.ndc.service.IAmsTaskService;
 import com.warewms.ams.ndc.service.SocketBufferService;
-import com.warewms.common.exception.base.BaseException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.nio.ByteBuffer;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
 import java.nio.channels.SocketChannel;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -40,13 +37,9 @@ public class AciService {
 
     private static final int BUFF_SIZE = 2048;
 
-    private static final String IP = "127.0.0.1";
+    private static final String IP_ADDR = "127.0.0.1";
 
-    private Selector selector;
-
-    private SocketChannel socketChannel;
-
-    private static final int PORT = 30002;
+    private static final int IP_PORT = 30002;
 
     @Autowired
     private SocketBufferService socketBufferService;
@@ -55,31 +48,35 @@ public class AciService {
     @Autowired
     private IAmsHexdefineDetailService amsHexdefineDetailService;
 
-    public void init() throws IOException {
-        selector = Selector.open();
-        try {
-            socketChannel = socketChannel.open(new InetSocketAddress(IP, PORT));
-            socketChannel.configureBlocking(false);
-            socketChannel.register(selector, SelectionKey.OP_READ);
-        } catch (Exception exception) {
-            log.warn("AciService socketChannel open is on error");
-            try {
-                Thread.currentThread().sleep(3000);
-            }catch (InterruptedException e) {
-                throw new BaseException(e.getMessage());
-            }
-            init();
-        }
-    }
-
     @SuppressWarnings("InfiniteLoopStatement")
     public void start() throws IOException {
-        init();
-        readInfo();
+
+        String ip_addr = IP_ADDR; //redisUtils.get(RedisEnum.NDC_IP.getMessage());
+        int ip_port = IP_PORT; //redisUtils.getInt(RedisEnum.NDC_PORT.getMessage());
+
+        SocketChannel socketChannel = SocketChannel.open();
+        socketChannel.configureBlocking(false); // 解决了IO阻塞
         while (true) {
+
             try {
+                //链接服务端Socket
+                if (!socketChannel.isConnected()) {
+                    if (!socketChannel.isOpen()) {
+                        socketChannel = SocketChannel.open();
+                        socketChannel.configureBlocking(false); // 解决了IO阻塞
+                    }
+                    // 非阻塞模式下 这段代码并不是等到连接建立之后再往下执行
+                    SocketAddress socketAddress = new InetSocketAddress(ip_addr, ip_port);
+                    socketChannel.connect(socketAddress);
+                    Thread.sleep(2000);
+                    if (socketChannel.isConnectionPending()) {
+                        socketChannel.finishConnect();
+                    }
+                }
+
                 ByteBuffer buffer = ByteBuffer.allocate(BUFF_SIZE);
                 buffer.clear();
+
                 //删除指令
                 AmsTask taskBean = new AmsTask();
                 taskBean.setIsDelete(1);
@@ -135,6 +132,7 @@ public class AciService {
                 if (taskBeans != null && taskBeans.size() > 0) {
 
                     for (AmsTask t : taskBeans) {
+                        t.init();
                         List<AmsHexdefineDetail> basTask = amsHexdefineDetailService.selectAmsHexdefineDetailByBusinessType(t.getBusinessType());
                         if (basTask == null || basTask.size() == 0) {
                             t.setIsDelete(1);
@@ -142,97 +140,101 @@ public class AciService {
                             log.info("任务类型未定义------" + JSON.toJSONString(t));
                             continue;
                         }
-
-                            String order = amsHexdefineDetailService.concatOrder(t, basTask);
-                            log.info("writeOrder:" + order);
-                            if (t.getBusinessType().equals("m") ||
-                                    t.getBusinessType().equals("01")
-                            ) {
-
-                                buffer.put(ByteUtil.hexString2ByteArray(order));
-                                buffer.flip();
-                                socketChannel.write(buffer);
-                                buffer.clear();
-                                if (DateUtil.between(t.getAddtime(), new Date(), DateUnit.MINUTE) > 2) {
-                                    t.setAciAccept(2);
-                                    t.setRoadway("下发超时2分钟未接收自动取消");
-                                    amsTaskService.updateAmsTask(t);
-                                }
-                            } else {
-                                buffer.put(ByteUtil.hexString2ByteArray(order));
-                                buffer.flip();
-                                socketChannel.write(buffer);
-                                buffer.clear();
-                                // 修改已发送
-                                t.setAciAccept(1);
-                                t.setRoadway("TS请求反馈任务发送成功!");
+//                        try {
+                        String order = amsHexdefineDetailService.concatOrder(t, basTask);
+                        log.info("writeOrder:" + order);
+                        if (t.getBusinessType().equals("m") ||
+                                t.getBusinessType().equals("01")
+                        ) {
+
+                            buffer.put(ByteUtil.hexString2ByteArray(order));
+                            buffer.flip();
+                            socketChannel.write(buffer);
+                            buffer.clear();
+                            if (DateUtil.between(t.getAddtime(), new Date(), DateUnit.MINUTE) > 2) {
+                                t.setAciAccept(2);
+                                t.setRoadway("下发超时2分钟未接收自动取消");
                                 amsTaskService.updateAmsTask(t);
                             }
+                        } else {
+                            buffer.put(ByteUtil.hexString2ByteArray(order));
+                            buffer.flip();
+                            socketChannel.write(buffer);
+                            buffer.clear();
+                            // 修改已发送
+                            t.setAciAccept(1);
+                            t.setRoadway("TS请求反馈任务发送成功!");
+                            amsTaskService.updateAmsTask(t);
+                        }
+//                        } catch (Exception e) {
+//                            e.printStackTrace();
+//                            t.setServerAck(0);
+//                            t.setAciAccept(1);
+//                            t.setRoadway("程序异常自动ack");
+//                            t.setIsDelete(null);
+//                            amsTaskService.updateAmsTask(t);
+//                        }
+                    }
+                }
+
+                //从服务端读取
+                buffer.clear();
+                //因为设置了异步 这边不会阻塞 测试了一下 服务器断开这边会抛出异常 但是写的时候不会抛出异常 可能是设置了异步的原因
+                int readLenth = socketChannel.read(buffer);
+                if (readLenth == -1) {
+//                    throw new IOException();
+                }
+                if (readLenth > 0) {
+                    buffer.flip();
+                    byte[] bytes = new byte[readLenth];
+                    buffer.get(bytes);
+                    List<Order> bufferSeparators = socketBufferService.bufferSeparator(bytes);
+                    for (Order order : bufferSeparators) {
+                        log.info("NDC Msg info is :{}", order);
+                        switch (order.getMessageType()) {
+
+                            case Aci.MSG_ORDER_STATUS://车体状态信息、位置信息
+                                socketBufferService.handleMsgOrderStatus(order.getParameters());
+                                break;
+                            case Aci.MSG_EVENT://任务反馈、自定义消息
+                                socketBufferService.handleMsgEvent(order.getParameters());
+                                break;
+                            case Aci.MSG_STOP://交通管制暂停
+                                socketBufferService.handleMsgStopStart(order.getParameters(), true);
+                                break;
+                            case Aci.MSG_START://启动信息
+                                socketBufferService.handleMsgStopStart(order.getParameters(), false);
+                                break;
+                            case Aci.MSG_ORDER_ACK://信息接收反馈
+                                socketBufferService.handleMsgOrderAck(order.getParameters());
+                                break;
+                        }
                     }
                 }
+                buffer.clear();
+
                 try {
                     Thread.sleep(500);
                 } catch (InterruptedException e) {
-                    throw new BaseException(e.getMessage());
+                    e.printStackTrace();
                 }
 
-            }catch (Exception e) {
-                log.error("NDC通讯异常!");
+            }catch (IOException i) {
+                log.error("NDC通讯异常!" ,i);
                 try {
                     socketChannel.close();
                 } catch (Exception exception) {
-                    throw new BaseException(exception.getMessage());
+                    i.printStackTrace();
                 }
-                throw new BaseException(e.getMessage());
-            }
-        }
-    }
-
-    public void readInfo() {
-        //读取客户端消息
-        new Thread(() -> {
-            while (true) {
+            }catch (Exception e) {
+                e.printStackTrace();
                 try {
-                    int readChannels = selector.select();
-                    if (readChannels > 0) {
-                        Iterator<SelectionKey> iterator = selector.selectedKeys().iterator();
-                        while (iterator.hasNext()) {
-                            SelectionKey key = iterator.next();
-                            if (!key.isReadable()) {
-                                iterator.remove();
-                                continue;
-                            }
-                            SocketChannel channel = (SocketChannel) key.channel();
-                            ByteBuffer buffer = ByteBuffer.allocate(BUFF_SIZE);
-                            channel.read(buffer);
-                            List<Order> bufferSeparators = socketBufferService.bufferSeparator(buffer.array());
-                            for (Order order : bufferSeparators) {
-                                log.info("NDC Msg info is :{}", order);
-                                switch (order.getMessageType()) {
-                                    case Aci.MSG_ORDER_STATUS://车体状态信息、位置信息
-                                        socketBufferService.handleMsgOrderStatus(order.getParameters());
-                                        break;
-                                    case Aci.MSG_EVENT://任务反馈、自定义消息
-                                        socketBufferService.handleMsgEvent(order.getParameters());
-                                        break;
-                                    case Aci.MSG_STOP://交通管制暂停
-                                        socketBufferService.handleMsgStopStart(order.getParameters(), true);
-                                        break;
-                                    case Aci.MSG_START://启动信息
-                                        socketBufferService.handleMsgStopStart(order.getParameters(), false);
-                                        break;
-                                    case Aci.MSG_ORDER_ACK://信息接收反馈
-                                        socketBufferService.handleMsgOrderAck(order.getParameters());
-                                        break;
-                                }
-                            }
-                            iterator.remove();
-                        }
-                    }
-                } catch (Exception e) {
-                    throw new BaseException(e.getMessage());
+                    socketChannel.close();
+                } catch (Exception exception) {
+                    e.printStackTrace();
                 }
             }
-        }).start();
+        }
     }
 }
+

+ 13 - 5
warewms-ams/src/main/java/com/warewms/ams/ndc/controller/AmsTaskController.java

@@ -1,9 +1,6 @@
 package com.warewms.ams.ndc.controller;
 
-import com.warewms.ams.ndc.dto.AmsTaskCancelDTO;
-import com.warewms.ams.ndc.dto.AmsTaskDTO;
-import com.warewms.ams.ndc.dto.AmsTaskInfoDTO;
-import com.warewms.ams.ndc.dto.AmsTaskInsertDTO;
+import com.warewms.ams.ndc.dto.*;
 import com.warewms.ams.ndc.service.IAmsTaskService;
 import com.warewms.common.base.controller.BaseController;
 import com.warewms.common.base.domain.AjaxResult;
@@ -12,7 +9,6 @@ import com.warewms.common.constant.Constants;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import kotlin.Result;
 import org.assertj.core.util.Maps;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -75,4 +71,16 @@ public class AmsTaskController extends BaseController {
         return AjaxResult.success();
     }
 
+    @PostMapping(value = "/cancelAmsTaskToWms")
+    public AjaxResult cancelAmsTaskToWms(@RequestBody @Valid AmsTaskCancelToWmsDTO amsTaskCancelToWmsDTO) {
+        amsTaskService.cancelAmsTaskToWms(amsTaskCancelToWmsDTO);
+        return AjaxResult.success();
+    }
+
+    @PostMapping(value = "/completeAmsTaskToWms")
+    public AjaxResult completeAmsTaskToWms(@RequestParam Long id) {
+        amsTaskService.completeAmsTaskToWms(id);
+        return AjaxResult.success();
+    }
+
 }

+ 3 - 5
warewms-ams/src/main/java/com/warewms/ams/ndc/controller/BaseLocationInfoController.java

@@ -2,14 +2,13 @@ package com.warewms.ams.ndc.controller;
 
 
 import com.warewms.ams.ndc.domain.BaseLocationInfo;
-import com.warewms.ams.ndc.dto.AmsTaskDTO;
 import com.warewms.ams.ndc.dto.BaseLocationInfoDTO;
+import com.warewms.ams.ndc.dto.BaseLocationInfoInsertDTO;
 import com.warewms.ams.ndc.service.IBaseLocationInfoService;
 import com.warewms.common.annotation.Log;
 import com.warewms.common.base.controller.BaseController;
 import com.warewms.common.base.domain.AjaxResult;
 import com.warewms.common.base.page.PageData;
-import com.warewms.common.base.page.TableDataInfo;
 import com.warewms.common.constant.Constants;
 import com.warewms.common.enums.BusinessType;
 import com.warewms.common.utils.poi.ExcelUtil;
@@ -22,7 +21,6 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -56,9 +54,9 @@ public class BaseLocationInfoController extends BaseController {
 
     @PostMapping("/save")
     @ApiOperation("保存")
-    public AjaxResult save(@RequestBody BaseLocationInfoDTO dto){
+    public AjaxResult save(@RequestBody BaseLocationInfoInsertDTO dto){
 
-        baseLocationInfoService.save(dto);
+        baseLocationInfoService.insertBaseLocationInfo(dto);
 
         return AjaxResult.success();
     }

+ 77 - 5
warewms-ams/src/main/java/com/warewms/ams/ndc/domain/AmsTask.java

@@ -1,13 +1,13 @@
 package com.warewms.ams.ndc.domain;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.warewms.common.annotation.Excel;
 import com.warewms.common.base.domain.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.util.Date;
 import java.util.HashMap;
@@ -25,9 +25,79 @@ import java.util.Map;
 public class AmsTask extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /**
-     * $column.columnComment
-     */
+    //属性
+    @TableField(exist = false)
+    private Map<String, Object> attr = new HashMap<>();
+
+    public AmsTask() {
+        attr.put("id", getId());
+        attr.put("task_no", getTaskNo());
+        attr.put("iKey", getIkey());
+        attr.put("aci_index", getAciIndex());
+        attr.put("st_from", getStFrom());
+        attr.put("st_to", getStTo());
+        attr.put("priority", getPriority());
+        attr.put("system_status", getSystemStatus());
+        attr.put("event", getEvent());
+        attr.put("server_ack", getServerAck());
+        attr.put("aci_accept", getAciAccept());
+        attr.put("is_delete", getIsDelete());
+        attr.put("callBackUrl", getCallbackurl());
+        attr.put("addtime", getAddtime());
+        attr.put("addwho", getAddwho());
+        attr.put("sys_name", getSysName());
+        attr.put("device_name", getDeviceName());
+        attr.put("business_type", getBusinessType());
+        attr.put("ext1", getExt1());
+        attr.put("ext2", getExt2());
+        attr.put("ext3", getExt3());
+        attr.put("height_level", getHeightLevel());
+        attr.put("remark", getRemark());
+        attr.put("roadway", getRoadway());
+        attr.put("tier", getTier());
+    }
+
+    public String getStr(String feild) {
+        Object obj = attr.get(feild);
+        if (obj != null) {
+            return obj.toString();
+        } else {
+            return "";
+        }
+    }
+
+    public void init(){
+        attr.put("id", getId());
+        attr.put("task_no", getTaskNo());
+        attr.put("iKey", getIkey());
+        attr.put("aci_index", getAciIndex());
+        attr.put("st_from", getStFrom());
+        attr.put("st_to", getStTo());
+        attr.put("priority", getPriority());
+        attr.put("system_status", getSystemStatus());
+        attr.put("event", getEvent());
+        attr.put("server_ack", getServerAck());
+        attr.put("aci_accept", getAciAccept());
+        attr.put("is_delete", getIsDelete());
+        attr.put("callBackUrl", getCallbackurl());
+        attr.put("addtime", getAddtime());
+        attr.put("addwho", getAddwho());
+        attr.put("sys_name", getSysName());
+        attr.put("device_name", getDeviceName());
+        attr.put("business_type", getBusinessType());
+        attr.put("ext1", getExt1());
+        attr.put("ext2", getExt2());
+        attr.put("ext3", getExt3());
+        attr.put("height_level", getHeightLevel());
+        attr.put("remark", getRemark());
+        attr.put("roadway", getRoadway());
+        attr.put("tier", getTier());
+    }
+
+    /**
+     * $column.columnComment
+     */
+    @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
     /**
@@ -167,4 +237,6 @@ public class AmsTask extends BaseEntity {
      */
     @Excel(name = "层")
     private String tier;
+
+    private String remark;
 }

+ 3 - 0
warewms-ams/src/main/java/com/warewms/ams/ndc/domain/BaseLocationInfo.java

@@ -1,5 +1,7 @@
 package com.warewms.ams.ndc.domain;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.warewms.common.annotation.Excel;
 import com.warewms.common.base.domain.BaseEntity;
@@ -21,6 +23,7 @@ public class BaseLocationInfo extends BaseEntity {
     /**
      * 主键
      */
+    @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
     private Long warehouseId;

+ 20 - 0
warewms-ams/src/main/java/com/warewms/ams/ndc/dto/AmsTaskCancelToWmsDTO.java

@@ -0,0 +1,20 @@
+package com.warewms.ams.ndc.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class AmsTaskCancelToWmsDTO implements Serializable {
+
+    private static final long serialVersionUID = 2632946436423179432L;
+
+    @ApiModelProperty("id")
+    @NotNull(message = "id不能为空!")
+    private Long id;
+
+    @ApiModelProperty("取消原因")
+    private String reason;
+}

+ 5 - 1
warewms-ams/src/main/java/com/warewms/ams/ndc/dto/AmsTaskDTO.java

@@ -20,7 +20,11 @@ public class AmsTaskDTO implements Serializable {
     /**
      * $column.columnComment
      */
-    private Long id;
+    private String id;
+
+    public void setId(Long id) {
+        this.id = String.valueOf(id);
+    }
 
     /**
      * 任务编号

+ 0 - 1
warewms-ams/src/main/java/com/warewms/ams/ndc/dto/BaseLocationInfoDTO.java

@@ -1,7 +1,6 @@
 package com.warewms.ams.ndc.dto;
 
 import com.warewms.common.annotation.Excel;
-import com.warewms.common.base.domain.BaseEntity;
 import lombok.Data;
 
 import java.io.Serializable;

+ 45 - 0
warewms-ams/src/main/java/com/warewms/ams/ndc/dto/BaseLocationInfoInsertDTO.java

@@ -0,0 +1,45 @@
+package com.warewms.ams.ndc.dto;
+
+import com.warewms.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 库位信息对象 base_location_info
+ *
+ * @author andy
+ * @date 2022-02-18
+ */
+@Data
+public class BaseLocationInfoInsertDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    private Long warehouseId;
+
+    /**
+     * 区域id
+     */
+    @Excel(name = "区域id")
+    private Long zoneId;
+
+    /**
+     * 库位编码
+     */
+    @Excel(name = "库位编码")
+    private String locationNo;
+
+    /**
+     * 排号
+     */
+    @Excel(name = "排号")
+    private String rowNo;
+
+    /**
+     * AGV点位
+     */
+    @Excel(name = "AGV点位")
+    private Long agvStation;
+
+}

+ 7 - 4
warewms-ams/src/main/java/com/warewms/ams/ndc/service/IAmsTaskService.java

@@ -1,10 +1,7 @@
 package com.warewms.ams.ndc.service;
 
 import com.warewms.ams.ndc.domain.AmsTask;
-import com.warewms.ams.ndc.dto.AmsTaskCancelDTO;
-import com.warewms.ams.ndc.dto.AmsTaskDTO;
-import com.warewms.ams.ndc.dto.AmsTaskInfoDTO;
-import com.warewms.ams.ndc.dto.AmsTaskInsertDTO;
+import com.warewms.ams.ndc.dto.*;
 import com.warewms.framework.service.CrudService;
 
 import java.util.List;
@@ -86,5 +83,11 @@ public interface IAmsTaskService extends CrudService<AmsTask, AmsTaskDTO> {
 
     Boolean cancelAmsTask(AmsTaskCancelDTO amsTaskCancelDTO);
 
+    void cancelAmsTaskToWms(AmsTaskCancelToWmsDTO amsTaskCancelToWmsDTO);
+
+    void amsStateFeedbackToWms(Integer state, String amsTaskId, String businessNo, Integer carNo);
+
     AmsTask getAmsTaskByAciIndex(Integer aciIndex);
+
+    void completeAmsTaskToWms(Long id);
 }

+ 2 - 0
warewms-ams/src/main/java/com/warewms/ams/ndc/service/IBaseLocationInfoService.java

@@ -2,6 +2,7 @@ package com.warewms.ams.ndc.service;
 
 import com.warewms.ams.ndc.domain.BaseLocationInfo;
 import com.warewms.ams.ndc.dto.BaseLocationInfoDTO;
+import com.warewms.ams.ndc.dto.BaseLocationInfoInsertDTO;
 import com.warewms.framework.service.CrudService;
 
 import java.util.List;
@@ -16,4 +17,5 @@ public interface IBaseLocationInfoService extends CrudService<BaseLocationInfo,
 
     List<BaseLocationInfo> queryBaseLocationInfoList(Integer zoneId, String rowNo);
 
+    void insertBaseLocationInfo(BaseLocationInfoInsertDTO baseLocationInfoInsertDTO);
 }

+ 4 - 15
warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/AmsHexdefineDetailServiceImpl.java

@@ -1,20 +1,14 @@
 package com.warewms.ams.ndc.service.impl;
 
-import cn.hutool.core.util.ClassUtil;
-import cn.hutool.core.util.ObjectUtil;
 import com.warewms.ams.ndc.common.ValType;
 import com.warewms.ams.ndc.domain.AmsHexdefineDetail;
 import com.warewms.ams.ndc.domain.AmsTask;
 import com.warewms.ams.ndc.mapper.AmsHexdefineDetailMapper;
 import com.warewms.ams.ndc.service.IAmsHexdefineDetailService;
-import com.warewms.common.utils.reflect.ReflectUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.reflect.FieldUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.lang.reflect.Field;
 import java.util.List;
 
 /**
@@ -39,17 +33,12 @@ public class AmsHexdefineDetailServiceImpl implements IAmsHexdefineDetailService
     public String concatOrder(AmsTask amsTask, List<AmsHexdefineDetail> amsHexdefineDetails) {
         StringBuffer sb = new StringBuffer();
         for (AmsHexdefineDetail basTask : amsHexdefineDetails) {
-            String fieldValue = (String) ReflectUtils.getFieldValue(amsTask, basTask.getColVal());
-            if (ObjectUtil.isNull(fieldValue)) {
-                fieldValue = StringUtils.EMPTY;
-                log.error("AmsHexdefineDetailServiceImpl - concatOrder amsTask field {} is null", basTask.getColVal());
-            }
             //System.out.println(basTask.getColName());
             //字符串直接取数据库保存值
             if (basTask.getColType() == ValType.TEXT.getCode()) {
                 //如果是数字需要进行转换
                 if (basTask.getValType() == 2) {
-                    sb.append(String.format("%04X", Integer.parseInt(fieldValue)));
+                    sb.append(String.format("%04X", Integer.parseInt(amsTask.getStr(basTask.getColVal()))));
                 } else {
                     sb.append(basTask.getColVal());
                 }
@@ -58,12 +47,12 @@ public class AmsHexdefineDetailServiceImpl implements IAmsHexdefineDetailService
                 if (basTask.getValType() == 1) {
                     //如果是数字需要进行转换,Priority为2位其余4位
                     if (basTask.getColName().equals("Priority")) {
-                        sb.append(String.format("%02X", Integer.parseInt(fieldValue)+ 0x80));
+                        sb.append(String.format("%02X", Integer.parseInt(amsTask.getStr(basTask.getColVal()))+ 0x80));
                     }else {
-                        sb.append(String.format("%04X", Integer.parseInt(fieldValue)));
+                        sb.append(String.format("%04X", Integer.parseInt(amsTask.getStr(basTask.getColVal()))));
                     }
                 } else {
-                    sb.append(fieldValue);
+                    sb.append(amsTask.getStr(basTask.getColVal()));
                 }
             }
         }

+ 65 - 15
warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/AmsTaskServiceImpl.java

@@ -13,10 +13,7 @@ import com.warewms.ams.ndc.common.ByteUtil;
 import com.warewms.ams.ndc.common.CRC16Util;
 import com.warewms.ams.ndc.domain.AmsTask;
 import com.warewms.ams.ndc.domain.BaseLocationInfo;
-import com.warewms.ams.ndc.dto.AmsTaskCancelDTO;
-import com.warewms.ams.ndc.dto.AmsTaskDTO;
-import com.warewms.ams.ndc.dto.AmsTaskInfoDTO;
-import com.warewms.ams.ndc.dto.AmsTaskInsertDTO;
+import com.warewms.ams.ndc.dto.*;
 import com.warewms.ams.ndc.mapper.AmsTaskMapper;
 import com.warewms.ams.ndc.service.IAmsTaskService;
 import com.warewms.ams.ndc.service.IBaseLocationInfoService;
@@ -27,10 +24,12 @@ import com.warewms.common.utils.string.StringUtils;
 import com.warewms.framework.service.impl.CrudServiceImpl;
 import com.warewms.system.service.ISysConfigService;
 import io.jsonwebtoken.lang.Assert;
+import lombok.extern.slf4j.Slf4j;
 import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -43,6 +42,7 @@ import java.util.Map;
  * @date 2022-08-08
  */
 @Service
+@Slf4j
 public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask, AmsTaskDTO> implements IAmsTaskService
 {
     @Autowired
@@ -57,6 +57,9 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
     @Autowired
     private ISysConfigService sysConfigService;
 
+    @Autowired
+    private RestTemplate restTemplate;
+
     public static int genIKey(String taskNo) {
         int res = CRC16Util.calcCrc16(ByteUtil.string2byteArray(taskNo));
         if (res == 0) {
@@ -179,7 +182,9 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
                 && redisCache.checkIsExist(AmsConstant.WMS_CORRESPOND_AGV_STATION_KEY.concat(amsTaskInsertDTO.getLocationTo()));
         amsTask.setStTo(isExist ? convertLocation(amsTaskInsertDTO.getLocationTo()) : getCacheLocation(amsTaskInsertDTO.getLocationFrom(), amsTaskInsertDTO.getLocationTo()));
         amsTask.setExt3(isExist ? null : amsTaskInsertDTO.getLocationTo());
-        amsTask.setExt1(isExist ? redisCache.getCacheObject(AmsConstant.LOCATION_ROW_KEY.concat(amsTask.getStTo().toString())) : String.valueOf(BigDecimal.ZERO));
+        amsTask.setExt1(isExist ? redisCache.getCacheObject(AmsConstant.LOCATION_ROW_KEY.concat(amsTask.getStTo().toString())) :
+                redisCache.checkIsExist(AmsConstant.WMS_CORRESPOND_AGV_STATION_KEY.concat(amsTaskInsertDTO.getLocationFrom())) ?
+                        redisCache.getCacheObject(AmsConstant.LOCATION_ROW_KEY.concat(amsTaskInsertDTO.getLocationFrom())) : String.valueOf(BigDecimal.ZERO));
         amsTask.setExt2(amsTask.getExt1());
         amsTask.setBusinessType(StringUtils.isNotBlank(amsTaskInsertDTO.getBusinessType()) ?
                 amsTaskInsertDTO.getBusinessType() : AmsConstant.TASK_BUSINESS_TYPE.TASK_01.getValue());
@@ -193,14 +198,20 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
 
     @Override
     public void ndcAmsTaskInsert(String businessNo, String businessType, Integer stFrom, String stTo) {
+        List<AmsTask> wcsTaskList = amsTaskMapper.selectList(Wrappers.<AmsTask>lambdaQuery().eq(AmsTask::getTaskNo, businessNo)
+                .isNull(AmsTask::getExt3));
+        Assert.isTrue(CollectionUtil.isEmpty(wcsTaskList), "任务下发重复!");
         AmsTask amsTask = new AmsTask();
         amsTask.setId(Long.parseLong(IdWorker.getIdStr()));
         amsTask.setTaskNo(businessNo);
-        amsTask.setStFrom(convertLocation(stFrom.toString()));
+        amsTask.setStFrom(redisCache.checkIsExist(AmsConstant.AGV_TO_PILLING_CAR_KEY.concat(stFrom.toString())) ?
+                redisCache.getCacheObject(AmsConstant.AGV_TO_PILLING_CAR_KEY.concat(stFrom.toString())) : convertLocation(stFrom.toString()));
         amsTask.setStTo(convertLocation(stTo));
         amsTask.setExt1(redisCache.getCacheObject(AmsConstant.LOCATION_ROW_KEY.concat(stTo)));
         amsTask.setExt2(amsTask.getExt1());
         amsTask.setBusinessType(businessType);
+        amsTask.setDeviceName(AmsConstant.AMS_SYS_NAME);
+        amsTask.setSysName(AmsConstant.AMS_SYS_NAME);
         amsTask.setIsDelete(0);
         amsTask.setAciAccept(0);
         amsTask.setIkey((long) genIKey(amsTask.getId().toString()));
@@ -225,7 +236,7 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
         Assert.isTrue(ObjectUtil.isNotNull(zoneId), "location.scene.config is not exist this locationId");
         List<BaseLocationInfo> baseLocationInfoList = baseLocationInfoService.queryBaseLocationInfoList(zoneId, rowNo);
         Assert.isTrue(CollectionUtil.isNotEmpty(baseLocationInfoList), "this zone cache location is not exist");
-        return Integer.parseInt(baseLocationInfoList.stream().findFirst().orElseThrow(() -> new BaseException("this zone cache location is not exist")).getLocationNo());
+        return Integer.parseInt(baseLocationInfoList.stream().map(item -> isExist ? item.getAgvStation().toString() : item.getLocationNo()).findFirst().orElseThrow(() -> new BaseException("this zone cache location is not exist")));
     }
 
     /**
@@ -264,6 +275,32 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
                 .set(AmsTask::getRemark, "下发超时1分钟未接收自动取消, 取消原因为:" + remark)) > 0;
     }
 
+    @Override
+    public void cancelAmsTaskToWms(AmsTaskCancelToWmsDTO amsTaskCancelToWmsDTO) {
+        AmsTaskDTO amsTaskDTO = get(amsTaskCancelToWmsDTO.getId());
+        AmsTaskCancelDTO amsTaskCancelDTO = ConvertUtils.sourceToTarget(amsTaskCancelToWmsDTO, AmsTaskCancelDTO.class);
+        amsTaskCancelDTO.setTaskNo(amsTaskCancelToWmsDTO.getId().toString());
+        cancelAmsTask(amsTaskCancelDTO);
+        amsStateFeedbackToWms(AmsConstant.TASK_STS.TASK7.getValue(), amsTaskDTO.getId().toString(), amsTaskDTO.getTaskNo(),null);
+    }
+
+    @Override
+    public void amsStateFeedbackToWms(Integer state, String amsTaskId, String businessNo, Integer carNo){
+        AmsTaskStateFeedbackDTO amsTaskStateFeedbackDTO = new AmsTaskStateFeedbackDTO();
+        amsTaskStateFeedbackDTO.setState(state);
+        amsTaskStateFeedbackDTO.setTaskNo(amsTaskId);
+        amsTaskStateFeedbackDTO.setBusinessNo(businessNo);
+        amsTaskStateFeedbackDTO.setCarNo(carNo);
+        log.info("AmsTaskServiceImpl - amsTaskStateFeedbackDTO is :{}", amsTaskStateFeedbackDTO);
+        Object response = null;
+        try {
+            response = restTemplate.postForObject(AmsConstant.WMS_URL, amsTaskStateFeedbackDTO, Object.class);
+            log.info("wms response data is :{}", JSONObject.toJSONString(response));
+        } catch (Exception e) {
+            log.error("AMS send request to WMS is on error, pause is :{}", e.getMessage());
+        }
+    }
+
     public Integer getAmsTaskState(AmsTask amsTask){
         Integer delete = ObjectUtil.isNotNull(amsTask.getIsDelete()) ? amsTask.getIsDelete() : null;
         Integer aciAccept = ObjectUtil.isNotNull(amsTask.getAciAccept()) ? amsTask.getAciAccept() : null;
@@ -283,6 +320,19 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
         return getAmsTaskList(null, null, aciIndex).stream().findFirst().orElseGet(() -> null);
     }
 
+    @Override
+    public void completeAmsTaskToWms(Long id) {
+        AmsTaskDTO amsTaskDTO = get(id);
+        amsTaskMapper.update(new AmsTask(), Wrappers.<AmsTask>lambdaUpdate()
+                .eq(AmsTask::getId, id)
+                .set(AmsTask::getIsDelete, AmsConstant.DELETE_STATUS.N.getValue())
+                .set(AmsTask::getAciAccept, AmsConstant.ACI_ACCEPT_STATUS.Y.getValue())
+                .set(AmsTask::getEvent, AmsConstant.TASK_STS.TASK2.getKey())
+                .set(AmsTask::getSystemStatus, AmsConstant.TASK_STS.TASK2.getValue())
+                .set(AmsTask::getRemark, "ams系统手动完成"));
+        amsStateFeedbackToWms(AmsConstant.TASK_STS.TASK2.getValue(), amsTaskDTO.getId().toString(), amsTaskDTO.getTaskNo(), null);
+    }
+
     public List<AmsTask> getAmsTaskList(List<String> businessNoList, List<String> idList, Integer aciIndex){
         List<AmsTask> amsTaskList = amsTaskMapper.selectList(Wrappers.<AmsTask>lambdaQuery()
                 .in(CollectionUtil.isNotEmpty(businessNoList), AmsTask::getTaskNo, businessNoList)
@@ -295,14 +345,14 @@ public class AmsTaskServiceImpl extends CrudServiceImpl<AmsTaskMapper, AmsTask,
     @Override
     public QueryWrapper<AmsTask> getWrapper(Map<String, Object> params) {
         QueryWrapper<AmsTask> queryWrapper = new QueryWrapper<>();
-        String taskNo = (String) params.get("taskNo");
-        String aciIndex = (String) params.get("aciIndex");
-        String stFrom = (String) params.get("stFrom");
-        String stTo = (String) params.get("stTo");
-        queryWrapper.lambda().eq(StringUtils.isNotBlank(taskNo), AmsTask::getTaskNo, Integer.parseInt(taskNo))
-                .eq(StringUtils.isNotBlank(aciIndex), AmsTask::getAciIndex, Integer.parseInt(aciIndex))
-                .eq(StringUtils.isNotBlank(stFrom), AmsTask::getStFrom, Integer.parseInt(stFrom))
-                .eq(StringUtils.isNotBlank(stTo), AmsTask::getStTo, Integer.parseInt(stTo));
+        Integer taskNo = StringUtils.isNotBlank((String) params.get("taskNo")) ? Integer.parseInt((String) params.get("taskNo")) : null;
+        Integer aciIndex = StringUtils.isNotBlank((String) params.get("aciIndex")) ? Integer.parseInt((String) params.get("aciIndex")) : null;
+        Integer stFrom = StringUtils.isNotBlank((String) params.get("stFrom")) ? Integer.parseInt((String) params.get("stFrom")) : null;
+        Integer stTo = StringUtils.isNotBlank((String) params.get("stTo")) ? Integer.parseInt((String) params.get("stTo")) : null;
+        queryWrapper.lambda().eq(ObjectUtil.isNotNull(taskNo), AmsTask::getTaskNo, taskNo)
+                .eq(ObjectUtil.isNotNull(aciIndex), AmsTask::getAciIndex, aciIndex)
+                .eq(ObjectUtil.isNotNull(stFrom), AmsTask::getStFrom, stFrom)
+                .eq(ObjectUtil.isNotNull(stTo), AmsTask::getStTo, stTo);
         return queryWrapper;
     }
 }

+ 20 - 7
warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/BaseLocationInfoServiceImpl.java

@@ -4,13 +4,12 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.warewms.ams.common.AmsConstant;
-import com.warewms.ams.ndc.domain.AmsTask;
 import com.warewms.ams.ndc.domain.BaseLocationInfo;
-import com.warewms.ams.ndc.dto.AmsTaskDTO;
 import com.warewms.ams.ndc.dto.BaseLocationInfoDTO;
-import com.warewms.ams.ndc.mapper.AmsTaskMapper;
+import com.warewms.ams.ndc.dto.BaseLocationInfoInsertDTO;
 import com.warewms.ams.ndc.mapper.BaseLocationInfoMapper;
 import com.warewms.ams.ndc.service.IBaseLocationInfoService;
+import com.warewms.common.utils.ConvertUtils;
 import com.warewms.common.utils.redis.RedisCache;
 import com.warewms.framework.service.impl.CrudServiceImpl;
 import lombok.extern.slf4j.Slf4j;
@@ -54,6 +53,7 @@ public class BaseLocationInfoServiceImpl extends CrudServiceImpl<BaseLocationInf
         for (BaseLocationInfo baseLocationInfo : baseLocationInfoList) {
             redisCache.setCacheObject(AmsConstant.WMS_CORRESPOND_AGV_STATION_KEY.concat(baseLocationInfo.getLocationNo()), baseLocationInfo.getAgvStation());
             redisCache.setCacheObject(AmsConstant.LOCATION_ROW_KEY.concat(baseLocationInfo.getLocationNo()), baseLocationInfo.getRowNo());
+            redisCache.setCacheObject(AmsConstant.AGV_TO_PILLING_CAR_KEY.concat(baseLocationInfo.getAgvStation().toString()), baseLocationInfo.getLocationNo());
         }
     }
 
@@ -69,18 +69,31 @@ public class BaseLocationInfoServiceImpl extends CrudServiceImpl<BaseLocationInf
                 .eq(StringUtils.isNotBlank(rowNo), BaseLocationInfo::getRowNo, rowNo));
     }
 
+    @Override
+    public void insertBaseLocationInfo(BaseLocationInfoInsertDTO baseLocationInfoInsertDTO){
+        BaseLocationInfo baseLocationInfo = ConvertUtils.sourceToTarget(baseLocationInfoInsertDTO, BaseLocationInfo.class);
+        baseLocationInfo.setRowIndex(1l);
+        baseLocationInfo.setColNo("1");
+        baseLocationInfo.setColIndex(1l);
+        baseLocationInfo.setShiftNo("1");
+        baseLocationInfo.setShiftIndex(1l);
+        baseLocationInfo.setStockStatus("00");
+        baseLocationInfo.setColNo("1");
+        baseDao.insert(baseLocationInfo);
+    }
 
     @Override
     public QueryWrapper<BaseLocationInfo> getWrapper(Map<String, Object> params) {
         QueryWrapper<BaseLocationInfo> queryWrapper = new QueryWrapper<>();
-        String zoneId = (String) params.get("zoneId");
+        Long zoneId = StringUtils.isNotBlank((String) params.get("zoneId")) ? Long.parseLong((String) params.get("zoneId")) : null;
         String locationNo = (String) params.get("locationNo");
         String rowNo = (String) params.get("rowNo");
-        String agvStation = (String) params.get("agvStation");
-        queryWrapper.lambda().eq(StringUtils.isNotBlank(zoneId), BaseLocationInfo::getZoneId, Long.parseLong(zoneId))
+        Long agvStation = StringUtils.isNotBlank((String) params.get("agvStation")) ? Long.parseLong((String) params.get("agvStation")) : null;
+        queryWrapper.lambda()
+                .eq(ObjectUtil.isNotNull(zoneId), BaseLocationInfo::getZoneId, zoneId)
                 .eq(StringUtils.isNotBlank(locationNo), BaseLocationInfo::getLocationNo, locationNo)
                 .eq(StringUtils.isNotBlank(rowNo), BaseLocationInfo::getRowNo, rowNo)
-                .eq(StringUtils.isNotBlank(agvStation), BaseLocationInfo::getAgvStation, Long.parseLong(agvStation));
+                .eq(ObjectUtil.isNotNull(agvStation), BaseLocationInfo::getAgvStation, agvStation);
         return queryWrapper;
     }
 }

+ 7 - 3
warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/SocketBufferServiceImpl.java

@@ -137,7 +137,9 @@ public class SocketBufferServiceImpl implements SocketBufferService {
         int eventId = event.getId();
         log.info("evenId is :{}", eventId);
         if (ObjectUtil.isNotNull(AmsConstant.TASK_STS.getValueByKey(eventId))) {
-            statusUpdateService.taskStateResponse(AmsConstant.TASK_STS.getValueByKey(eventId), icarNo, Integer.parseInt(event.getLp1()));
+            executorService.execute(() -> {
+                statusUpdateService.taskStateResponse(AmsConstant.TASK_STS.getValueByKey(eventId), icarNo, ByteUtil.getInt(parameters, 34));
+            });
         }
         AmsTask taskBean = new AmsTask();
 
@@ -183,7 +185,7 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                         taskBeanUpdate01.setId(taskBean.getId());
                         taskBeanUpdate01.setEvent(eventId);
                         taskBeanUpdate01.setServerAck(0);
-                        taskBeanUpdate01.setSystemStatus(null);
+                        taskBeanUpdate01.setSystemStatus(AmsConstant.TASK_STS.getValueByKey(eventId));
                         taskBeanUpdate01.setIsDelete(null);
                         amsTaskService.updateAmsTask(taskBeanUpdate01);
 
@@ -328,7 +330,9 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                     taskBean.setIsDelete(null);
                     taskBean.setRoadway(ndcStatusValue);
                     amsTaskService.updateAmsTask(taskBean);
-
+                    executorService.execute(() -> {
+                        statusUpdateService.taskStateResponse((parameters[3] & 0xff), 1, parameters[1] & 0xff);
+                    });
                     log.info("任务下发完成计数" + JSON.toJSONString(taskBean));
                     log.info("update ack:" + JSON.toJSONString(taskBean));
                 } else {

+ 2 - 28
warewms-ams/src/main/java/com/warewms/ams/ndc/service/impl/StatusUpdateServiceImpl.java

@@ -1,20 +1,14 @@
 package com.warewms.ams.ndc.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.fastjson.JSONObject;
 import com.warewms.ams.common.AmsConstant;
 import com.warewms.ams.ndc.domain.AmsTask;
-import com.warewms.ams.ndc.dto.AmsTaskStateFeedbackDTO;
 import com.warewms.ams.ndc.service.IAmsTaskService;
 import com.warewms.ams.ndc.service.StatusUpdateService;
 import com.warewms.common.utils.string.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.retry.annotation.Backoff;
-import org.springframework.retry.annotation.Retryable;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestClientException;
-import org.springframework.web.client.RestTemplate;
 
 @Slf4j
 @Component
@@ -23,11 +17,6 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
     @Autowired
     private IAmsTaskService amsTaskService;
 
-    @Autowired
-    private RestTemplate restTemplate;
-
-    private final String WMS_URL = "localhost:28080/erp/execResult";
-
     @Override
     public void taskStateResponse(Integer state, Integer carNo, Integer aciIndex) {
         AmsTask amsTask = amsTaskService.getAmsTaskByAciIndex(aciIndex);
@@ -38,19 +27,7 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
         if (StringUtils.isNotBlank(amsTask.getExt3()) && (state.equals(AmsConstant.TASK_STS.TASK2.getValue()) || state.equals(AmsConstant.TASK_STS.TASK6.getValue()))) {
             return;
         }
-        AmsTaskStateFeedbackDTO amsTaskStateFeedbackDTO = new AmsTaskStateFeedbackDTO();
-        amsTaskStateFeedbackDTO.setState(state);
-        amsTaskStateFeedbackDTO.setTaskNo(String.valueOf(amsTask.getId()));
-        amsTaskStateFeedbackDTO.setBusinessNo(amsTask.getTaskNo());
-        amsTaskStateFeedbackDTO.setCarNo(carNo);
-        log.info("taskStateResponse - amsTaskStateFeedbackDTO is :{}", amsTaskStateFeedbackDTO);
-        Object response = null;
-        try {
-            response = restTemplate.postForObject(WMS_URL, amsTaskStateFeedbackDTO, Object.class);
-            log.info("wms response data is :{}", JSONObject.toJSONString(response));
-        } catch (RestClientException e) {
-            log.error("AMS send request to WMS is on error, pause is :{}", e.getMessage());
-        }
+        amsTaskService.amsStateFeedbackToWms(state, String.valueOf(amsTask.getId()), amsTask.getTaskNo(), carNo);
     }
 
     @Override
@@ -62,11 +39,8 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
         if (amsTask.getAciIndex() == null) {
             log.error("没有index,未下发的任务");
         }
-        amsTask.setSystemStatus(AmsConstant.TASK_STS.getValueByKey(amsTask.getEvent()));
-        amsTaskService.updateAmsTask(amsTask);
         if (StringUtils.isNotBlank(amsTask.getExt3()) &&
-                (amsTask.getSystemStatus().equals(AmsConstant.TASK_STS.TASK2.getValue()) ||
-                        amsTask.getSystemStatus().equals(AmsConstant.TASK_STS.TASK6.getValue()))) {
+                amsTask.getSystemStatus().equals(AmsConstant.TASK_STS.TASK2.getValue())) {
             amsTaskService.ndcAmsTaskInsert(amsTask.getTaskNo(), amsTask.getBusinessType(), amsTask.getStTo(), amsTask.getExt3());
         }
     }

+ 1 - 1
warewms-ams/src/main/resources/application-dev.yml

@@ -89,5 +89,5 @@ logging:
 
 # 是否开启服务
 testtag:
-    aciservice: true
+    aciservice: false
     gsService: false