添加电子标签接收任务的外部接口
This commit is contained in:
parent
568ff5b261
commit
0214a4aaa4
|
|
@ -364,6 +364,7 @@ http://{ip}:{port}?taskId={taskId}
|
||||||
| ---------- | ------------ | -------- | ---- | -------- | ------------------------------------------------------------ |
|
| ---------- | ------------ | -------- | ---- | -------- | ------------------------------------------------------------ |
|
||||||
| taskGroup | 任务组 | string | 64 | N | |
|
| taskGroup | 任务组 | string | 64 | N | |
|
||||||
| taskType | 任务类型 | int | | Y | 枚举类型:<br />1 - 捡货<br />2 - 上架<br />3 - 盘点<br />4 - 清点<br />5 - 其他 |
|
| taskType | 任务类型 | int | | Y | 枚举类型:<br />1 - 捡货<br />2 - 上架<br />3 - 盘点<br />4 - 清点<br />5 - 其他 |
|
||||||
|
| vehicleNo | 载具号 | string | 64 | Y | |
|
||||||
| lightModel | 点亮类型 | int | | Y | 枚举类型:<br />1 - 立即点亮<br />2 - 等待触发<br /><span style="color:#f455ee">根据流程确定,请与我们交流方案</span> |
|
| lightModel | 点亮类型 | int | | Y | 枚举类型:<br />1 - 立即点亮<br />2 - 等待触发<br /><span style="color:#f455ee">根据流程确定,请与我们交流方案</span> |
|
||||||
| sysName | 上位系统名称 | string | 32 | Y | 固定值,请联系我们获取,否则将无法收到任务回告 |
|
| sysName | 上位系统名称 | string | 32 | Y | 固定值,请联系我们获取,否则将无法收到任务回告 |
|
||||||
| taskList | 任务数据 | list | | Y | |
|
| taskList | 任务数据 | list | | Y | |
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,18 @@ public enum EtagTaskLightModelEnum {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验是否是正确的枚举值
|
||||||
|
* @param code 枚举值
|
||||||
|
* @return 是否是正确的枚举值
|
||||||
|
*/
|
||||||
|
public static boolean isValid(Integer code) {
|
||||||
|
for (EtagTaskLightModelEnum value : EtagTaskLightModelEnum.values()) {
|
||||||
|
if (value.code.equals(code)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,19 @@ public enum EtagTaskTypeEnum {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验是否是正确的枚举值
|
||||||
|
*
|
||||||
|
* @param code code
|
||||||
|
* @return 是否合法
|
||||||
|
*/
|
||||||
|
public static boolean isValid(Integer code) {
|
||||||
|
for (EtagTaskTypeEnum value : EtagTaskTypeEnum.values()) {
|
||||||
|
if (value.code.equals(code)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.ibatis.executor.BatchResult;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.wcs.mapper.AppEtagTaskMapper;
|
import org.wcs.mapper.AppEtagTaskMapper;
|
||||||
import org.wcs.mapper.intf.AppEtagTaskService;
|
import org.wcs.mapper.intf.AppEtagTaskService;
|
||||||
|
|
@ -12,6 +13,7 @@ import org.wcs.model.bo.db.DataBaseActionResult;
|
||||||
import org.wcs.model.bo.tuple.Tuple2;
|
import org.wcs.model.bo.tuple.Tuple2;
|
||||||
import org.wcs.model.dto.serve.etagTask.EtagTaskQueryReq;
|
import org.wcs.model.dto.serve.etagTask.EtagTaskQueryReq;
|
||||||
import org.wcs.model.po.app.AppEtagTask;
|
import org.wcs.model.po.app.AppEtagTask;
|
||||||
|
import org.wcs.utils.AppStringUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -75,6 +77,26 @@ public class AppEtagTaskDao extends ServiceImpl<AppEtagTaskMapper, AppEtagTask>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增电子标签任务
|
||||||
|
* @param appEtagTaskList 新增参数
|
||||||
|
* @return 响应
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public DataBaseActionResult<Integer> insert(List<AppEtagTask> appEtagTaskList) {
|
||||||
|
if(appEtagTaskList == null || appEtagTaskList.isEmpty()) {
|
||||||
|
return new DataBaseActionResult<>(0, new Exception("参数错误"));
|
||||||
|
}
|
||||||
|
appEtagTaskList.forEach(appEtagTask -> appEtagTask.setCreateTime(LocalDateTime.now()));
|
||||||
|
try {
|
||||||
|
boolean saveBatch = super.saveBatch(appEtagTaskList);
|
||||||
|
return new DataBaseActionResult<>(saveBatch ? appEtagTaskList.size() : 0);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("批量新增电子标签任务失败", e);
|
||||||
|
return new DataBaseActionResult<>(0, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改电子标签任务
|
* 修改电子标签任务
|
||||||
* @param appEtagTask 修改参数
|
* @param appEtagTask 修改参数
|
||||||
|
|
@ -113,4 +135,24 @@ public class AppEtagTaskDao extends ServiceImpl<AppEtagTaskMapper, AppEtagTask>
|
||||||
return new DataBaseActionResult<>(0, e);
|
return new DataBaseActionResult<>(0, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据任务ID查询任务
|
||||||
|
* @param taskId 任务ID
|
||||||
|
* @return 任务列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<AppEtagTask> queryByTaskId(String taskId) {
|
||||||
|
if(AppStringUtils.isEmpty(taskId)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
LambdaQueryWrapper<AppEtagTask> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(AppEtagTask::getTaskId, taskId);
|
||||||
|
queryWrapper.orderByAsc(AppEtagTask::getCreateTime);
|
||||||
|
return baseMapper.selectList(queryWrapper);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,7 @@ public interface AppEtagTaskService extends IService<AppEtagTask> {
|
||||||
|
|
||||||
Tuple2<Long, List<AppEtagTask>> queryEtagTask(EtagTaskQueryReq request, Integer pageIndex, Integer pageSize);
|
Tuple2<Long, List<AppEtagTask>> queryEtagTask(EtagTaskQueryReq request, Integer pageIndex, Integer pageSize);
|
||||||
DataBaseActionResult<Integer> insert(AppEtagTask appEtagTask); // 插入新数据
|
DataBaseActionResult<Integer> insert(AppEtagTask appEtagTask); // 插入新数据
|
||||||
|
DataBaseActionResult<Integer> insert(List<AppEtagTask> appEtagTaskList); // 插入新数据
|
||||||
DataBaseActionResult<Integer> updateIgnoreNull(AppEtagTask appEtagTask); // 更新数据,忽略Null值
|
DataBaseActionResult<Integer> updateIgnoreNull(AppEtagTask appEtagTask); // 更新数据,忽略Null值
|
||||||
|
List<AppEtagTask> queryByTaskId(String taskId); // 通过任务ID查询
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,13 @@ public class AddEtagTaskReq {
|
||||||
@JsonProperty("taskType")
|
@JsonProperty("taskType")
|
||||||
private Integer taskType;
|
private Integer taskType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 载具号
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "载具号不能为空")
|
||||||
|
@JsonProperty("vehicleNo")
|
||||||
|
private String vehicleNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点亮模式
|
* 点亮模式
|
||||||
*/
|
*/
|
||||||
|
|
@ -49,7 +56,8 @@ public class AddEtagTaskReq {
|
||||||
*/
|
*/
|
||||||
@Valid
|
@Valid
|
||||||
@JsonProperty("taskItemList")
|
@JsonProperty("taskItemList")
|
||||||
@Size.List(@Size(min = 1, message = "任务列表不能为空"))
|
@Size(min = 1, message = "任务列表不能为空")
|
||||||
|
@NotNull(message = "任务列表不能为空")
|
||||||
private List<EtagTaskItem> taskItemList;
|
private List<EtagTaskItem> taskItemList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.wcs.model.dto.pub.AddConveyTaskReq;
|
import org.wcs.model.dto.pub.AddConveyTaskReq;
|
||||||
|
import org.wcs.model.dto.pub.AddEtagTaskReq;
|
||||||
import org.wcs.model.dto.pub.AddStockTaskReq;
|
import org.wcs.model.dto.pub.AddStockTaskReq;
|
||||||
import org.wcs.model.vo.pub.PubServeDataResponse;
|
import org.wcs.model.vo.pub.PubServeDataResponse;
|
||||||
import org.wcs.model.vo.pub.PubServeResponse;
|
import org.wcs.model.vo.pub.PubServeResponse;
|
||||||
|
|
@ -62,6 +63,16 @@ public class TaskController {
|
||||||
return taskService.addConveyTask(addConveyTaskReq);
|
return taskService.addConveyTask(addConveyTaskReq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加电子标签任务
|
||||||
|
* @param addEtagTaskReq 添加任务数据
|
||||||
|
* @return 添加结果
|
||||||
|
*/
|
||||||
|
@PostMapping("addEtagTask")
|
||||||
|
public PubServeResponse addEtagTask(@RequestBody @Validated AddEtagTaskReq addEtagTaskReq) {
|
||||||
|
return taskService.addEtagTask(addEtagTaskReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,22 @@
|
||||||
package org.wcs.serve.service.pub.impl;
|
package org.wcs.serve.service.pub.impl;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.wcs.constant.enums.common.TrueOrFalseEnum;
|
import org.wcs.constant.enums.common.TrueOrFalseEnum;
|
||||||
import org.wcs.constant.enums.database.ConveyTaskStatusEnum;
|
import org.wcs.constant.enums.database.*;
|
||||||
import org.wcs.constant.enums.database.ConveyTaskTypeEnum;
|
|
||||||
import org.wcs.constant.enums.database.StockComposeTaskStatusEnum;
|
|
||||||
import org.wcs.constant.enums.database.StockComposeTaskTypeEnum;
|
|
||||||
import org.wcs.factory.PubServeResponseFactory;
|
import org.wcs.factory.PubServeResponseFactory;
|
||||||
import org.wcs.helper.PlcTaskIdHelper;
|
import org.wcs.helper.PlcTaskIdHelper;
|
||||||
import org.wcs.mapper.intf.AppConveyTaskService;
|
import org.wcs.mapper.intf.AppConveyTaskService;
|
||||||
|
import org.wcs.mapper.intf.AppEtagTaskService;
|
||||||
import org.wcs.mapper.intf.AppStockComposeTaskBakService;
|
import org.wcs.mapper.intf.AppStockComposeTaskBakService;
|
||||||
import org.wcs.mapper.intf.AppStockComposeTaskService;
|
import org.wcs.mapper.intf.AppStockComposeTaskService;
|
||||||
import org.wcs.model.dto.pub.AddConveyTaskReq;
|
import org.wcs.model.dto.pub.AddConveyTaskReq;
|
||||||
|
import org.wcs.model.dto.pub.AddEtagTaskReq;
|
||||||
import org.wcs.model.dto.pub.AddStockTaskReq;
|
import org.wcs.model.dto.pub.AddStockTaskReq;
|
||||||
|
import org.wcs.model.dto.pub.EtagTaskItem;
|
||||||
import org.wcs.model.po.app.AppConveyTask;
|
import org.wcs.model.po.app.AppConveyTask;
|
||||||
|
import org.wcs.model.po.app.AppEtagTask;
|
||||||
import org.wcs.model.po.app.AppStockComposeTask;
|
import org.wcs.model.po.app.AppStockComposeTask;
|
||||||
import org.wcs.model.po.app.AppStockComposeTaskBak;
|
import org.wcs.model.po.app.AppStockComposeTaskBak;
|
||||||
import org.wcs.model.vo.pub.PubServeDataResponse;
|
import org.wcs.model.vo.pub.PubServeDataResponse;
|
||||||
|
|
@ -22,14 +24,15 @@ import org.wcs.model.vo.pub.PubServeResponse;
|
||||||
import org.wcs.model.vo.pub.task.StockTaskDetailVo;
|
import org.wcs.model.vo.pub.task.StockTaskDetailVo;
|
||||||
import org.wcs.serve.service.pub.intf.ITaskService;
|
import org.wcs.serve.service.pub.intf.ITaskService;
|
||||||
import org.wcs.utils.AppBeanUtils;
|
import org.wcs.utils.AppBeanUtils;
|
||||||
import org.wcs.utils.AppObjectUtils;
|
|
||||||
import org.wcs.utils.AppStringUtils;
|
import org.wcs.utils.AppStringUtils;
|
||||||
import org.wcs.utils.AppUUIDUtils;
|
import org.wcs.utils.AppUUIDUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class TaskService implements ITaskService {
|
public class TaskService implements ITaskService {
|
||||||
|
|
@ -40,6 +43,8 @@ public class TaskService implements ITaskService {
|
||||||
|
|
||||||
private final AppConveyTaskService conveyTaskService; // 箱式线任务服务
|
private final AppConveyTaskService conveyTaskService; // 箱式线任务服务
|
||||||
|
|
||||||
|
private final AppEtagTaskService etagTaskService; // 电子标签任务服务
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加仓库任务
|
* 添加仓库任务
|
||||||
* @param addStockTaskReq 添加仓库任务请求
|
* @param addStockTaskReq 添加仓库任务请求
|
||||||
|
|
@ -199,5 +204,61 @@ public class TaskService implements ITaskService {
|
||||||
return insertRows > 0 ? PubServeResponseFactory.success("添加任务成功") : PubServeResponseFactory.fail("数据服务异常,请重试");
|
return insertRows > 0 ? PubServeResponseFactory.success("添加任务成功") : PubServeResponseFactory.fail("数据服务异常,请重试");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加电子标签任务
|
||||||
|
* @param addEtagTaskReq 添加任务数据
|
||||||
|
* @return 添加结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public PubServeResponse addEtagTask(AddEtagTaskReq addEtagTaskReq) {
|
||||||
|
boolean validTaskTypeResult = EtagTaskTypeEnum.isValid(addEtagTaskReq.getTaskType());
|
||||||
|
if(!validTaskTypeResult) {
|
||||||
|
return PubServeResponseFactory.fail("任务类型不在支持的范围内");
|
||||||
|
}
|
||||||
|
boolean validLightModelResult = EtagTaskLightModelEnum.isValid(addEtagTaskReq.getLightModel());
|
||||||
|
if(!validLightModelResult) {
|
||||||
|
return PubServeResponseFactory.fail("点亮模式不在支持的范围内");
|
||||||
|
}
|
||||||
|
// 定义任务组
|
||||||
|
String taskGroup = addEtagTaskReq.getTaskGroup();
|
||||||
|
if(AppStringUtils.isEmpty(taskGroup)) {
|
||||||
|
taskGroup = AppUUIDUtils.getNewUUID();
|
||||||
|
}
|
||||||
|
List<AppEtagTask> newEtagTaskList = new ArrayList<>(); // 新增任务列表
|
||||||
|
List<EtagTaskItem> taskItemList = addEtagTaskReq.getTaskItemList();
|
||||||
|
for (EtagTaskItem etagTaskItem : taskItemList) {
|
||||||
|
// 检验任务是否存在
|
||||||
|
List<AppEtagTask> appEtagTasks = etagTaskService.queryByTaskId(etagTaskItem.getTaskId());
|
||||||
|
if(appEtagTasks == null) {
|
||||||
|
return PubServeResponseFactory.fail("数据服务异常,请重试");
|
||||||
|
}
|
||||||
|
if(!appEtagTasks.isEmpty()) {
|
||||||
|
log.info("收到一个重复的电子标签任务:{}", AppStringUtils.objectToString(etagTaskItem));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
AppEtagTask appEtagTask = new AppEtagTask();
|
||||||
|
appEtagTask.setTaskId(etagTaskItem.getTaskId());
|
||||||
|
appEtagTask.setTaskGroup(taskGroup);
|
||||||
|
appEtagTask.setTaskType(addEtagTaskReq.getTaskType());
|
||||||
|
appEtagTask.setVehicleNo(addEtagTaskReq.getVehicleNo());
|
||||||
|
appEtagTask.setOrderId(etagTaskItem.getOrderId());
|
||||||
|
appEtagTask.setLocation(etagTaskItem.getLocation());
|
||||||
|
appEtagTask.setGoodsId(etagTaskItem.getGoodsId());
|
||||||
|
appEtagTask.setGoodsName(etagTaskItem.getGoodsName());
|
||||||
|
appEtagTask.setLightNum(BigDecimal.valueOf(etagTaskItem.getLightNum()));
|
||||||
|
appEtagTask.setTaskStatus(EtagTaskStatusEnum.NOT_ACTIVATED.getCode());
|
||||||
|
appEtagTask.setLightModel(addEtagTaskReq.getLightModel());
|
||||||
|
appEtagTask.setTaskSource(addEtagTaskReq.getSysName());
|
||||||
|
appEtagTask.setCreatePerson("?");
|
||||||
|
appEtagTask.setCreateTime(LocalDateTime.now());
|
||||||
|
newEtagTaskList.add(appEtagTask);
|
||||||
|
}
|
||||||
|
if(newEtagTaskList.isEmpty()) {
|
||||||
|
return PubServeResponseFactory.success("任务已存在,请勿重复发送");
|
||||||
|
}
|
||||||
|
Integer result = etagTaskService.insert(newEtagTaskList).result();
|
||||||
|
return result > 0 ? PubServeResponseFactory.success("添加成功") : PubServeResponseFactory.fail("数据服务异常,请重试");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package org.wcs.serve.service.pub.intf;
|
package org.wcs.serve.service.pub.intf;
|
||||||
|
|
||||||
import org.wcs.model.dto.pub.AddConveyTaskReq;
|
import org.wcs.model.dto.pub.AddConveyTaskReq;
|
||||||
|
import org.wcs.model.dto.pub.AddEtagTaskReq;
|
||||||
import org.wcs.model.dto.pub.AddStockTaskReq;
|
import org.wcs.model.dto.pub.AddStockTaskReq;
|
||||||
import org.wcs.model.vo.pub.PubServeDataResponse;
|
import org.wcs.model.vo.pub.PubServeDataResponse;
|
||||||
import org.wcs.model.vo.pub.PubServeResponse;
|
import org.wcs.model.vo.pub.PubServeResponse;
|
||||||
|
|
@ -13,4 +14,6 @@ public interface ITaskService {
|
||||||
PubServeResponse cancelStockTask(String taskId); // 取消仓库任务
|
PubServeResponse cancelStockTask(String taskId); // 取消仓库任务
|
||||||
|
|
||||||
PubServeResponse addConveyTask(AddConveyTaskReq addConveyTaskReq); // 添加箱式线任务
|
PubServeResponse addConveyTask(AddConveyTaskReq addConveyTaskReq); // 添加箱式线任务
|
||||||
|
|
||||||
|
PubServeResponse addEtagTask(AddEtagTaskReq addEtagTaskReq); // 添加电子标签任务
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user