添加电子标签接收任务的外部接口
This commit is contained in:
parent
568ff5b261
commit
0214a4aaa4
|
|
@ -364,6 +364,7 @@ http://{ip}:{port}?taskId={taskId}
|
|||
| ---------- | ------------ | -------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| taskGroup | 任务组 | string | 64 | N | |
|
||||
| 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> |
|
||||
| sysName | 上位系统名称 | string | 32 | Y | 固定值,请联系我们获取,否则将无法收到任务回告 |
|
||||
| taskList | 任务数据 | list | | Y | |
|
||||
|
|
|
|||
|
|
@ -18,4 +18,18 @@ public enum EtagTaskLightModelEnum {
|
|||
this.code = code;
|
||||
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.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.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.executor.BatchResult;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.wcs.mapper.AppEtagTaskMapper;
|
||||
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.dto.serve.etagTask.EtagTaskQueryReq;
|
||||
import org.wcs.model.po.app.AppEtagTask;
|
||||
import org.wcs.utils.AppStringUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
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 修改参数
|
||||
|
|
@ -113,4 +135,24 @@ public class AppEtagTaskDao extends ServiceImpl<AppEtagTaskMapper, AppEtagTask>
|
|||
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);
|
||||
DataBaseActionResult<Integer> insert(AppEtagTask appEtagTask); // 插入新数据
|
||||
DataBaseActionResult<Integer> insert(List<AppEtagTask> appEtagTaskList); // 插入新数据
|
||||
DataBaseActionResult<Integer> updateIgnoreNull(AppEtagTask appEtagTask); // 更新数据,忽略Null值
|
||||
List<AppEtagTask> queryByTaskId(String taskId); // 通过任务ID查询
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,13 @@ public class AddEtagTaskReq {
|
|||
@JsonProperty("taskType")
|
||||
private Integer taskType;
|
||||
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
@NotBlank(message = "载具号不能为空")
|
||||
@JsonProperty("vehicleNo")
|
||||
private String vehicleNo;
|
||||
|
||||
/**
|
||||
* 点亮模式
|
||||
*/
|
||||
|
|
@ -49,7 +56,8 @@ public class AddEtagTaskReq {
|
|||
*/
|
||||
@Valid
|
||||
@JsonProperty("taskItemList")
|
||||
@Size.List(@Size(min = 1, message = "任务列表不能为空"))
|
||||
@Size(min = 1, message = "任务列表不能为空")
|
||||
@NotNull(message = "任务列表不能为空")
|
||||
private List<EtagTaskItem> taskItemList;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
|
|||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
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.vo.pub.PubServeDataResponse;
|
||||
import org.wcs.model.vo.pub.PubServeResponse;
|
||||
|
|
@ -62,6 +63,16 @@ public class TaskController {
|
|||
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;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.wcs.constant.enums.common.TrueOrFalseEnum;
|
||||
import org.wcs.constant.enums.database.ConveyTaskStatusEnum;
|
||||
import org.wcs.constant.enums.database.ConveyTaskTypeEnum;
|
||||
import org.wcs.constant.enums.database.StockComposeTaskStatusEnum;
|
||||
import org.wcs.constant.enums.database.StockComposeTaskTypeEnum;
|
||||
import org.wcs.constant.enums.database.*;
|
||||
import org.wcs.factory.PubServeResponseFactory;
|
||||
import org.wcs.helper.PlcTaskIdHelper;
|
||||
import org.wcs.mapper.intf.AppConveyTaskService;
|
||||
import org.wcs.mapper.intf.AppEtagTaskService;
|
||||
import org.wcs.mapper.intf.AppStockComposeTaskBakService;
|
||||
import org.wcs.mapper.intf.AppStockComposeTaskService;
|
||||
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.EtagTaskItem;
|
||||
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.AppStockComposeTaskBak;
|
||||
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.serve.service.pub.intf.ITaskService;
|
||||
import org.wcs.utils.AppBeanUtils;
|
||||
import org.wcs.utils.AppObjectUtils;
|
||||
import org.wcs.utils.AppStringUtils;
|
||||
import org.wcs.utils.AppUUIDUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TaskService implements ITaskService {
|
||||
|
|
@ -40,6 +43,8 @@ public class TaskService implements ITaskService {
|
|||
|
||||
private final AppConveyTaskService conveyTaskService; // 箱式线任务服务
|
||||
|
||||
private final AppEtagTaskService etagTaskService; // 电子标签任务服务
|
||||
|
||||
/**
|
||||
* 添加仓库任务
|
||||
* @param addStockTaskReq 添加仓库任务请求
|
||||
|
|
@ -199,5 +204,61 @@ public class TaskService implements ITaskService {
|
|||
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;
|
||||
|
||||
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.vo.pub.PubServeDataResponse;
|
||||
import org.wcs.model.vo.pub.PubServeResponse;
|
||||
|
|
@ -13,4 +14,6 @@ public interface ITaskService {
|
|||
PubServeResponse cancelStockTask(String taskId); // 取消仓库任务
|
||||
|
||||
PubServeResponse addConveyTask(AddConveyTaskReq addConveyTaskReq); // 添加箱式线任务
|
||||
|
||||
PubServeResponse addEtagTask(AddEtagTaskReq addEtagTaskReq); // 添加电子标签任务
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user