工业互联网平台2.0版本后端代码
dongyukun
2025-05-28 47ecac334ac27d99de2a3a69b3f4bc654298ee1f
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
package com.iailab.module.model.mcs.sche.controller.admin;
 
import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.module.data.api.ind.IndItemApi;
import com.iailab.module.data.api.ind.dto.ApiIndItemQueryDTO;
import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
import com.iailab.module.data.api.plan.PlanItemApi;
import com.iailab.module.data.api.point.DataPointApi;
import com.iailab.module.data.api.point.dto.ApiPointValueDTO;
import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
import com.iailab.module.data.common.ApiDataQueryDTO;
import com.iailab.module.data.common.ApiDataValueDTO;
import com.iailab.module.model.api.mcs.McsApi;
import com.iailab.module.model.api.mcs.dto.PreDataBarLineReqVO;
import com.iailab.module.model.api.mcs.dto.PreDataBarLineRespVO;
import com.iailab.module.model.common.enums.DataCategoryEnum;
import com.iailab.module.model.common.utils.DateUtils;
import com.iailab.module.model.mcs.sche.service.StSuggestSnapshotRecordService;
import com.iailab.module.model.mcs.sche.vo.StSuggestSnapshotRecordRespVO;
import com.mysql.cj.util.TimeUtil;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import static com.iailab.framework.common.pojo.CommonResult.success;
import static com.iailab.module.model.common.utils.DateUtils.DATE_TIME_PATTERN;
 
/**
 * @author Jay
 */
@Tag(name = "调度建议快照")
@RestController
@RequestMapping("/model/suggest/snapshot/record")
public class StSuggestSnapshotRecordController {
 
    @Autowired
    private StSuggestSnapshotRecordService stSuggestSnapshotRecordService;
 
    @Autowired
    private DataPointApi dataPointApi;
 
    @Autowired
    private IndItemApi indItemApi;
 
    @Autowired
    private PlanItemApi planItemApi;
 
    @Autowired
    private McsApi mcsApi;
 
 
    @GetMapping("/list")
    @Parameter(name = "operationId", description = "操作id", required = true, example = "1024")
    public CommonResult<List<StSuggestSnapshotRecordRespVO>> getListByOperationId(@RequestParam("operationId") String operationId) {
        return success(stSuggestSnapshotRecordService.getListByOperationId(operationId));
    }
 
    @PostMapping("/getChartData")
    public CommonResult<List<StSuggestSnapshotRecordRespVO>> getChartData(@RequestBody List<StSuggestSnapshotRecordRespVO> reqList){
        reqList.forEach(item -> {
            List<Object[]> dataList = new ArrayList<>();
            if(DataCategoryEnum.DATAPOINT.getCode().equals(item.getDataType())){
                ApiPointValueQueryDTO queryDTO = new ApiPointValueQueryDTO();
                queryDTO.setPointNo(item.getDataNo());
                queryDTO.setStart(item.getStartTime());
                queryDTO.setEnd(item.getEndTime());
                List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(queryDTO);
                if (valueList != null && !valueList.isEmpty()){
                    for (ApiPointValueDTO apiPointValueDTO : valueList) {
                        Object[] data = new Object[2];
                        data[0] = DateUtils.format(new Date(String.valueOf(apiPointValueDTO.getT())), DATE_TIME_PATTERN);
                        data[1] = apiPointValueDTO.getV();
                        dataList.add(data);
                    }
                }
            } else if (DataCategoryEnum.IND.getCode().equals(item.getDataType())) {
                ApiIndItemQueryDTO queryDTO = new ApiIndItemQueryDTO();
                queryDTO.setItemNo(item.getDataNo());
                queryDTO.setStart(item.getStartTime());
                queryDTO.setEnd(item.getEndTime());
                List<ApiIndItemValueDTO> valueList = indItemApi.queryIndItemHistoryValue(queryDTO);
                if (valueList != null && !valueList.isEmpty()){
                    for (ApiIndItemValueDTO apiIndItemValueDTO : valueList) {
                        Object[] data = new Object[2];
                        data[0] = DateUtils.format(new Date(apiIndItemValueDTO.getDataTime()), DATE_TIME_PATTERN);
                        data[1] = apiIndItemValueDTO.getDataValue();
                        dataList.add(data);
                    }
                }
            } else if (DataCategoryEnum.PLAN.getCode().equals(item.getDataType())) {
                ApiDataQueryDTO queryDTO = new ApiDataQueryDTO();
                queryDTO.setItemNo(item.getDataNo());
                queryDTO.setStart(item.getStartTime());
                queryDTO.setEnd(item.getEndTime());
                List<ApiDataValueDTO> valueList = planItemApi.queryPlanItemHistoryValue(queryDTO);
                if (valueList != null && !valueList.isEmpty()){
                    for (ApiDataValueDTO apiDataValueDTO : valueList) {
                        Object[] data = new Object[2];
                        data[0] = DateUtils.format(apiDataValueDTO.getDataTime(), DATE_TIME_PATTERN);
                        data[1] = apiDataValueDTO.getDataValue();
                        dataList.add(data);
                    }
                }
            } else if (DataCategoryEnum.PREDICT_ITEM_N.getCode().equals(item.getDataType())) {
                dataList = getPreDataList(item, "N");
            }else if (DataCategoryEnum.PREDICT_ITEM_L.getCode().equals(item.getDataType())) {
                dataList = getPreDataList(item, "L");
            }else if (DataCategoryEnum.PREDICT_ITEM_C.getCode().equals(item.getDataType())) {
                dataList = getPreDataList(item, "C");
            }
            item.setDataList(dataList);
 
        });
        return success(reqList);
    }
    private List<Object[]> getPreDataList(StSuggestSnapshotRecordRespVO resVo, String type){
        List<Object[]> dataList = new ArrayList<>();
        PreDataBarLineReqVO reqVO  = new PreDataBarLineReqVO();
        List<String> outIds = new ArrayList<>();
        outIds.add(resVo.getDataNo());
        reqVO.setOutIds(outIds);
        reqVO.setStartTime(resVo.getStartTime());
        reqVO.setEndTime(resVo.getEndTime());
        PreDataBarLineRespVO result = mcsApi.getPreDataCharts(reqVO);
        if (result == null || result.getDataViewList() == null || result.getDataViewList().isEmpty()){
            return dataList;
        }
        if ("N".equals(type) && result.getDataViewList().get(0).getPreDataN()!=null){
            dataList = result.getDataViewList().get(0).getPreDataN();
        }else if ("L".equals(type) && result.getDataViewList().get(0).getPreDataL()!=null){
            dataList = result.getDataViewList().get(0).getPreDataL();
        }else if ("C".equals(type) && result.getDataViewList().get(0).getCurData()!=null){
            dataList = result.getDataViewList().get(0).getCurData();
        }
        return dataList;
    }
}