feat: 装箱区点位清除与空架设置
This commit is contained in:
@@ -20,6 +20,7 @@ public enum TagNameEnum {
|
|||||||
CUT_UP("手持分切上料"),
|
CUT_UP("手持分切上料"),
|
||||||
CUT_UP_CONFIRM("手持分切确认上料"),
|
CUT_UP_CONFIRM("手持分切确认上料"),
|
||||||
CUT_EMPTY_BACK("手持空轴送回"),
|
CUT_EMPTY_BACK("手持空轴送回"),
|
||||||
|
SUB_ROLL_DOWN("手持子卷下线"),
|
||||||
GX_IN("手持管芯入库"),
|
GX_IN("手持管芯入库"),
|
||||||
GX_OUT("手持管芯出库"),
|
GX_OUT("手持管芯出库"),
|
||||||
SWITCH_STATUS_OF_LIFT("货梯切换状态"),
|
SWITCH_STATUS_OF_LIFT("货梯切换状态"),
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package org.nl.wms.pda.st.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.common.logging.annotation.Log;
|
||||||
|
import org.nl.wms.pda.st.service.ZxPdaService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: 装箱区控制类
|
||||||
|
* @Date: 2024/8/29
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/pda/encasement")
|
||||||
|
@Slf4j
|
||||||
|
@SaIgnore
|
||||||
|
public class ZxPdaController {
|
||||||
|
@Autowired
|
||||||
|
private ZxPdaService zxPdaService;
|
||||||
|
@PostMapping("/setEmptyVehicle")
|
||||||
|
@Log("装箱区-设置空架子")
|
||||||
|
public ResponseEntity<Object> setEmptyVehicle(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(zxPdaService.setEmptyVehicle(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
@PostMapping("/doClearPoint")
|
||||||
|
@Log("装箱区-清空点位")
|
||||||
|
public ResponseEntity<Object> doClearPoint(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(zxPdaService.doClearPoint(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
@PostMapping("/getZxPointList")
|
||||||
|
@Log("装箱区-下拉框")
|
||||||
|
public ResponseEntity<Object> getZxPointList() {
|
||||||
|
return new ResponseEntity<>(zxPdaService.getZxPointList(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package org.nl.wms.pda.st.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description:
|
||||||
|
* @Date: 2024/8/29
|
||||||
|
*/
|
||||||
|
public interface ZxPdaService {
|
||||||
|
/**
|
||||||
|
* 装箱区-设置空架子
|
||||||
|
* @param param /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject setEmptyVehicle(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清空点位
|
||||||
|
* @param param /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject doClearPoint(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装箱区-下拉框
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
JSONArray getZxPointList();
|
||||||
|
}
|
||||||
@@ -121,6 +121,7 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public JSONObject doSubVolumeDown(JSONObject param) {
|
public JSONObject doSubVolumeDown(JSONObject param) {
|
||||||
|
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.SUB_ROLL_DOWN.getTag());
|
||||||
log.info("手持子卷下线,送到货梯 - {}", param);
|
log.info("手持子卷下线,送到货梯 - {}", param);
|
||||||
// point_code, vehicle_code, container_name
|
// point_code, vehicle_code, container_name
|
||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
@@ -132,7 +133,7 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
throw new BadRequestException("该点位已经创建过任务!");
|
throw new BadRequestException("该点位已经创建过任务!");
|
||||||
}
|
}
|
||||||
SchBasePoint startPoint = pointService.getById(pointCode);
|
SchBasePoint startPoint = pointService.getById(pointCode);
|
||||||
startPoint.setPoint_status("2");
|
startPoint.setPoint_status("3");
|
||||||
// 子卷号
|
// 子卷号
|
||||||
startPoint.setMaterial_code(containerName);
|
startPoint.setMaterial_code(containerName);
|
||||||
startPoint.setVehicle_code(vehicleCode);
|
startPoint.setVehicle_code(vehicleCode);
|
||||||
|
|||||||
@@ -0,0 +1,87 @@
|
|||||||
|
package org.nl.wms.pda.st.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.common.exception.BadRequestException;
|
||||||
|
import org.nl.wms.pda.st.service.ZxPdaService;
|
||||||
|
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.dao.SchBaseTask;
|
||||||
|
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||||
|
import org.nl.wms.util.PointUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description:
|
||||||
|
* @Date: 2024/8/29
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class ZxPdaServiceImpl implements ZxPdaService {
|
||||||
|
@Autowired
|
||||||
|
private ISchBasePointService pointService;
|
||||||
|
@Autowired
|
||||||
|
private ISchBaseTaskService taskService;
|
||||||
|
@Override
|
||||||
|
public JSONObject setEmptyVehicle(JSONObject param) {
|
||||||
|
log.info("装箱区-设置空架子: {}", param);
|
||||||
|
// point_code, vehicle_code
|
||||||
|
String pointCode = param.getString("point_code");
|
||||||
|
String vehicleCode = param.getString("vehicle_code");
|
||||||
|
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||||
|
if (schBaseTasks.size() > 0) {
|
||||||
|
throw new BadRequestException("点位[" + pointCode + "]存在未完成任务,不能放空架子!");
|
||||||
|
}
|
||||||
|
LambdaUpdateWrapper<SchBasePoint> lam = new LambdaUpdateWrapper<>();
|
||||||
|
lam.set(SchBasePoint::getVehicle_code, vehicleCode)
|
||||||
|
.set(SchBasePoint::getMaterial_code, "")
|
||||||
|
.set(SchBasePoint::getPoint_status, "2")
|
||||||
|
.eq(SchBasePoint::getPoint_code, pointCode);
|
||||||
|
boolean update = pointService.update(lam);
|
||||||
|
log.info("更新装箱区点位{} - 设置有空架子 - 更新状态:{}", pointCode, update);
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("status", HttpStatus.OK.value());
|
||||||
|
result.put("message", update ? "更新成功" : "更新失败");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject doClearPoint(JSONObject param) {
|
||||||
|
log.info("装箱区-清空点位: {}", param);
|
||||||
|
// point_code
|
||||||
|
String pointCode = param.getString("point_code");
|
||||||
|
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||||
|
if (schBaseTasks.size() > 0) {
|
||||||
|
throw new BadRequestException("点位[" + pointCode + "]存在未完成任务,不能清除!");
|
||||||
|
}
|
||||||
|
PointUtils.clearPoint(pointService.getById(pointCode), TaskFinishedTypeEnum.MANUAL_PDA);
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("status", HttpStatus.OK.value());
|
||||||
|
result.put("message", "点位清空成功");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONArray getZxPointList() {
|
||||||
|
List<SchBasePoint> zxZcList = pointService.getPointByConditions("A1", "A1-ZXZC",
|
||||||
|
null, null, null, false);
|
||||||
|
JSONArray jsonArray = zxZcList.stream()
|
||||||
|
.map(item -> {
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("text", item.getPoint_name());
|
||||||
|
jsonObject.put("value", item.getPoint_code());
|
||||||
|
return jsonObject;
|
||||||
|
})
|
||||||
|
.collect(Collectors.toCollection(JSONArray::new));
|
||||||
|
return jsonArray;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.sch.task_manage.tasks.nbj;
|
package org.nl.wms.sch.task_manage.tasks.nbj;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
@@ -12,19 +13,16 @@ import org.nl.wms.sch.task_manage.TaskStatus;
|
|||||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||||
import org.nl.wms.util.TaskUtils;
|
import org.nl.wms.util.TaskUtils;
|
||||||
import org.redisson.api.RLock;
|
|
||||||
import org.redisson.api.RedissonClient;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
|
||||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
|
||||||
import static org.nl.wms.util.PointUtils.clearPoint;
|
import static org.nl.wms.util.PointUtils.clearPoint;
|
||||||
import static org.nl.wms.util.PointUtils.setUpdateByType;
|
import static org.nl.wms.util.PointUtils.setUpdateByType;
|
||||||
|
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||||
|
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: lyd
|
* @Author: lyd
|
||||||
@@ -39,8 +37,6 @@ public class SubRollDownAGVTask extends AbstractTask {
|
|||||||
private ISchBaseTaskService taskService;
|
private ISchBaseTaskService taskService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBasePointService pointService;
|
private ISchBasePointService pointService;
|
||||||
@Autowired
|
|
||||||
private RedissonClient redissonClient;
|
|
||||||
@Override
|
@Override
|
||||||
public void create() throws BadRequestException {
|
public void create() throws BadRequestException {
|
||||||
|
|
||||||
@@ -50,43 +46,35 @@ public class SubRollDownAGVTask extends AbstractTask {
|
|||||||
@Override
|
@Override
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
// update: 查找空位没任务的货梯 -> 查找一楼暂存位空位
|
// update: 查找空位没任务的货梯 -> 查找一楼暂存位空位
|
||||||
List<SchBasePoint> lifts = pointService.getAllBusinessNotTaskPoint("A1", "A1-LIFT-AREA",
|
TaskUtils.createTask("A1-ZXZC", () -> {
|
||||||
"1", "1", null, null);
|
List<SchBasePoint> zxPoints = pointService.getAllBusinessNotTaskPoint("A1", "A1-ZXZC",
|
||||||
if (lifts.size() == 0) {
|
"1", "1", null, null);
|
||||||
throw new BadRequestException("暂无可用的货梯!");
|
if (zxPoints.size() == 0) {
|
||||||
}
|
throw new BadRequestException("暂无可用的装箱暂存位!");
|
||||||
SchBasePoint liftPoint = lifts.get(0);
|
|
||||||
RLock lock = redissonClient.getLock(liftPoint.getPoint_code());
|
|
||||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
|
||||||
try {
|
|
||||||
if (tryLock) {
|
|
||||||
task.setPoint_code2(liftPoint.getPoint_code());
|
|
||||||
// 创建任务
|
|
||||||
task.setHandle_class(THIS_CLASS);
|
|
||||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
|
||||||
setUpdateByPC(task);
|
|
||||||
taskService.save(task);
|
|
||||||
} else {
|
|
||||||
throw new BadRequestException("点位编码:" + liftPoint.getPoint_code() + "正在使用中,请重试!");
|
|
||||||
}
|
}
|
||||||
} finally {
|
SchBasePoint zxPoint = zxPoints.get(0);
|
||||||
if (tryLock) {
|
task.setPoint_code2(zxPoint.getPoint_code());
|
||||||
lock.unlock();
|
// 创建任务
|
||||||
}
|
task.setHandle_class(THIS_CLASS);
|
||||||
}
|
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||||
|
setUpdateByPC(task);
|
||||||
|
taskService.save(task);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||||
checkTaskOptionStatus(taskObj);
|
checkTaskOptionStatus(taskObj);
|
||||||
|
JSONObject requestObj = JSONObject.parseObject(taskObj.getRequest_param());
|
||||||
// 起点清空(没有取货完成的业务),终点赋值
|
// 起点清空(没有取货完成的业务),终点赋值
|
||||||
String startPointCode = taskObj.getPoint_code1();
|
String startPointCode = taskObj.getPoint_code1();
|
||||||
String endPointCode = taskObj.getPoint_code2();
|
String endPointCode = taskObj.getPoint_code2();
|
||||||
SchBasePoint startPoint = pointService.getById(startPointCode);
|
SchBasePoint startPoint = pointService.getById(startPointCode);
|
||||||
SchBasePoint endPoint = pointService.getById(endPointCode);
|
SchBasePoint endPoint = pointService.getById(endPointCode);
|
||||||
clearPoint(startPoint, taskFinishedType);
|
clearPoint(startPoint, taskFinishedType);
|
||||||
endPoint.setPoint_status("2");
|
endPoint.setPoint_status("3");
|
||||||
|
endPoint.setMaterial_code(requestObj.getString("container_name"));
|
||||||
endPoint.setVehicle_code(taskObj.getVehicle_code());
|
endPoint.setVehicle_code(taskObj.getVehicle_code());
|
||||||
setUpdateByType(endPoint, taskFinishedType);
|
setUpdateByType(endPoint, taskFinishedType);
|
||||||
pointService.updateById(endPoint);
|
pointService.updateById(endPoint);
|
||||||
|
|||||||
Reference in New Issue
Block a user