package com.iailab.module.data.point.controller.admin;
|
|
import com.iailab.framework.apilog.core.annotation.ApiAccessLog;
|
import com.iailab.framework.common.pojo.CommonResult;
|
import com.iailab.framework.common.pojo.PageParam;
|
import com.iailab.framework.common.pojo.PageResult;
|
import com.iailab.framework.common.util.object.ConvertUtils;
|
import com.iailab.framework.excel.core.util.ExcelUtils;
|
import com.iailab.module.data.api.dto.ApiPointValueQueryDTO;
|
import com.iailab.module.data.common.enums.DataSourceType;
|
import com.iailab.module.data.common.enums.DataTypeEnum;
|
import com.iailab.module.data.common.enums.MeasureValueType;
|
import com.iailab.module.data.influxdb.service.InfluxDBService;
|
import com.iailab.module.data.point.common.PointTypeEnum;
|
import com.iailab.module.data.point.dto.DaPointDTO;
|
import com.iailab.module.data.point.service.DaPointService;
|
import com.iailab.module.data.point.vo.*;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameters;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.validation.Valid;
|
import java.io.IOException;
|
import java.math.BigDecimal;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
import static com.iailab.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
import static com.iailab.framework.common.pojo.CommonResult.success;
|
|
|
/**
|
* @author lirm
|
* @Description
|
* @createTime 2024年09月2日
|
*/
|
@Tag(name = "数据采集,测点")
|
@RestController
|
@RequestMapping("/data/da/point")
|
@Validated
|
public class DaPointController {
|
|
@Resource
|
private DaPointService daPointService;
|
|
@Resource
|
private InfluxDBService influxDBService;
|
|
@PreAuthorize("@ss.hasPermission('data:point:query')")
|
@GetMapping("page")
|
public CommonResult<PageResult<DaPointDTO>> page(@Valid DaPointPageReqVO reqVO) {
|
PageResult<DaPointDTO> page = daPointService.queryPage(reqVO);
|
return success(page);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:query')")
|
@GetMapping("/list")
|
@Operation(summary = "列表")
|
public CommonResult<List<DaPointDTO>> list(@Valid @RequestParam Map<String, Object> params) {
|
List<DaPointDTO> list = daPointService.list(params);
|
return success(list);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:query')")
|
@GetMapping("/info/{id}")
|
public CommonResult<DaPointDTO> info(@PathVariable("id") String id) {
|
DaPointDTO info = daPointService.info(id);
|
return success(info);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:create')")
|
@PostMapping("create")
|
public CommonResult<Boolean> create(@RequestBody DaPointDTO daPointDTO) {
|
String id = UUID.randomUUID().toString();
|
daPointDTO.setId(id);
|
daPointService.add(daPointDTO);
|
return success(true);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:update')")
|
@PutMapping("/update")
|
public CommonResult<Boolean> update(@RequestBody DaPointDTO daPointDTO) {
|
daPointService.update(daPointDTO);
|
return success(true);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:delete')")
|
@DeleteMapping("/delete")
|
public CommonResult<Boolean> delete(String id) {
|
daPointService.delete(new String[]{id});
|
return success(true);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:query')")
|
@GetMapping("pointNo")
|
public CommonResult<List<DaPointDTO>> getPoint(@RequestParam Map<String, Object> params) {
|
List<DaPointDTO> list = daPointService.list(params);
|
|
return new CommonResult<List<DaPointDTO>>().setData(list);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:update')")
|
@PutMapping("/enable")
|
@Operation(summary = "启用")
|
public CommonResult<Boolean> enable(@RequestBody String[] ids) {
|
daPointService.enableByIds(ids);
|
return success(true);
|
}
|
|
@PreAuthorize("@ss.hasPermission('data:point:update')")
|
@PutMapping("/disable")
|
@Operation(summary = "禁用")
|
public CommonResult<Boolean> disable(@RequestBody String[] ids) {
|
daPointService.disableByIds(ids);
|
return success(true);
|
}
|
|
@GetMapping("/export")
|
@Operation(summary = "导出测点列表")
|
@PreAuthorize("@ss.hasPermission('data:point:export')")
|
@ApiAccessLog(operateType = EXPORT)
|
public void exportPointList(@Validated DaPointPageReqVO exportReqVO,
|
HttpServletResponse response) throws IOException {
|
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
List<DaPointExcelVO> dataList = new ArrayList<>();
|
List<DaPointDTO> measurePointList = daPointService.getMeasurePoint(exportReqVO);
|
dataList.addAll(ConvertUtils.sourceToTarget(measurePointList, DaPointExcelVO.class));
|
List<DaPointDTO> mathPointList = daPointService.getMathPoint(exportReqVO);
|
dataList.addAll(ConvertUtils.sourceToTarget(mathPointList, DaPointExcelVO.class));
|
List<DaPointDTO> constantPointList = daPointService.getConstantPoint(exportReqVO);
|
dataList.addAll(ConvertUtils.sourceToTarget(constantPointList, DaPointExcelVO.class));
|
List<DaPointDTO> cumulatePointList = daPointService.getCumulatePoint(exportReqVO);
|
dataList.addAll(ConvertUtils.sourceToTarget(cumulatePointList, DaPointExcelVO.class));
|
ExcelUtils.write(response, "测点列表.xls", "测点列表", DaPointExcelVO.class, dataList);
|
}
|
|
@GetMapping("/exportValue")
|
@Operation(summary = "导出测点数据")
|
@PreAuthorize("@ss.hasPermission('data:point:export')")
|
@ApiAccessLog(operateType = EXPORT)
|
public void exportPointValue(@RequestParam("pointNo") String pointNo,
|
@RequestParam("start") String start,
|
@RequestParam("end") String end,
|
HttpServletResponse response) throws IOException {
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
ApiPointValueQueryDTO queryDto = new ApiPointValueQueryDTO();
|
List<String> pointNos = new ArrayList<>();
|
pointNos.add(pointNo);
|
queryDto.setPointNos(pointNos);
|
try {
|
if (start == null) {
|
queryDto.setStart(new Date());
|
} else {
|
queryDto.setStart(formatter.parse(start));
|
|
}
|
if (end == null) {
|
queryDto.setEnd(new Date());
|
} else {
|
queryDto.setEnd(formatter.parse(end));
|
}
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
List<PointValueExportVO> dointValueExportlist = influxDBService.exportPointValue(queryDto);
|
ExcelUtils.write(response, "测点数据.xls", "数据", PointValueExportVO.class, dointValueExportlist);
|
}
|
|
@GetMapping("/get-import-template")
|
@Operation(summary = "获得导入测点模板")
|
public void importTemplate(HttpServletResponse response) throws IOException {
|
// 手动创建导出 demo
|
List<PointImportExcelVO> list = Arrays.asList(
|
PointImportExcelVO.builder().pointName("测点1").pointType(PointTypeEnum.MEASURE_POINT.getCode()).dataType(DataTypeEnum.FLOAT.getCode()).valueType(MeasureValueType.SIMULATE.getCode())
|
.storeType(null).unit("t(非必填)").unittransfactor(new BigDecimal(1)).defaultValue(new BigDecimal(0)).maxValue(new BigDecimal(10000000.000000)).minValue(new BigDecimal(0))
|
.minfreqid("1min").remark("备注(非必填)").sourceType(DataSourceType.HTTP.getCode())
|
.sourceName("").tagNo("SARD1200G00102RC001")
|
.build()
|
);
|
// 输出
|
ExcelUtils.write(response, "测点导入模板.xlsx", "测点列表", PointImportExcelVO.class, list,true);
|
}
|
|
@PostMapping("/import")
|
@Operation(summary = "导入测点")
|
@Parameters({
|
@Parameter(name = "file", description = "Excel 文件", required = true),
|
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
|
})
|
public CommonResult<PointImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
|
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
|
List<PointImportExcelVO> list = ExcelUtils.read(file, PointImportExcelVO.class);
|
return success(daPointService.importPointList(list, updateSupport));
|
}
|
|
}
|