Compare commits

...

2 Commits

Author SHA1 Message Date
Yxq
2fc5a9189e 1.添加了app_outs_check表,用于向上位系统反馈数据的记录
2.更改出库反馈的方式,由次次反馈改为完成时一次性反馈
3.去除了pda页面扫描目标箱号的绑定事件
2025-09-28 12:45:21 +08:00
Yxq
576d4d0a00 反馈接口字段更改 2025-09-26 12:16:26 +08:00
10 changed files with 189 additions and 29 deletions

View File

@ -56,14 +56,16 @@ export const getPdaData = (params) => {
})
}
export const confirmCurrentTask = (params) => {
export const confirmCurrentTask = (params, config = {}) => {
return request({
url: '/task/confirmCurrentTask',
method: 'post',
data: params
data: params,
...config
})
}
export const confirmCurrentTaskByPDA = (params) => {
return request({
url: '/task/confirmCurrentTaskByPDA',

View File

@ -29,7 +29,7 @@
</el-col>
<el-col :span="22" :offset="1">
<el-form-item label="目标箱号:" required>
<el-input class="form-input large-center-input" v-model="bindingData.containerNo" @keyup.enter="transferBox" clearable ref="destinationBoxInput"/>
<el-input class="form-input large-center-input" v-model="bindingData.containerNo" clearable ref="destinationBoxInput"/>
</el-form-item>
</el-col>
</el-row>
@ -206,7 +206,7 @@ export default {
//
this.showLoading = true;
confirmCurrentTask(request).then(res => {
confirmCurrentTask(request, { timeout: 15000 }).then(res => {
const responseData = res.data;
if (responseData.code === 0) {
ElMessage({
@ -243,6 +243,11 @@ export default {
this.bindingData.planPickQty = '';
this.bindingData.realRemainQty = '';
this.bindingData.containerNo = '';
//
this.$nextTick(() => {
this.$refs.sourceBoxInput.focus();
});
},
//

View File

@ -0,0 +1,10 @@
package com.wms_main.dao;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms_main.model.po.TAppOutsCheck;
/**
* 出库检查表服务接口
*/
public interface ITAppOutsCheckService extends IService<TAppOutsCheck> {
}

View File

@ -0,0 +1,15 @@
package com.wms_main.dao.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wms_main.dao.ITAppOutsCheckService;
import com.wms_main.mapper.AppOutsCheckMapper;
import com.wms_main.model.po.TAppOutsCheck;
import org.springframework.stereotype.Service;
/**
* 出库检查表服务实现类
*/
@Service
public class TAppOutsCheckServiceImpl extends ServiceImpl<AppOutsCheckMapper, TAppOutsCheck> implements ITAppOutsCheckService {
}

View File

@ -0,0 +1,13 @@
package com.wms_main.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wms_main.model.po.TAppOutsCheck;
import org.apache.ibatis.annotations.Mapper;
/**
* 出库检查表Mapper
*/
@Mapper
public interface AppOutsCheckMapper extends BaseMapper<TAppOutsCheck> {
}

View File

@ -21,7 +21,7 @@ public class SendWarehouseOutCompletedRequest {
/**
* 拣料明细
*/
private List<PickingDetail> pickingDetailParams;
private List<PickingDetail> PickingDetail;
@Data

View File

@ -0,0 +1,66 @@
package com.wms_main.model.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 出库检查表实体类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "t_app_outs_check", autoResultMap = true)
public class TAppOutsCheck {
/**
* 检查ID
*/
@TableId(value = "checks_id")
private String checksId;
/**
* 出库单编号
*/
@TableField(value = "wave_no")
private String waveNo;
/**
* 任务编号
*/
@TableField(value = "task_no")
private String taskNo;
/**
* 物料编号
*/
@TableField(value = "mat_no")
private String matNo;
/**
* 拣货数量
*/
@TableField(value = "picking_qty")
private Integer pickingQty;
/**
* 实际数量
*/
@TableField(value = "act_qty")
private Integer actQty;
/**
* 单位
*/
@TableField(value = "unit")
private String unit;
/**
* 容器编号
*/
@TableField(value = "container_no")
private String containerNo;
}

View File

@ -108,7 +108,7 @@ public class EwmApiServiceImpl implements IEwmApiService {
HttpRequest httpRequest = HttpRequest.postInstanceOf(
appCommon.getConfigByKey(AppConfigKeyEnums.EWM_SEND_WAREHOUSE_OUT_COMPLETED_URL.getKey()),
request,
5000,
10000,
"application/json",
"Basic " + encodedAuth);

View File

@ -67,6 +67,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
private final IConveyTaskService conveyTaskService;// 输送线任务服务
private final ITAppStandService appStandService;// 站台服务
private final ITAppOutsService appOutsService;// 出库单服务
private final ITAppOutsCheckService appOutsCheckService; // 出库单Check服务
private final IStockDataService stockDataService;// 库存数据服务
private final ITAppOutsRecordService appOutsRecordService;// 出库单记录服务
private final ITAppPickPlanService appPickPlanService;// 拣选计划服务
@ -1430,6 +1431,19 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
TAppOuts thisOut = appOutsService.getOne(new LambdaQueryWrapper<TAppOuts>()
.eq(TAppOuts::getTaskId, confirmTaskRequest.getTaskConfirm().getTaskId()));
// 将出库完成需要反馈的信息插入outsCheck表中
List<TAppOutsCheck> outsChecks = new ArrayList<>();
outsChecks.add(new TAppOutsCheck(
UUIDUtils.getNewUUID("CHECK_"),
thisOut.getWaveNo(),
confirmTaskRequest.getTaskConfirm().getTaskId(),
confirmTaskRequest.getTaskConfirm().getGoodsId(),
confirmTaskRequest.getTaskConfirm().getTotalNeed(),
confirmTaskRequest.getTaskConfirm().getRealPickQty(),
thisOut.getUnit(),
confirmTaskRequest.getTaskConfirm().getContainerNo()
));
appOutsCheckService.saveBatch(outsChecks);
// 当前站台到达的拣选任务
TAppPickTask thisPickTask = pickTaskList.getFirst();
if (confirmTaskRequest.getTaskConfirm() != null && StringUtils.isNotEmpty(confirmTaskRequest.getTaskConfirm().getTaskId())) {
@ -1471,29 +1485,29 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
}
// 放行
if (conveyTaskService.releaseStandVehicle(thisPickTask)) {
// 回告EWm系统出库完成
SendWarehouseOutCompletedRequest request = new SendWarehouseOutCompletedRequest();
List<SendWarehouseOutCompletedRequest.PickingDetail> pickingDetails = new ArrayList<>();
SendWarehouseOutCompletedRequest.PickingDetail pickingDetail = new SendWarehouseOutCompletedRequest.PickingDetail();
pickingDetail.setTaskNo(confirmTaskRequest.getTaskConfirm().getTaskId());
pickingDetail.setMatNo(confirmTaskRequest.getTaskConfirm().getGoodsId());
pickingDetail.setPickingQty(Double.valueOf(confirmTaskRequest.getTaskConfirm().getTotalNeed()));
pickingDetail.setActQty(Double.valueOf(confirmTaskRequest.getTaskConfirm().getRealPickQty()));
pickingDetail.setUnit(thisOut.getUnit());
pickingDetail.setContainerNo(confirmTaskRequest.getTaskConfirm().getContainerNo());
pickingDetails.add(pickingDetail);
request.setPickingDetailParams(pickingDetails);
request.setWaveNo(thisOut.getWaveNo());
request.setPickingType(thisOut.getPickingType());
EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseOutCompleted(request);
if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
log.info("调用EWM系统接口成功请求参数: {}", request);
}else {
log.error("调用EWM系统接口异常请求参数: {}", request);
//return BaseWmsApiResponse.error("调用EWM系统接口异常: " + ewmApiBackResponse.getMessage());
}
// // 回告EWm系统出库完成
// SendWarehouseOutCompletedRequest request = new SendWarehouseOutCompletedRequest();
// List<SendWarehouseOutCompletedRequest.PickingDetail> pickingDetails = new ArrayList<>();
// SendWarehouseOutCompletedRequest.PickingDetail pickingDetail = new SendWarehouseOutCompletedRequest.PickingDetail();
// pickingDetail.setTaskNo(confirmTaskRequest.getTaskConfirm().getTaskId());
// pickingDetail.setMatNo(confirmTaskRequest.getTaskConfirm().getGoodsId());
// pickingDetail.setPickingQty(Double.valueOf(confirmTaskRequest.getTaskConfirm().getTotalNeed()));
// pickingDetail.setActQty(Double.valueOf(confirmTaskRequest.getTaskConfirm().getRealPickQty()));
// pickingDetail.setUnit(thisOut.getUnit());
// pickingDetail.setContainerNo(confirmTaskRequest.getTaskConfirm().getContainerNo());
// pickingDetails.add(pickingDetail);
// request.setPickingDetail(pickingDetails);
// request.setWaveNo(thisOut.getWaveNo());
// request.setPickingType(thisOut.getPickingType());
//
// EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseOutCompleted(request);
// if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
// log.info("调用EWM系统接口成功请求参数: {}", request);
//
// }else {
// log.error("调用EWM系统接口异常请求参数: {}", request);
// //return BaseWmsApiResponse.error("调用EWM系统接口异常: " + ewmApiBackResponse.getMessage());
// }
return BaseWmsApiResponse.success("确认成功。");
} else {
// 回滚事务
@ -1924,6 +1938,36 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
outs.setPickNum(outs.getPickNum() + taskConfirm.getRealPickQty());
outs.setUserName(confirmTaskRequest.getUserName());
if (outs.getPickNum() >= outs.getNeedNum()) {
// 读取所有wave_no的outs_check表的数据全部反馈给EWM
List<TAppOutsCheck> checkList = appOutsCheckService.list(new LambdaQueryWrapper<TAppOutsCheck>()
.eq(TAppOutsCheck::getWaveNo, outs.getWaveNo()));
// 回告EWm系统出库完成
SendWarehouseOutCompletedRequest request = new SendWarehouseOutCompletedRequest();
List<SendWarehouseOutCompletedRequest.PickingDetail> pickingDetails = new ArrayList<>();
for (TAppOutsCheck check : checkList){
SendWarehouseOutCompletedRequest.PickingDetail pickingDetail = new SendWarehouseOutCompletedRequest.PickingDetail();
pickingDetail.setTaskNo(check.getTaskNo());
pickingDetail.setMatNo(check.getMatNo());
pickingDetail.setPickingQty(Double.valueOf(check.getPickingQty()));
pickingDetail.setActQty(Double.valueOf(check.getActQty()));
pickingDetail.setUnit(check.getUnit());
pickingDetail.setContainerNo(check.getContainerNo());
pickingDetails.add(pickingDetail);
}
request.setPickingDetail(pickingDetails);
request.setWaveNo(outs.getWaveNo());
request.setPickingType(outs.getPickingType());
EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseOutCompleted(request);
if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
log.info("调用EWM系统接口成功请求参数: {}", request);
appOutsCheckService.remove(new LambdaQueryWrapper<TAppOutsCheck>()
.eq(TAppOutsCheck::getWaveNo, outs.getWaveNo()));
}else {
log.error("调用EWM系统接口异常请求参数: {}", request);
//return BaseWmsApiResponse.error("调用EWM系统接口异常: " + ewmApiBackResponse.getMessage());
}
// 生成记录
TAppOutsRecord record = new TAppOutsRecord(
outs.getTaskId(),

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wms_main.mapper.AppOutsCheckMapper">
</mapper>