1. 增加数据定期清理功能

This commit is contained in:
梁州 2025-08-28 10:02:34 +08:00
parent b80ed591c9
commit c14bab0c1d
12 changed files with 1051 additions and 4 deletions

View File

@ -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<WmsLog> lambdaQueryWrapper = new LambdaQueryWrapper<WmsLog>()
.apply("log_time <= date_add(curdate(),INTERVAL -{0} DAY)", interval);
logService.remove(lambdaQueryWrapper);
// 获取日志删除时间
LocalDateTime deleteLogTime = LocalDateTime.now().minusDays(interval);
List<WmsLog> expireLogs = logService.list(new LambdaQueryWrapper<WmsLog>()
.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<TaskRecord> expireTaskRecords = taskRecordService.list(new LambdaQueryWrapper<TaskRecord>()
.lt(TaskRecord::getCreateTime, deleteTime));
if (expireTaskRecords != null && !expireTaskRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfTaskRecord> 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<PickTaskRecord> expirePickTaskRecords = pickTaskRecordService.list(new LambdaQueryWrapper<PickTaskRecord>()
.lt(PickTaskRecord::getArriveTime, deleteTime));
if (expirePickTaskRecords != null && !expirePickTaskRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfPickTaskRecord> 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<StandStackerTaskBak> expireStandStackerTaskRecords = standStackerTaskBakService.list(new LambdaQueryWrapper<StandStackerTaskBak>()
.lt(StandStackerTaskBak::getFinishTime, deleteTime));
if (expireStandStackerTaskRecords != null && !expireStandStackerTaskRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfStandStackerTaskBak> 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<WorkSummary> expireWorkSummaryRecords = workSummaryService.list(new LambdaQueryWrapper<WorkSummary>()
.lt(WorkSummary::getFinishTime, deleteImportantTime));
if (expireWorkSummaryRecords != null && !expireWorkSummaryRecords.isEmpty()) {
List<String> needRemoveSummaryIds = new ArrayList<>();
List<DbOfWorkSummary> 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<InventoryHistory> expireInventoryRecords = inventoryHistoryService.list(new LambdaQueryWrapper<InventoryHistory>()
.lt(InventoryHistory::getInventoryDate, deleteImportantTime));
if (expireInventoryRecords != null && !expireInventoryRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfInventoryHistory> 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<NoPlanRecord> expireNoPlanRecords = noPlanRecordService.list(new LambdaQueryWrapper<NoPlanRecord>()
.lt(NoPlanRecord::getCallTime, deleteImportantTime));
if (expireNoPlanRecords != null && !expireNoPlanRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfNoPlan> 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<StockUpdateRecord> expireStockUpdateRecords = iStockUpdateRecordService.list(new LambdaQueryWrapper<StockUpdateRecord>()
.lt(StockUpdateRecord::getUpdateTime, deleteImportantTime));
if (expireStockUpdateRecords != null && !expireStockUpdateRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfStockUpdateRecord> 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<UploadRecord> expireUploadFileRecords = uploadRecordService.list(new LambdaQueryWrapper<UploadRecord>()
.lt(UploadRecord::getUploadTime, deleteImportantTime));
if (expireUploadFileRecords != null && !expireUploadFileRecords.isEmpty()) {
List<String> needRemoveIds = new ArrayList<>();
List<DbOfUploadRecord> 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<KateOrders> finishedWorkOrders = kateOrdersService.list(new LambdaQueryWrapper<KateOrders>()
.eq(KateOrders::getOrderStatus, 4));
if (finishedWorkOrders != null && !finishedWorkOrders.isEmpty()) {
List<String> needRemoveOrderIds = new ArrayList<>();
List<DbOfKateOrders> 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<KateDBS> finishedDBS = kateDBSService.list(new LambdaQueryWrapper<KateDBS>()
.eq(KateDBS::getDbsStatus, 2));
if (finishedDBS != null && !finishedDBS.isEmpty()) {
List<String> needRemoveDbsIds = new ArrayList<>();
List<DbOfDbs> 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 <T> 泛型
* @throws IOException 异常
*/
public <T> void doWriteExcel(String fileDesc, String filePath, String sheetName, List<T> list, Class<T> 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 异常

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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