From a74f1fdfccee2fb9df74c21f8137150b17a05eba Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期二, 15 十月 2024 15:26:02 +0800
Subject: [PATCH] 1、原片仓储逻辑完成60%

---
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java                  |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml         |   16 ++
 hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java                                                   |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java |   17 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java                                      |   14 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java                                     |    6 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java            |   15 +
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java                        |    9 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java                                        |   72 ++-------
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java          |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |   19 ++
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml                                                       |   32 ++++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java                                               |  201 ++++++++++++++++++++++++++++
 13 files changed, 343 insertions(+), 70 deletions(-)

diff --git a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java
index 5276365..b8a29ac 100644
--- a/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java
+++ b/hangzhoumesParent/common/opcuaClient/src/main/java/com/mes/milo/model/ReadWriteEntity.java
@@ -23,4 +23,8 @@
     private Object value;
 
     private DataValue dataValue;
+
+    public String getValueString() {
+        return (String) this.value;
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index 6b9a1de..46c9d01 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -180,4 +180,23 @@
     public static final Integer UNLOAD_GLASS_OUT = 1;
     public static final Integer UNLOAD_GLASS_DOWN = 2;
 
+
+    /**
+     * 鍘熺墖浠撳偍浠诲姟绫诲瀷
+     * 杩涚墖浠诲姟1
+     * 鍑虹墖浠诲姟2
+     */
+    public static final Integer RAW_GLASS_TASK_TYPE_IN = 1;
+    public static final Integer RAW_GLASS_TASK_TYPE_OUT = 2;
+    public static final Integer RAW_GLASS_TASK_TYPE_DISPATCH = 3;
+
+    /**
+     * 鍘熺墖浠撳偍浠诲姟绫诲瀷
+     * 杩涚墖浠诲姟1
+     * 鍑虹墖浠诲姟2
+     */
+    public static final Integer ENGINEERING_NEW = 0;
+    public static final Integer ENGINEERING_RUNNING = 1;
+
+
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java
new file mode 100644
index 0000000..eda97c0
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/vo/UpPattenUsageVO.java
@@ -0,0 +1,14 @@
+package com.mes.uppattenusage.entity.vo;
+
+import com.mes.uppattenusage.entity.UpPattenUsage;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/10/12 15:43
+ * @Description:
+ */
+@Data
+public class UpPattenUsageVO extends UpPattenUsage {
+    private String groupNumber;
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
index 154e50d..42e4308 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/mapper/UpPattenUsageMapper.java
@@ -2,7 +2,10 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.uppattenusage.entity.UpPattenUsage;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,4 +17,5 @@
  */
 public interface UpPattenUsageMapper extends MPJBaseMapper<UpPattenUsage> {
 
+    List<UpPattenUsageVO> queryRawGlassByEngineeringId(@Param("engineeringId") String engineerId);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml
new file mode 100644
index 0000000..951829c
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/UpPattenUsageMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.uppattenusage.mapper.UpPattenUsageMapper">
+
+    <resultMap id="baseMap" type="com.mes.uppattenusage.entity.vo.UpPattenUsageVO">
+        <result column="id" property="id"/>
+        <result column="engineering_id" property="engineeringId"/>
+        <result column="films_id" property="filmsId"/>
+        <result column="width" property="width"/>
+        <result column="height" property="height"/>
+        <result column="thickness" property="thickness"/>
+        <result column="layout_sequence" property="layoutSequence"/>
+        <result column="state" property="state"/>
+        <result column="group_number" property="groupNumber"/>
+    </resultMap>
+    <select id="queryRawGlassByEngineeringId" resultType="com.mes.uppattenusage.entity.vo.UpPattenUsageVO">
+        SET @prev_width := NULL;
+        SET @prev_height := NULL;
+        SET @counter := 0;
+
+        SELECT t.*,
+               @counter := IF(@prev_width = width and @prev_height = height, @counter, @counter + 1) AS group_number,
+               @prev_width := width,
+               @prev_height := height
+        FROM up_patten_usage t
+        where t.engineering_id = #{engineeringId}
+          and t.state = 0
+        ORDER BY t.layout_sequence
+    </select>
+
+
+</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
index a06a933..a3c0e25 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
@@ -2,10 +2,7 @@
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.json.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
-import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
 import com.mes.rawglassstation.service.RawGlassStorageStationService;
 import com.mes.rawglasstask.entity.RawGlassStorageTask;
 import com.mes.rawglasstask.service.RawGlassStorageTaskService;
@@ -16,7 +13,6 @@
 
 import javax.annotation.Resource;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author wangfei
@@ -25,56 +21,26 @@
 @Component
 public class RawGlassPushMessage {
 
-  @Resource private RawGlassStorageStationService rawGlassStorageStationService;
+    @Resource
+    private RawGlassStorageStationService rawGlassStorageStationService;
 
-  @Resource private RawGlassStorageTaskService rawGlassStorageTaskService;
+    @Resource
+    private RawGlassStorageTaskService rawGlassStorageTaskService;
 
-  @Resource private RawGlassStorageDetailsService rawGlassStorageDetailsService;
-
-  @Scheduled(fixedDelay = 2000)
-  public void sendRawGlassMessage() {
-    log.info("鍙戦�佷换鍔′俊鎭拰鏋跺瓙淇℃伅");
-    JSONObject jsonObject = new JSONObject();
-    List<RawGlassStorageDetails> rawStationDetailsList =
-        rawGlassStorageStationService.listRawGlassDetails();
-    List<RawGlassStorageTask> tasks = rawGlassStorageTaskService.listRawGlassTask();
-    jsonObject.append("rawStationDetailsList", rawStationDetailsList);
-    jsonObject.append("tasks", tasks);
-//    log.info("鑾峰彇鍒扮殑宸ヤ綅璇︽儏鍙婁换鍔′俊鎭负锛歿}", jsonObject);
-
-    List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("rawGlass");
-    if (CollectionUtil.isNotEmpty(sendwServer)) {
-      sendwServer.stream().forEach(e->{
-        e.sendMessage(String.valueOf(jsonObject));
-      });
+    @Scheduled(fixedDelay = 2000)
+    public void sendRawGlassMessage() {
+        log.info("鍙戦�佷换鍔′俊鎭拰鏋跺瓙淇℃伅");
+        JSONObject jsonObject = new JSONObject();
+        List<RawGlassStorageDetails> rawStationDetailsList =
+                rawGlassStorageStationService.listRawGlassDetails();
+        List<RawGlassStorageTask> tasks = rawGlassStorageTaskService.listRawGlassTask();
+        jsonObject.append("rawStationDetailsList", rawStationDetailsList);
+        jsonObject.append("tasks", tasks);
+        List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("rawGlass");
+        if (CollectionUtil.isNotEmpty(sendwServer)) {
+            sendwServer.stream().forEach(e -> {
+                e.sendMessage(String.valueOf(jsonObject));
+            });
+        }
     }
-  }
-
-  /** todo:鍏ュ簱浠诲姟锛氬悐瑁呬綅鏈夌幓鐠冿紝鍏堝幓宸ヤ綅琛ㄦ煡璇㈢┖鏍煎瓙锛岀敓鎴愬叆搴撲换鍔′粠鍚婅浣嶅埌鐩爣鏍煎瓙 */
-//  @Scheduled(fixedDelay = 1000)
-//  public void sendRawGlassMessage() {
-////    List<RawGlassStorageDetails> rawGlassStorageDetailsList = rawGlassStorageDetailsService.List(new RawGlassStorageDetails())
-//    Wrapper<RawGlassStorageDetails> queryWrapper = null;
-//    List<RawGlassStorageDetails> detailsList = rawGlassStorageDetailsService.list(null);
-//    queryWrapper.eq(RawGlassStorageDetails::getState, 100);
-//  if(detailsList.size() >0){
-//    //鏌ユ壘鏍煎瓙琛╠etails绌烘牸瀛�
-//    List<String> slotIds = detailsList.stream()
-//            .map(RawGlassStorageDetails::getSlotId)
-//            .collect(Collectors.toList());
-//    list(new LambdaQueryWrapper<RawGlassStorageTask>()
-//            .in(CollectionUtil.isNotEmpty(request.getState()), RawGlassStorageTask::getState, request.getState())
-//            .in(CollectionUtil.isNotEmpty(request.getSlotId()), RawGlassStorageTask::getSlotId, request.getSlotId())
-//            .orderByDesc(RawGlassStorageTask::getCreateTime));
-//  }if(slotIds.size()>0){
-//      //鐢熸垚鍏ュ簱浠诲姟
-//    }
-//
-//  }
-
-
-
-  /** todo:鍑哄簱浠诲姟锛�1銆佺偣鍑哄簱锛岀珛椹敓鎴愬嚭鐗囦换鍔� 2銆佺偣鍑哄簱淇敼宸ヤ綅璇︽儏鍐呯殑鐘舵�佷负寰呭嚭搴擄紝瀹氭椂浠诲姟鎵弿鐢熸垚鍑哄簱浠诲姟 */
-
-  /** todo:鍘熺墖璋冨害锛�1銆佹煡璇㈠伐绋嬪師鐗囪〃锛屾寜鐓ч『搴忓皢鍘熺墖鏀惧叆涓婄墖1鍙蜂綅锛屽悗缁師鐗囨斁涓婄墖2鍙蜂綅锛屽嚭鐜板昂瀵告浛鎹紝鍒ゆ柇鍘熶笂鐗囦綅鏄惁鏈夌幓鐠冿紝鏈� 鍏堝嚭鍚庤繘锛屾棤 鐩存帴杩涚墖 */
 }
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
new file mode 100644
index 0000000..6040484
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -0,0 +1,201 @@
+package com.mes.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mes.common.config.Const;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.mapper.EngineeringMapper;
+import com.mes.milo.model.ReadWriteEntity;
+import com.mes.milo.service.MiloService;
+import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
+import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
+import com.mes.rawglassstation.entity.RawGlassStorageStation;
+import com.mes.rawglassstation.service.RawGlassStorageStationService;
+import com.mes.rawglasstask.entity.RawGlassStorageTask;
+import com.mes.rawglasstask.service.RawGlassStorageTaskService;
+import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
+import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/10/11 16:13
+ * @Description:
+ */
+@Slf4j
+@Component
+public class RawGlassTask {
+
+    @Autowired
+    private RawGlassStorageStationService rawGlassStorageStationService;
+    @Autowired
+    private RawGlassStorageDetailsService rawGlassStorageDetailsService;
+
+    @Autowired
+    private RawGlassStorageTaskService rawGlassStorageTaskService;
+
+    @Resource
+    private EngineeringMapper engineeringMapper;
+    @Resource
+    private UpPattenUsageMapper upPattenUsageMapper;
+
+    @Autowired
+    private MiloService miloService;
+
+    private static final List<String> liftingStation = Arrays.asList("1", "2");
+    private static final List<String> loadGlassStation = Arrays.asList("3", "4", "5", "6");
+
+    /**
+     * 鍏ュ簱浠诲姟锛氬悐瑁呬綅鏈夌幓鐠冿紝鍏堝幓宸ヤ綅琛ㄦ煡璇㈢┖鏍煎瓙锛岀敓鎴愬叆搴撲换鍔′粠鍚婅浣嶅埌鐩爣鏍煎瓙
+     *
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 1000)
+    public void warehouseTask() throws Exception {
+        ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
+        String value = entity.getValueString();
+        if (!"1".equals(value)) {
+            log.info("澶ц溅蹇欑");
+            return;
+        }
+        List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
+                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
+                .inSql(RawGlassStorageDetails::getSlotId, "select slot from raw_glass_storage_station where enable_state = 1 and slot in (1,2)"));
+        if (CollectionUtil.isEmpty(rawGlassList)) {
+            log.info("鍚婅浣嶈绂佺敤鎴栨病鏈夌幓鐠�");
+            return;
+        }
+        //鏌ヨ宸ヤ綅淇℃伅鏄惁鏈�
+        List<RawGlassStorageStation> stationList = rawGlassStorageStationService.list(new LambdaQueryWrapper<RawGlassStorageStation>().notInSql(RawGlassStorageStation::getSlot, "select slot_id from raw_glass_storage_details where state = '100'")
+                .eq(RawGlassStorageStation::getEnableState, Const.SLOT_ON));
+        if (CollectionUtil.isEmpty(stationList)) {
+            log.info("娌℃湁绌虹殑宸ヤ綅");
+            return;
+        }
+        //鐢熸垚杩涚浠诲姟
+        generateTask(rawGlassList.get(0).getSlotId(), stationList.get(0).getSlot(),
+                rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
+        //鐢熸垚宸ヤ綅浠诲姟锛屽皢鍚婅浣嶇殑鐜荤拑鐘舵�佹敼浣嶈繘绗间腑
+    }
+
+
+    /**
+     * 鍑哄簱浠诲姟锛�1銆佺偣鍑哄簱锛岀珛椹敓鎴愬嚭鐗囦换鍔� 2銆佺偣鍑哄簱淇敼宸ヤ綅璇︽儏鍐呯殑鐘舵�佷负寰呭嚭搴擄紝瀹氭椂浠诲姟鎵弿鐢熸垚鍑哄簱浠诲姟
+     */
+    @Scheduled(fixedDelay = 1000)
+    public void outboundTask() throws Exception {
+        ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
+        String value = entity.getValueString();
+        if (!"2".equals(value)) {
+            log.info("澶ц溅蹇欑");
+            return;
+        }
+        List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
+                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT_ING)
+                .inSql(RawGlassStorageDetails::getSlotId, "select slot from raw_glass_storage_station where enable_state = 1 and slot not in (1,2)"));
+        if (CollectionUtil.isEmpty(rawGlassList)) {
+            log.info("绯荤粺娌℃湁闇�瑕佸嚭搴撶殑鍘熺墖淇℃伅");
+            return;
+        }
+        List<Integer> emptyLeftingList = rawGlassStorageDetailsService.listBySlotState(liftingStation, Arrays.asList(Const.GLASS_STATE_IN));
+        if (CollectionUtil.isEmpty(emptyLeftingList)) {
+            log.info("鍚婅浣嶅綋鍓嶉兘鏈夊師鐗囷紝缁撴潫鍑虹墖浠诲姟");
+        }
+        //鐢熸垚鍑哄簱浠诲姟
+        generateTask(rawGlassList.get(0).getSlotId(), emptyLeftingList.get(0),
+                rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT);
+    }
+
+    /**
+     * 鍘熺墖璋冨害锛�1銆佹煡璇㈠伐绋嬪師鐗囪〃锛屾寜鐓ч『搴忓皢鍘熺墖鏀惧叆涓婄墖1鍙蜂綅锛屽悗缁師鐗囨斁涓婄墖2鍙蜂綅锛屽嚭鐜板昂瀵告浛鎹紝鍒ゆ柇鍘熶笂鐗囦綅鏄惁鏈夌幓鐠冿紝鏈� 鍏堝嚭鍚庤繘锛屾棤 鐩存帴杩涚墖
+     */
+    @Scheduled(fixedDelay = 1000)
+    public void rawGlassDispatchTask() throws Exception {
+        ReadWriteEntity entity = miloService.readFromOpcUa("rawglass.device.request");
+        String value = entity.getValueString();
+        if (!"2".equals(value)) {
+            log.info("澶ц溅蹇欑");
+            return;
+        }
+        //鏌ヨ褰撳墠绯荤粺姝e湪鎵ц鐨勮鍗�
+        Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>().eq(Engineering::getState, Const.ENGINEERING_RUNNING).last("order by id limit 1"));
+        if (null == engineering) {
+            log.info("娌℃湁姝e湪鎵ц鐨勫伐绋�");
+            return;
+        }
+        //褰撳墠灏哄闇�瑕佷笂鐗囩殑鏁伴噺
+        List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(engineering.getEngineerId());
+        Map<String, List<UpPattenUsageVO>> upListMap = pattenUsageList.stream()
+                .collect(Collectors.groupingBy(UpPattenUsageVO::getGroupNumber));
+        //todo:鎸夌収宸ョ▼鍙锋寜鐓у伐绋嬩笅鏈畬鎴愮殑灏哄鐨勯『搴忥紝褰�1鍙蜂笂鐗囦綅鏋跺瓙涓婄殑褰撳墠灏哄鐜荤拑灏戜簬3鐗囦笖2鍙蜂笂鐗囦綅鏃犲師鐗囩幓鐠冿紝鍒欏皢鍘昏皟搴︾幓鐠冨幓2鍙蜂笂鐗囦綅锛�
+        //todo:褰撲竴鍙蜂笂鐗囦綅鏋跺瓙涓婄殑鐜荤拑浣嶇┖鎴栬�呭綋鍓嶅昂瀵哥敤瀹屾椂鏃讹紝灏�2鍙凤紙鏈夌幓鐠冿級涓婄墖浣嶈皟搴﹀埌1鍙蜂笂鐗囦綅
+        //1銆佹煡璇�4涓笂鐗囩殑鍘熺墖璇︽儏
+        List<RawGlassStorageDetails> rawGlassDetailsList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>()
+                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN).in(RawGlassStorageDetails::getSlotId, loadGlassStation));
+        if (CollectionUtils.isEmpty(rawGlassDetailsList)) {
+            //琛ㄧず1涓婄墖浣嶆病鏈夊師鐗囷紝鐩存帴鎵惧師鐗囨斁鍏ュ搴旂殑涓婄墖浣�
+            //缁撴潫璋冨害浠诲姟
+        }
+        Map<Integer, List<RawGlassStorageDetails>> listMap = rawGlassDetailsList.stream().collect(Collectors.groupingBy(RawGlassStorageDetails::getSlotId));
+        RawGlassStorageDetails rawGlass03Details = listMap.get(3).get(0);
+        RawGlassStorageDetails rawGlass04Details = listMap.get(4).get(0);
+//        RawGlassStorageDetails rawGlass05Details = listMap.get(5).get(0);
+//        RawGlassStorageDetails rawGlass06Details = listMap.get(6).get(0);
+        //todo:涓婄墖1鍙蜂綅2绉嶆竻绌烘柟寮忥細鏂瑰紡涓�锛氬師鐗囩敤瀹�  鏂瑰紡浜岋細褰撳墠灏哄鐢ㄥ畬
+        if (null == rawGlass03Details) {
+            if (null == rawGlass04Details) {
+                //琛ㄧず1涓婄墖浣嶆病鏈夊師鐗囷紝鐩存帴鎵惧師鐗囨斁鍏ュ搴旂殑涓婄墖浣�
+                //缁撴潫璋冨害浠诲姟
+            } else {
+                //灏�2鍙蜂笂鐗囦綅鐨勫師鐗囨斁鍏�1鍙蜂笂鐗囦綅
+                //缁撴潫璋冨害浠诲姟
+            }
+        } else {
+            //鍘熺墖鍓╀綑鏁伴噺
+            Integer quantity = rawGlass03Details.getRemainQuantity();
+            List<UpPattenUsageVO> upPattenUsage01VOS = upListMap.get("1");
+            if (null == rawGlass04Details) {
+                //todo:鍒ゆ柇2鍙蜂笂鐗囦綅闇�瑕佺殑鍘熺墖淇℃伅
+                if (quantity < upPattenUsage01VOS.size()) {
+                    //todo:缁х画涓婁竴鍙蜂笂鐗囦綅褰撳墠鐨勫昂瀵�
+                } else {
+                    //todo:鍒囨崲灏哄锛屼笂鍚庣画缁勭殑灏哄
+                    List<UpPattenUsageVO> upPattenUsage02VOS = upListMap.get("2");
+                }
+            }
+        }
+
+
+    }
+
+
+    /**
+     * 鐢熸垚鍘熺墖浠撳偍浠诲姟
+     *
+     * @param startSlot
+     * @param endSlot
+     * @param patternQuantity
+     * @param taskType
+     * @return
+     */
+    private boolean generateTask(int startSlot, int endSlot, Integer patternQuantity, int taskType) {
+        RawGlassStorageTask task = RawGlassStorageTask.builder()
+                .originateSlot(startSlot)
+                .endSlot(endSlot)
+                .patternQuantity(patternQuantity)
+                .taskType(taskType)
+                .createTime(new Date()).build();
+        return rawGlassStorageTaskService.save(task);
+    }
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
index 1f99472..2a339bb 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
@@ -33,7 +33,7 @@
     /**
      * 鏍煎瓙id
      */
-    private String slotId;
+    private Integer slotId;
 
     /**
      * 鍘熺墖瀹�
@@ -63,7 +63,7 @@
     /**
      * 鍓╀綑鏁伴噺
      */
-    private String remainQuantity;
+    private Integer remainQuantity;
 
 
     /**
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
index 868b2fd..46441d4 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/RawGlassStorageDetailsMapper.java
@@ -1,11 +1,14 @@
 package com.mes.rawglassdetails.mapper;
 
-import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
- *  Mapper 鎺ュ彛
+ * Mapper 鎺ュ彛
  * </p>
  *
  * @author wf
@@ -13,4 +16,12 @@
  */
 public interface RawGlassStorageDetailsMapper extends BaseMapper<RawGlassStorageDetails> {
 
+    /**
+     * 鎸夌収鍚婅浣嶅拰璇︽儏琛ㄧ姸鎬佹煡璇㈢┖闂茬殑鍚婅浣�
+     *
+     * @param liftingStation
+     * @param state
+     * @return
+     */
+    List<Integer> listBySlotState(@Param("leftingStation") List<String> liftingStation, @Param("state") List<Integer> state);
 }
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
index 454dde2..f13945e 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/mapper/xml/RawGlassStorageDetailsMapper.xml
@@ -1,5 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="glassdetails.mapper.RawGlassStorageDetailsMapper">
+<mapper namespace="com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper">
 
+    <select id="listBySlotState" resultType="java.lang.Integer">
+        select t.slot
+        from raw_glass_storage_station t
+        inner JOIN raw_glass_storage_details t1
+        on t.slot = t1.slot_id and t.enable_state = 1
+        and t.slot in
+        <foreach collection="leftingStation" item="item" open='(' close=')' separator=','>
+            #{item}
+        </foreach>
+        and t1.state not in
+        <foreach collection="state" item="item" open='(' close=')' separator=','>
+            #{item}
+        </foreach>
+    </select>
 </mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
index e05c291..cd7ad71 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -1,10 +1,8 @@
 package com.mes.rawglassdetails.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.mes.entity.request.GeneralRequest;
 import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
 import com.mes.rawglassdetails.entity.request.RawGlassRequest;
-import com.mes.userinfo.entity.vo.SysUserVO;
 
 import java.util.List;
 
@@ -39,4 +37,6 @@
     String deleteWarehousing(Long slotId);
 
     String outWarehousing(Long slotId);
+
+    List<Integer> listBySlotState(List<String> liftingStation, List<Integer> state);
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
index 8be12b1..e608d50 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -8,8 +8,6 @@
 import com.mes.rawglassdetails.entity.request.RawGlassRequest;
 import com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper;
 import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
-import com.mes.rawglassstation.entity.RawGlassStorageStation;
-import com.mes.userinfo.entity.vo.SysUserVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -24,8 +22,8 @@
 @Service
 @Slf4j
 public class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
-  @Override
-  public boolean deleteRawGlassStorageDetails(String device_id) {
+    @Override
+    public boolean deleteRawGlassStorageDetails(String device_id) {
         QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("device_id", device_id);
         return remove(queryWrapper);//remove鎵嶆槸鍒犻櫎锛宒elete寰楃敤鍙﹀鐨勪緷璧栵紝榛樿鏂规硶鏄痳emove杩斿洖bool
@@ -60,17 +58,24 @@
                         .eq(RawGlassStorageDetails::getSlotId, request.getSlotId()));
         return "success";
     }
+
     @Override
     public String deleteWarehousing(Long slotId) {
         update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
-                .set(RawGlassStorageDetails::getState,Const.GLASS_STATE_OUT));
+                .set(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT));
         return "success";
     }
+
     @Override
     public String outWarehousing(Long slotId) {
         update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlotId, slotId)
-                .set(RawGlassStorageDetails::getState,Const.GLASS_STATE_OUT_ING));
+                .set(RawGlassStorageDetails::getState, Const.GLASS_STATE_OUT_ING));
         return "success";
     }
 
+    @Override
+    public List<Integer> listBySlotState(List<String> liftingStation, List<Integer> state) {
+        return baseMapper.listBySlotState(liftingStation, state);
+    }
+
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
index 8c6a3be..5346dee 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
@@ -2,20 +2,23 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author wf
  * @since 2024-09-10
  */
 @Data
+@Builder
 @EqualsAndHashCode(callSuper = false)
 public class RawGlassStorageTask implements Serializable {
 
@@ -38,7 +41,7 @@
     /**
      * 鍘熺墖鏁伴噺
      */
-    private String patternQuantity;
+    private Integer patternQuantity;
 
     /**
      * 浠诲姟绫诲瀷
@@ -53,7 +56,7 @@
     /**
      * 鍒涘缓鏃堕棿
      */
-    private String createTime;
+    private Date createTime;
 
 
 }

--
Gitblit v1.8.0