zhoushihao
2025-10-27 636bd027a92d4bf669410ee550a5ca6324f72c88
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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;
 
/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-16
 */
@Service
@DS("pp")
@Slf4j
public class OptimizeProjectServiceImpl extends MPJBaseServiceImpl<OptimizeProjectMapper, OptimizeProject> implements OptimizeProjectService {
    @Autowired
    private EngineeringService engineeringService;
 
    @Override
    public List<OptimizeProject> listByState(OptimizeRequest optimizeRequest) {
        //PP表未开始的工程号
        // 计算二个月前的时间
        LocalDateTime twoMonthAgo = LocalDateTime.now().minusMonths(2);
        LambdaQueryWrapper<OptimizeProject> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(OptimizeProject::getProjectNo, OptimizeProject::getProjectName)
                .eq(OptimizeProject::getState, optimizeRequest.getState())
                .ge(OptimizeProject::getCreateTime, twoMonthAgo);
        List<OptimizeProject> glass = this.list(wrapper);
        //暂停的工程号
        List<Engineering> 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<OptimizeProject> 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<OptimizeProject> 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<OptimizeProject> getDoingTask() {
        QueryWrapper<OptimizeProject> wrapper = new QueryWrapper<>();
        wrapper.select("project_no,project_name")
                .eq("state", 200);
        return this.list(wrapper);
    }
 
    @Override
    public List<OptimizeProject> queryEngineer() {
        return this.baseMapper.queryEngineer();
    }
 
    @Override
    public List<OptimizeProject> engineerScheduling(OptimizeProject optimizeProject) {
        return this.baseMapper.engineerScheduling(optimizeProject);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public List<OptimizeProject> updateEngineerScheduling(Integer type, List<OptimizeProject> 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<Integer> types) {
        baseMapper.deleteByScheduling(engineerId, types);
    }
 
    @Override
    public List<ProgressDTO> selectProgress(String engineerId) {
        return baseMapper.selectProgress(engineerId);
    }
}