fix: 油漆线根据工单呼叫空托盘,并且将空盘上完工

This commit is contained in:
2023-10-18 17:07:31 +08:00
parent 69d5e54c53
commit 8c181160f6
4 changed files with 49 additions and 8 deletions

View File

@@ -73,7 +73,8 @@ public class MesToWmsServiceImpl implements MesToWmsService {
// 查找暂停/未生产/下发的工单
JSONObject stopOrder = workOrderTab.query("workorder_code = '"
+ param.getString("workorder_code") + "' AND order_status in ('4','1','2')").uniqueResult(0);
param.put("plan_qty", param.getString("qty"));
// param.put("plan_qty", param.getString("qty"));
param.put("plan_qty", param.getString("vehicle_qty")); // 计划数量改为托盘数
param.put("order_status", "3");
param.put("material_id", materialCode.getString("material_id"));
param.put("produce_date", DateUtil.format(new Date(), "yyyy-MM-dd"));

View File

@@ -42,6 +42,7 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject workorderTab = WQLObject.getWQLObject("pdm_bd_workorder");
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
@@ -170,6 +171,13 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
jsonTask2.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
jsonTask2.put("update_time", DateUtil.now());
taskTab.update(jsonTask2);
// 更新工单数据
String tableFk = taskObj.getString("table_fk"); // 工单号
JSONObject object = workorderTab.query("workorder_id = '" + tableFk + "'").uniqueResult(0);
object.put("real_qty", object.getInteger("real_qty") + 1);
workorderTab.update(object);
} else {
// 终点在供给线线: 更新起点(叠盘架)数量
JSONObject jsonStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
@@ -369,7 +377,8 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
//任务表【SCH_BASE_Task】
//判断当前点是否有未完成的任务
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 sub_device_code = point_code2.substring(0, point_code2.indexOf("_"));
@@ -379,6 +388,11 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
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 (workOrderObj.getInteger("real_qty") >= workOrderObj.getInteger("plan_qty")) {
throw new BadRequestException("该工单所需托盘已经足够");
}
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("")
@@ -390,6 +404,7 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
.vehicle_type(workOrderObj.getString("vehicle_type"))
.vehicle_qty(1)
.task_group_id(IdUtil.getLongId())
.table_fk(workOrderObj.getString("workorder_id"))
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
.build();
@@ -406,7 +421,7 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,"2");
this.updateTaskStatus(taskObj, "2");
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}
@@ -417,7 +432,7 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,"0");
this.updateTaskStatus(taskObj, "0");
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}

View File

@@ -14,12 +14,14 @@ import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.pdm.service.WorkordeService;
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.nl.wms.sch.tasks.RegionTypeEnum;
import org.nl.wms.sch.tasks.utils.PointUpdateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -34,12 +36,16 @@ import java.util.Map;
public class YqxCallEmpVehicleTask extends AbstractAcsTask {
private final String THIS_CLASS = YqxCallEmpVehicleTask.class.getName();
@Autowired
private WorkordeService workordeService;
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject workorderTab = WQLObject.getWQLObject("pdm_bd_workorder");
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
@@ -188,6 +194,12 @@ public class YqxCallEmpVehicleTask extends AbstractAcsTask {
}
}
// 更新工单数据
String tableFk = taskObj.getString("table_fk"); // 工单号
JSONObject object = workorderTab.query("workorder_id = '" + tableFk + "'").uniqueResult(0);
object.put("real_qty", object.getInteger("real_qty") + 1);
workorderTab.update(object);
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_time", DateUtil.now());
jsonTask.put("remark", "任务完成");
@@ -391,15 +403,27 @@ public class YqxCallEmpVehicleTask extends AbstractAcsTask {
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") + "存在未完成的任务");
String point_code2 = form.getString("point_code2");// YQX01_KS
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);
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
// 超过数量也不需要呼叫
if (workOrderObj.getInteger("real_qty") >= workOrderObj.getInteger("plan_qty")) {
// 当前位置工单完成,物上工单完成
JSONObject row = new JSONObject();
row.put("row", workOrderObj);
workordeService.finish(row);
// // 物下工单
// JSONObject workorderCode = workOrderTab.query("device_code = 'YQX01WX' and order_status = '3' and is_delete ='0' " +
// "and workorder_code = '" + workOrderObj.getString("workorder_code") + "'").uniqueResult(0);
// if (ObjectUtil.isNotEmpty(workorderCode)) {
// row.put("row", workorderCode);
// workordeService.finish(row);
// }
throw new BadRequestException("该工单所需托盘已经足够");
}
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
@@ -412,6 +436,7 @@ public class YqxCallEmpVehicleTask extends AbstractAcsTask {
.vehicle_code(form.getString("vehicle_code"))
.vehicle_type(workOrderObj.getString("vehicle_type"))
.vehicle_qty(1)
.table_fk(workOrderObj.getString("workorder_id"))
.task_group_id(org.nl.wms.util.IdUtil.getLongId())
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())

View File

@@ -246,7 +246,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
}
//找空位入: 物料点查找在第一列或者是没有找到物料点
if (ObjectUtil.isNotEmpty(taskIngs) && taskIngs.size() > 1) {
taskObj.put("remark", "相应有AGV在工作,等待执行!");
taskObj.put("remark", "相应有AGV在工作,等待执行!");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
continue;