This commit is contained in:
2023-04-06 20:19:25 +08:00
13 changed files with 141 additions and 63 deletions

View File

@@ -1,13 +1,14 @@
package org.nl.common.enums;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.nl.common.utils.MapOf;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/*
@@ -18,7 +19,7 @@ import java.util.stream.Collectors;
@Getter
@AllArgsConstructor
public enum AcsTaskEnum {
UNDEFINED("0","未定义类型"),
TASK_UNDEFINED("0","未定义类型"),
//任务类型3个点任务编号无需载具
TASK_PRODUCT_MAC("1","专机-专机满料任务"),
//3个点任务编号缓存线空载具列表
@@ -27,6 +28,10 @@ public enum AcsTaskEnum {
TASK_CACHELINE_OUT("3","缓存线-专机出库任务"),
//专机到深坑任务:深坑业务单独处理
TASK_PRODUCT_WASH("4","专机-深坑任务"),
TASK_PLOTTER_MAC("5","刻字机-满料入库"),
TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"),
TASK_WARP_MAC("7","包装机-叫料出库"),
TASK_WARP_EMPTY("8","包装机-送空框"),
//回调状态
STATUS_START("1","执行中"),
@@ -42,18 +47,18 @@ public enum AcsTaskEnum {
//
AGV_SYSTEM_NB("1","诺宝机器人任务"),
AGV_SYSTEM_XC("1","叉车任务"),
AGV_SYSTEM_XC("2","叉车任务"),
TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"),
TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"),
TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("3","诺宝单入-单任务"),
TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"),
TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"),
TASK_TYPE_WEIGHING_TASK_OF_PS20("6","PS20称重任务刻字-包装)"),
TASK_TYPE_NON_WEIGHING_TASK_OF_PS20("7","PS20不称重任务刻字-包装)"),
ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"),
ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"),
ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("3","诺宝单入-单任务"),
ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"),
ACS_TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"),
ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20("6","PS20称重任务刻字-包装)"),
ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20("7","PS20不称重任务刻字-包装)"),
TASK_FINISHED_TYPE_AUTO("1", "自动完成任务"),
TASK_FINISHED_TYPE_MANUAL("2", "手动完成任务"),
AUTO_TASK_FINISHED_TYPE("1", "自动完成任务"),
MANUAL_TASK_FINISHED_TYPE("2", "手动完成任务"),
;
private String code;
private String desc;
@@ -63,6 +68,32 @@ public enum AcsTaskEnum {
if (first.isPresent()){
return first.get();
}
return AcsTaskEnum.UNDEFINED;
return AcsTaskEnum.TASK_UNDEFINED;
}
public static JSONArray getTaskTypes() {
List<AcsTaskEnum> task = Arrays.stream(AcsTaskEnum.values()).filter(taskEnum -> taskEnum.name().startsWith("TASK_")).collect(Collectors.toList());
JSONArray res = new JSONArray();
task.forEach(t -> {
JSONObject taskEnum = new JSONObject();
taskEnum.put("name", t.getDesc());
taskEnum.put("code", t.getCode());
res.add(taskEnum);
});
return res;
}
public static List<String> getAcsTaskTypes() {
List<AcsTaskEnum> task = Arrays.stream(AcsTaskEnum.values())
.filter(taskEnum -> taskEnum.name().startsWith("ACS_TASK_"))
.collect(Collectors.toList());
List<String> list = new ArrayList<>(task.size());
task.forEach(t-> list.add(t.getDesc()));
return list;
}
public static void main(String[] args) {
getAcsTaskTypes();
}
}

View File

@@ -49,11 +49,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
for (Object o : arr) {
JSONObject task = (JSONObject) o;
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
, "acs_task_type", task.getString("acs_task_type")
, "task_code", task.getString("task_code")
, "start_point_code", task.getString("point_code1")//起点
, "next_point_code", task.getString("point_code2")//空盘返回点
, "task_type", task.getString("task_type")
, "task_type", task.getString("acs_task_type")
, "priority", task.getString("priority")
, "is_send", task.getString("is_send")
, "vehicle_code", task.getString("vehicle_code")

View File

@@ -86,15 +86,13 @@ public class TaskController {
@Log("获取任务类型列表")
@ApiOperation("获取任务类型列表")
public ResponseEntity<Object> getTaskType() {
TaskTypeEnum[] values = TaskTypeEnum.values();
JSONArray arr = new JSONArray();
for (TaskTypeEnum value : values) {
JSONObject json = new JSONObject();
json.put("code", value.getCode());
json.put("name", value.getName());
arr.add(json);
}
return new ResponseEntity<>(arr, HttpStatus.OK);
return new ResponseEntity<>(taskService.getTaskTypes(), HttpStatus.OK);
}
@GetMapping("/acsTaskType")
@Log("获取acs任务类型列表")
@ApiOperation("获取acs任务类型列表")
public ResponseEntity<Object> getAcsTaskType() {
return new ResponseEntity<>(taskService.getAcsTaskType(), HttpStatus.OK);
}
@GetMapping("/finishType")

View File

@@ -1,6 +1,7 @@
package org.nl.wms.sch.service;
import com.alibaba.fastjson.JSONArray;
import org.nl.wms.sch.service.dto.TaskDto;
import org.springframework.data.domain.Pageable;
@@ -84,4 +85,12 @@ public interface TaskService {
* @param param
*/
void operation(Map<String, Object> param);
/**
* 获取任务类型
* @return
*/
JSONArray getTaskTypes();
List<String> getAcsTaskType();
}

View File

@@ -85,8 +85,8 @@ public class TaskServiceImpl implements TaskService {
map.put("vehicle_code", "%" + whereJson.getString("vehicle_code") + "%");
}
if (StrUtil.isNotEmpty(whereJson.getString("task_type"))) {
ClassstandardDto task_type = classstandardService.findById(whereJson.getString("task_type"));
map.put("task_type", task_type.getClass_code());
// ClassstandardDto task_type = classstandardService.findById(whereJson.getString("task_type"));
map.put("task_type", whereJson.getString("task_type"));
}
if (StrUtil.isNotEmpty(whereJson.getString("finishTypeList"))) {
map.put("finishTypeList", whereJson.getString("finishTypeList"));
@@ -200,7 +200,7 @@ public class TaskServiceImpl implements TaskService {
JSONObject res = new JSONObject();
res.put("task_id", task_id);
res.put("status", AcsTaskEnum.STATUS_FINISH.getCode());
res.put("finished_type", AcsTaskEnum.TASK_FINISHED_TYPE_MANUAL.getCode()); // 手动完成
res.put("finished_type", AcsTaskEnum.MANUAL_TASK_FINISHED_TYPE.getCode()); // 手动完成
finish.add(res);
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish));
break;
@@ -216,4 +216,13 @@ public class TaskServiceImpl implements TaskService {
}
}
@Override
public JSONArray getTaskTypes() {
return AcsTaskEnum.getTaskTypes();
}
@Override
public List<String> getAcsTaskType() {
return AcsTaskEnum.getAcsTaskTypes();
}
}

View File

@@ -66,7 +66,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_FINISH.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
} else {
/**
@@ -85,7 +85,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_CANNEL.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
}
}
@@ -120,8 +120,9 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id);
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("task_name", "刻字机呼叫空框");
task.put("task_type", AcsTaskEnum.TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); // todo: 未知????????
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_EMPTY.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_EMPTY.getCode());
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("material_id", workOrderObj.getString("material_id"));
task.put("point_code2", end_point_code);
@@ -135,7 +136,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", "2");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
// 找终点
try {

View File

@@ -67,7 +67,7 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_FINISH.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
} else {
/**
@@ -86,7 +86,7 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_CANNEL.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
}
}
@@ -118,9 +118,10 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextIdStr();
JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id);
task.put("task_name", "包装叫料");
task.put("task_name", AcsTaskEnum.TASK_WARP_MAC.getDesc());
task.put("task_type", AcsTaskEnum.TASK_WARP_MAC.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("task_type", AcsTaskEnum.TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); // todo: 未知
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code2", end_point_code);
task.put("handle_class", this.getClass().getName());
@@ -133,7 +134,7 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", "2");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
// 找终点
try {

View File

@@ -65,7 +65,7 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_FINISH.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
} else {
/**
@@ -84,7 +84,7 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_CANNEL.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
}
}
@@ -106,9 +106,10 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id);
task.put("task_name", "包装送空框");
task.put("task_name", AcsTaskEnum.TASK_WARP_EMPTY.getDesc());
task.put("task_type", AcsTaskEnum.TASK_WARP_EMPTY.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("task_type", AcsTaskEnum.TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); // todo: 未知
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code1", start_point_code);
task.put("handle_class", this.getClass().getName());
@@ -121,7 +122,7 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", "2");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
// 找终点
try {

View File

@@ -67,7 +67,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_FINISH.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
} else {
/**
@@ -86,7 +86,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
taskObj.put("task_status", StatusEnum.TASK_CANNEL.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("finished_type", ObjectUtil.isNotEmpty(task.getString("finished_type"))?
task.getString("finished_type"):AcsTaskEnum.TASK_FINISHED_TYPE_AUTO.getCode());
task.getString("finished_type"):AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
taskTab.update(taskObj);
}
}
@@ -120,9 +120,10 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id);
task.put("task_name", "刻字机送料");
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_MAC.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_MAC.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("task_type", AcsTaskEnum.TASK_TYPE_WEIGHING_TASK_OF_PS20.getCode()); // todo: 未知
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", workOrderObj.getString("material_id"));
task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code1", start_point_code);
@@ -136,7 +137,7 @@ public class PlotterSendMaterialTask extends AbstractAcsTask {
task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1");
task.put("agv_system_type", "2");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
// 找终点
try {

View File

@@ -57,8 +57,7 @@
reg1.region_name as point1_region_name,
reg2.region_name as point2_region_name,
reg3.region_name as point3_region_name,
reg4.region_name as point4_region_name,
cl.class_name
reg4.region_name as point4_region_name
FROM
sch_base_task task
LEFT JOIN md_pb_classstandard md ON task.task_type = md.class_code
@@ -75,11 +74,10 @@
LEFT JOIN SCH_BASE_Region reg4 ON reg4.region_code = (
SELECT p4.region_code FROM SCH_BASE_Point p4 WHERE p4.point_code = task.point_code4
)
LEFT JOIN MD_PB_ClassStandard cl ON cl.class_code = task.task_type
WHERE
task.is_delete = '0'
OPTION 输入.task_type <> ""
task.task_type = ( select md2.class_code from md_pb_classstandard md2 where md2.class_code = 输入.task_type )
task.task_type = 输入.task_type
ENDOPTION
OPTION 输入.finished_type <> ""
task.finished_type = 输入.finished_type

View File

@@ -37,6 +37,12 @@ export function getTaskType() {
method: 'get'
})
}
export function getAcsTaskType() {
return request({
url: 'api/task/acsTaskType',
method: 'get'
})
}
export function getFinishType() {
return request({
@@ -60,5 +66,6 @@ export default {
operation,
getTaskStatus,
getTaskType,
getAcsTaskType,
getFinishType
}

View File

@@ -56,14 +56,32 @@
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<!-- <el-form-item label="任务类型">-->
<!-- <treeselect-->
<!-- v-model="query.task_type"-->
<!-- :load-options="loadChildNodes"-->
<!-- :options="classes1"-->
<!-- style="width: 180px"-->
<!-- placeholder="请选择"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="任务类型">
<treeselect
<el-select
v-model="query.task_type"
:load-options="loadChildNodes"
:options="classes1"
style="width: 180px"
placeholder="请选择"
/>
placeholder="任务类型"
class="filter-item"
clearable
@change="hand"
>
<el-option
v-for="item in taskTypeList"
:key="item.code"
clearable
:label="item.name"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="完成方式">
<el-select
@@ -133,14 +151,12 @@
<el-table-column v-if="true" prop="task_id" label="任务标识" min-width="150" show-overflow-tooltip />
<el-table-column v-if="true" prop="material_id" label="物料标识" min-width="150" show-overflow-tooltip />
<el-table-column prop="task_code" label="任务编码" min-width="100" show-overflow-tooltip />
<el-table-column prop="class_name" label="任务类型" min-width="100"/>
<el-table-column prop="acs_task_type" label="acs任务类型" min-width="120" show-overflow-tooltip>
<template slot-scope="scope">
{{ dict.label.SCH_TASK_TYPE_DTL[scope.row.acs_task_type] }}
{{ acsTaskTypeList[scope.row.acs_task_type - 1] }}
</template>
</el-table-column>
<el-table-column prop="task_name" label="任务描述" min-width="120" show-overflow-tooltip />
<el-table-column v-if="false" prop="task_type_name" label="任务类型" min-width="120" show-overflow-tooltip />
<el-table-column prop="task_name" label="任务类型" min-width="120" show-overflow-tooltip />
<el-table-column v-if="false" prop="task_status" label="任务状态" />
<el-table-column prop="product_area" label="生产区域" />
<el-table-column prop="task_status_name" label="任务状态" width="120px" :formatter="formatTaskStatusName" />
@@ -269,6 +285,7 @@ export default {
create_time: [],
taskStatusList: [],
taskTypeList: [],
acsTaskTypeList: [],
finishTypeList: [],
permission: {
@@ -285,6 +302,12 @@ export default {
crudTask.getFinishType().then(data => {
this.finishTypeList = data
})
crudTask.getTaskType().then(res => {
this.taskTypeList = res
})
crudTask.getAcsTaskType().then(res => {
this.acsTaskTypeList = res
})
// this.crud.query.task_status = ['-1']
// this.crud.toQuery()
},