diff --git a/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java b/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java index 966cf7c..8d5ee70 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java @@ -1,6 +1,9 @@ package com.wms.service.business.serviceImplements; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -14,6 +17,8 @@ import com.wms.service.business.IWmsJobService; import com.wms.utils.HttpUtils; import com.wms.utils.StringUtils; import com.wms.utils.WmsUtils; +import com.wms.utils.excel.style.ExcelContentStyle; +import com.wms.utils.excel.vo.*; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,7 +29,11 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import static com.wms.config.InitLocalConfig.configMap; @@ -38,6 +47,8 @@ import static com.wms.utils.StringUtils.convertJsonString; @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class WmsJobServiceImplements implements IWmsJobService { private final Logger logger = LoggerFactory.getLogger(this.getClass());// 日志 + private final String ROOT_PATH = "./file"; + private final LogService logService;// 日志服务 private final TaskService taskService;// 任务服务 private final PickTaskService pickTaskService;// 拣选任务服务 @@ -45,6 +56,15 @@ public class WmsJobServiceImplements implements IWmsJobService { private final StandService standService;// 站台服务 private final StandStackerTaskService standStackerTaskService;// 特殊服务 private final StandStackerTaskBakService standStackerTaskBakService;// 特殊记录服务 + private final KateOrdersService kateOrdersService;// 工单服务 + private final KateDBSService kateDBSService;// dbs服务 + private final WorkSummaryService workSummaryService;// 工作总结服务 + private final TaskRecordService taskRecordService;// 任务记录服务 + private final PickTaskRecordService pickTaskRecordService;// 拣选任务记录服务 + private final NoPlanRecordService noPlanRecordService;// 非计划领料记录服务 + private final IStockUpdateRecordService iStockUpdateRecordService;// 库存更新记录服务 + private final UploadRecordService uploadRecordService;// 文件上传记录服务 + private final InventoryHistoryService inventoryHistoryService; /** * 发送正常的任务 @@ -664,9 +684,15 @@ public class WmsJobServiceImplements implements IWmsJobService { } catch (Exception e) { logger.error("获取日志清理天数错误,使用默认值30天"); } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() - .apply("log_time <= date_add(curdate(),INTERVAL -{0} DAY)", interval); - logService.remove(lambdaQueryWrapper); + // 获取日志删除时间 + LocalDateTime deleteLogTime = LocalDateTime.now().minusDays(interval); + List expireLogs = logService.list(new LambdaQueryWrapper() + .lt(WmsLog::getLogTime, deleteLogTime)); + if (expireLogs != null && !expireLogs.isEmpty()) { + // 日志文件不需要缓存 + logService.removeBatchByIds(expireLogs.stream().map(WmsLog::getLogId).distinct().toList()); + logger.info("定期清理过期日志数据成功。"); + } } catch (Exception exception) { // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -693,13 +719,271 @@ public class WmsJobServiceImplements implements IWmsJobService { logger.error("获取重要记录清理天数错误,使用默认值365天"); } // 普通记录---入出库记录、拣选任务记录 + // 获取删除时间 + LocalDateTime deleteTime = LocalDateTime.now().minusDays(interval); + // 查询过期任务记录 + List expireTaskRecords = taskRecordService.list(new LambdaQueryWrapper() + .lt(TaskRecord::getCreateTime, deleteTime)); + if (expireTaskRecords != null && !expireTaskRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (TaskRecord tempDbData : expireTaskRecords) { + DbOfTaskRecord tempDbExcel = new DbOfTaskRecord(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getTaskId()); + } + doWriteExcel("tbl_app_task_bak_" + getSuffixFromDate(deleteTime, interval), ROOT_PATH + "/tbl_app_task_bak", "tbl_app_task_bak", finishedExcelTemp, DbOfTaskRecord.class); + // 移除已经缓存的工作总结 + taskRecordService.removeBatchByIds(needRemoveIds); + logger.info("清理过期任务记录数据成功。"); + } + // 查询过期拣选记录 + List expirePickTaskRecords = pickTaskRecordService.list(new LambdaQueryWrapper() + .lt(PickTaskRecord::getArriveTime, deleteTime)); + if (expirePickTaskRecords != null && !expirePickTaskRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (PickTaskRecord tempDbData : expirePickTaskRecords) { + DbOfPickTaskRecord tempDbExcel = new DbOfPickTaskRecord(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getPickTaskId()); + } + doWriteExcel("tbl_app_pick_task_bak_" + getSuffixFromDate(deleteTime, interval), ROOT_PATH + "/tbl_app_pick_task_bak", "tbl_app_pick_task_bak", finishedExcelTemp, DbOfPickTaskRecord.class); + // 移除已经缓存的工作总结 + pickTaskRecordService.removeBatchByIds(needRemoveIds); + logger.info("清理过期拣选任务记录数据成功。"); + } + // 获取过期的standStackerTask记录 + List expireStandStackerTaskRecords = standStackerTaskBakService.list(new LambdaQueryWrapper() + .lt(StandStackerTaskBak::getFinishTime, deleteTime)); + if (expireStandStackerTaskRecords != null && !expireStandStackerTaskRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (StandStackerTaskBak tempDbData : expireStandStackerTaskRecords) { + DbOfStandStackerTaskBak tempDbExcel = new DbOfStandStackerTaskBak(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getRecordId()); + } + doWriteExcel("tbl_app_stand_stacker_task_bak_" + getSuffixFromDate(deleteTime, interval), ROOT_PATH + "/tbl_app_stand_stacker_task_bak", "tbl_app_stand_stacker_task_bak", finishedExcelTemp, DbOfStandStackerTaskBak.class); + // 移除已经缓存的工作总结 + standStackerTaskBakService.removeBatchByIds(needRemoveIds); + logger.info("清理过期站台堆垛机任务记录数据成功。"); + } // 重要记录---盘点记录、工作总结、库存更新记录、非计划领料记录、上传文件记录 + // 获取删除时间 + LocalDateTime deleteImportantTime = LocalDateTime.now().minusDays(importantInterval); + // 查询过期工作总结 + List expireWorkSummaryRecords = workSummaryService.list(new LambdaQueryWrapper() + .lt(WorkSummary::getFinishTime, deleteImportantTime)); + if (expireWorkSummaryRecords != null && !expireWorkSummaryRecords.isEmpty()) { + List needRemoveSummaryIds = new ArrayList<>(); + List finishedWorkSummaryExcelTemp = new ArrayList<>(); + for (WorkSummary expireWorkSummary : expireWorkSummaryRecords) { + DbOfWorkSummary tempDbOfSummary = new DbOfWorkSummary(); + BeanUtil.copyProperties(expireWorkSummary, tempDbOfSummary); + // 工单excel模版 + finishedWorkSummaryExcelTemp.add(tempDbOfSummary); + // 需要删除的工单主键 + needRemoveSummaryIds.add(expireWorkSummary.getWorkFlowId()); + } + doWriteExcel("tbl_app_work_summary_" + getSuffixFromDate(deleteImportantTime, importantInterval), ROOT_PATH + "/tbl_app_work_summary", "tbl_app_work_summary", finishedWorkSummaryExcelTemp, DbOfWorkSummary.class); + // 移除已经缓存的工作总结 + workSummaryService.removeBatchByIds(needRemoveSummaryIds); + logger.info("清理过期工作总结数据成功。"); + } + // 查询过期的盘点记录 + List expireInventoryRecords = inventoryHistoryService.list(new LambdaQueryWrapper() + .lt(InventoryHistory::getInventoryDate, deleteImportantTime)); + if (expireInventoryRecords != null && !expireInventoryRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (InventoryHistory tempDbData : expireInventoryRecords) { + DbOfInventoryHistory tempDbExcel = new DbOfInventoryHistory(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getInventoryId()); + } + doWriteExcel("tbl_app_inventory_history_" + getSuffixFromDate(deleteImportantTime, importantInterval), ROOT_PATH + "/tbl_app_inventory_history", "tbl_app_inventory_history", finishedExcelTemp, DbOfInventoryHistory.class); + // 移除已经缓存的工作总结 + inventoryHistoryService.removeBatchByIds(needRemoveIds); + logger.info("清理过期盘点记录数据成功。"); + } + // 获取过时的非计划领料记录 + List expireNoPlanRecords = noPlanRecordService.list(new LambdaQueryWrapper() + .lt(NoPlanRecord::getCallTime, deleteImportantTime)); + if (expireNoPlanRecords != null && !expireNoPlanRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (NoPlanRecord tempDbData : expireNoPlanRecords) { + DbOfNoPlan tempDbExcel = new DbOfNoPlan(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getRecordId()); + } + doWriteExcel("tbl_app_no_plan_" + getSuffixFromDate(deleteImportantTime, importantInterval), ROOT_PATH + "/tbl_app_no_plan", "tbl_app_no_plan", finishedExcelTemp, DbOfNoPlan.class); + // 移除已经缓存的工作总结 + noPlanRecordService.removeBatchByIds(needRemoveIds); + logger.info("清理过期非计划领料记录数据成功。"); + } + // 查询过期库存更新记录 + List expireStockUpdateRecords = iStockUpdateRecordService.list(new LambdaQueryWrapper() + .lt(StockUpdateRecord::getUpdateTime, deleteImportantTime)); + if (expireStockUpdateRecords != null && !expireStockUpdateRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (StockUpdateRecord tempDbData : expireStockUpdateRecords) { + DbOfStockUpdateRecord tempDbExcel = new DbOfStockUpdateRecord(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getRecordId()); + } + doWriteExcel("tbl_app_stock_update_record_" + getSuffixFromDate(deleteImportantTime, importantInterval), ROOT_PATH + "/tbl_app_stock_update_record", "tbl_app_stock_update_record", finishedExcelTemp, DbOfStockUpdateRecord.class); + iStockUpdateRecordService.removeBatchByIds(needRemoveIds); + logger.info("清理过期库存更新记录数据成功。"); + } + // 查询过期的上传文件记录 + List expireUploadFileRecords = uploadRecordService.list(new LambdaQueryWrapper() + .lt(UploadRecord::getUploadTime, deleteImportantTime)); + if (expireUploadFileRecords != null && !expireUploadFileRecords.isEmpty()) { + List needRemoveIds = new ArrayList<>(); + List finishedExcelTemp = new ArrayList<>(); + for (UploadRecord tempDbData : expireUploadFileRecords) { + DbOfUploadRecord tempDbExcel = new DbOfUploadRecord(); + BeanUtil.copyProperties(tempDbData, tempDbExcel); + // 工单excel模版 + finishedExcelTemp.add(tempDbExcel); + // 需要删除的工单主键 + needRemoveIds.add(tempDbData.getUploadId()); + } + doWriteExcel("tbl_app_upload_record_" + getSuffixFromDate(deleteImportantTime, importantInterval), ROOT_PATH + "/tbl_app_upload_record", "tbl_app_upload_record", finishedExcelTemp, DbOfUploadRecord.class); + uploadRecordService.removeBatchByIds(needRemoveIds); + logger.info("清理过期上传文件记录数据成功。"); + } + // 工单和dbs单独处理 + // 查询已经完成的工单 + List finishedWorkOrders = kateOrdersService.list(new LambdaQueryWrapper() + .eq(KateOrders::getOrderStatus, 4)); + if (finishedWorkOrders != null && !finishedWorkOrders.isEmpty()) { + List needRemoveOrderIds = new ArrayList<>(); + List finishedWorkOrdersExcelTemp = new ArrayList<>(); + for (KateOrders finishedWorkOrder : finishedWorkOrders) { + DbOfKateOrders tempDbOfOrder = new DbOfKateOrders(); + BeanUtil.copyProperties(finishedWorkOrder, tempDbOfOrder); + // 工单excel模版 + finishedWorkOrdersExcelTemp.add(tempDbOfOrder); + // 需要删除的工单主键 + needRemoveOrderIds.add(finishedWorkOrder.getOrderId()); + } + doWriteExcel("tbl_app_kate_orders_" + getSuffixFromDate(LocalDateTime.now().minusDays(1), 1), ROOT_PATH + "/tbl_app_kate_orders", "tbl_app_kate_orders", finishedWorkOrdersExcelTemp, DbOfKateOrders.class); + // 移除已经缓存的工单 + kateOrdersService.removeBatchByIds(needRemoveOrderIds); + logger.info("定期清理工单完成数据成功。"); + } + // 查询已经完成的dbs + List finishedDBS = kateDBSService.list(new LambdaQueryWrapper() + .eq(KateDBS::getDbsStatus, 2)); + if (finishedDBS != null && !finishedDBS.isEmpty()) { + List needRemoveDbsIds = new ArrayList<>(); + List finishedDbsExcelTemp = new ArrayList<>(); + for (KateDBS finishedDbsTemp : finishedDBS) { + DbOfDbs tempDbOfDbs = new DbOfDbs(); + BeanUtil.copyProperties(finishedDbsTemp, tempDbOfDbs); + // 工单excel模版 + finishedDbsExcelTemp.add(tempDbOfDbs); + // 需要删除的工单主键 + needRemoveDbsIds.add(finishedDbsTemp.getDbsId()); + } + doWriteExcel("tbl_app_kate_dbs_" + getSuffixFromDate(LocalDateTime.now().minusDays(1), 1), ROOT_PATH + "/tbl_app_kate_dbs", "tbl_app_kate_dbs", finishedDbsExcelTemp, DbOfDbs.class); + // 移除已经缓存的dbs + kateDBSService.removeBatchByIds(needRemoveDbsIds); + logger.info("定期清理DBS完成数据成功。"); + } } catch (Exception exception) { // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } + /** + * 写入excel + * + * @param fileDesc 文件描述,不需要文件类型的后缀 + * @param filePath 文件路径,最后一位不需要添加文件分割符 + * @param sheetName 页名 + * @param list 数据列表 + * @param clazz 泛型类 + * @param 泛型 + * @throws IOException 异常 + */ + public void doWriteExcel(String fileDesc, String filePath, String sheetName, List list, Class clazz) throws IOException { + // 内容样式 + HorizontalCellStyleStrategy horizontalCellStyleStrategy = ExcelContentStyle.getContentStyle(); + File file = new File(filePath + File.separator + fileDesc + ".xlsx"); + createFile(file);// 新建文件 + FileOutputStream fos = new FileOutputStream(file); + EasyExcel.write(fos, clazz) + .excelType(ExcelTypeEnum.XLSX) + .registerWriteHandler(horizontalCellStyleStrategy) + .sheet("库存") + .doWrite(list); + logger.info("保存文件成功:{}。", fileDesc); + } + + /** + * 创建文件 + * + * @param file 目标文件 + */ + public void createFile(File file) { + if (!file.exists()) { + // 文件不存在 + if (!file.getParentFile().exists()) { + // 目录不存在,创建上级目录 + boolean createDirectSuccessFlag = file.getParentFile().mkdirs(); + if (!createDirectSuccessFlag) { + logger.error("创建目录失败。"); + return; + } + } + try { + // 在上级目录里创建文件 + boolean createFileSuccessFlag = file.createNewFile(); + if (!createFileSuccessFlag) { + logger.error("创建文件失败。"); + } + } catch (IOException e) { + logger.error("创建文件异常。{}", JSON.toJSONString(e)); + } + } + } + + /** + * 获取到文件的时间后缀 + * @param deleteTime 删除临界时间 + * @return 后缀字符串 + */ + private String getSuffixFromDate(LocalDateTime deleteTime, int clearInterval) { + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd"); + String fromDateStr = dateFormat.format(deleteTime.minusDays(clearInterval)); + String toDateStr = dateFormat.format(deleteTime); + return fromDateStr + "~" + toDateStr; + } + /** * 发送PickOut任务 * @throws Exception 异常 diff --git a/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java b/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java index eb50038..ee0fdc8 100644 --- a/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java +++ b/src/main/java/com/wms/service/quartz_job/serviceImpl/JobServiceImpl.java @@ -96,7 +96,7 @@ public class JobServiceImpl implements IJobService { jobBeans.add(new JobBean("PickOutTaskSender", PickOutTaskSender.class, "0/2 * * * * ?", 2000, JobTimerTypeEnums.SIMPLE.getType(), 1)); // jobBeans.add(new JobBean("KateWorkExecutor", KateWorkExecutor.class, "0/20 * * * * ?", 20000, JobTimerTypeEnums.SIMPLE.getType(), 1)); jobBeans.add(new JobBean("KateWorkExecutor", KateWorkExecutor.class, "0 0 * * * ?", 20000, JobTimerTypeEnums.SIMPLE.getType(), 1)); - jobBeans.add(new JobBean("DataClearExecutor", DataClearExecutor.class, "0 0 22 * * ?", null, JobTimerTypeEnums.CRON.getType(), 1)); + jobBeans.add(new JobBean("DataClearExecutor", DataClearExecutor.class, "0 0 22 * * ?", 2000, JobTimerTypeEnums.SIMPLE.getType(), 1)); for (JobBean jobBean : jobBeans) { createJob(jobBean); } diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfDbs.java b/src/main/java/com/wms/utils/excel/vo/DbOfDbs.java new file mode 100644 index 0000000..275139f --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfDbs.java @@ -0,0 +1,59 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * dbs数据保存模版 + */ +@Data +public class DbOfDbs { + /** + * DBS计划Id + */ + @ExcelProperty("dbs_id") + private String dbsId; + /** + * 顺序号 + */ + @ExcelProperty("work_sequence") + private Integer workSequence; + /** + * 机器序列号 + */ + @ExcelProperty("machine_no") + private String machineNo; + /** + * 工单 + */ + @ExcelProperty("work_order") + private String workOrder; + /** + * 计划开工日期 + */ + @ExcelProperty("plan_start_date") + @DateTimeFormat("yyyy-MM-dd") + private LocalDateTime planStartDate; + /** + * dbs的状态 + * 0:未开始 + * 1:已开始未完成 + * 2:已完成 + */ + @ExcelProperty("dbs_status") + private Integer dbsStatus; + /** + * 最近更新时间 + */ + @ExcelProperty("last_update_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastUpdateTime; + /** + * 最近更新用户 + */ + @ExcelProperty("last_update_user") + private String lastUpdateUser; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfInventoryHistory.java b/src/main/java/com/wms/utils/excel/vo/DbOfInventoryHistory.java new file mode 100644 index 0000000..3c0099d --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfInventoryHistory.java @@ -0,0 +1,58 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class DbOfInventoryHistory { + /** + * 盘点id + */ + @ExcelProperty("inventory_id") + private String inventoryId; + /** + * 料号 + */ + @ExcelProperty("goods_id") + private String goodsId; + /** + * 库存数量 + */ + @ExcelProperty("stock_num") + private BigDecimal stockNum; + /** + * 实际数量 + */ + @ExcelProperty("real_num") + private BigDecimal realNum; + /** + * 盘点状态 + */ + @ExcelProperty("inventory_status") + private Integer inventoryStatus; + /** + * 盘点用户 + */ + @ExcelProperty("inventory_user") + private String inventoryUser; + /** + * 盘点日期 + */ + @ExcelProperty("inventory_date") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime inventoryDate; + /** + * 箱号 + */ + @ExcelProperty("vehicle_id") + private String vehicleId; + /** + * 盘点结果 + */ + @ExcelProperty("inventory_result") + private Integer inventoryResult; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfKateOrders.java b/src/main/java/com/wms/utils/excel/vo/DbOfKateOrders.java new file mode 100644 index 0000000..ab3d094 --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfKateOrders.java @@ -0,0 +1,113 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 工单数据保存模版 + */ +@Data +public class DbOfKateOrders { + /** + * id + */ + @ExcelProperty("order_id") + private String orderId; + /** + * Order + */ + @ExcelProperty("work_order") + private String workOrder; + /** + * Material + */ + @ExcelProperty("goods_id") + private String goodsId; + /** + * Item + */ + @ExcelProperty("item") + private String item; + /** + * Description + */ + @ExcelProperty("description") + private String description; + /** + * SLoc + */ + @ExcelProperty("s_loc") + private String sLoc; + /** + * Type + */ + @ExcelProperty("type") + private String type; + /** + * Status + */ + @ExcelProperty("origin_status") + private String originStatus; + /** + * SupplyArea + */ + @ExcelProperty("supply_area") + private String supplyArea; + /** + * SortStrng + */ + @ExcelProperty("sort_string") + private String sortString; + /** + * Requirement Qty + */ + @ExcelProperty("requirement_quantity") + private BigDecimal requirementQuantity; + /** + * BUn + */ + @ExcelProperty("goods_unit") + private String goodsUnit; + /** + * 工单状态 + * 0:未开始 + * 1:已生成任务 + * 2:已呼叫料箱 + * 3:正在拣选 + * 4:拣选完成 + */ + @ExcelProperty("order_status") + private Integer orderStatus; + /** + * 缺少数量 + */ + @ExcelProperty("lack_quantity") + private BigDecimal lackQuantity; + /** + * 实际拣选数量 + */ + @ExcelProperty("picked_quantity") + private BigDecimal pickedQuantity; + /** + * 操作人员 + */ + @ExcelProperty("user_name") + private String userName; + /** + * 完成时间 + */ + @ExcelProperty("finish_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishTime; + /** + * 计划开工时间 + */ + @ExcelProperty("plan_start_date") + @DateTimeFormat("yyyy-MM-dd") + private LocalDate planStartDate; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfNoPlan.java b/src/main/java/com/wms/utils/excel/vo/DbOfNoPlan.java new file mode 100644 index 0000000..0a65104 --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfNoPlan.java @@ -0,0 +1,86 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 非计划记录数据 + */ +@Data +public class DbOfNoPlan { + /** + * id + */ + @ExcelProperty("record_id") + private String recordId; + /** + * 领料类别:1、直接物料,2、间接物料 + */ + @ExcelProperty("call_type") + private Integer callType; + /** + * 料号 + */ + @ExcelProperty("goods_id") + private String goodsId; + /** + * 库存数量 + */ + @ExcelProperty("stock_num") + private BigDecimal stockNum; + /** + * 需要数量 + */ + @ExcelProperty("need_num") + private BigDecimal needNum; + /** + * 工单---直接物料 + */ + @ExcelProperty("work_order") + private String workOrder; + /** + * 小车号---直接物料 + */ + @ExcelProperty("small_vehicle_no") + private String smallVehicleNo; + /** + * 领料原因---直接物料 + */ + @ExcelProperty("call_reason") + private String callReason; + /** + * 轻流流水号 + */ + @ExcelProperty("flow_no") + private String flowNo; + /** + * 备注 + */ + @ExcelProperty("remark") + private String remark; + /** + * 领料时间 + */ + @ExcelProperty("call_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime callTime; + /** + * 领料人 + */ + @ExcelProperty("call_user") + private String callUser; + /** + * 已拣选数量 + */ + @ExcelProperty("picked_num") + private BigDecimal pickedNum; + /** + * 状态 + */ + @ExcelProperty("pick_status") + private Integer pickStatus; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfPickTaskRecord.java b/src/main/java/com/wms/utils/excel/vo/DbOfPickTaskRecord.java new file mode 100644 index 0000000..81e6f33 --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfPickTaskRecord.java @@ -0,0 +1,50 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 拣选任务数据缓存 + */ +@Data +public class DbOfPickTaskRecord { + /** + * 拣选任务号 + */ + @ExcelProperty("pick_task_id") + private String pickTaskId; + /** + * 载具号 + */ + @ExcelProperty("vehicle_id") + private String vehicleId; + /** + * 站台号 + */ + @ExcelProperty("stand_id") + private String standId; + /** + * 拣选任务状态 + * -1:暂时不可发送 + * 0:初始化 + * 1:已发送 + * 2:已完成 + */ + @ExcelProperty("pick_status") + private Integer pickStatus; + /** + * 最近更新时间 + */ + @ExcelProperty("last_update_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime lastUpdateTime; + /** + * 到达时间 + */ + @ExcelProperty("arrive_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime arriveTime; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfStandStackerTaskBak.java b/src/main/java/com/wms/utils/excel/vo/DbOfStandStackerTaskBak.java new file mode 100644 index 0000000..4397ba4 --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfStandStackerTaskBak.java @@ -0,0 +1,64 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class DbOfStandStackerTaskBak { + /** + * 主键 + */ + @ExcelProperty("record_id") + private String recordId; + /** + * 料箱号 + */ + @ExcelProperty("vehicle_id") + private String vehicleId; + /** + * 堆垛机号 + */ + @ExcelProperty("stacker_id") + private Integer stackerId; + /** + * 站台号 + */ + @ExcelProperty("stand_id") + private String standId; + /** + * 任务类型 + * 1:定额 + * 2:超额 + */ + @ExcelProperty("task_type") + private Integer taskType; + /** + * 上次数量类型 + * 1:去站台最少 + * 2:去站台最多 + */ + @ExcelProperty("last_qty_type") + private Integer lastQtyType; + /** + * 创建时间 + */ + @ExcelProperty("create_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + /** + * 任务状态 + * 0:初始 + * 1:完成 + */ + @ExcelProperty("task_status") + private Integer taskStatus; + /** + * 完成时间 + */ + @ExcelProperty("finish_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishTime; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfStockUpdateRecord.java b/src/main/java/com/wms/utils/excel/vo/DbOfStockUpdateRecord.java new file mode 100644 index 0000000..c3bb27c --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfStockUpdateRecord.java @@ -0,0 +1,76 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 库存更新记录数据 + */ +@Data +public class DbOfStockUpdateRecord { + /** + * 记录id + */ + @ExcelProperty("record_id") + private String recordId; + /** + * 库存id + */ + @ExcelProperty("stock_id") + private String stockId; + /** + * 料箱号 + */ + @ExcelProperty("vehicle_id") + private String vehicleId; + /** + * 料号 + */ + @ExcelProperty("goods_id") + private String goodsId; + /** + * 物料名称 + */ + @ExcelProperty("goods_name") + private String goodsName; + /** + * 更新前库位 + */ + @ExcelProperty("location_before") + private String locationBefore; + /** + * 更新后库位 + */ + @ExcelProperty("location_after") + private String locationAfter; + /** + * 更新前数量 + */ + @ExcelProperty("quantity_before") + private BigDecimal quantityBefore; + /** + * 更新后数量 + */ + @ExcelProperty("quantity_after") + private BigDecimal quantityAfter; + /** + * 更新原因 + */ + @ExcelProperty("reason") + private String reason; + /** + * 更新时间 + */ + @ExcelProperty("update_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + /** + * 更新用户 + */ + @ExcelProperty("update_user") + private String updateUser; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfTaskRecord.java b/src/main/java/com/wms/utils/excel/vo/DbOfTaskRecord.java new file mode 100644 index 0000000..bd016db --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfTaskRecord.java @@ -0,0 +1,102 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 任务记录数据缓存 + */ +@Data +public class DbOfTaskRecord { + /** + * 任务号 + */ + @ExcelProperty("task_id") + private String taskId; + /** + * 任务类型 + */ + @ExcelProperty("task_type") + private Integer taskType; + /** + * 任务状态 + */ + @ExcelProperty("task_status") + private Integer taskStatus; + /** + * 起点 + */ + @ExcelProperty("origin") + private String origin; + /** + * 终点 + */ + @ExcelProperty("destination") + private String destination; + /** + * 任务优先级 + */ + @ExcelProperty("task_priority") + private Integer taskPriority; + /** + * 任务组 + */ + @ExcelProperty("task_group") + private String taskGroup; + /** + * 载具号 + */ + @ExcelProperty("vehicle_id") + private String vehicleId; + /** + * 重量 + */ + @ExcelProperty("weight") + private BigDecimal weight; + /** + * 载具尺寸 + */ + @ExcelProperty("vehicle_size") + private Integer vehicleSize; + /** + * 创建时间 + */ + @ExcelProperty("create_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + /** + * 完成时间 + */ + @ExcelProperty("finish_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishTime; + /** + * 用户名 + */ + @ExcelProperty("user_name") + private String userName; + /** + * 物料相关的详细信息 + */ + @ExcelProperty(value = "goods_related") + private String goodsRelated; + /** + * 前置任务 + */ + @ExcelProperty("pre_task") + private String preTask; + /** + * 是否拣选 + */ + @ExcelProperty("is_picking") + private Integer isPicking; + /** + * 拣选站台 + */ + @ExcelProperty("pick_stand") + private String pickStand; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfUploadRecord.java b/src/main/java/com/wms/utils/excel/vo/DbOfUploadRecord.java new file mode 100644 index 0000000..8633a03 --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfUploadRecord.java @@ -0,0 +1,52 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class DbOfUploadRecord { + /** + * 上传id + */ + @ExcelProperty("upload_id") + private String uploadId; + /** + * 文件id + */ + @ExcelProperty("file_id") + private String fileId; + /** + * 文件哈希值 + */ + @ExcelProperty("file_hash") + private String hash; + /** + * 文件名 + */ + @ExcelProperty("file_name") + private String fileName; + /** + * 文件描述 + */ + @ExcelProperty("file_description") + private String fileDescription; + /** + * 文件类型 + */ + @ExcelProperty("file_type") + private String fileType; + /** + * 上传时间 + */ + @ExcelProperty("upload_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime uploadTime; + /** + * 上传人员 + */ + @ExcelProperty("upload_user") + private String uploadUser; +} diff --git a/src/main/java/com/wms/utils/excel/vo/DbOfWorkSummary.java b/src/main/java/com/wms/utils/excel/vo/DbOfWorkSummary.java new file mode 100644 index 0000000..fb45e73 --- /dev/null +++ b/src/main/java/com/wms/utils/excel/vo/DbOfWorkSummary.java @@ -0,0 +1,103 @@ +package com.wms.utils.excel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 工作总结数据模版 + */ +@Data +public class DbOfWorkSummary { + /** + * id + */ + @ExcelProperty("work_flow_id") + private String workFlowId; + /** + * 工作站台 + */ + @ExcelProperty("work_station") + private String workStation; + /** + * 工单 + */ + @ExcelProperty("work_order") + private String workOrder; + /** + * 工位 + */ + @ExcelProperty("work_center") + private String workCenter; + /** + * 物料编号 + */ + @ExcelProperty("goods_id") + private String goodsId; + /** + * 已拣货数量 + */ + @ExcelProperty("picked_num") + private BigDecimal pickedNum; + /** + * 需求数量 + */ + @ExcelProperty("need_num") + private BigDecimal needNum; + /** + * 缺件数量 + */ + @ExcelProperty("lack_num") + private BigDecimal lackNum; + /** + * 工作日期 + */ + @ExcelProperty("work_date") + private LocalDateTime workDate; + /** + * 工作状态 + * 0:未开始 + * 1:正在做 + * 2:已完成 + */ + @ExcelProperty("work_status") + private Integer workStatus; + /** + * 缺件状态 + * 0:不缺件 + * 1:缺件 + */ + @ExcelProperty("lack_status") + private Integer lackStatus; + /** + * 完成时间 + */ + @ExcelProperty("finish_time") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private LocalDateTime finishTime; + /** + * 操作人员 + */ + @ExcelProperty("op_user") + private String opUser; + /** + * 电子标签位 + */ + @ExcelProperty("e_location_id") + private String eLocationId; + /** + * 机器类型 + */ + @ExcelProperty("machine_type") + private Integer machineType; + /** + * 计划日期 + */ + @ExcelProperty("plan_date") + @DateTimeFormat("yyyy-MM-dd") + private LocalDate planDate; +}