fix: 供给线、油漆线上料与mes对接
This commit is contained in:
@@ -221,6 +221,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("task_code", whereJson.getString("task_code"));
|
||||
param.put("workorder_code", whereJson.getString("workorder_code"));
|
||||
|
||||
GjxSendMaterialTask taskBean = SpringContextHolder.getBean(GjxSendMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param); // 创建任务
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.ext.mes.service.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -38,6 +39,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
|
||||
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||
WQLObject workOrderCacheTab = WQLObject.getWQLObject("PDM_BI_WorkOrderCache");
|
||||
if (ObjectUtil.isEmpty(param)) {
|
||||
throw new BadRequestException("工单不能为空");
|
||||
}
|
||||
@@ -67,7 +69,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
orderWS.put("realproduceend_date", DateUtil.now());
|
||||
workOrderTab.update(orderWS);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(orderKX)) {
|
||||
if (ObjectUtil.isNotEmpty(orderKX)) { // 存在,就关闭
|
||||
orderKX.put("order_status", "5");
|
||||
orderKX.put("update_time", DateUtil.now());
|
||||
orderKX.put("realproduceend_date", DateUtil.now());
|
||||
@@ -95,8 +97,19 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
param.put("device_id", "1654663328972279808");
|
||||
param.put("device_code", deviceCodeKS);
|
||||
workOrderTab.insert(param);
|
||||
} else {
|
||||
// 有的话就暂存起来
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
param.put("device_id", "1607915553220071424");
|
||||
param.put("device_code", deviceCodeWX);
|
||||
param.put("update_time", DateUtil.now());
|
||||
workOrderCacheTab.insert(param);
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
param.put("device_id", "1654663328972279808");
|
||||
param.put("device_code", deviceCodeKS);
|
||||
workOrderCacheTab.insert(param);
|
||||
}
|
||||
} else {
|
||||
} else { // 不是油漆线直接存入
|
||||
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"));
|
||||
|
||||
@@ -38,7 +38,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
public void taskFeedback(JSONObject param, String finterfaceid) {
|
||||
JSONObject feedback = MesUtil.taskFeedback(param, finterfaceid);
|
||||
if (!feedback.getString("code").equals("200")) {
|
||||
//????
|
||||
taskFeedback(param, finterfaceid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -383,29 +383,30 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finish(JSONObject param) {
|
||||
WQLObject workorderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
WQLObject workOrderCacheTab = WQLObject.getWQLObject("PDM_BI_WorkOrderCache");
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
JSONObject row = param.getJSONObject("row");
|
||||
String workorder_id = row.getString("workorder_id");
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER");
|
||||
JSONObject produceorderMap = new JSONObject();
|
||||
produceorderMap.put("workorder_id",workorder_id);
|
||||
produceorderMap.put("order_status","5");
|
||||
produceorderMap.put("update_optid", currentUserId);
|
||||
produceorderMap.put("device_id", null);
|
||||
produceorderMap.put("update_optname", nickName);
|
||||
produceorderMap.put("update_time", now);
|
||||
produceorderMap.put("realproduceend_date", now);
|
||||
wo.update(produceorderMap);
|
||||
//wms向acs发送请求 工单强制完成
|
||||
// TODO
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("ext_order_id",workorder_id);
|
||||
map.put("type","3");
|
||||
array.add(map);
|
||||
wmsToAcsService.orderStatusUpdate(array);
|
||||
String deviceCode = row.getString("device_code");
|
||||
row.put("realproduceend_date", now);
|
||||
row.put("update_optid", currentUserId);
|
||||
row.put("update_optname", nickName);
|
||||
row.put("update_time", now);
|
||||
row.put("order_status", "5");
|
||||
workorderTab.update(row);
|
||||
if (deviceCode.equals("YQX01WX") || deviceCode.equals("YQX01KS")) {
|
||||
JSONObject jsonObject = workOrderCacheTab.query("device_code = '" + deviceCode + "'", "update_time").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonObject)) {
|
||||
// 找不到就推出
|
||||
return;
|
||||
}
|
||||
// 油漆线特殊处理: 工单完成并把这个设备的工单换成暂存表的工单
|
||||
workorderTab.insert(jsonObject);
|
||||
// 加入后工单要去掉
|
||||
workOrderCacheTab.delete(jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -30,8 +30,10 @@ import java.util.Map;
|
||||
public class MesUtil {
|
||||
public static JSONObject taskFeedback(JSONObject param, String finterfaceid) {
|
||||
MDC.put("log_file_type", "WMS任务完成反馈给MES");
|
||||
String endpointUrl = "http://helptimely.com:7722/Timely4100_15_yonyu/services/HtWebService"; // 替换为实际的 WebService 地址
|
||||
// String endpointUrl = "http://helptimely.com:7722/Timely4100_15_yonyu/services/HtWebService"; // 替换为实际的 WebService 地址
|
||||
String endpointUrl = "http://192.168.4.111:8080/mes/services/HtWebService"; // 替换为实际的 WebService 地址
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject resObj = new JSONObject();
|
||||
Map<String, String> stringMap = new HashMap<>();
|
||||
try {
|
||||
// 创建 HttpClient
|
||||
@@ -73,14 +75,19 @@ public class MesUtil {
|
||||
stringMap = parseXml2Map(String.valueOf(responseContent), new HashMap<>());
|
||||
log.info("Response Code: " + statusCode);
|
||||
log.info("Response Body: " + stringMap);
|
||||
if (statusCode == 200) {
|
||||
String s = stringMap.get("Body.postResponse.return");
|
||||
resObj = JSON.parseObject(s);
|
||||
if (resObj.getString("ErrorCode").equals("0")) {
|
||||
result.put("code", 200);
|
||||
result.put("message", "操作成功!");
|
||||
} else {
|
||||
result.put("code", resObj.getString("ErrorCode"));
|
||||
result.put("message", resObj.getString("ErrorMessage"));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
result.put("code", 400);
|
||||
result.put("message", stringMap.get("ErrorMessage"));
|
||||
result.put("message", resObj.get("ErrorMessage"));
|
||||
}
|
||||
MDC.remove("log_file_type");
|
||||
return result;
|
||||
|
||||
@@ -41,9 +41,7 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = DPJCallVehicleTask.class.getName();
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
/** 下发给ACS时需要特殊处理*/
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
@@ -150,7 +148,7 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
|
||||
.addParamMap(query)
|
||||
.process()
|
||||
.getResultJSONArray(0);
|
||||
PointUpdateUtil.updatePoint(array);
|
||||
// PointUpdateUtil.updatePoint(array);
|
||||
|
||||
// 选择一个空位
|
||||
JSONObject endPoint = WQL.getWO("DPJ_AUTOTASK")
|
||||
@@ -210,7 +208,12 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
|
||||
.addParamMap(MapOf.of("flag", "4", "block_num", emptyPoint.getString("block_num"),
|
||||
"row_num", emptyPoint.getString("row_num"))).process()
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoint)) throw new BadRequestException("叠盘架呼叫空托判断等待点异常!");
|
||||
if (ObjectUtil.isEmpty(waitPoint)) {
|
||||
taskObj.put("remark", "叠盘架呼叫空托判断等待点异常");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
throw new BadRequestException("叠盘架呼叫空托判断等待点异常!");
|
||||
}
|
||||
// 2.2、判断等待点
|
||||
if (!waitPoint.getString("waitcol").equals(emptyPoint.getString("col_num"))) {
|
||||
// 获取等待点
|
||||
@@ -221,7 +224,7 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
|
||||
"AND is_delete = '0' " +
|
||||
"AND lock_type = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoints)) {
|
||||
taskObj.put("remark", "等待点已被占用");
|
||||
taskObj.put("remark", "等待点[" + waitPoints.getString("point_code") + "]已被占用");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
|
||||
@@ -78,6 +78,12 @@ 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");
|
||||
// 物料点位解锁 并设置空位
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("point_status", "1");
|
||||
@@ -94,13 +100,6 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
|
||||
// 通知mes
|
||||
feedback.put("fscanserialid001", taskObj.getString("task_code"));
|
||||
feedback.put("flocationid979number", taskObj.getString("point_code1"));
|
||||
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||
feedback.put("fstoragequantity979", taskObj.getString("material_qty"));
|
||||
wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02");
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
JSONObject regionIoObj = new JSONObject();
|
||||
@@ -129,7 +128,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
MDC.put("log_file_type", "YqxCallMaterial");
|
||||
MDC.put("log_file_type", "油漆线叫料");
|
||||
// 到养生A区找起点:根据物料、载具类型去查找,均在工单中
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
@@ -194,10 +193,12 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
log.info("等待点搬运物料");
|
||||
taskObj.put("point_code1", materialPoint.getString("point_code"));
|
||||
taskObj.put("material_qty", materialPoint.getString("ivt_qty"));
|
||||
taskObj.put("vehicle_code", materialPoint.getString("vehicle_code"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("acs_task_type", "2");
|
||||
taskObj.put("remark", "等待点搬运物料");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
log.info("任务信息:{}", taskObj);
|
||||
taskTab.update(taskObj);
|
||||
} else {
|
||||
log.info("养生A区无所需物料");
|
||||
@@ -336,10 +337,12 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
if (ObjectUtil.isEmpty(materialPoint)) {
|
||||
throw new BadRequestException("养生A区暂无所需物料!"); // 此时车会停止
|
||||
}
|
||||
log.info("追加任务物料点:{}", materialPoint);
|
||||
String pointCode = materialPoint.getString("point_code");
|
||||
// 修改任务
|
||||
hcTask.put("point_code1", pointCode);
|
||||
hcTask.put("material_qty", materialPoint.getString("ivt_qty"));
|
||||
hcTask.put("vehicle_code", materialPoint.getString("vehicle_code"));
|
||||
hcTask.put("remark", "养生A区:" + pointCode);
|
||||
taskTab.update(hcTask);
|
||||
// 锁住点位
|
||||
|
||||
@@ -17,6 +17,7 @@ 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.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -123,6 +124,8 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
MDC.put("log_file_type", "油漆线呼叫空载具");
|
||||
log.info("请求参数: {}", form);
|
||||
/*
|
||||
* 1.先生成确定起点的任务
|
||||
* 2.通过findNextPoint()找终点
|
||||
@@ -135,16 +138,16 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
String point_code1 = form.getString("point_code1");
|
||||
String device_code = pointTab.query("point_code = '" + point_code1 + "'").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("该设备当前未生产或者已删除");
|
||||
|
||||
String vehicleType = workOrderObj.getString("vehicle_type");
|
||||
log.info("目前工单请求的载具类型: {}", vehicleType);
|
||||
if (ObjectUtil.isEmpty(vehicleType)) throw new BadRequestException("载具类型不能为空");
|
||||
JSONObject jsonObject = pointTab.query("region_code = 'YQQY01' and point_type = '2' and can_vehicle_type = '" + vehicleType + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonObject)) throw new BadRequestException("找不到油漆线托盘下料起点");
|
||||
String startPointCode = jsonObject.getString("point_code");
|
||||
|
||||
log.info("找到起点的位置:{}", startPointCode);
|
||||
//任务表【SCH_BASE_Task】
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" +
|
||||
@@ -167,6 +170,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
.build();
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
log.info("任务创建成功->id: {}", dto.getTask_id());
|
||||
// this.findNextPoint();
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
@@ -253,10 +257,12 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
String end_code = "";
|
||||
|
||||
String vehicle_type = param.getString("vehicle_type");
|
||||
log.info("载具类型:{}", vehicle_type);
|
||||
|
||||
// 1.找到对应类型的叠盘架
|
||||
JSONObject jsonDpjEnd = pointTab.query("region_id = '" + RegionTypeEnum.DPJQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(jsonDpjEnd)) {
|
||||
log.info("找到对应类型的叠盘架: {}", jsonDpjEnd.getString("point_code"));
|
||||
// 判断数量 + 叠盘架的数量是否超过此叠盘架的最大数量
|
||||
double add_num = NumberUtil.add(param.getIntValue("qty"), jsonDpjEnd.getIntValue("vehicle_qty"));
|
||||
|
||||
@@ -268,6 +274,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
|
||||
end_code = jsonZcwEnd.getString("point_code");
|
||||
log.info("找到叠盘架缓存位:{}", end_code);
|
||||
} else {
|
||||
// 为空就去养生A区的等待位
|
||||
// JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and col_num = '1' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
|
||||
@@ -286,6 +293,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
if (is_point) {
|
||||
end_code = endPointCode;
|
||||
}
|
||||
log.info("找到养生A区: {}", end_code);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -293,6 +301,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
JSONObject jsonZcwEnd = pointTab.query("region_id = '" + RegionTypeEnum.KTPHCQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
|
||||
end_code = jsonZcwEnd.getString("point_code");
|
||||
log.info("叠盘架没有空位去找叠盘暂存位:{}", end_code);
|
||||
} else {
|
||||
// 为空就去养生A区的等待位
|
||||
// JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and col_num = '1' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
|
||||
@@ -312,8 +321,10 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
if (is_point) {
|
||||
end_code = endPointCode;
|
||||
}
|
||||
log.info("去养生A区{}", end_code);
|
||||
}
|
||||
}
|
||||
log.info("找到终点:{}", end_code);
|
||||
return end_code;
|
||||
}
|
||||
|
||||
@@ -323,6 +334,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
* @return
|
||||
*/
|
||||
public String goToYSAQ(String vehicle_type) {
|
||||
log.info("载具类型:{}", vehicle_type);
|
||||
String endPointCode = null;
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
|
||||
// 先找看看有没有放过托盘的
|
||||
@@ -331,6 +343,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
" AND point_status = '2' AND is_used = '1' AND is_delete = '0'","block_num, row_num, in_empty_seq")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(emptyObj)) {
|
||||
log.info("找到之前放过空载具的位置:{}", emptyObj);
|
||||
// 如果存在则往下继续放
|
||||
Integer block_num = emptyObj.getInteger("block_num");
|
||||
Integer col_num = emptyObj.getInteger("col_num"); // 列
|
||||
@@ -352,6 +365,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
|
||||
"and point_status = '1'", "block_num, row_num, in_empty_seq desc").uniqueResult(0);
|
||||
endPointCode = endPointObj.getString("point_code");
|
||||
}
|
||||
log.info("找到的终点:{}", endPointCode);
|
||||
return endPointCode;
|
||||
}
|
||||
|
||||
|
||||
@@ -328,14 +328,17 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
//点位基础表【SCH_BASE_Point】
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
|
||||
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
String point_code1 = whereJson.getString("point_code1");
|
||||
String device = null;
|
||||
// mes点位不同,要重新寻找
|
||||
JSONObject djwPoint = pointTab.query("mes_device_code = '" + point_code1 + "' AND is_used = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(djwPoint)) {
|
||||
point_code1 = djwPoint.getString("point_code");
|
||||
device = djwPoint.getString("device_code");
|
||||
}
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String qty = whereJson.getString("qty");
|
||||
@@ -343,17 +346,30 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
JSONObject workOrderObj = new JSONObject();
|
||||
String workorderCode = whereJson.getString("workorder_code");
|
||||
// 如果是acs自己玩就没有带工单编号
|
||||
if (ObjectUtil.isEmpty(workorderCode)) {
|
||||
String device_code = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0).getString("device_code");
|
||||
workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||
} else {
|
||||
workOrderObj = workOrderTab.query("workorder_code = '" + workorderCode + "'").uniqueResult(0);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(workOrderObj)) {
|
||||
throw new BadRequestException("该设备当前未生产或者已删除");
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(device) && !workOrderObj.getString("device_code").equals(device)) {
|
||||
JSONObject jsonObject = deviceTab.query("device_code = '" + device + "'").uniqueResult(0);
|
||||
// 工单不符合,工单切换设备
|
||||
workOrderObj.put("device_code", jsonObject.getString("device_code"));
|
||||
workOrderObj.put("device_id", jsonObject.getString("device_id"));
|
||||
workOrderTab.update(workOrderObj);
|
||||
}
|
||||
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务");
|
||||
|
||||
String device_code = pointTab.query("point_code = '" + point_code1 + "'").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("该设备当前未生产或者已删除");
|
||||
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(task_code)
|
||||
|
||||
@@ -128,6 +128,8 @@ public class HtSendMaterialTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
MDC.put("log_file_type", "一楼货梯口送料");
|
||||
log.info("传来的数据:{}", form);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject vehicleInfoTab = WQLObject.getWQLObject("md_pb_vehicle");
|
||||
String startPointCode = form.getString("point_code1");
|
||||
@@ -159,6 +161,7 @@ public class HtSendMaterialTask extends AbstractAcsTask {
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
this.immediateNotifyAcs();
|
||||
MDC.remove("log_file_type");
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user