混碾呼叫空盅
This commit is contained in:
@@ -26,7 +26,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: lyd
|
* @author: lyd
|
||||||
* @description: 混碾呼叫空托盘
|
* @description: 混碾呼叫空盅
|
||||||
* @Date: 2022/11/9
|
* @Date: 2022/11/9
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@@ -152,11 +152,8 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
|
|||||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + form.getString("point_code2") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + form.getString("point_code2") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + form.getString("point_code2") + "存在未完成的任务");
|
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + form.getString("point_code2") + "存在未完成的任务");
|
||||||
|
|
||||||
|
|
||||||
String point_code2 = form.getString("point_code2");
|
String point_code2 = form.getString("point_code2");
|
||||||
String sub_device_code = point_code2.substring(0, point_code2.indexOf("_"));
|
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
|
||||||
|
|
||||||
String device_code = pointTab.query("point_code = '" + sub_device_code + "'").uniqueResult(0).getString("device_code");
|
|
||||||
|
|
||||||
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||||
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||||
@@ -164,7 +161,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
|
|||||||
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
|
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||||
.task_type("")
|
.task_type("")
|
||||||
.task_name("混碾机叫空载具")
|
.task_name("混碾机叫空盅")
|
||||||
.task_status(TaskStatusEnum.SURE_END.getCode())
|
.task_status(TaskStatusEnum.SURE_END.getCode())
|
||||||
.point_code2(point_code2)
|
.point_code2(point_code2)
|
||||||
.acs_task_type("2")
|
.acs_task_type("2")
|
||||||
@@ -174,6 +171,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
|
|||||||
.task_group_id(org.nl.wms.util.IdUtil.getLongId())
|
.task_group_id(org.nl.wms.util.IdUtil.getLongId())
|
||||||
.handle_class(THIS_CLASS)
|
.handle_class(THIS_CLASS)
|
||||||
.create_time(DateUtil.now())
|
.create_time(DateUtil.now())
|
||||||
|
.request_param(form.toJSONString())
|
||||||
.build();
|
.build();
|
||||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||||
taskTab.insert(json);
|
taskTab.insert(json);
|
||||||
@@ -192,17 +190,22 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
|
|||||||
public void findStartPoint() {
|
public void findStartPoint() {
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||||
|
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 工单表
|
||||||
|
|
||||||
JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
JSONArray taskArr = taskTab.query("is_delete = '0' and handle_class = '" + this.THIS_CLASS + "' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||||
for (int i = 0; i < taskArr.size(); i++) {
|
for (int i = 0; i < taskArr.size(); i++) {
|
||||||
// 创建任务
|
// 创建任务
|
||||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||||
String vehicle_type = taskObj.getString("vehicle_type");
|
// 获取工单
|
||||||
|
String point_code2 = taskObj.getString("point_code2");
|
||||||
|
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
|
||||||
|
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||||
|
|
||||||
JSONObject param1 = new JSONObject();
|
JSONObject param1 = new JSONObject();
|
||||||
param1.put("flag", "1");
|
param1.put("flag", "1");
|
||||||
param1.put("region_code", "KLHJ");
|
param1.put("region_code", "KLHJ");
|
||||||
param1.put("vehicle_type", "%" + vehicle_type + "%");
|
param1.put("is_new", workOrderObj.getString("is_new"));
|
||||||
// 直接到困料货架找一个空载具
|
// 直接到困料货架找一个空载具 (需要区分新旧载具)
|
||||||
JSONObject startPoint = WQL.getWO("QSCH_hnCallEmptyVehicle_01").addParamMap(param1).process().uniqueResult(0);
|
JSONObject startPoint = WQL.getWO("QSCH_hnCallEmptyVehicle_01").addParamMap(param1).process().uniqueResult(0);
|
||||||
if (ObjectUtil.isEmpty(startPoint)) {
|
if (ObjectUtil.isEmpty(startPoint)) {
|
||||||
taskObj.put("remark", "困料货架无可用载具!");
|
taskObj.put("remark", "困料货架无可用载具!");
|
||||||
|
|||||||
@@ -14,9 +14,9 @@
|
|||||||
## 表字段对应输入参数
|
## 表字段对应输入参数
|
||||||
#################################################
|
#################################################
|
||||||
输入.flag TYPEAS s_string
|
输入.flag TYPEAS s_string
|
||||||
输入.region_code TYPEAS s_string
|
输入.region_code TYPEAS s_string
|
||||||
输入.material_id TYPEAS s_string
|
输入.material_id TYPEAS s_string
|
||||||
输入.vehicle_type TYPEAS s_string
|
输入.is_new TYPEAS s_string
|
||||||
|
|
||||||
|
|
||||||
[临时表]
|
[临时表]
|
||||||
@@ -48,18 +48,18 @@ IF 输入.flag = "1"
|
|||||||
p.point_name
|
p.point_name
|
||||||
FROM
|
FROM
|
||||||
SCH_BASE_Point p
|
SCH_BASE_Point p
|
||||||
|
LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = p.vehicle_code
|
||||||
WHERE
|
WHERE
|
||||||
lock_type = '1'
|
lock_type = '1'
|
||||||
AND is_used = '1'
|
AND is_used = '1'
|
||||||
AND is_delete = '0'
|
AND is_delete = '0'
|
||||||
AND point_status = '2'
|
AND point_status = '2'
|
||||||
OPTION 输入.vehicle_type <> ""
|
|
||||||
p.can_vehicle_type like 输入.vehicle_type
|
|
||||||
ENDOPTION
|
|
||||||
OPTION 输入.region_code <> ""
|
OPTION 输入.region_code <> ""
|
||||||
p.region_code = 输入.region_code
|
p.region_code = 输入.region_code
|
||||||
ENDOPTION
|
ENDOPTION
|
||||||
ORDER BY col_num,row_num,layer_num
|
OPTION 输入.is_new <> ""
|
||||||
|
vehicle.is_new = 输入.is_new
|
||||||
|
ENDOPTION
|
||||||
ENDSELECT
|
ENDSELECT
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|||||||
@@ -1,196 +0,0 @@
|
|||||||
package org.nl.wms.sch.tasks.sendEmpty;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
|
||||||
import org.nl.modules.common.utils.SecurityUtils;
|
|
||||||
import org.nl.modules.system.util.CodeUtil;
|
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
|
||||||
import org.nl.wms.sch.SchTaskDto;
|
|
||||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
|
||||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
|
||||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author: lyd
|
|
||||||
* @description: 混碾送空盅
|
|
||||||
* @Date: 2022/11/15
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
|
||||||
public class HnSendEmpVehicleTask extends AbstractAcsTask {
|
|
||||||
private final String THIS_CLASS = HnSendEmpVehicleTask.class.getName();
|
|
||||||
/**
|
|
||||||
* 添加任务进行下发
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<AcsTaskDto> addTask() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param taskObj 代表一条任务对象
|
|
||||||
* @param status 代表wcs任务完成状态: //0:acs,取消,:执行中,2:完成
|
|
||||||
* @return
|
|
||||||
* @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走。生成任务的时候绑定b的物料信息,任务完成的时候,清除a的物料信息
|
|
||||||
* @author ldjun
|
|
||||||
* @created 2019年4月17日 下午8:51:50
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
|
||||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
|
||||||
|
|
||||||
String task_id = taskObj.getString("task_id");
|
|
||||||
String point_code2 = taskObj.getString("point_code2");
|
|
||||||
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
|
||||||
|
|
||||||
if (StrUtil.equals(status, "0")) {
|
|
||||||
// 取消删除任务
|
|
||||||
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
|
||||||
throw new BadRequestException("已完成不能取消!");
|
|
||||||
}
|
|
||||||
// 解锁终点位置
|
|
||||||
if (ObjectUtil.isNotEmpty(point_code2)) { // 未找到终点的取消只需要完成任务就行
|
|
||||||
JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
|
||||||
point2.put("lock_type", "1");
|
|
||||||
pointTab.update(point2);
|
|
||||||
}
|
|
||||||
// 任务设置为完成
|
|
||||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
|
||||||
jsonTask.put("remark", "已取消");
|
|
||||||
taskTab.update(jsonTask);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
|
|
||||||
// 更新任务状态为执行中
|
|
||||||
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
|
||||||
jsonTask.put("update_time", DateUtil.now());
|
|
||||||
jsonTask.put("car_no", taskObj.getString("car_no"));
|
|
||||||
taskTab.update(jsonTask);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
|
||||||
// 更改任务状态为完成
|
|
||||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
|
||||||
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
|
|
||||||
jsonTask.put("update_optname", SecurityUtils.getCurrentUsername());
|
|
||||||
jsonTask.put("update_time", DateUtil.now());
|
|
||||||
taskTab.update(jsonTask);
|
|
||||||
// 释放点位
|
|
||||||
if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成
|
|
||||||
JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
|
||||||
point_2.put("lock_type", "1");
|
|
||||||
point_2.put("point_status", "2");
|
|
||||||
point_2.put("vehicle_code", jsonTask.getString("vehicle_code"));
|
|
||||||
point_2.put("vehicle_qty", "1"); // 混碾送的空盅一个放一个位置,所以只设一个
|
|
||||||
point_2.put("instorage_time", DateUtil.now());
|
|
||||||
point_2.put("is_full", "1");
|
|
||||||
point_2.put("ivt_qty", "0");
|
|
||||||
point_2.put("pcsn", "");
|
|
||||||
point_2.put("material_id", "");
|
|
||||||
point_2.put("standing_time", "0");
|
|
||||||
pointTab.update(point_2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param form 创建任务需要的参数
|
|
||||||
* @return 返回任务标识
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String createTask(JSONObject form) {
|
|
||||||
// 送到困料货架,盅
|
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
|
||||||
|
|
||||||
String point_code1 = form.getString("point_code1");
|
|
||||||
|
|
||||||
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
|
|
||||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
|
||||||
.task_type("")
|
|
||||||
.task_name("分拣空钢托盘入库")
|
|
||||||
.task_status(TaskStatusEnum.SURE_START.getCode())
|
|
||||||
.point_code1(point_code1)
|
|
||||||
.vehicle_code(form.getString("vehicle_code"))
|
|
||||||
.vehicle_type(form.getString("vehicle_type"))
|
|
||||||
.vehicle_qty(form.getIntValue("qty"))
|
|
||||||
.handle_class(THIS_CLASS)
|
|
||||||
.create_time(DateUtil.now())
|
|
||||||
.build();
|
|
||||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
|
||||||
taskTab.insert(json);
|
|
||||||
this.immediateNotifyAcs();
|
|
||||||
return String.valueOf(dto.getTask_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return
|
|
||||||
* @discription 确定下一点位
|
|
||||||
* @author ldjun
|
|
||||||
* @created 2020年6月12日 下午6:01:06
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void findNextPoint() {
|
|
||||||
// 找困料货架
|
|
||||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
|
||||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
|
||||||
|
|
||||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0);
|
|
||||||
for (int i = 0; i < taskArr.size(); i++) {
|
|
||||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
|
||||||
// 直接找
|
|
||||||
JSONObject endPoint = pointTab.query("region_code = 'KLHJ' AND lock_type = '1' AND is_used='1' AND point_type = '1'").uniqueResult(0);
|
|
||||||
if (ObjectUtil.isEmpty(endPoint)) {
|
|
||||||
taskObj.put("remark", "困料货架无可用货位!");
|
|
||||||
taskObj.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
|
||||||
taskObj.put("update_time", DateUtil.now());
|
|
||||||
taskTab.update(taskObj);
|
|
||||||
} else {
|
|
||||||
taskObj.put("update_time", DateUtil.now());
|
|
||||||
taskObj.put("point_code2", endPoint.getString("point_code"));
|
|
||||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
|
||||||
taskTab.update(taskObj);
|
|
||||||
|
|
||||||
//锁住终点
|
|
||||||
endPoint.put("task_id", taskObj.getString("task_id"));
|
|
||||||
endPoint.put("lock_type", "2");
|
|
||||||
pointTab.update(endPoint);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param task_id 任务标识
|
|
||||||
* @return
|
|
||||||
* @discription 强制结束完成任务
|
|
||||||
* @author ldjun
|
|
||||||
* @created 2020年6月19日 上午10:34:58
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void forceFinish(String task_id) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 取消任务,货物搬回原点
|
|
||||||
*
|
|
||||||
* @param task_id
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void cancel(String task_id) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user