diff --git a/device/src/main/java/com/njcn/gather/device/device/controller/PqDevController.java b/device/src/main/java/com/njcn/gather/device/device/controller/PqDevController.java index 2f0cd157..c4cb72e5 100644 --- a/device/src/main/java/com/njcn/gather/device/device/controller/PqDevController.java +++ b/device/src/main/java/com/njcn/gather/device/device/controller/PqDevController.java @@ -13,9 +13,9 @@ 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.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.pojo.po.PqDev; import com.njcn.gather.device.pojo.enums.DeviceResponseEnum; import com.njcn.web.controller.BaseController; import com.njcn.web.utils.HttpResultUtil; @@ -26,6 +26,7 @@ import io.swagger.annotations.ApiImplicitParams; 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; @@ -122,16 +123,16 @@ public class PqDevController extends BaseController { params.setStartSheetIndex(0); params.setSheetNum(1); try { - ExcelImportResult excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.class, params); + ExcelImportResult excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.ImportData.class, params); //如果存在非法数据,将不合格的数据导出 if (excelImportResult.isVerifyFail()) { // 此处前端要做特殊处理,具体可以参考技术监督的数据导入 - PoiUtil.exportFileByWorkbook(excelImportResult.getFailWorkbook(), "非法被检设备数据.xlsx", response); - throw new BusinessException(DeviceResponseEnum.IMPORT_DATA_FAIL); + Workbook failWorkbook = excelImportResult.getFailWorkbook(); + PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response); } else { //批量录入数据 - List sgEventExcels = excelImportResult.getList(); - pqDevService.importPqDevData(sgEventExcels); + List list = excelImportResult.getList(); + pqDevService.importPqDevData(list); } } catch (Exception e) { throw new BusinessException(DeviceResponseEnum.IMPORT_DATA_FAIL); diff --git a/device/src/main/java/com/njcn/gather/device/device/pojo/vo/PqDevExcel.java b/device/src/main/java/com/njcn/gather/device/device/pojo/vo/PqDevExcel.java index f1da8c7b..ca75a74c 100644 --- a/device/src/main/java/com/njcn/gather/device/device/pojo/vo/PqDevExcel.java +++ b/device/src/main/java/com/njcn/gather/device/device/pojo/vo/PqDevExcel.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.gather.device.pojo.constant.DeviceValidMessage; import com.njcn.web.pojo.annotation.DateTimeStrValid; import lombok.Data; +import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -50,11 +51,6 @@ public class PqDevExcel implements Serializable { @NotBlank(message = DeviceValidMessage.MANUFACTURER_NOT_BLANK) private String manufacturer; - @Excel(name = "生产日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd") - @NotNull(message = DeviceValidMessage.CREATEDATETIME_NOT_NULL) -// @DateTimeStrValid(message = DeviceValidMessage.CREATEDATETIME_FORMAT_ERROR) - private LocalDate createDate; - @Excel(name = "出厂编号", width = 40) @NotBlank(message = DeviceValidMessage.FACTORYNO_NOT_BLANK) private String createId; @@ -82,7 +78,7 @@ public class PqDevExcel implements Serializable { @Excel(name = "是否为加密版本(1:是/0:否)", width = 20, replace = {"是_1", "否_0"}) @NotNull(message = DeviceValidMessage.ENCRYPTION_NOT_NULL) - private Integer encryption; + private Integer encryptionFlag; @Excel(name = "识别码(未加密)", width = 30) private String series; @@ -93,10 +89,6 @@ public class PqDevExcel implements Serializable { @Excel(name = "样品编号", width = 40) private String sampleId; - @Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd") -// @DateTimeStrValid(message = DeviceValidMessage.ARRIVE_DATE_FORMAT_ERROR) - private LocalDate arrivedDate; - @Excel(name = "所属地市名称", width = 20) private String cityName; @@ -127,4 +119,30 @@ public class PqDevExcel implements Serializable { @Excel(name = "复检次数", width = 15) @NotNull(message = DeviceValidMessage.RECHECK_NUM_NOT_NULL) private Integer reCheckNum; + + @Data + @EqualsAndHashCode(callSuper = true) + public static class ExportData extends PqDevExcel { + + @Excel(name = "生产日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd") + @NotNull(message = DeviceValidMessage.CREATEDATETIME_NOT_NULL) + private LocalDate createDate; + + @Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd") + private LocalDate arrivedDate; + } + + @Data + @EqualsAndHashCode(callSuper = true) + public static class ImportData extends PqDevExcel { + + @Excel(name = "生产日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd") + @NotNull(message = DeviceValidMessage.CREATEDATETIME_NOT_NULL) + @DateTimeStrValid(message = DeviceValidMessage.CREATEDATETIME_FORMAT_ERROR) + private String createDate; + + @Excel(name = "送样日期(yyyy-MM-dd)", width = 25, format = "yyyy-MM-dd") + @DateTimeStrValid(message = DeviceValidMessage.ARRIVE_DATE_FORMAT_ERROR) + private String arrivedDate; + } } diff --git a/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java b/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java index 76e0b6cc..1ab36e28 100644 --- a/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java +++ b/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java @@ -56,7 +56,7 @@ public interface IPqDevService extends IService { * * @param sgEventExcels */ - void importPqDevData(List sgEventExcels); + void importPqDevData(List sgEventExcels); /** * 导出被检设备信息 @@ -84,7 +84,7 @@ public interface IPqDevService extends IService { /** * 绑定计划 * - * @param planId 计划id + * @param planId 计划id * @param pqDevIds 被检设备id列表 * @return 绑定成功返回true,否则返回false */ diff --git a/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java b/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java index 7c6e342d..0c59b8b2 100644 --- a/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java +++ b/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java @@ -38,9 +38,7 @@ public class PqDevServiceImpl extends ServiceImpl implements public Page listPqDevs(PqDevParam.QueryParam queryParam) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (ObjectUtil.isNotNull(queryParam)) { - queryWrapper.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName()) - .eq(StrUtil.isNotBlank(queryParam.getDevType()), "pq_dev.dev_type", queryParam.getDevType()) - .between(ObjectUtil.isAllNotEmpty(queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()), "pq_dev.Create_Date", queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()); + queryWrapper.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName()).eq(StrUtil.isNotBlank(queryParam.getDevType()), "pq_dev.dev_type", queryParam.getDevType()).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())); @@ -48,7 +46,7 @@ public class PqDevServiceImpl extends ServiceImpl implements //没有排序参数,默认根据sort字段排序,没有排序字段的,根据updateTime更新时间排序 queryWrapper.orderBy(true, false, "pq_dev.Create_Time"); } - }else{ + } else { queryWrapper.orderBy(true, false, "pq_dev.Create_Time"); } queryWrapper.eq("pq_dev.state", DataStateEnum.ENABLE.getCode()); @@ -86,19 +84,16 @@ public class PqDevServiceImpl extends ServiceImpl implements @Override public boolean deletePqDev(List ids) { - return this.lambdaUpdate() - .set(PqDev::getState, DataStateEnum.DELETED.getCode()) - .in(PqDev::getId, ids) - .update(); + return this.lambdaUpdate().set(PqDev::getState, DataStateEnum.DELETED.getCode()).in(PqDev::getId, ids).update(); } @Override public void downloadTemplate() { - ExcelUtil.exportExcel("被检设备模板.xls", "被检设备", PqDevExcel.class, new ArrayList<>()); + ExcelUtil.exportExcel("被检设备模板.xlsx", "被检设备", PqDevExcel.class, new ArrayList<>()); } @Override - public void importPqDevData(List pqDevExcelList) { + public void importPqDevData(List pqDevExcelList) { List pqDevList = BeanUtil.copyToList(pqDevExcelList, PqDev.class); pqDevList.forEach(pqDev -> { if (Objects.nonNull(pqDev.getSeries())) { @@ -116,58 +111,47 @@ public class PqDevServiceImpl extends ServiceImpl implements public void exportPqDevData(PqDevParam.QueryParam queryParam) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (ObjectUtil.isNotNull(queryParam)) { - queryWrapper.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName()) - .eq(StrUtil.isNotBlank(queryParam.getDevType()), "pq_dev.dev_type", queryParam.getDevType()) - .between(ObjectUtil.isAllNotEmpty(queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()), "pq_dev.Create_Date", queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()); + queryWrapper.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName()).eq(StrUtil.isNotBlank(queryParam.getDevType()), "pq_dev.dev_type", queryParam.getDevType()).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"); + queryWrapper.orderBy(true, false, "pq_dev.Create_Time"); } + } else { + queryWrapper.orderBy(true, false, "pq_dev.Create_Time"); } queryWrapper.eq("pq_dev.state", DataStateEnum.ENABLE.getCode()); List pqDevs = this.list(queryWrapper); - List pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.class); - ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.class, pqDevExcels); + List pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ExportData.class); + ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.ExportData.class, pqDevExcels); } @Override public List listUnbound() { - return this.lambdaQuery() - .eq(PqDev::getState, DataStateEnum.ENABLE.getCode()) - .isNull(PqDev::getPlanId) - .list(); + return this.lambdaQuery().eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).isNull(PqDev::getPlanId).list(); } @Override public List listBoundByPlanId(String planId) { - return this.lambdaQuery() - .eq(PqDev::getState, DataStateEnum.ENABLE.getCode()) - .eq(PqDev::getPlanId, planId) - .list(); + return this.lambdaQuery().eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).eq(PqDev::getPlanId, planId).list(); } @Override public boolean bindPlan(String planId, List pqDevIds) { - List existedBoundPqDevIds = this.listBoundByPlanId(planId) - .stream().map(PqDev::getId).collect(Collectors.toList()); + List existedBoundPqDevIds = this.listBoundByPlanId(planId).stream().map(PqDev::getId).collect(Collectors.toList()); //共有的(交集) List intersection = existedBoundPqDevIds.stream().filter(pqDevIds::contains).collect(Collectors.toList()); //移除 已有的历史绑定而此次不绑定的 existedBoundPqDevIds.removeAll(intersection); - boolean result1 = this.lambdaUpdate().set(PqDev::getPlanId, null) - .in(PqDev::getId, existedBoundPqDevIds) - .update(); + boolean result1 = this.lambdaUpdate().set(PqDev::getPlanId, null).in(PqDev::getId, existedBoundPqDevIds).update(); //绑定 没有的历史绑定而此次绑定的 pqDevIds.removeAll(existedBoundPqDevIds); - boolean result2 = this.lambdaUpdate().set(PqDev::getPlanId, planId) - .in(PqDev::getId, pqDevIds) - .update(); + boolean result2 = this.lambdaUpdate().set(PqDev::getPlanId, planId).in(PqDev::getId, pqDevIds).update(); return result1 && result2; }