代码更新
This commit is contained in:
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -66,6 +67,9 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
|||||||
*/
|
*/
|
||||||
List<SchBaseTask> findUnFinishTasksByTaskConfig(String config_code, String task_code);
|
List<SchBaseTask> findUnFinishTasksByTaskConfig(String config_code, String task_code);
|
||||||
|
|
||||||
|
|
||||||
|
List<SchBaseTask> findTasksByTaskStatus(String config_code, TaskStatus status);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务申请
|
* 任务申请
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
|||||||
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper;
|
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper;
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskconfigMapper;
|
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskconfigMapper;
|
||||||
import org.nl.wms.sch.task_manage.BaseTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -104,6 +104,18 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
|||||||
return schBaseTasks;
|
return schBaseTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SchBaseTask> findTasksByTaskStatus(String config_code, TaskStatus status) {
|
||||||
|
Assert.notNull(config_code, "任务配置编码不能为空!");
|
||||||
|
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||||
|
lam.eq(SchBaseTask::getConfig_code, config_code)
|
||||||
|
.eq(SchBaseTask::getTask_status, status.getCode())
|
||||||
|
.ne(SchBaseTask::getIs_delete, true);
|
||||||
|
|
||||||
|
List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(lam);
|
||||||
|
return schBaseTasks;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create(SchBaseTask entity) {
|
public void create(SchBaseTask entity) {
|
||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
@@ -134,7 +146,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
|||||||
//3、叫料
|
//3、叫料
|
||||||
//4、叫空载具
|
//4、叫空载具
|
||||||
TaskFactory taskFactory = new TaskFactory();
|
TaskFactory taskFactory = new TaskFactory();
|
||||||
BaseTask task = taskFactory.getTask("HNMLTask");
|
AbstractTask task = taskFactory.getTask("HNMLTask");
|
||||||
task.apply(param);
|
task.apply(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,182 @@
|
|||||||
|
package org.nl.wms.sch.task_manage;
|
||||||
|
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.config.SpringContextHolder;
|
||||||
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||||
|
import org.nl.wms.sch.task.service.impl.SchBaseTaskServiceImpl;
|
||||||
|
import org.nl.wms.sch.task.service.impl.SchBaseTaskconfigServiceImpl;
|
||||||
|
import org.nl.wms.sch.task_manage.task.AcsUtil;
|
||||||
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ldjun
|
||||||
|
* @version 1.0
|
||||||
|
* @date 2023年05月16日 16:42
|
||||||
|
* @desc desc
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractTask {
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService taskService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建
|
||||||
|
*/
|
||||||
|
protected abstract void create();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发
|
||||||
|
*/
|
||||||
|
protected abstract void issue();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加任务进行下发
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List addTask() {
|
||||||
|
/* //任务基础表【sch_base_task】
|
||||||
|
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||||
|
JSONArray tasks = taskTab.query("handle_class = '" + this.getClass().getName() + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||||
|
List<AcsTaskDto> arr = new ArrayList<>();
|
||||||
|
for (int i = 0, j = tasks.size(); i < j; i++) {
|
||||||
|
JSONObject json = tasks.getJSONObject(i);
|
||||||
|
AcsTaskDto taskDto = new AcsTaskDto();
|
||||||
|
taskDto.setExt_task_uuid(json.getString("task_id"));
|
||||||
|
taskDto.setTask_code(json.getString("task_code"));
|
||||||
|
taskDto.setTask_type("1");
|
||||||
|
//如果起点是码垛机械手的下料位置,终点是货架,type要给2
|
||||||
|
JSONObject stratrObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + json.getString("start_point_code") + "'").uniqueResult(0);
|
||||||
|
JSONObject nextObj = WQLObject.getWQLObject("sch_base_point").query("point_code='" + json.getString("next_point_code") + "'").uniqueResult(0);
|
||||||
|
if (StrUtil.equals(stratrObj.getString("area_type"), AreaEnum.YZQY.getCode()) &&
|
||||||
|
StrUtil.equals(nextObj.getString("area_type"), AreaEnum.RYHCHJ.getCode())
|
||||||
|
) {
|
||||||
|
taskDto.setTask_type("2");
|
||||||
|
}
|
||||||
|
taskDto.setRoute_plan_code("normal");
|
||||||
|
taskDto.setStart_device_code(json.getString("start_point_code"));
|
||||||
|
taskDto.setNext_device_code(json.getString("next_point_code"));
|
||||||
|
taskDto.setVehicle_code(json.getString("vehicle_code"));
|
||||||
|
arr.add(taskDto);
|
||||||
|
}
|
||||||
|
return arr;*/
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return WCS的任务集合
|
||||||
|
* @discription 重新下发给wcs任务
|
||||||
|
* @author ldjun
|
||||||
|
* @created 2020年6月12日 下午5:52:28
|
||||||
|
*/
|
||||||
|
protected JSONObject renotifyAcs(SchBaseTask task) {
|
||||||
|
Assert.notNull(task);
|
||||||
|
List<SchBaseTask> taskList = new ArrayList<>();
|
||||||
|
taskList.add(task);
|
||||||
|
return this.renotifyAcs(taskList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return WCS的任务集合
|
||||||
|
* @discription 重新下发给wcs任务
|
||||||
|
* @author ldjun
|
||||||
|
* @created 2020年6月12日 下午5:52:28
|
||||||
|
*/
|
||||||
|
protected JSONObject renotifyAcs(List<SchBaseTask> taskList) {
|
||||||
|
//1、获取任务
|
||||||
|
//2、根据任务配置补全任务
|
||||||
|
//3、下发
|
||||||
|
|
||||||
|
List<AcsTaskDto> list = new ArrayList<>();
|
||||||
|
for (SchBaseTask task : taskList) {
|
||||||
|
AcsTaskDto taskDto = new AcsTaskDto();
|
||||||
|
taskDto.setExt_task_uuid(task.getTask_code());
|
||||||
|
taskDto.setTask_code(task.getTask_code());
|
||||||
|
|
||||||
|
taskDto.setRoute_plan_code("normal");
|
||||||
|
taskDto.setStart_device_code(task.getPoint_code1());
|
||||||
|
taskDto.setNext_device_code(task.getPoint_code2());
|
||||||
|
taskDto.setVehicle_code(task.getVehicle_code());
|
||||||
|
|
||||||
|
this.setTask(task.getConfig_code(), taskDto);
|
||||||
|
list.add(taskDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
return AcsUtil.notifyAcs("api/wms/task", list);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto) {
|
||||||
|
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(config_code);
|
||||||
|
taskDto.setPriority(taskConfig.getPriority());
|
||||||
|
taskDto.setTask_type(taskConfig.getAcs_task_type());
|
||||||
|
taskDto.setRoute_plan_code("normal");
|
||||||
|
return taskDto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时任务
|
||||||
|
*/
|
||||||
|
protected void schedule() {
|
||||||
|
this.autoCreate();
|
||||||
|
this.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自动生成任务
|
||||||
|
*/
|
||||||
|
public void autoCreate() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void updateStatus(String config_code, TaskStatus status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 寻找合适的点位
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected abstract List<Object> findPoints();
|
||||||
|
|
||||||
|
|
||||||
|
public void apply(JSONObject param) {
|
||||||
|
String point_code = "";
|
||||||
|
String config_code = "HNMLTask";
|
||||||
|
//1、校验数据
|
||||||
|
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(config_code);
|
||||||
|
Integer tcmn = taskConfig.getTask_create_max_num();
|
||||||
|
SchBaseTaskServiceImpl taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
||||||
|
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(taskConfig.getConfig_code());
|
||||||
|
|
||||||
|
Assert.isFalse(unFinishTasksByTaskConfig.size() > tcmn, "该点位{}申请的任务未完成数已超过上限,无法申请任务", point_code);
|
||||||
|
|
||||||
|
|
||||||
|
SchBaseTask task = new SchBaseTask();
|
||||||
|
task.setAcs_trace_id("");
|
||||||
|
task.setConfig_code(config_code);
|
||||||
|
task.setCreate_id("");
|
||||||
|
task.setCreate_mode("");
|
||||||
|
task.setPoint_code1("");
|
||||||
|
task.setVehicle_code("");
|
||||||
|
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||||
|
SpringContextHolder.getBean(SchBaseTaskServiceImpl.class).create(task);
|
||||||
|
//1、如果是送料,检测载具状态
|
||||||
|
//2、送空载具
|
||||||
|
//3、叫料
|
||||||
|
//4、叫空载具
|
||||||
|
|
||||||
|
//校验
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.nl.wms.sch.task_manage;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AcsTaskDto {
|
||||||
|
//任务标识
|
||||||
|
private String ext_task_uuid;
|
||||||
|
//任务编码
|
||||||
|
private String task_code;
|
||||||
|
//任务类型
|
||||||
|
private String task_type;
|
||||||
|
//起点
|
||||||
|
private String start_device_code;
|
||||||
|
//下一点
|
||||||
|
private String next_device_code;
|
||||||
|
//载具号
|
||||||
|
private String vehicle_code;
|
||||||
|
//载具类型
|
||||||
|
private String vehicle_type;
|
||||||
|
//优先级
|
||||||
|
private String priority;
|
||||||
|
//备注
|
||||||
|
private String remark;
|
||||||
|
//扩展参数
|
||||||
|
private String params;
|
||||||
|
//路由类型
|
||||||
|
private String route_plan_code;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
package org.nl.wms.sch.task_manage;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.reflections.Reflections;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class AutoCreateTask {
|
||||||
|
private Set<Class<? extends AbstractTask>> subTypes = null;
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
public void run() {
|
||||||
|
log.info("定时任务AutoCreateTask开始执行:");
|
||||||
|
|
||||||
|
if (ObjectUtil.isNull(subTypes) || subTypes.isEmpty()) {
|
||||||
|
Reflections reflections = new Reflections("org.nl");
|
||||||
|
//System.out.println(AbstractAcsTask.class.isAssignableFrom(DumpInvTask.class));
|
||||||
|
subTypes = reflections.getSubTypesOf(AbstractTask.class);
|
||||||
|
}
|
||||||
|
this.doExecute();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 需要按照任务配置类型并行执行
|
||||||
|
*/
|
||||||
|
private void doExecute() {
|
||||||
|
subTypes.forEach(clz -> {
|
||||||
|
// 调用AbstractAcsTask类的每个子类的schedule()方法
|
||||||
|
try {
|
||||||
|
Object obj = clz.newInstance();
|
||||||
|
//Method m = obj.getClass().getDeclaredMethod("schedule");
|
||||||
|
Method m = obj.getClass().getMethod("schedule");
|
||||||
|
List<AcsTaskDto> tasks = (List<AcsTaskDto>) m.invoke(obj);
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.info("定时器执行失败:{}", e.getTargetException().getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
log.info("定时器执行失败:{}", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
package org.nl.wms.sch.task_manage;
|
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import org.nl.config.SpringContextHolder;
|
|
||||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
|
||||||
import org.nl.wms.sch.task.service.impl.SchBaseTaskServiceImpl;
|
|
||||||
import org.nl.wms.sch.task.service.impl.SchBaseTaskconfigServiceImpl;
|
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author ldjun
|
|
||||||
* @version 1.0
|
|
||||||
* @date 2023年05月16日 16:42
|
|
||||||
* @desc desc
|
|
||||||
*/
|
|
||||||
|
|
||||||
public abstract class BaseTask {
|
|
||||||
@Autowired
|
|
||||||
private ISchBaseTaskService taskService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建
|
|
||||||
*/
|
|
||||||
protected abstract void create(JSONObject param);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下发
|
|
||||||
*/
|
|
||||||
protected abstract void issue();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 定时任务
|
|
||||||
*/
|
|
||||||
protected abstract void schedule();
|
|
||||||
|
|
||||||
protected abstract void updateStatus();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 寻找合适的点位
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
protected abstract List<Object> findPoints();
|
|
||||||
|
|
||||||
|
|
||||||
public void apply(JSONObject param) {
|
|
||||||
String point_code = "";
|
|
||||||
String config_code = "HNMLTask";
|
|
||||||
//1、校验数据
|
|
||||||
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(config_code);
|
|
||||||
Integer tcmn = taskConfig.getTask_create_max_num();
|
|
||||||
SchBaseTaskServiceImpl taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
|
||||||
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(taskConfig.getConfig_code());
|
|
||||||
|
|
||||||
Assert.isFalse(unFinishTasksByTaskConfig.size() > tcmn, "该点位{}申请的任务未完成数已超过上限,无法申请任务", point_code);
|
|
||||||
|
|
||||||
|
|
||||||
SchBaseTask task = new SchBaseTask();
|
|
||||||
task.setAcs_trace_id("");
|
|
||||||
task.setConfig_code(config_code);
|
|
||||||
task.setCreate_id("");
|
|
||||||
task.setCreate_mode("");
|
|
||||||
task.setPoint_code1("");
|
|
||||||
task.setVehicle_code("");
|
|
||||||
task.setTask_status(TaskStatus.APPLY.getCode());
|
|
||||||
SpringContextHolder.getBean(SchBaseTaskServiceImpl.class).create(task);
|
|
||||||
//1、如果是送料,检测载具状态
|
|
||||||
//2、送空载具
|
|
||||||
//3、叫料
|
|
||||||
//4、叫空载具
|
|
||||||
|
|
||||||
//校验
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
package org.nl.wms.sch.task_manage.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.config.SpringContextHolder;
|
||||||
|
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||||
|
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ACS连接工具类:
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class AcsUtil {
|
||||||
|
public static JSONObject notifyAcs(String api, List<AcsTaskDto> list) {
|
||||||
|
//判断是否连接ACS系统
|
||||||
|
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
if (StrUtil.equals("0", isConnect)) {
|
||||||
|
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||||
|
result.put("message", "未连接ACS!");
|
||||||
|
result.put("data", new JSONObject());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
//ACS地址:127.0.0.1:8010
|
||||||
|
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL").getValue();
|
||||||
|
|
||||||
|
String url = acsUrl + api;
|
||||||
|
log.info("下发acs任务的参数为:{}", list.toString());
|
||||||
|
try {
|
||||||
|
String resultMsg = HttpRequest.post(url)
|
||||||
|
.body(String.valueOf(list))
|
||||||
|
.execute().body();
|
||||||
|
result = JSONObject.parseObject(resultMsg);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = e.getMessage();
|
||||||
|
//ConnectException: Connection refused: connect
|
||||||
|
//网络不通
|
||||||
|
System.out.println(msg);
|
||||||
|
result.put("status", HttpStatus.BAD_REQUEST);
|
||||||
|
result.put("message", "网络不通,操作失败!");
|
||||||
|
result.put("data", new JSONObject());
|
||||||
|
}
|
||||||
|
//acs抛异常这里
|
||||||
|
/* if (result.getString("status").equals(String.valueOf(HttpStatus.BAD_REQUEST.value())))
|
||||||
|
throw new BadRequestException(result.getString("message"));*/
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package org.nl.wms.sch.task_manage.task;
|
package org.nl.wms.sch.task_manage.task;
|
||||||
|
|
||||||
import org.nl.wms.sch.task_manage.BaseTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.HNMLTask;
|
import org.nl.wms.sch.task_manage.task.tasks.HNMLTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -11,7 +11,7 @@ import org.nl.wms.sch.task_manage.task.tasks.HNMLTask;
|
|||||||
*/
|
*/
|
||||||
public class TaskFactory {
|
public class TaskFactory {
|
||||||
//使用 getShape 方法获取形状类型的对象
|
//使用 getShape 方法获取形状类型的对象
|
||||||
public BaseTask getTask(String taskType) {
|
public AbstractTask getTask(String taskType) {
|
||||||
if (taskType == null) {
|
if (taskType == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,18 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import org.nl.wms.sch.task_manage.BaseTask;
|
import org.nl.config.SpringContextHolder;
|
||||||
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
|
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||||
|
import org.nl.wms.sch.point.service.impl.SchBasePointServiceImpl;
|
||||||
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||||
|
import org.nl.wms.sch.task.service.impl.SchBaseTaskServiceImpl;
|
||||||
|
import org.nl.wms.sch.task.service.impl.SchBaseTaskconfigServiceImpl;
|
||||||
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
|
import org.springframework.scheduling.support.TaskUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -11,14 +22,37 @@ import java.util.List;
|
|||||||
* @date 2023年05月16日 16:44
|
* @date 2023年05月16日 16:44
|
||||||
* @desc desc
|
* @desc desc
|
||||||
*/
|
*/
|
||||||
public class HNMLTask extends BaseTask {
|
public class HNMLTask extends AbstractTask {
|
||||||
|
private static String TASK_CONFIG_CODE = "HNMLTask";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateStatus() {
|
protected void updateStatus(String task_code, TaskStatus status) {
|
||||||
|
ISchBaseTaskService taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
||||||
|
taskService.updateById(null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void create(JSONObject param) {
|
protected void create() {
|
||||||
|
ISchBaseTaskService taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
||||||
|
ISchBasePointService pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||||
|
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||||
|
|
||||||
|
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(TASK_CONFIG_CODE);
|
||||||
|
for (SchBaseTask task : tasks) {
|
||||||
|
List<String> next_region_strs = taskConfig.getNext_region_strs();
|
||||||
|
if (ObjectUtil.isEmpty(next_region_strs)) continue;
|
||||||
|
|
||||||
|
|
||||||
|
SchBasePoint point = new SchBasePoint();
|
||||||
|
task.setPoint_code2(point.getPoint_code());
|
||||||
|
|
||||||
|
taskService.update(task);
|
||||||
|
pointService.update(point);
|
||||||
|
this.renotifyAcs(task);
|
||||||
|
//二车间-
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,17 +5,46 @@
|
|||||||
<div v-if="crud.props.searchToggle">
|
<div v-if="crud.props.searchToggle">
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<label class="el-form-item-label">工单编号</label>
|
<label class="el-form-item-label">工单编号</label>
|
||||||
<el-input v-model="query.workorder_code" clearable placeholder="工单编号" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
<el-input
|
||||||
<label class="el-form-item-label">点位编码</label>
|
v-model="query.workorder_code"
|
||||||
<el-input v-model="query.point_code" clearable placeholder="点位编码" style="width: 185px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
clearable
|
||||||
|
placeholder="工单编号"
|
||||||
|
style="width: 185px;"
|
||||||
|
class="filter-item"
|
||||||
|
@keyup.enter.native="crud.toQuery"
|
||||||
|
/>
|
||||||
|
<label class="el-form-item-label">设备编码</label>
|
||||||
|
<el-input
|
||||||
|
v-model="query.point_code"
|
||||||
|
clearable
|
||||||
|
placeholder="设备编码"
|
||||||
|
style="width: 185px;"
|
||||||
|
class="filter-item"
|
||||||
|
@keyup.enter.native="crud.toQuery"
|
||||||
|
/>
|
||||||
<rrOperation :crud="crud" />
|
<rrOperation :crud="crud" />
|
||||||
</div>
|
</div>
|
||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
<crudOperation :permission="permission" />
|
<crudOperation :permission="permission" />
|
||||||
<!--表单组件-->
|
<!--表单组件-->
|
||||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="820px">
|
<el-dialog
|
||||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" :rules="rules" size="mini" label-width="135px" label-suffix=":">
|
:close-on-click-modal="false"
|
||||||
<el-form-item label="所属车间">
|
:before-close="crud.cancelCU"
|
||||||
|
:visible.sync="crud.status.cu > 0"
|
||||||
|
:title="crud.status.title"
|
||||||
|
width="820px"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
ref="form"
|
||||||
|
style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;"
|
||||||
|
:inline="true"
|
||||||
|
:model="form"
|
||||||
|
:rules="rules"
|
||||||
|
size="mini"
|
||||||
|
label-width="135px"
|
||||||
|
label-suffix=":"
|
||||||
|
>
|
||||||
|
<el-form-item v-if="false" label="所属车间">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="form.workshop_code"
|
v-model="form.workshop_code"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
@@ -31,6 +60,15 @@
|
|||||||
<el-form-item label="工单编号" prop="workorder_code">
|
<el-form-item label="工单编号" prop="workorder_code">
|
||||||
<el-input v-model="form.workorder_code" style="width: 240px;" />
|
<el-input v-model="form.workorder_code" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="物料编码">
|
||||||
|
<el-input v-model="form.material_code" style="width: 240px;" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="物料名称" prop="material_name">
|
||||||
|
<el-input v-model="form.material_name" style="width: 240px;" @focus="getMaterial" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="物料规格">
|
||||||
|
<el-input v-model="form.material_spec" style="width: 240px;" disabled />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="计划数量" prop="plan_qty">
|
<el-form-item label="计划数量" prop="plan_qty">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model.number="form.plan_qty"
|
v-model.number="form.plan_qty"
|
||||||
@@ -63,46 +101,38 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="物料名称" prop="material_name">
|
|
||||||
<el-input v-model="form.material_name" style="width: 240px;" @focus="getMaterial"/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="物料编码">
|
|
||||||
<el-input v-model="form.material_code" style="width: 240px;" disabled/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="物料规格">
|
|
||||||
<el-input v-model="form.material_spec" style="width: 240px;" disabled/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="计划开始时间" prop="planproducestart_date">
|
<el-form-item label="计划开始时间" prop="planproducestart_date">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="form.planproducestart_date"
|
v-model="form.planproducestart_date"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
style="width: 240px;"
|
style="width: 240px;"
|
||||||
placeholder="选择日期时间">
|
placeholder="选择日期时间"
|
||||||
</el-date-picker>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="计划结束时间" prop="planproduceend_date">
|
<el-form-item label="计划结束时间" prop="planproduceend_date">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="form.planproduceend_date"
|
v-model="form.planproduceend_date"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
style="width: 240px;"
|
style="width: 240px;"
|
||||||
placeholder="选择日期时间">
|
placeholder="选择日期时间"
|
||||||
</el-date-picker>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际开始时间">
|
<el-form-item label="实际开始时间">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="form.realproducestart_date"
|
v-model="form.realproducestart_date"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
style="width: 240px;"
|
style="width: 240px;"
|
||||||
placeholder="选择日期时间">
|
placeholder="选择日期时间"
|
||||||
</el-date-picker>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际结束时间">
|
<el-form-item label="实际结束时间">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="form.realproduceend_date"
|
v-model="form.realproduceend_date"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
style="width: 240px;"
|
style="width: 240px;"
|
||||||
placeholder="选择日期时间">
|
placeholder="选择日期时间"
|
||||||
</el-date-picker>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="静置时间(分钟)" prop="standing_time">
|
<el-form-item label="静置时间(分钟)" prop="standing_time">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
@@ -112,11 +142,17 @@
|
|||||||
style="width: 240px;"
|
style="width: 240px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工单类型" prop="workorder_type">
|
<el-form-item v-if="false" label="工单类型" prop="workorder_type">
|
||||||
<el-input v-model="form.workorder_type" style="width: 240px;" />
|
<el-input v-model="form.workorder_type" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属区域" prop="region_code">
|
<el-form-item label="所属区域" prop="region_code">
|
||||||
<el-select v-model="form.region_code" filterable placeholder="请选择" style="width: 240px;" @change="setRegionName">
|
<el-select
|
||||||
|
v-model="form.region_code"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 240px;"
|
||||||
|
@change="setRegionName"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in regionList"
|
v-for="item in regionList"
|
||||||
:key="item.region_code"
|
:key="item.region_code"
|
||||||
@@ -129,10 +165,16 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="区域名称">
|
<el-form-item label="区域名称">
|
||||||
<el-input v-model="form.region_name" style="width: 240px;" disabled/>
|
<el-input v-model="form.region_name" style="width: 240px;" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="点位编码" prop="point_code">
|
<el-form-item label="设备编码" prop="point_code">
|
||||||
<el-select v-model="form.point_code" filterable placeholder="请选择" style="width: 240px;" @change="setPointName">
|
<el-select
|
||||||
|
v-model="form.point_code"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 240px;"
|
||||||
|
@change="setPointName"
|
||||||
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in pointList"
|
v-for="item in pointList"
|
||||||
:key="item.point_code"
|
:key="item.point_code"
|
||||||
@@ -144,8 +186,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="点位名称">
|
<el-form-item label="设备名称">
|
||||||
<el-input v-model="form.point_name" style="width: 240px;" disabled/>
|
<el-input v-model="form.point_name" style="width: 240px;" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否自动搬运" prop="is_needmove">
|
<el-form-item label="是否自动搬运" prop="is_needmove">
|
||||||
<el-radio-group v-model="form.is_needmove" style="width: 240px">
|
<el-radio-group v-model="form.is_needmove" style="width: 240px">
|
||||||
@@ -160,36 +202,71 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
<el-table
|
||||||
|
ref="table"
|
||||||
|
v-loading="crud.loading"
|
||||||
|
:data="crud.data"
|
||||||
|
size="mini"
|
||||||
|
style="width: 100%;"
|
||||||
|
@selection-change="crud.selectionChangeHandler"
|
||||||
|
>
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column prop="workorder_code" label="工单编号" :min-width="flexWidth('workorder_code',crud.data,'工单编号')"/>
|
<el-table-column prop="workorder_code" label="工单编号" :min-width="flexWidth('workorder_code',crud.data,'工单编号')" />
|
||||||
<el-table-column prop="plan_qty" label="计划数量" :min-width="flexWidth('plan_qty',crud.data,'计划数量')"/>
|
<el-table-column prop="plan_qty" label="计划数量" :min-width="flexWidth('plan_qty',crud.data,'计划数量')" />
|
||||||
<el-table-column prop="real_qty" label="实际数量" :min-width="flexWidth('real_qty',crud.data,'实际数量')"/>
|
<el-table-column prop="real_qty" label="实际数量" :min-width="flexWidth('real_qty',crud.data,'实际数量')" />
|
||||||
<el-table-column prop="material_id" label="物料标识" :min-width="flexWidth('material_id',crud.data,'物料标识')"/>
|
<el-table-column prop="material_id" label="物料标识" :min-width="flexWidth('material_id',crud.data,'物料标识')" />
|
||||||
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料标识')"/>
|
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料标识')" />
|
||||||
<el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型')"/>
|
<el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型')" />
|
||||||
<el-table-column prop="planproducestart_date" label="计划开始时间" :min-width="flexWidth('planproducestart_date',crud.data,'计划开始时间')"/>
|
<el-table-column
|
||||||
<el-table-column prop="planproduceend_date" label="计划结束时间" :min-width="flexWidth('planproduceend_date',crud.data,'计划结束时间')"/>
|
prop="planproducestart_date"
|
||||||
<el-table-column prop="realproducestart_date" label="实际开始时间" :min-width="flexWidth('realproducestart_date',crud.data,'实际开始时间')"/>
|
label="计划开始时间"
|
||||||
<el-table-column prop="realproduceend_date" label="实际结束时间" :min-width="flexWidth('realproduceend_date',crud.data,'实际结束时间')"/>
|
:min-width="flexWidth('planproducestart_date',crud.data,'计划开始时间')"
|
||||||
<el-table-column prop="standing_time" label="静置时间(分钟)" :min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')"/>
|
/>
|
||||||
<el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('point_code',crud.data,'点位编码')"/>
|
<el-table-column
|
||||||
<el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')"/>
|
prop="planproduceend_date"
|
||||||
<el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')"/>
|
label="计划结束时间"
|
||||||
<el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')"/>
|
:min-width="flexWidth('planproduceend_date',crud.data,'计划结束时间')"
|
||||||
<el-table-column prop="workorder_status" label="工单状态" :min-width="flexWidth('workorder_status',crud.data,'工单状态')"/>
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="realproducestart_date"
|
||||||
|
label="实际开始时间"
|
||||||
|
:min-width="flexWidth('realproducestart_date',crud.data,'实际开始时间')"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="realproduceend_date"
|
||||||
|
label="实际结束时间"
|
||||||
|
:min-width="flexWidth('realproduceend_date',crud.data,'实际结束时间')"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="standing_time"
|
||||||
|
label="静置时间(分钟)"
|
||||||
|
:min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')"
|
||||||
|
/>
|
||||||
|
<el-table-column prop="point_code" label="设备编码" :min-width="flexWidth('point_code',crud.data,'设备编码')" />
|
||||||
|
<el-table-column prop="point_name" label="设备名称" :min-width="flexWidth('point_name',crud.data,'设备名称')" />
|
||||||
|
<el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" />
|
||||||
|
<el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')" />
|
||||||
|
<el-table-column
|
||||||
|
prop="workorder_status"
|
||||||
|
label="工单状态"
|
||||||
|
:min-width="flexWidth('workorder_status',crud.data,'工单状态')"
|
||||||
|
/>
|
||||||
<el-table-column prop="is_needmove" label="是否自动搬运" :min-width="flexWidth('is_needmove',crud.data,'是否自动搬运')">
|
<el-table-column prop="is_needmove" label="是否自动搬运" :min-width="flexWidth('is_needmove',crud.data,'是否自动搬运')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{scope.row.is_needmove?'是':'否'}}
|
{{ scope.row.is_needmove ? '是' : '否' }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="workorder_type" label="工单类型" :min-width="flexWidth('workorder_type',crud.data,'工单类型')"/>
|
<el-table-column prop="workorder_type" label="工单类型" :min-width="flexWidth('workorder_type',crud.data,'工单类型')" />
|
||||||
<el-table-column prop="passback_status" label="回传MES状态" :min-width="flexWidth('passback_status',crud.data,'回传MES状态')"/>
|
<el-table-column
|
||||||
<el-table-column prop="workshop_code" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')"/>
|
prop="passback_status"
|
||||||
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
|
label="回传MES状态"
|
||||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
|
:min-width="flexWidth('passback_status',crud.data,'回传MES状态')"
|
||||||
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')"/>
|
/>
|
||||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
|
<el-table-column prop="workshop_code" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')" />
|
||||||
|
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
|
||||||
|
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
|
||||||
|
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')" />
|
||||||
|
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')" />
|
||||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<udOperation
|
<udOperation
|
||||||
@@ -202,7 +279,7 @@
|
|||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
<pagination />
|
<pagination />
|
||||||
</div>
|
</div>
|
||||||
<MaterialDialog :dialog-show.sync="materialDialog" @tableChanged="tableChanged"/>
|
<MaterialDialog :dialog-show.sync="materialDialog" @tableChanged="tableChanged" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -210,7 +287,7 @@
|
|||||||
import crudPdmBdWorkorder from './pdmBdWorkorder'
|
import crudPdmBdWorkorder from './pdmBdWorkorder'
|
||||||
import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion'
|
import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion'
|
||||||
import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint'
|
import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint'
|
||||||
import CRUD, {crud, form, header, presenter} from '@crud/crud'
|
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import crudOperation from '@crud/CRUD.operation'
|
import crudOperation from '@crud/CRUD.operation'
|
||||||
import udOperation from '@crud/UD.operation'
|
import udOperation from '@crud/UD.operation'
|
||||||
@@ -257,46 +334,35 @@ export default {
|
|||||||
crudMethod: { ...crudPdmBdWorkorder }
|
crudMethod: { ...crudPdmBdWorkorder }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
created() {
|
|
||||||
this.getWorkShopList()
|
|
||||||
this.getRegionList()
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
permission: {
|
permission: {},
|
||||||
},
|
|
||||||
rules: {
|
rules: {
|
||||||
workorder_code: [
|
material_code: [
|
||||||
{ required: true, message: '工单编码不能为空', trigger: 'blur' }
|
{ required: true, message: '物料不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
plan_qty: [
|
plan_qty: [
|
||||||
{ required: true, message: '计划数量不能为空', trigger: 'blur' }
|
{ required: true, message: '计划数量不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
real_qty: [
|
|
||||||
{ required: true, message: '实际数量不能为空', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
planproducestart_date: [
|
planproducestart_date: [
|
||||||
{ required: true, message: '计划开始不能为空', trigger: 'change' }
|
{ required: true, message: '计划开始不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
planproduceend_date: [
|
planproduceend_date: [
|
||||||
{ required: true, message: '计划结束不能为空', trigger: 'change' }
|
{ required: true, message: '计划结束不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
standing_time: [
|
|
||||||
{ required: true, message: '静置时间不能为空', trigger: 'change' }
|
|
||||||
],
|
|
||||||
point_code: [
|
point_code: [
|
||||||
{ required: true, message: '点位编码不能为空', trigger: 'change' }
|
{ required: true, message: '设备编码不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
region_code: [
|
region_code: [
|
||||||
{ required: true, message: '区域编码不能为空', trigger: 'change' }
|
{ required: true, message: '区域编码不能为空', trigger: 'change' }
|
||||||
],
|
|
||||||
workorder_type: [
|
|
||||||
{ required: true, message: '工单类型不能为空', trigger: 'blur' }
|
|
||||||
]
|
]
|
||||||
|
/* workorder_type: [
|
||||||
|
{ required: true, message: '工单类型不能为空', trigger: 'blur' }
|
||||||
|
]*/
|
||||||
},
|
},
|
||||||
queryTypeOptions: [
|
queryTypeOptions: [
|
||||||
{ key: 'workorder_code', display_name: '工单编号' },
|
{ key: 'workorder_code', display_name: '工单编号' },
|
||||||
{ key: 'point_code', display_name: '点位编码' }
|
{ key: 'point_code', display_name: '设备编码' }
|
||||||
],
|
],
|
||||||
workShopList: [],
|
workShopList: [],
|
||||||
regionList: [],
|
regionList: [],
|
||||||
@@ -305,6 +371,10 @@ export default {
|
|||||||
materialDialog: false
|
materialDialog: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
this.getWorkShopList()
|
||||||
|
this.getRegionList()
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
item() {
|
item() {
|
||||||
return item
|
return item
|
||||||
|
|||||||
Reference in New Issue
Block a user