package com.mes.pp.service.impl; import cn.smallbun.screw.core.util.CollectionUtils; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.github.yulichang.base.MPJBaseServiceImpl; import com.mes.engineering.entity.Engineering; import com.mes.engineering.service.EngineeringService; import com.mes.pp.entity.OptimizeProject; import com.mes.pp.entity.dto.ProgressDTO; import com.mes.pp.entity.request.OptimizeRequest; import com.mes.pp.mapper.OptimizeProjectMapper; import com.mes.pp.service.OptimizeProjectService; import com.mes.uppattenusage.entity.UpPattenUsage; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; /** *

* 服务实现类 *

* * @author zhoush * @since 2024-04-16 */ @Service @DS("pp") @Slf4j public class OptimizeProjectServiceImpl extends MPJBaseServiceImpl implements OptimizeProjectService { @Autowired private EngineeringService engineeringService; @Override public List listByState(OptimizeRequest optimizeRequest) { //PP表未开始的工程号 // 计算二个月前的时间 LocalDateTime twoMonthAgo = LocalDateTime.now().minusMonths(2); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.select(OptimizeProject::getProjectNo, OptimizeProject::getProjectName) .eq(OptimizeProject::getState, optimizeRequest.getState()) .ge(OptimizeProject::getCreateTime, twoMonthAgo); List glass = this.list(wrapper); //暂停的工程号 List engineerings = engineeringService.selectTask(); for (int i = 0; i < engineerings.size(); i++) { Engineering engineering = engineerings.get(i); OptimizeProject newProject = new OptimizeProject(); newProject.setProjectNo(engineering.getEngineerId()); newProject.setProjectName(engineering.getEngineerName()); // 将新创建的 OptimizeProject 对象添加到 glass 列表中 glass.add(newProject); } //返回工程信息 return glass; } @Override public void changeTask(String engineeringId, int state) { UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.eq("project_no", engineeringId) .set("state", state); boolean updateSuccess = this.update(wrapper); log.info("工程表更新状态{}", updateSuccess); } @Override public boolean overTask(UpPattenUsage sequence, int state) { if (sequence.getState() == 100) { UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.eq("project_no", sequence.getEngineeringId()) .set("state", state); boolean updateSuccess = this.update(wrapper); log.info("工程完成更新状态{}", updateSuccess); } return false; } @Override public List getDoingTask() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("project_no,project_name") .eq("state", 200); return this.list(wrapper); } @Override public List queryEngineer() { return this.baseMapper.queryEngineer(); } @Override public List engineerScheduling(OptimizeProject optimizeProject) { return this.baseMapper.engineerScheduling(optimizeProject); } @Override @Transactional(rollbackFor = Exception.class) public List updateEngineerScheduling(Integer type, List projectList) { // 1. 删除对应类型的数据 baseMapper.deleteByType(type); // 2. 设置值 projectList.forEach(project -> { project.setType(type); project.setState(100); project.setId(null); // 清除ID }); if (CollectionUtils.isNotEmpty(projectList)) { // 3. 批量插入新数据 baseMapper.batchInsert(projectList); } return projectList; } @Override public void deleteengineerSchedulingByid(String engineerId, List types) { baseMapper.deleteByScheduling(engineerId, types); } @Override public List selectProgress(String engineerId) { return baseMapper.selectProgress(engineerId); } }