廖井涛
2025-05-22 0f7e88d17a2bb96b496a31c6ba6c1837221c3623
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
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
package com.example.erp.controller.pp;
 
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.entity.pp.LayoutsData;
import com.example.erp.entity.pp.OptimizeProjectMange;
import com.example.erp.exception.ServiceException;
import com.example.erp.service.pp.GlassOptimizeService;
import com.example.erp.service.pp.JsonToOptConverter;
import com.example.erp.service.userInfo.UserService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
 
import java.io.IOException;
import java.sql.Date;
import java.util.Map;
 
@RestController
@Api(value="优化管理controller",tags={"优化管理操作接口"})
@RequestMapping("/glassOptimize")
public class GlassOptimizeController {
    @Autowired
    GlassOptimizeService glassOptimizeService;
    @Autowired
    private UserService userService;
    //工程信息
    @ApiOperation("工程信息接口")
    @PostMapping  ("/projectInfo/{projectNo}/{username}")
    public Result projectInfo(
            @PathVariable String projectNo,@PathVariable String username){
        return Result.seccess(glassOptimizeService.projectInfoSv(projectNo,username));
    }
 
    //工程信息流程卡
    @ApiOperation("工程信息流程卡接口")
    @PostMapping  ("/getProcessCard/{projectNo}")
    public Result getProcessCard(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.getProcessCardSv(projectNo));
    }
 
    //库存信息
    @ApiOperation("库存信息接口")
    @GetMapping  ("/materialStore/{thickness}/{model}/{projectNumber}")
    public Result materialStore(
            @PathVariable  String thickness,
            @PathVariable  String model,@PathVariable  String projectNumber,
            @RequestParam(name = "type", required = false) Integer type,@RequestParam(name = "username", required = false) String username  ){
        return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber,type,username));
    }
 
 
    //工程查询流程卡
    @ApiOperation("创建工程查询流程卡接口")
    @PostMapping  ("/getFlowCardList/{optionVal}/{radio}")
    public Result getFlowCardList(
            @PathVariable String optionVal,
            @PathVariable Integer radio){
        return Result.seccess(glassOptimizeService.getFlowCardList(optionVal,radio));
    }
 
    //工程查询流程卡
    @ApiOperation("修改工程查询流程卡接口")
    @PostMapping  ("/getUpdateFlowCardList/{type}/{thickness}/{radio}/{projectNo}")
    public Result getUpdateFlowCardList(
            @PathVariable String type,@PathVariable String thickness,
            @PathVariable Integer radio,@PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.getUpdateFlowCardList(type,thickness,radio,projectNo));
    }
 
    //工程查询流程卡
    @ApiOperation("工程查询流程卡")
    @PostMapping  ("/getProjectList")
    public Result getProjectList(){
        return Result.seccess(glassOptimizeService.getProjectListSv());
    }
 
    //工程管理查询
    @ApiOperation("工程管理查询接口")
    @PostMapping("/optimizeProjectMange/{startSelectTime}/{endSelectTime}")
    public Result optimizeProjectMange(
            @PathVariable Date startSelectTime,
            @PathVariable Date endSelectTime,
            @RequestBody OptimizeProjectMange optimizeProjectMange) {
        return Result.seccess(glassOptimizeService.OptimizeProjectMange(startSelectTime,endSelectTime,optimizeProjectMange));
    }
 
    //修改工程状态
    @ApiOperation("修改工程状态接口")
    @PostMapping("/updateProjectState/{projectNumber}/{state}/{states}/{code}")
    public Result updateProjectState(
            @PathVariable String projectNumber,
            @PathVariable Integer state,
            @PathVariable Integer states,
            @PathVariable Integer code
    ) {
        if (glassOptimizeService.updateProjectState(projectNumber, state,states,code)) {
            return Result.seccess();
        } else {
            throw new ServiceException(Constants.Code_500, "修改失败");
 
        }
    }
 
    //删除工程
    @ApiOperation("工程管理删除接口")
    @PostMapping("/deleteProject/{projectNumber}")
    public Result deleteProject(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.deleteProject(projectNumber,1));
    }
 
    //模拟计算工程号查询
    @ApiOperation("模拟计算工程号查询")
    @PostMapping  ("/selectProjectCompute/{projectNumber}")
    public Result selectProjectCompute(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.selectProjectComputeSv(projectNumber));
    }
 
    //模拟计算工程号查询
    @ApiOperation("模拟计算工程数据查询")
    @PostMapping  ("/selectProjectComputeAll/{projectNumber}")
    public Result selectProjectComputeAll(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.selectProjectComputeAll(projectNumber));
    }
 
    //模拟计算流程卡详情
    @ApiOperation("模拟计算流程卡详情")
    @PostMapping  ("/selectComputeDetail/{processId}/{technologyNumber}/{patchState}")
    public Result selectComputeDetail(
            @PathVariable String processId, @PathVariable Integer technologyNumber,@PathVariable String patchState){
        return Result.seccess(glassOptimizeService.selectComputeDetailSv(processId,technologyNumber,patchState));
    }
 
    @ApiOperation("模拟计算")
    @PostMapping("/simulationCalculate")
    public Result simulationCalculate(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.SimulationCalculation(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
    }
 
    @ApiOperation("模拟计算保存")
    @PostMapping("/simulationSave")
    public Result simulationSave(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.addSimulation(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
    }
 
    @ApiOperation("优化设置保存")
    @PostMapping("/optimizeParms/{username}")
    public Result optimizeParmsSave(@RequestBody Map<String, Object> object,@PathVariable String username) {
        try {
            return Result.seccess(glassOptimizeService.optimizeParmsSave(object,username));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
    }
 
 
    @PostMapping("/selectOptimizeParms/{username}")
    public Result getOptimizeParms(@PathVariable String username) {
        return Result.seccess(userService.getOptimizeParms(username));
    }
 
 
 
    @ApiOperation("模拟计算多流程卡")
    @PostMapping("/selectComputeDetailmore")
    public Result selectComputeDetailmore(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.SimulationCalculation(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
    }
 
 
 
 
 
    //创建工程查询流程卡明细
    @ApiOperation("创建工程查询流程卡明细")
    @PostMapping  ("/getProcessCardDetail/{processId}/{technologyNumber}")
    public Result getProcessCardDetail(
            @PathVariable String processId,
            @PathVariable Integer technologyNumber){
        return Result.seccess(glassOptimizeService.getProcessCardDetailSv(processId,technologyNumber));
    }
 
    @ApiOperation("膜系查询")
    @PostMapping  ("/selectGlassType")
    public Result selectGlassType(){
        return Result.seccess(glassOptimizeService.selectGlassTypeSv());
    }
 
    @ApiOperation("最新工程号查询")
    @PostMapping  ("/getProjectId")
    public Result getProjectId(){
        return Result.seccess(glassOptimizeService.getProjectIdSv());
    }
    @ApiOperation("创建工程接口")
    @PostMapping("/addProject/{optionVal}/{projectId}/{projectNmae}")
    public Result addProject(
            @PathVariable String optionVal,
            @PathVariable String projectId,
            @PathVariable String projectNmae,
            @RequestBody Map<String,Object> object){
        return  Result.seccess(glassOptimizeService.addProjectSv(optionVal,projectId,projectNmae,object));
    }
 
 
    @ApiOperation("保存优化结果接口")
    @PostMapping("/saveOptimizeData/{projectId}")
    public Result saveOptimizeResult( @PathVariable String projectId,
            @RequestBody Map<String,Object> object){
        return  Result.seccess(glassOptimizeService.saveOptimizeResult(object,projectId));
    }
 
 
    @ApiOperation("查询优化结果接口")
    @PostMapping("/selectOptimizeResult/{processId}")
    public Result selectOptimizeResult(
            @PathVariable String processId){
        return  Result.seccess(glassOptimizeService.selectOptimizeResult(processId));
    }
 
    @ApiOperation("更新优化结果接口")
    @PostMapping("/updateOptimizeResult/{processId}")
    public Result updateOptimizeResult(
            @PathVariable String processId,@RequestBody Map<String,Object> object){
 
        return  Result.seccess(glassOptimizeService.updateOptimizeResult(object,processId));
    }
    @ApiOperation("OPT文件下载接口")
    @PostMapping("/generateOpt")
    public ResponseEntity<byte[]> generateOptFile(@RequestBody LayoutsData layoutsData) throws IOException {
        // 确保 layoutsData 包含 Layouts 数组
        if (layoutsData == null || layoutsData.getLayouts() == null) {
            throw new IllegalArgumentException("Layouts 数据不能为空");
        }
 
        // 生成 OPT 文件内容
        String optContent = JsonToOptConverter.generateOptContent(layoutsData);
 
        // 创建响应头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(org.springframework.http.MediaType.TEXT_PLAIN);
        headers.setContentDispositionFormData("attachment", "output.opt");
 
        // 返回文件内容
        return new ResponseEntity<>(optContent.getBytes(), headers, HttpStatus.OK);
    }
 
    @PostMapping("/getConfiguration/{type}/{username}")
    public Result getConfiguration(@PathVariable String type,@PathVariable String username) {
        return Result.seccess(glassOptimizeService.getConfiguration(type,username));
    }
 
    @ApiOperation("修片磨量修改")
    @PostMapping("/saveConfiguration/{type}/{username}")
    public Result saveConfiguration(@PathVariable String type,@PathVariable String username, @RequestBody Map<String,Object>  object){
        return Result.seccess(glassOptimizeService.saveConfiguration(object,type,username));
    }
 
    @ApiOperation("模拟排版")
    @PostMapping("/simulatedTypesetting")
    public Result simulatedTypesetting(@RequestBody Map<String, Object> object) {
        return Result.seccess(glassOptimizeService.simulatedTypesetting1(object));
    }
 
 
 
 
 
 
 
 
 
 
 
 
 
    //模拟计算工程号查询第三方
    @ApiOperation("模拟计算工程号查询")
    @PostMapping  ("/selectProjectComputeMpThirdParty/{projectNumber}")
    public Result selectProjectComputeMpThirdParty( @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.selectProjectComputeMpThirdParty(projectNumber));
    }
 
    //模拟计算流程卡详情第三方
    @ApiOperation("模拟计算流程卡详情")
    @PostMapping  ("/selectComputeDetailThirdParty/{processId}/{technologyNumber}")
    public Result selectComputeDetailThirdParty(
            @PathVariable String processId, @PathVariable Integer technologyNumber){
        return Result.seccess(glassOptimizeService.selectComputeDetailThirdParty(processId,technologyNumber));
    }
 
    @ApiOperation("模拟计算保存")
    @PostMapping("/simulationSaveThirdParty")
    public Result simulationSaveThirdParty(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.simulationSaveThirdParty(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
    }
 
    //删除工程
    @ApiOperation("工程管理删除接口")
    @PostMapping("/deleteProjectThirdParty/{projectNumber}")
    public Result deleteProjectThirdParty(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.deleteProjectThirdParty(projectNumber));
    }
 
    @ApiOperation("工程信息接口")
    @PostMapping  ("/projectInfoThirdParty/{projectNo}")
    public Result projectInfoThirdParty(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.projectInfoThirdParty(projectNo));
    }
 
    //库存信息
    @ApiOperation("库存信息接口")
    @GetMapping  ("/materialStoreSvThirdParty/{projectNumber}")
    public Result materialStoreSvThirdParty(@PathVariable  String projectNumber ){
        return Result.seccess(glassOptimizeService.materialStoreSvThirdParty(projectNumber));
    }
 
    //工程信息流程卡
    @ApiOperation("工程信息流程卡接口")
    @PostMapping  ("/getProcessCardMpThirdParty/{projectNo}")
    public Result getProcessCardMpThirdParty(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.getProcessCardMpThirdParty(projectNo));
    }
 
 
 
 
 
 
}