diff --git a/dev_wms_client/src/api/excel.js b/dev_wms_client/src/api/excel.js index e8d53f8..0bb8843 100644 --- a/dev_wms_client/src/api/excel.js +++ b/dev_wms_client/src/api/excel.js @@ -1,14 +1,5 @@ import request from "@/http/request"; - -export const uploadExcelStock = (data) => { - return request({ - url: '/excel/uploadStocks', - method: 'post', - data: data, - timeout: 600000 - }) -} - +// 上传物料基础信息 export const uploadExcelBaseGoods = (data) => { return request({ url: '/excel/importBaseGoods', @@ -17,7 +8,7 @@ export const uploadExcelBaseGoods = (data) => { timeout: 600000 }) } - +// 上传看板 export const uploadExcelKanban = (data) => { return request({ url: '/excel/importKanban', @@ -26,7 +17,7 @@ export const uploadExcelKanban = (data) => { timeout: 600000 }) } - +// 上传dbs export const uploadExcelDbs = (data) => { return request({ url: '/excel/importDbs', @@ -35,7 +26,7 @@ export const uploadExcelDbs = (data) => { timeout: 600000 }) } - +// 上传非服务件配料单 export const uploadExcelProduct = (data) => { return request({ url: '/excel/importProduct', @@ -44,7 +35,7 @@ export const uploadExcelProduct = (data) => { timeout: 600000 }) } - +// 上传服务件配料单 export const uploadExcelSingleProduct = (data) => { return request({ url: '/excel/importServiceProduct', @@ -53,7 +44,7 @@ export const uploadExcelSingleProduct = (data) => { timeout: 600000 }) } - +// 上传配对关系 export const uploadExcelProductExtend = (data) => { return request({ url: '/excel/importProductExtend', @@ -62,7 +53,7 @@ export const uploadExcelProductExtend = (data) => { timeout: 600000 }) } - +// 导出dbs export const exportDbsWithExcel = (data) => { return request({ url: '/excel/exportDbsWithExcel', @@ -72,7 +63,7 @@ export const exportDbsWithExcel = (data) => { timeout: 600000 }) } - +// 导出配料单 export const exportKittingBomWithExcel = (data) => { return request({ url: '/excel/exportKittingBomWithExcel', @@ -82,7 +73,7 @@ export const exportKittingBomWithExcel = (data) => { timeout: 600000 }) } - +// 导出配对关系 export const exportKittingBomRelationWithExcel = (data) => { return request({ url: '/excel/exportKittingBomRelationWithExcel', @@ -92,7 +83,7 @@ export const exportKittingBomRelationWithExcel = (data) => { timeout: 600000 }) } - +// 导出库存 export const exportStockExcel = (data) => { return request({ url: '/excel/exportStockExcel', @@ -102,7 +93,17 @@ export const exportStockExcel = (data) => { timeout: 600000 }) } - +// 导出库存更新记录 +export const exportStockUpdateExcel = (data) => { + return request({ + url: '/excel/exportStockUpdateExcel', + method: 'post', + responseType: 'blob', + data: data, + timeout: 600000 + }) +} +// 导出工作详情 export const exportWorkSummaryExcel = (data) => { return request({ url: '/excel/exportWorkSummaryExcel', @@ -112,7 +113,7 @@ export const exportWorkSummaryExcel = (data) => { timeout: 600000 }) } - +// 导出看板需求 export const exportKanbanExcel = (data) => { return request({ url: '/excel/exportKanbanExcel', diff --git a/dev_wms_client/src/api/stock.js b/dev_wms_client/src/api/stock.js index 770397a..46a4b08 100644 --- a/dev_wms_client/src/api/stock.js +++ b/dev_wms_client/src/api/stock.js @@ -1,6 +1,6 @@ import request from "@/http/request"; -const queryStocksByPage = (params) => { +export const queryStocksByPage = (params) => { return request({ url: '/stock/queryStocksByPage', method: 'post', @@ -8,42 +8,10 @@ const queryStocksByPage = (params) => { }) } -const updateStockInfo = (params) => { +export const queryStockUpdateByPage = (params) => { return request({ - url: '/stock/updateStockInfo', + url: '/stock/queryStockUpdateByPage', method: 'post', data: params }) -} - -const getStockNumByGoodsId = (params) => { - return request({ - url: '/stock/getStockNumByGoodsId', - method: 'post', - data: params - }) -} - -const getStockUpdateRecord = (params) => { - return request({ - url: '/stock/getStockUpdateRecord', - method: 'post', - data: params - }) -} - -const handleExceptionStock = (params) => { - return request({ - url: '/stock/handleExceptionStock', - method: 'post', - data: params - }) -} - -export { - queryStocksByPage, - updateStockInfo, - getStockNumByGoodsId, - getStockUpdateRecord, - handleExceptionStock } \ No newline at end of file diff --git a/dev_wms_client/src/api/taskMonitor.js b/dev_wms_client/src/api/taskMonitor.js deleted file mode 100644 index 91d8257..0000000 --- a/dev_wms_client/src/api/taskMonitor.js +++ /dev/null @@ -1,22 +0,0 @@ -import request from "@/http/request"; - -const getPickTasksByPage = (params) => { - return request({ - url: '/taskMonitor/getPickTasksByPage', - method: 'post', - data: params - }) -} - -const updatePickTaskInfo = (params) => { - return request({ - url: '/taskMonitor/updatePickTaskInfo', - method: 'post', - data: params - }) -} - -export { - getPickTasksByPage, - updatePickTaskInfo -} \ No newline at end of file diff --git a/dev_wms_client/src/api/taskOperation.js b/dev_wms_client/src/api/taskOperation.js new file mode 100644 index 0000000..7b38c0a --- /dev/null +++ b/dev_wms_client/src/api/taskOperation.js @@ -0,0 +1 @@ +import request from "@/http/request"; diff --git a/dev_wms_client/src/api/taskQuery.js b/dev_wms_client/src/api/taskQuery.js new file mode 100644 index 0000000..2d11404 --- /dev/null +++ b/dev_wms_client/src/api/taskQuery.js @@ -0,0 +1,10 @@ +import request from "@/http/request"; + +// 分页查询任务列表 +export const queryTasksByPage = (params) => { + return request({ + url: '/taskQuery/queryTasksByPage', + method: 'post', + data: params + }) +} \ No newline at end of file diff --git a/dev_wms_client/src/components/appTag.vue b/dev_wms_client/src/components/appTag.vue index 6ed2aa1..42f4bf6 100644 --- a/dev_wms_client/src/components/appTag.vue +++ b/dev_wms_client/src/components/appTag.vue @@ -1,66 +1,89 @@ -// AppTag组件 - - \ No newline at end of file diff --git a/dev_wms_client/src/layout/workFlow.vue b/dev_wms_client/src/layout/workFlow.vue deleted file mode 100644 index b31aac1..0000000 --- a/dev_wms_client/src/layout/workFlow.vue +++ /dev/null @@ -1,461 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/dev_wms_client/src/layout/workSummary.vue b/dev_wms_client/src/layout/workSummary.vue index 9a78184..5ab523c 100644 --- a/dev_wms_client/src/layout/workSummary.vue +++ b/dev_wms_client/src/layout/workSummary.vue @@ -12,10 +12,10 @@ :options="summaryTypeOptions" @change="search()"> - + - + import('@/layout/stock.vue')},// 库存 { path: '/goodsIn', component: () => import('@/layout/goodsIn.vue') },// 入库 @@ -25,7 +25,6 @@ const routes = [ { path: '/inventory', component: () => import('@/layout/inventory.vue') },// 盘点 { path: '/inventoryRecord', component: () => import('@/layout/inventoryRecord.vue') },// 盘点记录 { path: '/wmsLog', component: () => import('@/layout/wmsLog.vue') },// 日志 - { path: '/workFlow', component: () => import('@/layout/workFlow.vue') },// 工作流 { path: '/workSummary', component: () => import('@/layout/workSummary.vue') },// 工作总结 { path: '/pickTask', component: () => import('@/layout/pickTaskMonitor.vue') },// 拣选任务 { path: '/clcKanban', component: () => import('@/layout/clcKanban.vue') },// 需求看板 diff --git a/dev_wms_client/src/store/index.js b/dev_wms_client/src/store/index.js index 2317618..9d70856 100644 --- a/dev_wms_client/src/store/index.js +++ b/dev_wms_client/src/store/index.js @@ -2,11 +2,7 @@ import { createStore } from 'vuex' export default createStore({ state: { - stateTagsList: [{ - id: '99', - labelName: '库存', - path: '/stock' - }], + stateTagsList: [], user: {}, menuList: [], token: '', @@ -20,6 +16,9 @@ export default createStore({ }, }, getters: { + getStateTagsList(state) { + return state.stateTagsList + }, getUser(state) { return state.user }, diff --git a/dev_wms_client/src/utils/formatter.js b/dev_wms_client/src/utils/formatter.js index 2b5baff..1fb1c3c 100644 --- a/dev_wms_client/src/utils/formatter.js +++ b/dev_wms_client/src/utils/formatter.js @@ -1,20 +1,20 @@ import moment from "moment"; import { revertSeconds } from '@/utils/dateUtils' - +// 时间格式化 export const timeFormatter = (date) => { if (date === null || date === undefined) { return '' } return moment(date).format('yyyy-MM-DD HH:mm:ss'); } - +// 日期格式化 export const dateFormatter = (date) => { if (date === null || date === undefined) { return '' } return moment(date).format('yyyy-MM-DD'); } - +// 运行时长格式化 export const dueFormatter = (date) => { if (date === null || date === undefined) { return '' @@ -22,33 +22,6 @@ export const dueFormatter = (date) => { return revertSeconds(moment(new Date().getTime()).diff(moment(date), 'seconds')); } -export const taskStatusFormatter = (value) => { - switch (value) { - case -2: - return '重复入库' - case -1: - return '暂存任务' - case 0: - return '任务新建,待下发' - case 1: - return '任务已下发' - case 2: - return '任务开始执行' - case 8: - return '拣选中' - case 9: - return '盘点中' - case 100: - return '任务完成' - case 998: - return '任务取消' - case 999: - return '任务异常' - default: - return '其他状态' - } -} - // 库位格式化 export const locationFormatter = (locationId) => { if (locationId === null || locationId == undefined) { @@ -63,63 +36,7 @@ export const locationFormatter = (locationId) => { return '' } } - -export const kateTaskStatusFormatter = (value) => { - switch (value) { - case 0: - return '待下发' - case 1: - return '已下发' - case 2: - return '执行中' - case 3: - return '正在拣货' - case 5: - return '任务完成' - default: - return '异常状态' - } -} - -export const pickingStatusFormatter = (value) => { - switch (value) { - case 0: - return '待拣货' - case 1: - return '正在拣货' - case 2: - return '拣货完成' - default: - return '未拣货' - } -} - -export const vehicleStatusFormatter = (value) => { - switch (value) { - case 1: - return '入库中' - case 2: - return '在库中' - case 3: - return '出库中' - case 4: - return '移库中' - default: - return '异常状态' - } -} - -export const locationStatusFormatter = (value) => { - switch (value) { - case 0: - return '空闲' - case 1: - return '占用' - default: - return '异常状态' - } -} - +// 配置类型格式化 export const configTypeFormatter = (value) => { switch (value) { case '1': @@ -132,7 +49,7 @@ export const configTypeFormatter = (value) => { return '任务类型异常' } } - +// 文件大小格式化 export const sizeFormatter = (value) => { if (typeof value != 'number') { return 'error' @@ -166,7 +83,7 @@ export const sizeFormatter = (value) => { return (value / oneYB).toFixed(2) + 'YB' } } - +// json格式化 export const jsonFormatter = (value) => { if (value == null) { return "" @@ -181,15 +98,51 @@ export const jsonFormatter = (value) => { return JSON.stringify(value, null, 4) } } - +// 去除英文和数字之外的字符 export const replaceEnglishAndNumberIGAI = (value) => { return value.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, '') } - +// 是否格式化 export const yesOrNoFormatter = (value) => { return value == 1 ? '是' : '否' } - +// 反转是否格式化 export const converseYesOrNoFormatter = (value) => { return value == 0 ? '是' : '否' +} +// 任务类型格式化 +export const wmsTaskTypeFormatter = (value) => { + switch (value) { + case 1: + return '入库' + case 2: + return '出库' + case 3: + return '盘点' + default: + return '未知类型' + } +} +// wms任务状态格式化 +export const wmsTaskStatusFormatter = (value) => { + switch (value) { + case -1: + return '暂存' + case 0: + return '初始化' + case 1: + return '已解析' + case 2: + return '已下发' + case 3: + return '正在执行' + case 4: + return '执行完成' + case 98: + return '已取消' + case 99: + return '执行异常' + default: + return '未知状态' + } } \ No newline at end of file diff --git a/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsPickTaskStatusEnum.java b/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsPickTaskStatusEnum.java index 44e6e26..c925abe 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsPickTaskStatusEnum.java +++ b/dev_wms_serve/src/main/java/com/wms_main/constant/enums/wms/WmsPickTaskStatusEnum.java @@ -10,10 +10,10 @@ import lombok.Getter; @AllArgsConstructor public enum WmsPickTaskStatusEnum { FOR_IN(-2, "入库用"), - TEMP(-1, "暂存"), + TEMP(-1, "暂存中"), WAIT(0, "待下发"), SEND(1, "已下发"), - RUN(2, "正在执行"), + RUN(2, "执行中"), ARRIVE(3, "已到达"), LEAVE(4, "已离开"), CANCEL(5, "已取消"); diff --git a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/ExcelController.java b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/ExcelController.java index 22fbe7b..7eb418e 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/ExcelController.java +++ b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/ExcelController.java @@ -138,6 +138,15 @@ public class ExcelController { exportExcelEasyPoi.doExportStocks(stockQuery, response); } + /** + * 导出库存更新记录 + * @param stockUpdateQuery 请求 + */ + @PostMapping("/exportStockUpdateExcel") + public void exportStockUpdateExcel(@RequestBody StockUpdateQuery stockUpdateQuery, HttpServletResponse response) throws IOException { + exportExcelEasyPoi.doExportStockUpdate(stockUpdateQuery, response); + } + /** * 导出工作详情信息 * @param workSummaryQuery 请求 diff --git a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/StockController.java b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/StockController.java index 3442b9b..0e879ea 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/StockController.java +++ b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/StockController.java @@ -1,8 +1,10 @@ package com.wms_main.controller.wms; import com.wms_main.model.dto.query.StockQuery; +import com.wms_main.model.dto.query.StockUpdateQuery; import com.wms_main.model.dto.response.wms.WmsApiResponse; import com.wms_main.model.vo.wms.PageVo; +import com.wms_main.model.vo.wms.StockUpdateVo; import com.wms_main.model.vo.wms.StockVo; import com.wms_main.service.controller.IStockControllerService; import lombok.RequiredArgsConstructor; @@ -32,4 +34,15 @@ public class StockController { { return stockControllerService.queryStocksByPage(stockQuery); } + + /** + * 分页查询库存更新记录 + * @param stockUpdateQuery 查询参数 + * @return 查询结果 + */ + @PostMapping("/queryStockUpdateByPage") + public WmsApiResponse> queryStockUpdateByPage(@RequestBody StockUpdateQuery stockUpdateQuery) + { + return stockControllerService.queryStockUpdateByPage(stockUpdateQuery); + } } diff --git a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/TaskQueryController.java b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/TaskQueryController.java new file mode 100644 index 0000000..e7a1013 --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/TaskQueryController.java @@ -0,0 +1,33 @@ +package com.wms_main.controller.wms; + +import com.wms_main.model.dto.query.WmsTaskQuery; +import com.wms_main.model.dto.response.wms.WmsApiResponse; +import com.wms_main.model.vo.wms.PageVo; +import com.wms_main.model.vo.wms.TaskVo; +import com.wms_main.service.controller.ITaskQueryControllerService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * 任务记录控制类 + * 包括拣选任务 + */ +@RestController +@ResponseBody +@CrossOrigin +@RequiredArgsConstructor +@RequestMapping("/wms/taskQuery") +public class TaskQueryController { + private final ITaskQueryControllerService taskQueryControllerService;// 任务查询控制类 服务 + + /** + * Wms任务分页查询 + * @param wmsTaskQuery 查询参数 + * @return 查询结果 + */ + @PostMapping("/queryTasksByPage") + public WmsApiResponse> queryTasksByPage(@RequestBody WmsTaskQuery wmsTaskQuery) + { + return taskQueryControllerService.queryTasksByPage(wmsTaskQuery); + } +} diff --git a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/TaskRecordController.java b/dev_wms_serve/src/main/java/com/wms_main/controller/wms/TaskRecordController.java deleted file mode 100644 index bddeab7..0000000 --- a/dev_wms_serve/src/main/java/com/wms_main/controller/wms/TaskRecordController.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.wms_main.controller.wms; - -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * 任务记录控制类 - * 包括拣选任务 - */ -@RestController -@ResponseBody -@CrossOrigin -@RequiredArgsConstructor -@RequestMapping("/wms/taskRecord") -public class TaskRecordController { -} diff --git a/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/excelTemplate/StockUpdateExcelTemplate.java b/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/excelTemplate/StockUpdateExcelTemplate.java new file mode 100644 index 0000000..354642b --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/excelTemplate/StockUpdateExcelTemplate.java @@ -0,0 +1,62 @@ +package com.wms_main.excel.easypoi.excelTemplate; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * 库存模版 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class StockUpdateExcelTemplate { + /** + * 库存更新记录id + */ + @Excel(name = "记录id") + private String updateId; + /** + * 载具号 + */ + @Excel(name = "载具号") + private String vehicleId; + /** + * 料号 + */ + @Excel(name = "料号") + private String goodsId; + /** + * 初次入库时间 + */ + @Excel(name = "初次入库时间", format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime firstInTime; + /** + * 原数量 + */ + @Excel(name = "原数量") + private Integer beforeNum; + /** + * 新数量 + */ + @Excel(name = "新数量") + private Integer afterNum; + /** + * 更新原因 + */ + @Excel(name = "更新原因") + private String reason; + /** + * 更新时间 + */ + @Excel(name = "更新时间", format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + /** + * 更新用户 + */ + @Excel(name = "更新用户") + private String updateUser; +} diff --git a/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/IBaseExportExcelEasyPoi.java b/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/IBaseExportExcelEasyPoi.java index e7df420..e23ffa9 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/IBaseExportExcelEasyPoi.java +++ b/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/IBaseExportExcelEasyPoi.java @@ -1,6 +1,7 @@ package com.wms_main.excel.easypoi.service.base; import com.wms_main.model.dto.query.StockQuery; +import com.wms_main.model.dto.query.StockUpdateQuery; import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.RequestBody; @@ -15,4 +16,10 @@ public interface IBaseExportExcelEasyPoi { * @param stockQuery 查询条件 */ void doExportStocks(@RequestBody StockQuery stockQuery, HttpServletResponse response) throws IOException; + + /** + * 导出库存更新记录 + * @param stockUpdateQuery 查询条件 + */ + void doExportStockUpdate(@RequestBody StockUpdateQuery stockUpdateQuery, HttpServletResponse response) throws IOException; } diff --git a/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/impl/BaseExportExcelEasyPoi.java b/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/impl/BaseExportExcelEasyPoi.java index ccc74c3..d8fb918 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/impl/BaseExportExcelEasyPoi.java +++ b/dev_wms_serve/src/main/java/com/wms_main/excel/easypoi/service/base/impl/BaseExportExcelEasyPoi.java @@ -5,10 +5,14 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wms_main.dao.ITAppStockService; +import com.wms_main.dao.ITAppStockUpdateService; import com.wms_main.excel.easypoi.excelTemplate.StockExcelTemplate; +import com.wms_main.excel.easypoi.excelTemplate.StockUpdateExcelTemplate; import com.wms_main.excel.easypoi.service.base.IBaseExportExcelEasyPoi; import com.wms_main.model.dto.query.StockQuery; +import com.wms_main.model.dto.query.StockUpdateQuery; import com.wms_main.model.po.TAppStock; +import com.wms_main.model.po.TAppStockUpdate; import com.wms_main.repository.utils.StringUtils; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -28,6 +32,8 @@ import java.util.List; public class BaseExportExcelEasyPoi implements IBaseExportExcelEasyPoi { @Autowired protected ITAppStockService appStockService;// 库存服务 + @Autowired + protected ITAppStockUpdateService appStockUpdateService;// 库存更新服务 public BaseExportExcelEasyPoi() { @@ -42,7 +48,7 @@ public class BaseExportExcelEasyPoi implements IBaseExportExcelEasyPoi { @Override public void doExportStocks(StockQuery stockQuery, HttpServletResponse response) throws IOException { if (stockQuery == null) { - throw new IOException("参数不能为空"); + throw new IOException("参数不能为NULL"); } // 库存查询参数 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() @@ -88,6 +94,44 @@ public class BaseExportExcelEasyPoi implements IBaseExportExcelEasyPoi { doWriteExcel("库存", response, resultList, StockExcelTemplate.class); } + /** + * 导出库存更新记录 + * @param stockUpdateQuery 查询条件 + * @param response 响应 + * @throws IOException 异常 + */ + @Override + public void doExportStockUpdate(StockUpdateQuery stockUpdateQuery, HttpServletResponse response) throws IOException { + if (stockUpdateQuery == null) { + throw new IOException("查询参数不能为NULL"); + } + // 库存更新记录查询参数 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() + .like(StringUtils.isNotEmpty(stockUpdateQuery.getGoodsId()), TAppStockUpdate::getGoodsId, stockUpdateQuery.getGoodsId()) + .like(StringUtils.isNotEmpty(stockUpdateQuery.getVehicleId()), TAppStockUpdate::getVehicleId, stockUpdateQuery.getVehicleId()); + List stockUpdateList = appStockUpdateService.list(lambdaQueryWrapper); + // excel模版列表 + List resultList = new ArrayList<>(); + if (!stockUpdateList.isEmpty()) { + for (TAppStockUpdate poData : stockUpdateList) { + resultList.add(new StockUpdateExcelTemplate( + poData.getUpdateId(), + poData.getVehicleId(), + poData.getGoodsId(), + poData.getFirstInTime(), + poData.getBeforeNum(), + poData.getAfterNum(), + poData.getReason(), + poData.getUpdateTime(), + poData.getUpdateUser() + )); + } + } else { + resultList.add(new StockUpdateExcelTemplate()); + } + doWriteExcel("库存更新记录", response, resultList, StockUpdateExcelTemplate.class); + } + /** * 写入excel * @param fileDesc 文件描述 diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/StockUpdateQuery.java b/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/StockUpdateQuery.java index 13a6207..88261ce 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/StockUpdateQuery.java +++ b/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/StockUpdateQuery.java @@ -1,4 +1,27 @@ package com.wms_main.model.dto.query; -public class StockUpdateQuery { +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 库存更新查询 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StockUpdateQuery extends PageQuery { + /** + * 料号 + */ + @JsonProperty("goodsId") + private String goodsId; + /** + * 箱号 + */ + @JsonProperty("vehicleId") + private String vehicleId; } diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/WmsTaskQuery.java b/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/WmsTaskQuery.java new file mode 100644 index 0000000..a4454e9 --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/model/dto/query/WmsTaskQuery.java @@ -0,0 +1,42 @@ +package com.wms_main.model.dto.query; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * wms任务查询 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class WmsTaskQuery extends PageQuery { + /** + * 任务id + */ + @JsonProperty("taskId") + private String taskId; + /** + * 载具号 + */ + @JsonProperty("vehicleId") + private String vehicleId; + /** + * 料号 + */ + @JsonProperty("goodsId") + private String goodsId; + /** + * 任务类型 + */ + @JsonProperty("taskType") + private Integer taskType; + /** + * 任务状态 + */ + @JsonProperty("taskStatus") + private Integer taskStatus; +} diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/StockUpdateVo.java b/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/StockUpdateVo.java index 4fd2b76..e693649 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/StockUpdateVo.java +++ b/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/StockUpdateVo.java @@ -1,11 +1,12 @@ package com.wms_main.model.vo.wms; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; +import com.wms_main.model.po.TAppStockUpdate; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; @@ -35,6 +36,8 @@ public class StockUpdateVo { * 首次入库时间 */ @JsonProperty("firstInTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime firstInTime; /** * 原数量 @@ -55,10 +58,34 @@ public class StockUpdateVo { * 更新时间 */ @JsonProperty("updateTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** * 更新用户 */ @JsonProperty("updateUser") private String updateUser; + + /** + * Po转Vo + * @param po po + * @return vo + */ + public static StockUpdateVo of(TAppStockUpdate po) { + if (po == null) { + return new StockUpdateVo(); + } + return new StockUpdateVo( + po.getUpdateId(), + po.getVehicleId(), + po.getGoodsId(), + po.getFirstInTime(), + po.getBeforeNum(), + po.getAfterNum(), + po.getReason(), + po.getUpdateTime(), + po.getUpdateUser() + ); + } } diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/TaskVo.java b/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/TaskVo.java index 7e74bbc..4ac0204 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/TaskVo.java +++ b/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/TaskVo.java @@ -2,6 +2,7 @@ package com.wms_main.model.vo.wms; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; +import com.wms_main.model.po.TAppTask; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -105,4 +106,34 @@ public class TaskVo { */ @JsonProperty("goodsDesc") private String goodsDesc; + + /** + * 将po转换为vo + * @param po po + * @return vo + */ + public static TaskVo of(TAppTask po) { + if (po == null) { + return new TaskVo(); + } + return new TaskVo( + po.getTaskId(), + po.getTaskType(), + po.getTaskStatus(), + po.getTaskPriority(), + po.getVehicleId(), + po.getOrigin(), + po.getDestination(), + po.getWcsTaskId(), + po.getCreateTime(), + po.getFinishTime(), + po.getGoodsId(), + po.getOpNum(), + po.getStockNum(), + po.getOpUser(), + po.getRemark(), + po.getCallStand(), + po.getGoodsDesc() + ); + } } diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/IStockControllerService.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/IStockControllerService.java index f860b9f..5d6233a 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/service/controller/IStockControllerService.java +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/IStockControllerService.java @@ -1,8 +1,10 @@ package com.wms_main.service.controller; import com.wms_main.model.dto.query.StockQuery; +import com.wms_main.model.dto.query.StockUpdateQuery; import com.wms_main.model.dto.response.wms.WmsApiResponse; import com.wms_main.model.vo.wms.PageVo; +import com.wms_main.model.vo.wms.StockUpdateVo; import com.wms_main.model.vo.wms.StockVo; /** @@ -15,4 +17,11 @@ public interface IStockControllerService { * @return 查询结果---分页 */ WmsApiResponse> queryStocksByPage(StockQuery stockQuery); + + /** + * 查询库存更新记录---分页 + * @param stockUpdateQuery 查询参数 + * @return 查询结果---分页 + */ + WmsApiResponse> queryStockUpdateByPage(StockUpdateQuery stockUpdateQuery); } diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/ITaskOperationControllerService.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/ITaskOperationControllerService.java new file mode 100644 index 0000000..540cb61 --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/ITaskOperationControllerService.java @@ -0,0 +1,8 @@ +package com.wms_main.service.controller; + +/** + * 任务操作控制类 服务接口 + */ +public interface ITaskOperationControllerService { + +} diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/ITaskQueryControllerService.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/ITaskQueryControllerService.java new file mode 100644 index 0000000..5539746 --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/ITaskQueryControllerService.java @@ -0,0 +1,18 @@ +package com.wms_main.service.controller; + +import com.wms_main.model.dto.query.WmsTaskQuery; +import com.wms_main.model.dto.response.wms.WmsApiResponse; +import com.wms_main.model.vo.wms.PageVo; +import com.wms_main.model.vo.wms.TaskVo; + +/** + * 任务查询控制类 服务接口 + */ +public interface ITaskQueryControllerService { + /** + * 查询任务信息---分页 + * @param wmsTaskQuery 查询参数 + * @return 查询结果---分页 + */ + WmsApiResponse> queryTasksByPage(WmsTaskQuery wmsTaskQuery); +} diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/KateWorkControllerServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/KateWorkControllerServiceImpl.java index 7527036..41246c6 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/KateWorkControllerServiceImpl.java +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/KateWorkControllerServiceImpl.java @@ -647,6 +647,11 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService return WmsApiResponse.success("查询看板数据成功", pageVo); } + /** + * 生成需求看板 + * @param genRequest 请求参数 + * @return 生成结果 + */ @Override @Transactional(rollbackFor = Exception.class) public BaseWmsApiResponse genClcKanbanRequirement(GenKanbanRequirementRequest genRequest) { @@ -723,7 +728,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService // 获取筛选过的需要的物料的库存信息 List stockList = appStockService.list(new LambdaQueryWrapper() .in(TAppStock::getGoodsId, filterGoodsMap.keySet()) - .gt(TAppStock::getRealNum, 0)); + .gt(TAppStock::getRemainNum, 0)); // 生成物料数量map Map stockByGoodsMap = new HashMap<>(); for (TAppStock stock : stockList) { @@ -740,17 +745,15 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService List updateKanbanList = new ArrayList<>(); for (String goodsId : filterGoodsMap.keySet()) { TAppGoods thisGoods = filterGoodsMap.get(goodsId); - // 计算补货临界点 - int canFeedingNum = (thisGoods.getMaxBoxNum() - 1) * thisGoods.getBoxQty(); // 需求数量 int needNum = totalGoodsRequireMap.get(goodsId); // 库存数量 int stockNum = stockByGoodsMap.getOrDefault(goodsId, 0); - if (needNum > 0 && needNum > stockNum && stockNum <= canFeedingNum) { + if (needNum > 0 && needNum > stockNum) { // 剩余可补物料数量 - int remainKanbanGoodsNum = (thisGoods.getMaxBoxNum() * thisGoods.getBoxQty()) - stockNum; + int remainKanbanGoodsNum = needNum - stockNum; // 剩余可补看板个数 - int remainKanbanQty = Math.floorDiv(remainKanbanGoodsNum, thisGoods.getBoxQty()); + int remainKanbanQty = Math.ceilDiv(remainKanbanGoodsNum, thisGoods.getBoxQty()); // 可以补看板 List thisGoodsKanbanList = kanbanList.stream() .filter(kanban -> kanban.getGoodsId().equals(goodsId)).toList(); diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/StockControllerServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/StockControllerServiceImpl.java index dbc3114..d7d9a37 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/StockControllerServiceImpl.java +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/StockControllerServiceImpl.java @@ -3,10 +3,14 @@ package com.wms_main.service.controller.serviceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.wms_main.dao.ITAppStockService; +import com.wms_main.dao.ITAppStockUpdateService; import com.wms_main.model.dto.query.StockQuery; +import com.wms_main.model.dto.query.StockUpdateQuery; import com.wms_main.model.dto.response.wms.WmsApiResponse; import com.wms_main.model.po.TAppStock; +import com.wms_main.model.po.TAppStockUpdate; import com.wms_main.model.vo.wms.PageVo; +import com.wms_main.model.vo.wms.StockUpdateVo; import com.wms_main.model.vo.wms.StockVo; import com.wms_main.repository.utils.StringUtils; import com.wms_main.service.controller.IStockControllerService; @@ -20,6 +24,7 @@ import org.springframework.stereotype.Service; @RequiredArgsConstructor public class StockControllerServiceImpl implements IStockControllerService { private final ITAppStockService appStockService;// 库存服务 + private final ITAppStockUpdateService appStockUpdateService;// 库存更新服务 /** * 查询库存---分页实现 @@ -29,6 +34,9 @@ public class StockControllerServiceImpl implements IStockControllerService { */ @Override public WmsApiResponse> queryStocksByPage(StockQuery stockQuery) { + if (stockQuery == null) { + return WmsApiResponse.error("查询参数不能为NULL", null); + } Page page = stockQuery.toMpPage(); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() .like(StringUtils.isNotEmpty(stockQuery.getVehicleId()), TAppStock::getVehicleId, stockQuery.getVehicleId()) @@ -48,4 +56,24 @@ public class StockControllerServiceImpl implements IStockControllerService { PageVo pageVo = PageVo.of(stockPage, StockVo::ofPo); return WmsApiResponse.success("查询库存数据成功", pageVo); } + + /** + * 查询库存更新记录(分页)---实现 + * @param stockUpdateQuery 查询参数 + * @return 查询结果 + */ + @Override + public WmsApiResponse> queryStockUpdateByPage(StockUpdateQuery stockUpdateQuery) { + if (stockUpdateQuery == null) { + return WmsApiResponse.error("查询参数不能为NULL", null); + } + Page page = stockUpdateQuery.toMpPage(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() + .like(StringUtils.isNotEmpty(stockUpdateQuery.getGoodsId()), TAppStockUpdate::getGoodsId, stockUpdateQuery.getGoodsId()) + .like(StringUtils.isNotEmpty(stockUpdateQuery.getVehicleId()), TAppStockUpdate::getVehicleId, stockUpdateQuery.getVehicleId()); + Page stockUpdatePage = appStockUpdateService.page(page, lambdaQueryWrapper); + + PageVo pageVo = PageVo.of(stockUpdatePage, StockUpdateVo::of); + return WmsApiResponse.success("查询库存更新记录成功", pageVo); + } } diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskOperationControllerServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskOperationControllerServiceImpl.java new file mode 100644 index 0000000..cbf30c5 --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskOperationControllerServiceImpl.java @@ -0,0 +1,14 @@ +package com.wms_main.service.controller.serviceImpl; + +import com.wms_main.service.controller.ITaskOperationControllerService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 任务操作控制类 服务实现 + */ +@Service +@RequiredArgsConstructor +public class TaskOperationControllerServiceImpl implements ITaskOperationControllerService { + +} diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskQueryControllerServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskQueryControllerServiceImpl.java new file mode 100644 index 0000000..48193f6 --- /dev/null +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskQueryControllerServiceImpl.java @@ -0,0 +1,46 @@ +package com.wms_main.service.controller.serviceImpl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wms_main.dao.ITAppTaskService; +import com.wms_main.model.dto.query.WmsTaskQuery; +import com.wms_main.model.dto.response.wms.WmsApiResponse; +import com.wms_main.model.po.TAppTask; +import com.wms_main.model.vo.wms.PageVo; +import com.wms_main.model.vo.wms.TaskVo; +import com.wms_main.repository.utils.StringUtils; +import com.wms_main.service.controller.ITaskQueryControllerService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 任务查询控制类 服务实现 + */ +@Service +@RequiredArgsConstructor +public class TaskQueryControllerServiceImpl implements ITaskQueryControllerService { + private final ITAppTaskService appTaskService;// 任务服务 + + /** + * 查询wms任务监控---分页 + * @param wmsTaskQuery 查询参数 + * @return 查询结果 + */ + @Override + public WmsApiResponse> queryTasksByPage(WmsTaskQuery wmsTaskQuery) { + if (wmsTaskQuery == null) { + return WmsApiResponse.error("查询参数不能为NULL", null); + } + Page page = wmsTaskQuery.toMpPage(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() + .like(StringUtils.isNotEmpty(wmsTaskQuery.getTaskId()), TAppTask::getTaskId, wmsTaskQuery.getTaskId()) + .like(StringUtils.isNotEmpty(wmsTaskQuery.getGoodsId()), TAppTask::getGoodsId, wmsTaskQuery.getGoodsId()) + .like(StringUtils.isNotEmpty(wmsTaskQuery.getVehicleId()), TAppTask::getVehicleId, wmsTaskQuery.getVehicleId()) + .eq(wmsTaskQuery.getTaskType() != null, TAppTask::getTaskType, wmsTaskQuery.getTaskType()) + .eq(wmsTaskQuery.getTaskStatus() != null, TAppTask::getTaskStatus, wmsTaskQuery.getTaskStatus()); + Page tasksPage = appTaskService.page(page, lambdaQueryWrapper); + + PageVo pageVo = PageVo.of(tasksPage, TaskVo::of); + return WmsApiResponse.success("查询任务成功。", pageVo); + } +}