opt:增加任务及点位消息通知
This commit is contained in:
@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.NoticeEnum;
|
||||
@@ -18,12 +17,11 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.mnt.websocket.MsgType;
|
||||
import org.nl.common.mnt.websocket.SocketMsg;
|
||||
import org.nl.common.mnt.websocket.WebSocketServer;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.system.service.dict.dao.Dict;
|
||||
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.system.service.notice.dao.mapper.SysNoticeMapper;
|
||||
import org.nl.system.service.notice.dao.SysNotice;
|
||||
import org.nl.system.service.notice.dao.mapper.SysNoticeMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -33,7 +31,6 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* @description 服务实现
|
||||
@@ -156,19 +153,21 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
|
||||
@Override
|
||||
public void createNotice(String msg, String title, String type) {
|
||||
log.info("创建消息通知-信息:{}, 标题:{}, 类型:{}", msg, title, type);
|
||||
// 获取标题相同的信息
|
||||
List<SysNotice> sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper<SysNotice>().eq(SysNotice::getNotice_title, title));
|
||||
if (ObjectUtil.isNotEmpty(sysNotices)) return;
|
||||
String dealStatus = NoticeEnum.DEAL_STATUS_NO.getValue();
|
||||
String haveRead = NoticeEnum.HAVE_READ_OFF.getValue();
|
||||
if (title.contains("LTX")||title.contains("ZCS")) {
|
||||
dealStatus = NoticeEnum.DEAL_STATUS_NO_NEED.getValue();
|
||||
haveRead = NoticeEnum.HAVE_READ_ON.getValue();
|
||||
}
|
||||
SysNotice noticeDto = SysNotice.builder()
|
||||
.notice_id(IdUtil.getSnowflake(1,1).nextIdStr())
|
||||
.notice_id(IdUtil.getSnowflake(1, 1).nextIdStr())
|
||||
.notice_type(type)
|
||||
.notice_title(title)
|
||||
.notice_content(msg)
|
||||
.deal_status(NoticeEnum.DEAL_STATUS_NO.getValue())
|
||||
.have_read(NoticeEnum.HAVE_READ_OFF.getValue())
|
||||
.deal_status(dealStatus)
|
||||
.have_read(haveRead)
|
||||
.create_time(DateUtil.now())
|
||||
.build();
|
||||
// 插入
|
||||
sysNoticeMapper.insert(noticeDto);
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("data", "notice_message_update");
|
||||
|
||||
@@ -34,11 +34,8 @@ import org.springframework.stereotype.Service;
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -73,6 +70,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private CockpitMapper cockpitMapper;
|
||||
@Autowired
|
||||
private GHCMLTask ghcmlTask;
|
||||
|
||||
/**
|
||||
* 初始化反射方法
|
||||
*/
|
||||
@@ -116,13 +114,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS);
|
||||
} catch (Exception e) {
|
||||
String message = e.getMessage();
|
||||
log.error("ACS请求LMS出现错误,acsApply请求参数为:{},错误信息为:{},{}",param,e, message);
|
||||
log.error("ACS请求LMS出现错误,acsApply请求参数为:{},错误信息为:{},{}", param, e, message);
|
||||
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
||||
result.setMessage(message);
|
||||
result.setRequestNo(requestNo);
|
||||
String title = "acsApply: " + param.getString("request_method_code");
|
||||
// 消息通知
|
||||
noticeService.createNotice("异常信息:" + message, "acsApply: " + param.getString("request_medthod_code"),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
noticeService.createNotice("异常信息:" + message, title, NoticeTypeEnum.EXCEPTION.getCode());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -194,6 +192,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
switch (type) {
|
||||
case 1:
|
||||
//反馈设备状态,将对应固化室修改为传入状态
|
||||
List<String> deviceCodeList = new ArrayList<>(Arrays.asList("ZCSSX010107", "ZCSSX010207", "ZCSSX030101", "ZCSSX030201", "ZCSSX020101", "ZCSSX020201",
|
||||
"ZCSSX030107", "ZCSSX030207", "ZCSSX020107", "ZCSSX020207", "LTX01DJW02", "LTXD2JW02", "LTXD03JW02", "LTXD04JW02", "LTXD05JW02", "LTXD06JW02"));
|
||||
if (deviceCodeList.contains(device_code)) {
|
||||
String msg = device_code + "的光电反馈变更:"+pointService.getById(device_code).getPoint_status()+" -> " + state;
|
||||
noticeService.createNotice(msg, device_code, NoticeTypeEnum.NOTIFICATION.getCode());
|
||||
}
|
||||
pointMapper.updatePointStatus(device_code, state);
|
||||
break;
|
||||
case 2:
|
||||
@@ -203,8 +207,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
case 3:
|
||||
//设备反馈故障
|
||||
try {
|
||||
SchBasePoint schBasePoint=pointService.getById(device_code);
|
||||
if(ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
SchBasePoint schBasePoint = pointService.getById(device_code);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
if ("0".equals(current_status)) {
|
||||
schBasePoint.setIs_used(true);
|
||||
pointService.update(schBasePoint);
|
||||
|
||||
@@ -111,7 +111,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
@Override
|
||||
public SchBaseVehiclematerialgroup getVehicleGroupInfo(String vehicleCode, String vehicleType, String status) {
|
||||
LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda();
|
||||
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
// .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, status)
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_delete, false);
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.nl.wms.sch.task_manage;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
@@ -224,9 +223,8 @@ public abstract class AbstractTask {
|
||||
// 获取执行中的任务
|
||||
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
|
||||
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
|
||||
|
||||
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
|
||||
"该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||
"点位" + apply_point_code + ",已存在未完成任务类型为" + taskConfig.getConfig_code() + "的任务,申请失败!请检查!");
|
||||
// 获取对接位点位对象
|
||||
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, apply_point_code));
|
||||
|
||||
@@ -168,7 +168,7 @@ public class GHCMLTask extends AbstractTask {
|
||||
if (ObjectUtil.isNotEmpty(temp)) {
|
||||
return temp;
|
||||
}
|
||||
// 如果没有找到。或者分配等待点失败,就选择一个空列存放
|
||||
//如果没有找到。或者分配等待点失败,就选择一个空列存放
|
||||
return autoMapper.getZCEmptyMaterialPoint(nextRegionStr.get(0), jsonObject.getString("material_id"));
|
||||
}
|
||||
|
||||
|
||||
@@ -64,15 +64,16 @@ public class KJQKTask extends AbstractTask {
|
||||
JSONObject extGroupData = JSONObject.parseObject(requestParam);
|
||||
// 根据对接位查找对应的载具类型
|
||||
SchBasePoint endPoint = pointService.getById(task.getPoint_code2());
|
||||
log.error("tofix__KJQKTask_目标点位:" + endPoint.getPoint_code() + ",点位状态为:"+endPoint.getPoint_status());
|
||||
log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + ",点位状态为:"+endPoint.getPoint_status());
|
||||
if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
log.error("tofix__KJQKTask_目标点位:" + endPoint.getPoint_code() + ",点位状态不为无货,不满足补空架任务生成条件");
|
||||
throw new BadRequestException("目标点位:" + endPoint.getPoint_code() + ",点位状态不为无货,不满足补空架任务生成条件");
|
||||
log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
|
||||
throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
|
||||
}
|
||||
extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type());
|
||||
SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("未找到所需点位!");
|
||||
log.error("tofix__KJQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务");
|
||||
throw new BadRequestException("点位:" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务");
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
@@ -80,7 +81,6 @@ public class KJQKTask extends AbstractTask {
|
||||
task.setRemark("");
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
taskService.save(task);
|
||||
log.error("tofix_KJQKTask+" + task.getPoint_code1() + ":" + task.getPoint_code2() + "创建任务成功!");
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
PointUtils.setUpdateByAcs(point);
|
||||
pointService.updateById(point);
|
||||
@@ -96,14 +96,13 @@ public class KJQKTask extends AbstractTask {
|
||||
// todo:不考虑等待点
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new QueryWrapper<SchBasePoint>().lambda();
|
||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
||||
.eq(SchBasePoint::getVehicle_type, extGroupData.getString("vehicle_type"))
|
||||
.eq(SchBasePoint::getCan_material_type, "AGV")
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||
.orderByAsc(SchBasePoint::getCol_num)
|
||||
.orderByAsc(SchBasePoint::getRow_num);
|
||||
.orderByAsc(SchBasePoint::getPoint_code);
|
||||
List<SchBasePoint> list = pointService.list(lam);
|
||||
return list.size() > 0 ? list.get(0) : null;
|
||||
}
|
||||
|
||||
@@ -100,19 +100,23 @@ public class TBXQKTask extends AbstractTask {
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject extGroupData = JSONObject.parseObject(requestParam);
|
||||
// 根据对接位查找对应的载具类型
|
||||
SchBasePoint startPoint = pointService.getById(task.getPoint_code2());
|
||||
extGroupData.put("vehicle_type", startPoint.getCan_vehicle_type());
|
||||
SchBasePoint endPoint = pointService.getById(task.getPoint_code2());
|
||||
if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
log.error("tofix__TBXQKTask_目标点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
|
||||
throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!");
|
||||
}
|
||||
extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type());
|
||||
SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("未找到所需点位!");
|
||||
log.error("tofix__TBXQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务");
|
||||
throw new BadRequestException("点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务");
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setVehicle_type(startPoint.getCan_vehicle_type());
|
||||
task.setVehicle_type(endPoint.getCan_vehicle_type());
|
||||
task.setRemark("");
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
taskService.save(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
PointUtils.setUpdateByAcs(point);
|
||||
pointService.updateById(point);
|
||||
@@ -130,14 +134,15 @@ public class TBXQKTask extends AbstractTask {
|
||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
||||
// 点位类型是拆盘机出口
|
||||
.eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT)
|
||||
.eq(SchBasePoint::getCan_vehicle_type, requestParam.getString("vehicle_type"))
|
||||
.eq(SchBasePoint::getCan_material_type, "RGV")
|
||||
// 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.eq(SchBasePoint::getPoint_status,"2")
|
||||
.eq(SchBasePoint::getPoint_status, "2")
|
||||
.eq(SchBasePoint::getBlock_num, "1")
|
||||
.eq(SchBasePoint::getIs_used, true);
|
||||
.eq(SchBasePoint::getIs_used, true)
|
||||
.orderByAsc(SchBasePoint::getPoint_code);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user