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();
}
}