1.ACS与LMS公共交互接口调整
2.满架下料实现及自测 3.固化室放满通知自动门 4.自动门反馈更改点位状态
This commit is contained in:
@@ -10,7 +10,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
* https://blog.csdn.net/moneyshi/article/details/82978073
|
* https://blog.csdn.net/moneyshi/article/details/82978073
|
||||||
*/
|
*/
|
||||||
public enum RequestMethodEnum {
|
public enum RequestMethodEnum {
|
||||||
apply_mjxl(1, "apply_mjxl", "涂板线满架下料","1"),
|
apply_mjxl(1, "MJXLTask", "涂板线满架下料","1"),
|
||||||
feedback_task_status(2, "feedback_task_status", "反馈任务状态","1");
|
feedback_task_status(2, "feedback_task_status", "反馈任务状态","1");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import lombok.Data;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.acs.device.domain.Device;
|
import org.nl.acs.device.domain.Device;
|
||||||
|
import org.nl.acs.device_driver.RequestMethodEnum;
|
||||||
|
import org.nl.acs.ext.wms.data.feedBackTaskStatus.FeedBackTaskStatusRequest;
|
||||||
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
||||||
import org.nl.acs.utils.ReadUtil;
|
import org.nl.acs.utils.ReadUtil;
|
||||||
import org.nl.acs.device.service.DeviceService;
|
import org.nl.acs.device.service.DeviceService;
|
||||||
@@ -113,7 +115,11 @@ public class StandardAutodoorDeviceDriver extends AbstractOpcDeviceDriver implem
|
|||||||
}
|
}
|
||||||
if (state != last_state) {
|
if (state != last_state) {
|
||||||
//固化室状态变更后通知lms更新固化室状态
|
//固化室状态变更后通知lms更新固化室状态
|
||||||
acsToWmsService.feedbackDeviceStatus(this.devicecode,String.valueOf(state));
|
FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest();
|
||||||
|
request.setState(String.valueOf(state));
|
||||||
|
request.setDevice_code(this.devicecode);
|
||||||
|
request.setType("1");
|
||||||
|
acsToWmsService.notify(request);
|
||||||
}
|
}
|
||||||
last_action = action;
|
last_action = action;
|
||||||
last_mode = mode;
|
last_mode = mode;
|
||||||
|
|||||||
@@ -443,9 +443,10 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp
|
|||||||
FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest();
|
FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest();
|
||||||
request.setDevice_code(devicecode);
|
request.setDevice_code(devicecode);
|
||||||
request.setVehicle_code(String.valueOf(barcode));
|
request.setVehicle_code(String.valueOf(barcode));
|
||||||
request.setTask_type(String.valueOf(type));
|
if (devicecode.startsWith("TBX")) {
|
||||||
request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode());
|
request.setRequest_medthod_code(RequestMethodEnum.apply_mjxl.getCode());
|
||||||
request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName());
|
request.setRequest_medthod_name(RequestMethodEnum.apply_mjxl.getName());
|
||||||
|
}
|
||||||
String resp = acsToWmsService.applyTask(request);
|
String resp = acsToWmsService.applyTask(request);
|
||||||
JSONObject res_jo = JSONObject.parseObject(resp);
|
JSONObject res_jo = JSONObject.parseObject(resp);
|
||||||
if (StrUtil.equals(res_jo.getString("status"), "200")) {
|
if (StrUtil.equals(res_jo.getString("status"), "200")) {
|
||||||
|
|||||||
@@ -53,5 +53,16 @@ public class BaseRequest {
|
|||||||
private Map<String, String> parameters = new HashMap();
|
private Map<String, String> parameters = new HashMap();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备状态
|
||||||
|
*/
|
||||||
|
private String state;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.nl.acs.ext.wms.rest;
|
|||||||
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -97,4 +98,12 @@ public class WmsToAcsController {
|
|||||||
return new ResponseEntity<>(wmstoacsService.putPlusPullAction(whereJson), HttpStatus.OK);
|
return new ResponseEntity<>(wmstoacsService.putPlusPullAction(whereJson), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/notify")
|
||||||
|
@Log("wms下发任务动作")
|
||||||
|
@ApiOperation("wms下发任务动作")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> notify(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(wmstoacsService.notifyAcs(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,17 @@ public interface AcsToWmsService {
|
|||||||
HttpResponse feedAgvTaskStatus(JSONArray from);
|
HttpResponse feedAgvTaskStatus(JSONArray from);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ACS向WMS申请晟华任务
|
* ACS向WMS申请任务
|
||||||
*/
|
*/
|
||||||
public String applyTask(BaseRequest request);
|
String applyTask(BaseRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ACS向WMS反馈任务状态
|
||||||
|
*/
|
||||||
|
String feedTaskStatus(BaseRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ACS向WMS反馈任务状态
|
||||||
|
*/
|
||||||
|
String notify(BaseRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.nl.acs.ext.wms.service;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.nl.acs.ext.wms.data.*;
|
import org.nl.acs.ext.wms.data.*;
|
||||||
|
|
||||||
@@ -83,4 +84,13 @@ public interface WmsToAcsService {
|
|||||||
Map<String, Object> putPlusPullAction(String whereJson);
|
Map<String, Object> putPlusPullAction(String whereJson);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发wms任务动作
|
||||||
|
*
|
||||||
|
* @param param 条件
|
||||||
|
* @return Map<String, Object>
|
||||||
|
*/
|
||||||
|
JSONObject notifyAcs(JSONObject param);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -563,6 +563,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
} finally {
|
} finally {
|
||||||
MDC.remove(log_file_type);
|
MDC.remove(log_file_type);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String feedTaskStatus(BaseRequest requestParam) {
|
||||||
|
try {
|
||||||
|
MDC.put(log_file_type, log_type);
|
||||||
|
String api = addressService.findByCode("feedTaskStatus").getMethods_url();
|
||||||
|
log.info("feedTaskStatus-----输入参数{}", JSON.toJSONString(requestParam, SerializerFeature.DisableCircularReferenceDetect));
|
||||||
|
String result = LmsUtil.notifyAcs(api, requestParam);
|
||||||
|
log.info("feedTaskStatus-----输出参数{}", result);
|
||||||
|
return result;
|
||||||
|
} finally {
|
||||||
|
MDC.remove(log_file_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String notify(BaseRequest requestParam) {
|
||||||
|
try {
|
||||||
|
MDC.put(log_file_type, log_type);
|
||||||
|
String api = addressService.findByCode("notify").getMethods_url();
|
||||||
|
log.info("notify-----输入参数{}", JSON.toJSONString(requestParam, SerializerFeature.DisableCircularReferenceDetect));
|
||||||
|
String result = LmsUtil.notifyAcs(api, requestParam);
|
||||||
|
log.info("notify-----输出参数{}", result);
|
||||||
|
return result;
|
||||||
|
} finally {
|
||||||
|
MDC.remove(log_file_type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.nl.acs.device.service.DeviceService;
|
|||||||
import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver;
|
||||||
|
import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver;
|
||||||
import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver;
|
import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver;
|
||||||
import org.nl.acs.ext.wms.data.*;
|
import org.nl.acs.ext.wms.data.*;
|
||||||
import org.nl.acs.ext.wms.service.AcsToLiKuService;
|
import org.nl.acs.ext.wms.service.AcsToLiKuService;
|
||||||
@@ -624,5 +625,38 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject notifyAcs(JSONObject param) {
|
||||||
|
log.info("notifyAcs - 请求参数 {}", param);
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
Integer type=param.getInteger("type");
|
||||||
|
String device_code=param.getString("device_code");
|
||||||
|
Device device;
|
||||||
|
switch(type){
|
||||||
|
case 1:
|
||||||
|
//wms通知固化室满料,开始固化
|
||||||
|
device = deviceAppService.findDeviceByCode(device_code);
|
||||||
|
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||||
|
StandardAutodoorDeviceDriver standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||||
|
standardAutodoorDeviceDriver.writing("to_state",1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
//wms通知固化室取料完毕,重新开放可使用
|
||||||
|
device = deviceAppService.findDeviceByCode(device_code);
|
||||||
|
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||||
|
StandardAutodoorDeviceDriver standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||||
|
standardAutodoorDeviceDriver.writing("to_state",2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.put("status", HttpStatus.OK.value());
|
||||||
|
result.put("message", "通知成功!");
|
||||||
|
log.info("notifyAcs - 返回参数 {}", result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -875,7 +875,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
|||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
String resp = null;
|
String resp = null;
|
||||||
try {
|
try {
|
||||||
resp = acstowmsService.applyTask(request);
|
resp = acstowmsService.feedTaskStatus(request);
|
||||||
log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp);
|
log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage());
|
log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage());
|
||||||
@@ -924,7 +924,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
|||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
String resp = null;
|
String resp = null;
|
||||||
try {
|
try {
|
||||||
resp = acstowmsService.applyTask(request);
|
resp = acstowmsService.feedTaskStatus(request);
|
||||||
log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp);
|
log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage());
|
log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage());
|
||||||
@@ -991,7 +991,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
|||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
String resp = null;
|
String resp = null;
|
||||||
try {
|
try {
|
||||||
resp = acstowmsService.applyTask(request);
|
resp = acstowmsService.feedTaskStatus(request);
|
||||||
log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp);
|
log.info("任务号:{},反馈wms任务状态完成成功,响应信息:{}!", entity.getTask_code(), resp);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage());
|
log.error("任务号:{},反馈wms任务状态失败,原因:{}!", entity.getTask_code(), e.getMessage());
|
||||||
|
|||||||
@@ -71,22 +71,10 @@ spring:
|
|||||||
baseline-on-migrate: true
|
baseline-on-migrate: true
|
||||||
redis:
|
redis:
|
||||||
#数据库索引
|
#数据库索引
|
||||||
|
database: ${REDIS_DB:2}
|
||||||
host: ${REDIS_HOST:127.0.0.1}
|
host: ${REDIS_HOST:127.0.0.1}
|
||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
# password: ${REDIS_PWD:}
|
# password: ${REDIS_PWD:}
|
||||||
#连接超时时间
|
|
||||||
timeout: 5000
|
|
||||||
redisson:
|
|
||||||
config: |
|
|
||||||
threads: 4
|
|
||||||
nettyThreads: 4
|
|
||||||
singleServerConfig:
|
|
||||||
database: 3
|
|
||||||
connectionMinimumIdleSize: 8
|
|
||||||
connectionPoolSize: 8
|
|
||||||
address: redis://127.0.0.1:6379
|
|
||||||
idleConnectionTimeout: 10000
|
|
||||||
timeout: 3000
|
|
||||||
|
|
||||||
# 登录相关配置
|
# 登录相关配置
|
||||||
login:
|
login:
|
||||||
|
|||||||
@@ -52,8 +52,16 @@ public class AcsToWmsController {
|
|||||||
@ApiOperation("设备状态同步")
|
@ApiOperation("设备状态同步")
|
||||||
//@SaCheckPermission("@el.check('schBaseTask:add')")
|
//@SaCheckPermission("@el.check('schBaseTask:add')")
|
||||||
@SaIgnore
|
@SaIgnore
|
||||||
public ResponseEntity<Object> status(@RequestBody Map param) {
|
public ResponseEntity<Object> status(@RequestBody JSONObject param) {
|
||||||
schBasePointService.updateStatus(JSONObject.parseObject(JSON.toJSONString(param)));
|
return new ResponseEntity<>(acsToWmsService.status(param), HttpStatus.OK);
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
}
|
||||||
|
|
||||||
|
@PostMapping("/notify")
|
||||||
|
@Log("acs通知wms")
|
||||||
|
@ApiOperation("acs通知wms")
|
||||||
|
//@SaCheckPermission("@el.check('schBaseTask:add')")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> notify(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(acsToWmsService.notify(param), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ public interface AcsToWmsService {
|
|||||||
BaseResponse acsApply(JSONObject param);
|
BaseResponse acsApply(JSONObject param);
|
||||||
|
|
||||||
/** 任务反馈 */
|
/** 任务反馈 */
|
||||||
BaseResponse feedbackTaskStatus(JSONObject param);
|
BaseResponse status(JSONObject param);
|
||||||
|
|
||||||
|
/** 任务反馈 */
|
||||||
|
BaseResponse notify(JSONObject param);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package org.nl.wms.ext.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
|
import org.nl.wms.ext.service.dto.ResultForAcs;
|
||||||
|
import org.nl.wms.ext.service.dto.to.wms.AcsResponse;
|
||||||
|
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: Wms请求Acs,统一管理与ACS对接的接口
|
||||||
|
* @Date: 2023/6/30
|
||||||
|
*/
|
||||||
|
public interface WmsToAcsService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下发指令通知
|
||||||
|
* 统一在这里维护
|
||||||
|
* @param map: 任务链表
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
AcsResponse notifyAcs(JSONObject map);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -29,6 +29,7 @@ import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
|||||||
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
|
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||||
import org.nl.wms.util.PointUtils;
|
import org.nl.wms.util.PointUtils;
|
||||||
import org.nl.wms.util.TaskUtils;
|
import org.nl.wms.util.TaskUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -38,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -64,6 +66,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
private TaskFactory taskFactory;
|
private TaskFactory taskFactory;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysNoticeService noticeService;
|
private ISysNoticeService noticeService;
|
||||||
|
@Autowired
|
||||||
|
private PointMapper pointMapper;
|
||||||
|
|
||||||
// 初始化反射方法
|
// 初始化反射方法
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@@ -78,15 +82,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
@Override
|
@Override
|
||||||
public BaseResponse acsApply(JSONObject param) {
|
public BaseResponse acsApply(JSONObject param) {
|
||||||
String requestNo = param.getString("requestNo");
|
String requestNo = param.getString("requestNo");
|
||||||
|
String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名
|
||||||
String requestMethodName = param.getString("request_medthod_name");
|
String requestMethodName = param.getString("request_medthod_name");
|
||||||
BaseResponse result = BaseResponse.build(requestNo);
|
BaseResponse result = BaseResponse.build(requestNo);
|
||||||
|
String device_code = param.getString("device_code");
|
||||||
|
param.put("config_code",requestMethodCode);
|
||||||
try {
|
try {
|
||||||
String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名
|
if(ObjectUtil.isEmpty(requestMethodCode)){
|
||||||
Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode));
|
throw new BadRequestException("任务类型不正确!requestMethodCode:"+requestMethodName+",device_code:"+device_code);
|
||||||
if (method == null) {
|
|
||||||
throw new BadRequestException("请求方法不存在");
|
|
||||||
}
|
}
|
||||||
result = (BaseResponse) method.invoke(this, param);
|
AbstractTask task = taskFactory.getTask(requestMethodCode);
|
||||||
|
// 执行创建任务
|
||||||
|
task.apply(param);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String message = ObjectUtil.isEmpty(e.getMessage())
|
String message = ObjectUtil.isEmpty(e.getMessage())
|
||||||
? ((InvocationTargetException) e).getTargetException().getMessage()
|
? ((InvocationTargetException) e).getTargetException().getMessage()
|
||||||
@@ -106,7 +113,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
* 任务反馈
|
* 任务反馈
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public BaseResponse feedbackTaskStatus(JSONObject param) {
|
public BaseResponse status(JSONObject param) {
|
||||||
String requestNo = param.getString("requestNo");
|
String requestNo = param.getString("requestNo");
|
||||||
FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class);
|
FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class);
|
||||||
String taskId = taskStatusRequest.getTask_id();
|
String taskId = taskStatusRequest.getTask_id();
|
||||||
@@ -148,4 +155,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
|
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* acs反馈wms单独场景
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BaseResponse notify(JSONObject param) {
|
||||||
|
String requestNo = param.getString("requestNo");
|
||||||
|
log.info("notifyAcs - 请求参数 {}", param);
|
||||||
|
Integer type=param.getInteger("type");
|
||||||
|
switch(type) {
|
||||||
|
case 1:
|
||||||
|
//自动门反馈设备状态,将对应十个固化室工位的状态修改为传入状态
|
||||||
|
String device_code = param.getString("device_code");
|
||||||
|
String ghs_device_code="GHS"+device_code.substring(device_code.length()-2);
|
||||||
|
String state = param.getString("state");
|
||||||
|
pointMapper.updatePointStatus(ghs_device_code,state);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return BaseResponse.responseOk(requestNo, "反馈成功!");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package org.nl.wms.ext.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.poi.ss.formula.functions.T;
|
||||||
|
import org.nl.wms.ext.service.WmsToAcsService;
|
||||||
|
import org.nl.wms.ext.service.dto.to.wms.AcsResponse;
|
||||||
|
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||||
|
import org.nl.wms.sch.task_manage.task.AcsUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: WMS请求ACS - 业务开发
|
||||||
|
* @Date: 2023/6/30
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AcsResponse notifyAcs(JSONObject map) {
|
||||||
|
String api = "api/wms/notify";
|
||||||
|
AcsResponse resultForAcs = AcsUtil.notifyAcs2(api, map);
|
||||||
|
// 记录日志
|
||||||
|
// interactRecordService.saveRecord("下发任务", list, resultForAcs, GeneralDefinition.LMS_ACS);
|
||||||
|
return resultForAcs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -137,6 +137,9 @@ public class SchBaseVehiclematerialgroup implements Serializable {
|
|||||||
@ApiModelProperty(value = "修改时间")
|
@ApiModelProperty(value = "修改时间")
|
||||||
private String update_time;
|
private String update_time;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "移动途径")
|
||||||
|
private String move_way;
|
||||||
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String material_name;
|
private String material_name;
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
|
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||||
|
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
@@ -39,6 +41,8 @@ public abstract class AbstractTask {
|
|||||||
private ISchBasePointService pointService;
|
private ISchBasePointService pointService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IPdmBdWorkorderService workorderService;
|
private IPdmBdWorkorderService workorderService;
|
||||||
|
@Autowired
|
||||||
|
private IMdBaseMaterialService materialService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务创建
|
* 任务创建
|
||||||
@@ -189,6 +193,9 @@ public abstract class AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(workorder)) {
|
if (ObjectUtil.isEmpty(workorder)) {
|
||||||
throw new BadRequestException("设备" + one.getPoint_code() + "工单未生产!");
|
throw new BadRequestException("设备" + one.getPoint_code() + "工单未生产!");
|
||||||
}
|
}
|
||||||
|
MdBaseMaterial mdBaseMaterial=materialService.getOne(new LambdaQueryWrapper<MdBaseMaterial>()
|
||||||
|
.eq(MdBaseMaterial::getMaterial_id,workorder.getMaterial_id()));
|
||||||
|
param.put("material_type",mdBaseMaterial.getMaterial_code());
|
||||||
param.put("workorder_code", workorder.getWorkorder_code()); // 静置时间
|
param.put("workorder_code", workorder.getWorkorder_code()); // 静置时间
|
||||||
// 设置任务数据
|
// 设置任务数据
|
||||||
task.setVehicle_type(workorder.getVehicle_type());
|
task.setVehicle_type(workorder.getVehicle_type());
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
package org.nl.wms.sch.task_manage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: 通用定义类型数据
|
||||||
|
* @Date: 2023/7/13
|
||||||
|
*/
|
||||||
|
public class GeneralDefinition {
|
||||||
|
/** 未知 */
|
||||||
|
public static final String UNKNOWN = "-";
|
||||||
|
// 统一编码定义
|
||||||
|
/** 窑自动任务开启 */
|
||||||
|
public static final String AUTO_KILN_CALL = "auto_kiln_call";
|
||||||
|
// 是否
|
||||||
|
/**是/正确/可用... */
|
||||||
|
public static final String YES = "1";
|
||||||
|
/** 否/错误/不可用... */
|
||||||
|
public static final String NO = "0";
|
||||||
|
// 载具类型
|
||||||
|
/** 料盅 */
|
||||||
|
public static final String MATERIAL_CUP = "LZ";
|
||||||
|
/** 钢托盘 */
|
||||||
|
public static final String STEEL_TRAY = "GTP";
|
||||||
|
// 账号定义
|
||||||
|
/** acs系统 */
|
||||||
|
public static final String ACS_ID = "2";
|
||||||
|
/** acs系统 */
|
||||||
|
public static final String ACS_NAME = "ACS系统";
|
||||||
|
/** mes系统 */
|
||||||
|
public static final String MES_ID = "3";
|
||||||
|
/** mes系统 */
|
||||||
|
public static final String MES_NAME = "MES系统";
|
||||||
|
// 点位类型
|
||||||
|
/** 设备位 */
|
||||||
|
public static final String DEVICE_POINT = "1";
|
||||||
|
/** 对接位 */
|
||||||
|
public static final String DOCKING_POINT = "2";
|
||||||
|
// 出入口
|
||||||
|
/**入口**/
|
||||||
|
public static final String ENTRANCE = "1";
|
||||||
|
/**出口**/
|
||||||
|
public static final String EXIT = "2";
|
||||||
|
// 任务生产方式
|
||||||
|
/**自动创建**/
|
||||||
|
public static final String AUTO_CREATION = "1";
|
||||||
|
/**ACS创建**/
|
||||||
|
public static final String ACS_CREATION = "2";
|
||||||
|
// 请求方向
|
||||||
|
/**ACS->LMS**/
|
||||||
|
public static final String ACS_LMS = "1";
|
||||||
|
/**LMS->ACS**/
|
||||||
|
public static final String LMS_ACS = "2";
|
||||||
|
/**MES->LMS**/
|
||||||
|
public static final String MES_LMS = "3";
|
||||||
|
/**LMS->MES**/
|
||||||
|
public static final String LMS_MES = "4";
|
||||||
|
// 区域定义
|
||||||
|
/** 料盅睏料线区域 */
|
||||||
|
public static final String LZKLX = "LZKLX";
|
||||||
|
/** 干燥窑区域 */
|
||||||
|
public static final String GZY = "GZY";
|
||||||
|
// 特殊: 1-缓存输送线入口,2-缓存输送线出口,3-上输送线,4-下输送线
|
||||||
|
/** 上输送线 */
|
||||||
|
public static final String UPPER_CONVEYOR_LINE = "3";
|
||||||
|
/** 下输送线 */
|
||||||
|
public static final String LOWER_CONVEYOR_LINE = "4";
|
||||||
|
// 参数名称
|
||||||
|
/** 是否连接 */
|
||||||
|
public static final String IS_CONNECT_ACS = "is_connect_acs";
|
||||||
|
/** ACS路径 */
|
||||||
|
public static final String ACS_URL = "acs_url";
|
||||||
|
/** 是否连接 */
|
||||||
|
public static final String IS_CONNECT_MES = "is_connect_mes";
|
||||||
|
/** MES路径 */
|
||||||
|
public static final String MES_URL = "mes_url";
|
||||||
|
// 完成/取消
|
||||||
|
/** 任务完成 */
|
||||||
|
public static final String TASK_FINISH = "任务完成";
|
||||||
|
/** 任务取消 */
|
||||||
|
public static final String TASK_CANCEL = "任务取消";
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
package org.nl.wms.sch.task_manage.task;
|
package org.nl.wms.sch.task_manage.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@@ -8,8 +9,11 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.config.SpringContextHolder;
|
import org.nl.config.SpringContextHolder;
|
||||||
|
import org.nl.system.service.param.dao.Param;
|
||||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||||
|
import org.nl.wms.ext.service.dto.to.wms.AcsResponse;
|
||||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||||
|
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -55,4 +59,47 @@ public class AcsUtil {
|
|||||||
throw new BadRequestException(result.getString("message"));*/
|
throw new BadRequestException(result.getString("message"));*/
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新的请求方式:对象中包含数组
|
||||||
|
* @param api
|
||||||
|
* @param object
|
||||||
|
* @return
|
||||||
|
* @param <T>
|
||||||
|
*/
|
||||||
|
public static <T> AcsResponse notifyAcs2(String api, T object) {
|
||||||
|
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||||
|
//判断是否连接ACS系统
|
||||||
|
Param isConnectAcs = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_ACS);
|
||||||
|
if (ObjectUtil.isEmpty(isConnectAcs)) {
|
||||||
|
return AcsResponse.requestRefuse("参数表中:" + GeneralDefinition.IS_CONNECT_ACS + "不存在");
|
||||||
|
}
|
||||||
|
String isConnect = isConnectAcs.getValue();
|
||||||
|
//ACS地址:127.0.0.1:8010
|
||||||
|
Param acsUrlObj = sysParamService.findByCode(GeneralDefinition.ACS_URL);
|
||||||
|
if (ObjectUtil.isEmpty(acsUrlObj)) {
|
||||||
|
return AcsResponse.requestRefuse("参数表中:" + GeneralDefinition.ACS_URL + "不存在");
|
||||||
|
}
|
||||||
|
String acsUrl = acsUrlObj.getValue();
|
||||||
|
JSONObject result;
|
||||||
|
if (StrUtil.equals(GeneralDefinition.NO, isConnect)) {
|
||||||
|
return AcsResponse.requestRefuse("未连接ACS!");
|
||||||
|
}
|
||||||
|
String url = acsUrl + api;
|
||||||
|
log.info("下发acs任务的参数为:{}", object.toString());
|
||||||
|
AcsResponse resultForAcs;
|
||||||
|
try {
|
||||||
|
String resultMsg = HttpRequest.post(url)
|
||||||
|
.body(JSON.toJSONString(object))
|
||||||
|
.execute().body();
|
||||||
|
result = JSONObject.parseObject(resultMsg);
|
||||||
|
resultForAcs = JSONObject.toJavaObject(result, AcsResponse.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = e.getMessage();
|
||||||
|
//网络不通
|
||||||
|
log.error("连接失败:{}", msg);
|
||||||
|
return AcsResponse.requestRefuse("网络不通,操作失败!");
|
||||||
|
}
|
||||||
|
return resultForAcs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
|||||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||||
@@ -67,16 +68,17 @@ public class MJXLTask extends AbstractTask {
|
|||||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
for (SchBaseTask task : tasks) {
|
for (SchBaseTask task : tasks) {
|
||||||
// 找终点
|
// 找终点
|
||||||
SchBasePoint startPoint= pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||||
.eq(SchBasePoint::getPoint_code, task.getPoint_code1()));
|
.eq(SchBasePoint::getPoint_code, task.getPoint_code1()));
|
||||||
String extGroupData = task.getExt_group_data();
|
String extGroupData = task.getExt_group_data();
|
||||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||||
String materialType=jsonObject.getString("material_type");
|
String materialType = jsonObject.getString("material_type");
|
||||||
SchBasePoint point = findNextPoint(startPoint, jsonObject);
|
SchBasePoint point = findNextPoint(startPoint, jsonObject);
|
||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
// 消息通知
|
// 消息通知
|
||||||
|
log.info("未找到当前符合条件的点位materialType:{},",materialType);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 设置终点并修改创建成功状态
|
// 设置终点并修改创建成功状态
|
||||||
@@ -86,7 +88,8 @@ public class MJXLTask extends AbstractTask {
|
|||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
|
|
||||||
//发起任务时先把点位占用,防止发起重复任务
|
//发起任务时先把点位占用,防止发起重复任务
|
||||||
point.setVehicle_qty(point.getVehicle_qty()+1);
|
point.setIng_task_code(task.getTask_code());
|
||||||
|
point.setVehicle_qty(point.getVehicle_qty() + 1);
|
||||||
point.setVehicle_type(materialType);
|
point.setVehicle_type(materialType);
|
||||||
pointService.update(point);
|
pointService.update(point);
|
||||||
|
|
||||||
@@ -107,29 +110,31 @@ public class MJXLTask extends AbstractTask {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SchBasePoint findNextPoint(SchBasePoint startPoint, JSONObject extGroupData) {
|
private SchBasePoint findNextPoint(SchBasePoint startPoint, JSONObject extGroupData) {
|
||||||
String regionCode=null;
|
String regionCode = null;
|
||||||
String materialType=extGroupData.getString("material_type");
|
String materialType = extGroupData.getString("material_type");
|
||||||
if("TBX1".equals(startPoint.getRegion_code())){
|
if ("TBX1".equals(startPoint.getRegion_code())) {
|
||||||
//TBX1找A区
|
//TBX1找A区
|
||||||
regionCode="GHS1";
|
regionCode = "GHS1";
|
||||||
|
|
||||||
}else if ("TBX2".equals(startPoint.getRegion_code())){
|
} else if ("TBX2".equals(startPoint.getRegion_code())) {
|
||||||
//TBX2找B区
|
//TBX2找B区
|
||||||
regionCode="GHS2";
|
regionCode = "GHS2";
|
||||||
}
|
}
|
||||||
List<SchBasePoint> schBasePointList=pointMapper.findPointByRegion(regionCode);
|
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode,"2");
|
||||||
for (SchBasePoint schBasePoint:schBasePointList){
|
for (SchBasePoint schBasePoint : schBasePointList) {
|
||||||
if(!schBasePoint.getPoint_code().endsWith("01")&&
|
if (!schBasePoint.getPoint_code().endsWith("01") &&
|
||||||
!schBasePoint.getPoint_code().endsWith("06")){
|
!schBasePoint.getPoint_code().endsWith("06")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if((schBasePoint.getVehicle_type()==null||
|
if ((ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||
|
||||||
materialType.equals(schBasePoint.getVehicle_type()))
|
materialType.equals(schBasePoint.getVehicle_type()))
|
||||||
&&schBasePoint.getVehicle_qty()<3){
|
&& "2".equals(schBasePoint.getPoint_status())
|
||||||
|
&& schBasePoint.getVehicle_qty() < 3) {
|
||||||
|
log.info("找到当前符合条件的点位{}",schBasePoint.getPoint_code());
|
||||||
return schBasePoint;
|
return schBasePoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new SchBasePoint();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -152,9 +157,9 @@ public class MJXLTask extends AbstractTask {
|
|||||||
? taskObj.getVehicle_code()
|
? taskObj.getVehicle_code()
|
||||||
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||||
: null;
|
: null;
|
||||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||||
@@ -171,11 +176,11 @@ public class MJXLTask extends AbstractTask {
|
|||||||
}
|
}
|
||||||
// 终点解锁
|
// 终点解锁
|
||||||
endPointObj.setIng_task_code("");
|
endPointObj.setIng_task_code("");
|
||||||
endPointObj.setVehicle_code(endPointObj.getVehicle_code()==null?"":endPointObj.getVehicle_code()+vehicle_code+",");
|
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
groupEntity.setCreate_id("2");
|
groupEntity.setCreate_id("2");
|
||||||
groupEntity.setCreate_name("ACS");
|
groupEntity.setCreate_name("ACS");
|
||||||
groupEntity.setCreate_time(DateUtil.now());
|
groupEntity.setCreate_time(DateUtil.now());
|
||||||
@@ -195,7 +200,7 @@ public class MJXLTask extends AbstractTask {
|
|||||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||||
groupEntity.setPoint_code(startPoint);
|
groupEntity.setPoint_code(startPoint);
|
||||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||||
groupEntity.setInstorage_time(DateUtil.now());
|
groupEntity.setInstorage_time(DateUtil.now());
|
||||||
groupEntity.setTask_code(taskObj.getTask_code());
|
groupEntity.setTask_code(taskObj.getTask_code());
|
||||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||||
@@ -213,6 +218,11 @@ public class MJXLTask extends AbstractTask {
|
|||||||
// 终点解锁
|
// 终点解锁
|
||||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||||
endPointObj.setIng_task_code("");
|
endPointObj.setIng_task_code("");
|
||||||
|
//任务取消把原先占用的位置释放
|
||||||
|
endPointObj.setVehicle_qty(endPointObj.getVehicle_qty()-1);
|
||||||
|
if(endPointObj.getVehicle_qty()<=0){
|
||||||
|
endPointObj.setVehicle_type(null);
|
||||||
|
}
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
}
|
}
|
||||||
taskObj.setRemark("任务取消");
|
taskObj.setRemark("任务取消");
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks.ghs;
|
package org.nl.wms.sch.task_manage.task.tasks.ghs;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
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.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -8,6 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.config.MapOf;
|
import org.nl.config.MapOf;
|
||||||
|
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||||
|
import org.nl.wms.ext.service.WmsToAcsService;
|
||||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||||
@@ -19,12 +22,16 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
|||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
|
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||||
import org.nl.wms.util.PointUtils;
|
import org.nl.wms.util.PointUtils;
|
||||||
|
import org.nl.wms.util.TaskUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -58,83 +65,141 @@ public class GHSFMTask extends AbstractTask {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private PointMapper yzMapper;
|
private PointMapper pointMapper;
|
||||||
|
@Autowired
|
||||||
|
private WmsToAcsService wmsToAcsService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1.扫描每个允许放货的固化室01和06位置是否满足三列均已放满,开始下一层判断
|
||||||
|
* 2.如果当列1-5或6-10总15个位置已经放满,则进行下一层判断
|
||||||
|
* 3.如果该固化室30个位置全部放满,则通知acs告知固化室开始固化
|
||||||
|
* 4.如果内部2-5或7-10仍有空列,则生成1-(2-5),6-(7-10)的任务,优先级为8最高
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
protected void create() throws BadRequestException {
|
protected void create() throws BadRequestException {
|
||||||
// 获取任务
|
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion("GHS","2");
|
||||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
for (SchBasePoint schBasePoint : schBasePointList) {
|
||||||
// 配置信息
|
if (!schBasePoint.getPoint_code().endsWith("01") &&
|
||||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
!schBasePoint.getPoint_code().endsWith("06")) {
|
||||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
|
||||||
for (SchBaseTask task : tasks) {
|
|
||||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
|
||||||
// 找终点
|
|
||||||
String extGroupData = task.getExt_group_data();
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
|
||||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
|
||||||
if (ObjectUtil.isEmpty(point)) {
|
|
||||||
task.setRemark("未找到所需点位!");
|
|
||||||
taskService.update(task);
|
|
||||||
// 消息通知
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 设置终点并修改创建成功状态
|
if (schBasePoint.getVehicle_qty()==3&&ObjectUtil.isEmpty(schBasePoint.getIng_task_code())) {
|
||||||
task.setPoint_code2(point.getPoint_code());
|
log.info("固化室对接位{}已经放满,开始进行后续判断",schBasePoint.getPoint_code());
|
||||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
String first=schBasePoint.getPoint_code().substring(0,schBasePoint.getPoint_code().length()-2);
|
||||||
task.setRemark("");
|
String last=schBasePoint.getPoint_code().substring(schBasePoint.getPoint_code().length()-1);
|
||||||
taskService.update(task);
|
String middle=schBasePoint.getPoint_code().substring(schBasePoint.getPoint_code().length()-4,schBasePoint.getPoint_code().length()-2);
|
||||||
|
boolean flag=false;
|
||||||
|
String pointCode=null;
|
||||||
|
//倒叙检查是否有符合要求的终点
|
||||||
|
for(int i=4;i>0;i--){
|
||||||
|
pointCode=first+ String.format("%02d",Integer.valueOf(last)+i);
|
||||||
|
for(SchBasePoint schBasePoint1 : schBasePointList){
|
||||||
|
if (schBasePoint1.getPoint_code().equals(pointCode)
|
||||||
|
&&schBasePoint1.getVehicle_qty()==0&&ObjectUtil.isEmpty(schBasePoint1.getIng_task_code())){
|
||||||
|
log.info("找到当前列内部存在空位{}",pointCode);
|
||||||
|
flag=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(flag){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flag){
|
||||||
|
//生成任务并下发
|
||||||
|
this.createTask(schBasePoint,pointCode);
|
||||||
|
}else{
|
||||||
|
//如果当列均已放满,检查隔壁列是否已全部放满
|
||||||
|
if("1".equals(last)){
|
||||||
|
last="6";
|
||||||
|
}
|
||||||
|
for(int i=0;i<=4;i++){
|
||||||
|
pointCode=first+ String.format("%02d",Integer.valueOf(last)+i);
|
||||||
|
for(SchBasePoint schBasePoint1 : schBasePointList){
|
||||||
|
if (schBasePoint1.getPoint_code().equals(pointCode)
|
||||||
|
&&(schBasePoint1.getVehicle_qty()!=3||ObjectUtil.isNotEmpty(schBasePoint1.getIng_task_code()))){
|
||||||
|
log.info("检查当前固化室{}隔壁列,找到当前列内部存在空位{},不发送固化请求",schBasePoint.getPoint_code(),pointCode);
|
||||||
|
flag=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
point.setIng_task_code(task.getTask_code());
|
}
|
||||||
pointService.update(point);
|
if(!flag){
|
||||||
|
//通知acs已经放满,固化室可以进行固化
|
||||||
//下发
|
String device_code="ZDM"+middle;
|
||||||
// this.renotifyAcs(task);
|
log.info("当前固化室已经全部放满,通知固化室的自动门{}开始固化",device_code);
|
||||||
|
JSONObject map = new JSONObject();
|
||||||
|
map.put("device_code",device_code);
|
||||||
|
map.put("type","1");
|
||||||
|
wmsToAcsService.notifyAcs(map);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
* 创建任务并下发
|
||||||
*
|
*
|
||||||
* @param nextRegionStr
|
* @param schBasePoint
|
||||||
* @param extGroupData
|
* @param endPoint
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
private void createTask(SchBasePoint schBasePoint,String endPoint) {
|
||||||
// 需要获取nextRegionStr
|
// 申请任务
|
||||||
if (nextRegionStr.size() < 2) {
|
SchBaseTask task = new SchBaseTask(); // 任务实体
|
||||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
String apply_point_code =schBasePoint.getPoint_code(); // 请求点
|
||||||
|
String config_code = "GHSFMTask";
|
||||||
|
// 1、校验数据
|
||||||
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
|
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||||
|
Assert.notNull(taskConfig, "找不到配置文件,请确认[" + config_code + "]配置是否存在!");
|
||||||
|
// 最大任务数
|
||||||
|
Integer tcmn = taskConfig.getTask_create_max_num();
|
||||||
|
// 获取执行中的任务
|
||||||
|
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
|
||||||
|
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
|
||||||
|
|
||||||
|
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
|
||||||
|
"该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||||
|
// 获取对接位点位对象
|
||||||
|
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||||
|
.eq(SchBasePoint::getPoint_code, apply_point_code));
|
||||||
|
// 校验是否需要自动agv
|
||||||
|
if (!pointObj.getIs_auto()) {
|
||||||
|
// 如果不需要自动,则不创建任务
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
String regionCode = nextRegionStr.get(0);
|
// 2、创建申请任务
|
||||||
// 当前设备的工单
|
task.setConfig_code(config_code);
|
||||||
String workorderCode = extGroupData.getString("workorder_code");
|
task.setCreate_mode(GeneralDefinition.ACS_CREATION);
|
||||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
task.setVehicle_code(schBasePoint.getVehicle_code());
|
||||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
task.setVehicle_qty(schBasePoint.getVehicle_qty());
|
||||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||||
: null;
|
task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码
|
||||||
if (one == null) {
|
task.setPoint_code2(endPoint);
|
||||||
throw new BadRequestException("压制机的工单不能为空!");
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
}
|
task.setRemark("");
|
||||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
// 设置起/终点
|
||||||
if (one.getIs_urgent()) {
|
this.setTaskPoint(taskConfig, task, apply_point_code);
|
||||||
regionCode = nextRegionStr.get(1); // 去窑区
|
taskService.create(task);
|
||||||
}
|
|
||||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
//下发
|
||||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
this.renotifyAcs(task);
|
||||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
|
||||||
// ??
|
|
||||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
|
||||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
|
||||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
|
||||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
|
||||||
// .or()
|
|
||||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
|
||||||
// .eq(SchBasePoint::getIs_used, true);
|
|
||||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
|
||||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改任务状态
|
||||||
|
* 1.任务完成时,无需再次组盘,将点位表起点货位三个组盘信息移动到终点
|
||||||
|
* 2.组盘表中三个点位增加移动动作,并且修改当前点位到目标地点
|
||||||
|
* 3.
|
||||||
|
*
|
||||||
|
* @param task_code
|
||||||
|
* @param status
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
protected void updateStatus(String task_code, TaskStatus status) {
|
protected void updateStatus(String task_code, TaskStatus status) {
|
||||||
@@ -146,18 +211,6 @@ public class GHSFMTask extends AbstractTask {
|
|||||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||||
throw new BadRequestException("该任务已取消!");
|
throw new BadRequestException("该任务已取消!");
|
||||||
}
|
}
|
||||||
// 获取参数
|
|
||||||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
|
||||||
? JSONObject.parseObject(taskObj.getExt_group_data())
|
|
||||||
: null;
|
|
||||||
// 载具编码:没有就创建一个
|
|
||||||
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
|
|
||||||
? taskObj.getVehicle_code()
|
|
||||||
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
|
||||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
|
||||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
|
||||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
|
||||||
: null;
|
|
||||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||||
@@ -168,46 +221,41 @@ public class GHSFMTask extends AbstractTask {
|
|||||||
taskObj.setRemark("执行中");
|
taskObj.setRemark("执行中");
|
||||||
}
|
}
|
||||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||||
|
StringBuilder group_id= new StringBuilder();
|
||||||
|
// 终点解锁
|
||||||
|
endPointObj.setIng_task_code("");
|
||||||
|
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||||
|
endPointObj.setVehicle_type(startPointObj.getVehicle_type());
|
||||||
|
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||||
|
endPointObj.setVehicle_qty(startPointObj.getVehicle_qty());
|
||||||
|
endPointObj.setUpdate_time(DateUtil.now());
|
||||||
|
pointService.update(endPointObj);
|
||||||
|
List<String> vehicleCodeList = Arrays.stream(startPointObj.getVehicle_code().split(",")).collect(Collectors.toList());
|
||||||
|
for(String vehicleCode:vehicleCodeList) {
|
||||||
|
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||||
|
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||||
|
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
|
||||||
|
GroupBindMaterialStatusEnum.BOUND.getValue()));
|
||||||
|
if (ObjectUtil.isEmpty(one)) {
|
||||||
|
throw new BadRequestException(vehicleCode + " => " + startPointObj.getVehicle_type() + "的组盘信息未找到");
|
||||||
|
}
|
||||||
|
one.setTask_code(taskObj.getTask_code());
|
||||||
|
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
|
||||||
|
one.setPoint_name(endPointObj.getPoint_name());
|
||||||
|
one.setMove_way(one.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||||
|
one.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||||
|
one.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||||
|
one.setUpdate_time(DateUtil.now());
|
||||||
|
vehiclematerialgroupService.updateById(one);
|
||||||
|
group_id.append(one.getGroup_id()).append(',');
|
||||||
|
}
|
||||||
// 起点清空
|
// 起点清空
|
||||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||||
PointUtils.clearPoint(startPointObj);
|
PointUtils.clearPoint(startPointObj);
|
||||||
}
|
}
|
||||||
// 终点解锁
|
|
||||||
endPointObj.setIng_task_code("");
|
|
||||||
pointService.update(endPointObj);
|
|
||||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
|
||||||
groupEntity.setCreate_id("2");
|
|
||||||
groupEntity.setCreate_name("ACS");
|
|
||||||
groupEntity.setCreate_time(DateUtil.now());
|
|
||||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
|
||||||
? workorderCode.getMaterial_id()
|
|
||||||
: "");
|
|
||||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
|
||||||
? workorderCode.getStanding_time()
|
|
||||||
: 0);
|
|
||||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
|
||||||
? extGroupData.getBigDecimal("material_qty")
|
|
||||||
: BigDecimal.valueOf(0));
|
|
||||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
|
||||||
? workorderCode.getWorkorder_code()
|
|
||||||
: "");
|
|
||||||
groupEntity.setVehicle_code(vehicle_code);
|
|
||||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
|
||||||
groupEntity.setPoint_code(startPoint);
|
|
||||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
|
||||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
|
||||||
groupEntity.setInstorage_time(DateUtil.now());
|
|
||||||
groupEntity.setTask_code(taskObj.getTask_code());
|
|
||||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
|
||||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
|
||||||
groupEntity.setIs_delete(false);
|
|
||||||
vehiclematerialgroupService.save(groupEntity);
|
|
||||||
|
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
taskObj.setGroup_id(group_id.toString());
|
||||||
taskObj.setRemark("任务完成");
|
taskObj.setRemark("任务完成");
|
||||||
}
|
}
|
||||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ import java.util.List;
|
|||||||
* @Date: 2023/10/9
|
* @Date: 2023/10/9
|
||||||
*/
|
*/
|
||||||
public interface PointMapper {
|
public interface PointMapper {
|
||||||
List<SchBasePoint> findPointByRegion(String regionCode);
|
List<SchBasePoint> findPointByRegion(String regionCode,String point_state);
|
||||||
|
List<SchBasePoint> findPointByPoint(String pointCode);
|
||||||
|
|
||||||
|
void updatePointStatus(String device_code,String state);
|
||||||
List<SchBasePoint> findPointForYZSL(JSONObject param);
|
List<SchBasePoint> findPointForYZSL(JSONObject param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,22 @@
|
|||||||
p.*
|
p.*
|
||||||
FROM
|
FROM
|
||||||
`sch_base_point` p
|
`sch_base_point` p
|
||||||
WHERE p.region_code = #{regionCode}
|
WHERE p.region_code like CONCAT('%', #{regionCode}, '%')
|
||||||
|
and p.point_state = #{point_state}
|
||||||
ORDER BY region_code
|
ORDER BY region_code
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="findPointByRegion" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||||
|
SELECT
|
||||||
|
p.*
|
||||||
|
FROM
|
||||||
|
`sch_base_point` p
|
||||||
|
WHERE p.point_code like CONCAT('%', #{pointCode}, '%')
|
||||||
|
ORDER BY point_code
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<update id="updatePointStatus">
|
||||||
|
update sch_base_point set point_status = #{state}
|
||||||
|
where point_code like CONCAT('%', #{device_code}, '%')
|
||||||
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -37,11 +37,12 @@ public class PointUtils {
|
|||||||
*/
|
*/
|
||||||
public static void clearPoint(SchBasePoint point) {
|
public static void clearPoint(SchBasePoint point) {
|
||||||
SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||||
point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
// point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||||
point.setVehicle_type("");
|
point.setVehicle_type("");
|
||||||
point.setVehicle_code("");
|
point.setVehicle_code("");
|
||||||
point.setIng_task_code("");
|
point.setIng_task_code("");
|
||||||
point.setVehicle_qty(0);
|
point.setVehicle_qty(0);
|
||||||
|
point.setVehicle_type("");
|
||||||
point.setUpdate_time(DateUtil.now());
|
point.setUpdate_time(DateUtil.now());
|
||||||
pointService.updateById(point);
|
pointService.updateById(point);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user