chenlu
8 小时以前 33dbc6a161554f3a897f9e9273feb4f2c1b47381
north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
@@ -1,6 +1,6 @@
package com.example.erp.controller.pp;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.core.io.InputStreamResource;
import com.example.erp.common.Constants;
import com.example.erp.common.Result;
import com.example.erp.entity.pp.LayoutsData;
@@ -10,7 +10,6 @@
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;
@@ -19,8 +18,13 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.sql.Date;
import java.util.HashMap;
import java.util.Map;
@RestController
@@ -33,10 +37,18 @@
    private UserService userService;
    //工程信息
    @ApiOperation("工程信息接口")
    @PostMapping  ("/projectInfo/{projectNo}")
    @PostMapping  ("/projectInfo/{projectNo}/{username}")
    public Result projectInfo(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.projectInfoSv(projectNo));
            @PathVariable String projectNo,@PathVariable String username){
        return Result.success(glassOptimizeService.projectInfoSv(projectNo,username));
    }
    // 优化信息传入
    @ApiOperation("优化传入信息接口")
    @PostMapping  ("/optimizeInfo/{projectNo}/{username}")
    public Result optimizeInfo(@PathVariable String projectNo,@PathVariable String username){
        return Result.success(glassOptimizeService.optimizeInfoSv(projectNo,username));
    }
    //工程信息流程卡
@@ -44,7 +56,14 @@
    @PostMapping  ("/getProcessCard/{projectNo}")
    public Result getProcessCard(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.getProcessCardSv(projectNo));
        return Result.success(glassOptimizeService.getProcessCardSv(projectNo));
    }
    @ApiOperation("工程信息查询接口")
    @PostMapping  ("/getProjectState/{projectNo}")
    public Result getProjectState(
            @PathVariable String projectNo){
        return Result.success(glassOptimizeService.getProjectState(projectNo));
    }
    //库存信息
@@ -53,8 +72,8 @@
    public Result materialStore(
            @PathVariable  String thickness,
            @PathVariable  String model,@PathVariable  String projectNumber,
            @RequestParam(name = "type", required = false) Integer type ){
        return Result.seccess(glassOptimizeService.materialStoreSv(thickness,model,projectNumber,type));
            @RequestParam(name = "type", required = false) Integer type,@RequestParam(name = "username", required = false) String username  ){
        return Result.success(glassOptimizeService.materialStoreSv(thickness,model,projectNumber,type,username));
    }
@@ -64,7 +83,7 @@
    public Result getFlowCardList(
            @PathVariable String optionVal,
            @PathVariable Integer radio){
        return Result.seccess(glassOptimizeService.getFlowCardList(optionVal,radio));
        return Result.success(glassOptimizeService.getFlowCardList(optionVal,radio));
    }
    //工程查询流程卡
@@ -73,15 +92,25 @@
    public Result getUpdateFlowCardList(
            @PathVariable String type,@PathVariable String thickness,
            @PathVariable Integer radio,@PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.getUpdateFlowCardList(type,thickness,radio,projectNo));
        return Result.success(glassOptimizeService.getUpdateFlowCardList(type,thickness,radio,projectNo));
    }
    //工程查询流程卡
    @ApiOperation("工程查询流程卡")
    @PostMapping  ("/getProjectList")
    public Result getProjectList(){
        return Result.seccess(glassOptimizeService.getProjectListSv());
        return Result.success(glassOptimizeService.getProjectListSv());
    }
    @ApiOperation("根据工程卡号工程查询流程卡")
    @PostMapping  ("/getProjectByProjectNo/{projectNo}")
    public Result getProjectByProjectNo(
            @PathVariable String projectNo
    ){
        return Result.success(glassOptimizeService.getProjectByProjectNoSv(projectNo));
    }
    //工程管理查询
    @ApiOperation("工程管理查询接口")
@@ -90,7 +119,7 @@
            @PathVariable Date startSelectTime,
            @PathVariable Date endSelectTime,
            @RequestBody OptimizeProjectMange optimizeProjectMange) {
        return Result.seccess(glassOptimizeService.OptimizeProjectMange(startSelectTime,endSelectTime,optimizeProjectMange));
        return Result.success(glassOptimizeService.OptimizeProjectMange(startSelectTime,endSelectTime,optimizeProjectMange));
    }
    //修改工程状态
@@ -101,12 +130,15 @@
            @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, "修改失败");
    ) throws JsonProcessingException {
        try {
            if (glassOptimizeService.updateProjectState(projectNumber, state, states, code)) {
                return Result.success();
            } else {
                throw new ServiceException(Constants.Code_500, "修改失败");
            }
        } catch (Exception e) {
            return Result.error("201", e.getMessage());
        }
    }
@@ -115,7 +147,7 @@
    @PostMapping("/deleteProject/{projectNumber}")
    public Result deleteProject(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.deleteProject(projectNumber,1));
        return Result.success(glassOptimizeService.deleteProject(projectNumber,1));
    }
    //模拟计算工程号查询
@@ -123,7 +155,7 @@
    @PostMapping  ("/selectProjectCompute/{projectNumber}")
    public Result selectProjectCompute(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.selectProjectComputeSv(projectNumber));
        return Result.success(glassOptimizeService.selectProjectComputeSv(projectNumber));
    }
    //模拟计算工程号查询
@@ -131,7 +163,7 @@
    @PostMapping  ("/selectProjectComputeAll/{projectNumber}")
    public Result selectProjectComputeAll(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.selectProjectComputeAll(projectNumber));
        return Result.success(glassOptimizeService.selectProjectComputeAll(projectNumber));
    }
    //模拟计算流程卡详情
@@ -139,14 +171,14 @@
    @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));
        return Result.success(glassOptimizeService.selectComputeDetailSv(processId,technologyNumber,patchState));
    }
    @ApiOperation("模拟计算")
    @PostMapping("/simulationCalculate")
    public Result simulationCalculate(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.SimulationCalculation(object));
            return Result.success(glassOptimizeService.SimulationCalculation(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
@@ -156,8 +188,9 @@
    @ApiOperation("模拟计算保存")
    @PostMapping("/simulationSave")
    public Result simulationSave(@RequestBody Map<String, Object> object) {
        System.out.println("接收到的模拟计算保存数据: " + object);
        try {
            return Result.seccess(glassOptimizeService.addSimulation(object));
            return Result.success(glassOptimizeService.addSimulation(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
@@ -168,7 +201,7 @@
    @PostMapping("/optimizeParms/{username}")
    public Result optimizeParmsSave(@RequestBody Map<String, Object> object,@PathVariable String username) {
        try {
            return Result.seccess(glassOptimizeService.optimizeParmsSave(object,username));
            return Result.success(glassOptimizeService.optimizeParmsSave(object,username));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
@@ -178,7 +211,7 @@
    @PostMapping("/selectOptimizeParms/{username}")
    public Result getOptimizeParms(@PathVariable String username) {
        return Result.seccess(userService.getOptimizeParms(username));
        return Result.success(userService.getOptimizeParms(username));
    }
@@ -187,13 +220,38 @@
    @PostMapping("/selectComputeDetailmore")
    public Result selectComputeDetailmore(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.SimulationCalculation(object));
            return Result.success(glassOptimizeService.SimulationCalculation(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
        }
    }
    @PostMapping("/calculate")
    public ResponseEntity<Map<String, Object>> receiveOptimizeRequest(
            @RequestBody Map<String, Object> requestData) {
        Map<String, Object> response = new HashMap<>();
        try {
            // 立即返回接收成功的响应
            response.put("code", "200");
            response.put("msg", "success");
            response.put("data", "");
            // 异步处理计算任务
//            glassOptimizeService.processExternalOptimizeRequest(requestData);
            System.out.println(requestData);
            return ResponseEntity.ok(response);
        } catch (Exception e) {
            response.put("code", 201);
            response.put("msg", "false: " + e.getMessage());
            response.put("data", "");
            return ResponseEntity.status(500).body(response);
        }
    }
@@ -204,19 +262,19 @@
    public Result getProcessCardDetail(
            @PathVariable String processId,
            @PathVariable Integer technologyNumber){
        return Result.seccess(glassOptimizeService.getProcessCardDetailSv(processId,technologyNumber));
        return Result.success(glassOptimizeService.getProcessCardDetailSv(processId,technologyNumber));
    }
    @ApiOperation("膜系查询")
    @PostMapping  ("/selectGlassType")
    public Result selectGlassType(){
        return Result.seccess(glassOptimizeService.selectGlassTypeSv());
        return Result.success(glassOptimizeService.selectGlassTypeSv());
    }
    @ApiOperation("最新工程号查询")
    @PostMapping  ("/getProjectId")
    public Result getProjectId(){
        return Result.seccess(glassOptimizeService.getProjectIdSv());
        return Result.success(glassOptimizeService.getProjectIdSv());
    }
    @ApiOperation("创建工程接口")
    @PostMapping("/addProject/{optionVal}/{projectId}/{projectNmae}")
@@ -225,7 +283,7 @@
            @PathVariable String projectId,
            @PathVariable String projectNmae,
            @RequestBody Map<String,Object> object){
        return  Result.seccess(glassOptimizeService.addProjectSv(optionVal,projectId,projectNmae,object));
        return  Result.success(glassOptimizeService.addProjectSv(optionVal,projectId,projectNmae,object));
    }
@@ -233,15 +291,42 @@
    @PostMapping("/saveOptimizeData/{projectId}")
    public Result saveOptimizeResult( @PathVariable String projectId,
            @RequestBody Map<String,Object> object){
        return  Result.seccess(glassOptimizeService.saveOptimizeResult(object,projectId));
        return  Result.success(glassOptimizeService.saveOptimizeResult(object,projectId));
    }
    @ApiOperation("查询报告数据接口")
    @PostMapping("/getReportData/{processId}")
    public Result getReportData(@PathVariable String processId){
        return  Result.success(glassOptimizeService.getReportDataSv(processId));
    }
    @ApiOperation("查询物料信息接口")
    @PostMapping("/materialInfo/{processId}")
    public Result materialInfo(
            @PathVariable String processId){
        return  Result.success(glassOptimizeService.getMaterialInfoSv(processId));
    }
    @ApiOperation("查询产品列表接口")
    @PostMapping("/getProductList/{processId}")
    public Result getProductList(
            @PathVariable String processId){
        return  Result.success(glassOptimizeService.getProductListSv(processId));
    }
    @ApiOperation("查询优化结果接口")
    @PostMapping("/selectOptimizeResult/{processId}")
    public Result selectOptimizeResult(
            @PathVariable String processId){
        return  Result.seccess(glassOptimizeService.selectOptimizeResult(processId));
        return  Result.success(glassOptimizeService.selectOptimizeResult(processId));
    }
    @ApiOperation("查询优化结果信息接口")
    @PostMapping("/getOptimizeInfo/{processId}")
    public Result getOptimizeInfo(
            @PathVariable String processId){
        return  Result.success(glassOptimizeService.getOptimizeInfoSv(processId));
    }
    @ApiOperation("更新优化结果接口")
@@ -249,7 +334,7 @@
    public Result updateOptimizeResult(
            @PathVariable String processId,@RequestBody Map<String,Object> object){
        return  Result.seccess(glassOptimizeService.updateOptimizeResult(object,processId));
        return  Result.success(glassOptimizeService.updateOptimizeResult(object,processId));
    }
    @ApiOperation("OPT文件下载接口")
    @PostMapping("/generateOpt")
@@ -271,23 +356,95 @@
        return new ResponseEntity<>(optContent.getBytes(), headers, HttpStatus.OK);
    }
    @PostMapping("/getConfiguration/{type}")
    public Result getConfiguration(@PathVariable String type) {
        return Result.seccess(glassOptimizeService.getConfiguration(type));
    @PostMapping("/getConfiguration/{type}/{username}")
    public Result getConfiguration(@PathVariable String type,@PathVariable String username) {
        return Result.success(glassOptimizeService.getConfiguration(type,username));
    }
    @ApiOperation("修片磨量修改")
    @PostMapping("/saveConfiguration/{type}")
    public Result saveConfiguration(@PathVariable String type, @RequestBody Map<String,Object>  object){
        return Result.seccess(glassOptimizeService.saveConfiguration(object,type));
    @PostMapping("/saveConfiguration/{type}/{username}")
    public Result saveConfiguration(@PathVariable String type,@PathVariable String username, @RequestBody Map<String,Object>  object){
        return Result.success(glassOptimizeService.saveConfiguration(object,type,username));
    }
    @ApiOperation("模拟排版")
    @PostMapping("/simulatedTypesetting")
    public Result simulatedTypesetting(@RequestBody Map<String, Object> object) {
        return Result.seccess(glassOptimizeService.simulatedTypesetting1(object));
        return Result.success(glassOptimizeService.simulatedTypesetting1(object));
    }
    @CrossOrigin(origins = "*")
    @ApiOperation("PDF文件下载接口")
    @GetMapping("/reports/pdf")
    public ResponseEntity<InputStreamResource> downloadPdf(@RequestParam String filePath) {
        try {
            String decodedPath = java.net.URLDecoder.decode(filePath, "UTF-8");
            System.out.println("接收到的文件路径: " + decodedPath);
            // 放宽验证条件,仅检查必要条件
            if (decodedPath == null || decodedPath.trim().isEmpty()) {
                System.out.println("文件路径为空");
                return ResponseEntity.badRequest().build();
            }
            // 检查是否为PDF文件(不严格检查开头)
            if (!decodedPath.trim().toLowerCase().endsWith(".pdf")) {
                System.out.println("文件不是PDF格式: " + decodedPath);
                return ResponseEntity.badRequest().build();
            }
            // 处理路径,正确处理Windows网络路径
            String processedPath = decodedPath.trim();
            // 确保网络路径格式正确
            if (processedPath.startsWith("\\\\")) {
                // 已经是正确的网络路径格式
                System.out.println("检测到Windows网络路径: " + processedPath);
            } else if (processedPath.startsWith("\\")) {
                // 补全网络路径
                processedPath = "\\" + processedPath;
                System.out.println("补全网络路径为: " + processedPath);
            }
            System.out.println("处理后的文件路径: " + processedPath);
            // 构造文件路径
            File file = new File(processedPath);
            System.out.println("构造的文件绝对路径: " + file.getAbsolutePath());
            System.out.println("文件规范路径: " + file.getCanonicalPath());
            // 检查文件是否存在
            if (!file.exists()) {
                System.out.println("文件不存在: " + file.getAbsolutePath());
                return ResponseEntity.notFound().build();
            }
            // 检查是否为文件(而非目录)
            if (!file.isFile()) {
                System.out.println("路径不是文件: " + file.getAbsolutePath());
                return ResponseEntity.badRequest().build();
            }
            // 创建Resource
            InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
            // 设置响应头
            HttpHeaders headers = new HttpHeaders();
            headers.add(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + file.getName() + "\"");
            headers.add(HttpHeaders.CONTENT_TYPE, "application/pdf");
            headers.add(HttpHeaders.CONTENT_LENGTH, String.valueOf(file.length()));
            headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION);
            return ResponseEntity.ok()
                    .headers(headers)
                    .contentType(org.springframework.http.MediaType.APPLICATION_PDF)
                    .body(resource);
        } catch (Exception e) {
            e.printStackTrace();
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
        }
    }
@@ -304,7 +461,7 @@
    @ApiOperation("模拟计算工程号查询")
    @PostMapping  ("/selectProjectComputeMpThirdParty/{projectNumber}")
    public Result selectProjectComputeMpThirdParty( @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.selectProjectComputeMpThirdParty(projectNumber));
        return Result.success(glassOptimizeService.selectProjectComputeMpThirdParty(projectNumber));
    }
    //模拟计算流程卡详情第三方
@@ -312,14 +469,14 @@
    @PostMapping  ("/selectComputeDetailThirdParty/{processId}/{technologyNumber}")
    public Result selectComputeDetailThirdParty(
            @PathVariable String processId, @PathVariable Integer technologyNumber){
        return Result.seccess(glassOptimizeService.selectComputeDetailThirdParty(processId,technologyNumber));
        return Result.success(glassOptimizeService.selectComputeDetailThirdParty(processId,technologyNumber));
    }
    @ApiOperation("模拟计算保存")
    @PostMapping("/simulationSaveThirdParty")
    public Result simulationSaveThirdParty(@RequestBody Map<String, Object> object) {
        try {
            return Result.seccess(glassOptimizeService.simulationSaveThirdParty(object));
            return Result.success(glassOptimizeService.simulationSaveThirdParty(object));
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error();
@@ -331,21 +488,21 @@
    @PostMapping("/deleteProjectThirdParty/{projectNumber}")
    public Result deleteProjectThirdParty(
            @PathVariable String projectNumber){
        return Result.seccess(glassOptimizeService.deleteProjectThirdParty(projectNumber));
        return Result.success(glassOptimizeService.deleteProjectThirdParty(projectNumber));
    }
    @ApiOperation("工程信息接口")
    @PostMapping  ("/projectInfoThirdParty/{projectNo}")
    public Result projectInfoThirdParty(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.projectInfoThirdParty(projectNo));
        return Result.success(glassOptimizeService.projectInfoThirdParty(projectNo));
    }
    //库存信息
    @ApiOperation("库存信息接口")
    @GetMapping  ("/materialStoreSvThirdParty/{projectNumber}")
    public Result materialStoreSvThirdParty(@PathVariable  String projectNumber ){
        return Result.seccess(glassOptimizeService.materialStoreSvThirdParty(projectNumber));
        return Result.success(glassOptimizeService.materialStoreSvThirdParty(projectNumber));
    }
    //工程信息流程卡
@@ -353,10 +510,21 @@
    @PostMapping  ("/getProcessCardMpThirdParty/{projectNo}")
    public Result getProcessCardMpThirdParty(
            @PathVariable String projectNo){
        return Result.seccess(glassOptimizeService.getProcessCardMpThirdParty(projectNo));
        return Result.success(glassOptimizeService.getProcessCardMpThirdParty(projectNo));
    }
    @ApiOperation("mes工程任务下发接口")
    @PostMapping("/getIssuingProjects")
    public Result issuingProjects(@RequestBody String projectNo) throws JsonProcessingException {
        return Result.success(glassOptimizeService.issuingProjects(projectNo));
    }
    @ApiOperation("mes工程生产不可见接口")
    @PostMapping("/issuingCancelProject")
    public Result issuingCancelProject(@RequestBody String projectNo){
        return Result.success(glassOptimizeService.issuingCancelProject(projectNo));
    }