zhoushihao
2024-07-24 9b3f76e38ea10241625cee9ea6e9fa69e792d38b
下片任务:fixbug 解决被禁用情况下仍有玻璃走禁用的线路
5个文件已修改
91 ■■■■ 已修改文件
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -2,6 +2,9 @@
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.downstorage.entity.DownStorageCageDetails;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -14,5 +17,5 @@
public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
    DownStorageCageDetails getGlassInfoMaxCount();
    DownStorageCageDetails getGlassInfoMaxCount(@Param(value = "workList") List<Integer> workList);
}
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -71,7 +71,7 @@
     */
    boolean DirectConnection(GlassInfo glassInfo);
    String getGlassInfoMaxCount(String glassId);
    String getGlassInfoMaxCount(String glassId, List<Integer> workList);
    /**
     * @param glassId
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -193,8 +193,8 @@
    }
    @Override
    public String getGlassInfoMaxCount(String glassId) {
        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount();
    public String getGlassInfoMaxCount(String glassId, List<Integer> workList) {
        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount(workList);
        return null == glassInfoMaxCount ? glassId : glassInfoMaxCount.getGlassId();
    }
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -375,7 +375,7 @@
            List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
            if (CollectionUtils.isEmpty(downGlassFlowList)) {
                //架子都未绑定流程卡,出笼内子数量最多尺寸最大的玻璃id,无  则返回扫描扫到的玻璃id进行出片
                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, workList);
                isBind = Boolean.TRUE;
                break loop;
            }
@@ -388,7 +388,7 @@
//                        .isNull(DownWorkstation::getFlowCardId));
                if (isEmptyShelf) {
                    //架子都未绑定流程卡,出笼内子数量最多尺寸最大的玻璃id,无  则返回扫描扫到的玻璃id进行出片
                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, workList);
                    isBind = Boolean.TRUE;
                    break loop;
                }
@@ -455,44 +455,24 @@
            return Boolean.FALSE;
        } else {
            //按照出片的玻璃id更新笼内的玻璃状态为已出片
            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails);
            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails, workList);
        }
    }
    public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean
            isBind, DownStorageCageDetails cageDetails) {
            isBind, DownStorageCageDetails cageDetails, List<Integer> workList) {
        //按玻璃id获取玻璃信息
        DownStorageCageDetails downStorageCageDetails = null;
        if (glassId.equals(cageDetails.getGlassId())) {
            downStorageCageDetails = cageDetails;
            taskType = 3;
            //将下片玻璃存入笼子详情信息表中
            //将任务插入理片笼详情表
            downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
            downStorageCageDetailsService.save(downStorageCageDetails);
        } else {
            downStorageCageDetails = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>()
                    .eq(DownStorageCageDetails::getGlassId, glassId).eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN));
        }
        Integer endCell = null;
        if (isBind) {
            //获取空架子信息,将空架子信息绑定流程卡
            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
                    .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
            if (null != emptyDownWorkstation) {
                log.info("获取到空架子信息,绑定流程卡");
                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
                endCell = emptyDownWorkstation.getWorkstationId();
                //将下片玻璃存入笼子详情信息表中
                //将任务插入理片笼详情表
                downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
                downStorageCageDetailsService.save(downStorageCageDetails);
            } else {
                log.info("没有空架子信息,无法绑定流程卡");
                return Boolean.FALSE;
            }
        } else {
            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
            endCell = workstation.getWorkstationId();
            if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
                    .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
                log.info("更新详情表内的状态成功");
@@ -502,6 +482,25 @@
                return Boolean.FALSE;
            }
        }
        Integer endCell = null;
        if (isBind) {
            //获取空架子信息,将空架子信息绑定流程卡
            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
                    .isNull(DownWorkstation::getFlowCardId).in(DownWorkstation::getWorkstationId, workList).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
            if (null != emptyDownWorkstation) {
                log.info("获取到空架子信息,绑定流程卡");
                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
                endCell = emptyDownWorkstation.getWorkstationId();
            } else {
                log.info("没有空架子信息,无法绑定流程卡");
                return Boolean.FALSE;
            }
        } else {
            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
            endCell = workstation.getWorkstationId();
        }
        //更新落架玻璃数量
        if (endCell == 7) {
            downWorkstationService.update(new UpdateWrapper<DownWorkstation>().eq("flow_card_id", downStorageCageDetails.getFlowCardId())
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
@@ -25,16 +25,23 @@
        SELECT *
        FROM DOWN_STORAGE_CAGE_DETAILS
        WHERE (FLOW_CARD_ID, LAYER) = (SELECT FLOW_CARD_ID, LAYER
                                       FROM DOWN_STORAGE_CAGE_DETAILS
                                       WHERE STATE = 100
                                       GROUP BY FLOW_CARD_ID, LAYER
                                       ORDER BY COUNT(FLOW_CARD_ID) DESC
            LIMIT 1 )
          AND STATE = 100
        FROM DOWN_STORAGE_CAGE_DETAILS
        WHERE STATE = 100
        and (FLOW_CARD_ID, LAYER) not in (
        select FLOW_CARD_ID, LAYER from down_workstation where 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 )
        AND STATE = 100
        ORDER BY
            WIDTH DESC,
            HEIGHT DESC
            LIMIT 1
        WIDTH DESC,
        HEIGHT DESC
        LIMIT 1
    </select>