检测计划导出,微调被检设备、误差体系
This commit is contained in:
@@ -3,6 +3,7 @@ package com.njcn.gather.device.device.controller;
|
|||||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||||
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
@@ -17,8 +18,12 @@ import com.njcn.gather.device.device.pojo.po.PqDev;
|
|||||||
import com.njcn.gather.device.device.pojo.vo.PqDevExcel;
|
import com.njcn.gather.device.device.pojo.vo.PqDevExcel;
|
||||||
import com.njcn.gather.device.device.pojo.vo.PqDevVO;
|
import com.njcn.gather.device.device.pojo.vo.PqDevVO;
|
||||||
import com.njcn.gather.device.device.service.IPqDevService;
|
import com.njcn.gather.device.device.service.IPqDevService;
|
||||||
|
import com.njcn.gather.device.pojo.constant.DevConst;
|
||||||
import com.njcn.gather.device.pojo.enums.DevResponseEnum;
|
import com.njcn.gather.device.pojo.enums.DevResponseEnum;
|
||||||
|
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
||||||
|
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
|
import com.njcn.web.utils.ExcelUtil;
|
||||||
import com.njcn.web.utils.HttpResultUtil;
|
import com.njcn.web.utils.HttpResultUtil;
|
||||||
import com.njcn.web.utils.PoiUtil;
|
import com.njcn.web.utils.PoiUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -48,6 +53,8 @@ import java.util.Map;
|
|||||||
public class PqDevController extends BaseController {
|
public class PqDevController extends BaseController {
|
||||||
|
|
||||||
private final IPqDevService pqDevService;
|
private final IPqDevService pqDevService;
|
||||||
|
private final IDictDataService dictDataService;
|
||||||
|
|
||||||
|
|
||||||
@OperateInfo
|
@OperateInfo
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
@@ -159,7 +166,16 @@ public class PqDevController extends BaseController {
|
|||||||
public void export(@RequestBody @Validated PqDevParam.QueryParam queryParam) {
|
public void export(@RequestBody @Validated PqDevParam.QueryParam queryParam) {
|
||||||
String methodDescribe = getMethodDescribe("export");
|
String methodDescribe = getMethodDescribe("export");
|
||||||
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
||||||
pqDevService.exportPqDevData(queryParam);
|
DictData dictData = dictDataService.getDictDataById(queryParam.getPattern());
|
||||||
|
if (ObjectUtil.isNotNull(dictData)) {
|
||||||
|
if (DevConst.PATTERN_CONTRAST.equals(dictData.getCode())) {
|
||||||
|
List<Map<String, Object>> sheetList = pqDevService.getContrastExportSheetList(queryParam);
|
||||||
|
ExcelUtil.exportExcel("被检设备导出数据.xlsx", sheetList);
|
||||||
|
} else {
|
||||||
|
List<Map<String, Object>> sheetList = pqDevService.getSimOrDigitExportSheetList(queryParam);
|
||||||
|
ExcelUtil.exportExcel("被检设备导出数据.xlsx", sheetList);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
@@ -174,13 +190,24 @@ public class PqDevController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
@PostMapping("/listBoundByPlanId")
|
@PostMapping("/listByPlanId")
|
||||||
@ApiOperation("根据检测计划id查询出所有已绑定的设备")
|
@ApiOperation("根据检测计划id查询出所有已绑定的设备")
|
||||||
@ApiImplicitParam(name = "planId", value = "计划id", required = true)
|
@ApiImplicitParam(name = "planId", value = "计划id", required = true)
|
||||||
public HttpResult<List<PqDev>> listBoundByPlanId(@RequestBody @Validated PqDevParam.QueryParam param) {
|
public HttpResult<List<PqDev>> listByPlanId(@RequestBody @Validated PqDevParam.QueryParam param) {
|
||||||
String methodDescribe = getMethodDescribe("listBoundByPlanId");
|
String methodDescribe = getMethodDescribe("listByPlanId");
|
||||||
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, param);
|
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, param);
|
||||||
List<PqDev> result = pqDevService.listBoundByPlanId(param);
|
List<PqDev> result = pqDevService.listByPlanId(param);
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
// @PostMapping("/listUnDocumentByPlanId")
|
||||||
|
// @ApiOperation("根据检测计划id查询出所有已绑定(未归档)的设备")
|
||||||
|
// @ApiImplicitParam(name = "planId", value = "计划id", required = true)
|
||||||
|
// public HttpResult<List<PqDev>> listUnDocumentByPlanId(@RequestBody @Validated PqDevParam.QueryParam param) {
|
||||||
|
// String methodDescribe = getMethodDescribe("listUnDocumentByPlanId");
|
||||||
|
// LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, param);
|
||||||
|
// List<PqDev> result = pqDevService.listUnDocumentByPlanId(param);
|
||||||
|
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,6 +137,11 @@ public class PqDevParam {
|
|||||||
@Min(value = 0, message = DevValidMessage.RECHECK_NUM_FORMAT_ERROR)
|
@Min(value = 0, message = DevValidMessage.RECHECK_NUM_FORMAT_ERROR)
|
||||||
private Integer reCheckNum;
|
private Integer reCheckNum;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否支持系数校准")
|
||||||
|
@Min(value = 0, message = DevValidMessage.FACTOR_FLAG_FORMAT_ERROR)
|
||||||
|
@Max(value = 1, message = DevValidMessage.FACTOR_FLAG_FORMAT_ERROR)
|
||||||
|
private String factorFlag;
|
||||||
|
|
||||||
@ApiModelProperty("监测点台账列表")
|
@ApiModelProperty("监测点台账列表")
|
||||||
@Valid
|
@Valid
|
||||||
private List<PqMonitorParam> monitorList;
|
private List<PqMonitorParam> monitorList;
|
||||||
@@ -155,7 +160,7 @@ public class PqDevParam {
|
|||||||
|
|
||||||
@ApiModelProperty("检测状态")
|
@ApiModelProperty("检测状态")
|
||||||
@Min(value = 0, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
@Min(value = 0, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
||||||
@Max(value = 2, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
@Max(value = 3, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
||||||
private Integer checkState;
|
private Integer checkState;
|
||||||
|
|
||||||
@ApiModelProperty("检测结果")
|
@ApiModelProperty("检测结果")
|
||||||
@@ -185,7 +190,6 @@ public class PqDevParam {
|
|||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ApiModelProperty(value = "设备模式,字典表(数字、模拟、比对)")
|
@ApiModelProperty(value = "设备模式,字典表(数字、模拟、比对)")
|
||||||
// @NotBlank(message = DevValidMessage.PATTERN_NOT_BLANK)
|
|
||||||
@Pattern(regexp = PatternRegex.SYSTEM_ID, message = DevValidMessage.PATTERN_FORMAT_ERROR)
|
@Pattern(regexp = PatternRegex.SYSTEM_ID, message = DevValidMessage.PATTERN_FORMAT_ERROR)
|
||||||
private String pattern;
|
private String pattern;
|
||||||
|
|
||||||
@@ -196,10 +200,10 @@ public class PqDevParam {
|
|||||||
@Pattern(regexp = PatternRegex.SYSTEM_ID, message = DevValidMessage.PLAN_ID_FORMAT_ERROR)
|
@Pattern(regexp = PatternRegex.SYSTEM_ID, message = DevValidMessage.PLAN_ID_FORMAT_ERROR)
|
||||||
private String planId;
|
private String planId;
|
||||||
|
|
||||||
@ApiModelProperty("检测状态")
|
@ApiModelProperty("检测状态列表")
|
||||||
|
private List<
|
||||||
@Min(value = 0, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
@Min(value = 0, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
||||||
@Max(value = 2, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR)
|
@Max(value = 3, message = DevValidMessage.CHECK_STATE_FORMAT_ERROR) Integer> checkStateList;
|
||||||
private Integer checkState;
|
|
||||||
|
|
||||||
@ApiModelProperty("检测结果")
|
@ApiModelProperty("检测结果")
|
||||||
@Min(value = 0, message = DevValidMessage.CHECK_RESULT_FORMAT_ERROR)
|
@Min(value = 0, message = DevValidMessage.CHECK_RESULT_FORMAT_ERROR)
|
||||||
|
|||||||
@@ -72,11 +72,28 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
void importPqDevData(List<PqDevExcel.ContrastImportData> sgEventExcels);
|
void importPqDevData(List<PqDevExcel.ContrastImportData> sgEventExcels);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出被检设备信息
|
* 根据检测计划planIds获取被检设备设备导出时所需的SheetMap
|
||||||
|
*
|
||||||
|
* @param planIds
|
||||||
|
* @return SheetMap
|
||||||
|
*/
|
||||||
|
Map<String, Object> getExportSheetMap(List<String> planIds, Class clazz);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取模拟式||数字式设备导出时所需的SheetList
|
||||||
*
|
*
|
||||||
* @param queryParam 查询参数
|
* @param queryParam 查询参数
|
||||||
|
* @return SheetList
|
||||||
*/
|
*/
|
||||||
void exportPqDevData(PqDevParam.QueryParam queryParam);
|
List<Map<String, Object>> getSimOrDigitExportSheetList(PqDevParam.QueryParam queryParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取比对式设备导出时所需的SheetList (包含与之关联的监控点信息)
|
||||||
|
*
|
||||||
|
* @param queryParam 查询参数
|
||||||
|
* @return SheetList
|
||||||
|
*/
|
||||||
|
List<Map<String, Object>> getContrastExportSheetList(PqDevParam.QueryParam queryParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取所有未绑定的设备
|
* 获取所有未绑定的设备
|
||||||
@@ -92,7 +109,7 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
* @param param 计划id
|
* @param param 计划id
|
||||||
* @return 绑定的设备列表
|
* @return 绑定的设备列表
|
||||||
*/
|
*/
|
||||||
List<PqDev> listBoundByPlanId(PqDevParam.QueryParam param);
|
List<PqDev> listByPlanId(PqDevParam.QueryParam param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定计划
|
* 绑定计划
|
||||||
@@ -117,4 +134,11 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
PqDevVO getPqDevById(String id);
|
PqDevVO getPqDevById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有非未检测状态的设备
|
||||||
|
*
|
||||||
|
* @return 所有非未检测状态的设备列表
|
||||||
|
*/
|
||||||
|
List<PqDev> listNotUnchecked();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@@ -50,25 +51,7 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<PqDev> listPqDevs(PqDevParam.QueryParam queryParam) {
|
public Page<PqDev> listPqDevs(PqDevParam.QueryParam queryParam) {
|
||||||
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
Page<PqDev> page = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), this.getQueryWrapper(queryParam));
|
||||||
if (ObjectUtil.isNotNull(queryParam)) {
|
|
||||||
queryWrapper
|
|
||||||
.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName())
|
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getPattern()), "pq_dev.pattern", queryParam.getPattern())
|
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getManufacturer()), "pq_dev.manufacturer", queryParam.getManufacturer())
|
|
||||||
.between(ObjectUtil.isAllNotEmpty(queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()), "pq_dev.Create_Date", queryParam.getSearchBeginTime(), queryParam.getSearchEndTime());
|
|
||||||
//排序
|
|
||||||
if (ObjectUtil.isAllNotEmpty(queryParam.getSortBy(), queryParam.getOrderBy())) {
|
|
||||||
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
|
||||||
} else {
|
|
||||||
//没有排序参数,默认根据sort字段排序,没有排序字段的,根据updateTime更新时间排序
|
|
||||||
queryWrapper.orderBy(true, true, "pq_dev.Create_Time");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
queryWrapper.orderBy(true, true, "pq_dev.Create_Time");
|
|
||||||
}
|
|
||||||
queryWrapper.eq("pq_dev.state", DataStateEnum.ENABLE.getCode());
|
|
||||||
Page<PqDev> page = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), queryWrapper);
|
|
||||||
page.getRecords().forEach(p -> {
|
page.getRecords().forEach(p -> {
|
||||||
if (ObjectUtil.isNotNull(p.getSeries())) {
|
if (ObjectUtil.isNotNull(p.getSeries())) {
|
||||||
p.setSeries(DeviceUtil.decoderString(1, p.getSeries()));
|
p.setSeries(DeviceUtil.decoderString(1, p.getSeries()));
|
||||||
@@ -82,6 +65,8 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addPqDev(PqDevParam pqDevParam) {
|
public boolean addPqDev(PqDevParam pqDevParam) {
|
||||||
|
this.checkRepeat(pqDevParam, false);
|
||||||
|
|
||||||
PqDev pqDev = new PqDev();
|
PqDev pqDev = new PqDev();
|
||||||
BeanUtil.copyProperties(pqDevParam, pqDev);
|
BeanUtil.copyProperties(pqDevParam, pqDev);
|
||||||
if (pqDevParam.getEncryptionFlag() == 1) {
|
if (pqDevParam.getEncryptionFlag() == 1) {
|
||||||
@@ -111,6 +96,8 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updatePqDev(PqDevParam.UpdateParam updateParam) {
|
public boolean updatePqDev(PqDevParam.UpdateParam updateParam) {
|
||||||
|
this.checkRepeat(updateParam, true);
|
||||||
|
|
||||||
PqDev pqDev = new PqDev();
|
PqDev pqDev = new PqDev();
|
||||||
BeanUtil.copyProperties(updateParam, pqDev);
|
BeanUtil.copyProperties(updateParam, pqDev);
|
||||||
if (Objects.nonNull(pqDev.getSeries())) {
|
if (Objects.nonNull(pqDev.getSeries())) {
|
||||||
@@ -177,73 +164,59 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exportPqDevData(PqDevParam.QueryParam queryParam) {
|
public Map<String, Object> getExportSheetMap(List<String> planIds, Class clazz) {
|
||||||
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
List<PqDev> devList = new ArrayList<>();
|
||||||
if (ObjectUtil.isNotNull(queryParam)) {
|
if (ObjectUtil.isNotEmpty(planIds)) {
|
||||||
queryWrapper
|
devList.addAll(this.lambdaQuery().in(PqDev::getPlanId, planIds).eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).orderBy(true, true, PqDev::getCreateTime).list());
|
||||||
.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName())
|
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getPattern()), "pq_dev.pattern", queryParam.getPattern())
|
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getManufacturer()), "pq_dev.manufacturer", queryParam.getManufacturer())
|
|
||||||
.between(ObjectUtil.isAllNotEmpty(queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()), "pq_dev.Create_Date", queryParam.getSearchBeginTime(), queryParam.getSearchEndTime());
|
|
||||||
//排序
|
|
||||||
if (ObjectUtil.isAllNotEmpty(queryParam.getSortBy(), queryParam.getOrderBy())) {
|
|
||||||
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
|
||||||
} else {
|
|
||||||
//没有排序参数,默认根据sort字段排序,没有排序字段的,根据updateTime更新时间排序
|
|
||||||
queryWrapper.orderBy(true, false, "pq_dev.Create_Time");
|
|
||||||
}
|
}
|
||||||
} else {
|
this.visualize(devList);
|
||||||
queryWrapper.orderBy(true, false, "pq_dev.Create_Time");
|
|
||||||
|
List<Object> pqDevExcels = BeanUtil.copyToList(devList, clazz);
|
||||||
|
Map<String, Object> sheetMap = new HashMap<>();
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setSheetName("被检设备");
|
||||||
|
sheetMap.put("title", exportParams);
|
||||||
|
sheetMap.put("data", pqDevExcels);
|
||||||
|
sheetMap.put("entity", PqDevExcel.ContrastExportData.class);
|
||||||
|
|
||||||
|
return sheetMap;
|
||||||
}
|
}
|
||||||
queryWrapper.eq("pq_dev.state", DataStateEnum.ENABLE.getCode());
|
|
||||||
List<PqDev> pqDevs = this.list(queryWrapper);
|
@Override
|
||||||
|
public List<Map<String, Object>> getSimOrDigitExportSheetList(PqDevParam.QueryParam queryParam) {
|
||||||
|
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
||||||
this.visualize(pqDevs);
|
this.visualize(pqDevs);
|
||||||
DictData dictData = dictDataService.getDictDataById(queryParam.getPattern());
|
|
||||||
if (ObjectUtil.isNotNull(dictData)) {
|
|
||||||
if (DevConst.PATTERN_CONTRAST.equals(dictData.getCode())) {
|
|
||||||
List<PqDevExcel.ContrastExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ContrastExportData.class);
|
|
||||||
|
|
||||||
Map<String, Object> sheet1 = new HashMap<>();
|
|
||||||
ExportParams exportParams1 = new ExportParams();
|
|
||||||
exportParams1.setSheetName("被检设备");
|
|
||||||
sheet1.put("title", exportParams1);
|
|
||||||
sheet1.put("data", pqDevExcels);
|
|
||||||
sheet1.put("entity", PqDevExcel.ContrastExportData.class);
|
|
||||||
|
|
||||||
List<PqMonitorExcel.ExportData> pqMonitorExcels = new ArrayList<>();
|
|
||||||
|
|
||||||
for (int i = 0; i < pqDevs.size(); i++) {
|
|
||||||
List<PqMonitor> pqMonitors = pqMonitorService.listPqMonitorByDevId(pqDevs.get(i).getId());
|
|
||||||
if (ObjectUtil.isNotEmpty(pqMonitors)) {
|
|
||||||
List<PqMonitorExcel.ExportData> exportData = BeanUtil.copyToList(pqMonitors, PqMonitorExcel.ExportData.class);
|
|
||||||
int finalI = i;
|
|
||||||
exportData.forEach(data -> {
|
|
||||||
// 给监测点台账添加设备名称
|
|
||||||
data.setDevName(pqDevs.get(finalI).getName());
|
|
||||||
data.setPtType(dictDataService.getDictDataById(data.getPtType()).getName());
|
|
||||||
});
|
|
||||||
pqMonitorExcels.addAll(exportData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, Object> sheet2 = new HashMap<>();
|
|
||||||
ExportParams exportParams2 = new ExportParams();
|
|
||||||
exportParams2.setSheetName("监测点台账");
|
|
||||||
sheet2.put("title", exportParams2);
|
|
||||||
sheet2.put("data", pqMonitorExcels);
|
|
||||||
sheet2.put("entity", PqMonitorExcel.ExportData.class);
|
|
||||||
|
|
||||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
|
||||||
sheetsList.add(sheet1);
|
|
||||||
sheetsList.add(sheet2);
|
|
||||||
|
|
||||||
ExcelUtil.exportExcel("被检设备导出数据.xlsx", sheetsList);
|
|
||||||
// ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.ContrastExportData.class, pqDevExcels);
|
|
||||||
} else {
|
|
||||||
List<PqDevExcel.SimulateAndDigitalExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.SimulateAndDigitalExportData.class);
|
List<PqDevExcel.SimulateAndDigitalExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.SimulateAndDigitalExportData.class);
|
||||||
ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.SimulateAndDigitalExportData.class, pqDevExcels);
|
|
||||||
}
|
Map<String, Object> sheetMap = new HashMap<>();
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setSheetName("被检设备");
|
||||||
|
sheetMap.put("title", exportParams);
|
||||||
|
sheetMap.put("data", pqDevExcels);
|
||||||
|
sheetMap.put("entity", PqDevExcel.SimulateAndDigitalExportData.class);
|
||||||
|
return Collections.singletonList(sheetMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Map<String, Object>> getContrastExportSheetList(PqDevParam.QueryParam queryParam) {
|
||||||
|
List<PqDev> pqDevs = this.list(this.getQueryWrapper(queryParam));
|
||||||
|
this.visualize(pqDevs);
|
||||||
|
|
||||||
|
List<PqDevExcel.ContrastExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ContrastExportData.class);
|
||||||
|
Map<String, Object> sheetMap1 = new HashMap<>();
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setSheetName("被检设备");
|
||||||
|
sheetMap1.put("title", exportParams);
|
||||||
|
sheetMap1.put("data", pqDevExcels);
|
||||||
|
sheetMap1.put("entity", PqDevExcel.ContrastExportData.class);
|
||||||
|
|
||||||
|
Map<String, Object> sheetMap2 = pqMonitorService.getExportSheetMap(pqDevs);
|
||||||
|
|
||||||
|
List<Map<String, Object>> sheetList = new ArrayList<>();
|
||||||
|
sheetList.add(sheetMap1);
|
||||||
|
sheetList.add(sheetMap2);
|
||||||
|
|
||||||
|
return sheetList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -259,11 +232,11 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PqDev> listBoundByPlanId(PqDevParam.QueryParam param) {
|
public List<PqDev> listByPlanId(PqDevParam.QueryParam param) {
|
||||||
List<PqDev> pqDevList = this.lambdaQuery()
|
List<PqDev> pqDevList = this.lambdaQuery()
|
||||||
.eq(StrUtil.isNotBlank(param.getPlanId()), PqDev::getPlanId, param.getPlanId())
|
.eq(StrUtil.isNotBlank(param.getPlanId()), PqDev::getPlanId, param.getPlanId())
|
||||||
.eq(StrUtil.isNotBlank(param.getName()), PqDev::getName, param.getName())
|
.eq(StrUtil.isNotBlank(param.getName()), PqDev::getName, param.getName())
|
||||||
.eq(ObjectUtil.isNotNull(param.getCheckState()), PqDev::getCheckState, param.getCheckState())
|
.in(ObjectUtil.isNotEmpty(param.getCheckStateList()), PqDev::getCheckState, param.getCheckStateList())
|
||||||
.eq(ObjectUtil.isNotNull(param.getCheckResult()), PqDev::getCheckResult, param.getCheckResult())
|
.eq(ObjectUtil.isNotNull(param.getCheckResult()), PqDev::getCheckResult, param.getCheckResult())
|
||||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).list();
|
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).list();
|
||||||
// List<Map<String, Object>> result = pqDevList.stream().map(pqDev -> {
|
// List<Map<String, Object>> result = pqDevList.stream().map(pqDev -> {
|
||||||
@@ -275,6 +248,7 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
return pqDevList;
|
return pqDevList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean bind(AdPlanParam.BindPlanParam bindPlanParam) {
|
public boolean bind(AdPlanParam.BindPlanParam bindPlanParam) {
|
||||||
String planId = bindPlanParam.getPlanId();
|
String planId = bindPlanParam.getPlanId();
|
||||||
@@ -282,7 +256,7 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
|
|
||||||
PqDevParam.QueryParam queryParam = new PqDevParam.QueryParam();
|
PqDevParam.QueryParam queryParam = new PqDevParam.QueryParam();
|
||||||
queryParam.setPlanId(planId);
|
queryParam.setPlanId(planId);
|
||||||
List<String> existedBoundPqDevIds = this.listBoundByPlanId(queryParam).stream().map(PqDev::getId).collect(Collectors.toList());
|
List<String> existedBoundPqDevIds = this.listByPlanId(queryParam).stream().map(PqDev::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
//共有的(交集)
|
//共有的(交集)
|
||||||
List<String> intersection = existedBoundPqDevIds.stream().filter(pqDevIds::contains).collect(Collectors.toList());
|
List<String> intersection = existedBoundPqDevIds.stream().filter(pqDevIds::contains).collect(Collectors.toList());
|
||||||
@@ -332,6 +306,34 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
return pqDevVO;
|
return pqDevVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PqDev> listNotUnchecked() {
|
||||||
|
return this.lambdaQuery().ne(PqDev::getCheckState, CheckStateEnum.UNCHECKED.getValue()).eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).list();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取查询条件wrapper
|
||||||
|
*
|
||||||
|
* @param queryParam 查询条件
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Wrapper getQueryWrapper(PqDevParam.QueryParam queryParam) {
|
||||||
|
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
||||||
|
if (ObjectUtil.isNotNull(queryParam)) {
|
||||||
|
queryWrapper
|
||||||
|
.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName())
|
||||||
|
.eq(StrUtil.isNotBlank(queryParam.getPattern()), "pq_dev.pattern", queryParam.getPattern())
|
||||||
|
.eq(StrUtil.isNotBlank(queryParam.getManufacturer()), "pq_dev.manufacturer", queryParam.getManufacturer())
|
||||||
|
.between(ObjectUtil.isAllNotEmpty(queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()), "pq_dev.Create_Date", queryParam.getSearchBeginTime(), queryParam.getSearchEndTime());
|
||||||
|
//排序
|
||||||
|
if (ObjectUtil.isAllNotEmpty(queryParam.getSortBy(), queryParam.getOrderBy())) {
|
||||||
|
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
queryWrapper.eq("pq_dev.state", DataStateEnum.ENABLE.getCode()).orderBy(true, true, "pq_dev.Create_Time");
|
||||||
|
return queryWrapper;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取检测状态饼状图数据
|
* 获取检测状态饼状图数据
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -19,11 +19,6 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
public class PqErrSysParam {
|
public class PqErrSysParam {
|
||||||
|
|
||||||
@ApiModelProperty(value = "误差体系名称", required = true)
|
|
||||||
@NotBlank(message = DevValidMessage.NAME_NOT_BLANK)
|
|
||||||
@Pattern(regexp = PatternRegex.ERR_SYS_NAME, message = DevValidMessage.NAME_FORMAT_ERROR)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "参照标准名称", required = true)
|
@ApiModelProperty(value = "参照标准名称", required = true)
|
||||||
@NotBlank(message = DevValidMessage.STANDARD_NAME_NOT_BLANK)
|
@NotBlank(message = DevValidMessage.STANDARD_NAME_NOT_BLANK)
|
||||||
@Pattern(regexp = PatternRegex.ERR_SYS_NAME, message = DevValidMessage.STANDARD_NAME_FORMAT_ERROR)
|
@Pattern(regexp = PatternRegex.ERR_SYS_NAME, message = DevValidMessage.STANDARD_NAME_FORMAT_ERROR)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.njcn.gather.system.dictionary.service.IDictTreeService;
|
|||||||
import com.njcn.web.factory.PageFactory;
|
import com.njcn.web.factory.PageFactory;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -183,4 +184,17 @@ public class PqErrSysServiceImpl extends ServiceImpl<PqErrSysMapper, PqErrSys> i
|
|||||||
// pqErrSys.getPqErrSysDtlsList().forEach(pqErrSysDtls -> pqErrSysDtls.setId(UUID.randomUUID().toString().replaceAll("-", "")));
|
// pqErrSys.getPqErrSysDtlsList().forEach(pqErrSysDtls -> pqErrSysDtls.setId(UUID.randomUUID().toString().replaceAll("-", "")));
|
||||||
// return this.save(pqErrSys);
|
// return this.save(pqErrSys);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成误差体系名称(标准号+年份+设备等级)
|
||||||
|
*
|
||||||
|
* @return 检测源名称
|
||||||
|
*/
|
||||||
|
private String generatePqSourceName(PqErrSysParam param) {
|
||||||
|
DictData devLevel = dictDataService.getDictDataById(param.getDevLevel());
|
||||||
|
if (ObjectUtils.allNotNull(param.getStandardName(), param.getStandardTime(), devLevel)) {
|
||||||
|
return param.getStandardName() + "-" + param.getStandardTime() + "-" + devLevel.getName();
|
||||||
|
}
|
||||||
|
throw new BusinessException(DevResponseEnum.ERR_SOURCE_GEN_NAME_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.njcn.gather.device.monitor.service;
|
package com.njcn.gather.device.monitor.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.njcn.gather.device.device.pojo.po.PqDev;
|
||||||
import com.njcn.gather.device.monitor.pojo.param.PqMonitorParam;
|
import com.njcn.gather.device.monitor.pojo.param.PqMonitorParam;
|
||||||
import com.njcn.gather.device.monitor.pojo.po.PqMonitor;
|
import com.njcn.gather.device.monitor.pojo.po.PqMonitor;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author caozehui
|
* @author caozehui
|
||||||
@@ -45,4 +47,12 @@ public interface IPqMonitorService extends IService<PqMonitor> {
|
|||||||
* @return 修改成功返回true,否则返回false
|
* @return 修改成功返回true,否则返回false
|
||||||
*/
|
*/
|
||||||
boolean updatePqMonitorByDevId(String devId, List<PqMonitorParam> paramList);
|
boolean updatePqMonitorByDevId(String devId, List<PqMonitorParam> paramList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据被检设备获取导出监测点数据时所需的SheetMap
|
||||||
|
*
|
||||||
|
* @param devList 被检设备列表
|
||||||
|
* @return SheetMap
|
||||||
|
*/
|
||||||
|
Map<String, Object> getExportSheetMap(List<PqDev> devList);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,25 @@
|
|||||||
package com.njcn.gather.device.monitor.service.impl;
|
package com.njcn.gather.device.monitor.service.impl;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.njcn.gather.device.device.pojo.po.PqDev;
|
||||||
import com.njcn.gather.device.monitor.mapper.PqMonitorMapper;
|
import com.njcn.gather.device.monitor.mapper.PqMonitorMapper;
|
||||||
import com.njcn.gather.device.monitor.pojo.param.PqMonitorParam;
|
import com.njcn.gather.device.monitor.pojo.param.PqMonitorParam;
|
||||||
import com.njcn.gather.device.monitor.pojo.po.PqMonitor;
|
import com.njcn.gather.device.monitor.pojo.po.PqMonitor;
|
||||||
|
import com.njcn.gather.device.monitor.pojo.vo.PqMonitorExcel;
|
||||||
import com.njcn.gather.device.monitor.service.IPqMonitorService;
|
import com.njcn.gather.device.monitor.service.IPqMonitorService;
|
||||||
|
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author caozehui
|
* @author caozehui
|
||||||
@@ -22,6 +30,8 @@ import java.util.List;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PqMonitorServiceImpl extends ServiceImpl<PqMonitorMapper, PqMonitor> implements IPqMonitorService {
|
public class PqMonitorServiceImpl extends ServiceImpl<PqMonitorMapper, PqMonitor> implements IPqMonitorService {
|
||||||
|
|
||||||
|
private final IDictDataService dictDataService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PqMonitor> listPqMonitorByDevId(String devId) {
|
public List<PqMonitor> listPqMonitorByDevId(String devId) {
|
||||||
return this.lambdaQuery().eq(PqMonitor::getDevId, devId).list();
|
return this.lambdaQuery().eq(PqMonitor::getDevId, devId).list();
|
||||||
@@ -50,4 +60,32 @@ public class PqMonitorServiceImpl extends ServiceImpl<PqMonitorMapper, PqMonitor
|
|||||||
pqMonitorList.forEach(pqMonitor -> pqMonitor.setDevId(devId));
|
pqMonitorList.forEach(pqMonitor -> pqMonitor.setDevId(devId));
|
||||||
return this.saveBatch(pqMonitorList);
|
return this.saveBatch(pqMonitorList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> getExportSheetMap(List<PqDev> devList) {
|
||||||
|
List<PqMonitorExcel.ExportData> pqMonitorExcels = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i = 0; i < devList.size(); i++) {
|
||||||
|
List<PqMonitor> pqMonitors = this.listPqMonitorByDevId(devList.get(i).getId());
|
||||||
|
if (ObjectUtil.isNotEmpty(pqMonitors)) {
|
||||||
|
List<PqMonitorExcel.ExportData> exportData = BeanUtil.copyToList(pqMonitors, PqMonitorExcel.ExportData.class);
|
||||||
|
int finalI = i;
|
||||||
|
exportData.forEach(data -> {
|
||||||
|
// 给监测点台账添加设备名称
|
||||||
|
data.setDevName(devList.get(finalI).getName());
|
||||||
|
data.setPtType(dictDataService.getDictDataById(data.getPtType()).getName());
|
||||||
|
});
|
||||||
|
pqMonitorExcels.addAll(exportData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> sheetMap = new HashMap<>();
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setSheetName("监测点台账");
|
||||||
|
sheetMap.put("title", exportParams);
|
||||||
|
sheetMap.put("data", pqMonitorExcels);
|
||||||
|
sheetMap.put("entity", PqMonitorExcel.ExportData.class);
|
||||||
|
|
||||||
|
return sheetMap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.njcn.gather.device.plan.pojo.param.AdPlanParam;
|
|||||||
import com.njcn.gather.device.plan.pojo.vo.AdPlanVO;
|
import com.njcn.gather.device.plan.pojo.vo.AdPlanVO;
|
||||||
import com.njcn.gather.device.plan.service.IAdPlanService;
|
import com.njcn.gather.device.plan.service.IAdPlanService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
|
import com.njcn.web.utils.ExcelUtil;
|
||||||
import com.njcn.web.utils.HttpResultUtil;
|
import com.njcn.web.utils.HttpResultUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
@@ -121,6 +122,17 @@ public class AdPlanController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(operateType = OperateType.DOWNLOAD)
|
||||||
|
@PostMapping("/export")
|
||||||
|
@ApiOperation("导出检测计划")
|
||||||
|
@ApiImplicitParam(name = "queryParam", value = "查询参数", required = true)
|
||||||
|
public void export(@RequestBody @Validated AdPlanParam.QueryParam queryParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("download");
|
||||||
|
LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam);
|
||||||
|
List<Map<String, Object>> sheetList = adPlanService.getAdPlanEexportSheetList(queryParam);
|
||||||
|
ExcelUtil.exportExcel("检测计划导出数据.xlsx", sheetList);
|
||||||
|
}
|
||||||
|
|
||||||
@OperateInfo
|
@OperateInfo
|
||||||
@GetMapping("/getPieData")
|
@GetMapping("/getPieData")
|
||||||
@ApiOperation("获取饼状图数据")
|
@ApiOperation("获取饼状图数据")
|
||||||
|
|||||||
@@ -8,13 +8,13 @@ import lombok.Getter;
|
|||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
public enum DataSourceEnum {
|
public enum DataSourceEnum {
|
||||||
THREE_SENSE_ACTUAL_TIME_DATA("0","3秒实时数据"),
|
THREE_SENSE_ACTUAL_TIME_DATA("0", "3秒实时数据"),
|
||||||
|
|
||||||
MINUTE_STATISTICS_MAX("1","分钟统计数据-最大"),
|
MINUTE_STATISTICS_MAX("1", "分钟统计数据-最大"),
|
||||||
MINUTE_STATISTICS_MIN("2","分钟统计数据-最小"),
|
MINUTE_STATISTICS_MIN("2", "分钟统计数据-最小"),
|
||||||
MINUTE_STATISTICS_AVG("3","分钟统计数据-平均"),
|
MINUTE_STATISTICS_AVG("3", "分钟统计数据-平均"),
|
||||||
MINUTE_STATISTICS_CP95("4","分钟统计数据-CP95"),
|
MINUTE_STATISTICS_CP95("4", "分钟统计数据-CP95"),
|
||||||
RECORDED_DATA("5","录播数据");
|
RECORDED_DATA("5", "录播数据");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
private String msg;
|
private String msg;
|
||||||
@@ -23,4 +23,13 @@ public enum DataSourceEnum {
|
|||||||
this.value = value;
|
this.value = value;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getMsgByValue(String value) {
|
||||||
|
for (DataSourceEnum dataSourceEnum : DataSourceEnum.values()) {
|
||||||
|
if (dataSourceEnum.getValue().equals(value)) {
|
||||||
|
return dataSourceEnum.getMsg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package com.njcn.gather.device.plan.pojo.vo;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||||
|
import com.njcn.gather.device.pojo.constant.DevValidMessage;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author caozehui
|
||||||
|
* @data 2024-12-11
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AdPlanExcel {
|
||||||
|
@Excel(name = "名称", width = 40)
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Excel(name = "模式", width = 20)
|
||||||
|
@NotBlank(message = DevValidMessage.PATTERN_NOT_BLANK)
|
||||||
|
private String pattern;
|
||||||
|
|
||||||
|
@Excel(name = "父计划id", width = 25)
|
||||||
|
private String fatherPlanId;
|
||||||
|
|
||||||
|
@Excel(name = "数据源", width = 20)
|
||||||
|
private String datasource;
|
||||||
|
|
||||||
|
@Excel(name = "脚本", width = 50)
|
||||||
|
private String script;
|
||||||
|
|
||||||
|
@Excel(name = "误差体系", width = 30)
|
||||||
|
private String errorSys;
|
||||||
|
|
||||||
|
@Excel(name = "是否做守时检测", width = 15, replace = {"否_0", "是_1"})
|
||||||
|
private Integer timeCheck;
|
||||||
|
|
||||||
|
@Excel(name = "检测状态", width = 10, replace = {"未检_0", "检测中_1", "检测完成_2"})
|
||||||
|
private Integer testState;
|
||||||
|
|
||||||
|
@Excel(name = "报告生成状态", width = 15, replace = {"未生成_0", "部分生成_1", "全部生成_2"})
|
||||||
|
private Integer reportState;
|
||||||
|
|
||||||
|
@Excel(name = "检测结果", width = 10, replace = {"不符合_0", "符合_1", "/_2"})
|
||||||
|
private Integer result;
|
||||||
|
|
||||||
|
@Excel(name = "数据表后缀", width = 20)
|
||||||
|
private Integer code;
|
||||||
|
}
|
||||||
@@ -54,4 +54,12 @@ public interface IAdPlanService extends IService<AdPlan> {
|
|||||||
* @return 检测计划列表
|
* @return 检测计划列表
|
||||||
*/
|
*/
|
||||||
List<Map<String, Object>> listByPattern(String pattern);
|
List<Map<String, Object>> listByPattern(String pattern);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取检测计划导出时所需的SheetList (包含与之关联的设备信息)
|
||||||
|
*
|
||||||
|
* @param queryParam 查询参数
|
||||||
|
* @return SheetList
|
||||||
|
*/
|
||||||
|
List<Map<String, Object>> getAdPlanEexportSheetList(AdPlanParam.QueryParam queryParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.njcn.gather.device.plan.service.impl;
|
package com.njcn.gather.device.plan.service.impl;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@@ -10,11 +12,15 @@ import com.njcn.common.pojo.enums.common.DataStateEnum;
|
|||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.gather.device.device.pojo.enums.TimeCheckResultEnum;
|
import com.njcn.gather.device.device.pojo.enums.TimeCheckResultEnum;
|
||||||
import com.njcn.gather.device.device.pojo.param.PqDevParam;
|
import com.njcn.gather.device.device.pojo.param.PqDevParam;
|
||||||
|
import com.njcn.gather.device.device.pojo.po.PqDev;
|
||||||
|
import com.njcn.gather.device.device.pojo.vo.PqDevExcel;
|
||||||
import com.njcn.gather.device.device.service.IPqDevService;
|
import com.njcn.gather.device.device.service.IPqDevService;
|
||||||
import com.njcn.gather.device.err.service.IPqErrSysService;
|
import com.njcn.gather.device.err.service.IPqErrSysService;
|
||||||
import com.njcn.gather.device.plan.mapper.AdPlanMapper;
|
import com.njcn.gather.device.plan.mapper.AdPlanMapper;
|
||||||
|
import com.njcn.gather.device.plan.pojo.enums.DataSourceEnum;
|
||||||
import com.njcn.gather.device.plan.pojo.param.AdPlanParam;
|
import com.njcn.gather.device.plan.pojo.param.AdPlanParam;
|
||||||
import com.njcn.gather.device.plan.pojo.po.AdPlan;
|
import com.njcn.gather.device.plan.pojo.po.AdPlan;
|
||||||
|
import com.njcn.gather.device.plan.pojo.vo.AdPlanExcel;
|
||||||
import com.njcn.gather.device.plan.pojo.vo.AdPlanVO;
|
import com.njcn.gather.device.plan.pojo.vo.AdPlanVO;
|
||||||
import com.njcn.gather.device.plan.service.IAdPlanService;
|
import com.njcn.gather.device.plan.service.IAdPlanService;
|
||||||
import com.njcn.gather.device.plan.service.IAdPlanSourceService;
|
import com.njcn.gather.device.plan.service.IAdPlanSourceService;
|
||||||
@@ -25,6 +31,8 @@ import com.njcn.gather.device.pojo.enums.DevResponseEnum;
|
|||||||
import com.njcn.gather.device.pojo.enums.PlanReportStateEnum;
|
import com.njcn.gather.device.pojo.enums.PlanReportStateEnum;
|
||||||
import com.njcn.gather.device.script.service.IPqScriptService;
|
import com.njcn.gather.device.script.service.IPqScriptService;
|
||||||
import com.njcn.gather.device.source.pojo.po.PqSource;
|
import com.njcn.gather.device.source.pojo.po.PqSource;
|
||||||
|
import com.njcn.gather.system.dictionary.pojo.po.DictData;
|
||||||
|
import com.njcn.gather.system.dictionary.service.IDictDataService;
|
||||||
import com.njcn.web.factory.PageFactory;
|
import com.njcn.web.factory.PageFactory;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -47,19 +55,11 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
|
|||||||
private final IPqErrSysService pqErrSysService;
|
private final IPqErrSysService pqErrSysService;
|
||||||
private final IAdPlanSourceService adPlanSourceService;
|
private final IAdPlanSourceService adPlanSourceService;
|
||||||
private final IPqDevService pqDevService;
|
private final IPqDevService pqDevService;
|
||||||
|
private final IDictDataService dictDataService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<AdPlanVO> listAdPlan(AdPlanParam.QueryParam queryParam) {
|
public Page<AdPlanVO> listAdPlan(AdPlanParam.QueryParam queryParam) {
|
||||||
QueryWrapper<AdPlan> queryWrapper = new QueryWrapper<>();
|
Page<AdPlan> page1 = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), this.getQueryWrapper(queryParam));
|
||||||
if (ObjectUtil.isNotNull(queryParam)) {
|
|
||||||
queryWrapper.eq(StrUtil.isNotBlank(queryParam.getPattern()), "ad_plan.pattern", queryParam.getPattern())
|
|
||||||
.eq(StrUtil.isNotBlank(queryParam.getName()), "ad_plan.name", queryParam.getName())
|
|
||||||
.eq(ObjectUtil.isNotNull(queryParam.getTestState()), "ad_plan.Test_State", queryParam.getTestState())
|
|
||||||
.eq(ObjectUtil.isNotNull(queryParam.getReportState()), "ad_plan.Report_State", queryParam.getReportState())
|
|
||||||
.eq(ObjectUtil.isNotNull(queryParam.getResult()), "ad_plan.result", queryParam.getResult());
|
|
||||||
}
|
|
||||||
queryWrapper.eq("ad_plan.state", DataStateEnum.ENABLE.getCode());
|
|
||||||
Page<AdPlan> page1 = this.page(new Page<>(PageFactory.getPageNum(queryParam), PageFactory.getPageSize(queryParam)), queryWrapper);
|
|
||||||
List<AdPlan> adPlans = page1.getRecords();
|
List<AdPlan> adPlans = page1.getRecords();
|
||||||
List<AdPlanVO> adPlanVOList = adPlans.stream().map(adPlan -> {
|
List<AdPlanVO> adPlanVOList = adPlans.stream().map(adPlan -> {
|
||||||
AdPlanVO adPlanVO = new AdPlanVO();
|
AdPlanVO adPlanVO = new AdPlanVO();
|
||||||
@@ -129,11 +129,18 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
|
|||||||
// 修改检测计划、检测源关联
|
// 修改检测计划、检测源关联
|
||||||
adPlanSourceService.updateAdPlanSource(param.getId(), param.getSourceIds());
|
adPlanSourceService.updateAdPlanSource(param.getId(), param.getSourceIds());
|
||||||
if (ObjectUtil.isNotEmpty(param.getDevIds())) {
|
if (ObjectUtil.isNotEmpty(param.getDevIds())) {
|
||||||
|
// 修改时,只有未检测过的设备才可以修改绑定设备
|
||||||
|
List<String> notUnCheckedIds = pqDevService.listNotUnchecked().stream().map(PqDev::getId).collect(Collectors.toList());
|
||||||
|
List<String> intersection = new ArrayList<>(notUnCheckedIds);
|
||||||
|
intersection.retainAll(param.getDevIds());
|
||||||
|
if (ObjectUtil.isEmpty(intersection)) {
|
||||||
AdPlanParam.BindPlanParam bindPlanParam = new AdPlanParam.BindPlanParam();
|
AdPlanParam.BindPlanParam bindPlanParam = new AdPlanParam.BindPlanParam();
|
||||||
bindPlanParam.setPlanId(param.getId());
|
bindPlanParam.setPlanId(param.getId());
|
||||||
bindPlanParam.setPqDevIds(param.getDevIds());
|
bindPlanParam.setPqDevIds(param.getDevIds());
|
||||||
// 修改时,修改绑定设备
|
|
||||||
pqDevService.bind(bindPlanParam);
|
pqDevService.bind(bindPlanParam);
|
||||||
|
} else {
|
||||||
|
throw new BusinessException(DevResponseEnum.HAS_NOT_UNCHECKED_DEVICE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.updateById(adPlan);
|
return this.updateById(adPlan);
|
||||||
@@ -144,7 +151,7 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
|
|||||||
for (String id : ids) {
|
for (String id : ids) {
|
||||||
PqDevParam.QueryParam queryParam = new PqDevParam.QueryParam();
|
PqDevParam.QueryParam queryParam = new PqDevParam.QueryParam();
|
||||||
queryParam.setPlanId(id);
|
queryParam.setPlanId(id);
|
||||||
if (ObjectUtils.isNotEmpty(pqDevService.listBoundByPlanId(queryParam))) {
|
if (ObjectUtils.isNotEmpty(pqDevService.listByPlanId(queryParam))) {
|
||||||
throw new BusinessException(DevResponseEnum.PLAN_HAS_DEVICE_BIND);
|
throw new BusinessException(DevResponseEnum.PLAN_HAS_DEVICE_BIND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,4 +191,74 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Map<String, Object>> getAdPlanEexportSheetList(AdPlanParam.QueryParam queryParam) {
|
||||||
|
List<AdPlan> adPlans = this.list(this.getQueryWrapper(queryParam));
|
||||||
|
|
||||||
|
List<AdPlanExcel> adPlanExcelList = this.getAdPlanExcelList(adPlans);
|
||||||
|
Map<String, Object> sheetMap1 = new HashMap<>();
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setSheetName("检测计划");
|
||||||
|
sheetMap1.put("title", exportParams);
|
||||||
|
sheetMap1.put("entity", AdPlanExcel.class);
|
||||||
|
sheetMap1.put("data", adPlanExcelList);
|
||||||
|
|
||||||
|
List<Map<String, Object>> sheetList = new ArrayList<>();
|
||||||
|
sheetList.add(sheetMap1);
|
||||||
|
DictData dictData = dictDataService.getDictDataById(queryParam.getPattern());
|
||||||
|
if (ObjectUtil.isNotNull(dictData)) {
|
||||||
|
if (DevConst.PATTERN_CONTRAST.equals(dictData.getCode())) {
|
||||||
|
sheetList.add(pqDevService.getExportSheetMap(adPlans.stream().map(AdPlan::getId).collect(Collectors.toList()), PqDevExcel.ContrastExportData.class));
|
||||||
|
} else {
|
||||||
|
sheetList.add(pqDevService.getExportSheetMap(adPlans.stream().map(AdPlan::getId).collect(Collectors.toList()), PqDevExcel.SimulateAndDigitalExportData.class));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return sheetList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取查询条件wrapper
|
||||||
|
*
|
||||||
|
* @param queryParam 查询条件
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Wrapper getQueryWrapper(AdPlanParam.QueryParam queryParam) {
|
||||||
|
QueryWrapper<AdPlan> queryWrapper = new QueryWrapper<>();
|
||||||
|
if (ObjectUtil.isNotNull(queryParam)) {
|
||||||
|
queryWrapper.eq(StrUtil.isNotBlank(queryParam.getPattern()), "ad_plan.pattern", queryParam.getPattern()).eq(StrUtil.isNotBlank(queryParam.getName()), "ad_plan.name", queryParam.getName()).eq(ObjectUtil.isNotNull(queryParam.getTestState()), "ad_plan.Test_State", queryParam.getTestState()).eq(ObjectUtil.isNotNull(queryParam.getReportState()), "ad_plan.Report_State", queryParam.getReportState()).eq(ObjectUtil.isNotNull(queryParam.getResult()), "ad_plan.result", queryParam.getResult());
|
||||||
|
}
|
||||||
|
queryWrapper.eq("ad_plan.state", DataStateEnum.ENABLE.getCode()).orderBy(true, true, "Create_Time");
|
||||||
|
return queryWrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取检测计划excel数据
|
||||||
|
*
|
||||||
|
* @param adPlans 检测计划列表
|
||||||
|
* @return 检测计划excel数据
|
||||||
|
*/
|
||||||
|
private List<AdPlanExcel> getAdPlanExcelList(List<AdPlan> adPlans) {
|
||||||
|
return adPlans.stream().map(adPlan -> {
|
||||||
|
AdPlanExcel adPlanExcel = new AdPlanExcel();
|
||||||
|
BeanUtil.copyProperties(adPlan, adPlanExcel);
|
||||||
|
adPlanExcel.setPattern(dictDataService.getDictDataById(adPlan.getPattern()).getName());
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (String datasourceId : adPlan.getDatasourceId().split(StrUtil.COMMA)) {
|
||||||
|
sb.append(DataSourceEnum.getMsgByValue(datasourceId)).append(StrUtil.COMMA);
|
||||||
|
}
|
||||||
|
adPlanExcel.setDatasource(sb.toString().substring(0, sb.length() - 1));
|
||||||
|
adPlanExcel.setScript(pqScriptService.getPqScriptById(adPlan.getScriptId()).getName());
|
||||||
|
|
||||||
|
sb.delete(0, sb.length());
|
||||||
|
|
||||||
|
for (String errorSysId : adPlan.getErrorSysId().split(StrUtil.COMMA)) {
|
||||||
|
sb.append(pqErrSysService.getPqErrSysById(errorSysId).getName()).append(StrUtil.COMMA);
|
||||||
|
}
|
||||||
|
adPlanExcel.setErrorSys(sb.toString().substring(0, sb.length() - 1));
|
||||||
|
|
||||||
|
return adPlanExcel;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,4 +183,6 @@ public interface DevValidMessage {
|
|||||||
String MONITOR_CODE_FORMAT_ERROR = "监测点编码格式错误";
|
String MONITOR_CODE_FORMAT_ERROR = "监测点编码格式错误";
|
||||||
|
|
||||||
String MONITOR_NUM_NOT_NULL = "监测点序号不能为空";
|
String MONITOR_NUM_NOT_NULL = "监测点序号不能为空";
|
||||||
|
|
||||||
|
String FACTOR_FLAG_FORMAT_ERROR = "是否支持系数校准格式错误";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,17 +9,19 @@ public enum DevResponseEnum {
|
|||||||
IMPORT_DATA_FAIL("A001002", "导入数据失败"),
|
IMPORT_DATA_FAIL("A001002", "导入数据失败"),
|
||||||
SERIES_AND_DEVKEY_NOT_BLANK("A001003", "加密设备的序列号和设备密钥不能为空"),
|
SERIES_AND_DEVKEY_NOT_BLANK("A001003", "加密设备的序列号和设备密钥不能为空"),
|
||||||
PQ_SOURCE_GEN_NAME_ERROR("A001004", "检测源生成名称出错"),
|
PQ_SOURCE_GEN_NAME_ERROR("A001004", "检测源生成名称出错"),
|
||||||
|
ERR_SOURCE_GEN_NAME_ERROR("A001005", "误差体系生成名称出错"),
|
||||||
PQ_ERRSYS_GEN_NAME_ERROR("A001005", "误差体系生成名称出错"),
|
PQ_ERRSYS_GEN_NAME_ERROR("A001005", "误差体系生成名称出错"),
|
||||||
PLAN_HAS_DEVICE_BIND("A001006", "检测计划下已绑定设备,请先解绑设备"),
|
PLAN_HAS_DEVICE_BIND("A001006", "检测计划下已绑定设备,请先解绑设备"),
|
||||||
PQ_DEV_REPEAT("A001007", "重复的被检设备"),
|
PQ_DEV_REPEAT("A001007", "重复的被检设备"),
|
||||||
PQ_DEV_HAS_MONITOR("A001008", "该设备下关联有监测点,请先移除监测点"),;
|
PQ_DEV_HAS_MONITOR("A001008", "该设备下关联有监测点,请先移除监测点"),
|
||||||
|
HAS_NOT_UNCHECKED_DEVICE("A001009", "设备在检测中或已被检测过,请勿解除绑定"),;
|
||||||
|
|
||||||
private final String msg;
|
private final String message;
|
||||||
private final String code;
|
private final String code;
|
||||||
|
|
||||||
|
|
||||||
DevResponseEnum(String code, String msg) {
|
DevResponseEnum(String code, String message) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.msg = msg;
|
this.message = message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user