This commit is contained in:
caozehui
2024-11-14 14:52:34 +08:00
parent 8f4483bbef
commit ea21d631c9
4 changed files with 53 additions and 50 deletions

View File

@@ -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<PqDevExcel> excelImportResult = ExcelImportUtil.importExcelMore(file.getInputStream(), PqDevExcel.class, params);
ExcelImportResult<PqDevExcel.ImportData> 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<PqDevExcel> sgEventExcels = excelImportResult.getList();
pqDevService.importPqDevData(sgEventExcels);
List<PqDevExcel.ImportData> list = excelImportResult.getList();
pqDevService.importPqDevData(list);
}
} catch (Exception e) {
throw new BusinessException(DeviceResponseEnum.IMPORT_DATA_FAIL);

View File

@@ -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;
}
}

View File

@@ -56,7 +56,7 @@ public interface IPqDevService extends IService<PqDev> {
*
* @param sgEventExcels
*/
void importPqDevData(List<PqDevExcel> sgEventExcels);
void importPqDevData(List<PqDevExcel.ImportData> sgEventExcels);
/**
* 导出被检设备信息

View File

@@ -38,9 +38,7 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
public Page<PqDev> listPqDevs(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.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<PqDevMapper, PqDev> 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<PqDevMapper, PqDev> implements
@Override
public boolean deletePqDev(List<String> 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<PqDevExcel> pqDevExcelList) {
public void importPqDevData(List<PqDevExcel.ImportData> pqDevExcelList) {
List<PqDev> pqDevList = BeanUtil.copyToList(pqDevExcelList, PqDev.class);
pqDevList.forEach(pqDev -> {
if (Objects.nonNull(pqDev.getSeries())) {
@@ -116,58 +111,47 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
public void exportPqDevData(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.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<PqDev> pqDevs = this.list(queryWrapper);
List<PqDevExcel> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.class);
ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.class, pqDevExcels);
List<PqDevExcel.ExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ExportData.class);
ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.ExportData.class, pqDevExcels);
}
@Override
public List<PqDev> 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<PqDev> 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<String> pqDevIds) {
List<String> existedBoundPqDevIds = this.listBoundByPlanId(planId)
.stream().map(PqDev::getId).collect(Collectors.toList());
List<String> existedBoundPqDevIds = this.listBoundByPlanId(planId).stream().map(PqDev::getId).collect(Collectors.toList());
//共有的(交集)
List<String> 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;
}