res:修改
This commit is contained in:
@@ -54,4 +54,19 @@ public interface WmsToNotCarService {
|
||||
* @return NoCarResponse
|
||||
*/
|
||||
NoCarResponse callNotCat(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 装货任务完成反馈
|
||||
*
|
||||
* @param param {
|
||||
* "requestType": "WCS_110",
|
||||
* "accessId": "1",
|
||||
* "requestId": "唯一标识",
|
||||
* "data": {
|
||||
* "taskNo":"呼叫时的任务号"
|
||||
* }
|
||||
* }
|
||||
* @return NoCarResponse
|
||||
*/
|
||||
NoCarResponse continueTask(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,10 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.NotCarToWmsService;
|
||||
import org.nl.wms.ext.util.NoCarResponse;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
@@ -50,6 +54,12 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService {
|
||||
@Resource
|
||||
private NoCarUnloadTask noCarUnloadTask;
|
||||
|
||||
/**
|
||||
* 系统参数服务
|
||||
*/
|
||||
@Resource
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public NoCarResponse sendTask(JSONObject whereJson) {
|
||||
@@ -121,6 +131,17 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService {
|
||||
if (tryLock) {
|
||||
JSONObject data = whereJson.getJSONObject("data");
|
||||
String statusType = data.getString("statusType");
|
||||
if (statusType.equals(IOSConstant.ZERO)) {
|
||||
// 判断任务号是否一致
|
||||
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
|
||||
String taskNo = data.getString("taskNo");
|
||||
if (!taskNo.equals(sysParamService.getValue())) {
|
||||
return NoCarResponse.requestError("任务号与呼叫时不一致!");
|
||||
}
|
||||
// 更新值为1
|
||||
sysParamService.setRemark(IOSConstant.ONE);
|
||||
iSysParamService.updateById(sysParamService);
|
||||
}
|
||||
// 前往点位
|
||||
} else {
|
||||
log.info("无人车到达输出参数:{}", NoCarResponse.requestError("当前任务正在执行中,请稍后在试...").toString());
|
||||
@@ -131,7 +152,7 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
// log.info("无人车到达输出参数:{}", NoCarResponse.responseOk().toString());
|
||||
log.info("无人车到达输出参数:{}", NoCarResponse.responseOk().toString());
|
||||
return NoCarResponse.responseOk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,4 +106,45 @@ public class WmsToNotCarServiceImpl implements WmsToNotCarService {
|
||||
}
|
||||
return resultCar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NoCarResponse continueTask(JSONObject param) {
|
||||
log.info("下发无人车接口continueTask的输入参数为:-------------------" + param.toString());
|
||||
// 返回参数
|
||||
NoCarResponse resultCar;
|
||||
|
||||
// 系统参数类
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
//判断是否连接无人车系统
|
||||
Param isConnectCar = sysParamService.findByCode(SysParamConstant.IS_NOT_CAR);
|
||||
if (ObjectUtil.isEmpty(isConnectCar)) {
|
||||
return NoCarResponse.requestError("系统参数表中:" + SysParamConstant.IS_NOT_CAR + "不存在");
|
||||
}
|
||||
if (isConnectCar.getValue().equals(IOSConstant.ONE)) {
|
||||
return NoCarResponse.responseOk("下发成功,未连接无人车系统!");
|
||||
}
|
||||
|
||||
//无人车系统地址ip
|
||||
Param acsUrlParam = sysParamService.findByCode(SysParamConstant.CAR_URL);
|
||||
if (ObjectUtil.isEmpty(acsUrlParam)) {
|
||||
return NoCarResponse.requestError("系统参数表中:" + SysParamConstant.CAR_URL + "不存在");
|
||||
}
|
||||
|
||||
String url = acsUrlParam.getValue() + "openapi/task/continueTask";
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(param))
|
||||
.execute().body();
|
||||
// 格式转换
|
||||
JSONObject result = JSONObject.parseObject(resultMsg);
|
||||
resultCar = JSONObject.toJavaObject(result, NoCarResponse.class);
|
||||
log.info("下发无人车接口continueTask的输出参数为:-------------------" + resultMsg);
|
||||
} catch (Exception e) {
|
||||
//网络不通
|
||||
String msg = e.getMessage();
|
||||
log.error("连接失败:{}", msg);
|
||||
return NoCarResponse.requestError("网络不通,操作失败!");
|
||||
}
|
||||
return resultCar;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,4 +74,40 @@ public class PdaNotCarController {
|
||||
return new ResponseEntity<>(notCarService.back(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryZhRegion")
|
||||
@Log("无人车装货 - 查询装货区下拉框")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryZhRegion() {
|
||||
return new ResponseEntity<>(notCarService.queryZhRegion(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryZhPoint")
|
||||
@Log("无人车装货 - 查询装货区下的点位")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryZhPoint(JSONObject whereJson) {
|
||||
return new ResponseEntity<>(notCarService.queryZhPoint(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/callCar")
|
||||
@Log("无人车装货 - 呼叫无人车")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> callCar(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(notCarService.callCar(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/install")
|
||||
@Log("无人车装货 - 装货")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> install(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(notCarService.install(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/installConfirm")
|
||||
@Log("无人车装货 - 装货完成")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> installConfirm() {
|
||||
return new ResponseEntity<>(notCarService.installConfirm(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -67,4 +67,45 @@ public interface PdaNotCarService {
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse back(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 无人车装货 - 查询装货区下拉框
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse queryZhRegion();
|
||||
|
||||
/**
|
||||
* 无人车装货 - 查询装货区下的点位
|
||||
* @param whereJson {
|
||||
* region_code: 区域编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse queryZhPoint(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 无人车装货 - 呼叫无人车
|
||||
* @param whereJson {
|
||||
* region_code: 区域编码
|
||||
* rows: [明细]
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse callCar(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 无人车装货 - 装货
|
||||
* @param whereJson {
|
||||
* region_code: 区域编码
|
||||
* rows: [明细]
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse install(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 无人车装货 - 装货完成
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse installConfirm();
|
||||
}
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
package org.nl.wms.pda.general_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.enums.SysParamConstant;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.WmsToNotCarService;
|
||||
import org.nl.wms.pda.general_management.service.PdaNotCarService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
@@ -10,6 +17,7 @@ import org.nl.wms.sch_manage.service.ISchBaseRegionService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseRegion;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.NoCarInstallTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.PdaNotCarUnloadTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
@@ -17,6 +25,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -54,6 +63,18 @@ public class PdaNotCarServiceImpl implements PdaNotCarService {
|
||||
@Resource
|
||||
private WmsToNotCarService wmsToNotCarService;
|
||||
|
||||
/**
|
||||
* 系统参数服务
|
||||
*/
|
||||
@Resource
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
/**
|
||||
* 无人车装货任务服务
|
||||
*/
|
||||
@Resource
|
||||
private NoCarInstallTask noCarInstallTask;
|
||||
|
||||
@Override
|
||||
public PdaResponse queryXhRegion() {
|
||||
List<SchBaseRegion> list = iSchBaseRegionService.list(
|
||||
@@ -110,6 +131,97 @@ public class PdaNotCarServiceImpl implements PdaNotCarService {
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse queryZhRegion() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse queryZhPoint(JSONObject whereJson) {
|
||||
// 查询此区域下的空位
|
||||
List<SchBasePoint> pointList = schBasePointMapper.selectList(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))
|
||||
.eq(SchBasePoint::getIs_used, IOSConstant.ONE)
|
||||
.eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||
);
|
||||
return PdaResponse.requestParamOk(pointList);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse callCar(JSONObject whereJson) {
|
||||
// 根据区域找对应的无人车对接点
|
||||
String taskNo = IdUtil.getStringId();
|
||||
// 将任务号存在系统中
|
||||
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
|
||||
sysParamService.setValue(taskNo);
|
||||
iSysParamService.updateById(sysParamService);
|
||||
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("requestType", "WCS_101");
|
||||
param.put("accessId", IOSConstant.ONE);
|
||||
param.put("requestId", IdUtil.getStringId());
|
||||
|
||||
JSONObject data = new JSONObject();
|
||||
List<JSONObject> detail = new ArrayList<>();
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("taskNo", taskNo);
|
||||
json.put("taskType", "MV");
|
||||
json.put("taskDate", DateUtil.now());
|
||||
json.put("taskState", "00");
|
||||
json.put("priority", IOSConstant.ONE);
|
||||
json.put("wareCode", "W02");
|
||||
// 目标点位
|
||||
json.put("toLoc", "");
|
||||
// 地图
|
||||
json.put("udf02", "");
|
||||
|
||||
detail.add(json);
|
||||
data.put("detail", detail);
|
||||
param.put("data", data);
|
||||
// 呼叫无人车
|
||||
wmsToNotCarService.callNotCat(param);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse install(JSONObject whereJson) {
|
||||
// 判断无人车是否到位
|
||||
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
|
||||
if (!sysParamService.getRemark().equals(IOSConstant.ONE)) {
|
||||
throw new BadRequestException("无人车未到位!");
|
||||
}
|
||||
// 查询无人车上的点位
|
||||
// 创建装货任务
|
||||
List<JSONObject> rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class);
|
||||
if (rows.size() > 2) {
|
||||
throw new BadRequestException("选择物料不能大于2条!");
|
||||
}
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject json = rows.get(i);
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("point_code1", json.getString("point_code"));
|
||||
task.put("point_code2", "");
|
||||
task.put("contact_task", sysParamService.getValue());
|
||||
noCarInstallTask.create(task);
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse installConfirm() {
|
||||
// 判断无人车是否到位
|
||||
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
|
||||
sysParamService.setRemark(IOSConstant.ZERO);
|
||||
iSysParamService.updateById(sysParamService);
|
||||
|
||||
// 调用无人装货任务类
|
||||
noCarInstallTask.backParam(sysParamService.getValue());
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据数量找到对应可用点位
|
||||
*
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IStIvtMoveinvService;
|
||||
import org.nl.wms.warehouse_management.service.IStIvtMoveinvdtlService;
|
||||
import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 无人车卸货回库带成品任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2026-02-06
|
||||
*/
|
||||
@Component(value = "NoCarBackCpTask")
|
||||
@TaskType("NoCarBackCpTask")
|
||||
public class NoCarBackCpTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 无人车卸货任务类
|
||||
*/
|
||||
@Resource
|
||||
private NoCarUnloadTask noCarUnloadTask;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(NoCarBackCpTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setContact_task(json.getString("contact_task"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||
|
||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||
acsTaskDto.setAgv_system_type(IOSConstant.TWO);
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getVehicle_code, "")
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
|
||||
// 判断任务是否全部完成
|
||||
List<SchBaseTask> list = taskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getContact_task, taskObj.getContact_task())
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
// 通知卸货完成回库
|
||||
noCarUnloadTask.resultNoCar(taskObj.getContact_task());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新任务状态
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.service.WmsToNotCarService;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 无人车装货任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2026-02-06
|
||||
*/
|
||||
@Component(value = "NoCarInstallTask")
|
||||
@TaskType("NoCarInstallTask")
|
||||
public class NoCarInstallTask extends AbstractTask {
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 系统参数服务
|
||||
*/
|
||||
@Resource
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
/**
|
||||
* wms调用无人车服务
|
||||
*/
|
||||
@Resource
|
||||
private WmsToNotCarService wmsToNotCarService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(NoCarInstallTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setContact_task(json.getString("contact_task"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode());
|
||||
|
||||
acsTaskDto.setPriority(IOSConstant.ONE);
|
||||
acsTaskDto.setAgv_system_type(IOSConstant.TWO);
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskConfirm(String task_code) {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getVehicle_code, "")
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
|
||||
// 判断任务是否全部完成
|
||||
List<SchBaseTask> list = taskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getContact_task, taskObj.getContact_task())
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
// 更新系统参数为0
|
||||
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
|
||||
sysParamService.setRemark(IOSConstant.ZERO);
|
||||
iSysParamService.updateById(sysParamService);
|
||||
// 通知装货完成回库
|
||||
this.backParam(taskObj.getContact_task());
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 更新任务状态
|
||||
taskObj.setRemark("已取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 装货完成
|
||||
*/
|
||||
public void backParam(String taskNo) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("requestType", "WCS_110");
|
||||
param.put("accessId", IOSConstant.ONE);
|
||||
param.put("requestId", IdUtil.getStringId());
|
||||
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("taskNo", taskNo);
|
||||
param.put("data", data);
|
||||
// 调用服务
|
||||
wmsToNotCarService.continueTask(param);
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,13 @@ package org.nl.wms.sch_manage.service.util.tasks;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.ext.service.WmsToNotCarService;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -24,6 +26,7 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -49,6 +52,18 @@ public class NoCarUnloadTask extends AbstractTask {
|
||||
@Resource
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* wms调用无人车服务
|
||||
*/
|
||||
@Resource
|
||||
private WmsToNotCarService wmsToNotCarService;
|
||||
|
||||
/**
|
||||
* 无人车卸货回库带成品任务类
|
||||
*/
|
||||
@Resource
|
||||
private NoCarBackCpTask noCarBackCpTask;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -117,7 +132,6 @@ public class NoCarUnloadTask extends AbstractTask {
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
// 更新明细状态
|
||||
this.executing(taskObj);
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
@@ -179,6 +193,38 @@ public class NoCarUnloadTask extends AbstractTask {
|
||||
taskObj.setRemark("已完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskService.updateById(taskObj);
|
||||
|
||||
// 判断卸货任务是否全部完成
|
||||
List<SchBaseTask> list = taskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getContact_task, taskObj.getContact_task())
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
// 判断成品区是否有货,有就生成任务
|
||||
List<SchBasePoint> pointList = iSchBasePointService.list(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getRegion_code, "CPQ01")
|
||||
.eq(SchBasePoint::getIs_used, IOSConstant.ONE)
|
||||
.eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||
.last("LIMIT 2")
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(pointList)) {
|
||||
// 创建装货任务
|
||||
for (SchBasePoint dao : pointList) {
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("point_code1", dao.getPoint_code());
|
||||
taskParam.put("point_code2", "成品对接点");
|
||||
taskParam.put("contact_task", taskObj.getContact_task());
|
||||
noCarBackCpTask.create(taskParam);
|
||||
}
|
||||
} else {
|
||||
// 调用无人车卸货完成
|
||||
this.resultNoCar(taskObj.getContact_task());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@@ -202,18 +248,21 @@ public class NoCarUnloadTask extends AbstractTask {
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
private void executing(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
);
|
||||
/**
|
||||
* 卸货任务完成反馈
|
||||
*
|
||||
* @param id 无人车下发任务标识
|
||||
*/
|
||||
public void resultNoCar(String id) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("requestType", "WCS_118");
|
||||
param.put("accessId", IOSConstant.ONE);
|
||||
param.put("requestId", IdUtil.getStringId());
|
||||
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("id", id);
|
||||
data.put("to_command", IOSConstant.TWO);
|
||||
param.put("data", data);
|
||||
wmsToNotCarService.resultUnloadTask(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,17 +3,6 @@
|
||||
<div class="head-container">
|
||||
<Search />
|
||||
<crudOperation>
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:loading="crud.delAllLoading"
|
||||
@click="confirmDelAll()"
|
||||
>
|
||||
{{ $t('ErrorLog.table.clear') }}
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
|
||||
@@ -3,17 +3,6 @@
|
||||
<div class="head-container">
|
||||
<Search />
|
||||
<crudOperation>
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="danger"
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:loading="crud.delAllLoading"
|
||||
@click="confirmDelAll()"
|
||||
>
|
||||
{{ $t('ErrorLog.table.clear') }}
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
|
||||
Reference in New Issue
Block a user