res:修改

This commit is contained in:
2026-02-06 20:45:50 +08:00
parent 9555bdcbb4
commit ff21fad450
11 changed files with 739 additions and 37 deletions

View File

@@ -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);
}

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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();
}

View File

@@ -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();
}
/**
* 根据数量找到对应可用点位
*

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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>
<!--表格渲染-->

View File

@@ -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>
<!--表格渲染-->