package com.mes.engineering.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.engineering.entity.Engineering; import com.mes.engineering.mapper.EngineeringMapper; import com.mes.engineering.service.EngineeringService; import com.mes.pp.entity.OptimizeProject; import com.mes.pp.mapper.OptimizeProjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** *

* 服务实现类 *

* * @author wu * @since 2024-04-22 */ @Service @Slf4j public class EngineeringServiceImpl extends ServiceImpl implements EngineeringService { @Autowired OptimizeProjectMapper optimizeProjectMapper; @Autowired private EngineeringMapper engineeringMapper; //开始/暂停任务 @Override public boolean changeTask(String projectId, Integer state) { //暂停正在进行工程 LambdaUpdateChainWrapper pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper()); pauseWrapper.set(Engineering::getState,0); pauseWrapper.eq(Engineering::getState,1); boolean pause = pauseWrapper.update(); //使用projectId作为条件开始工程 LambdaUpdateChainWrapper wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper()); wrapper.set(Engineering::getState,state); wrapper.eq(Engineering::getEngineerId,projectId); wrapper.update(); return pause; } @Override @DS("pp") public List selectEngineering(String engineeringId) { //查询钢化工程信息 List optimizeEngineerings = null; if (engineeringId != null) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("project_no,project_name,avg_cut_pct,valid_cut_pct,last_cut_pct,glass_total,glass_total_area,raw_stock_qty,raw_stock_area,glass_type,remark ") .eq("project_no", engineeringId); optimizeEngineerings = optimizeProjectMapper.selectList(wrapper); } List resultList=new ArrayList<>(); // 遍历查询结果赋值 if (optimizeEngineerings != null) { for (OptimizeProject map : optimizeEngineerings) { // 创建一个新的 OptimizeProject 对象 Engineering engineering = new Engineering(); // 将 Map 中的每个键值对映射到 OptimizeProject 对象的相应字段上 engineering.setEngineerId( map.getProjectNo());//工程id engineering.setEngineerName( map.getProjectName());//工程名称 engineering.setAvgAvailability( map.getAvgCutPct());//平均优化率 engineering.setValidAvailability( map.getValidCutPct());//有效优化率 engineering.setLastAvailability( map.getLastCutPct());//尾片优化率 engineering.setState(0);//状态 engineering.setGlassTotal( map.getGlassTotal());//小片玻璃总数 engineering.setGlassTotalArea( map.getGlassTotalArea());//小片总面积 engineering.setPlanPatternTotal( map.getRawStockQty());//计划原片总数 engineering.setPlanPatternTotalArea( map.getRawStockArea());//计划原片总面积 engineering.setFilmsId( map.getGlassType());//膜系 engineering.setNotes( map.getRemark());//备注 // 将映射后的对象添加到结果列表中 resultList.add(engineering); } } log.info("查询出钢化工程集合保存到实体类{}",resultList); return resultList; } @Override public void saveEngineering(List engineering) { this.saveBatch(engineering); //保存钢化工程信息 } @Override public Engineering selectInitiate(Integer state) { //查询是否有开始上片的工程任务 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("state", state); return this.getOne(wrapper); } @Override public List selectTask() { //查询可开始任务的工程 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("state", 0); return engineeringMapper.selectList(wrapper); } @Override public boolean pauseTask(String engineerId, Integer state) { //暂停正在进行工程 LambdaUpdateChainWrapper pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper()); pauseWrapper.set(Engineering::getState,0); pauseWrapper.eq(Engineering::getState,1); return pauseWrapper.update(); } }