add: 取样、lms、acs联调

This commit is contained in:
ls
2024-12-27 08:11:27 +08:00
parent 7fc7d273fd
commit 7e20171639
22 changed files with 390 additions and 97 deletions

View File

@@ -61,6 +61,13 @@ public class AcsToWmsController {
public ResponseEntity<Object> applyNewPoint(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.applyNewPoint(whereJson), HttpStatus.OK);
}
@PostMapping("/getSJGHCPointStatus")
@Log(value = "分切上料AGV请求进入获取缓存架状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore
public ResponseEntity<Object> getSJGHCPointStatus(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.getSJGHCPointStatus(whereJson), HttpStatus.OK);
}
@PostMapping("/applyRollUpRollerNewPoint")
@Log(value = "收卷辊库满入空出申请新点位", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore

View File

@@ -147,6 +147,14 @@ public interface AcsToWmsService {
*/
JSONObject applyNewPoint(JSONObject param);
/**
* 分切上料AGV请求进入获取缓存架状态
* @param param
* @return
*/
JSONObject getSJGHCPointStatus(JSONObject param);
/**
* 收卷辊满入空出
* @param param

View File

@@ -208,6 +208,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return otherOperationService.takeUpRollExceptionHandling(param);
}
@Override
public JSONObject getSJGHCPointStatus(JSONObject param) {
return otherOperationService.getSJGHCPointStatus(param);
}
@Override
public JSONObject acsFeedbackTubeInStorageComplete(JSONObject param) {
return otherOperationService.acsFeedbackTubeInStorageComplete(param);

View File

@@ -188,28 +188,39 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
if (ObjectUtil.isEmpty(sbPoint)) {
throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!");
}
// todo: 暂时写死,创建工单
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer(rollCode, "yyMMddHHmmss", sbPoint.getExt_code()));
rawOrder.setResource_name(sbPoint.getExt_code());
rawOrder.setMfg_order_name("$$$$");
rawOrder.setProduct_name("锂电");
rawOrder.setDescription("锂电");
rawOrder.setTheory_height(new BigDecimal(theory_height));
rawOrder.setProductin_qty(new BigDecimal(productin_qty));
rawOrder.setUp_coiler_date(DateUtil.now());
rawOrder.setStatus("01");
rawOrder.setWind_roll(rollCode);
TaskUtils.setRawOrderCreateByDefault(rawOrder);
rawOrder.setProduct_area(sbPoint.getProduct_area());
rawOrder.setOrder_type("1");
rawfoilworkorderService.save(rawOrder);
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
if (ObjectUtil.isNotEmpty(order)) {
order.setTheory_height(new BigDecimal(theory_height));
order.setProductin_qty(new BigDecimal(productin_qty));
order.setUp_coiler_date(DateUtil.now());
rawfoilworkorderService.updateById(order);
param.put("order_code", order.getContainer_name());
param.put("workorder_id", order.getWorkorder_id());
}else {
// todo: 暂时写死,创建工单
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer(rollCode, "yyMMddHHmmss", sbPoint.getExt_code()));
rawOrder.setResource_name(sbPoint.getExt_code());
rawOrder.setMfg_order_name("$$$$");
rawOrder.setProduct_name("锂电");
rawOrder.setDescription("锂电");
rawOrder.setTheory_height(new BigDecimal(theory_height));
rawOrder.setProductin_qty(new BigDecimal(productin_qty));
rawOrder.setUp_coiler_date(DateUtil.now());
rawOrder.setStatus("01");
rawOrder.setWind_roll(rollCode);
TaskUtils.setRawOrderCreateByDefault(rawOrder);
rawOrder.setProduct_area(sbPoint.getProduct_area());
rawOrder.setOrder_type("1");
rawfoilworkorderService.save(rawOrder);
param.put("order_code", rawOrder.getContainer_name());
param.put("workorder_id", rawOrder.getWorkorder_id());
}
// 组织请求任务参数
// 当前生箔的点位
param.put("device_code", pointCode);
param.put("order_code", rawOrder.getContainer_name());
param.put("workorder_id", rawOrder.getWorkorder_id());
param.put("ext_code", sbPoint.getExt_code());
param.put("vehicle_code2", rollCode);
param.put("create_mode", GeneralDefinition.PDA_CREATION);

View File

@@ -114,7 +114,8 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
param.put("create_mode", GeneralDefinition.PDA_CREATION);
// 判断空轴位状态
// 标记一下, 0: 只做呼叫母卷1呼叫母卷还要送空辊
param.put("is_flag", "01".equals(cutPoint.getFull_point_status()) ? "0" : "1");
// 只做四个点任务
// param.put("is_flag", "01".equals(cutPoint.getFull_point_status()) ? "0" : "1");
param.put("vehicle_code", cutPoint.getFull_vehicle_code());
param.put("vehicle_code2", one.getWind_roll());
slitterUpTrussTask.apply(param);

View File

@@ -238,10 +238,11 @@ public class OtherPdaServiceImpl implements OtherPdaService {
log.info("手持呼叫AGV送样品检测 - {}", param);
// point_code1, point_code2
String pointCode1 = param.getString("point_code1");
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode1);
if (schBaseTasks.size() > 0) {
throw new BadRequestException("点位[" + pointCode1 + "]已经存在任务!");
}
//不判断是否有执行的任务
// List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode1);
// if (schBaseTasks.size() > 0) {
// throw new BadRequestException("点位[" + pointCode1 + "]已经存在任务!");
// }
param.put("device_code", pointCode1);
param.put("config_code", "CallToSamplingAGVTask");
param.put("create_mode", GeneralDefinition.PDA_CREATION);

View File

@@ -22,6 +22,13 @@ public interface OtherOperationService {
*/
JSONObject takeUpRollExceptionHandling(JSONObject param);
/**
* 获取缓存点位状态
* @param param /
* @return /
*/
JSONObject getSJGHCPointStatus(JSONObject param);
/**
* ACS反馈管芯入库完成
* @param param /

View File

@@ -147,6 +147,20 @@ public class OtherOperationServiceImpl implements OtherOperationService {
return result;
}
@Override
public JSONObject getSJGHCPointStatus(JSONObject param) {
// 获取收卷辊货位状态
log.info("获取收卷辊货位状态:{}", param);
String deviceCode = param.getString("device_code");
SchBasePoint point = pointService.getById(deviceCode);
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("point_status", point.getPoint_status());
result.put("message", "获取收卷辊货位状态成功!");
return result;
}
@Override
public JSONObject acsFeedbackTubeInStorageComplete(JSONObject param) {
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.ACS_FEEDBACK_TUBE_COMPLETE.getTag());

View File

@@ -43,6 +43,8 @@ public class CallToSamplingAGVTask extends AbstractTask {
task.setHandle_class(THIS_CLASS);
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
setUpdateByPC(task);
// 设置车号
task.setCar_no("3");
taskService.save(task);
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.sch.task_manage.tasks.slitter;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.sch.point.service.ISchBasePointService;
@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import static org.nl.wms.util.PointUtils.setUpdateByType;
@@ -65,12 +67,25 @@ public class SlitterSendRollTrussTask extends AbstractTask {
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
checkTaskOptionStatus(taskObj);
// 点位更新需要将载具编码设置到终点
// 收卷锟缓存架更新
String endPointCode = taskObj.getPoint_code2();
SchBasePoint endPoint = pointService.getById(endPointCode);
endPoint.setVehicle_code(taskObj.getVehicle_code());
endPoint.setPoint_status("2");
setUpdateByType(endPoint, taskFinishedType);
pointService.updateById(endPoint);
String startPointCode = taskObj.getPoint_code1();
QueryWrapper<SchBasePoint> queryWrapper = new QueryWrapper<>();
queryWrapper.in("point_code", Arrays.asList(endPointCode, startPointCode)); // 假设这是你要查询的 point_code 列表
List<SchBasePoint> points = pointService.list(queryWrapper);
for (SchBasePoint point : points) {
if (point.getPoint_code().equals(endPointCode)){
point.setVehicle_code(taskObj.getVehicle_code());
point.setPoint_status("2");
setUpdateByType(point, taskFinishedType);
}
if (point.getPoint_code().equals(startPointCode)){
point.setPoint_status("1");
setUpdateByType(point, taskFinishedType);
}
}
pointService.updateBatchById(points);
// 任务更新
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setFinished_type(taskFinishedType.getCode());

View File

@@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import static org.nl.wms.util.TaskUtils.*;
@@ -57,30 +58,31 @@ public class SlitterUpAGVTask extends AbstractTask {
// 收卷辊不需要校验点位,因此无需加锁
String requestParam = task.getRequest_param();
JSONObject requestObj = JSONObject.parseObject(requestParam);
String isFlag = requestObj.getString("is_flag");
// String isFlag = requestObj.getString("is_flag");
// 分切上料满料对接位
String cutPointCode = requestObj.getString("cut_point");
// 烘箱暂存对接位
String deviceCode = requestObj.getString("device_code");
StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(cutPointCode, false);
if ("0".equals(isFlag)) {
// 两点任务
task.setPoint_code1(deviceCode);
task.setPoint_code2(cutPoint.getFull_point_code());
} else {
// 收卷辊的入库不做校验
List<SchBasePoint> sjgPoints = pointService.getPointByConditions("A1", "A1-SJGK",
"1", null, null, false);
if (sjgPoints.size() == 0) {
throw new BadRequestException("收卷辊库找不到入口!");
}
SchBasePoint sjgPoint = sjgPoints.get(0);
// 四点任务
task.setPoint_code1(deviceCode);
task.setPoint_code2(cutPoint.getFull_point_code());
task.setPoint_code3(cutPoint.getEmpty_point_code());
task.setPoint_code4(sjgPoint.getPoint_code());
// if ("0".equals(isFlag)) {
// // 两点任务
// task.setPoint_code1(deviceCode);
// task.setPoint_code2(cutPoint.getFull_point_code());
// } else {
// }
// 只做四个点任务
// 收卷辊的入库不做校验
List<SchBasePoint> sjgPoints = pointService.getPointByConditions("A1", "A1-SJGK",
"1", null, null, false);
if (sjgPoints.size() == 0) {
throw new BadRequestException("收卷辊库找不到入口!");
}
SchBasePoint sjgPoint = sjgPoints.get(0);
// 四点任务
task.setPoint_code1(deviceCode);
task.setPoint_code2(cutPoint.getFull_point_code());
task.setPoint_code3(cutPoint.getEmpty_point_code());
task.setPoint_code4(sjgPoint.getPoint_code());
// 创建任务
task.setHandle_class(THIS_CLASS);
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
@@ -110,6 +112,11 @@ public class SlitterUpAGVTask extends AbstractTask {
cutPoint.setEmpty_point_status("02");
setCutUpdateByType(cutPoint, taskFinishedType);
cutpointivtService.updateById(cutPoint);
//更新收卷锟缓存位库存
String pointCode4 = taskObj.getPoint_code4();
SchBasePoint point4 = pointService.query().eq("point_code", pointCode4).one();
point4.setPoint_status("2");
pointService.updateById(point4);
if (ObjectUtil.isNotEmpty(taskObj.getPoint_code3())) {
// 四点任务,还需要创建收卷辊桁架任务
JSONObject taskParam = new JSONObject();

View File

@@ -85,7 +85,7 @@ public class SlitterUpTrussTask extends AbstractTask {
JSONObject requestObj = JSONObject.parseObject(requestParam);
// 分切机满料位
String isFlag = requestObj.getString("is_flag");
// String isFlag = requestObj.getString("is_flag");
String workorderId = requestObj.getString("workorder_id");
String startPointCode = taskObj.getPoint_code1();
String endPointCode = taskObj.getPoint_code2();
@@ -98,7 +98,7 @@ public class SlitterUpTrussTask extends AbstractTask {
taskParam.put("device_code", endPointCode);
taskParam.put("cut_point", requestObj.getString("device_code"));
// 标记一下, 0: 只做呼叫母卷1呼叫母卷还要送空辊
taskParam.put("is_flag", isFlag);
// taskParam.put("is_flag", isFlag);
// 空轴的编码
taskParam.put("vehicle_code", taskObj.getVehicle_code());
// 满轴的载具号