fix: mes下发工单问题

This commit is contained in:
2023-08-14 10:12:44 +08:00
parent adb500894e
commit f19948e7ee
9 changed files with 91 additions and 32 deletions

View File

@@ -0,0 +1,6 @@
package org.nl.wms.autotask;/**
* @Author: lyd
* @Description:
* @Date: 2023/8/2
*/public class MaterialSynchronization {
}

View File

@@ -98,4 +98,12 @@ public class MesToWmsController {
return new ResponseEntity<>(mesToWmsService.inboundReport(param), HttpStatus.OK);
}
@PostMapping("/updateOrder")
@Log("修改工单")
@ApiOperation("修改工单")
@SaIgnore
public ResponseEntity<Object> updateOrder(@RequestBody JSONObject param) {
return new ResponseEntity<>(mesToWmsService.updateOrder(param), HttpStatus.OK);
}
}

View File

@@ -29,4 +29,6 @@ public interface MesToWmsService {
JSONObject outboundReport(JSONObject param);
JSONObject inboundReport(JSONObject param);
JSONObject updateOrder(JSONObject param);
}

View File

@@ -35,6 +35,9 @@ public class MesToWmsServiceImpl implements MesToWmsService {
public JSONObject issueWorkOrderForMes(JSONObject param) {
MDC.put("log_file_type", "MES下发工单");
log.info("mes传来工单信息" + param);
JSONObject result = new JSONObject();
result.put("status", 200);
result.put("message", "操作成功");
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
@@ -50,6 +53,26 @@ public class MesToWmsServiceImpl implements MesToWmsService {
if (ObjectUtil.isEmpty(deviceCode)) {
throw new BadRequestException("设备编码错误!");
}
// 找到当前工单的执行中的,不做处理
JSONObject jsonObject = workOrderTab.query("workorder_code = '"
+ param.getString("workorder_code") + "' AND order_status = '3' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonObject)) {
return result;
}
// 查找被删除的工单
JSONObject deleteOrder = workOrderTab.query("workorder_code = '" + param.getString("workorder_code") + "' " +
"AND is_delete = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(deleteOrder)) {
deleteOrder.put("is_delete", "0");
deleteOrder.put("order_status", "3");
deleteOrder.put("create_id", "3");
deleteOrder.put("create_name", "MES系统");
workOrderTab.update(deleteOrder);
return result;
}
// 查找暂停/未生产/下发的工单
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("order_status", "3");
param.put("material_id", materialCode.getString("material_id"));
@@ -121,22 +144,29 @@ public class MesToWmsServiceImpl implements MesToWmsService {
workOrderCacheTab.insert(param);
}
} else { // 不是油漆线直接存入
// 找正在生产的工单
JSONObject orderObjs = workOrderTab
.query("device_code = '" + deviceCode.getString("device_code") + "' AND order_status <> '5'")
.query("device_code = '" + deviceCode.getString("device_code") + "' AND order_status = '3'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(orderObjs)) {
// 多个工单就完成
orderObjs.put("order_status", "5");
// 多个工单就暂停
orderObjs.put("order_status", "4");
workOrderTab.update(orderObjs);
}
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
param.put("device_id", deviceCode.getString("device_id"));
param.put("device_code", deviceCode.getString("device_code"));
workOrderTab.insert(param);
if (ObjectUtil.isEmpty(stopOrder)) {
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
param.put("device_id", deviceCode.getString("device_id"));
param.put("device_code", deviceCode.getString("device_code"));
workOrderTab.insert(param);
} else { // 上一个暂停工单
// 否则就吧这个工单开启
stopOrder.put("create_id", "3");
stopOrder.put("create_name", "MES系统");
stopOrder.put("order_status", "3");
workOrderTab.update(stopOrder);
}
}
JSONObject result = new JSONObject();
result.put("status", 200);
result.put("message", "操作成功");
MDC.remove("log_file_type");
return result;
}
@@ -353,4 +383,19 @@ public class MesToWmsServiceImpl implements MesToWmsService {
MDC.remove("log_file_type");
return result;
}
@Override
public JSONObject updateOrder(JSONObject param) {
MDC.put("log_file_type", "MES修改工单载具类型");
log.info("修改参数:{}", param);
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
JSONObject jsonObject = workOrderTab.query("workorder_code = '" + param.getString("workorder_code") + "'").uniqueResult(0);
jsonObject.put("vehicle_type", param.getString("vehicle_type"));
workOrderTab.update(jsonObject);
JSONObject result = new JSONObject();
result.put("status", 200);
result.put("message", "操作成功");
MDC.remove("log_file_type");
return result;
}
}

View File

@@ -40,7 +40,7 @@
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
PAGEQUERY
SELECT
*
FROM
@@ -54,5 +54,5 @@
is_success = 输入.is_success
ENDOPTION
ENDSELECT
ENDQUERY
ENDPAGEQUERY
ENDIF

View File

@@ -79,11 +79,11 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
if (StrUtil.equals(status, "2")) {
//完成后
// 通知mes
feedback.put("fscanserialid001", taskObj.getString("task_code"));
feedback.put("flocationid979number", taskObj.getString("point_code1"));
feedback.put("flpn979", material_point.getString("vehicle_code"));
feedback.put("fstoragequantity979", material_point.getString("ivt_qty"));
wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02");
// feedback.put("fscanserialid001", taskObj.getString("task_code"));
// feedback.put("flocationid979number", taskObj.getString("point_code1"));
// feedback.put("flpn979", material_point.getString("vehicle_code"));
// feedback.put("fstoragequantity979", material_point.getString("ivt_qty"));
// wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02");
// 物料点位解锁 并设置空位
material_point.put("lock_type", "1");
material_point.put("point_status", "1");
@@ -272,17 +272,22 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
}
//判断当前点是否有未完成的任务
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务");
if (ObjectUtil.isNotEmpty(taskObj)) {
throw new BadRequestException("当前点位" + 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);
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
if (ObjectUtil.isEmpty(workOrderObj)) {
throw new BadRequestException("该设备当前未生产或者已删除");
}
if (ObjectUtil.isEmpty(material_code)) {
material_code = workOrderObj.getString("ext_id");
}
JSONObject object = materialTab.query("material_code = '" + material_code + "'").uniqueResult(0);
String material_id = workOrderObj.getString("material_id");
if (ObjectUtil.isNotEmpty(object)) {
material_id = object.getString("material_id");
}
SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId())
.task_code(task_code)

View File

@@ -229,7 +229,7 @@ public class CpSendMaterialTask extends AbstractAcsTask {
.task_id(IdUtil.getLongId())
.task_code(task_code)
.task_type("task_type")
.task_name("豪凯线满料")
.task_name("成品")
.material_qty(qty)
.task_status(TaskStatusEnum.SURE_START.getCode())
.point_code1(point_code1)

View File

@@ -22,17 +22,12 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.utils.PointUpdateUtil;
import org.nl.wms.util.IdUtil;
import org.nl.wms.util.RedissonUtils;
import org.slf4j.MDC;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantLock;
/**
@@ -87,14 +82,11 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
}
if (StrUtil.equals(status, "2")) {
//生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
//完成后入库
String point_code2 = taskObj.getString("point_code2");
JSONObject requestObj = task.getJSONObject("request_param");
JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
//工单标识
JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workOrderId + "'").uniqueResult(0);
JSONObject order = orderTab.query("workorder_id = '" + workOrderId + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(endPoint)) {
@@ -112,8 +104,8 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
endPoint.put("instorage_time", DateUtil.now());
endPoint.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
endPoint.put("ivt_qty", requestObj.getString("qty"));
endPoint.put("standing_time", workorderObj.getString("standing_time"));
endPoint.put("container_id", workorderObj.getString("container_id"));
endPoint.put("standing_time", order.getString("standing_time"));
endPoint.put("container_id", order.getString("container_id"));
endPoint.put("vehicle_code", taskObj.getString("vehicle_code"));
endPoint.put("vehicle_type", taskObj.getString("vehicle_type"));
endPoint.put("update_time", DateUtil.now());

View File

@@ -307,6 +307,7 @@
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:is-visiable-del="false"
:data="scope.row"
:permission="permission"
/>