diff --git a/pda/api/warehouse/inventory.js b/pda/api/warehouse/inventory.js index 6548428..5a62691 100644 --- a/pda/api/warehouse/inventory.js +++ b/pda/api/warehouse/inventory.js @@ -37,11 +37,11 @@ export function confirmExcetion(data) { } // 确认托盘盘点出库完成 - 盘点出库 -export function inventoryTrayCodeComplete(trayCode) { +export function inventoryTrayCodeComplete(data) { return request({ url: '/pda/inventoryTrayCodeComplete', method: 'post', // data: { trayCode: trayCode } - params: { trayCode } + data: data }) } \ No newline at end of file diff --git a/pda/pages.json b/pda/pages.json index 3625229..e8cc280 100644 --- a/pda/pages.json +++ b/pda/pages.json @@ -121,7 +121,7 @@ "navigationBarTitleText": "盘点管理" } }, { - "path": "pages/warehouse/inventory/inventoryConfirm", + "path": "pages/warehouse/inventory/jobList", "style": { "navigationBarTitleText": "盘点任务列表" } diff --git a/pda/pages/warehouse/inventory/index.vue b/pda/pages/warehouse/inventory/index.vue index 4566a13..0894e34 100644 --- a/pda/pages/warehouse/inventory/index.vue +++ b/pda/pages/warehouse/inventory/index.vue @@ -6,7 +6,7 @@ - + 盘点任务列表 @@ -22,7 +22,7 @@ - + + + + 盘点待处理任务 + 刷新 + + + 暂无待处理任务 + + + + + + + {{ item.jobId }} + + + + + + + 托盘条码 + {{ item.trayCode }} + + + 盘点出库货位 + {{ item.cargoSpaceId }} + + + 状态 + {{ inventoryStatusMap[item.status] || '未知状态' }} + + + + + + + {{ item.createTime }} + {{ item.statusName }} + + + + + + + + + + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/WcsServiceController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/WcsServiceController.java index 8d110a9..3e79f13 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/WcsServiceController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/WcsServiceController.java @@ -96,7 +96,8 @@ public class WcsServiceController extends BaseController { @PostMapping("/reMaterial") public AjaxResult reMaterial(@RequestBody WmsJobHandler wmsJobHandler) { AjaxResult ajaxResult = apiWcsService.reMaterial(wmsJobHandler); - RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobHandler), "取货无货重分物料",ajaxResult); +// RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobHandler), "取货无货重分物料",ajaxResult); + RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobHandler), "取货无货任务作废-货位需要盘点",ajaxResult); requestLogService.insertRequestLog(requestLog); return ajaxResult; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiWcsService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiWcsService.java index 79711f0..22d011a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiWcsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiWcsService.java @@ -1,9 +1,12 @@ package com.ruoyi.api.service; +import cn.hutool.json.JSONUtil; import com.ruoyi.api.domain.wcsJobHandle.WmsJobHandler; import com.ruoyi.api.domain.wcsStockin.WcsStockinReceive; import com.ruoyi.api.domain.wcsStockout.WcsStockoutParam; +import com.ruoyi.common.WcsUrl; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.log.domain.RequestLog; import org.springframework.stereotype.Component; import java.util.Map; @@ -36,47 +39,84 @@ public interface IApiWcsService { * @param wcsStockinReiceive * @return */ - public AjaxResult requestMydoJobManual(WcsStockinReceive wcsStockinReiceive); + AjaxResult requestMydoJobManual(WcsStockinReceive wcsStockinReiceive); /** * wcs任务回传 * @param wmsJobHandler * @return */ - public AjaxResult jobFinish(WmsJobHandler wmsJobHandler); + AjaxResult jobFinish(WmsJobHandler wmsJobHandler); /** * 放货有货 - 入库重分 * @param wmsJobHandler * @return */ - public AjaxResult reAssign(WmsJobHandler wmsJobHandler); + AjaxResult reAssign(WmsJobHandler wmsJobHandler); /** * 取货无货 - 重分物料 * @param wmsJobHandler * @return */ - public AjaxResult reMaterial(WmsJobHandler wmsJobHandler); + AjaxResult reMaterial(WmsJobHandler wmsJobHandler); /** - * 推送拣选回流作业 + * 推送【拣选回流】作业 * @param param * @return */ - public AjaxResult sendBackMydoJob(Map param); + AjaxResult sendBackMydoJob(Map param); /** - * 推送盘点回流作业 + * 推送【盘点出库】作业 * @param param * @return */ - public AjaxResult sendInventoryBackMydoJob(Map param); + AjaxResult sendInventoryOutMydoJob(Map param); - public AjaxResult sendOutMydoJob(Map param); + /** + * 推送【盘点回流】作业 + * @param param + * @return + */ + AjaxResult sendInventoryBackMydoJob(Map param); - public AjaxResult sendMoveMydoJob(Map param); + /** + * 推送【常规出库】作业 + * @param param + * @return + */ + AjaxResult sendOutMydoJob(Map param); + + /** + * 推送【移库】作业 + * @param param + * @return + */ + AjaxResult sendMoveMydoJob(Map param); + + /** + * 推送【空托出库】作业 + * @param param + * @return + */ + AjaxResult sendEmptyTrayOutMydoJob(Map param); + + /** + * 手动作废wcs作业 + * @param param + * @return + */ + AjaxResult cancelWcsMydoJob(Map param); + + /** + * 手动完成wcs作业 + * @param param + * @return + */ + AjaxResult manualCompleteWcsMydoJob(Map param); - public AjaxResult sendEmptyTrayOutMydoJob(Map param); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiWcsService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiWcsService.java index e2ed84a..8c27940 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiWcsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiWcsService.java @@ -668,7 +668,6 @@ public class ApiWcsService implements IApiWcsService { String warehouseId = mydoJob.getWarehouseId(); BasCargoSpace basCargoSpaceParam = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(wmsJobHandler.getCargoSpaceId()); - //标记异常货位状态 if (ObjUtil.isNotNull(basCargoSpaceParam)) { basCargoSpaceParam.setStatus(CargoSpaceCode.CARGOSPACE_STATUS_STOCKIN_EXCEPTION); @@ -679,7 +678,6 @@ public class ApiWcsService implements IApiWcsService { BasCargoSpace cargoSpaceNew = basCargoSpaceService.selectBasCargoSpaceForStockin( new BasCargoSpace().builder().roadwayId(mydoJob.getRoadwayId()).cargoAreaId(basCargoSpaceParam.getCargoAreaId()).theType(mydoJob.getTrayType()).build() ); - if (ObjUtil.isNotNull(cargoSpaceNew)) { log.info("【入库重分】重分失败,该区域没有可用的空货位,货区:{},托盘类型:{}", basCargoSpaceParam.getCargoAreaId(), mydoJob.getTrayType()); return AjaxResult.error("该区域没有可用的空货位"); @@ -706,7 +704,7 @@ public class ApiWcsService implements IApiWcsService { /** - * 取货无货 - 重分物料 + * 取货无货 - 重分物料 @@@FT577特殊情况,由于出库版辊唯一,无货情况下不能继续重分,只能手动处理 * @param wmsJobHandler * @return */ @@ -751,6 +749,7 @@ public class ApiWcsService implements IApiWcsService { return AjaxResult.success(); } + @Override public AjaxResult sendBackMydoJob(Map param) { RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_IN_MYDO_JOB, JSONUtil.toJsonStr(param), "推送入库回流作业"); @@ -767,22 +766,6 @@ public class ApiWcsService implements IApiWcsService { } - @Override - public AjaxResult sendInventoryBackMydoJob(Map param) { - RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_IN_MYDO_JOB, JSONUtil.toJsonStr(param), "推送盘点回流作业"); - requestLog.setResponseBody(JSONUtil.toJsonStr(AjaxResult.success())); - requestLog.setResponseStatus("0"); - requestLog.setIsSuccessful("1"); - requestLogService.insertRequestLog(requestLog); - - if ("1".equals(requestLog.getIsSuccessful())) { - return AjaxResult.success(); - } - - return AjaxResult.error(); - } - - /** * 推送出库作业 * @param param @@ -826,13 +809,36 @@ public class ApiWcsService implements IApiWcsService { /** - * 推送盘点作业 + * 推送盘点出库作业 * @param param * @return */ - public AjaxResult sendInventroyMydoJob(Map param) { + @Override + public AjaxResult sendInventoryOutMydoJob(Map param) { - RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_MOVE_MYDO_JOB, JSONUtil.toJsonStr(param), "推送盘点作业"); + RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_INVENTORY_MYDO_JOB, JSONUtil.toJsonStr(param), "推送盘点出库作业"); + requestLog.setResponseBody(JSONUtil.toJsonStr(AjaxResult.success())); + requestLog.setResponseStatus("0"); + requestLog.setIsSuccessful("1"); + requestLogService.insertRequestLog(requestLog); + + if ("1".equals(requestLog.getIsSuccessful())) { + return AjaxResult.success(); + } + + return AjaxResult.error(); + } + + + /** + * 推送盘点回库作业 + * @param param + * @return + */ + @Override + public AjaxResult sendInventoryBackMydoJob(Map param) { + + RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_INVENTORY_MYDO_JOB, JSONUtil.toJsonStr(param), "推送盘点回库作业"); requestLog.setResponseBody(JSONUtil.toJsonStr(AjaxResult.success())); requestLog.setResponseStatus("0"); requestLog.setIsSuccessful("1"); @@ -851,6 +857,7 @@ public class ApiWcsService implements IApiWcsService { * @param param * @return */ + @Override public AjaxResult sendEmptyTrayOutMydoJob(Map param) { RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_OUT_MYDO_JOB, JSONUtil.toJsonStr(param), "推送容器出库作业"); @@ -866,4 +873,45 @@ public class ApiWcsService implements IApiWcsService { return AjaxResult.error(); } + /** + * 手动作废wcs作业 + * @param param + * @return + */ + @Override + public AjaxResult cancelWcsMydoJob(Map param){ + RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.PUSH_OUT_MYDO_JOB, JSONUtil.toJsonStr(param), "wcs手动作废作业"); + requestLog.setResponseBody(JSONUtil.toJsonStr(AjaxResult.success())); + requestLog.setResponseStatus("0"); + requestLog.setIsSuccessful("1"); + requestLogService.insertRequestLog(requestLog); + + if ("1".equals(requestLog.getIsSuccessful())) { + return AjaxResult.success(); + } + + return AjaxResult.error(); + } + + + /** + * 手动完成wcs作业 + * @param param + * @return + */ + @Override + public AjaxResult manualCompleteWcsMydoJob(Map param){ + RequestLog requestLog = requestLogService.getRequestLog(WcsUrl.MANUAL_COMPLETE_WCS_MYDOJOB, JSONUtil.toJsonStr(param), "wcs手动完成作业"); + requestLog.setResponseBody(JSONUtil.toJsonStr(AjaxResult.success())); + requestLog.setResponseStatus("0"); + requestLog.setIsSuccessful("1"); + requestLogService.insertRequestLog(requestLog); + + if ("1".equals(requestLog.getIsSuccessful())) { + return AjaxResult.success(); + } + + return AjaxResult.error(); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/WcsUrl.java b/ruoyi-admin/src/main/java/com/ruoyi/common/WcsUrl.java index 5ef35a0..bbcdcea 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/WcsUrl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/WcsUrl.java @@ -14,6 +14,9 @@ public class WcsUrl { /** 推送移库作业 */ public static final String PUSH_MOVE_MYDO_JOB = "http://localhost:8081/wcs2wms/api/receiveMoveMydoJob"; + /** 推送盘点作业 */ + public static final String PUSH_INVENTORY_MYDO_JOB = "http://localhost:8081/wcs2wms/api/receiveInventoryMydoJob"; + /** 推送回流作业 */ public static final String PUSH_RETURN_MYDO_JOB = "http://localhost:8081/wcs2wms/api/receiveReturnMydoJob"; @@ -23,8 +26,11 @@ public class WcsUrl { /** */ public static final String OUT_MYDOJOB_MS = "http://localhost:8081/wcs2wms/api/outMydojobMakesure"; - /** */ - public static final String CANCEL_MYDOJOB = "http://localhost:8081/wcs2wms/api/cancelMydoJob"; + /** 请求wcs手动作废作业 */ + public static final String CANCEL_WCS_MYDOJOB = "http://localhost:8081/wcs2wms/api/cancelMydoJob"; + + /** 请求wcs手动完成作业 */ + public static final String MANUAL_COMPLETE_WCS_MYDOJOB = "http://localhost:8081/wcs2wms/api/manualCompleteMydoJob"; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java index a768047..18cfd8b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/controller/PdaController.java @@ -505,7 +505,7 @@ public class PdaController extends BaseController { */ @PostMapping("/inventoryTrayCodeComplete") @PreAuthorize("@ss.hasPermi('out:bound:task:info')") - public AjaxResult inventoryTrayCodeComplete(Map params) { + public AjaxResult inventoryTrayCodeComplete(@RequestBody Map params) { return pdaService.inventoryTrayCodeComplete(params); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java index 24b87ad..db63b8f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/MydoJobHandler.java @@ -236,8 +236,6 @@ public class MydoJobHandler { mydoJobService.insertMydoJobFinish(mydoJob.getJobId()); mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); -// apiWcsService.cancelWcsMydojob() - log.info("【账务处理-入库】任务作废,移除作业信息,更新货位状态,作业号:{}", mydoJob.getJobId()); return; } @@ -895,5 +893,9 @@ public class MydoJobHandler { + void cancelWcsJob(){ + + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java index 6c7367a..770a6df 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/scheduleTask/RequestWcsHandler.java @@ -239,6 +239,112 @@ public class RequestWcsHandler { + } + + + /** + * 推送wcs移库任务 + */ + @Scheduled(fixedRate = TIMEINTERVAL_2000) + public void sendWcsMoveTask(){ + List mydoJobs = mydoJobService.selectOutMydoJobList( + new MydoJob().builder() + .status(TaskStatusEnum.READY.getCode()) + .inOrOut(TaskType.TASKTYPE_PICK_BACK) + .build() + ); + + if (mydoJobs.isEmpty()) return; + + for (MydoJob mydoJob : mydoJobs){ + + //初始化参数 + HashMap paramMap = new HashMap<>(); + paramMap.put("reqCode", UUID.randomUUID().toString());//请求码 + paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号 + paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号 + paramMap.put("jobId", mydoJob.getJobId()); + paramMap.put("inOrOut", mydoJob.getInOrOut()); + paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId()); + + AjaxResult ajaxResult = apiWcsService.sendBackMydoJob(paramMap); + + if (ajaxResult.isSuccess()){ + log.info("【推送回流入库】<托盘回流>入库,更新货位和库存预占用状态,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode()); + mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode()); + mydoJobService.updateMydoJob(mydoJob); + + //更新库存状态【占用中】 + List stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode()); + if (!stocks.isEmpty()){ + for (BasStock stock : stocks) { + stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED); + stock.setCargoSpaceId(mydoJob.getCargoSpaceId()); + basStockService.updateBasStock(stock); + } + } + + //更新货位状态【入库预占用】 + basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), "", CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN); + + } + } + + + + } + + + /** + * 推送wcs盘点出库任务 + */ + @Scheduled(fixedRate = TIMEINTERVAL_2000) + public void sendWcsInventoryOutTask(){ + List mydoJobs = mydoJobService.selectOutMydoJobList( + new MydoJob().builder() + .status(TaskStatusEnum.READY.getCode()) + .inOrOut(TaskType.TASKTYPE_STOCKOUT_INVENTORY) + .build() + ); + + if (mydoJobs.isEmpty()) return; + + for (MydoJob mydoJob : mydoJobs){ + + //初始化参数 + HashMap paramMap = new HashMap<>(); + paramMap.put("reqCode", UUID.randomUUID().toString());//请求码 + paramMap.put("trayCode", mydoJob.getTrayCode());//容器编号 + paramMap.put("taskNo", mydoJob.getTaskNo());//容器编号 + paramMap.put("jobId", mydoJob.getJobId()); + paramMap.put("inOrOut", mydoJob.getInOrOut()); + paramMap.put("cargoSpaceId", mydoJob.getCargoSpaceId()); + + AjaxResult ajaxResult = apiWcsService.sendInventoryOutMydoJob(paramMap); + + if (ajaxResult.isSuccess()){ + log.info("【推送盘点出库】<盘点>出库,更新货位和库存预占用状态,wms作业号:{},货位:{},托盘号:{}", mydoJob.getJobId(), mydoJob.getCargoSpaceId(), mydoJob.getTrayCode()); + mydoJob.setStatus(TaskStatusEnum.RUNNING.getCode()); + mydoJobService.updateMydoJob(mydoJob); + + //更新库存状态【占用中】 + List stocks = basStockService.selectBasStockListByTrayCode(mydoJob.getTrayCode()); + if (!stocks.isEmpty()){ + for (BasStock stock : stocks) { + stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED); + stock.setCargoSpaceId(mydoJob.getCargoSpaceId()); + basStockService.updateBasStock(stock); + } + } + + //更新货位状态【入库预占用】 + basCargoSpaceService.updateBasCargoSpaceStatus(mydoJob.getCargoSpaceId(), mydoJob.getTrayCode(), CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT); + + } + } + + + }