hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -33,5 +33,13 @@ * @param isDownload 是否获取未落架玻璃信息 True 已落架 false 未落架 * @return */ List<DownGlassInfoDTO> queryWorkStationIsIn(@Param(value = "isDownload") Boolean isDownload); List<DownGlassInfoDTO> queryWorkStationIsIn(@Param(value = "workList") List<Integer> workList, @Param(value = "isDownload") Boolean isDownload); /** * 获取 * * @param workList * @return */ List<DownGlassInfoDTO> queryWorkStationFlowCard(@Param(value = "workList") List<Integer> workList); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -32,7 +32,15 @@ * @param isDownload true/false * @return */ List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload); List<DownGlassInfoDTO> queryWorkStationIsIn(List<Integer> workList, Boolean isDownload); /** * 获取指定架子已绑定流程卡的架子未落玻璃的数据信息 * * @param workList 指定的架子号 * @return */ List<DownGlassInfoDTO> queryWorkStationFlowCard(List<Integer> workList); /** * 生成出片任务 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -65,8 +65,15 @@ } @Override public List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload) { return baseMapper.queryWorkStationIsIn(isDownload); public List<DownGlassInfoDTO> queryWorkStationIsIn(List<Integer> workList, Boolean isDownload) { //按照要求获取已落架/未落架的玻璃信息 return baseMapper.queryWorkStationIsIn(workList, isDownload); } @Override public List<DownGlassInfoDTO> queryWorkStationFlowCard(List<Integer> workList) { //获取已绑定流程卡的架子未落玻璃的数据信息 return baseMapper.queryWorkStationFlowCard(workList); } @Override hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -71,12 +71,19 @@ */ boolean DirectConnection(GlassInfo glassInfo); /** * 获取当前非本架子可落架的玻璃信息 * * @param glassId * @param workList G06/G11:传入G06实际获取的为可落架G11的玻璃 反之同理 * @return */ String getGlassInfoMaxCount(String glassId, List<Integer> workList); /** * @param glassId * @param ControlsId * @return 破损 * @return 破损 */ boolean identWorn(String glassId, int ControlsId); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -170,7 +170,7 @@ } if (!checkFlag) { log.info("无空架子,获取已绑定架子的流程卡信息,查看玻璃信息是否可被对调"); List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.FALSE); List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Const.WORK_STATION_ALL, Boolean.FALSE); log.info("获取架子上已绑定流程卡落架的数量及未落架的玻璃数据:{}", downGlassInfoDTOList); if (CollectionUtils.isEmpty(downGlassInfoDTOList)) { log.info("已绑定流程卡均无未落架玻璃,请及时处理架子上的玻璃,清除流程卡,执行进片任务"); @@ -309,6 +309,7 @@ } } List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6); //获取非本次落架的架子信息 List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList()); List<DownStorageCageDetails> list = new ArrayList(); //是否有空架子 true:有 false:无 @@ -387,12 +388,12 @@ loop: if (StringUtils.isBlank(tempGlassId)) { //获取正在落架的绑定流程卡的信息(流程卡、层数、落架数量) List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE); //todo:落架玻璃数为0,即使绑定了流程卡,也无法找到对应的架子信息,只能重新绑定 List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationFlowCard(workList); List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList()); if (CollectionUtils.isEmpty(downGlassFlowList)) { //架子都未绑定流程卡,出笼内子数量最多尺寸最大的玻璃id,无 则返回扫描扫到的玻璃id进行出片 tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList); isNeedBind = Boolean.TRUE; break loop; } @@ -527,6 +528,7 @@ //落架片序 downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer())); downGlassInfo.setWorkStationId(endCell); downGlassInfo.setGmtCreate(new Date()); downGlassInfoService.save(downGlassInfo); //生成任务信息 GlassInfo glassInfo = new GlassInfo(); hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
@@ -58,16 +58,36 @@ AND T.LAYER = T1.LAYER LEFT JOIN DOWN_GLASS_INFO T2 ON T1.GLASS_ID = T2.GLASS_ID <where> t.workstation_id in <foreach collection="workList" item="item" open='(' close=')' separator=','> #{item} </foreach> <if test="!isDownload"> AND T2.GLASS_ID IS NULL </if> <if test="isDownload"> AND T2.GLASS_ID IS not NULL </if> </where> ORDER BY T.RACKS_NUMBER DESC, T1.TEMPERING_LAYOUT_ID, T1.TEMPERING_FEED_SEQUENCE DESC </select> <select id="queryWorkStationFlowCard" resultMap="downGlassInfo"> SELECT T.FLOW_CARD_ID, T.LAYER, T.RACKS_NUMBER FROM DOWN_WORKSTATION T where (t.flow_card_id is not null and t.flow_card_id != '') and t.workstation_id in <foreach collection="workList" item="item" open='(' close=')' separator=','> #{item} </foreach> ORDER BY T.RACKS_NUMBER DESC </select> </mapper> hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
@@ -28,12 +28,11 @@ FROM DOWN_STORAGE_CAGE_DETAILS WHERE STATE = 100 and (FLOW_CARD_ID, LAYER) not in ( select FLOW_CARD_ID, LAYER from down_workstation where flow_card_id is not null and workstation_id not in select FLOW_CARD_ID, LAYER from down_workstation where flow_card_id is not null and workstation_id in <foreach collection="workList" item="item" open='(' close=')' separator=','> #{item} </foreach> ) GROUP BY FLOW_CARD_ID, LAYER ORDER BY COUNT(FLOW_CARD_ID) DESC LIMIT 1 )