wuyouming666
2024-05-14 1eadcf2fe21a211ba361b3cdb86a79f34b4b0479
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -1,6 +1,8 @@
package com.mes.downstorage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.yulichang.query.MPJQueryWrapper;
@@ -13,14 +15,20 @@
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Service
public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
@@ -31,6 +39,8 @@
    private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
    @Autowired
    private GlassInfoMapper glassInfoMapper;
    @Autowired
    private DownWorkstationMapper downWorkstationMapper;
    @Override
    public void addDownStorageCageDetails(DownStorageCageDetails details) {
        this.save(details);
@@ -63,6 +73,7 @@
        );
    }
@@ -172,9 +183,69 @@
    @Override
    public List<DownStorageCageDetails> CacheOut1(int start,int end) {
        List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(null);
        // Step 5: 判断 down_storage_cage_details 结果数量是否为9,如果是,则执行另外一个查询
        if (cageDetails.size() == 9) {
       log.info("满了的时候,按照笼内版图id 版图片序出");
            List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
            List<String> flowCardIds = new ArrayList<>();
            for (DownWorkstation workstation : workstationList) {
                flowCardIds.add(workstation.getFlowCardId());
            }
            LambdaQueryWrapper<DownStorageCageDetails> anotherQueryWrapper = Wrappers.lambdaQuery();
            anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getTemperingLayoutId);
            anotherQueryWrapper.orderByDesc(DownStorageCageDetails::getTemperingFeedSequence);
            anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId,flowCardIds);
            anotherQueryWrapper.last("LIMIT 1");
            return downStorageCageDetailsMapper.selectList(anotherQueryWrapper);
        }else
        {
        // Step 1: 查询 DownWorkstation 表获取对应 workstation_id 的 flow_card_id
        List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
        List<String> flowCardIds = new ArrayList<>();
        for (DownWorkstation workstation : workstationList) {
            flowCardIds.add(workstation.getFlowCardId());
        }
        LambdaQueryWrapper<GlassInfo> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.select(GlassInfo::getFlowCardId,
                GlassInfo::getGlassId,
                GlassInfo::getTemperingLayoutId,
                GlassInfo::getTemperingFeedSequence)
                .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info")
                .orderByAsc(GlassInfo::getTemperingLayoutId)
                .orderByDesc(GlassInfo::getTemperingFeedSequence)
                .last("LIMIT 1");
        // 查询 GlassInfo 表
        List<GlassInfo> glassInfos = glassInfoMapper.selectList(queryWrapper);
        // Step 3: 构造查询 down_storage_cage_details 表的条件
        List<String> glassIds = glassInfos.stream().map(GlassInfo::getGlassId).collect(Collectors.toList());
        LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery();
        cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds);
        cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
            log.info("按照流程卡的版图id 版图片序出");
        // Step 4: 查询 down_storage_cage_details 表并返回结果
        return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper);
        }
    }