diff --git a/pda/pages/warehouse/inbound/index.vue b/pda/pages/warehouse/inbound/index.vue
index 414d760..5a52148 100644
--- a/pda/pages/warehouse/inbound/index.vue
+++ b/pda/pages/warehouse/inbound/index.vue
@@ -22,7 +22,7 @@
选择托盘作废绑定信息
- 扫描或输入托盘条码选择版辊绑盘信息作废
+ 扫描或输入托盘条码作废全部绑定信息
@@ -34,8 +34,8 @@
- 版辊绑定信息作废
- 扫描或输入辊号执行当前版辊绑盘信息作废
+ 单版辊绑定作废
+ 扫描或输入辊号执行单独版辊绑盘信息作废
diff --git a/pda/pages/warehouse/outbound/trayConfirm.vue b/pda/pages/warehouse/outbound/trayConfirm.vue
index ee0fb2e..fe77b04 100644
--- a/pda/pages/warehouse/outbound/trayConfirm.vue
+++ b/pda/pages/warehouse/outbound/trayConfirm.vue
@@ -58,8 +58,8 @@
-
-
+
+
@@ -194,13 +194,23 @@
// console.log(this.barcode)
// var that = this
- stockoutTrayCodeComplete(this.barcode).then(() => {
- that.$modal.msgSuccess(this.barcode + '出库确认成功')
- that.resetForm()
- }).catch(() => {
- // 全局拦截器通常已处理错误弹窗,这里可只处理状态重置
- // console.log('出库确认失败')
- })
+
+ this.$modal.confirm('该操作需要确认版辊数量再统一执行确认出库,点击【确定】后继续执行').then(() => {
+ stockoutTrayCodeComplete(this.barcode).then(() => {
+ that.$modal.msgSuccess(this.barcode + '出库确认成功')
+ that.resetForm()
+ }).catch(() => {
+ // 全局拦截器通常已处理错误弹窗,这里可只处理状态重置
+ // console.log('出库确认失败')
+ })
+ }).then(() => {
+ this.$modal.msgSuccess(this.barcode + '出库确认成功');
+ this.resetForm();
+ }).catch(() => {
+ // 全局拦截器通常已处理错误弹窗,这里可只处理状态重置
+ // console.log('出库确认失败或用户取消')
+ });
+
},
stockoutCompleteAll() {
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 d914a7f..fc88e7e 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
@@ -49,6 +49,18 @@ public class WcsServiceController extends BaseController {
}
+ /**
+ * 盘点货位出库
+ */
+ @PostMapping("/inventoryOutByManual")
+ public AjaxResult inventoryOutyByManual(@RequestBody Map params) {
+ AjaxResult ajaxResult = apiWcsService.inventoryOutByManual(params);
+ RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(params), "制定货位盘点出库", ajaxResult);
+ requestLogService.insertRequestLog(requestLog);
+ return ajaxResult;
+ }
+
+
/**
* 请求补码作业
*/
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 d7bc06f..015e72f 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
@@ -619,6 +619,150 @@ public class ApiWcsService implements IApiWcsService {
}
+
+ /**
+ * 指定货位出库
+ * @param params
+ * @return
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult inventoryOutByManual(Map params){
+
+ String cargoSpaceId = params.get("cargoSpaceId");
+
+ //当前货位
+ BasCargoSpace cargoSpaceCurrent = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(cargoSpaceId);
+ if (ObjUtil.isNull(cargoSpaceCurrent)){
+ log.warn("【操作失败】找不到该货位,可能是货位异常或参数错误,请联系管理员,货位号:", cargoSpaceId);
+ return AjaxResult.error("找不到该货位信息");
+ }
+
+// if (!cargoSpaceCurrent.getLocked().equals(CargoSpaceCode.CARGOSPACE_LOCKED_NORMAL)){
+// log.warn("【操作失败】当前货位已经锁定或禁用,不能执行<指定货位出库>该操作,货位号:", cargoSpaceId);
+// return AjaxResult.error("当前货位已经锁定或禁用,不能执行<指定货位出库>该操作");
+// }
+
+
+// MydoJob job = mydoJobService.selectMydoJobBy(cargoSpace.getTrayCode());
+
+
+ //todo 移库判断
+ if(cargoSpaceCurrent.getIssDouble().equals(CargoSpaceCode.CARGOSPACE_ISDOUBLE_Y)){
+ //双伸货位出库判断单伸位置是否有货
+ BasCargoSpace cargoSpaceSingle = basCargoSpaceService.selectAnotherBasCargoSpaceBySameGroup(cargoSpaceCurrent);
+
+ //单伸位非空闲状态 - 触发移库任务
+ if (cargoSpaceSingle.getStatus().equals(CargoSpaceCode.CARGOSPACE_STATUS_OCCUPIED)){
+ String moveJobId = basJobIdService.getId(JobIdType.MYDOJOB_MOVE);
+ String moveTaskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKOUT);
+ BasCargoSpace targetCargo = basCargoSpaceService.selectBasCargoSpaceForStockin(
+ new BasCargoSpace().builder().theType(cargoSpaceCurrent.getTheType()).roadwayId(cargoSpaceCurrent.getRoadwayId()).build()
+ );
+
+ //生成并推送移库
+ MydoJob moveJob = new MydoJob().builder()
+ .jobId(moveJobId)
+ .taskNo(moveTaskNo)
+ .status(TaskStatusEnum.READY.getCode())
+ .inOrOut(TaskType.TASKTYPE_PICK_STOCK_MOVE)
+ .executionPhase("0")
+ .trayCode(cargoSpaceSingle.getTrayCode())
+ .trayType(cargoSpaceSingle.getTheType().toString())
+ .roadwayId(cargoSpaceSingle.getRoadwayId())
+ .cargoSpaceId(cargoSpaceSingle.getCargoSpaceId())
+ .targetCargoSpaceId(targetCargo.getCargoSpaceId())
+ .priority(0)
+ .build();
+
+ log.info("【指定货位盘点出库】出库双伸货位外侧有货,生成移库作业,作业号:{},移库货位:{},目标货位:{}", moveJobId, cargoSpaceSingle.getCargoSpaceId(), targetCargo.getCargoSpaceId());
+
+ //推送移库
+ AjaxResult ajaxResult;
+
+ /*-----------------推送wcs移库任务----------------- */
+ HashMap paramMap = new HashMap<>();
+ paramMap.put("reqCode", UUID.randomUUID().toString());//请求码
+ paramMap.put("jobId", moveJob.getJobId());//作业号
+ paramMap.put("taskNo", moveJob.getTaskNo());//任务号
+ paramMap.put("trayCode", moveJob.getTrayCode().trim());//容器编号
+ paramMap.put("cargoSpaceId", moveJob.getCargoSpaceId());//货位
+ paramMap.put("targetCargoSpaceId", moveJob.getTargetCargoSpaceId());//目标货位
+ paramMap.put("inOrOut", moveJob.getInOrOut());//任务类型
+ paramMap.put("priority", 0);//任务优先级
+
+ ajaxResult = sendMoveMydoJob(paramMap);
+ log.info(
+ "【盘点出库-移库】推送wcs移库作业,作业号:{},托盘条码:{},移库货位:{},目标货位:{}", moveJob.getJobId(), moveJob.getTrayCode(), moveJob.getCargoSpaceId(), moveJob.getTargetCargoSpaceId()
+ );
+ if (ajaxResult.isSuccess()){
+ //生成托盘主作业
+ mydoJobService.insertMydoJob(moveJob);
+
+ List stocks = basStockService.selectBasStockListByTrayCode(moveJob.getTrayCode());
+ if (!stocks.isEmpty()){
+ for(BasStock stock : stocks){
+ //更新库存表货位【占用】状态
+ stock.setStockStatus(BasStockCode.STOCK_STATUS_OCCUPIED);
+ basStockService.updateBasStock(stock);
+ }
+ }
+
+ //更新货位表【预占用】状态
+ basCargoSpaceService.updateBasCargoSpaceStatus(cargoSpaceSingle.getCargoSpaceId(),cargoSpaceSingle.getTrayCode(),CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT);
+ basCargoSpaceService.updateBasCargoSpaceStatus(targetCargo.getCargoSpaceId(),cargoSpaceSingle.getTrayCode(),CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN);
+
+ log.info(
+ "【手动出库-移库】推送成功,货位和库存更为<占用>状态,作业号:{},托盘条码:{},移库货位:{},目标货位:{}", moveJob.getJobId(), moveJob.getTrayCode(), moveJob.getCargoSpaceId(), moveJob.getTargetCargoSpaceId()
+ );
+ }else{
+ return AjaxResult.error("【手动出库-移库】推送失败,请查看接口错误信息");
+ }
+
+ }else if (cargoSpaceSingle.getStatus().equals(CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKIN) ||
+ cargoSpaceSingle.getStatus().equals(CargoSpaceCode.CARGOSPACE_STATUS_PRE_STOCKOUT)){
+ return AjaxResult.error("【盘点出库-移库】推送失败,操作中止,对应的单伸货位状态不符合移库条件");
+ }
+
+ }
+
+
+ List jobs = mydoJobService.selectMydoJobList(
+ new MydoJob().builder().cargoSpaceId(cargoSpaceId).build()
+ );
+ if (jobs.isEmpty()){
+
+ String jobId = basJobIdService.getId(JobIdType.MYDOJOB_INVENTORY_STOCKOUT);
+ String taskNo = basTaskNoService.getTaskNo(TaskIdType.TASK_STOCKOUT_INVENTORY);
+ int taskType = TaskType.TASKTYPE_STOCKOUT_INVENTORY;
+
+ MydoJob mydoJob = new MydoJob().builder()
+ .jobId(jobId)
+ .taskNo(taskNo)
+ .status(TaskStatusEnum.READY.getCode())
+ .warehouseId(cargoSpaceCurrent.getWarehouseId())
+ .warehouseName("立体库")
+ .executionPhase("0")
+ .inOrOut(taskType)
+ .trayCode(cargoSpaceCurrent.getTrayCode())
+// .exitId()
+ .roadwayId(cargoSpaceCurrent.getRoadwayId())
+ .cargoSpaceId(cargoSpaceId)
+ .cargoSpaceName(cargoSpaceCurrent.getCargoSpaceName())
+ .trayType(cargoSpaceCurrent.getTheType().toString())
+ .build();
+
+ mydoJobService.insertMydoJob(mydoJob);
+ log.info("【wms生成出库】<货位盘点出库>作业,作业号:{},任务号:{},托盘号:{},盘点货位:{}",mydoJob.getJobId() ,mydoJob.getTaskNo() ,mydoJob.getTrayCode(), cargoSpaceId);
+
+ }else{
+ log.info("【wms指定出库】<货位盘点出库>操作失败,已经存在当前货位的盘点出库任务,盘点货位:{}", cargoSpaceId);
+ }
+
+ return AjaxResult.error();
+
+ }
+
+
//todo 补码
/**
* 请求补码作业
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/IPdaService.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/IPdaService.java
index fc28e60..825ad8d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/IPdaService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/IPdaService.java
@@ -208,7 +208,7 @@ public interface IPdaService {
* @param params
* @return
*/
- public AjaxResult inventoryTrayCodeComplete(Map params);
+ AjaxResult inventoryTrayCodeComplete(Map params);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java
index abe19af..42abbf8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/pda/service/impl/PdaServiceImpl.java
@@ -1140,16 +1140,18 @@ public class PdaServiceImpl implements IPdaService {
}
if (!mydoJob.getStatus().equals(TaskStatusEnum.AUTO_FINISHED.getCode())){
- log.warn("【操作失败】请等待当前盘点作业出库完成再执行确认操作,托盘号:{}", trayCode);
- return AjaxResult.error("请等待当前盘点作业出库完成再执行确认操作");
+ log.warn("【操作失败】请等待当前盘点完成作业出库再执行确认操作,托盘号:{}", trayCode);
+ return AjaxResult.error("请等待当前盘点作业完成出库再执行确认操作");
}
List details = pdStockpdDetailService.selectPdStockpdDetailList(
new PdStockpdDetail().builder().trayCode(trayCode).build()
);
- for (PdStockpdDetail detail : details){
- detail.setAssignNum(BigDecimal.ONE);
- pdStockpdDetailService.updatePdStockpdDetail(detail);
+ if (!details.isEmpty()){
+ for (PdStockpdDetail detail : details){
+ detail.setAssignNum(BigDecimal.ONE);
+ pdStockpdDetailService.updatePdStockpdDetail(detail);
+ }
}
String jobId = basJobIdService.getId(JobIdType.JOB_MANUAL_LIST_INVENTORY_STOCKIN);
diff --git a/ruoyi-ui/src/api/bas/cargospace.js b/ruoyi-ui/src/api/bas/cargospace.js
index 568351c..199df83 100644
--- a/ruoyi-ui/src/api/bas/cargospace.js
+++ b/ruoyi-ui/src/api/bas/cargospace.js
@@ -57,7 +57,16 @@ export function stockoutByManual(cargoSpaceId) {
return request({
url: '/api/wmsService/wcs/stockoutByManual',
method: 'post',
- data: { cargoSpaceId: cargoSpaceId }
+ data: { cargoSpaceId: cargoSpaceId }
+ })
+}
+
+// 指定货位出库
+export function inventoryOutByManual(cargoSpaceId) {
+ return request({
+ url: '/api/wmsService/wcs/inventoryOutByManual',
+ method: 'post',
+ data: { cargoSpaceId: cargoSpaceId }
})
}
diff --git a/ruoyi-ui/src/views/bas/cargospace/index.vue b/ruoyi-ui/src/views/bas/cargospace/index.vue
index 52fa4f5..2eb69c8 100644
--- a/ruoyi-ui/src/views/bas/cargospace/index.vue
+++ b/ruoyi-ui/src/views/bas/cargospace/index.vue
@@ -109,6 +109,16 @@
>指定货位出库
+ 货位盘点出库
+
+