diff --git a/src/main/java/com/wms/controller/ExcelController.java b/src/main/java/com/wms/controller/ExcelController.java index 84e4eb6..9ec10c9 100644 --- a/src/main/java/com/wms/controller/ExcelController.java +++ b/src/main/java/com/wms/controller/ExcelController.java @@ -71,6 +71,8 @@ public class ExcelController { private final GoodsService goodsService;// 物料服务 private final WorkStationConfigService workStationConfigService;// 工站配置服务 + private final List uploadFileHashStringList = new ArrayList<>(); + /** * 查询上传记录 * @param uploadRecordQuery 查询参数 @@ -118,10 +120,18 @@ public class ExcelController { logger.info("导入库存,请求ip:{},文件详情:{}", getIpAddr(servletRequest), convertJsonString(fileVo)); ResponseEntity response = new ResponseEntity(); try { + // 判断是否重复导入 + if (uploadFileHashStringList.contains(fileVo.getHash())) { + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请勿导入相同文件。"); + return convertJsonString(response); + } + uploadFileHashStringList.add(fileVo.getHash()); // 导入excel EasyExcel.read(file.getInputStream(), StockExcelVo.class, new UploadStocksListener(stockService)).sheet().doRead(); // 添加导入记录 uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "库存")); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.OK.getCode()); response.setMessage("导入库存成功。"); return convertJsonString(response); @@ -129,6 +139,7 @@ public class ExcelController { logger.error("导入库存异常:{}", convertJsonString(e)); // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("导入库存异常。"); return convertJsonString(response); @@ -148,6 +159,13 @@ public class ExcelController { logger.info("导入DBS,请求ip:{},文件详情:{}", getIpAddr(servletRequest), convertJsonString(fileVo)); ResponseEntity response = new ResponseEntity(); try { + // 判断是否重复导入 + if (uploadFileHashStringList.contains(fileVo.getHash())) { + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请勿导入相同文件。"); + return convertJsonString(response); + } + uploadFileHashStringList.add(fileVo.getHash()); // 先移除之前last表中的内容 kateDbsLastService.remove(new LambdaQueryWrapper<>()); // 将当前Dbs表的数据存进Last表 @@ -158,6 +176,7 @@ public class ExcelController { EasyExcel.read(file.getInputStream(), KateDbsExcelVo.class, new UploadDbsListener(kateDbsService, kateDbsLastService, fileVo.getUserName())).sheet().headRowNumber(8).doRead(); // 添加导入记录 uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "DBS")); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.OK.getCode()); response.setMessage("导入DBS成功。"); return convertJsonString(response); @@ -165,6 +184,7 @@ public class ExcelController { logger.error("导入DBS异常:{}", convertJsonString(e)); // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("导入DBS异常。"); return convertJsonString(response); @@ -184,10 +204,24 @@ public class ExcelController { logger.info("导入工单,请求ip:{},文件详情:{}", getIpAddr(servletRequest), convertJsonString(fileVo)); ResponseEntity response = new ResponseEntity(); try { + // 判断是否重复导入 + if (uploadFileHashStringList.contains(fileVo.getHash())) { + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请勿导入相同文件。"); + return convertJsonString(response); + } + uploadFileHashStringList.add(fileVo.getHash()); + // 先移除之前last表中的内容 + kateOrdersLastService.remove(new LambdaQueryWrapper<>()); + // 将当前工单表的数据存进Last表 + kateOrdersLastService.saveBatch(BeanUtil.copyToList(kateOrdersService.list(), KateOrdersLast.class)); + // 移库工单表中的内容 + kateOrdersService.remove(new LambdaQueryWrapper<>()); // 导入excel EasyExcel.read(file.getInputStream(), KateOrdersExcelVo.class, new UploadKateOrdersListener(kateOrdersService, kateOrdersLastService, fileVo.getUserName())).sheet().doRead(); // 添加导入记录 uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "ORDERS")); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.OK.getCode()); response.setMessage("导入工单成功。"); return convertJsonString(response); @@ -195,6 +229,7 @@ public class ExcelController { logger.error("导入工单异常:{}", convertJsonString(e)); // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("导入工单异常。"); return convertJsonString(response); @@ -214,10 +249,18 @@ public class ExcelController { logger.info("导入物料,请求ip:{},文件详情:{}", getIpAddr(servletRequest), convertJsonString(fileVo)); ResponseEntity response = new ResponseEntity(); try { + // 判断是否重复导入 + if (uploadFileHashStringList.contains(fileVo.getHash())) { + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请勿导入相同文件。"); + return convertJsonString(response); + } + uploadFileHashStringList.add(fileVo.getHash()); // 导入excel EasyExcel.read(file.getInputStream(), GoodsExcelVo.class, new UploadGoodsListener(goodsService, fileVo.getUserName())).sheet("基本信息").doRead(); // 添加导入记录 uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "GOODS")); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.OK.getCode()); response.setMessage("导入物料成功。"); return convertJsonString(response); @@ -225,6 +268,7 @@ public class ExcelController { logger.error("导入物料异常:{}", convertJsonString(e)); // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("导入物料异常。"); return convertJsonString(response); @@ -244,10 +288,18 @@ public class ExcelController { logger.info("导入工站配置,请求ip:{},文件详情:{}", getIpAddr(servletRequest), convertJsonString(fileVo)); ResponseEntity response = new ResponseEntity(); try { + // 判断是否重复导入 + if (uploadFileHashStringList.contains(fileVo.getHash())) { + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请勿导入相同文件。"); + return convertJsonString(response); + } + uploadFileHashStringList.add(fileVo.getHash()); // 导入excel EasyExcel.read(file.getInputStream(), StationConfigExcelVo.class, new UploadStationConfigListener(workStationConfigService, fileVo.getUserName())).sheet("工站配置").doRead(); // 添加导入记录 uploadRecordService.save(UploadRecord.ofFileVo(fileVo, "STATION-CONFIG_")); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.OK.getCode()); response.setMessage("导入工站配置。"); return convertJsonString(response); @@ -255,6 +307,7 @@ public class ExcelController { logger.error("导入工站配置异常:{}", convertJsonString(e)); // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + uploadFileHashStringList.remove(fileVo.getHash()); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("导入工站配置异常。"); return convertJsonString(response); diff --git a/src/main/java/com/wms/controller/TaskController.java b/src/main/java/com/wms/controller/TaskController.java index c1045c5..f1b0bd8 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -804,11 +804,12 @@ public class TaskController { .set(Stand::getPickVehicle, boxArriveRequest.getVehicleNo()) .eq(Stand::getStandId, pickTask.getStandId())); // 重置当前站台非当前箱子的已完成拣选任务 - pickTaskService.update(new LambdaUpdateWrapper() - .set(PickTask::getPickStatus, PickTaskStatusEnum.NEW.getCode()) + List otherPickTasks = pickTaskService.list(new LambdaQueryWrapper() .ne(PickTask::getVehicleId, boxArriveRequest.getVehicleNo()) .eq(PickTask::getStandId, boxArriveRequest.getLocation()) .eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())); + otherPickTasks.forEach(otherPickTask -> otherPickTask.setPickStatus(PickTaskStatusEnum.NEW.getCode())); + pickTaskService.updateBatchById(otherPickTasks); response.setCode(ResponseCode.OK.getCode()); response.setMessage("上报成功"); diff --git a/src/main/java/com/wms/entity/app/vo/FileVo.java b/src/main/java/com/wms/entity/app/vo/FileVo.java index a2405f4..3feaa9a 100644 --- a/src/main/java/com/wms/entity/app/vo/FileVo.java +++ b/src/main/java/com/wms/entity/app/vo/FileVo.java @@ -16,6 +16,8 @@ public class FileVo { private String type; @JsonProperty("size") private String size; + @JsonProperty("hash") + private String hash; @JsonProperty("userName") private String userName; } diff --git a/src/main/java/com/wms/entity/table/UploadRecord.java b/src/main/java/com/wms/entity/table/UploadRecord.java index a55de51..1e58259 100644 --- a/src/main/java/com/wms/entity/table/UploadRecord.java +++ b/src/main/java/com/wms/entity/table/UploadRecord.java @@ -27,6 +27,11 @@ public class UploadRecord { */ @TableField("file_id") private String fileId; + /** + * 文件哈希值 + */ + @TableField("file_hash") + private String hash; /** * 文件名 */ @@ -63,6 +68,7 @@ public class UploadRecord { UploadRecord uploadRecord = new UploadRecord(); uploadRecord.setUploadId(generateId("UPLOAD_")); uploadRecord.setFileId(fileVo.getFileId()); + uploadRecord.setHash(fileVo.getHash()); uploadRecord.setFileType(fileVo.getType()); uploadRecord.setFileName(fileVo.getName()); uploadRecord.setUploadTime(LocalDateTime.now()); diff --git a/src/main/java/com/wms/service/business/serviceImplements/WorkServiceImplements.java b/src/main/java/com/wms/service/business/serviceImplements/WorkServiceImplements.java index b94a026..56d1b7d 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/WorkServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/WorkServiceImplements.java @@ -3,7 +3,6 @@ package com.wms.service.business.serviceImplements; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.wms.constants.enums.ConfigMapKeyEnum; -import com.wms.constants.enums.StockStatus; import com.wms.entity.app.dto.WorkCenterAndOrderDto; import com.wms.entity.table.*; import com.wms.service.*; @@ -38,7 +37,6 @@ public class WorkServiceImplements implements IWorkService { private final ETagLocationService eTagLocationService;// 电子标签服务 private final ELocationConfigService eLocationConfigService;// 电子标签配置服务 private final GoodsToStationService goodsToStationService;// 站台要料服务 - private final OutsideVehiclesService outsideVehiclesService;// 流转中的箱子服务 private final WorkSummaryService workSummaryService;// 工作总结服务 private final ELocationConfigLastService eLocationConfigLastService;// 上一次标签配置的服务 private final StockService stockService;// 库存服务