zhoushihao
2024-04-25 3cc6aa69cca0b0d991f8537999c578eaee68e07e
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
package com.mes.downworkstation.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
import com.mes.downglassinfo.service.DownGlassInfoService;
import com.mes.downglassinfo.service.DownGlassTaskService;
import com.mes.downworkstation.entity.DownWorkstation;
import com.mes.downworkstation.entity.DownWorkstationTask;
import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
import com.mes.downworkstation.mapper.DownWorkstationMapper;
import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
import com.mes.downworkstation.service.DownWorkstationService;
import com.mes.downworkstation.service.DownWorkstationTaskService;
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.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
@Slf4j
@Service
public class DownWorkstationServiceImpl extends ServiceImpl<DownWorkstationMapper, DownWorkstation> implements DownWorkstationService {
 
    @Autowired
    private DownWorkstationMapper downWorkstationMapper;
    @Autowired
    private DownWorkstationTaskMapper downWorkstationTaskMapper;
    @Autowired
    private DownGlassInfoService downGlassInfoService;
    @Autowired
    private DownGlassInfoMapper downGlassInfoMapper;
    @Autowired
    private DownGlassTaskService downGlassTaskService;
 
 
    @Autowired
    private DownWorkstationTaskService downWorkstationTaskService;
 
    //    @Override
//    public List<DownWorkstation> gettwoDownWorkstations() {
//        return downWorkstationMapper.getDownWorkstationsInRange(6,10);
//    }
//获取总数量
    @Override
    public int getTotalQuantity(int workstationId) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("total_quantity")
                .eq("workstation_id", workstationId);
 
        DownWorkstation result = baseMapper.selectOne(queryWrapper);
        return result != null ? result.getTotalquantity() : 0;
    }
 
    //工位显示
    @Override
    public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation() {
        MPJQueryWrapper<DownWorkstionAndDownGlassinfo> queryWrapper = new MPJQueryWrapper<>();
        queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight")
                .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
                .groupBy("t.workstation_id", "t.flow_card_id");
 
//        List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
        List<DownWorkstionAndDownGlassinfo> workstationList = null;
        List<Map<String, Object>> result = new ArrayList<>();
        for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
            Map<String, Object> rack = new HashMap<>();
 
            // 创建子项(item)对象
            Map<String, Object> item = new HashMap<>();
            item.put("height", downWorkstionAndDownGlassinfo.getTotalheight()); // 设置子项高度,根据实际情况设置
            item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth()); // 设置子项宽度,根据实际情况设置
            item.put("fillColor", "yellow"); // 设置子项颜色
            item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId()); // 使用流程卡号作为子项内容
 
            rack.put("item", item); // 将子项对象放入货架对象中
 
            result.add(rack); // 将货架对象添加到结果列表中
            //log.info("货架对象: {}", rack);
        }
 
        return result; // 返回最终结果
    }
 
 
//    @Override
//    public int getTotalQuantity(int workstationId) {
//        Integer totalQuantity = downWorkstationMapper.getTotalQuantity(workstationId);
//        return totalQuantity != null ? totalQuantity : 0;
//    }
 
    //    @Override
//    public int getRacksNumber(int workstationId) {
//        Integer racksNumber = downWorkstationMapper.getRacksNumber(workstationId);
//        return racksNumber != null ? racksNumber : 0;
//    }
    //根据条件获取落架数量
    @Override
    public int getRacksNumber(int workstationId) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("racks_number")
                .eq("workstation_id", workstationId);
 
        DownWorkstation result = baseMapper.selectOne(queryWrapper);
        return result != null ? result.getRacksnumber() : 0;
    }
 
    //根据条件获取工位玻璃信息
    @Override
    public List<DownWorkstation> getoneDownWorkstations(int startId, int endId) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.between("workstation_id", startId, endId);
 
        return baseMapper.selectList(queryWrapper);
    }
 
 
//
 
 
    @Override
    public void updateracksnumber(String flowCardId, int racksNumber) {
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("racks_number", racksNumber).eq("flow_card_id", flowCardId);
        baseMapper.update(null, updateWrapper);
    }
 
 
    @Override
    public int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId) {
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("total_quantity", glassInfoCount)
                .set("flow_card_id", flowCardId)
                .eq("workstation_id", workstationId);
 
        return baseMapper.update(null, updateWrapper);
    }
 
    @Override
    public void clearFlowCardId(int workstationId) {
        UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("flow_card_id", null)
                .set("total_quantity", 0)
                .set("racks_number", 0)
                .eq("workstation_id", workstationId);
 
        baseMapper.update(null, updateWrapper);
    }
 
 
    public DownWorkstation selectByFlowCardId(String flowcardid) {
        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("flow_card_id", flowcardid);
 
        return baseMapper.selectOne(queryWrapper);
    }
 
 
    @Transactional
    public void crossDatabaseQuery() {
        // 从 MySQL 数据库中查询数据,只返回一条符合条件的数据
        DownWorkstation downWorkstation = downWorkstationTaskMapper.selectdownWorkstationstate();
 
        // 从 SQL Server 数据库中查询数据
        List<DownWorkstationTask> downWorkstationTasks = downWorkstationTaskMapper.selectList();
 
    }
 
 
    @Override
    public void insertdownglassinfo() {
 
 
        List<DownGlassTask> taskdownGlassInf = downGlassTaskService.getUnloadingTaskState();
//
 
 
        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
 
//
 
            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
                // 创建新的 DownGlassInfo 对象并设置相关属性
                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
 
                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
                // 初始化顺序字段值
                int sequence = maxSequence != null ? maxSequence + 1 : 1;
//                newdownGlassInfo.setId(downGlassInfo.getId());
                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
                // 设置顺序字段值
                newdownGlassInfo.setSequence(sequence);
 
                // 插入数据到下片玻璃信息表
                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
                //插入数据到机械手任务表
 
                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
                //更新下片任务表状态为0
                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getId());
                //删除下片任务表中的记录
                downGlassTaskService.deleteTask(downGlassInfo.getFlowCardId());
 
                sequence++; // 递增顺序字段值
 
 
            }
        }
 
 
        try {
            //查询下片工位表中架子是否绑定了流程卡号 工位表和任务表中状态为1的流程卡号和已落架数量
            List<DownWorkstationTask> taskdownWorkstation = downWorkstationTaskService.getTaskState();
            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
                //,如果已经绑定则更新已落架数量,并且删除下片任务表中的记录
                for (DownWorkstationTask downWorkstation : taskdownWorkstation) {
                    //更新下片工位表中已落架数量
                    DownWorkstation downWorkstation1 = selectByFlowCardId(downWorkstation.getFlowCardId());
                    updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
                    //更新机械任务表中状态为0
                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getId());
                    //删除机械任务表
                    downWorkstationTaskService.removeById(downWorkstation.getId());
 
 
                }
            }
        } catch (Exception e) {
            // 打印异常信息
            e.printStackTrace();
            // 或者可以进行其他异常处理,比如记录日志或者返回特定的错误信息
        }
    }
 
 
}