工业互联网平台2.0版本后端代码
Jay
2025-05-28 1f0a4467218bee8256e372fbf99e9bf6b0c4b767
iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/sche/controller/admin/StSuggestSnapshotRecordController.java
@@ -1,46 +1,146 @@
package com.iailab.module.model.mcs.sche.controller.admin;
import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.framework.common.pojo.PageResult;
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.mcs.sche.service.StSuggestSnapshotRecordService;
import com.iailab.module.model.mcs.sche.vo.StSuggestSnapshotRecordChartReqVO;
import com.iailab.module.model.mcs.sche.vo.StSuggestSnapshotRecordRespVO;
import com.iailab.module.model.mcs.sche.vo.StSuggestSnapshotRecordSaveReqVO;
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 javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import static com.iailab.framework.common.pojo.CommonResult.success;
/**
 * @author Jay
 */
@Tag(name = "调度建议快照")
@RestController
@RequestMapping("/model/suggest/snapshot/record")
public class StSuggestSnapshotRecordController {
    @Autowired
    private StSuggestSnapshotRecordService stSuggestSnapshotRecordService;
    @GetMapping("/page")
    public CommonResult<PageResult<StSuggestSnapshotRecordRespVO>> getPage(@Valid StSuggestSnapshotRecordChartReqVO pageVO) {
        PageResult<StSuggestSnapshotRecordRespVO> pageResult = stSuggestSnapshotRecordService.page(pageVO);
        return success(pageResult);
    @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("/create")
    public CommonResult<Boolean> create(@Valid @RequestBody StSuggestSnapshotRecordSaveReqVO createReqVO) {
        stSuggestSnapshotRecordService.create(createReqVO);
        return success(true);
    }
    @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.size() > 0){
                    Object [][] data = new Object[valueList.size()][2];
                    for (int i = 0; i < valueList.size(); i++){
                        data[i][0] = valueList.get(i).getT();
                        data[i][1] = valueList.get(i).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.size() > 0){
                    Object [][] data = new Object[valueList.size()][2];
                    for (int i = 0; i < valueList.size(); i++){
                        data[i][0] = valueList.get(i).getDataTime();
                        data[i][1] = valueList.get(i).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.size() > 0){
                    Object [][] data = new Object[valueList.size()][2];
                    for (int i = 0; i < valueList.size(); i++){
                        data[i][0] = valueList.get(i).getDataTime();
                        data[i][1] = valueList.get(i).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);
    @PutMapping("/update")
    public CommonResult<Boolean> update(@Valid @RequestBody StSuggestSnapshotRecordSaveReqVO updateReqVO) {
        stSuggestSnapshotRecordService.update(updateReqVO);
        return success(true);
        });
        return success(reqList);
    }
    @DeleteMapping("/delete")
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
    public CommonResult<Boolean> deleteTenant(@RequestParam("id") String id) {
        stSuggestSnapshotRecordService.delete(id);
        return success(true);
    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().size() == 0){
            return dataList;
        }
        List<String> xData = result.getCategories();
        List<Object[]> yData = new ArrayList<>();
        if ("N".equals(type)){
            yData = result.getDataViewList().get(0).getPreDataN();
        }else if ("L".equals(type)){
            yData = result.getDataViewList().get(0).getPreDataL();
        }else if ("C".equals(type)){
            yData = result.getDataViewList().get(0).getCurData();
        }
        Object [][] data = new Object[xData.size()][1];
        for (int i = 0; i < xData.size(); i++){
            data[i][0] = xData.get(i);
            data[i][1] = yData.get(i);
            dataList.add(data);
        }
        return dataList;
    }
}