wu
2024-06-24 09a010c5dc11c68a866a6075a74bd1bbefb4a9a8
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -4,21 +4,21 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.github.yulichang.toolkit.JoinWrappers;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.entity.OptimizeGlassinfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.mapper.OptimizeProjectMapper;
import com.mes.uppattenusage.entity.UpPattenUsage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -33,6 +33,7 @@
public class GlassInfoServiceImpl extends MPJBaseServiceImpl<GlassInfoMapper, GlassInfo> implements GlassInfoService {
    @Autowired
    OptimizeProjectMapper optimizeProjectMapper;
    @Override
    @DS("pp")
    public List<GlassInfo> selectGlassInfo(String engineeringId) {
@@ -87,10 +88,6 @@
    }
    @Override
    public int getGlassInfoCountByFlowCardId(String flowCardId) {
        return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
@@ -98,24 +95,37 @@
    }
    @Override
    public List<Map<String, Object>> getFlowCardId() {
        return baseMapper.selectJoinMaps(JoinWrappers.lambda(GlassInfo.class)
                .select(GlassInfo::getFlowCardId)
                .leftJoin(UpPattenUsage.class, on -> on
                        .eq(OptimizeProject::getProjectNo, GlassInfo::getEngineerId)
                        .ne(OptimizeProject::getState, 300)
                )
                .groupBy(GlassInfo::getFlowCardId)
        // 第二个查询:查询 OptimizeProject 表,根据 GlassInfo 的 engineerId 和 state 进行筛选
        List<OptimizeProject> optimizeProjects = optimizeProjectMapper.selectList(
                new QueryWrapper<OptimizeProject>()
                        .ne("state", 300)
        );
        // 提取 engineerId 列表
        List<String> engineerIds = optimizeProjects.stream()
                .map(OptimizeProject::getProjectNo)
                .collect(Collectors.toList());
        // 第一个查询:查询 GlassInfo 表并按 flow_card_id 分组,同时筛选出在 engineerIds 列表中的记录
        List<GlassInfo> glassInfos = baseMapper.selectList(
                new QueryWrapper<GlassInfo>()
                        .in("engineer_id", engineerIds)
                        .groupBy("flow_card_id")
        );
        // 转换为 List<Map<String, Object>>
        List<Map<String, Object>> result = glassInfos.stream()
                .map(glassInfo -> {
                    Map<String, Object> map = new HashMap<>();
                    map.put("flow_card_id", glassInfo.getFlowCardId());
                    // 如果还有其他字段需要添加到 map 中,在这里继续添加
                    return map;
                })
                .collect(Collectors.toList());
        log.info("result: {}", result);
        return result;
    }
}