41 changed files with 1018 additions and 87 deletions
@ -1,41 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<included> |
|||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
|||
<property name="LOG_HOME" value="${logPath}"/> |
|||
<define name="DEVICECODE" class="org.nl.modules.logging.DeviceCodeDir"/> |
|||
<!-- 按照每天生成日志文件 --> |
|||
<appender name="FILE_LUCENE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
|||
<!--日志文件输出的文件名--> |
|||
<FileNamePattern>${LOG_HOME}/lucene/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
|||
<!--日志文件保留天数--> |
|||
<maxHistory>15</maxHistory> |
|||
<!--单个日志最大容量 至少10MB才能看得出来--> |
|||
<maxFileSize>50MB</maxFileSize> |
|||
<!--所有日志最多占多大容量--> |
|||
<totalSizeCap>2GB</totalSizeCap> |
|||
</rollingPolicy> |
|||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
|||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
|||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
|||
<charset>${log.charset}</charset> |
|||
</encoder> |
|||
|
|||
</appender> |
|||
|
|||
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" /> |
|||
<appender name="asyncLuceneAppender" class="ch.qos.logback.classic.AsyncAppender"> |
|||
<appender-ref ref="luceneAppender" /> |
|||
<!-- 设置队列大小,根据您的需求调整 --> |
|||
<queueSize>512</queueSize> |
|||
</appender> |
|||
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
|||
<appender-ref ref="FILE3"/> |
|||
</logger>--> |
|||
|
|||
<!-- 打印sql --> |
|||
<logger name="org.nl.modules.lucene.service.impl.LuceneExecuteLogServiceImpl" level="info" additivity="true"> |
|||
<appender-ref ref="FILE_LUCENE"/> |
|||
<appender-ref ref="asyncLuceneAppender"/> |
|||
</logger> |
|||
</included> |
@ -0,0 +1,25 @@ |
|||
package org.nl.common.enums; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
|
|||
/** |
|||
* 货物状态枚举 |
|||
*/ |
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum GoodsEnum { |
|||
|
|||
|
|||
OUT_OF_STOCK("无货","0"), |
|||
|
|||
IN_STOCK("有货","1"), |
|||
|
|||
PICK_UP("取货","1"), |
|||
|
|||
DELIVER_GOODS("送货","2"); |
|||
|
|||
|
|||
private final String name; |
|||
private final String value; |
|||
} |
@ -0,0 +1,16 @@ |
|||
package org.nl.common.enums.region; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
|
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum RegionEnum { |
|||
|
|||
STAMPING_AND_BLANKING("Amada 80T冲床(手动加工)","111-06"), |
|||
TRUBEND_SHELVES_3_1_1("TruBend 7036货架03-01-01","111-07"); |
|||
|
|||
private final String region_name; |
|||
private final String region_code; |
|||
|
|||
} |
@ -0,0 +1,36 @@ |
|||
package org.nl.wms.ext.connector.controller; |
|||
|
|||
import cn.dev33.satoken.annotation.SaIgnore; |
|||
import cn.hutool.json.JSONArray; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.logging.annotation.Log; |
|||
import org.nl.wms.ext.connector.service.ConnectorToWmsService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
@RestController |
|||
@Api(tags = "connector请求lms") |
|||
@RequestMapping("/api/") |
|||
@Slf4j |
|||
@SaIgnore |
|||
public class ConnectorToWmsController { |
|||
|
|||
@Autowired |
|||
private ConnectorToWmsService connectorService; |
|||
|
|||
|
|||
@Log("connector下发agv任务") |
|||
@ApiOperation("connector下发agv任务") |
|||
@SaIgnore |
|||
@PostMapping("/wms/task") |
|||
public Object createTaskByConnector(@RequestBody JSONArray jsonArray){ |
|||
Object taskByConnector = connectorService.createTaskByConnector(jsonArray); |
|||
return taskByConnector; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package org.nl.wms.ext.connector.service; |
|||
|
|||
import cn.hutool.json.JSONArray; |
|||
|
|||
import java.util.Map; |
|||
|
|||
public interface ConnectorToWmsService { |
|||
|
|||
|
|||
/** |
|||
* connector下发agv任务 |
|||
* @param jsonArray |
|||
* @return |
|||
*/ |
|||
Object createTaskByConnector(JSONArray jsonArray); |
|||
} |
@ -0,0 +1,15 @@ |
|||
package org.nl.wms.ext.connector.service; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; |
|||
|
|||
/** |
|||
* @author LENOVO |
|||
*/ |
|||
public interface WmsToConnectorService { |
|||
/** |
|||
* 反馈agv任务取放货状态 |
|||
* @param json |
|||
*/ |
|||
AcsResponse feedAgvTaskStatus(JSONObject json); |
|||
} |
@ -0,0 +1,79 @@ |
|||
package org.nl.wms.ext.connector.service.dto; |
|||
|
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class ConnectorDto { |
|||
|
|||
/** |
|||
* 数据ID |
|||
*/ |
|||
private String id; |
|||
/** |
|||
* 任务号 |
|||
*/ |
|||
private String Jobname; |
|||
|
|||
/** |
|||
* 下料小车托盘号 |
|||
*/ |
|||
private String PalletID; |
|||
|
|||
/** |
|||
* 物料号 |
|||
*/ |
|||
private String ProductID; |
|||
/** |
|||
* 装载数量 |
|||
*/ |
|||
private String Currentqty; |
|||
/** |
|||
* X尺寸 |
|||
*/ |
|||
private String SizeX; |
|||
/** |
|||
* Y尺寸 |
|||
*/ |
|||
private String SizeY; |
|||
/** |
|||
* 角度 |
|||
*/ |
|||
private String Angle; |
|||
/** |
|||
* 厚度 |
|||
*/ |
|||
private String Thickness; |
|||
/** |
|||
* X坐标 |
|||
*/ |
|||
private String PositionX; |
|||
/** |
|||
* Y坐标 |
|||
*/ |
|||
private String PositionY; |
|||
/** |
|||
* 载具号 |
|||
*/ |
|||
private String vehicle_code; |
|||
/** |
|||
* 工单 |
|||
*/ |
|||
private String ProductionOrder; |
|||
/** |
|||
* JOBFinishFlag |
|||
*/ |
|||
private String Finished; |
|||
/** |
|||
* 下一道工序 |
|||
*/ |
|||
private String NextOperation; |
|||
/** |
|||
* 截至时间 |
|||
*/ |
|||
private String DueDate; |
|||
} |
@ -0,0 +1,108 @@ |
|||
package org.nl.wms.ext.connector.service.impl; |
|||
|
|||
import cn.hutool.core.collection.CollUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import cn.hutool.http.HttpStatus; |
|||
import cn.hutool.json.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.wms.ext.acs.service.WmsToAcsService; |
|||
import org.nl.wms.ext.connector.service.ConnectorToWmsService; |
|||
import org.nl.wms.sch.point.service.ISchBasePointService; |
|||
import org.nl.wms.sch.point.service.dao.SchBasePoint; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskService; |
|||
import org.nl.wms.sch.task_manage.AbstractTask; |
|||
import org.nl.wms.sch.task_manage.GeneralDefinition; |
|||
import org.nl.wms.sch.task_manage.task.TaskFactory; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
@Slf4j |
|||
@Service |
|||
public class ConnectorToWmsServiceImpl implements ConnectorToWmsService { |
|||
|
|||
|
|||
@Autowired |
|||
private ISchBasePointService schBasePointService; |
|||
|
|||
@Autowired |
|||
private ISchBaseTaskService schBaseTaskService; |
|||
|
|||
@Autowired |
|||
private WmsToAcsService wmsToAcsService; |
|||
|
|||
@Autowired |
|||
private TaskFactory taskFactory; |
|||
|
|||
@Override |
|||
public Object createTaskByConnector(JSONArray jsonArray) { |
|||
log.info("connector下发agv任务请求参数:{}", jsonArray); |
|||
Map map = new HashMap(); |
|||
com.alibaba.fastjson.JSONArray objects = new com.alibaba.fastjson.JSONArray(); |
|||
if (CollUtil.isEmpty(jsonArray) || jsonArray.size() == 0) { |
|||
map.put("status", HttpStatus.HTTP_INTERNAL_ERROR); |
|||
map.put("message", "请求参数为空!"); |
|||
objects.add(map); |
|||
return objects; |
|||
} |
|||
try { |
|||
for (Object jsonObject : jsonArray) { |
|||
Map map1 = new HashMap(); |
|||
JSONObject data = JSONObject.parseObject(jsonObject.toString()); |
|||
String task_code = data.getString("task_code"); |
|||
String start_device_code = data.getString("start_device_code"); |
|||
String vehicle_code = data.getString("vehicle_code"); |
|||
if (StrUtil.isEmpty(task_code) || StrUtil.isEmpty(start_device_code) || StrUtil.isEmpty(vehicle_code)) { |
|||
map1.put("task_code", task_code); |
|||
map1.put("status", HttpStatus.HTTP_INTERNAL_ERROR); |
|||
map1.put("message",StrUtil.isEmpty(task_code) ? "任务号不能为空!" |
|||
: StrUtil.isEmpty(start_device_code) ? "起点参数不能为空!" : StrUtil.isEmpty(vehicle_code) ? "载具号不能为空!" : "未知"); |
|||
objects.add(map1); |
|||
continue; |
|||
} |
|||
SchBasePoint schBasePoint = schBasePointService.selectByPointCode(start_device_code); |
|||
if(ObjectUtil.isEmpty(schBasePoint) || StrUtil.isNotEmpty(schBasePoint.getIng_task_code())){ |
|||
map1.put("task_code", task_code); |
|||
map1.put("status", HttpStatus.HTTP_INTERNAL_ERROR); |
|||
map1.put("message",ObjectUtil.isEmpty(schBasePoint) |
|||
? start_device_code + "起点设备不存在!" : start_device_code + "该设备正在执行任务!"); |
|||
objects.add(map1); |
|||
continue; |
|||
} |
|||
//TODO:固定的载具类型,根据载具类型来决定终点
|
|||
String task_type = data.getString("task_type"); |
|||
String is_empty = data.getString("is_empty"); |
|||
String remark = data.getString("remark"); |
|||
String params = data.getString("params"); |
|||
task_type = "1".equals(task_type) ? "1" : "2"; |
|||
AbstractTask connectorTask = taskFactory.getTask("CNTTask"); |
|||
// 准备参数:设备编码
|
|||
JSONObject param = new JSONObject(); |
|||
param.put("device_code", start_device_code); |
|||
param.put("config_code", "CNTTask"); |
|||
param.put("create_mode", GeneralDefinition.AUTO_CREATION); |
|||
param.put("vehicle_code", vehicle_code); |
|||
param.put("task_type", task_type); |
|||
param.put("task_code", task_code); |
|||
param.put("remark",remark); |
|||
connectorTask.apply(param); |
|||
schBasePoint.setIng_task_code(task_code); |
|||
schBasePointService.updateById(schBasePoint); |
|||
map1.put("task_code", task_code); |
|||
map1.put("status", HttpStatus.HTTP_OK); |
|||
map1.put("message", "操作成功!"); |
|||
objects.add(map1); |
|||
} |
|||
} catch (Exception e) { |
|||
map.put("status", HttpStatus.HTTP_INTERNAL_ERROR); |
|||
map.put("message", e.getMessage()); |
|||
objects.add(map); |
|||
return objects; |
|||
} |
|||
return objects; |
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
package org.nl.wms.ext.connector.service.impl; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; |
|||
import org.nl.wms.ext.connector.service.WmsToConnectorService; |
|||
import org.nl.wms.sch.task_manage.task.AcsUtil; |
|||
import org.nl.wms.sch.task_manage.task.ConnectorUtil; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
/** |
|||
* @author LENOVO |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
public class WmsToConnectorServiceImpl implements WmsToConnectorService { |
|||
|
|||
|
|||
@Override |
|||
public AcsResponse feedAgvTaskStatus(JSONObject json) { |
|||
String api = "api/iot/agvtask"; |
|||
AcsResponse acsResponse = ConnectorUtil.notifyConnector2(api, json); |
|||
return acsResponse; |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,39 @@ |
|||
package org.nl.wms.ext.sorting.controller; |
|||
|
|||
import cn.dev33.satoken.annotation.SaIgnore; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.logging.annotation.Log; |
|||
import org.nl.wms.ext.sorting.service.SortingService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.util.Map; |
|||
|
|||
@RestController |
|||
@Api(tags = "acs请求lms") |
|||
@RequestMapping("/api/wms") |
|||
@Slf4j |
|||
@SaIgnore |
|||
public class SortingController { |
|||
|
|||
|
|||
@Autowired |
|||
private SortingService sortingService; |
|||
|
|||
@PostMapping("/agv") |
|||
@Log("sorting下发agv任务") |
|||
@ApiOperation("sorting下发agv任务") |
|||
@SaIgnore |
|||
public Map createAgvTaskBySorting(@RequestBody JSONObject jsonObject){ |
|||
Map map = sortingService.createAgvTask(jsonObject); |
|||
return null; |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,21 @@ |
|||
package org.nl.wms.ext.sorting.enums; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
|
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum SortingEnum { |
|||
|
|||
TASK_TYPE_ONE("运送托盘到sortinga站","1"), |
|||
|
|||
TASK_TYPE_TWO("从sorting站取托盘给线边库","2"), |
|||
|
|||
IS_EMPTY("托盘为空","1"), |
|||
|
|||
NOT_EMPTY("托盘不为空","0"); |
|||
|
|||
private final String name; |
|||
private final String value; |
|||
|
|||
} |
@ -0,0 +1,18 @@ |
|||
package org.nl.wms.ext.sorting.service; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author LENOVO |
|||
*/ |
|||
public interface SortingService { |
|||
|
|||
/** |
|||
* sorting下发agv任务 |
|||
* @param jsonObject |
|||
* @return |
|||
*/ |
|||
Map createAgvTask(JSONObject jsonObject); |
|||
} |
@ -0,0 +1,60 @@ |
|||
package org.nl.wms.ext.sorting.service.impl; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.json.JSONArray; |
|||
import cn.hutool.json.JSONUtil; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import org.nl.wms.ext.sorting.enums.SortingEnum; |
|||
import org.nl.wms.ext.sorting.service.SortingService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author LENOVO |
|||
*/ |
|||
@Service |
|||
public class SortingServiceImpl implements SortingService { |
|||
|
|||
|
|||
@Override |
|||
public Map createAgvTask(JSONObject jsonObject) { |
|||
Map map = new HashMap(); |
|||
if(ObjectUtil.isEmpty(jsonObject)){ |
|||
map.put("status", 200); |
|||
map.put("msg", "操作失败"); |
|||
map.put("errMsg","参数对象为空"); |
|||
map.put("data", null); |
|||
return map; |
|||
} |
|||
//任务号
|
|||
String task_code = jsonObject.getString("task_code"); |
|||
//任务类型:1.运送托盘到sorting;2.从sorting运送托盘给线边库
|
|||
String task_type = jsonObject.getString("task_type"); |
|||
//是否空托盘; 1.是 0.否
|
|||
String is_empty = jsonObject.getString("is_empty"); |
|||
String task_time = jsonObject.getString("task_time"); |
|||
//冲床工作号
|
|||
String jobname = jsonObject.getString("jobname"); |
|||
//载具托盘号
|
|||
String vehicle_code = jsonObject.getString("vehicle_code"); |
|||
//托盘上的堆垛信息
|
|||
JSONArray jsonArray = JSONUtil.parseArray(jsonObject.get("pallet_detail")); |
|||
// TODO:呼叫空托
|
|||
if(SortingEnum.TASK_TYPE_ONE.getValue().equals(task_type) && SortingEnum.IS_EMPTY.getValue().equals(is_empty)){ |
|||
|
|||
//TODO:叫料
|
|||
}else if(SortingEnum.TASK_TYPE_ONE.getValue().equals(task_type) && SortingEnum.NOT_EMPTY.getValue().equals(is_empty)){ |
|||
|
|||
//TODO:将空托盘放到线边库
|
|||
}else if(SortingEnum.TASK_TYPE_TWO.getValue().equals(task_type) && SortingEnum.IS_EMPTY.getValue().equals(is_empty)){ |
|||
|
|||
//TODO:将满料放到线边库
|
|||
}else if(SortingEnum.TASK_TYPE_TWO.getValue().equals(task_type) && SortingEnum.NOT_EMPTY.getValue().equals(is_empty)){ |
|||
|
|||
} |
|||
|
|||
return null; |
|||
} |
|||
} |
@ -0,0 +1,105 @@ |
|||
|
|||
package org.nl.wms.sch.task_manage.task; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import cn.hutool.core.util.StrUtil; |
|||
import cn.hutool.http.HttpRequest; |
|||
import com.alibaba.fastjson.JSON; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.config.SpringContextHolder; |
|||
import org.nl.system.service.param.dao.Param; |
|||
import org.nl.system.service.param.impl.SysParamServiceImpl; |
|||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; |
|||
import org.nl.wms.sch.task_manage.AcsTaskDto; |
|||
import org.nl.wms.sch.task_manage.GeneralDefinition; |
|||
import org.springframework.http.HttpStatus; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* ACS连接工具类: |
|||
*/ |
|||
@Slf4j |
|||
public class ConnectorUtil { |
|||
public static JSONObject notifyAcs(String api, List<AcsTaskDto> list) { |
|||
//判断是否连接ACS系统
|
|||
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue(); |
|||
// list转JSONArray
|
|||
String s = JSON.toJSONString(list); |
|||
JSONObject result = new JSONObject(); |
|||
if (StrUtil.equals("0", isConnect)) { |
|||
result.put("status", HttpStatus.BAD_REQUEST.value()); |
|||
result.put("message", "未连接ACS!"); |
|||
result.put("data", new JSONObject()); |
|||
return result; |
|||
} |
|||
//ACS地址:127.0.0.1:8010
|
|||
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue(); |
|||
|
|||
String url = acsUrl + api; |
|||
log.info("下发acs任务的参数为:{}", list.toString()); |
|||
try { |
|||
String resultMsg = HttpRequest.post(url) |
|||
.body(s) |
|||
.execute().body(); |
|||
result = JSONObject.parseObject(resultMsg); |
|||
} catch (Exception e) { |
|||
String msg = e.getMessage(); |
|||
//ConnectException: Connection refused: connect
|
|||
//网络不通
|
|||
log.error("连接失败:{}", msg); |
|||
result.put("status", HttpStatus.BAD_REQUEST); |
|||
result.put("message", "网络不通,操作失败!"); |
|||
result.put("data", new JSONObject()); |
|||
} |
|||
//acs抛异常这里
|
|||
/* if (result.getString("status").equals(String.valueOf(HttpStatus.BAD_REQUEST.value()))) |
|||
throw new BadRequestException(result.getString("message"));*/ |
|||
// 如果下发完毕,就修改状态
|
|||
return result; |
|||
} |
|||
|
|||
/** |
|||
* 新的请求方式:对象中包含数组 |
|||
* @param api |
|||
* @param object |
|||
* @return |
|||
* @param <T> |
|||
*/ |
|||
public static <T> AcsResponse notifyConnector2(String api, T object) { |
|||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); |
|||
//判断是否连接ACS系统
|
|||
Param isConnectConnector = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_CONNECTOR); |
|||
if (ObjectUtil.isEmpty(isConnectConnector)) { |
|||
return AcsResponse.requestRefuse("参数表中:" + GeneralDefinition.IS_CONNECT_CONNECTOR + "不存在"); |
|||
} |
|||
String isConnect = isConnectConnector.getValue(); |
|||
//ACS地址:127.0.0.1:8010
|
|||
Param connectorUrlObj = sysParamService.findByCode(GeneralDefinition.CONNECTOR_URL); |
|||
if (ObjectUtil.isEmpty(connectorUrlObj)) { |
|||
return AcsResponse.requestRefuse("参数表中:" + GeneralDefinition.CONNECTOR_URL + "不存在"); |
|||
} |
|||
String connectorUrl = connectorUrlObj.getValue(); |
|||
JSONObject result; |
|||
if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { |
|||
return AcsResponse.requestRefuse("未连接ACS!"); |
|||
} |
|||
String url = connectorUrl + 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; |
|||
} |
|||
} |
@ -0,0 +1,171 @@ |
|||
package org.nl.wms.sch.task_manage.task.tasks.cnt; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.enums.region.RegionEnum; |
|||
import org.nl.common.exception.BadRequestException; |
|||
import org.nl.system.service.notice.ISysNoticeService; |
|||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse; |
|||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; |
|||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; |
|||
import org.nl.wms.sch.point.service.ISchBasePointService; |
|||
import org.nl.wms.sch.point.service.dao.SchBasePoint; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskService; |
|||
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.SchBaseTaskconfig; |
|||
import org.nl.wms.sch.task_manage.AbstractTask; |
|||
import org.nl.wms.sch.task_manage.GeneralDefinition; |
|||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; |
|||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; |
|||
import org.nl.wms.sch.task_manage.task.core.TaskStatus; |
|||
import org.nl.wms.util.PointUtils; |
|||
import org.nl.wms.util.TaskUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
@Slf4j |
|||
@Component(value = "CNTTask") |
|||
public class CNTTask extends AbstractTask { |
|||
|
|||
|
|||
private static final String TASK_CONFIG_CODE = "CNTTask"; |
|||
@Autowired |
|||
private ISchBasePointService pointService; |
|||
@Autowired |
|||
private ISchBaseTaskService taskService; |
|||
@Autowired |
|||
private ISchBaseTaskconfigService taskConfigService; |
|||
@Autowired |
|||
private ISysNoticeService noticeService; |
|||
@Autowired |
|||
private ISchBasePointService schBasePointService; |
|||
@Autowired |
|||
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService; |
|||
|
|||
@Override |
|||
protected void create() throws BadRequestException { |
|||
// 获取任务
|
|||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); |
|||
// 配置信息
|
|||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>() |
|||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); |
|||
for (SchBaseTask task : tasks) { |
|||
TaskUtils.setUpdateByAcs(task); |
|||
// 找起点
|
|||
String requestParam = task.getRequest_param(); |
|||
JSONObject jsonObject = JSONObject.parseObject(requestParam); |
|||
// 根据对接位查找对应的载具类型
|
|||
SchBasePoint schBasePoint = schBasePointService.selectByRegionCode(RegionEnum.TRUBEND_SHELVES_3_1_1.getRegion_code()); |
|||
if(ObjectUtil.isEmpty(schBasePoint)) continue; |
|||
jsonObject.put("vehicle_type", schBasePoint.getCan_vehicle_type()); |
|||
if (ObjectUtil.isEmpty(schBasePoint)) { |
|||
task.setRemark("未找到所需点位!"); |
|||
taskService.updateById(task); |
|||
// 消息通知
|
|||
noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(), |
|||
NoticeTypeEnum.WARN.getCode()); |
|||
continue; |
|||
} |
|||
|
|||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup(); |
|||
schBaseVehiclematerialgroup.setVehicle_code(task.getVehicle_code()); |
|||
schBaseVehiclematerialgroup.setPoint_code(schBasePoint.getPoint_code()); |
|||
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup); |
|||
|
|||
// 设置终点并修改创建成功状态
|
|||
task.setPoint_code2(schBasePoint.getPoint_code()); |
|||
task.setVehicle_type(schBasePoint.getCan_vehicle_type()); |
|||
task.setRemark(""); |
|||
task.setTask_status(TaskStatus.CREATED.getCode()); |
|||
taskService.updateById(task); |
|||
|
|||
schBasePoint.setIng_task_code(task.getTask_code()); |
|||
PointUtils.setUpdateByAcs(schBasePoint); |
|||
pointService.updateById(schBasePoint); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
protected void updateStatus(String task_code, TaskStatus status) { |
|||
//TODO:完成任务的时候将int_task_code的清除
|
|||
|
|||
} |
|||
|
|||
@Override |
|||
public void forceFinish(String task_code) { |
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (ObjectUtil.isEmpty(taskObj)) { |
|||
throw new BadRequestException("该任务不存在"); |
|||
} |
|||
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR); |
|||
} |
|||
|
|||
@Override |
|||
public void cancel(String task_code) { |
|||
//TODO:取消任务的时候将int_task_code的清除
|
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (ObjectUtil.isEmpty(taskObj)) { |
|||
throw new BadRequestException("该任务不存在"); |
|||
} |
|||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR); |
|||
} |
|||
|
|||
@Override |
|||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) { |
|||
|
|||
} |
|||
|
|||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { |
|||
// 获取参数
|
|||
String startPoint = taskObj.getPoint_code1(); |
|||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint); |
|||
// 起点清空
|
|||
if (ObjectUtil.isNotEmpty(schBasePoint)) { |
|||
PointUtils.updateByIngTaskCode(schBasePoint); |
|||
pointService.updateById(schBasePoint); |
|||
} |
|||
String point_code2 = taskObj.getPoint_code2(); |
|||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2); |
|||
if (ObjectUtil.isNotEmpty(schBasePoint2)) { |
|||
PointUtils.updateByIngTaskCode(schBasePoint2); |
|||
pointService.updateById(schBasePoint2); |
|||
} |
|||
// 任务完成
|
|||
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); |
|||
taskObj.setRemark(GeneralDefinition.TASK_FINISH); |
|||
taskObj.setFinished_type(taskFinishedType.getCode()); |
|||
TaskUtils.setUpdateByType(taskObj, taskFinishedType); |
|||
taskService.updateById(taskObj); |
|||
} |
|||
|
|||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { |
|||
// 获取参数
|
|||
String startPoint = taskObj.getPoint_code1(); |
|||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint); |
|||
// 起点清空
|
|||
if (ObjectUtil.isNotEmpty(schBasePoint)) { |
|||
PointUtils.updateByIngTaskCode(schBasePoint); |
|||
pointService.updateById(schBasePoint); |
|||
} |
|||
String point_code2 = taskObj.getPoint_code2(); |
|||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2); |
|||
if (ObjectUtil.isNotEmpty(schBasePoint2)) { |
|||
PointUtils.updateByIngTaskCode(schBasePoint2); |
|||
pointService.updateById(schBasePoint2); |
|||
} |
|||
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); |
|||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL); |
|||
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); |
|||
taskObj.setFinished_type(taskFinishedType.getCode()); |
|||
TaskUtils.setUpdateByType(taskObj, taskFinishedType); |
|||
taskService.updateById(taskObj); |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue