opt: 与ACS通信与数据返回处理
This commit is contained in:
@@ -1,9 +1,22 @@
|
||||
package org.nl.wms.ext.acs.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: Wms请求Acs
|
||||
* @Date: 2023/6/30
|
||||
*/
|
||||
public interface WmsToAcsService {
|
||||
|
||||
/**
|
||||
* 下发工单
|
||||
* @param workorder
|
||||
* @return
|
||||
*/
|
||||
ResultForAcs order(PdmBdWorkorder workorder);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.nl.wms.ext.acs.service.dto;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 统一接口返回 - 请求ACS返回的数据类型
|
||||
* @Date: 2023/7/28
|
||||
*/
|
||||
@Data
|
||||
public class ResultForAcs {
|
||||
private int status;
|
||||
private String message;
|
||||
private String timestamp;
|
||||
private JSONObject data;
|
||||
|
||||
public static ResultForAcs requestRefuse(String message) {
|
||||
ResultForAcs result = new ResultForAcs();
|
||||
result.setStatus(HttpStatus.HTTP_BAD_REQUEST);
|
||||
result.setMessage(message);
|
||||
result.setTimestamp(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ResultForAcs requestOk() {
|
||||
ResultForAcs result = new ResultForAcs();
|
||||
result.setStatus(HttpStatus.HTTP_OK);
|
||||
result.setMessage("请求成功");
|
||||
result.setTimestamp(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ResultForAcs requestOk(String message, JSONObject data) {
|
||||
ResultForAcs result = new ResultForAcs();
|
||||
result.setStatus(HttpStatus.HTTP_OK);
|
||||
result.setMessage(message);
|
||||
result.setTimestamp(DateUtil.now());
|
||||
result.setData(data);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ public class PutActionRequest extends BaseRequest {
|
||||
* 设备号
|
||||
*/
|
||||
private String device_code;
|
||||
private String vehicle_type;
|
||||
|
||||
/**
|
||||
* 信号数据
|
||||
|
||||
@@ -554,7 +554,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
try {
|
||||
abstractTask.updateTaskStatus(taskCode, status);
|
||||
} catch (Exception e) {
|
||||
log.error("任务状态更新失败:{}", message);
|
||||
log.error("任务状态更新失败: {}", message);
|
||||
return BaseResponse.responseError(requestNo, "任务:[" + taskCode + "]状态更新失败," + message);
|
||||
}
|
||||
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
|
||||
@@ -587,7 +587,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String requestNo = actionRequest.getRequestNo();
|
||||
String deviceCode = actionRequest.getDevice_code();
|
||||
List<SignalData> list = actionRequest.getList();
|
||||
// String vehicleType = actionRequest.getVehicle_type();
|
||||
String vehicleType = actionRequest.getVehicle_type();
|
||||
if (deviceCode == null) {
|
||||
return BaseResponse.responseError(requestNo, "设备编码不能为空");
|
||||
}
|
||||
@@ -610,9 +610,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
&& move.equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) || (pointStatus.equals(move))) { // 不做操作
|
||||
return BaseResponse.responseOk(requestNo);
|
||||
}
|
||||
// if (vehicleType != null) {
|
||||
// schBasePoint.setVehicle_type(vehicleType);
|
||||
// }
|
||||
if (vehicleType != null) {
|
||||
schBasePoint.setVehicle_type(vehicleType);
|
||||
}
|
||||
schBasePoint.setPoint_status(move);
|
||||
PointUtils.setUpdateByAcs(schBasePoint);
|
||||
pointService.updateById(schBasePoint);
|
||||
|
||||
@@ -1,15 +1,46 @@
|
||||
package org.nl.wms.ext.acs.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.ext.record.service.ISysInteractRecordService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.AcsUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Description: WMS请求ACS - 业务开发
|
||||
* @Date: 2023/6/30
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
@Autowired
|
||||
private ISysInteractRecordService interactRecordService;
|
||||
@Override
|
||||
public ResultForAcs order(PdmBdWorkorder workorder) {
|
||||
String api = "api/wms/order";
|
||||
List<PdmBdWorkorder> list = new ArrayList<>();
|
||||
list.add(workorder);
|
||||
ResultForAcs resultForAcs = ResultForAcs.requestOk();
|
||||
try {
|
||||
resultForAcs = AcsUtil.notifyAcs(api, list);
|
||||
} catch (Exception e) {
|
||||
log.error(api + ": {}", e.getMessage());
|
||||
resultForAcs.setTimestamp(DateUtil.now());
|
||||
resultForAcs.setStatus(HttpStatus.HTTP_BAD_REQUEST);
|
||||
resultForAcs.setMessage(e.getMessage());
|
||||
}
|
||||
// 记录日志
|
||||
interactRecordService.saveRecord(workorder, resultForAcs, GeneralDefinition.LMS_ACS);
|
||||
return resultForAcs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,10 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.record.service.dao.SysInteractRecord;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -47,4 +49,6 @@ public interface ISysInteractRecordService extends IService<SysInteractRecord> {
|
||||
* 创建记录
|
||||
*/
|
||||
void saveRecord(Object request, BaseResponse response, String direction);
|
||||
|
||||
void saveRecord(PdmBdWorkorder workorder, ResultForAcs resultForAcs, String lmsAcs);
|
||||
}
|
||||
|
||||
@@ -11,10 +11,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.ext.record.service.ISysInteractRecordService;
|
||||
import org.nl.wms.ext.record.service.dao.mapper.SysInteractRecordMapper;
|
||||
import org.nl.wms.ext.record.service.dao.SysInteractRecord;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -77,4 +79,19 @@ public class SysInteractRecordServiceImpl extends ServiceImpl<SysInteractRecordM
|
||||
sysInteractRecordMapper.insert(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveRecord(PdmBdWorkorder workorder, ResultForAcs resultForAcs, String lmsAcs) {
|
||||
SysInteractRecord entity = new SysInteractRecord();
|
||||
entity.setInteract_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setInteract_code(workorder.getWorkorder_code());
|
||||
entity.setCode(resultForAcs.getStatus());
|
||||
entity.setMessage(resultForAcs.getMessage());
|
||||
entity.setRecord_time(DateUtil.now());
|
||||
entity.setDirection(lmsAcs);
|
||||
entity.setRequest_param(JSONObject.toJSONString(workorder));
|
||||
entity.setResponse_param(JSONObject.toJSONString(resultForAcs));
|
||||
entity.setIs_success(resultForAcs.getStatus() == HttpStatus.HTTP_OK);
|
||||
sysInteractRecordMapper.insert(entity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.pdm.workorder.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -63,4 +64,12 @@ public class PdmBdWorkorderController {
|
||||
pdmBdWorkorderService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/submits")
|
||||
@Log("工单下发")
|
||||
@ApiOperation("工单下发")
|
||||
public ResponseEntity<Object> submits(@RequestBody PdmBdWorkorder entity){
|
||||
pdmBdWorkorderService.submits(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,4 +49,10 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
|
||||
PdmBdWorkorder getDeviceProductionTask(String deviceCode);
|
||||
|
||||
PdmBdWorkorder getByCode(String orderCode);
|
||||
|
||||
/**
|
||||
* 工单下发
|
||||
* @param entity
|
||||
*/
|
||||
void submits(PdmBdWorkorder entity);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package org.nl.wms.pdm.workorder.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -12,15 +14,21 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.pdm.workorder.service.dao.mapper.PdmBdWorkorderMapper;
|
||||
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
||||
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.WorkOrderStatusEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@@ -35,6 +43,11 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
@Autowired
|
||||
private PdmBdWorkorderMapper pdmBdWorkorderMapper;
|
||||
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
private ISysNoticeService noticeService;
|
||||
|
||||
@Override
|
||||
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page){
|
||||
IPage<PdmBdWorkorder> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
@@ -96,4 +109,48 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
return pdmBdWorkorderMapper.selectOne(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submits(PdmBdWorkorder entity) {
|
||||
PdmBdWorkorder pdmBdWorkorder = pdmBdWorkorderMapper.selectById(entity.getWorkorder_id());
|
||||
if (ObjectUtil.isEmpty(pdmBdWorkorder)) {
|
||||
throw new BadRequestException("工单编码[" + entity.getWorkorder_code() + "]不存在");
|
||||
}
|
||||
// 检验是否已经开工
|
||||
if (pdmBdWorkorder.getWorkorder_status().equals(WorkOrderStatusEnum.PRODUCING.getCode())) {
|
||||
throw new BadRequestException("工单已生产");
|
||||
}
|
||||
if (pdmBdWorkorder.getWorkorder_status().equals(WorkOrderStatusEnum.COMPLETE.getCode())) {
|
||||
throw new BadRequestException("工单已完工");
|
||||
}
|
||||
// 查找是否有当前设备已经开工的工单
|
||||
LambdaQueryWrapper<PdmBdWorkorder> lam = new QueryWrapper<PdmBdWorkorder>().lambda();
|
||||
lam.eq(PdmBdWorkorder::getPoint_code, entity.getPoint_code())
|
||||
.eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode())
|
||||
.eq(PdmBdWorkorder::getIs_delete, false);
|
||||
PdmBdWorkorder bdWorkorder = pdmBdWorkorderMapper.selectOne(lam);
|
||||
if (ObjectUtil.isNotEmpty(bdWorkorder)) {
|
||||
throw new BadRequestException("该设备已有生产工单,不能重复下发");
|
||||
}
|
||||
ResultForAcs resultForAcs = null;
|
||||
try {
|
||||
resultForAcs = wmsToAcsService.order(pdmBdWorkorder);
|
||||
} catch (Exception e) {
|
||||
log.error("工单下发异常:" + e.getMessage());
|
||||
// 通知
|
||||
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
|
||||
+ pdmBdWorkorder.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||
throw new BadRequestException("工单下发失败");
|
||||
}
|
||||
if (resultForAcs.getStatus() != HttpStatus.HTTP_OK) {
|
||||
// 不成功
|
||||
noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + pdmBdWorkorder.getWorkorder_code(),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
throw new BadRequestException("工单下发失败");
|
||||
}
|
||||
// 修改工单数据
|
||||
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
|
||||
pdmBdWorkorderMapper.updateById(pdmBdWorkorder);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -57,7 +58,7 @@ public abstract class AbstractTask {
|
||||
* @author ldjun
|
||||
* @created 2020年6月12日 下午5:52:28
|
||||
*/
|
||||
protected JSONObject renotifyAcs(SchBaseTask task) {
|
||||
protected ResultForAcs renotifyAcs(SchBaseTask task) {
|
||||
Assert.notNull(task);
|
||||
List<SchBaseTask> taskList = new ArrayList<>();
|
||||
taskList.add(task);
|
||||
@@ -70,7 +71,7 @@ public abstract class AbstractTask {
|
||||
* @author ldjun
|
||||
* @created 2020年6月12日 下午5:52:28
|
||||
*/
|
||||
protected JSONObject renotifyAcs(List<SchBaseTask> taskList) {
|
||||
protected ResultForAcs renotifyAcs(List<SchBaseTask> taskList) {
|
||||
//1、获取任务
|
||||
//2、根据任务配置补全任务
|
||||
//3、下发
|
||||
|
||||
@@ -62,4 +62,9 @@ public class GeneralDefinition {
|
||||
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";
|
||||
}
|
||||
|
||||
@@ -1,105 +1,67 @@
|
||||
|
||||
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.JSONArray;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
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.record.service.ISysInteractRecordService;
|
||||
import org.nl.wms.ext.record.service.impl.SysInteractRecordServiceImpl;
|
||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ACS连接工具类:
|
||||
* ACS连接工具类: 不允许直接操作结果,将其封装到ResultForAcs,由实现类操作
|
||||
*/
|
||||
@Slf4j
|
||||
public class AcsUtil {
|
||||
/**
|
||||
* 统一多数据入口
|
||||
* 统一多数据入口: 默认执行的参数都是jsonArray
|
||||
* @param api
|
||||
* @param list
|
||||
* @return
|
||||
* @param <T>
|
||||
*/
|
||||
public static <T> JSONObject notifyAcs(String api, List<T> list) {
|
||||
public static <T> ResultForAcs notifyAcs(String api, List<T> list) {
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
// list转JSONArray
|
||||
String s = JSON.toJSONString(list);
|
||||
//判断是否连接ACS系统
|
||||
Param isConnectAcs = sysParamService.findByCode("IS_CONNECT_ACS");
|
||||
Param isConnectAcs = sysParamService.findByCode(GeneralDefinition.IS_CONNECT_ACS);
|
||||
if (ObjectUtil.isEmpty(isConnectAcs)) {
|
||||
throw new BadRequestException("参数表中:IS_CONNECT_ACS不存在");
|
||||
throw new BadRequestException("参数表中:" + GeneralDefinition.IS_CONNECT_ACS + "不存在");
|
||||
}
|
||||
String isConnect = isConnectAcs.getValue();
|
||||
JSONObject result = new JSONObject();
|
||||
if (StrUtil.equals(GeneralDefinition.NO, 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
|
||||
Param acsUrlObj = sysParamService.findByCode("ACS_URL");
|
||||
Param acsUrlObj = sysParamService.findByCode(GeneralDefinition.ACS_URL);
|
||||
if (ObjectUtil.isEmpty(acsUrlObj)) {
|
||||
throw new BadRequestException("参数表中:ACS_URL不存在");
|
||||
throw new BadRequestException("参数表中:" + GeneralDefinition.ACS_URL + "不存在");
|
||||
}
|
||||
String acsUrl = acsUrlObj.getValue();
|
||||
JSONObject result;
|
||||
if (StrUtil.equals(GeneralDefinition.NO, isConnect)) {
|
||||
return ResultForAcs.requestRefuse("未连接ACS!");
|
||||
}
|
||||
String url = acsUrl + api;
|
||||
log.info("下发acs任务的参数为:{}", list.toString());
|
||||
ResultForAcs resultForAcs;
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(list))
|
||||
.body(s)
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
resultForAcs = JSONObject.toJavaObject(result, ResultForAcs.class);
|
||||
} 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());
|
||||
return ResultForAcs.requestRefuse("网络不通,操作失败!");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public static <T> JSONObject notifyAcs(String api, T object) {
|
||||
//判断是否连接ACS系统
|
||||
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
|
||||
JSONObject result = new JSONObject();
|
||||
if (StrUtil.equals(GeneralDefinition.NO, 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任务的参数为:{}", object.toString());
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(object))
|
||||
.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());
|
||||
}
|
||||
// 记录交互表
|
||||
return result;
|
||||
return resultForAcs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,6 +73,7 @@ public class FJMKTask extends AbstractTask {
|
||||
String requestParam = task.getRequest_param();// 任务的其他数据
|
||||
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||
// 找终点
|
||||
/** 包装位 */
|
||||
SchBasePoint packagePoint = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(packagePoint)) {
|
||||
task.setRemark("包装线不可用!");
|
||||
@@ -87,6 +88,7 @@ public class FJMKTask extends AbstractTask {
|
||||
// 1 获取点位相应数量
|
||||
// 2 获取库存数量
|
||||
// 3 木托盘需要多少块
|
||||
/** 覆膜机木托盘位 */
|
||||
SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(LaminatePoint)) {
|
||||
task.setRemark("覆膜区不可用!");
|
||||
@@ -101,7 +103,7 @@ public class FJMKTask extends AbstractTask {
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code3(LaminatePoint.getParent_point_code());
|
||||
task.setPoint_code4(task.getPoint_code1());
|
||||
task.setVehicle_code2(vehicleCode);
|
||||
task.setVehicle_code2(vehicleCode); // 覆膜机下的木托盘编码
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.updateById(task);
|
||||
@@ -109,6 +111,7 @@ public class FJMKTask extends AbstractTask {
|
||||
packagePoint.setIng_task_code(task.getTask_code());
|
||||
PointUtils.setUpdateByAcs(packagePoint);
|
||||
pointService.updateById(packagePoint);
|
||||
// 覆膜机对接位
|
||||
SchBasePoint basePoint = pointService.getById(LaminatePoint.getParent_point_code());
|
||||
basePoint.setIng_task_code(task.getTask_code());
|
||||
basePoint.setVehicle_code(vehicleCode);
|
||||
@@ -283,15 +286,23 @@ public class FJMKTask extends AbstractTask {
|
||||
SchBasePoint fjcPointObj = pointService.getById(fjcPoint);
|
||||
if (ObjectUtil.isNotEmpty(bzxPointObj)) {
|
||||
// 包装位: 解锁
|
||||
PointUtils.setUpdateByType(bzxPointObj, taskFinishedType);
|
||||
PointUtils.clearPoint(bzxPointObj);
|
||||
// 覆膜位: 解锁 . 清空
|
||||
PointUtils.setUpdateByType(fmPointObj, taskFinishedType);
|
||||
PointUtils.clearPoint(fmPointObj);
|
||||
// 机械手对接位: 赋值
|
||||
fjcPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
|
||||
fjcPointObj.setVehicle_qty(1);
|
||||
fjcPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
// 分拣机械手: 清空
|
||||
PointUtils.setUpdateByType(fjcPointObj, taskFinishedType);
|
||||
pointService.updateById(fjcPointObj);
|
||||
PointUtils.clearPoint(fjcPointObj);
|
||||
if (ObjectUtil.isNotEmpty(fmPointObj)) {
|
||||
// 机械手对接位: 赋值
|
||||
fjcPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
|
||||
fjcPointObj.setVehicle_qty(1);
|
||||
fjcPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
fjcPointObj.setVehicle_code(taskObj.getVehicle_code2()); // 拿过来的载具编码
|
||||
PointUtils.setUpdateByType(fjcPointObj, taskFinishedType);
|
||||
pointService.updateById(fjcPointObj);
|
||||
}
|
||||
// 组盘设置已经解绑
|
||||
SchBaseVehiclematerialgroup vehicleMaterialGroupObj =
|
||||
vehiclematerialgroupService.getById(taskObj.getGroup_id());
|
||||
|
||||
@@ -86,6 +86,7 @@ public class FJQKTask extends AbstractTask {
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
// 生产木托盘编码
|
||||
String vehicleCode = CodeUtil.getNewCode("VEHICLE_CODE");
|
||||
// todo: 未确认是否放在1还是2,目前规定四点任务空盘的载具编码是2
|
||||
task.setVehicle_code(vehicleCode);
|
||||
task.setRemark("");
|
||||
task.setGroup_id(point.getGroup_id());
|
||||
|
||||
@@ -21,6 +21,7 @@ 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.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
@@ -191,6 +192,12 @@ public class FJQLTask extends AbstractTask {
|
||||
processTracking.setProcess_location(endPoint);
|
||||
processTracking.setRecord_time(DateUtil.now());
|
||||
processTrackingService.create(processTracking);
|
||||
// 终点设置对应的参数
|
||||
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_type(startPointObj.getVehicle_type());
|
||||
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
|
||||
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
|
||||
pointService.updateById(endPointObj);
|
||||
}
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.util;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
@@ -39,6 +40,9 @@ public class PointUtils {
|
||||
* @param point
|
||||
*/
|
||||
public static void clearPoint(SchBasePoint point) {
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
return; // 空直接退出
|
||||
}
|
||||
SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||
point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
point.setVehicle_type("");
|
||||
|
||||
@@ -208,4 +208,28 @@ public class PointCreate {
|
||||
}
|
||||
pointService.saveBatch(pointList);
|
||||
}
|
||||
@Test
|
||||
void test07() { // 码垛机械手
|
||||
// 创建YJ01JLW01
|
||||
List<SchBasePoint> pointList = new ArrayList<>();
|
||||
for (int i = 1; i <= 8; i++) {
|
||||
String pointName = "压制不合格位0";
|
||||
String pointCode = "YZBHGW0";
|
||||
String papointCode = "YJ0";
|
||||
pointName = pointName + i;
|
||||
pointCode = pointCode + i;
|
||||
papointCode = papointCode + i;
|
||||
SchBasePoint point = new SchBasePoint();
|
||||
point.setPoint_code(pointCode);
|
||||
point.setPoint_name(pointName);
|
||||
point.setRegion_code("YZ");
|
||||
point.setRegion_name("压制区域");
|
||||
point.setPoint_type("3");
|
||||
point.setParent_point_code(papointCode);
|
||||
point.setIs_has_workder(false);
|
||||
point.setIs_auto(false);
|
||||
pointList.add(point);
|
||||
}
|
||||
pointService.saveBatch(pointList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,19 @@
|
||||
</el-form>
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission" />
|
||||
<crudOperation :permission="permission" >
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="success"
|
||||
icon="el-icon-position"
|
||||
size="mini"
|
||||
:disabled="!(crud.selections[0]) || crud.selections[1]"
|
||||
@click="submits(crud.selections[0])"
|
||||
>
|
||||
开工
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<!--表单组件-->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
@@ -510,7 +522,14 @@ export default {
|
||||
this.crud.query.more_order_status = value.toString()
|
||||
}
|
||||
this.crud.toQuery()
|
||||
}
|
||||
},
|
||||
// 下发
|
||||
submits(row) {
|
||||
crudPdmBdWorkorder.submits(row).then(res => {
|
||||
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -24,4 +24,12 @@ export function edit(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
export function submits(param) {
|
||||
return request({
|
||||
url: 'api/pdmBdWorkorder/submits',
|
||||
method: 'post',
|
||||
data: param
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, submits }
|
||||
|
||||
Reference in New Issue
Block a user