From e059e3c2afb04ea3fb770862dea8271484d34aaa Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Fri, 13 Dec 2024 14:43:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan/controller/AdPlanController.java | 93 ++++++++-- .../gather}/plan/mapper/AdPlanMapper.java | 4 +- .../plan/mapper/AdPlanSourceMapper.java | 4 +- .../plan/mapper/mapping/AdPlanMapper.xml | 2 +- .../mapper/mapping/AdPlanSourceMapper.xml | 2 +- .../plan/pojo/enums/DataSourceEnum.java | 11 +- .../gather}/plan/pojo/param/AdPlanParam.java | 14 +- .../com/njcn/gather}/plan/pojo/po/AdPlan.java | 2 +- .../gather}/plan/pojo/po/AdPlanSource.java | 2 +- .../gather}/plan/pojo/vo/AdPlanExcel.java | 10 +- .../njcn/gather}/plan/pojo/vo/AdPlanVO.java | 3 +- .../gather}/plan/service/IAdPlanService.java | 29 ++- .../plan/service/IAdPlanSourceService.java | 4 +- .../plan/service/impl/AdPlanServiceImpl.java | 174 +++++++++++------- .../service/impl/AdPlanSourceServiceImpl.java | 8 +- .../device/controller/PqDevController.java | 36 +++- .../device/device/pojo/param/PqDevParam.java | 26 +-- .../device/device/pojo/vo/PqDevExcel.java | 159 ++++++++-------- .../device/device/service/IPqDevService.java | 32 +++- .../device/service/impl/PqDevServiceImpl.java | 106 ++++++----- .../monitor/pojo/vo/PqMonitorExcel.java | 20 +- .../service/impl/PqMonitorServiceImpl.java | 2 +- .../gather/device/pojo/constant/DevConst.java | 15 -- .../device/pojo/constant/DevValidMessage.java | 2 + .../device/pojo/enums/CheckResultEnum.java | 2 +- .../device/pojo/enums/DevReportStateEnum.java | 5 +- .../device/pojo/enums/DevResponseEnum.java | 5 +- .../gather/device/pojo/enums/PatternEnum.java | 22 +++ .../source/controller/PqSourceController.java | 12 +- .../device/source/pojo/po/SourceParam.java | 6 +- .../source/service/IPqSourceService.java | 3 +- .../service/impl/PqSourceServiceImpl.java | 47 +++-- 32 files changed, 519 insertions(+), 343 deletions(-) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/controller/AdPlanController.java (56%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/mapper/AdPlanMapper.java (63%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/mapper/AdPlanSourceMapper.java (81%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/mapper/mapping/AdPlanMapper.xml (69%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/mapper/mapping/AdPlanSourceMapper.xml (85%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/pojo/enums/DataSourceEnum.java (73%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/pojo/param/AdPlanParam.java (91%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/pojo/po/AdPlan.java (97%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/pojo/po/AdPlanSource.java (91%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/pojo/vo/AdPlanExcel.java (81%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/pojo/vo/AdPlanVO.java (94%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/service/IAdPlanService.java (65%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/service/IAdPlanSourceService.java (92%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/service/impl/AdPlanServiceImpl.java (63%) rename {device/src/main/java/com/njcn/gather/device => detection/src/main/java/com/njcn/gather}/plan/service/impl/AdPlanSourceServiceImpl.java (87%) create mode 100644 device/src/main/java/com/njcn/gather/device/pojo/enums/PatternEnum.java diff --git a/device/src/main/java/com/njcn/gather/device/plan/controller/AdPlanController.java b/detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java similarity index 56% rename from device/src/main/java/com/njcn/gather/device/plan/controller/AdPlanController.java rename to detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java index 3ed8a73e..16f7a7ae 100644 --- a/device/src/main/java/com/njcn/gather/device/plan/controller/AdPlanController.java +++ b/detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java @@ -1,27 +1,41 @@ -package com.njcn.gather.device.plan.controller; +package com.njcn.gather.plan.controller; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.OperateType; +import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.LogUtil; +import com.njcn.gather.device.device.pojo.vo.PqDevExcel; import com.njcn.gather.device.device.service.IPqDevService; -import com.njcn.gather.device.plan.pojo.param.AdPlanParam; -import com.njcn.gather.device.plan.pojo.vo.AdPlanVO; -import com.njcn.gather.device.plan.service.IAdPlanService; +import com.njcn.gather.plan.pojo.param.AdPlanParam; +import com.njcn.gather.plan.pojo.vo.AdPlanExcel; +import com.njcn.gather.plan.pojo.vo.AdPlanVO; +import com.njcn.gather.plan.service.IAdPlanService; +import com.njcn.gather.device.pojo.enums.DevResponseEnum; +import com.njcn.gather.device.pojo.enums.PatternEnum; import com.njcn.web.controller.BaseController; import com.njcn.web.utils.ExcelUtil; import com.njcn.web.utils.HttpResultUtil; +import com.njcn.web.utils.PoiUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -96,20 +110,6 @@ public class AdPlanController extends BaseController { } } - @OperateInfo(operateType = OperateType.UPDATE) - @PostMapping("/bindDev") - @ApiOperation("检测计划绑定设备") - @ApiImplicitParam(name = "bindPlanParam", value = "绑定参数", required = true) - public HttpResult bindDev(@RequestBody @Validated AdPlanParam.BindPlanParam bindPlanParam) { - String methodDescribe = getMethodDescribe("bindDev"); - LogUtil.njcnDebug(log, "{},绑定计划数据为:planId={}, pqDevIds={}", methodDescribe, bindPlanParam.getPlanId(), String.join(StrUtil.COMMA, bindPlanParam.getPqDevIds())); - boolean result = pqDevService.bind(bindPlanParam); - if (result) { - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); - } else { - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe); - } - } @OperateInfo @GetMapping("/listByPattern") @@ -129,8 +129,60 @@ public class AdPlanController extends BaseController { public void export(@RequestBody @Validated AdPlanParam.QueryParam queryParam) { String methodDescribe = getMethodDescribe("download"); LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam); - List> sheetList = adPlanService.getAdPlanEexportSheetList(queryParam); - ExcelUtil.exportExcel("检测计划导出数据.xlsx", sheetList); + List data = adPlanService.getExportData(queryParam); + ExcelUtil.exportExcel("检测计划导出数据.xlsx", AdPlanExcel.class, data); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD) + @PostMapping(value = "/import") + @ApiOperation("批量导入检测计划数据") + @ApiImplicitParam(name = "file", value = "检测计划数据文件", required = true) + public HttpResult importData(@RequestParam("file") MultipartFile file, HttpServletResponse response) { + String methodDescribe = getMethodDescribe("importData"); + LogUtil.njcnDebug(log, "{},上传文件为:{}", methodDescribe, file.getOriginalFilename()); + + try { + Workbook workBook = ExcelUtil.getWorkBook(file); + int numberOfSheets = workBook.getNumberOfSheets(); + if (numberOfSheets == 2) { + ImportParams params = new ImportParams(); + params.setHeadRows(1); + params.setNeedVerify(true); + params.setSheetNum(1); + + params.setStartSheetIndex(0); + ExcelImportResult adPlanExcelResult = ExcelImportUtil.importExcelMore(file.getInputStream(), AdPlanExcel.class, params); + if (adPlanExcelResult.isVerifyFail()) { + // 此处前端要做特殊处理,具体可以参考技术监督的数据导入 + PoiUtil.exportFileByWorkbook(adPlanExcelResult.getFailWorkbook(), "非法检测计划数据.xlsx", response); + } else { + List adPlanExcelList = adPlanExcelResult.getList(); + if (ObjectUtil.isNotEmpty(adPlanExcelList)) { + params.setStartSheetIndex(1); + String pattern = adPlanExcelList.get(0).getPattern(); + if (PatternEnum.CONTRAST.getValue().equals(pattern)) { + ExcelImportResult pqDevExcelResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.ContrastImportData.class, params); + if (pqDevExcelResult.isVerifyFail()) { + // 此处前端要做特殊处理,具体可以参考技术监督的数据导入 + PoiUtil.exportFileByWorkbook(pqDevExcelResult.getFailWorkbook(), "非法检测计划数据.xlsx", response); + } else { + adPlanService.importData(adPlanExcelList); + pqDevService.importContrastData(pqDevExcelResult.getList()); + } + } else { + ExcelImportResult pqDevExcelResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.SimulateOrDigitalImportData.class, params); + if (pqDevExcelResult.isVerifyFail()) { + // 此处前端要做特殊处理,具体可以参考技术监督的数据导入 + PoiUtil.exportFileByWorkbook(pqDevExcelResult.getFailWorkbook(), "非法检测计划数据.xlsx", response); + } + } + } + } + } + } catch (Exception e) { + throw new BusinessException(DevResponseEnum.IMPORT_DATA_FAIL); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @OperateInfo @@ -143,5 +195,6 @@ public class AdPlanController extends BaseController { List>> result = pqDevService.getPieData(planId); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + } diff --git a/device/src/main/java/com/njcn/gather/device/plan/mapper/AdPlanMapper.java b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java similarity index 63% rename from device/src/main/java/com/njcn/gather/device/plan/mapper/AdPlanMapper.java rename to detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java index 0da7d67c..d2fbfd66 100644 --- a/device/src/main/java/com/njcn/gather/device/plan/mapper/AdPlanMapper.java +++ b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanMapper.java @@ -1,7 +1,7 @@ -package com.njcn.gather.device.plan.mapper; +package com.njcn.gather.plan.mapper; import com.github.yulichang.base.MPJBaseMapper; -import com.njcn.gather.device.plan.pojo.po.AdPlan; +import com.njcn.gather.plan.pojo.po.AdPlan; /** * @author caozehui diff --git a/device/src/main/java/com/njcn/gather/device/plan/mapper/AdPlanSourceMapper.java b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanSourceMapper.java similarity index 81% rename from device/src/main/java/com/njcn/gather/device/plan/mapper/AdPlanSourceMapper.java rename to detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanSourceMapper.java index c55db2f3..b815da23 100644 --- a/device/src/main/java/com/njcn/gather/device/plan/mapper/AdPlanSourceMapper.java +++ b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanSourceMapper.java @@ -1,7 +1,7 @@ -package com.njcn.gather.device.plan.mapper; +package com.njcn.gather.plan.mapper; import com.github.yulichang.base.MPJBaseMapper; -import com.njcn.gather.device.plan.pojo.po.AdPlanSource; +import com.njcn.gather.plan.pojo.po.AdPlanSource; import com.njcn.gather.device.source.pojo.po.PqSource; import java.util.List; diff --git a/device/src/main/java/com/njcn/gather/device/plan/mapper/mapping/AdPlanMapper.xml b/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml similarity index 69% rename from device/src/main/java/com/njcn/gather/device/plan/mapper/mapping/AdPlanMapper.xml rename to detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml index 35d7f4e8..c86cc180 100644 --- a/device/src/main/java/com/njcn/gather/device/plan/mapper/mapping/AdPlanMapper.xml +++ b/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanMapper.xml @@ -1,6 +1,6 @@ - + diff --git a/device/src/main/java/com/njcn/gather/device/plan/mapper/mapping/AdPlanSourceMapper.xml b/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanSourceMapper.xml similarity index 85% rename from device/src/main/java/com/njcn/gather/device/plan/mapper/mapping/AdPlanSourceMapper.xml rename to detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanSourceMapper.xml index 6a3b3687..6ccfb1e0 100644 --- a/device/src/main/java/com/njcn/gather/device/plan/mapper/mapping/AdPlanSourceMapper.xml +++ b/detection/src/main/java/com/njcn/gather/plan/mapper/mapping/AdPlanSourceMapper.xml @@ -1,6 +1,6 @@ - +