添加电子标签点亮相关逻辑
This commit is contained in:
parent
bf7f97d90a
commit
e50d0a9562
|
|
@ -19,4 +19,4 @@
|
||||||
|
|
||||||
电子标签联动输送线逻辑:输送线扫码时检查该捡选站台对应的电子标签货位是否有任务,若有则弹出;此处<span style="color:#F56789">需要正确在电子标签货位表填写站台号</span>
|
电子标签联动输送线逻辑:输送线扫码时检查该捡选站台对应的电子标签货位是否有任务,若有则弹出;此处<span style="color:#F56789">需要正确在电子标签货位表填写站台号</span>
|
||||||
|
|
||||||
电子标签状态:已经激活的直接定时任务点亮,未激活的要扫码触发
|
电子标签状态:立即点亮的直接定时任务点亮,未激活的要扫码触发
|
||||||
|
|
@ -364,6 +364,7 @@ public class EtagDataHandler {
|
||||||
log.info("电子标签普通标签 {},未检索到任务", appEtagTagInfo.getTagName());
|
log.info("电子标签普通标签 {},未检索到任务", appEtagTagInfo.getTagName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
etagRedis.removeEtagTagTask(appEtagTagInfo.getTagName()); // 解绑这个标签绑定的任务
|
||||||
// 更新确认数量和确认人
|
// 更新确认数量和确认人
|
||||||
String user = etagRedis.getEtagAreaUser(appEtagTagInfo.getAreaId()); // 确认人
|
String user = etagRedis.getEtagAreaUser(appEtagTagInfo.getAreaId()); // 确认人
|
||||||
int confirmNum = AppStringUtils.forceToInt(etagReturnInfo.getData());
|
int confirmNum = AppStringUtils.forceToInt(etagReturnInfo.getData());
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,261 @@
|
||||||
package org.wcs.business.etag;
|
package org.wcs.business.etag;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.wcs.business.redis.EtagRedis;
|
||||||
|
import org.wcs.constant.enums.database.EtagBusinessTypeEnum;
|
||||||
|
import org.wcs.constant.enums.database.EtagTaskLightModelEnum;
|
||||||
|
import org.wcs.constant.enums.database.EtagTaskStatusEnum;
|
||||||
|
import org.wcs.constant.enums.etag.LedBlinkingEnum;
|
||||||
|
import org.wcs.constant.enums.etag.LedColorEnum;
|
||||||
|
import org.wcs.mapper.intf.AppEtagTagInfoService;
|
||||||
|
import org.wcs.mapper.intf.AppEtagTaskService;
|
||||||
|
import org.wcs.model.bo.etag.EtagLightParams;
|
||||||
|
import org.wcs.model.po.app.AppEtagTagInfo;
|
||||||
|
import org.wcs.model.po.app.AppEtagTagLocation;
|
||||||
|
import org.wcs.model.po.app.AppEtagTask;
|
||||||
|
import org.wcs.utils.AppStringUtils;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电子标签任务执行类
|
* 电子标签任务执行类
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class EtagTaskExecute {
|
public class EtagTaskExecute {
|
||||||
|
|
||||||
/**
|
|
||||||
* 点亮汇总标签
|
|
||||||
*/
|
|
||||||
public void lightSummaryTag() {
|
|
||||||
|
|
||||||
}
|
// 电子标签操作类
|
||||||
|
private final EtagAtopOperation etagAtopOperation;
|
||||||
|
// 电子标签任务服务
|
||||||
|
private final AppEtagTaskService etagTaskService;
|
||||||
|
// 电子标签小标签数据库服务
|
||||||
|
private final AppEtagTagInfoService etagTagInfoService;
|
||||||
|
// 电子标签Redis操作类
|
||||||
|
private final EtagRedis etagRedis;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点亮小标签
|
* 点亮小标签
|
||||||
*/
|
*/
|
||||||
public void lightSmallTag() {
|
public void lightSmallTag() {
|
||||||
|
lightImmediatelyTask(); // 点亮立即点亮的任务
|
||||||
|
lightNeedFireTask(); // 点亮需要触发的任务
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点亮通道灯
|
* 点亮立即点亮的任务
|
||||||
|
*/
|
||||||
|
private void lightImmediatelyTask() {
|
||||||
|
// 点亮立即点亮的任务
|
||||||
|
AppEtagTask queryImmediatelyTask = new AppEtagTask();
|
||||||
|
queryImmediatelyTask.setTaskStatus(EtagTaskStatusEnum.NOT_ACTIVATED.getCode());
|
||||||
|
queryImmediatelyTask.setLightModel(EtagTaskLightModelEnum.IMMEDIATELY.getCode());
|
||||||
|
List<AppEtagTask> immediatelyTaskList = etagTaskService.queryIgnoreNull(queryImmediatelyTask);
|
||||||
|
if(immediatelyTaskList == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (immediatelyTaskList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lightEtagTasks(immediatelyTaskList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点亮需要触发的任务
|
||||||
|
*/
|
||||||
|
private void lightNeedFireTask() {
|
||||||
|
// 查找区域绑定好的载具信息
|
||||||
|
Map<String, String> areaVehicleAll = etagRedis.getEtagAreaVehicleAll();
|
||||||
|
for (Map.Entry<String, String> entry : areaVehicleAll.entrySet()) {
|
||||||
|
String areaId = entry.getKey(); // 区域编号
|
||||||
|
String vehicleNo = entry.getValue(); // 载具编号
|
||||||
|
if(AppStringUtils.isEmpty(areaId) || AppStringUtils.isEmpty(vehicleNo)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Integer> taskStatus = List.of(EtagTaskStatusEnum.NOT_ACTIVATED.getCode());
|
||||||
|
List<AppEtagTask> appEtagTaskList = etagTaskService.queryByTagAreaIdAndVehicleAndStatus(areaId, vehicleNo, taskStatus);
|
||||||
|
if(appEtagTaskList == null || appEtagTaskList.isEmpty()) {
|
||||||
|
continue; // 查找任务失败或者没找到任务就继续下拨循环
|
||||||
|
}
|
||||||
|
lightEtagTasks(appEtagTaskList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点亮任务列表
|
||||||
|
* @param appEtagTaskList 电子标签任务列表
|
||||||
|
*/
|
||||||
|
private void lightEtagTasks(List<AppEtagTask> appEtagTaskList) {
|
||||||
|
for (AppEtagTask etagTask : appEtagTaskList) {
|
||||||
|
// 查找这个任务货位对应的标签信息
|
||||||
|
AppEtagTagLocation appEtagTagLocation = etagRedis.getEtagLocation(etagTask.getLocation());
|
||||||
|
if(appEtagTagLocation == null) {
|
||||||
|
log.info("点亮标签任务:{},时未找到货位:{} 的信息", etagTask.getTaskId(), etagTask.getLocation());
|
||||||
|
AppEtagTask updateEtagTask = new AppEtagTask();
|
||||||
|
updateEtagTask.setTaskId(etagTask.getTaskId());
|
||||||
|
updateEtagTask.setTaskStatus(EtagTaskStatusEnum.ERROR.getCode());
|
||||||
|
updateEtagTask.setCompletedTime(LocalDateTime.now());
|
||||||
|
updateEtagTask.setRemark("未找到货位:" + etagTask.getLocation() + " 的信息");
|
||||||
|
Integer result = etagTaskService.updateIgnoreNull(updateEtagTask).result();
|
||||||
|
log.info("更新电子标签任务:{},结果:{},更新项:{}", updateEtagTask.getTaskId(), result, updateEtagTask);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 查找这个标签绑定的任务
|
||||||
|
AppEtagTask etagTagTask = etagRedis.getEtagTagTask(appEtagTagLocation.getTagName());
|
||||||
|
if(etagTagTask != null) {
|
||||||
|
// 绑定了任务,说明标签还在亮着,得等按下完成
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 查找这个标签名称对应的数据
|
||||||
|
AppEtagTagInfo appEtagTagInfo = etagRedis.getEtagTag(appEtagTagLocation.getTagName());
|
||||||
|
if(appEtagTagInfo == null) {
|
||||||
|
log.info("点亮标签任务:{},时未找到标签:{} 的信息", etagTask.getTaskId(), appEtagTagLocation.getTagName());
|
||||||
|
AppEtagTask updateEtagTask = new AppEtagTask();
|
||||||
|
updateEtagTask.setTaskId(etagTask.getTaskId());
|
||||||
|
updateEtagTask.setTaskStatus(EtagTaskStatusEnum.ERROR.getCode());
|
||||||
|
updateEtagTask.setCompletedTime(LocalDateTime.now());
|
||||||
|
updateEtagTask.setRemark("未找到标签:" + appEtagTagLocation.getTagName() + " 的信息");
|
||||||
|
Integer result = etagTaskService.updateIgnoreNull(updateEtagTask).result();
|
||||||
|
log.info("更新电子标签任务:{},结果:{},更新项:{}", updateEtagTask.getTaskId(), result, updateEtagTask);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 点亮标签
|
||||||
|
EtagLightParams lightParams = EtagLightParams.builder()
|
||||||
|
.tagName(appEtagTagInfo.getTagName())
|
||||||
|
.tagId(appEtagTagInfo.getTagId().byteValue())
|
||||||
|
.tagValue(String.valueOf(etagTask.getLightNum()))
|
||||||
|
.tagString(etagTask.getGoodsName() + "[" + etagTask.getGoodsId() + "]")
|
||||||
|
.ledBlinking(LedBlinkingEnum.BLINKING_0_25)
|
||||||
|
.ledColor(LedColorEnum.ORANGE)
|
||||||
|
.build();
|
||||||
|
String lightTagResult = etagAtopOperation.lightTag(lightParams);
|
||||||
|
log.info("点亮电子标签: {},点亮参数:{},点亮结果:{}", appEtagTagLocation.getTagName(), lightParams, lightTagResult);
|
||||||
|
if(AppStringUtils.isEmpty(lightTagResult)) {
|
||||||
|
etagRedis.setEtagTagTask(appEtagTagLocation.getTagName(), etagTask); // 点亮成功,将任务绑定到标签
|
||||||
|
// 更新任务状态
|
||||||
|
AppEtagTask updateEtagTask = new AppEtagTask();
|
||||||
|
updateEtagTask.setTaskId(etagTask.getTaskId());
|
||||||
|
updateEtagTask.setTaskStatus(EtagTaskStatusEnum.LIGHTING.getCode());
|
||||||
|
updateEtagTask.setLightTime(LocalDateTime.now());
|
||||||
|
Integer result = etagTaskService.updateIgnoreNull(updateEtagTask).result();
|
||||||
|
log.info("更新电子标签任务:{},结果:{},更新项:{}", updateEtagTask.getTaskId(), result, updateEtagTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点亮和熄灭通道灯
|
||||||
*/
|
*/
|
||||||
public void lightTunnelLight() {
|
public void lightTunnelLight() {
|
||||||
|
AppEtagTagInfo queryLightTag = new AppEtagTagInfo();
|
||||||
|
queryLightTag.setBusinessType(EtagBusinessTypeEnum.TUNNEL_LIGHT.getCode());
|
||||||
|
List<AppEtagTagInfo> etagTagInfoList = etagTagInfoService.queryIgnoreNull(queryLightTag); // 所有的通道灯数据
|
||||||
|
if(etagTagInfoList == null || etagTagInfoList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<EtagLightParams> lightParamsList = new ArrayList<>(); // 各个通道灯的点亮参数
|
||||||
|
// 遍历所有通道灯,获取各个通道灯的标签名称,检查其是否有绑定的任务
|
||||||
|
for (AppEtagTagInfo etagTagInfo : etagTagInfoList) {
|
||||||
|
AppEtagTagInfo queryTunnelEtag = new AppEtagTagInfo();
|
||||||
|
queryTunnelEtag.setTunnelNo(etagTagInfo.getTunnelNo());
|
||||||
|
List<AppEtagTagInfo> tunnelEtagTagInfoList = etagTagInfoService.queryIgnoreNull(queryTunnelEtag);
|
||||||
|
if(tunnelEtagTagInfoList == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean existTask = false; // 是否存在任务
|
||||||
|
for (AppEtagTagInfo tunnelEtagTagInfo : tunnelEtagTagInfoList) {
|
||||||
|
existTask = etagRedis.existsEtagTagTask(tunnelEtagTagInfo.getTagName());
|
||||||
|
if(existTask) {
|
||||||
|
break; // 存在一个任务即视为存在,直接跳出
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EtagLightParams lightParams; // 点亮参数
|
||||||
|
if(existTask) {
|
||||||
|
lightParams = EtagLightParams.builder()
|
||||||
|
.tagName(etagTagInfo.getTagName())
|
||||||
|
.tagId(etagTagInfo.getTagId().byteValue())
|
||||||
|
.ledBlinking(LedBlinkingEnum.LED_ON)
|
||||||
|
.ledColor(LedColorEnum.GREEN)
|
||||||
|
.build();
|
||||||
|
} else {
|
||||||
|
lightParams = EtagLightParams.builder()
|
||||||
|
.tagName(etagTagInfo.getTagName())
|
||||||
|
.tagId(etagTagInfo.getTagId().byteValue())
|
||||||
|
.ledBlinking(LedBlinkingEnum.LED_OFF)
|
||||||
|
.ledColor(LedColorEnum.GREEN)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
lightParamsList.add(lightParams);
|
||||||
|
}
|
||||||
|
// 执行点亮或者熄灭动作
|
||||||
|
for (EtagLightParams lightParamsItem : lightParamsList) {
|
||||||
|
etagAtopOperation.lightTag(lightParamsItem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点亮汇总标签
|
||||||
|
*/
|
||||||
|
public void lightSummaryTag() {
|
||||||
|
AppEtagTagInfo querySummaryTag = new AppEtagTagInfo();
|
||||||
|
querySummaryTag.setBusinessType(EtagBusinessTypeEnum.AREA.getCode());
|
||||||
|
List<AppEtagTagInfo> etagTagInfoList = etagTagInfoService.queryIgnoreNull(querySummaryTag); // 所有的区域标签数据
|
||||||
|
if(etagTagInfoList == null || etagTagInfoList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<EtagLightParams> lightParamsList = new ArrayList<>(); // 各个区域标签的点亮参数
|
||||||
|
for (AppEtagTagInfo etagTagInfo : etagTagInfoList) {
|
||||||
|
String etagAreaVehicle = etagRedis.getEtagAreaVehicle(etagTagInfo.getAreaId());
|
||||||
|
if(AppStringUtils.isEmpty(etagAreaVehicle)) {
|
||||||
|
// 没有绑定的载具了
|
||||||
|
lightParamsList.add(EtagLightParams.builder().tagName(etagTagInfo.getTagName())
|
||||||
|
.tagId(etagTagInfo.getTagId().byteValue()).tagValue("0").tagString("无任务")
|
||||||
|
.ledBlinking(LedBlinkingEnum.LED_OFF).ledColor(LedColorEnum.GREEN).build());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 还有绑定的载具
|
||||||
|
List<Integer> notCompletedTaskStatus = Arrays.asList(EtagTaskStatusEnum.NOT_ACTIVATED.getCode(), EtagTaskStatusEnum.LIGHTING.getCode());
|
||||||
|
// 检查这个载具有没有完成所有的任务
|
||||||
|
List<AppEtagTask> allEtagTaskList = etagTaskService.queryByVehicleAndStatus(etagAreaVehicle, notCompletedTaskStatus);
|
||||||
|
if(allEtagTaskList == null) {
|
||||||
|
continue; // 查询数据库失败
|
||||||
|
}
|
||||||
|
if(allEtagTaskList.isEmpty()) {
|
||||||
|
lightParamsList.add(EtagLightParams.builder().tagName(etagTagInfo.getTagName())
|
||||||
|
.tagId(etagTagInfo.getTagId().byteValue()).tagValue("0").tagString("全部完成:" + etagAreaVehicle)
|
||||||
|
.ledBlinking(LedBlinkingEnum.LED_OFF).ledColor(LedColorEnum.GREEN).build());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 检查这个区域还有没有这个载具的任务
|
||||||
|
List<AppEtagTask> thisAreaEtagTaskList = etagTaskService.queryByTagAreaIdAndVehicleAndStatus(etagTagInfo.getAreaId(), etagAreaVehicle, notCompletedTaskStatus);
|
||||||
|
if(thisAreaEtagTaskList == null) {
|
||||||
|
continue; // 查询数据库失败
|
||||||
|
}
|
||||||
|
if(thisAreaEtagTaskList.isEmpty()) {
|
||||||
|
lightParamsList.add(EtagLightParams.builder().tagName(etagTagInfo.getTagName())
|
||||||
|
.tagId(etagTagInfo.getTagId().byteValue()).tagValue("0").tagString("任务完成:" + etagAreaVehicle)
|
||||||
|
.ledBlinking(LedBlinkingEnum.LED_ON).ledColor(LedColorEnum.BLUE).build());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 正在捡选的情况
|
||||||
|
lightParamsList.add(EtagLightParams.builder().tagName(etagTagInfo.getTagName())
|
||||||
|
.tagId(etagTagInfo.getTagId().byteValue()).tagValue(String.valueOf(thisAreaEtagTaskList.size())).tagString("正在捡选:" + etagAreaVehicle)
|
||||||
|
.ledBlinking(LedBlinkingEnum.LED_ON).ledColor(LedColorEnum.ORANGE).build());
|
||||||
|
}
|
||||||
|
// 执行点亮或者熄灭动作
|
||||||
|
for (EtagLightParams lightParamsItem : lightParamsList) {
|
||||||
|
etagAtopOperation.lightTag(lightParamsItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,6 @@ public class EtagRedis {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ******************** 电子标签货位信息 *********************** */
|
/* ******************** 电子标签货位信息 *********************** */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -179,6 +178,22 @@ public class EtagRedis {
|
||||||
return stringRedisTemplate.hasKey(ETAG_TAG_TASK_KEY + ":" + tagName);
|
return stringRedisTemplate.hasKey(ETAG_TAG_TASK_KEY + ":" + tagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有电子标签绑定的任务信息
|
||||||
|
* @return 所有电子标签绑定的任务信息
|
||||||
|
*/
|
||||||
|
public Map<String, String> getEtagTagTaskAll() {
|
||||||
|
Map<String, String> tagInfoMap = new HashMap<>();
|
||||||
|
Set<String> keys = stringRedisTemplate.keys(ETAG_TAG_TASK_KEY + ":*");
|
||||||
|
for (String key : keys) {
|
||||||
|
String tagInfo = stringRedisTemplate.opsForValue().get(key);
|
||||||
|
String[] tagNameSplit = key.split(":");
|
||||||
|
tagInfoMap.put(tagNameSplit[tagNameSplit.length - 1], tagInfo);
|
||||||
|
}
|
||||||
|
return tagInfoMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ******************** 电子标签区域绑定的用户信息 *********************** */
|
/* ******************** 电子标签区域绑定的用户信息 *********************** */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -188,4 +188,64 @@ public class AppEtagTaskDao extends ServiceImpl<AppEtagTaskMapper, AppEtagTask>
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据载具和状态查询任务
|
||||||
|
* @param vehicleNo 载具
|
||||||
|
* @param status 状态列表
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<AppEtagTask> queryByVehicleAndStatus(String vehicleNo, List<Integer> status) {
|
||||||
|
if (status == null || status.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<AppEtagTask> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(AppEtagTask::getVehicleNo, vehicleNo)
|
||||||
|
.in(AppEtagTask::getTaskStatus, status)
|
||||||
|
.orderByAsc(AppEtagTask::getCreateTime);
|
||||||
|
try {
|
||||||
|
return super.baseMapper.selectList(queryWrapper);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 忽略Null值查询条件查询
|
||||||
|
* @param appEtagTask 查询参数
|
||||||
|
* @return 任务列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<AppEtagTask> queryIgnoreNull(AppEtagTask appEtagTask) {
|
||||||
|
if(appEtagTask == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<AppEtagTask> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(appEtagTask.getTaskId() != null, AppEtagTask::getTaskId, appEtagTask.getTaskId());
|
||||||
|
queryWrapper.eq(appEtagTask.getTaskGroup() != null, AppEtagTask::getTaskGroup, appEtagTask.getTaskGroup());
|
||||||
|
queryWrapper.eq(appEtagTask.getTaskType() != null, AppEtagTask::getTaskType, appEtagTask.getTaskType());
|
||||||
|
queryWrapper.eq(appEtagTask.getVehicleNo() != null, AppEtagTask::getVehicleNo, appEtagTask.getVehicleNo());
|
||||||
|
queryWrapper.eq(appEtagTask.getOrderId() != null, AppEtagTask::getOrderId, appEtagTask.getOrderId());
|
||||||
|
queryWrapper.eq(appEtagTask.getLocation() != null, AppEtagTask::getLocation, appEtagTask.getLocation());
|
||||||
|
queryWrapper.eq(appEtagTask.getGoodsId() != null, AppEtagTask::getGoodsId, appEtagTask.getGoodsId());
|
||||||
|
queryWrapper.eq(appEtagTask.getGoodsName() != null, AppEtagTask::getGoodsName, appEtagTask.getGoodsName());
|
||||||
|
queryWrapper.eq(appEtagTask.getLightNum() != null, AppEtagTask::getLightNum, appEtagTask.getLightNum());
|
||||||
|
queryWrapper.eq(appEtagTask.getConfirmNum() != null, AppEtagTask::getConfirmNum, appEtagTask.getConfirmNum());
|
||||||
|
queryWrapper.eq(appEtagTask.getTaskStatus() != null, AppEtagTask::getTaskStatus, appEtagTask.getTaskStatus());
|
||||||
|
queryWrapper.eq(appEtagTask.getLightModel() != null, AppEtagTask::getLightModel, appEtagTask.getLightModel());
|
||||||
|
queryWrapper.eq(appEtagTask.getTaskSource() != null, AppEtagTask::getTaskSource, appEtagTask.getTaskSource());
|
||||||
|
queryWrapper.eq(appEtagTask.getCreatePerson() != null, AppEtagTask::getCreatePerson, appEtagTask.getCreatePerson());
|
||||||
|
queryWrapper.eq(appEtagTask.getCreateTime() != null, AppEtagTask::getCreateTime, appEtagTask.getCreateTime());
|
||||||
|
queryWrapper.eq(appEtagTask.getLightTime() != null, AppEtagTask::getLightTime, appEtagTask.getLightTime());
|
||||||
|
queryWrapper.eq(appEtagTask.getConfirmTime() != null, AppEtagTask::getConfirmTime, appEtagTask.getConfirmTime());
|
||||||
|
queryWrapper.eq(appEtagTask.getConfirmPerson() != null, AppEtagTask::getConfirmPerson, appEtagTask.getConfirmPerson());
|
||||||
|
queryWrapper.eq(appEtagTask.getCompletedTime() != null, AppEtagTask::getCompletedTime, appEtagTask.getCompletedTime());
|
||||||
|
queryWrapper.eq(appEtagTask.getRemark() != null, AppEtagTask::getRemark, appEtagTask.getRemark());
|
||||||
|
try {
|
||||||
|
return baseMapper.selectList(queryWrapper);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,6 @@ public interface AppEtagTaskService extends IService<AppEtagTask> {
|
||||||
DataBaseActionResult<Integer> updateIgnoreNull(AppEtagTask appEtagTask); // 更新数据,忽略Null值
|
DataBaseActionResult<Integer> updateIgnoreNull(AppEtagTask appEtagTask); // 更新数据,忽略Null值
|
||||||
List<AppEtagTask> queryByTaskId(String taskId); // 通过任务ID查询
|
List<AppEtagTask> queryByTaskId(String taskId); // 通过任务ID查询
|
||||||
List<AppEtagTask> queryByTagAreaIdAndVehicleAndStatus(String areaId, String vehicleNo, List<Integer> status); // 通过标签区域ID和载具号和状态查询
|
List<AppEtagTask> queryByTagAreaIdAndVehicleAndStatus(String areaId, String vehicleNo, List<Integer> status); // 通过标签区域ID和载具号和状态查询
|
||||||
|
List<AppEtagTask> queryByVehicleAndStatus(String vehicleNo, List<Integer> status); // 通过标签]载具号和状态查询
|
||||||
|
List<AppEtagTask> queryIgnoreNull(AppEtagTask appEtagTask); // 查询数据,忽略Null值的查询条件
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
@ -12,6 +13,7 @@ import java.time.LocalDateTime;
|
||||||
* 电子标签任务类
|
* 电子标签任务类
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@ToString
|
||||||
@TableName("t_app_etag_task")
|
@TableName("t_app_etag_task")
|
||||||
public class AppEtagTask {
|
public class AppEtagTask {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import org.quartz.JobExecutionContext;
|
||||||
import org.quartz.JobExecutionException;
|
import org.quartz.JobExecutionException;
|
||||||
import org.wcs.business.etag.EtagCommon;
|
import org.wcs.business.etag.EtagCommon;
|
||||||
import org.wcs.business.etag.EtagDataHandler;
|
import org.wcs.business.etag.EtagDataHandler;
|
||||||
|
import org.wcs.business.etag.EtagTaskExecute;
|
||||||
import org.wcs.business.redis.EtagRedis;
|
import org.wcs.business.redis.EtagRedis;
|
||||||
import org.wcs.constant.enums.common.OnOrOffEnum;
|
import org.wcs.constant.enums.common.OnOrOffEnum;
|
||||||
import org.wcs.constant.enums.common.TrueOrFalseEnum;
|
import org.wcs.constant.enums.common.TrueOrFalseEnum;
|
||||||
|
|
@ -37,6 +38,8 @@ public class EtagJob implements Job {
|
||||||
private final AppEtagTagInfoService etagTagInfoService; // 电子标签小标信息数据表操作类
|
private final AppEtagTagInfoService etagTagInfoService; // 电子标签小标信息数据表操作类
|
||||||
private final AppEtagTagLocationService etagTagLocationService; // 电子标签位置信息数据表操作类
|
private final AppEtagTagLocationService etagTagLocationService; // 电子标签位置信息数据表操作类
|
||||||
|
|
||||||
|
private final EtagTaskExecute etagTaskExecute; // 电子标签任务执行类
|
||||||
|
|
||||||
|
|
||||||
// 是否正在加载基础数据
|
// 是否正在加载基础数据
|
||||||
private static boolean isLoadingBaseData = false;
|
private static boolean isLoadingBaseData = false;
|
||||||
|
|
@ -49,14 +52,9 @@ public class EtagJob implements Job {
|
||||||
if(EtagCommon.socketClient == null || !isLoadingBaseData) {
|
if(EtagCommon.socketClient == null || !isLoadingBaseData) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
etagTaskExecute.lightSmallTag(); // 点亮小标签
|
||||||
}
|
etagTaskExecute.lightTunnelLight(); // 点亮通道灯
|
||||||
|
etagTaskExecute.lightSummaryTag(); // 点亮汇总标签
|
||||||
/**
|
|
||||||
* 点亮小标签
|
|
||||||
*/
|
|
||||||
private void lightSmallTag() {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.wcs.constant.ConstantData;
|
||||||
import org.wcs.constant.enums.database.EtagTaskLightModelEnum;
|
import org.wcs.constant.enums.database.EtagTaskLightModelEnum;
|
||||||
import org.wcs.constant.enums.database.EtagTaskStatusEnum;
|
import org.wcs.constant.enums.database.EtagTaskStatusEnum;
|
||||||
import org.wcs.factory.AppServeResponseFactory;
|
import org.wcs.factory.AppServeResponseFactory;
|
||||||
|
|
@ -84,9 +85,9 @@ public class EtagTaskService implements IEtagTaskService {
|
||||||
appEtagTask.setGoodsId(request.getGoodsId());
|
appEtagTask.setGoodsId(request.getGoodsId());
|
||||||
appEtagTask.setGoodsName(request.getGoodsName());
|
appEtagTask.setGoodsName(request.getGoodsName());
|
||||||
appEtagTask.setLightNum(request.getLightNum());
|
appEtagTask.setLightNum(request.getLightNum());
|
||||||
appEtagTask.setTaskStatus(request.getLightModel().equals(EtagTaskLightModelEnum.IMMEDIATELY.getCode()) ? EtagTaskStatusEnum.ACTIVATED.getCode() : EtagTaskStatusEnum.NOT_ACTIVATED.getCode());
|
appEtagTask.setTaskStatus(EtagTaskStatusEnum.NOT_ACTIVATED.getCode());
|
||||||
appEtagTask.setLightModel(request.getLightModel());
|
appEtagTask.setLightModel(request.getLightModel());
|
||||||
appEtagTask.setTaskSource("");
|
appEtagTask.setTaskSource(ConstantData.SYSTEM_NAME);
|
||||||
appEtagTask.setCreatePerson(operationUserId);
|
appEtagTask.setCreatePerson(operationUserId);
|
||||||
appEtagTask.setCreateTime(LocalDateTime.now());
|
appEtagTask.setCreateTime(LocalDateTime.now());
|
||||||
appEtagTask.setRemark(request.getRemark());
|
appEtagTask.setRemark(request.getRemark());
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
wcs:
|
wcs:
|
||||||
etag:
|
etag:
|
||||||
area-user-prefix: ^user$
|
area-user-prefix: ^user$ # 电子标签扫描此字符串码后下一个视为用户码
|
||||||
area-user-unbind: $user^
|
area-user-unbind: $user^ # 电子标签扫描此字符串码后注销用户
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: wcs
|
name: wcs
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package org.wcs;
|
package org.wcs;
|
||||||
|
|
||||||
import HslCommunication.Core.Types.ActionOperateExTwo;
|
import HslCommunication.Core.Types.ActionOperateExTwo;
|
||||||
|
import HslCommunication.Core.Types.List;
|
||||||
import HslCommunication.ModBus.ModbusTcpServer;
|
import HslCommunication.ModBus.ModbusTcpServer;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
@ -31,4 +32,15 @@ class WcsApplicationTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testList() {
|
||||||
|
List<Integer> list = new List<>();
|
||||||
|
list.Add(244546456);
|
||||||
|
list.Add(234234234);
|
||||||
|
List< Integer> newList = new List<>();
|
||||||
|
for (Integer i : list) {
|
||||||
|
newList.Add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user