fix: 修复错误

This commit is contained in:
2023-06-15 10:00:54 +08:00
parent 3ceb2dab53
commit c128756fe7
11 changed files with 195 additions and 95 deletions

View File

@@ -23,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -40,7 +39,9 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl<MdBaseClassstand
@Override
public IPage<MdBaseClassstandard> queryAll(Map whereJson, PageQuery page) {
String class_code = ObjectUtil.isNotEmpty(whereJson.get("class_code")) ? whereJson.get("class_code").toString() : null;
String class_code = ObjectUtil.isNotEmpty(whereJson.get("class_code"))
? whereJson.get("class_code").toString()
: null;
LambdaQueryWrapper<MdBaseClassstandard> lam = new LambdaQueryWrapper<>();
lam.eq(ObjectUtil.isNotEmpty(class_code), MdBaseClassstandard::getClass_code, class_code)
.eq(MdBaseClassstandard::getIs_delete, false)
@@ -190,7 +191,8 @@ public class MdBaseClassstandardServiceImpl extends ServiceImpl<MdBaseClassstand
public ArrayList<MdBaseClassstandard> getSuperior(MdBaseClassstandard classstandard, ArrayList<MdBaseClassstandard> res) {
if (ObjectUtil.isEmpty(classstandard.getParent_class_id()) || classstandard.getParent_class_id().equals("0")) {
// 父类id为空或者是0就是顶级类别
List<MdBaseClassstandard> classstandardList = mdBaseClassstandardMapper.selectList(new LambdaQueryWrapper<MdBaseClassstandard>()
List<MdBaseClassstandard> classstandardList = mdBaseClassstandardMapper
.selectList(new LambdaQueryWrapper<MdBaseClassstandard>()
.eq(MdBaseClassstandard::getIs_delete, false)
.eq(MdBaseClassstandard::getParent_class_id, "0")
.or(la -> la.isNull(MdBaseClassstandard::getParent_class_id)));

View File

@@ -19,7 +19,7 @@ import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch.region.service.dao.SchBaseRegion;
import org.nl.wms.sch.region.service.dao.mapper.SchBaseRegionMapper;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.utils.PointUtil;
import org.nl.wms.util.PointUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -27,7 +27,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -80,11 +79,11 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
if (ObjectUtil.isNotEmpty(regionObj)) {
if (ObjectUtil.isNotEmpty(pointStatus) && ObjectUtil.isNotEmpty(regionObj.getPoint_status_explain())) {
// 设置
point.setPoint_status_name(PointUtil.getStatusOrTypeName(regionObj.getPoint_status_explain(), pointStatus));
point.setPoint_status_name(PointUtils.getStatusOrTypeName(regionObj.getPoint_status_explain(), pointStatus));
}
if (ObjectUtil.isNotEmpty(pointType) && ObjectUtil.isNotEmpty(regionObj.getPoint_type_explain())) {
// 设置
point.setPoint_type_name(PointUtil.getStatusOrTypeName(regionObj.getPoint_type_explain(), pointType));
point.setPoint_type_name(PointUtils.getStatusOrTypeName(regionObj.getPoint_type_explain(), pointType));
}
}
});

View File

@@ -0,0 +1,21 @@
package org.nl.wms.sch.task_manage.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Author: lyd
* @Description: 通知类型枚举
* @Date: 2023/6/15
*/
@Getter
@AllArgsConstructor
public enum NoticeTypeEnum {
EXCEPTION("1", "异常"),
WARN("2", "警告"),
NOTIFICATION("3", "通知");
private final String code;
private final String name;
}

View File

@@ -0,0 +1,22 @@
package org.nl.wms.sch.task_manage.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @Author: lyd
* @Description: 任务完成枚举
* @Date: 2023/6/13
*/
@Getter
@AllArgsConstructor
public enum TaskFinishedTypeEnum {
AUTO_ACS("1", "ACS自动完成"),
MANUAL_PC("2", "PC手完成"),
MANUAL_PDA("3", "PDA手持");
private final String code;
private final String description;
}

View File

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.Data;
import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
@@ -18,10 +19,9 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.*;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -53,6 +53,9 @@ public class HNMLTask extends AbstractTask {
@Autowired
private IPdmBdWorkorderService workorderService;
@Autowired
private ISysNoticeService noticeService;
@Override
protected void updateStatus(String task_code, TaskStatus status) {
// 校验任务
@@ -63,83 +66,16 @@ public class HNMLTask extends AbstractTask {
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
throw new BadRequestException("该任务已取消!");
}
// 获取参数
String endPoint = taskObj.getPoint_code2(); // 终点
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
? JSONObject.parseObject(taskObj.getExt_group_data())
: null;
// 载具编码:没有就创建一个
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) ? taskObj.getVehicle_code() : IdUtil.getSnowflake(1, 1).nextIdStr();
SchBasePoint endPointObj = pointService.getById(endPoint);
// 根据传来的类型去对任务进行操作
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
taskObj.setRemark("执行中");
TaskUtils.setUpdateByAcs(taskObj);
taskService.updateById(taskObj);
} else if (status.equals(TaskStatus.FINISHED)) { // 完成
this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
} else if (status.equals(TaskStatus.CANCELED)) { // 取消
this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
}
if (status.equals(TaskStatus.FINISHED)) { // 完成
PdmBdWorkorder workorderCode =
ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
: null;
// 要把数据存到组盘表
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
? workorderCode.getMaterial_id()
: "");
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
? workorderCode.getStanding_time()
: 0);
groupEntity.setIs_full(ObjectUtil.isNotEmpty(extGroupData)
? extGroupData.getBoolean("is_full")
: true);
groupEntity.setMaterial_qty(ObjectUtil.isNotEmpty(extGroupData)
? extGroupData.getInteger("material_qty")
: 0);
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
? extGroupData.getBigDecimal("material_weight")
: BigDecimal.valueOf(0));
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
? workorderCode.getWorkorder_code()
: "");
groupEntity.setVehicle_code(vehicle_code);
groupEntity.setVehicle_type(taskObj.getVehicle_type());
groupEntity.setPoint_code(endPoint);
groupEntity.setPoint_name(endPointObj.getPoint_name());
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
groupEntity.setInstorage_time(DateUtil.now());
groupEntity.setTask_code(taskObj.getTask_code());
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
groupEntity.setIs_delete(false);
vehiclematerialgroupService.create(groupEntity);
// 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setIng_task_code("");
endPointObj.setVehicle_code(vehicle_code);
endPointObj.setVehicle_type(taskObj.getVehicle_type());
endPointObj.setVehicle_qty(1);
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); // 有料
pointService.update(endPointObj);
}
taskObj.setRemark("任务完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
}
if (status.equals(TaskStatus.CANCELED)) { // 取消
SchBasePoint one = ObjectUtil.isNotEmpty(endPoint)
? pointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, endPoint))
: null;
if (one != null) {
one.setIng_task_code("");
pointService.update(one);
}
taskObj.setRemark("任务取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
}
taskService.update(taskObj);
}
/**
@@ -162,6 +98,7 @@ public class HNMLTask extends AbstractTask {
task.setRemark("未找到所需点位!");
taskService.update(task);
// 消息通知
noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode());
continue;
}
// 设置终点并修改创建成功状态
@@ -187,6 +124,7 @@ public class HNMLTask extends AbstractTask {
lam.in(SchBasePoint::getRegion_code, nextRegionStr)
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
.like(ObjectUtil.isNotEmpty(one), SchBasePoint::getCan_vehicle_type, one.getVehicle_type())
.eq(SchBasePoint::getIs_used, true)
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL有数据表示锁住
.or()
.eq(SchBasePoint::getIng_task_code, ""))
@@ -198,12 +136,98 @@ public class HNMLTask extends AbstractTask {
@Override
public void forceFinish(String task_code) {
this.updateStatus(task_code, TaskStatus.FINISHED);
SchBaseTask taskObj = taskService.getById(task_code);
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC);
}
@Override
public void cancel(String task_code) {
this.updateStatus(task_code, TaskStatus.CANCELED);
SchBaseTask taskObj = taskService.getById(task_code);
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC);
}
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
// 获取参数
String endPoint = taskObj.getPoint_code2(); // 终点
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
? JSONObject.parseObject(taskObj.getExt_group_data())
: null;
// 载具编码:没有就创建一个
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) ? taskObj.getVehicle_code() : IdUtil.getSnowflake(1, 1).nextIdStr();
SchBasePoint endPointObj = pointService.getById(endPoint);
PdmBdWorkorder workorderCode =
ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
: null;
// 要把数据存到组盘表
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
? workorderCode.getMaterial_id()
: "");
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
? workorderCode.getStanding_time()
: 0);
groupEntity.setIs_full(ObjectUtil.isNotEmpty(extGroupData)
? extGroupData.getBoolean("is_full")
: true);
groupEntity.setMaterial_qty(ObjectUtil.isNotEmpty(extGroupData)
? extGroupData.getInteger("material_qty")
: 0);
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
? extGroupData.getBigDecimal("material_weight")
: BigDecimal.valueOf(0));
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
? workorderCode.getWorkorder_code()
: "");
groupEntity.setVehicle_code(vehicle_code);
groupEntity.setVehicle_type(taskObj.getVehicle_type());
groupEntity.setPoint_code(endPoint);
groupEntity.setPoint_name(endPointObj.getPoint_name());
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
groupEntity.setInstorage_time(DateUtil.now());
groupEntity.setTask_code(taskObj.getTask_code());
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
groupEntity.setIs_delete(false);
vehiclematerialgroupService.create(groupEntity);
// 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量
if (ObjectUtil.isNotEmpty(endPointObj)) {
endPointObj.setIng_task_code("");
endPointObj.setVehicle_code(vehicle_code);
endPointObj.setVehicle_type(taskObj.getVehicle_type());
endPointObj.setVehicle_qty(1);
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); // 有料
pointService.update(endPointObj);
}
taskObj.setRemark("任务完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setFinished_type(taskFinishedType.getCode());
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
taskService.updateById(taskObj);
}
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
// 获取参数
String endPoint = taskObj.getPoint_code2(); // 终点
SchBasePoint one = ObjectUtil.isNotEmpty(endPoint)
? pointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, endPoint))
: null;
if (one != null) {
one.setIng_task_code("");
pointService.update(one);
}
taskObj.setRemark("任务取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskObj.setFinished_type(taskFinishedType.getCode());
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
taskService.updateById(taskObj);
}
}

View File

@@ -1,6 +1,5 @@
package org.nl.wms.sch.task_manage.task.tasks.hn;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -16,7 +15,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.utils.PointUtil;
import org.nl.wms.util.PointUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -130,7 +129,7 @@ public class HNQKTask extends AbstractTask {
if (status.equals(TaskStatus.FINISHED)) { // 完成
// 起点清空
if (ObjectUtil.isNotEmpty(startPointObj)) {
PointUtil.clearPoint(startPointObj);
PointUtils.clearPoint(startPointObj);
}
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());

View File

@@ -1,6 +1,5 @@
package org.nl.wms.sch.task_manage.task.tasks.yz;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
@@ -21,7 +20,7 @@ import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.utils.PointUtil;
import org.nl.wms.util.PointUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -154,7 +153,7 @@ public class YZQLTask extends AbstractTask {
vehiclematerialgroupService.update(one);
// 释放点位,将点位设置为空位,清空数据
if (ObjectUtil.isNotEmpty(startPointObj)) {
PointUtil.clearPoint(startPointObj);
PointUtils.clearPoint(startPointObj);
}
// 任务修改成完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());

View File

@@ -1,4 +1,4 @@
package org.nl.wms.utils;
package org.nl.wms.util;
import org.springframework.context.ApplicationContext;
import org.springframework.context.event.ContextRefreshedEvent;

View File

@@ -1,4 +1,4 @@
package org.nl.wms.utils;
package org.nl.wms.util;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
@@ -12,7 +12,7 @@ import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
* @Description: 点位工具类
* @Date: 2023/5/17
*/
public class PointUtil {
public class PointUtils {
/**
* 获取状态名或者类型名

View File

@@ -0,0 +1,34 @@
package org.nl.wms.util;
import cn.hutool.core.date.DateUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
/**
* @Author: lyd
* @Description: 任务修改抽取的公用方法
* @Date: 2023/6/13
*/
public class TaskUtils {
public static void setUpdateByAcs(SchBaseTask taskObj) {
taskObj.setUpdate_id("2");
taskObj.setUpdate_name("ACS系统");
taskObj.setUpdate_time(DateUtil.now());
}
public static void setUpdateByPC(SchBaseTask taskObj) {
taskObj.setUpdate_id(SecurityUtils.getCurrentUserId());
taskObj.setUpdate_name(SecurityUtils.getCurrentNickName());
taskObj.setUpdate_time(DateUtil.now());
}
// 根据类型去判断谁修改的
public static void setUpdateByType(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
setUpdateByAcs(taskObj);
} else {
setUpdateByPC(taskObj);
}
}
}

View File

@@ -101,7 +101,7 @@ export default {
*/
toSiteMessage() {
this.$router.push({
path: '/monitor/notice'
path: '/monitor/sysNotice'
})
this.visible = false
},