ZengTao
4 天以前 21a76af55c4da5f1999e9dd24690b2449a7a18a7
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -1,77 +1,153 @@
package com.mes.edgstoragecage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import cn.hutool.core.collection.CollectionUtil;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.entity.vo.EdgSlotRemainVO;
import com.mes.edgstoragecage.entity.vo.EdgStorageCageVO;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.service.EdgStorageCageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 *  服务实现类
 * 服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-07
 */
@Slf4j
@Service
public class EdgStorageCageServiceImpl extends ServiceImpl<EdgStorageCageMapper, EdgStorageCage> implements EdgStorageCageService {
public class EdgStorageCageServiceImpl extends MPJBaseServiceImpl<EdgStorageCageMapper, EdgStorageCage> implements EdgStorageCageService {
    @Autowired
    EdgStorageCageMapper edgStorageCageMapper;
    @Autowired
    @Resource
    EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
    @Autowired
    DamageService damageService;
    @Override
    //查询笼内空格   EdgStorageCage as esc left join EdgStorageCageDetails as escd esc.device_id=escd.device_id
    public List<EdgStorageCage> selectCacheEmpty(){
        List<EdgStorageCage> listEdgStorageCage= edgStorageCageMapper.selectList(null);
        ;
        List<EdgStorageCageDetails> orderList = listEdgStorageCage.stream()
                .flatMap(user -> edgStorageCageDetailsMapper.selectList(
                        new QueryWrapper<EdgStorageCageDetails>().eq("user_id", user.getId())).stream()
                )
                .collect(Collectors.toList());
        return listEdgStorageCage;
    public EdgStorageCage selectNearestEmpty(Integer currentSlot, int deviceId, boolean flag) {
        List<EdgStorageCage> emptyList = this.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
                .selectAll(EdgStorageCage.class)
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                .isNull(EdgStorageCageDetails::getSlot)
                .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
                .eq(EdgStorageCage::getDeviceId, deviceId)
                .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
        );
        if (flag && CollectionUtil.isNotEmpty(emptyList)) {
            return emptyList.get(0);
        }
        if (CollectionUtil.isEmpty(emptyList) || emptyList.size() == 1) {
            return null;
        }
        return emptyList.get(0);
    }
    /**
     * 按照设备号返回对应的笼内详情数据
     *
     * @return
     */
    @Override
    //查询笼内出片任务
    public List<EdgStorageCage> selectCacheOut(){
        List<EdgStorageCage> list= new ArrayList<EdgStorageCage>();
        return list;
    public List<EdgStorageCageVO> selectEdgStorageCagesByDeviceId(int deviceId) {
        List<EdgStorageCageVO> storageCageVOS = this.selectJoinList(EdgStorageCageVO.class, new MPJLambdaWrapper<EdgStorageCage>()
                .selectAll(EdgStorageCage.class)
                .selectCollection(EdgStorageCageDetails.class, EdgStorageCageVO::getDetails)
                .leftJoin(EdgStorageCageDetails.class, on -> on
                        .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                .eq(EdgStorageCage::getDeviceId, deviceId)
                .orderByAsc(EdgStorageCage::getSlot)
                .orderByAsc(EdgStorageCageDetails::getId)
        );
        return storageCageVOS;
    }
    @Override
    //理片缓存详情
    public List<Map> selectCacheInfos(){
        List<Map> mapList=new ArrayList<>();
        return mapList;
    }
    /**
     * 修改理片笼信息 功能:对笼内栅格玻璃 【启用/禁用】
     *
     * @param edgStorageCage
     * @return
     */
    @Override
    //添加理片笼信息  传入glassid
    public boolean insertCacheInfo(String glassid){
    public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage) {
        EdgStorageCage edgItem = baseMapper.selectById(edgStorageCage.getId());
        if (edgItem != null) {
            edgItem.setEnableState(edgStorageCage.getEnableState());
            baseMapper.updateById(edgItem);
            log.info("卧室缓存:【启用/禁用】 参数:{} 结果:成功", edgStorageCage);
            return true;
        }
        log.info("卧室缓存:【启用/禁用】 参数:{} 结果:失败", edgStorageCage);
        return false;
    }
    /**
     * 修改理片笼信息 功能:对笼内栅格玻璃 【添加/删除/更换】
     *
     * @param edgStorageCageId
     * @param edgStorageCageDetails
     * @return
     */
    @Override
    //修改理片笼内信息
    public boolean updateCacheInfo(String cacheId){
        return false;
    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)
                            .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
            );
            if (result != null) {
                result.setSlot(0);
                result.setState(201);
                Damage damage = new Damage();
                damage.setGlassId(edgStorageCageDetails.getGlassId());
                damage.setLine(2001);
                damage.setWorkingProcedure("磨边");
                damage.setStatus(1);
                damage.setType(8);
                damageService.insertDamage(damage);
                edgStorageCageDetailsMapper.updateById(result);
            }
            //添加
            if (edgDItem != null) {
                //只传格子  :移除玻璃
                EdgStorageCageDetails newresult = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
                newresult.setSlot(edgItem.getSlot());
                edgStorageCageDetailsMapper.updateById(newresult);
            }
        }
        return true;
    }
    @Override
    //删除理片笼内信息
    public boolean deleteCacheInfo(String cacheId){
        return false;
    public EdgStorageCage getEdgStorageCageBySize(int deviceId, double width, double height, int slot) {
        return baseMapper.getEdgStorageCageBySize(deviceId, width, height, slot);
    }
    @Override
    public void resetSlotRemainWidth(List<EdgSlotRemainVO> edgSlotRemainVOS) {
        baseMapper.resetSlotRemainWidth(edgSlotRemainVOS);
    }
}