add:增加固化室前置与后置任务

This commit is contained in:
2025-02-10 22:10:17 +08:00
parent 087b9f5f8e
commit 1bbf15cdb8
4 changed files with 70 additions and 29 deletions

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.dromara.dynamictp.common.util.StringUtil;
@@ -38,6 +39,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -139,7 +143,7 @@ public class GHCMLTask extends AbstractTask {
if (ObjectUtil.isEmpty(point)) {
throw new BadRequestException("暂存区域[" + task.getPoint_code1() + "]未找到所需点位!");
}
log.info("当前任务{}找到预计终点{}",task.getTask_id(),point.getPoint_code());
log.info("当前任务{}找到预计终点{}", task.getTask_id(), point.getPoint_code());
// 设置组盘 - 需要的话由子类自行实现
task.setGroup_id(setGroupPlate(jsonObject));
// 设置等待点并修改创建成功状态
@@ -148,9 +152,26 @@ public class GHCMLTask extends AbstractTask {
task.setTask_status(TaskStatus.CREATED.getCode());
task.setRemark("");
task.setRequest_param(JSONObject.toJSONString(jsonObject));
List<SchBaseTask> qlTask = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getPoint_code2, task.getPoint_code1())
.eq(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete,false)
.ge(SchBaseTask::getCreate_time,
LocalDateTime.now().toLocalDate().atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
)
.eq(SchBaseTask::getVehicle_code, startPoint.getVehicle_code())
.orderByDesc(SchBaseTask::getCreate_time)
.last("limit 1"));
if (ObjectUtil.isEmpty(qlTask)) {
throw new BadRequestException("创建失败,找不到[" + task.getPoint_code1() + "]完成的前置GHCQLTask任务!");
}
//更新绑定前置任务固化室点位 -> 固化室出口标识
LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, qlTask.get(0).getTask_id())
.set(SchBaseTask::getTask_group_id, task.getTask_id());
taskService.update(updateWrapper);
TaskUtils.setUpdateByAcs(task);
taskService.save(task);
PointUtils.setUpdateByAcs(point);
pointService.updateById(point);

View File

@@ -38,6 +38,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
@@ -94,24 +97,13 @@ public class GHCQLTask extends AbstractTask {
if (ObjectUtils.isEmpty(ghsExitList)) {
return;
}
//过滤未完成的固化室出库任务的点位
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.in(SchBaseTask::getPoint_code1, ghsExitList)
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
);
if (ObjectUtils.isNotEmpty(taskList)) {
taskList.stream().map(SchBaseTask::getPoint_code1).forEach(ghsExitList::remove);
}
if (ObjectUtils.isEmpty(ghsExitList)) {
return;
}
AbstractTask task = taskFactory.getTask(TASK_CONFIG_CODE);
ghsExitList.forEach(point -> {
ghsExitList.forEach(r -> {
try {
JSONObject param = new JSONObject();
param.put("config_code", TASK_CONFIG_CODE);
param.put("requestNo", "LMS" + IdUtil.simpleUUID());
param.put("device_code", point);
param.put("device_code", r);
param.put("create_mode", GeneralDefinition.AUTO_CREATION);
task.apply(param);
} catch (Exception e) {
@@ -130,6 +122,17 @@ public class GHCQLTask extends AbstractTask {
@Override
protected void createCompletion(SchBaseTask task) {
List<SchBaseTask> qlTask = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getPoint_code2, task.getPoint_code2())
.eq(SchBaseTask::getConfig_code,"GHCQLTask")
.eq(SchBaseTask::getIs_delete,false)
.eq(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
.orderByDesc(SchBaseTask::getCreate_time).last("limit 1"));
if (ObjectUtil.isNotEmpty(qlTask)) {
if (qlTask.get(0).getTask_group_id() == null) {
throw new BadRequestException("创建失败,任务号[" + qlTask.get(0).getTask_code() + "]找不到相关的后置任务GHCMLTask任务!");
}
}
// 配置信息
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
@@ -160,7 +163,6 @@ public class GHCQLTask extends AbstractTask {
task.setGroup_id(point.getGroup_id());
task.setRemark("");
taskService.save(task);
point.setIng_task_code(task.getTask_code());
PointUtils.setUpdateByAcs(point);
pointService.updateById(point);

View File

@@ -6,7 +6,7 @@ spring:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:xftn_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lms_xftn}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:123456}

View File

@@ -16,7 +16,7 @@
v-model="query.task_code"
clearable
style="width: 180px"
placeholder="任务号"
placeholder="请输入任务号"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
@@ -26,16 +26,34 @@
v-model="query.vehicle_code"
clearable
style="width: 180px"
placeholder="载具号"
placeholder="请输入载具号"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="点位编码">
<el-form-item label="任务类型">
<el-input
v-model="query.point_code"
v-model="query.config_code"
clearable
style="width: 180px"
placeholder="起点"
placeholder="请输入任务类型"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="任务起点">
<el-input
v-model="query.point_code1"
clearable
style="width: 180px"
placeholder="请输入起点"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="任务终点">
<el-input
v-model="query.point_code2"
clearable
style="width: 180px"
placeholder="请输入终点"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
@@ -85,7 +103,7 @@
<el-form-item label="任务状态">
<el-input v-model="form.task_status" style="width: 240px;" />
</el-form-item>
<el-form-item label="配置编码">
<el-form-item label="任务类型">
<el-input v-model="form.config_code" style="width: 240px;" />
</el-form-item>
<el-form-item label="点位1">
@@ -179,12 +197,12 @@
</template>
</el-table-column>
<el-table-column prop="remark" label="提示信息" :min-width="flexWidth('remark',crud.data,'提示信息')" />
<el-table-column prop="config_code" label="配置编码" :min-width="flexWidth('config_code',crud.data,'配置编码')" />
<el-table-column prop="config_code" label="任务类型" :min-width="flexWidth('config_code',crud.data,'任务类型')" />
<el-table-column prop="point_code1" label="起点" :min-width="flexWidth('point_code1',crud.data,'点位1')" />
<el-table-column prop="point_code2" label="终点" :min-width="flexWidth('point_code2',crud.data,'点位2')" />
<!-- <el-table-column prop="point_code3" label="起点2" :min-width="flexWidth('point_code3',crud.data,'点位3')" />-->
<!-- <el-table-column prop="point_code4" label="终点2" :min-width="flexWidth('point_code4',crud.data,'点位4')" />-->
<!-- <el-table-column prop="start_wait_point" label="取货等待点" :min-width="flexWidth('start_wait_point',crud.data,'取货等待点')" />-->
<!-- <el-table-column prop="point_code3" label="起点2" :min-width="flexWidth('point_code3',crud.data,'点位3')" />-->
<!-- <el-table-column prop="point_code4" label="终点2" :min-width="flexWidth('point_code4',crud.data,'点位4')" />-->
<!-- <el-table-column prop="start_wait_point" label="取货等待点" :min-width="flexWidth('start_wait_point',crud.data,'取货等待点')" />-->
<el-table-column prop="next_wait_point" label="放货等待点" :min-width="flexWidth('next_wait_point',crud.data,'放货等待点')" />
<el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型', 20)">
<template slot-scope="scope">
@@ -208,8 +226,8 @@
{{ dict.label.create_mode[scope.row.create_mode] }}
</template>
</el-table-column>
<el-table-column prop="request_param" label="生成任务的请求参数" :min-width="100" show-overflow-tooltip/>
<el-table-column prop="workshop_code" v-if="false" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')" />
<el-table-column prop="request_param" label="生成任务的请求参数" :min-width="100" show-overflow-tooltip />
<el-table-column v-if="false" 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,'修改人')" />