diff --git a/dev_wms_client/src/layout/OutsMonitor.vue b/dev_wms_client/src/layout/OutsMonitor.vue
index e2fa667..1479b99 100644
--- a/dev_wms_client/src/layout/OutsMonitor.vue
+++ b/dev_wms_client/src/layout/OutsMonitor.vue
@@ -62,14 +62,14 @@
-
+
+
+
+
@@ -96,6 +101,10 @@
+
+
+
@@ -260,7 +269,8 @@ let workFormEntity = reactive({
singleProductId: '',
boxNo: '',
goodsId: '',
- planStartDate: null
+ planStartDate: null,
+ kittingRemark: ''
})
let workFormQuery = reactive({
workOrder: '',
@@ -337,6 +347,7 @@ watch(() => workFormEntity.workOrder, (newVal, oldVal) => {
workFormEntity.singleProductId = ''
workFormEntity.boxNo = ''
workFormEntity.goodsId = ''
+ workFormEntity.kittingRemark = ''
}
})
watch(() => workFormEntity.productId, (newVal, oldVal) => {
@@ -389,6 +400,7 @@ const initWorkOptions = () => {
// 设置成品号
workFormEntity.productIdOrigin = response.data.productIdOrigin
workFormEntity.productId = response.data.productId
+ workFormEntity.kittingRemark = response.data.kittingRemark
workOptions.singleProductId = response.data.singleProductId
workOptions.boxNo = response.data.boxNo
workOptions.goodsId = response.data.goodsId
@@ -397,6 +409,7 @@ const initWorkOptions = () => {
// 重置成品号
workFormEntity.productIdOrigin = ''
workFormEntity.productId = ''
+ workFormEntity.kittingRemark = ''
workOptions.singleProductId = []
workOptions.boxNo = []
workOptions.goodsId = []
@@ -420,6 +433,7 @@ const resetWorkFormQuery = () => {
workFormEntity.singleProductId = ''
workFormEntity.boxNo = ''
workFormEntity.goodsId = ''
+ workFormEntity.kittingRemark = ''
}
// 确认配料
const confirmStart = () => {
@@ -506,6 +520,7 @@ const getWork = () => {
confirmEntity.goodsId = response.data.orderConfirm.goodsId
confirmEntity.planPickQty = response.data.orderConfirm.planPickQty
confirmEntity.realPickQty = response.data.orderConfirm.realPickQty
+ confirmEntity.kittingRemark = response.data.orderConfirm.kittingRemark
confirmEntity.stockId = response.data.stockConfirm.stockId
confirmEntity.vehicleId = response.data.stockConfirm.vehicleId
confirmEntity.planRemainQty = response.data.stockConfirm.planRemainQty
@@ -528,11 +543,13 @@ const getWork = () => {
confirmEntity.boxNo = response.data.orderConfirm.boxNo
confirmEntity.productId = response.data.orderConfirm.productId
confirmEntity.singleProductId = response.data.orderConfirm.singleProductId
+ confirmEntity.kittingRemark = response.data.orderConfirm.kittingRemark
} else {
confirmEntity.workOrder = ''
confirmEntity.boxNo = ''
confirmEntity.productId = ''
confirmEntity.singleProductId = ''
+ confirmEntity.kittingRemark = ''
}
}
}).catch(err => {
@@ -624,6 +641,7 @@ const resetConfirmEntity = () => {
confirmEntity.planPickQty = null
confirmEntity.realPickQty = null
confirmEntity.stockId = ''
+ confirmEntity.kittingRemark = ''
confirmEntity.vehicleId = ''
confirmEntity.planRemainQty = null
confirmEntity.realRemainQty = null
diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/bo/wms/OrderConfirmEntity.java b/dev_wms_serve/src/main/java/com/wms_main/model/bo/wms/OrderConfirmEntity.java
index 80e177a..f2f7fd2 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/model/bo/wms/OrderConfirmEntity.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/model/bo/wms/OrderConfirmEntity.java
@@ -52,4 +52,9 @@ public class OrderConfirmEntity {
*/
@JsonProperty("realPickQty")
private Integer realPickQty;
+ /**
+ * 拣选备注
+ */
+ @JsonProperty("kittingRemark")
+ private String kittingRemark;
}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/dto/request/wms/OutsUpdateRequest.java b/dev_wms_serve/src/main/java/com/wms_main/model/dto/request/wms/OutsUpdateRequest.java
new file mode 100644
index 0000000..d597ff9
--- /dev/null
+++ b/dev_wms_serve/src/main/java/com/wms_main/model/dto/request/wms/OutsUpdateRequest.java
@@ -0,0 +1,30 @@
+package com.wms_main.model.dto.request.wms;
+
+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 OutsUpdateRequest extends BaseWmsRequest {
+ /**
+ * 任务号
+ */
+ @JsonProperty("taskId")
+ private String taskId;
+ /**
+ * 更新类型
+ * 1: 取消
+ * 2: 完成
+ * 3: 重置
+ */
+ @JsonProperty("updateType")
+ private Integer updateType;
+}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppStandWork.java b/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppStandWork.java
index 84cffff..5e08629 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppStandWork.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppStandWork.java
@@ -92,4 +92,10 @@ public class TAppStandWork {
*/
@TableField(value = "put_area")
private String putArea;
+ /**
+ * 备注
+ * 主要用于标识ECN
+ */
+ @TableField(value = "kitting_remark")
+ private String kittingRemark;
}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWork.java b/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWork.java
index 0ab4de8..cc2047f 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWork.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWork.java
@@ -113,4 +113,10 @@ public class TAppWork {
*/
@TableField(value = "product_type")
private Integer productType;
+ /**
+ * 备注
+ * 用于ECN相关
+ */
+ @TableField(value = "kitting_remark")
+ private String kittingRemark;
}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWorkRecord.java b/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWorkRecord.java
index 8f84e9b..602d6ec 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWorkRecord.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/model/po/TAppWorkRecord.java
@@ -105,4 +105,10 @@ public class TAppWorkRecord {
*/
@TableField(value = "product_type")
private Integer productType;
+ /**
+ * 备注
+ * 用于ECN相关
+ */
+ @TableField(value = "kitting_remark")
+ private String kittingRemark;
}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/KateWorkOptionsVo.java b/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/KateWorkOptionsVo.java
index 39d53d8..3861537 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/KateWorkOptionsVo.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/model/vo/wms/KateWorkOptionsVo.java
@@ -50,4 +50,10 @@ public class KateWorkOptionsVo {
*/
@JsonProperty("goodsId")
private List goodsId = Collections.emptyList();
+ /**
+ * 备注
+ * 主要用于ECN
+ */
+ @JsonProperty("kittingRemark")
+ private String kittingRemark = "";
}
diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/business/serviceImpl/ConveyTaskServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/business/serviceImpl/ConveyTaskServiceImpl.java
index b3f5ecc..bd79d97 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/service/business/serviceImpl/ConveyTaskServiceImpl.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/service/business/serviceImpl/ConveyTaskServiceImpl.java
@@ -347,7 +347,8 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
thisWork.getGoodsId(),
thisWork.getBoxNo(),
planPickQty,
- planPickQty
+ planPickQty,
+ thisWork.getKittingRemark()
);
StockConfirmEntity stockConfirmVo = new StockConfirmEntity(
pickPlan.getPlanId(),
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
index 7db65eb..82baa9b 100644
--- 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
@@ -1,5 +1,6 @@
package com.wms_main.service.controller;
+import com.wms_main.model.dto.request.wms.OutsUpdateRequest;
import com.wms_main.model.dto.request.wms.WmsTaskRequest;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
@@ -20,4 +21,11 @@ public interface ITaskOperationControllerService {
* @return 更新结果
*/
BaseWmsApiResponse updateWmsTask(WmsTaskRequest wmsTaskRequest);
+
+ /**
+ * 更新出库表单---取消或者完成
+ * @param outsUpdateRequest 请求
+ * @return 结果
+ */
+ BaseWmsApiResponse updateOutsTask(OutsUpdateRequest outsUpdateRequest);
}
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 f265b54..bc8ce65 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
@@ -103,6 +103,8 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
result.setProductIdOrigin(dbs.getProductIdOrigin());
// 设置过滤成品号
result.setProductId(dbs.getProductId());
+ // 设置备注
+ result.setKittingRemark(dbs.getKittingRemark());
if (!getWorkOptionsOfServicePieces(kateWorksQuery, dbs.getProductIdOrigin(), result)) {
if (getWorkOptionsOfNonServicePieces(kateWorksQuery, dbs.getProductId(), result)) {
result.setProductType(1);// 普通成品
@@ -298,7 +300,8 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
thisStandWork.getGoodsId(),
thisStandWork.getBoxNo(),
thisStandWork.getPlanPickQty(),
- thisStandWork.getRealPickQty()),
+ thisStandWork.getRealPickQty(),
+ thisStandWork.getKittingRemark()),
new StockConfirmEntity(
thisStandWork.getStockId(),
thisStandWork.getVehicleId(),
@@ -1438,7 +1441,8 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
work.getGoodsId(),
work.getBoxNo(),
thisNeedNum,
- thisNeedNum
+ thisNeedNum,
+ work.getKittingRemark()
);
// 查找到这个库外料
TAppGoods outGoods = new TAppGoods();
@@ -1702,6 +1706,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
tempServiceProductWork.setIsOut(0);
}
tempServiceProductWork.setLackStatus(0);
+ tempServiceProductWork.setKittingRemark(dbs.getKittingRemark());// ECN备注
workList.add(tempServiceProductWork);
}
// 查询服务件是否包含单片
@@ -1736,6 +1741,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
tempSingleServiceProductWork.setIsOut(0);
}
tempSingleServiceProductWork.setLackStatus(0);
+ tempSingleServiceProductWork.setKittingRemark(dbs.getKittingRemark());// ECN备注
workList.add(tempSingleServiceProductWork);
}
}
@@ -1772,6 +1778,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
tempNonServiceProductWork.setIsOut(0);
}
tempNonServiceProductWork.setLackStatus(0);
+ tempNonServiceProductWork.setKittingRemark(dbs.getKittingRemark());// ECN备注
workList.add(tempNonServiceProductWork);
}
// 查询服务件是否包含单片
@@ -1806,6 +1813,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
tempSingleNonServiceProductWork.setIsOut(0);
}
tempSingleNonServiceProductWork.setLackStatus(0);
+ tempSingleNonServiceProductWork.setKittingRemark(dbs.getKittingRemark());// ECN备注
workList.add(tempSingleNonServiceProductWork);
}
}
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
index 65ea56e..59f51a7 100644
--- 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
@@ -4,16 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.wms_main.constant.enums.wcs.WcsStackerTaskStatusEnums;
import com.wms_main.constant.enums.wms.WmsStackerTaskStatusEnums;
-import com.wms_main.dao.ITAppTaskBakService;
-import com.wms_main.dao.ITAppTaskService;
-import com.wms_main.dao.ITAppWcsTaskBakService;
-import com.wms_main.dao.ITAppWcsTaskService;
+import com.wms_main.dao.*;
+import com.wms_main.model.dto.request.wms.OutsUpdateRequest;
import com.wms_main.model.dto.request.wms.WmsTaskRequest;
import com.wms_main.model.dto.response.wms.BaseWmsApiResponse;
-import com.wms_main.model.po.TAppTask;
-import com.wms_main.model.po.TAppTaskBak;
-import com.wms_main.model.po.TAppWcsTask;
-import com.wms_main.model.po.TAppWcsTaskBak;
+import com.wms_main.model.po.*;
import com.wms_main.repository.utils.ConvertUtils;
import com.wms_main.repository.utils.StringUtils;
import com.wms_main.service.controller.ITaskOperationControllerService;
@@ -34,9 +29,14 @@ public class TaskOperationControllerServiceImpl implements ITaskOperationControl
private final ITAppTaskBakService appTaskBakService;// wms任务记录服务
private final ITAppWcsTaskService appWcsTaskService;// wcs任务服务
private final ITAppWcsTaskBakService appWcsTaskBakService;// wcs任务记录服务
+ private final ITAppOutsService appOutsService;// 出库单服务
+ private final ITAppOutsRecordService appOutsRecordService;// 出库单记录服务
+ private final ITAppPickPlanService appPickPlanService;// 拣选计划服务
+ private final ITAppPickTaskService appPickTaskService;// 拣选任务服务
/**
* 删除wms任务
+ *
* @param wmsTaskRequest 请求参数
* @return 删除结果
*/
@@ -60,6 +60,7 @@ public class TaskOperationControllerServiceImpl implements ITaskOperationControl
/**
* 更新wms任务
+ *
* @param wmsTaskRequest 请求参数
* @return 更新结果
*/
@@ -176,9 +177,83 @@ public class TaskOperationControllerServiceImpl implements ITaskOperationControl
}
}
+ /**
+ * 更新当前的出库单任务---取消或者完成
+ *
+ * @param outsUpdateRequest 请求
+ * @return 处理结果
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public BaseWmsApiResponse updateOutsTask(OutsUpdateRequest outsUpdateRequest) {
+ // 校验参数
+ if (outsUpdateRequest == null) {
+ return BaseWmsApiResponse.error("请求参数不能为NULL。");
+ }
+ if (StringUtils.isEmpty(outsUpdateRequest.getTaskId())) {
+ return BaseWmsApiResponse.error("请求缺少任务号taskId。");
+ }
+ if (outsUpdateRequest.getUpdateType() == null) {
+ return BaseWmsApiResponse.error("请求缺少更新类型updateType。");
+ }
+ // 查询对应的出库单
+ TAppOuts targetOuts = appOutsService.getById(outsUpdateRequest.getTaskId());
+ if (targetOuts == null) {
+ return BaseWmsApiResponse.error("未查询到对应的出库单。");
+ }
+ // 查询对应的pickPlan
+ List pickPlansOfThisTask = appPickPlanService.list(new LambdaQueryWrapper()
+ .eq(TAppPickPlan::getWorkIndex, targetOuts.getTaskId()));
+ if (pickPlansOfThisTask != null && !pickPlansOfThisTask.isEmpty()) {
+ // 查询这些plan包含的拣选任务
+ List pickTasksOfThisTask = appPickTaskService.list(new LambdaQueryWrapper()
+ .eq(TAppPickTask::getPickStand, targetOuts.getDestination())
+ .in(TAppPickTask::getVehicleId, pickPlansOfThisTask.stream().map(TAppPickPlan::getVehicleId).distinct().toList()));
+ if (pickTasksOfThisTask != null && !pickTasksOfThisTask.isEmpty()) {
+ // 如果存在pickPlan且存在pickTask,那么不允许后续操作。
+ return BaseWmsApiResponse.error("当前任务已经下发且未完成,不可进行后续操作。");
+ }
+ }
+ // 根据不用的更新类型,进行操作
+ if (outsUpdateRequest.getUpdateType() == 1) {// CANCEL
+ // 移除这个出库单,并删除其对应的pickPlan
+ appOutsService.removeById(targetOuts.getTaskId());
+ appPickPlanService.remove(new LambdaQueryWrapper()
+ .eq(TAppPickPlan::getWorkIndex, targetOuts.getTaskId()));
+ } else if (outsUpdateRequest.getUpdateType() == 2) {// FINISH
+ // 移除这个出库单,生成记录,并删除对应的pickPlan
+ appOutsService.removeById(targetOuts.getTaskId());
+ appOutsRecordService.save(new TAppOutsRecord(
+ targetOuts.getTaskId(),
+ targetOuts.getGoodsId(),
+ targetOuts.getVehicleId(),
+ targetOuts.getNeedNum(),
+ targetOuts.getDistributeNum(),
+ targetOuts.getPickNum(),
+ targetOuts.getOutType(),
+ targetOuts.getDestination(),
+ targetOuts.getUserName(),
+ targetOuts.getReason(),
+ targetOuts.getRequestTime()
+ ));
+ appPickPlanService.remove(new LambdaQueryWrapper()
+ .eq(TAppPickPlan::getWorkIndex, targetOuts.getTaskId()));
+ } else if (outsUpdateRequest.getUpdateType() == 3) {// REBOOT
+ // 将已分配数量更改掉,并删除pickPlan
+ targetOuts.setDistributeNum(targetOuts.getNeedNum() - targetOuts.getPickNum());
+ appOutsService.updateById(targetOuts);
+ appPickPlanService.remove(new LambdaQueryWrapper()
+ .eq(TAppPickPlan::getWorkIndex, targetOuts.getTaskId()));
+ } else {
+ return BaseWmsApiResponse.error("更新类型错误。");
+ }
+ return BaseWmsApiResponse.success("更新信息成功。");
+ }
+
/**
* 更新详情
- * @param targetTask 目标任务
+ *
+ * @param targetTask 目标任务
* @param wmsTaskRequest 请求信息
*/
private void updateDetailInfoExceptStatus(TAppTask targetTask, WmsTaskRequest wmsTaskRequest) {
diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java
index 14b889c..05af03d 100644
--- a/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java
+++ b/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java
@@ -1102,7 +1102,8 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
appWork.getFinishTime(),
appWork.getLackStatus(),
appWork.getIsOut(),
- appWork.getProductType()
+ appWork.getProductType(),
+ appWork.getKittingRemark()
);
}