微调
This commit is contained in:
@@ -13,9 +13,9 @@ import com.njcn.common.pojo.exception.BusinessException;
|
|||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.common.utils.LogUtil;
|
import com.njcn.common.utils.LogUtil;
|
||||||
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.pojo.vo.PqDevExcel;
|
||||||
import com.njcn.gather.device.device.service.IPqDevService;
|
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.gather.device.pojo.enums.DeviceResponseEnum;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import com.njcn.web.utils.HttpResultUtil;
|
import com.njcn.web.utils.HttpResultUtil;
|
||||||
@@ -26,6 +26,7 @@ import io.swagger.annotations.ApiImplicitParams;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -122,16 +123,16 @@ public class PqDevController extends BaseController {
|
|||||||
params.setStartSheetIndex(0);
|
params.setStartSheetIndex(0);
|
||||||
params.setSheetNum(1);
|
params.setSheetNum(1);
|
||||||
try {
|
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()) {
|
if (excelImportResult.isVerifyFail()) {
|
||||||
// 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
// 此处前端要做特殊处理,具体可以参考技术监督的数据导入
|
||||||
PoiUtil.exportFileByWorkbook(excelImportResult.getFailWorkbook(), "非法被检设备数据.xlsx", response);
|
Workbook failWorkbook = excelImportResult.getFailWorkbook();
|
||||||
throw new BusinessException(DeviceResponseEnum.IMPORT_DATA_FAIL);
|
PoiUtil.exportFileByWorkbook(failWorkbook, "非法被检设备数据.xlsx", response);
|
||||||
} else {
|
} else {
|
||||||
//批量录入数据
|
//批量录入数据
|
||||||
List<PqDevExcel> sgEventExcels = excelImportResult.getList();
|
List<PqDevExcel.ImportData> list = excelImportResult.getList();
|
||||||
pqDevService.importPqDevData(sgEventExcels);
|
pqDevService.importPqDevData(list);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BusinessException(DeviceResponseEnum.IMPORT_DATA_FAIL);
|
throw new BusinessException(DeviceResponseEnum.IMPORT_DATA_FAIL);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.njcn.common.pojo.constant.PatternRegex;
|
|||||||
import com.njcn.gather.device.pojo.constant.DeviceValidMessage;
|
import com.njcn.gather.device.pojo.constant.DeviceValidMessage;
|
||||||
import com.njcn.web.pojo.annotation.DateTimeStrValid;
|
import com.njcn.web.pojo.annotation.DateTimeStrValid;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@@ -50,11 +51,6 @@ public class PqDevExcel implements Serializable {
|
|||||||
@NotBlank(message = DeviceValidMessage.MANUFACTURER_NOT_BLANK)
|
@NotBlank(message = DeviceValidMessage.MANUFACTURER_NOT_BLANK)
|
||||||
private String manufacturer;
|
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)
|
@Excel(name = "出厂编号", width = 40)
|
||||||
@NotBlank(message = DeviceValidMessage.FACTORYNO_NOT_BLANK)
|
@NotBlank(message = DeviceValidMessage.FACTORYNO_NOT_BLANK)
|
||||||
private String createId;
|
private String createId;
|
||||||
@@ -82,7 +78,7 @@ public class PqDevExcel implements Serializable {
|
|||||||
|
|
||||||
@Excel(name = "是否为加密版本(1:是/0:否)", width = 20, replace = {"是_1", "否_0"})
|
@Excel(name = "是否为加密版本(1:是/0:否)", width = 20, replace = {"是_1", "否_0"})
|
||||||
@NotNull(message = DeviceValidMessage.ENCRYPTION_NOT_NULL)
|
@NotNull(message = DeviceValidMessage.ENCRYPTION_NOT_NULL)
|
||||||
private Integer encryption;
|
private Integer encryptionFlag;
|
||||||
|
|
||||||
@Excel(name = "识别码(未加密)", width = 30)
|
@Excel(name = "识别码(未加密)", width = 30)
|
||||||
private String series;
|
private String series;
|
||||||
@@ -93,10 +89,6 @@ public class PqDevExcel implements Serializable {
|
|||||||
@Excel(name = "样品编号", width = 40)
|
@Excel(name = "样品编号", width = 40)
|
||||||
private String sampleId;
|
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)
|
@Excel(name = "所属地市名称", width = 20)
|
||||||
private String cityName;
|
private String cityName;
|
||||||
|
|
||||||
@@ -127,4 +119,30 @@ public class PqDevExcel implements Serializable {
|
|||||||
@Excel(name = "复检次数", width = 15)
|
@Excel(name = "复检次数", width = 15)
|
||||||
@NotNull(message = DeviceValidMessage.RECHECK_NUM_NOT_NULL)
|
@NotNull(message = DeviceValidMessage.RECHECK_NUM_NOT_NULL)
|
||||||
private Integer reCheckNum;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public interface IPqDevService extends IService<PqDev> {
|
|||||||
*
|
*
|
||||||
* @param sgEventExcels
|
* @param sgEventExcels
|
||||||
*/
|
*/
|
||||||
void importPqDevData(List<PqDevExcel> sgEventExcels);
|
void importPqDevData(List<PqDevExcel.ImportData> sgEventExcels);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出被检设备信息
|
* 导出被检设备信息
|
||||||
|
|||||||
@@ -38,9 +38,7 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
public Page<PqDev> listPqDevs(PqDevParam.QueryParam queryParam) {
|
public Page<PqDev> listPqDevs(PqDevParam.QueryParam queryParam) {
|
||||||
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
||||||
if (ObjectUtil.isNotNull(queryParam)) {
|
if (ObjectUtil.isNotNull(queryParam)) {
|
||||||
queryWrapper.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName())
|
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());
|
||||||
.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())) {
|
if (ObjectUtil.isAllNotEmpty(queryParam.getSortBy(), queryParam.getOrderBy())) {
|
||||||
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
||||||
@@ -86,19 +84,16 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean deletePqDev(List<String> ids) {
|
public boolean deletePqDev(List<String> ids) {
|
||||||
return this.lambdaUpdate()
|
return this.lambdaUpdate().set(PqDev::getState, DataStateEnum.DELETED.getCode()).in(PqDev::getId, ids).update();
|
||||||
.set(PqDev::getState, DataStateEnum.DELETED.getCode())
|
|
||||||
.in(PqDev::getId, ids)
|
|
||||||
.update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void downloadTemplate() {
|
public void downloadTemplate() {
|
||||||
ExcelUtil.exportExcel("被检设备模板.xls", "被检设备", PqDevExcel.class, new ArrayList<>());
|
ExcelUtil.exportExcel("被检设备模板.xlsx", "被检设备", PqDevExcel.class, new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void importPqDevData(List<PqDevExcel> pqDevExcelList) {
|
public void importPqDevData(List<PqDevExcel.ImportData> pqDevExcelList) {
|
||||||
List<PqDev> pqDevList = BeanUtil.copyToList(pqDevExcelList, PqDev.class);
|
List<PqDev> pqDevList = BeanUtil.copyToList(pqDevExcelList, PqDev.class);
|
||||||
pqDevList.forEach(pqDev -> {
|
pqDevList.forEach(pqDev -> {
|
||||||
if (Objects.nonNull(pqDev.getSeries())) {
|
if (Objects.nonNull(pqDev.getSeries())) {
|
||||||
@@ -116,58 +111,47 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
|
|||||||
public void exportPqDevData(PqDevParam.QueryParam queryParam) {
|
public void exportPqDevData(PqDevParam.QueryParam queryParam) {
|
||||||
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<PqDev> queryWrapper = new QueryWrapper<>();
|
||||||
if (ObjectUtil.isNotNull(queryParam)) {
|
if (ObjectUtil.isNotNull(queryParam)) {
|
||||||
queryWrapper.like(StrUtil.isNotBlank(queryParam.getName()), "pq_dev.name", queryParam.getName())
|
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());
|
||||||
.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())) {
|
if (ObjectUtil.isAllNotEmpty(queryParam.getSortBy(), queryParam.getOrderBy())) {
|
||||||
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));
|
||||||
} else {
|
} else {
|
||||||
//没有排序参数,默认根据sort字段排序,没有排序字段的,根据updateTime更新时间排序
|
//没有排序参数,默认根据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());
|
queryWrapper.eq("pq_dev.state", DataStateEnum.ENABLE.getCode());
|
||||||
List<PqDev> pqDevs = this.list(queryWrapper);
|
List<PqDev> pqDevs = this.list(queryWrapper);
|
||||||
List<PqDevExcel> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.class);
|
List<PqDevExcel.ExportData> pqDevExcels = BeanUtil.copyToList(pqDevs, PqDevExcel.ExportData.class);
|
||||||
ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.class, pqDevExcels);
|
ExcelUtil.exportExcel("被检设备导出数据.xlsx", "被检设备", PqDevExcel.ExportData.class, pqDevExcels);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PqDev> listUnbound() {
|
public List<PqDev> listUnbound() {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery().eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).isNull(PqDev::getPlanId).list();
|
||||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
|
||||||
.isNull(PqDev::getPlanId)
|
|
||||||
.list();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PqDev> listBoundByPlanId(String planId) {
|
public List<PqDev> listBoundByPlanId(String planId) {
|
||||||
return this.lambdaQuery()
|
return this.lambdaQuery().eq(PqDev::getState, DataStateEnum.ENABLE.getCode()).eq(PqDev::getPlanId, planId).list();
|
||||||
.eq(PqDev::getState, DataStateEnum.ENABLE.getCode())
|
|
||||||
.eq(PqDev::getPlanId, planId)
|
|
||||||
.list();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean bindPlan(String planId, List<String> pqDevIds) {
|
public boolean bindPlan(String planId, List<String> pqDevIds) {
|
||||||
List<String> existedBoundPqDevIds = this.listBoundByPlanId(planId)
|
List<String> existedBoundPqDevIds = this.listBoundByPlanId(planId).stream().map(PqDev::getId).collect(Collectors.toList());
|
||||||
.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());
|
||||||
|
|
||||||
//移除 已有的历史绑定而此次不绑定的
|
//移除 已有的历史绑定而此次不绑定的
|
||||||
existedBoundPqDevIds.removeAll(intersection);
|
existedBoundPqDevIds.removeAll(intersection);
|
||||||
boolean result1 = this.lambdaUpdate().set(PqDev::getPlanId, null)
|
boolean result1 = this.lambdaUpdate().set(PqDev::getPlanId, null).in(PqDev::getId, existedBoundPqDevIds).update();
|
||||||
.in(PqDev::getId, existedBoundPqDevIds)
|
|
||||||
.update();
|
|
||||||
|
|
||||||
//绑定 没有的历史绑定而此次绑定的
|
//绑定 没有的历史绑定而此次绑定的
|
||||||
pqDevIds.removeAll(existedBoundPqDevIds);
|
pqDevIds.removeAll(existedBoundPqDevIds);
|
||||||
boolean result2 = this.lambdaUpdate().set(PqDev::getPlanId, planId)
|
boolean result2 = this.lambdaUpdate().set(PqDev::getPlanId, planId).in(PqDev::getId, pqDevIds).update();
|
||||||
.in(PqDev::getId, pqDevIds)
|
|
||||||
.update();
|
|
||||||
|
|
||||||
return result1 && result2;
|
return result1 && result2;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user