ZengTao
2024-05-20 09381335e11d32e01c8067b71d897c7064ec279d
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -1,5 +1,6 @@
package com.mes.edgstoragecage.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -20,7 +21,7 @@
/**
 * <p>
 *  服务实现类
 * 服务实现类
 * </p>
 *
 * @author zhoush
@@ -37,44 +38,50 @@
    @Override
    public EdgStorageCage selectNearestEmpty(int currentSlot) {
        return this.selectJoinOne(EdgStorageCage.class,new MPJLambdaWrapper<EdgStorageCage>()
        List<EdgStorageCage> emptyList = this.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
                .selectAll(EdgStorageCage.class)
                .leftJoin(EdgStorageCageDetails.class,on->on
                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot)
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                .isNull(EdgStorageCageDetails::getSlot)
                .last("order by abs(slot - 4)  asc limit 1")
                .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
        );
        if (CollectionUtil.isEmpty(emptyList) || emptyList.size() < 2) {
            return null;
        }
        return emptyList.get(0);
    }
    /**
     * 查询笼内空格
     *
     * @return
     */
    @Override
    public List<EdgStorageCage> selectCacheEmpty(){
        return baseMapper.selectJoinList(EdgStorageCage.class,new MPJLambdaWrapper<EdgStorageCage>()
    public List<EdgStorageCage> selectCacheEmpty() {
        return baseMapper.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
                .selectAll(EdgStorageCage.class)
                .leftJoin(EdgStorageCageDetails.class,on->on
                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState,"100"))
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState, "100"))
                .isNull(EdgStorageCageDetails::getSlot)
                .last("order by abs(slot - 4)  asc")
                .last("order by abs(t.slot - 4)  asc")
        );
    }
    /**
     * 查询笼内出片任务   按钢化版图号+版图内序号
     *
     * @return
     */
    @Override
    public List<Map<String, Object>> selectCacheOut(){
    public List<Map<String, Object>> selectCacheOut() {
        return upPattenUsageMapper.selectJoinMaps(JoinWrappers.lambda(UpPattenUsage.class).selectAll(UpPattenUsage.class)
                .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getGlassId)
                .leftJoin(EdgStorageCageDetails.class,on->on
                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
                .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight, EdgStorageCageDetails::getGlassId)
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot))
                .isNull(EdgStorageCageDetails::getSlot)
        );
//        return upPattenUsageMapper.selectJoinMaps(new MPJQueryWrapper<UpPattenUsage>().selectAll(UpPattenUsage.class)
@@ -87,17 +94,18 @@
    /**
     * 理片缓存详情
     *
     * @return
     */
    @Override
    public List<Map<String, Object>> selectEdgStorageCages(){
    public List<Map<String, Object>> selectEdgStorageCages() {
        return baseMapper.selectJoinMaps(JoinWrappers.lambda(EdgStorageCage.class)
                .selectAll(EdgStorageCage.class)
                .selectAs(EdgStorageCageDetails::getId,"esdId")
                .select(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails::getWidth,EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getId)
                .leftJoin(EdgStorageCageDetails.class,on->on
                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
                .selectAs(EdgStorageCageDetails::getId, "esdId")
                .select(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight, EdgStorageCageDetails::getId)
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot))
        );
//        return baseMapper.selectJoinMaps(new MPJQueryWrapper<EdgStorageCage>().selectAll(EdgStorageCage.class)
//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
@@ -107,39 +115,41 @@
    /**
     * 修改理片笼信息 功能:对笼内栅格玻璃 【启用/禁用】
     *
     * @param edgStorageCage
     * @return
     */
    @Override
    public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage){
        EdgStorageCage edgItem=baseMapper.selectById(edgStorageCage.getId());
    public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage) {
        EdgStorageCage edgItem = baseMapper.selectById(edgStorageCage.getId());
        edgItem.setEnableState(edgStorageCage.getEnableState());
        baseMapper.updateById(edgItem);
        return true;
    }
    /**
     *修改理片笼信息 功能:对笼内栅格玻璃 【添加/删除/更换】
     * 修改理片笼信息 功能:对笼内栅格玻璃 【添加/删除/更换】
     *
     * @param edgStorageCageId
     * @param edgStorageCageDetails
     * @return
     */
    @Override
    public boolean updateEdgStorageCageDetails(int edgStorageCageId,EdgStorageCageDetails edgStorageCageDetails){
        EdgStorageCage edgItem=baseMapper.selectById(edgStorageCageId);
        log.info("正常"+edgItem);
        EdgStorageCageDetails edgDItem=edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
        if (edgItem!=null){
    public boolean updateEdgStorageCageDetails(int edgStorageCageId, EdgStorageCageDetails edgStorageCageDetails) {
        EdgStorageCage edgItem = baseMapper.selectById(edgStorageCageId);
        log.info("正常" + edgItem);
        EdgStorageCageDetails edgDItem = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
        if (edgItem != null) {
            //移除
            EdgStorageCageDetails result=edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot,edgStorageCageId));
            if (result!=null){
            EdgStorageCageDetails result = edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, edgStorageCageId));
            if (result != null) {
                result.setSlot(0);
                edgStorageCageDetailsMapper.updateById(result);
            }
            //添加
            if(edgDItem!=null){
            if (edgDItem != null) {
                //只传格子  :移除玻璃
                EdgStorageCageDetails newresult=edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
                EdgStorageCageDetails newresult = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
                newresult.setSlot(edgItem.getSlot());
                edgStorageCageDetailsMapper.updateById(newresult);
            }