fix: 供给线、油漆线上料与mes对接

This commit is contained in:
2023-07-05 16:37:08 +08:00
parent a3191d28a0
commit b71d83c8ff
11 changed files with 108 additions and 47 deletions

View File

@@ -221,6 +221,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
param.put("vehicle_type", vehicle_type); param.put("vehicle_type", vehicle_type);
param.put("vehicle_code", vehicle_code); param.put("vehicle_code", vehicle_code);
param.put("task_code", whereJson.getString("task_code")); param.put("task_code", whereJson.getString("task_code"));
param.put("workorder_code", whereJson.getString("workorder_code"));
GjxSendMaterialTask taskBean = SpringContextHolder.getBean(GjxSendMaterialTask.class); GjxSendMaterialTask taskBean = SpringContextHolder.getBean(GjxSendMaterialTask.class);
String task_id = taskBean.createTask(param); // 创建任务 String task_id = taskBean.createTask(param); // 创建任务

View File

@@ -3,6 +3,7 @@ package org.nl.wms.ext.mes.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -38,6 +39,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder"); WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device"); WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase"); WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
WQLObject workOrderCacheTab = WQLObject.getWQLObject("PDM_BI_WorkOrderCache");
if (ObjectUtil.isEmpty(param)) { if (ObjectUtil.isEmpty(param)) {
throw new BadRequestException("工单不能为空"); throw new BadRequestException("工单不能为空");
} }
@@ -67,7 +69,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
orderWS.put("realproduceend_date", DateUtil.now()); orderWS.put("realproduceend_date", DateUtil.now());
workOrderTab.update(orderWS); workOrderTab.update(orderWS);
} }
if (ObjectUtil.isNotEmpty(orderKX)) { if (ObjectUtil.isNotEmpty(orderKX)) { // 存在,就关闭
orderKX.put("order_status", "5"); orderKX.put("order_status", "5");
orderKX.put("update_time", DateUtil.now()); orderKX.put("update_time", DateUtil.now());
orderKX.put("realproduceend_date", 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_id", "1654663328972279808");
param.put("device_code", deviceCodeKS); param.put("device_code", deviceCodeKS);
workOrderTab.insert(param); 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("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
param.put("device_id", deviceCode.getString("device_id")); param.put("device_id", deviceCode.getString("device_id"));
param.put("device_code", deviceCode.getString("device_code")); param.put("device_code", deviceCode.getString("device_code"));

View File

@@ -38,7 +38,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
public void taskFeedback(JSONObject param, String finterfaceid) { public void taskFeedback(JSONObject param, String finterfaceid) {
JSONObject feedback = MesUtil.taskFeedback(param, finterfaceid); JSONObject feedback = MesUtil.taskFeedback(param, finterfaceid);
if (!feedback.getString("code").equals("200")) { if (!feedback.getString("code").equals("200")) {
//???? taskFeedback(param, finterfaceid);
} }
} }

View File

@@ -383,29 +383,30 @@ public class WorkorderServiceImpl implements WorkordeService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finish(JSONObject param) { public void finish(JSONObject param) {
WQLObject workorderTab = WQLObject.getWQLObject("pdm_bd_workorder");
WQLObject workOrderCacheTab = WQLObject.getWQLObject("PDM_BI_WorkOrderCache");
Long currentUserId = SecurityUtils.getCurrentUserId(); Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
JSONObject row = param.getJSONObject("row"); JSONObject row = param.getJSONObject("row");
String workorder_id = row.getString("workorder_id"); String deviceCode = row.getString("device_code");
WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER"); row.put("realproduceend_date", now);
JSONObject produceorderMap = new JSONObject(); row.put("update_optid", currentUserId);
produceorderMap.put("workorder_id",workorder_id); row.put("update_optname", nickName);
produceorderMap.put("order_status","5"); row.put("update_time", now);
produceorderMap.put("update_optid", currentUserId); row.put("order_status", "5");
produceorderMap.put("device_id", null); workorderTab.update(row);
produceorderMap.put("update_optname", nickName); if (deviceCode.equals("YQX01WX") || deviceCode.equals("YQX01KS")) {
produceorderMap.put("update_time", now); JSONObject jsonObject = workOrderCacheTab.query("device_code = '" + deviceCode + "'", "update_time").uniqueResult(0);
produceorderMap.put("realproduceend_date", now); if (ObjectUtil.isEmpty(jsonObject)) {
wo.update(produceorderMap); // 找不到就推出
//wms向acs发送请求 工单强制完成 return;
// TODO }
JSONArray array = new JSONArray(); // 油漆线特殊处理: 工单完成并把这个设备的工单换成暂存表的工单
JSONObject map = new JSONObject(); workorderTab.insert(jsonObject);
map.put("ext_order_id",workorder_id); // 加入后工单要去掉
map.put("type","3"); workOrderCacheTab.delete(jsonObject);
array.add(map); }
wmsToAcsService.orderStatusUpdate(array);
} }
@Override @Override

View File

@@ -30,8 +30,10 @@ import java.util.Map;
public class MesUtil { public class MesUtil {
public static JSONObject taskFeedback(JSONObject param, String finterfaceid) { public static JSONObject taskFeedback(JSONObject param, String finterfaceid) {
MDC.put("log_file_type", "WMS任务完成反馈给MES"); 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 result = new JSONObject();
JSONObject resObj = new JSONObject();
Map<String, String> stringMap = new HashMap<>(); Map<String, String> stringMap = new HashMap<>();
try { try {
// 创建 HttpClient // 创建 HttpClient
@@ -73,14 +75,19 @@ public class MesUtil {
stringMap = parseXml2Map(String.valueOf(responseContent), new HashMap<>()); stringMap = parseXml2Map(String.valueOf(responseContent), new HashMap<>());
log.info("Response Code: " + statusCode); log.info("Response Code: " + statusCode);
log.info("Response Body: " + stringMap); 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("code", 200);
result.put("message", "操作成功!"); result.put("message", "操作成功!");
} else {
result.put("code", resObj.getString("ErrorCode"));
result.put("message", resObj.getString("ErrorMessage"));
} }
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
result.put("code", 400); result.put("code", 400);
result.put("message", stringMap.get("ErrorMessage")); result.put("message", resObj.get("ErrorMessage"));
} }
MDC.remove("log_file_type"); MDC.remove("log_file_type");
return result; return result;

View File

@@ -41,9 +41,7 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
private final String THIS_CLASS = DPJCallVehicleTask.class.getName(); private final String THIS_CLASS = DPJCallVehicleTask.class.getName();
@Override @Override
public List<AcsTaskDto> addTask() { 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); 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<>(); ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
@@ -150,7 +148,7 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
.addParamMap(query) .addParamMap(query)
.process() .process()
.getResultJSONArray(0); .getResultJSONArray(0);
PointUpdateUtil.updatePoint(array); // PointUpdateUtil.updatePoint(array);
// 选择一个空位 // 选择一个空位
JSONObject endPoint = WQL.getWO("DPJ_AUTOTASK") 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"), .addParamMap(MapOf.of("flag", "4", "block_num", emptyPoint.getString("block_num"),
"row_num", emptyPoint.getString("row_num"))).process() "row_num", emptyPoint.getString("row_num"))).process()
.uniqueResult(0); .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、判断等待点 // 2.2、判断等待点
if (!waitPoint.getString("waitcol").equals(emptyPoint.getString("col_num"))) { if (!waitPoint.getString("waitcol").equals(emptyPoint.getString("col_num"))) {
// 获取等待点 // 获取等待点
@@ -221,7 +224,7 @@ public class DPJCallVehicleTask extends AbstractAcsTask {
"AND is_delete = '0' " + "AND is_delete = '0' " +
"AND lock_type = '1'").uniqueResult(0); "AND lock_type = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(waitPoints)) { if (ObjectUtil.isEmpty(waitPoints)) {
taskObj.put("remark", "等待点已被占用"); taskObj.put("remark", "等待点[" + waitPoints.getString("point_code") + "]已被占用");
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj); taskTab.update(taskObj);
continue; continue;

View File

@@ -78,6 +78,12 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
if (StrUtil.equals(status, "2")) { 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("lock_type", "1");
material_point.put("point_status", "1"); material_point.put("point_status", "1");
@@ -94,13 +100,6 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
if (ObjectUtil.isEmpty(material_point)) return; 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】 //区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
JSONObject regionIoObj = new JSONObject(); JSONObject regionIoObj = new JSONObject();
@@ -129,7 +128,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
@Override @Override
public void findStartPoint() { public void findStartPoint() {
MDC.put("log_file_type", "YqxCallMaterial"); MDC.put("log_file_type", "油漆线叫料");
// 到养生A区找起点根据物料、载具类型去查找均在工单中 // 到养生A区找起点根据物料、载具类型去查找均在工单中
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"); // 点位表
@@ -194,10 +193,12 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
log.info("等待点搬运物料"); log.info("等待点搬运物料");
taskObj.put("point_code1", materialPoint.getString("point_code")); taskObj.put("point_code1", materialPoint.getString("point_code"));
taskObj.put("material_qty", materialPoint.getString("ivt_qty")); 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("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("acs_task_type", "2"); taskObj.put("acs_task_type", "2");
taskObj.put("remark", "等待点搬运物料"); taskObj.put("remark", "等待点搬运物料");
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
log.info("任务信息:{}", taskObj);
taskTab.update(taskObj); taskTab.update(taskObj);
} else { } else {
log.info("养生A区无所需物料"); log.info("养生A区无所需物料");
@@ -336,10 +337,12 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
if (ObjectUtil.isEmpty(materialPoint)) { if (ObjectUtil.isEmpty(materialPoint)) {
throw new BadRequestException("养生A区暂无所需物料!"); // 此时车会停止 throw new BadRequestException("养生A区暂无所需物料!"); // 此时车会停止
} }
log.info("追加任务物料点:{}", materialPoint);
String pointCode = materialPoint.getString("point_code"); String pointCode = materialPoint.getString("point_code");
// 修改任务 // 修改任务
hcTask.put("point_code1", pointCode); hcTask.put("point_code1", pointCode);
hcTask.put("material_qty", materialPoint.getString("ivt_qty")); hcTask.put("material_qty", materialPoint.getString("ivt_qty"));
hcTask.put("vehicle_code", materialPoint.getString("vehicle_code"));
hcTask.put("remark", "养生A区" + pointCode); hcTask.put("remark", "养生A区" + pointCode);
taskTab.update(hcTask); taskTab.update(hcTask);
// 锁住点位 // 锁住点位

View File

@@ -17,6 +17,7 @@ import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.RegionTypeEnum; import org.nl.wms.sch.tasks.RegionTypeEnum;
import org.slf4j.MDC;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -123,6 +124,8 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) { public String createTask(JSONObject form) {
MDC.put("log_file_type", "油漆线呼叫空载具");
log.info("请求参数: {}", form);
/* /*
* 1.先生成确定起点的任务 * 1.先生成确定起点的任务
* 2.通过findNextPoint()找终点 * 2.通过findNextPoint()找终点
@@ -135,16 +138,16 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
String point_code1 = form.getString("point_code1"); String point_code1 = form.getString("point_code1");
String device_code = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0).getString("device_code"); 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); 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("该设备当前未生产或者已删除");
String vehicleType = workOrderObj.getString("vehicle_type"); String vehicleType = workOrderObj.getString("vehicle_type");
log.info("目前工单请求的载具类型: {}", vehicleType);
if (ObjectUtil.isEmpty(vehicleType)) throw new BadRequestException("载具类型不能为空"); 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); 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("找不到油漆线托盘下料起点"); if (ObjectUtil.isEmpty(jsonObject)) throw new BadRequestException("找不到油漆线托盘下料起点");
String startPointCode = jsonObject.getString("point_code"); String startPointCode = jsonObject.getString("point_code");
log.info("找到起点的位置:{}", startPointCode);
//任务表【SCH_BASE_Task】 //任务表【SCH_BASE_Task】
//判断当前点是否有未完成的任务 //判断当前点是否有未完成的任务
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" +
@@ -167,6 +170,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
.build(); .build();
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
taskTab.insert(json); taskTab.insert(json);
log.info("任务创建成功->id: {}", dto.getTask_id());
// this.findNextPoint(); // this.findNextPoint();
this.immediateNotifyAcs(); this.immediateNotifyAcs();
return String.valueOf(dto.getTask_id()); return String.valueOf(dto.getTask_id());
@@ -253,10 +257,12 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
String end_code = ""; String end_code = "";
String vehicle_type = param.getString("vehicle_type"); String vehicle_type = param.getString("vehicle_type");
log.info("载具类型:{}", vehicle_type);
// 1.找到对应类型的叠盘架 // 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); 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)) { if (ObjectUtil.isNotEmpty(jsonDpjEnd)) {
log.info("找到对应类型的叠盘架: {}", jsonDpjEnd.getString("point_code"));
// 判断数量 + 叠盘架的数量是否超过此叠盘架的最大数量 // 判断数量 + 叠盘架的数量是否超过此叠盘架的最大数量
double add_num = NumberUtil.add(param.getIntValue("qty"), jsonDpjEnd.getIntValue("vehicle_qty")); 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)) { if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
end_code = jsonZcwEnd.getString("point_code"); end_code = jsonZcwEnd.getString("point_code");
log.info("找到叠盘架缓存位:{}", end_code);
} else { } else {
// 为空就去养生A区的等待位 // 为空就去养生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); // 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) { if (is_point) {
end_code = endPointCode; end_code = endPointCode;
} }
log.info("找到养生A区: {}", end_code);
} }
} }
} else { } 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); 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)) { if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
end_code = jsonZcwEnd.getString("point_code"); end_code = jsonZcwEnd.getString("point_code");
log.info("叠盘架没有空位去找叠盘暂存位:{}", end_code);
} else { } else {
// 为空就去养生A区的等待位 // 为空就去养生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); // 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) { if (is_point) {
end_code = endPointCode; end_code = endPointCode;
} }
log.info("去养生A区{}", end_code);
} }
} }
log.info("找到终点:{}", end_code);
return end_code; return end_code;
} }
@@ -323,6 +334,7 @@ public class YqxSendEmpVehicleTask extends AbstractAcsTask {
* @return * @return
*/ */
public String goToYSAQ(String vehicle_type) { public String goToYSAQ(String vehicle_type) {
log.info("载具类型:{}", vehicle_type);
String endPointCode = null; String endPointCode = null;
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表 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") " AND point_status = '2' AND is_used = '1' AND is_delete = '0'","block_num, row_num, in_empty_seq")
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isNotEmpty(emptyObj)) { if (ObjectUtil.isNotEmpty(emptyObj)) {
log.info("找到之前放过空载具的位置:{}", emptyObj);
// 如果存在则往下继续放 // 如果存在则往下继续放
Integer block_num = emptyObj.getInteger("block_num"); Integer block_num = emptyObj.getInteger("block_num");
Integer col_num = emptyObj.getInteger("col_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); "and point_status = '1'", "block_num, row_num, in_empty_seq desc").uniqueResult(0);
endPointCode = endPointObj.getString("point_code"); endPointCode = endPointObj.getString("point_code");
} }
log.info("找到的终点:{}", endPointCode);
return endPointCode; return endPointCode;
} }

View File

@@ -328,14 +328,17 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
//点位基础表【SCH_BASE_Point】 //点位基础表【SCH_BASE_Point】
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
//任务表【SCH_BASE_Task】 //任务表【SCH_BASE_Task】
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
String point_code1 = whereJson.getString("point_code1"); String point_code1 = whereJson.getString("point_code1");
String device = null;
// mes点位不同要重新寻找 // mes点位不同要重新寻找
JSONObject djwPoint = pointTab.query("mes_device_code = '" + point_code1 + "' AND is_used = '1'").uniqueResult(0); JSONObject djwPoint = pointTab.query("mes_device_code = '" + point_code1 + "' AND is_used = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(djwPoint)) { if (ObjectUtil.isNotEmpty(djwPoint)) {
point_code1 = djwPoint.getString("point_code"); point_code1 = djwPoint.getString("point_code");
device = djwPoint.getString("device_code");
} }
String vehicle_code = whereJson.getString("vehicle_code"); String vehicle_code = whereJson.getString("vehicle_code");
String qty = whereJson.getString("qty"); String qty = whereJson.getString("qty");
@@ -343,17 +346,30 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) { if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
task_code = 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); 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 + "存在未完成的任务"); 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() SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId()) .task_id(IdUtil.getLongId())
.task_code(task_code) .task_code(task_code)

View File

@@ -128,6 +128,8 @@ public class HtSendMaterialTask extends AbstractAcsTask {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) { public String createTask(JSONObject form) {
MDC.put("log_file_type", "一楼货梯口送料");
log.info("传来的数据:{}", form);
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject vehicleInfoTab = WQLObject.getWQLObject("md_pb_vehicle"); WQLObject vehicleInfoTab = WQLObject.getWQLObject("md_pb_vehicle");
String startPointCode = form.getString("point_code1"); String startPointCode = form.getString("point_code1");
@@ -159,6 +161,7 @@ public class HtSendMaterialTask extends AbstractAcsTask {
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
taskTab.insert(json); taskTab.insert(json);
this.immediateNotifyAcs(); this.immediateNotifyAcs();
MDC.remove("log_file_type");
return String.valueOf(dto.getTask_id()); return String.valueOf(dto.getTask_id());
} }