Browse Source

修改部分库位显示问题

zhifei 1 year ago
parent
commit
873e469bb8

File diff suppressed because it is too large
+ 79 - 2
ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java


+ 1 - 0
warewms-ams/pom.xml

@@ -37,6 +37,7 @@
             <artifactId>warewms-hard</artifactId>
         </dependency>
 
+
     </dependencies>
 
 </project>

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

@@ -38,7 +38,7 @@ public class AciService {
 
     private static final int BUFF_SIZE = 2048;
 
-    private static final String IP_ADDR = "192.168.1.58";
+    private static final String IP_ADDR = "192.168.1.48";
 
     private static final int IP_PORT = 30002;
 

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

@@ -9,7 +9,6 @@ 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;
@@ -20,11 +19,15 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
-import static com.ruoyi.ams.agv.ndc.service.ChargerButtService.*;
 import static com.ruoyi.ams.agv.ndc.service.ChargerButtProxy.CHARGER_BUTT_REQUEST.*;
-import static com.ruoyi.ams.agv.ndc.service.impl.StatusUpdateServiceImpl.AGV_ACTION.*;
+import static com.ruoyi.ams.agv.ndc.service.ChargerButtService.*;
+import static com.ruoyi.ams.agv.ndc.service.impl.StatusUpdateServiceImpl.AGV_ACTION.PICKUP;
+import static com.ruoyi.ams.agv.ndc.service.impl.StatusUpdateServiceImpl.AGV_ACTION.UNLOAD;
 
 
 /**
@@ -267,19 +270,10 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                         });
                     }
                     break;
-                case 126: //600 中间卷帘门请求开启 定时请求
-                    log.info("快速门-请求开启!" + "-" + JSON.toJSONString(event));
-                    String lp1_126 = event.getLp1();
-                    executorService.execute(() -> {
-                        statusUpdateService.openDoor(Integer.valueOf(lp1_126));
-                    });
+                case 126:
                     break;
-                case 127: //601 中间卷帘门请求关闭 只请求一次
-                    log.info("快速门-请求关闭!" + "-" + JSON.toJSONString(event));
-                    String lp1_127 = event.getLp1();
-                    executorService.execute(() -> {
-                        statusUpdateService.closeDoor(Integer.valueOf(lp1_127));
-                    });
+                case 127:
+
                     break;
                 case 134:
                     break;

+ 43 - 37
warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java

@@ -605,6 +605,7 @@ public class BusinessServiceImpl implements IBusinessService {
             amsTask.setStTo(Integer.parseInt(wcsTask.getLocationTo()));
             amsTask.setDeviceName(wcsTask.getDeviceName());
         } else {
+            System.out.println(locFrom);
             amsTask.setStFrom(locFrom.getAgvStation().intValue());
             amsTask.setStTo(locTo.getAgvStation().intValue());
         }
@@ -709,6 +710,11 @@ public class BusinessServiceImpl implements IBusinessService {
         if(isSplit){
             return false;
         }*/
+        if (StringUtils.isNotEmpty(wcsTask.getParentTask())){
+            if(! wcsTaskService.selectWcsTaskByTaskNo(wcsTask.getParentTask()).getState().equals(2L)) {
+                return false;
+            }
+        }
 
         //最后要执行的任务
         WcsTask currentTask = new WcsTask();
@@ -722,9 +728,9 @@ public class BusinessServiceImpl implements IBusinessService {
         //目标库位
         BaseLocationInfo locationInfoTo = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(wcsTask.getLocationTo()));
         //TODO 前置任务未完成不进行下发
-        if (businessService.taskDispatchCheck(wcsTask) == false) {
-            return false;
-        }
+//        if (businessService.taskDispatchCheck(wcsTask) == false) {
+//            return false;
+//        }
 
         if (basLocationInfoFrom != null) {
 
@@ -735,14 +741,14 @@ public class BusinessServiceImpl implements IBusinessService {
             }
 
             //起始库位巷道检测(起始库位检测是否同巷道)
-            if (!StringUtils.isEmpty(basLocationInfoFrom.getColNo())) {
-                List<BaseLocationInfo> locationInfoList = baseLocationInfoMapper.laneCheck(basLocationInfoFrom.getColNo(), "LANE_FROM", Constant.WAREHOUSE_ID);
-                if (locationInfoList != null && locationInfoList.size() > 0) {
-                    wcsTask.setRemark("起始库位同列或同巷道有车辆在任务中,等待其他任务完成");
-                    wcsTaskService.updateWcsTask(wcsTask);
-                    return false;
-                }
-            }
+//            if (!StringUtils.isEmpty(basLocationInfoFrom.getColNo())) {
+//                List<BaseLocationInfo> locationInfoList = baseLocationInfoMapper.laneCheck(basLocationInfoFrom.getColNo(), "LANE_FROM", Constant.WAREHOUSE_ID);
+//                if (locationInfoList != null && locationInfoList.size() > 0) {
+//                    wcsTask.setRemark("起始库位同列或同巷道有车辆在任务中,等待其他任务完成");
+//                    wcsTaskService.updateWcsTask(wcsTask);
+//                    return false;
+//                }
+//            }
         }
 
         //起始库位是地堆需要判断是否有阻挡
@@ -802,32 +808,32 @@ public class BusinessServiceImpl implements IBusinessService {
         }
 
         //查询是否有更里面的位置可以存放
-        if (locationInfoTo != null) {
-            if (locationInfoTo.getZoneId() != 10) {
-                String locationtoTmp = "";
-                List<BaseLocationInfoSameColDTO> b = baseLocationInfoService.selectSameColCanToLoc(locationInfoTo.getColNo(), locationInfoTo.getColIndex());
-                for (BaseLocationInfoSameColDTO bt : b) {
-                    if (bt.getIsOb() == false) {
-                        locationtoTmp = bt.getId().toString();
-                    } else {
-                        break;
-                    }
-                }
-                if (!StringUtils.isEmpty(locationtoTmp)) {
-                    wcsTask.setLocationTo(locationtoTmp);
-                    wcsTaskService.updateWcsTask(wcsTask);
-
-                    //释放原库位
-                    locationInfoTo.setStockStatus("00");
-                    baseLocationInfoService.updateBaseLocationInfo(locationInfoTo);
-
-                    //占用新库位
-                    BaseLocationInfo newlocationInfoTo = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(locationtoTmp));
-                    newlocationInfoTo.setStockStatus("10");
-                    baseLocationInfoService.updateBaseLocationInfo(newlocationInfoTo);
-                }
-            }
-        }
+//        if (locationInfoTo != null) {
+//            if (locationInfoTo.getZoneId() != 10) {
+//                String locationtoTmp = "";
+//                List<BaseLocationInfoSameColDTO> b = baseLocationInfoService.selectSameColCanToLoc(locationInfoTo.getColNo(), locationInfoTo.getColIndex());
+//                for (BaseLocationInfoSameColDTO bt : b) {
+//                    if (bt.getIsOb() == false) {
+//                        locationtoTmp = bt.getId().toString();
+//                    } else {
+//                        break;
+//                    }
+//                }
+//                if (!StringUtils.isEmpty(locationtoTmp)) {
+//                    wcsTask.setLocationTo(locationtoTmp);
+//                    wcsTaskService.updateWcsTask(wcsTask);
+//
+//                    //释放原库位
+//                    locationInfoTo.setStockStatus("00");
+//                    baseLocationInfoService.updateBaseLocationInfo(locationInfoTo);
+//
+//                    //占用新库位
+//                    BaseLocationInfo newlocationInfoTo = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(locationtoTmp));
+//                    newlocationInfoTo.setStockStatus("10");
+//                    baseLocationInfoService.updateBaseLocationInfo(newlocationInfoTo);
+//                }
+//            }
+//        }
 
         currentTask.setState(10L);
         currentTask.setRemark("");

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/locationView/service/LocationViewService.java

@@ -189,7 +189,7 @@ public class LocationViewService {
                     .stream()
                     .mapToInt(t -> t.getBaseLocationGuiDTOList().size())
                     .max()
-                    .getAsInt();
+                    .orElse(1);
             basLocationGuiColDTOList.stream().forEach(v -> {
                 int size = v.getBaseLocationGuiDTOList().size();
                 List<BaseLocationGuiDTO> locationGuiDTOList = v.getBaseLocationGuiDTOList();

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/task/mapper/WcsTaskMapper.java

@@ -26,7 +26,7 @@ public interface WcsTaskMapper
      * @param taskId
      * @return
      */
-     WcsTask selectWcsTaskByLcsTaskId(String taskId);
+    List<WcsTask> selectWcsTaskByLcsTaskId(String taskId);
 
     /**
      * 查询AGV任务列表

+ 18 - 1
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -17,6 +17,7 @@ import com.ruoyi.ams.task.mapper.WcsTaskMapper;
 import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
+import com.ruoyi.base.domain.CarInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.redis.RedisCache;
@@ -363,6 +364,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         //转发类型任务才回调
         if (wcsTask.getTaskType().equals(Constant.TASK_TYPE.FORWARD.getValue())) {
             try {
+                CarInfo carInfo = new CarInfo();
                 switch (state) {
                     case 1:
                         wcsTask.setStartTime(new Date());
@@ -390,6 +392,9 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                             redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
                         }
+                        carInfo.setUpdateType("status");
+                        carInfo.setState("1");
+                        SpringUtil.getApplicationContext().publishEvent(carInfo);
                         break;
                     case 3:
                         break;
@@ -414,6 +419,11 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                             redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
                         }
+
+                        //修改车辆状态
+                        carInfo.setUpdateType("status");
+                        carInfo.setState("2");
+                        SpringUtil.getApplicationContext().publishEvent(carInfo);
                         break;
                     case 5:
                         break;
@@ -459,8 +469,15 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         }
                         // 取消任务删除中间缓存库存
 //                        cancelTaskDelMiddleCache(wcsTask);
+                        carInfo.setUpdateType("status");
+                        carInfo.setState("1");
+                        SpringUtil.getApplicationContext().publishEvent(carInfo);
                         break;
                     case 8:
+                        //修改车辆状态
+                        carInfo.setUpdateType("status");
+                        carInfo.setState("4");
+                        SpringUtil.getApplicationContext().publishEvent(carInfo);
                         log.error("任务异常状态------------" + wcsTask.getTaskNo());
                         break;
                     default:
@@ -483,7 +500,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         wcsTask.setState(state.longValue());
         wcsTask.setUpdateDate(new Date());
         wcsTaskService.updateWcsTask(wcsTask);
-        //根据具体状态反馈中集WMS
+        //根据具体状态反馈WMS
         if (statusList.contains(state)) {
             SpringUtil.getApplicationContext().publishEvent(wcsTask);
         }

+ 6 - 1
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -434,7 +434,12 @@ public class Constant {
         /**
          * 转发任务
          */
-        FORWARD("FW");
+        FORWARD("FW"),
+
+        /**
+         *
+         */
+        Handling("TA");
         private String value;
 
         TASK_TYPE(String value) {

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

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

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

@@ -300,5 +300,12 @@ public interface IBaseLocationInfoService {
      */
     AjaxResult importLocation(List<BaseLocationInfo> list, boolean updateSupport, String opname);
 
+
+    /**
+     * 获取不在任务中的空库位
+     */
+    List<BaseLocationInfo> selectSortedLocatinListByZoneIdNoTask(BaseLocationInfo locatio);
+
+
     AjaxResult syncLocStatus(List<BaseLocationInfo> locationInfoList);
 }

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

@@ -423,6 +423,11 @@ public class BaseLocationInfoServiceImpl implements IBaseLocationInfoService {
         return AjaxResult.success(successMsg);
     }
 
+    @Override
+    public List<BaseLocationInfo> selectSortedLocatinListByZoneIdNoTask(BaseLocationInfo location) {
+        return baseLocationInfoMapper.selectSortedLocatinListByZoneIdNoTask(location);
+    }
+
     @Override
     public AjaxResult syncLocStatus(List<BaseLocationInfo> locationInfoList) {
         ArrayList<String> msg = new ArrayList<>();

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

@@ -668,4 +668,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </otherwise>
         </choose>
     </select>
+    <select id="selectSortedLocatinListByZoneIdNoTask" parameterType="BaseLocationInfo"  resultMap="BaseLocationInfoResult">
+        <include refid="selectBaseLocationInfoVo"/>
+        <where>
+            <if test="id != null ">and id like concat('%', #{id}, '%')</if>
+            <if test="warehouseId != null ">and warehouse_id = #{warehouseId}</if>
+            <if test="zoneId != null ">and zone_id = #{zoneId}</if>
+            <if test="zoneName != null ">and zone_name = #{zoneName}</if>
+            <if test="locationNo != null  and locationNo != ''">and location_no like concat('%', #{locationNo}, '%')
+            </if>
+            <if test="agvStation != null  and agvStation != ''">and agv_station like concat('%', #{agvStation}, '%')
+            </if>
+            <if test="stockStatus != null  and stockStatus != ''">and stock_status = #{stockStatus}</if>
+            <if test="isEmpty != null  and isEmpty != ''">and is_empty = #{isEmpty}</if>
+            <if test="locationType != null  and locationType != ''">and location_type = #{locationType}</if>
+            and id not in(
+            SELECT
+            location_from AS id
+            FROM
+            wcs_task
+            WHERE
+            state IN ( 1, 3, 4, 5, 8, 9, 10 )
+            UNION
+            SELECT
+            location_to AS id
+            FROM
+            wcs_task
+            WHERE
+            state IN ( 1, 3, 4, 5, 8, 9, 10 ))
+            order by row_no + 0,row_index,shift_no + 0,shift_index,col_no + 0,col_index
+        </where>
+
+    </select>
 </mapper>

+ 15 - 0
warewms-tianao/pom.xml

@@ -45,6 +45,21 @@
             <artifactId>warewms-ams</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.rholder</groupId>
+            <artifactId>guava-retrying</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.xingshuangs</groupId>
+            <artifactId>iot-communication</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.paho</groupId>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+            <version>1.2.2</version>
+        </dependency>
     </dependencies>
 
 </project>