add: 技改

This commit is contained in:
ls
2025-11-30 09:05:40 +08:00
parent 5e3f30363f
commit 4c03ae35ad
19 changed files with 296 additions and 86 deletions

View File

@@ -1630,7 +1630,9 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
} }
} else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) {
manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver();
List<String> linkDeviceCodes = manipulatorAgvStationDeviceDriver.getExtraDeviceCodes("link_device_code");
String linkDeviceCode = linkDeviceCodes.get(0);
Device linkDevice = deviceAppService.findDeviceByCode(linkDeviceCode);
//申请烘箱行架任务 //申请烘箱行架任务
if (ObjectUtil.isNotEmpty(manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("request_robot_task")) if (ObjectUtil.isNotEmpty(manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("request_robot_task"))
@@ -1658,6 +1660,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
manipulatorAgvStationDeviceDriver.setOvenGantryTask(true); manipulatorAgvStationDeviceDriver.setOvenGantryTask(true);
manipulatorAgvStationDeviceDriver.writing(4); manipulatorAgvStationDeviceDriver.writing(4);
}else {
// 失败的话将报错信息显示到大屏
if (linkDevice.getDeviceDriver() instanceof OvenGantryManipulatorDeviceDriver) {
OvenGantryManipulatorDeviceDriver ovenGantryManipulatorDeviceDriver;
ovenGantryManipulatorDeviceDriver = (OvenGantryManipulatorDeviceDriver) linkDevice.getDeviceDriver();
ovenGantryManipulatorDeviceDriver.setNotCreateInstMessage(jo.toString());
}
} }
} }

View File

@@ -143,7 +143,7 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple
@Override @Override
public void execute() { public void execute() {
device_code device_code
= this.getDeviceCode(); = this.getDeviceCode();
heartbeat = this.itemProtocol.getItem_heartbeat(); heartbeat = this.itemProtocol.getItem_heartbeat();
mode = this.itemProtocol.getItem_mode(); mode = this.itemProtocol.getItem_mode();
move = this.itemProtocol.getItem_move(); move = this.itemProtocol.getItem_move();
@@ -185,6 +185,9 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple
dto.setError_info(ErrorUtil.getDictDetail("hx_error_type", String.valueOf(error))); dto.setError_info(ErrorUtil.getDictDetail("hx_error_type", String.valueOf(error)));
deviceErrorLogService.create(dto); deviceErrorLogService.create(dto);
} }
} else if (error != 0 || error1 != 0) {
this.setIserror(true);
message = "有报警";
} }
if (finish != last_finish) { if (finish != last_finish) {
if (finish == 1) { if (finish == 1) {
@@ -283,7 +286,7 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple
public void writing(int command) { public void writing(int command) {
String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code()
+ "." ; + ".";
//String opcservcerid = this.getDevice().getOpc_server_id(); //String opcservcerid = this.getDevice().getOpc_server_id();
//Server server = ReadUtil.getServer(opcservcerid); //Server server = ReadUtil.getServer(opcservcerid);
Map<String, Object> itemMap = new HashMap<String, Object>(); Map<String, Object> itemMap = new HashMap<String, Object>();
@@ -433,6 +436,13 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple
if (error == 0 && iserror) { if (error == 0 && iserror) {
message = LangProcess.msg("universal_message11"); message = LangProcess.msg("universal_message11");
} }
if(this.getError() != 0){
map.put("error", "error有报警,请检查烘箱!");
}
if (this.getError1() != 0){
map.put("error", "error1有报警,请检查烘箱!");
}
String door = "关门状态"; String door = "关门状态";
if (this.door == 1) { if (this.door == 1) {
door = "开门状态"; door = "开门状态";

View File

@@ -478,7 +478,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
return false; return false;
} }
// 判断相邻烘箱是否有货有异常 // 判断相邻烘箱是否有货有异常
// if (filterNeighbors(startdevice)) return false; if (filterNeighbors(startdevice)) return false;
} }
if (nextdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { if (nextdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) {
@@ -488,7 +488,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
return false; return false;
} }
// 判断相邻烘箱是否有货有异常 // 判断相邻烘箱是否有货有异常
// if (filterNeighbors(nextdevice)) return false; if (filterNeighbors(nextdevice)) return false;
} }
@@ -647,7 +647,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
Device deviceByAddress = deviceAppService.findDeviceByAddress(neighbor); Device deviceByAddress = deviceAppService.findDeviceByAddress(neighbor);
hongXiangConveyorDeviceDriverNeighbor = (HongXiangConveyorDeviceDriver) deviceByAddress.getDeviceDriver(); hongXiangConveyorDeviceDriverNeighbor = (HongXiangConveyorDeviceDriver) deviceByAddress.getDeviceDriver();
if (hongXiangConveyorDeviceDriverNeighbor.getMode() == 0 || hongXiangConveyorDeviceDriverNeighbor.getMove() == 0 || hongXiangConveyorDeviceDriverNeighbor.getError() != 0 || hongXiangConveyorDeviceDriverNeighbor.getError1() != 0) { if (hongXiangConveyorDeviceDriverNeighbor.getMode() == 0 || hongXiangConveyorDeviceDriverNeighbor.getMove() == 0 || hongXiangConveyorDeviceDriverNeighbor.getError() != 0 || hongXiangConveyorDeviceDriverNeighbor.getError1() != 0) {
notCreateInstMessage = "就绪任务未创建指令原因->-烘箱:" + hongXiangConveyorDeviceDriverNeighbor.getDevice_code() + "光电无货,无法生成指令!" + hongXiangConveyorDeviceDriverNeighbor.getError() + "异常" + +hongXiangConveyorDeviceDriverNeighbor.getError1() + "异常,无法生成指令!"; notCreateInstMessage = "就绪任务未创建指令原因->-相邻光电异常烘箱:" + hongXiangConveyorDeviceDriverNeighbor.getDevice_code() + "光电无货,无法生成指令!" + hongXiangConveyorDeviceDriverNeighbor.getError() + "异常" + +hongXiangConveyorDeviceDriverNeighbor.getError1() + "异常,无法生成指令!";
return true; return true;
} }

View File

@@ -1038,13 +1038,20 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
//5、输送任务 //5、输送任务
//6、行架 //6、行架
//7、立库 //7、立库
if (StrUtil.equals(task_type, CommonFinalParam.ONE)) { if (StrUtil.equals(task_type, CommonFinalParam.ONE) ) {
instdto.setAgv_inst_type(CommonFinalParam.ONE); //生箔四个点任务是生箔agv两个点是普通任务
if (StrUtil.isNotEmpty(instdto.getStart_device_code2())) {
instdto.setAgv_inst_type(CommonFinalParam.ONE);
instdto.setCarno("1");
}else {
instdto.setAgv_inst_type("2");
}
} else if (StrUtil.equals(task_type, "3")) { } else if (StrUtil.equals(task_type, "3")) {
instdto.setAgv_inst_type("2"); instdto.setAgv_inst_type("2");
} else if (StrUtil.equals(task_type, "2")) { }else if (StrUtil.equals(task_type, "2")) {
instdto.setAgv_inst_type("3"); instdto.setAgv_inst_type("3");
} else if (StrUtil.equals(task_type, "8")) { }else if (StrUtil.equals(task_type, "8")) {
instdto.setAgv_inst_type("2"); instdto.setAgv_inst_type("2");
} else { } else {
log.info("未找到对应的AGV指令类型任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); log.info("未找到对应的AGV指令类型任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type());

View File

@@ -17,6 +17,7 @@ public enum PointStatusEnum {
* 待烘烤 * 待烘烤
*/ */
HOT_POINT("5", "待烘烤"), HOT_POINT("5", "待烘烤"),
/** /**
* 待质检 * 待质检
*/ */

View File

@@ -156,6 +156,7 @@ public class BakingPdaServiceImpl implements BakingPdaService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JSONObject doModifyRawInfos(JSONObject param) { public JSONObject doModifyRawInfos(JSONObject param) {
//温度、大小卷、时间
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_INFO_UPDATE.getTag()); MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_INFO_UPDATE.getTag());
log.info("手持修改温度/时间 - {}", param); log.info("手持修改温度/时间 - {}", param);
// point_code, order_code, temperature, time // point_code, order_code, temperature, time

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pda.mps.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -22,6 +23,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTask;
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.constant.RegionConstant; import org.nl.wms.sch.task_manage.core.constant.RegionConstant;
import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask;
import org.nl.wms.sch.task_manage.tasks.raw.RawCallRollTrussTask; import org.nl.wms.sch.task_manage.tasks.raw.RawCallRollTrussTask;
import org.nl.wms.sch.task_manage.tasks.raw.RawDownAGVTask; import org.nl.wms.sch.task_manage.tasks.raw.RawDownAGVTask;
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask; import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask;
@@ -35,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*; import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
import static org.nl.wms.util.TaskUtils.createVirtualContainer; import static org.nl.wms.util.TaskUtils.createVirtualContainer;
@@ -64,6 +68,9 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
@Autowired @Autowired
private ISchBasePointService pointService; private ISchBasePointService pointService;
@Autowired
private InHotTrussTask inHotTrussTask;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JSONObject needEmptyVehicle(JSONObject param) { public JSONObject needEmptyVehicle(JSONObject param) {
@@ -176,15 +183,20 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
TaskUtils.taskLock("call-raw-down", () -> { TaskUtils.taskLock("call-raw-down", () -> {
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag()); MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag());
log.info("手持生箔下料: {}", param); log.info("手持生箔下料: {}", param);
String temperature = param.getString("temperature");
if (!isValidInteger(temperature)) {
throw new BadRequestException("温度请输入整数!");
}
// point_code, order_code, is_call_empty // point_code, order_code, is_call_empty
String pointCode = param.getString("point_code"); String pointCode = param.getString("point_code");
// 母卷号 // 母卷号
String orderCode = param.getString("order_code"); String orderCode = param.getString("order_code");
// 收卷辊编码 // 大小卷
String rollCode = param.getString("roll_code"); String rollType = param.getString("roll_type");
String isCallEmpty = param.getString("is_call_empty"); String isCallEmpty = param.getString("is_call_empty");
String theory_height = param.getString("theory_height"); String theory_height = param.getString("theory_height");
String productin_qty = param.getString("productin_qty"); String productin_qty = param.getString("productin_qty");
String time = param.getString("time");
// 判断是否存在任务 // 判断是否存在任务
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode); List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
// 判断是否存在对应的桁架任务 // 判断是否存在对应的桁架任务
@@ -197,21 +209,34 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!"); throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!");
} }
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode); PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
if (StrUtil.isEmpty(temperature) || StrUtil.isEmpty(time)){
// 找对接位(状态是空的,没有任务的) 如果只有一个位置不能下生箔agv任务 //找对接位位置
List<SchBasePoint> points = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC, setDjw(param);
POINT_TYPE_HOT_DOCKING, POINT_STATUS_EMPTY,"1"); } else {
if (points.size()<2){ // 找烘箱位置
throw new BadRequestException("对接位已有两个被占用,请尽快处理"); String stIvtHotpointivt = inHotTrussTask.getStIvtHotpointivt(rollType, temperature);
if (StrUtil.isNotEmpty(stIvtHotpointivt)) {
param.put("put_code", stIvtHotpointivt);
} else {
//找对接位位置
setDjw(param);
}
} }
// 锁定位置设置为待绑定 // 锁定位置设置为待绑定
SchBasePoint schBasePoint = points.get(0); // SchBasePoint schBasePoint = points.get(0);
schBasePoint.setPoint_status(POINT_STATUS_BINDING); // schBasePoint.setPoint_status(POINT_STATUS_BINDING);
pointService.updateById(schBasePoint); // pointService.updateById(schBasePoint);
if (ObjectUtil.isNotEmpty(order)) { if (ObjectUtil.isNotEmpty(order)) {
order.setTheory_height(new BigDecimal(theory_height)); if (StrUtil.isNotEmpty(theory_height)) {
order.setProductin_qty(new BigDecimal(productin_qty)); order.setTheory_height(new BigDecimal(theory_height));
}
if (StrUtil.isNotEmpty(productin_qty)) {
order.setProductin_qty(new BigDecimal(productin_qty));
}
order.setUp_coiler_date(DateUtil.now()); order.setUp_coiler_date(DateUtil.now());
order.setBaking_temperature(temperature);
order.setBaking_time(time);
order.setRoll_type(rollType);
rawfoilworkorderService.updateById(order); rawfoilworkorderService.updateById(order);
param.put("order_code", order.getContainer_name()); param.put("order_code", order.getContainer_name());
param.put("workorder_id", order.getWorkorder_id()); param.put("workorder_id", order.getWorkorder_id());
@@ -219,16 +244,23 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
// todo: 暂时写死,创建工单 // todo: 暂时写死,创建工单
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder(); PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); rawOrder.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer(rollCode, "yyMMddHHmmss", sbPoint.getExt_code())); rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer("1", "yyMMddHHmmss", sbPoint.getExt_code()));
rawOrder.setResource_name(sbPoint.getExt_code()); rawOrder.setResource_name(sbPoint.getExt_code());
rawOrder.setMfg_order_name("$$$$"); rawOrder.setMfg_order_name("$$$$");
rawOrder.setProduct_name("锂电"); rawOrder.setProduct_name("锂电");
rawOrder.setDescription("锂电"); rawOrder.setDescription("锂电");
rawOrder.setTheory_height(new BigDecimal(theory_height)); if (StrUtil.isNotEmpty(theory_height)) {
rawOrder.setProductin_qty(new BigDecimal(productin_qty)); order.setTheory_height(new BigDecimal(theory_height));
}
if (StrUtil.isNotEmpty(productin_qty)) {
order.setProductin_qty(new BigDecimal(productin_qty));
}
rawOrder.setUp_coiler_date(DateUtil.now()); rawOrder.setUp_coiler_date(DateUtil.now());
rawOrder.setStatus("01"); rawOrder.setStatus("01");
rawOrder.setWind_roll(rollCode); rawOrder.setWind_roll("roll");
rawOrder.setBaking_temperature(temperature);
rawOrder.setBaking_time(time);
rawOrder.setRoll_type(rollType);
TaskUtils.setRawOrderCreateByDefault(rawOrder); TaskUtils.setRawOrderCreateByDefault(rawOrder);
rawOrder.setProduct_area(sbPoint.getProduct_area()); rawOrder.setProduct_area(sbPoint.getProduct_area());
rawOrder.setOrder_type("1"); rawOrder.setOrder_type("1");
@@ -240,7 +272,6 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
// 当前生箔的点位 // 当前生箔的点位
param.put("device_code", pointCode); param.put("device_code", pointCode);
param.put("ext_code", sbPoint.getExt_code()); param.put("ext_code", sbPoint.getExt_code());
param.put("vehicle_code2", rollCode);
param.put("create_mode", GeneralDefinition.PDA_CREATION); param.put("create_mode", GeneralDefinition.PDA_CREATION);
// 判断是否呼叫空辊 // 判断是否呼叫空辊
if (GeneralDefinition.YES.equals(isCallEmpty)) { if (GeneralDefinition.YES.equals(isCallEmpty)) {
@@ -262,6 +293,21 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
return result; return result;
} }
private void setDjw(JSONObject param) {
// 找对接位(状态是空的,没有任务的) 如果只有一个位置不能下生箔agv任务
List<SchBasePoint> points = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC,
POINT_TYPE_RAW_DOCKING, POINT_STATUS_EMPTY, "1");
if (points.isEmpty()) {
throw new BadRequestException("烘箱无位置生箔对接位有货请给生箔agv让出一个位置");
}
param.put("put_code", points.get(0).getPoint_code());
}
public boolean isValidInteger(String input) {
String regex = "^[+-]?\\d+$";
return input.matches(regex);
}
@Override @Override
public JSONObject confirmBlanking(JSONObject param) { public JSONObject confirmBlanking(JSONObject param) {
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_READY.getTag()); MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_READY.getTag());

View File

@@ -18,5 +18,6 @@
FROM st_ivt_hotpointivt p FROM st_ivt_hotpointivt p
LEFT JOIN pdm_bi_rawfoilworkorder w ON w.workorder_id = p.workorder_id LEFT JOIN pdm_bi_rawfoilworkorder w ON w.workorder_id = p.workorder_id
WHERE p.point_status = '04'; WHERE p.point_status = '04';
ORDER BY zc_point;
</select> </select>
</mapper> </mapper>

View File

@@ -101,6 +101,9 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
List<SchBasePoint> getHotNotTaskPoint2(String area, String region, String pointType, String pointStatus,String lockType); List<SchBasePoint> getHotNotTaskPoint2(String area, String region, String pointType, String pointStatus,String lockType);
/** /**
* 从点位查找以下条件可用的没任务点位 * 从点位查找以下条件可用的没任务点位
* @param area 生产区域 * @param area 生产区域

View File

@@ -38,6 +38,8 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
List<SchBasePoint> getHotNotTaskPoint2(String area, String region, String pointType, String pointStatus,String lockType); List<SchBasePoint> getHotNotTaskPoint2(String area, String region, String pointType, String pointStatus,String lockType);
List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus,
String vehicleType, String vehicleCode); String vehicleType, String vehicleCode);

View File

@@ -56,6 +56,9 @@
AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code4 = p.point_code)) AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code4 = p.point_code))
</select> </select>
<select id="getAllBusinessNotTaskPoint" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint"> <select id="getAllBusinessNotTaskPoint" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
SELECT p.* SELECT p.*
FROM sch_base_point p FROM sch_base_point p

View File

@@ -277,6 +277,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
return pointMapper.getHotNotTaskPoint2(area, region, pointType, pointStatus,lockType); return pointMapper.getHotNotTaskPoint2(area, region, pointType, pointStatus,lockType);
} }
@Override @Override
public List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType, public List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType,
String pointStatus, String vehicleType, String vehicleCode) { String pointStatus, String vehicleType, String vehicleCode) {

View File

@@ -10,11 +10,19 @@ public class HotConstant {
public final static String POINT_TYPE_EMPTY = "1"; public final static String POINT_TYPE_EMPTY = "1";
/** 点位类型:烘箱对接位 */ /** 点位类型:烘箱对接位 */
public final static String POINT_TYPE_HOT_DOCKING = "5"; public final static String POINT_TYPE_HOT_DOCKING = "5";
/** 点位类型:烘烤完毕位 */
public final static String POINT_TYPE_HOT_FINISH = "4";
/** 点位状态:空位 */ /** 点位状态:空位 */
public final static String POINT_STATUS_EMPTY = "1"; public final static String POINT_STATUS_EMPTY = "1";
/** 点位状态:待质检 */ /** 点位状态:待质检 */
public final static String POINT_STATUS_WAIT_QUALITY = "3"; public final static String POINT_STATUS_WAIT_QUALITY = "3";
/** 点位类型:烘箱生箔对接位 */
public final static String POINT_TYPE_RAW_DOCKING = "6";
/** 点位状态:待分切 */
public final static String POINT_STATUS_WAIT_CUT = "4";
/** 点位类型:烘箱对接位 */ /** 点位类型:烘箱对接位 */
public final static String POINT_STATUS_BINDING = "5"; public final static String POINT_STATUS_BINDING = "5";
/** 烘箱点位(非对接位)状态 -空位 */ /** 烘箱点位(非对接位)状态 -空位 */

View File

@@ -4,8 +4,10 @@ import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import dm.jdbc.util.StringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.StringUtils;
import org.nl.config.lucene.TagNameEnum; import org.nl.config.lucene.TagNameEnum;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
@@ -138,6 +140,10 @@ public class BakingOperationServiceImpl implements BakingOperationService {
String requestParam = taskObj.getRequest_param(); String requestParam = taskObj.getRequest_param();
JSONObject requestObj = JSONObject.parseObject(requestParam); JSONObject requestObj = JSONObject.parseObject(requestParam);
String orderCode = requestObj.getString("order_code"); String orderCode = requestObj.getString("order_code");
String putCode = requestObj.getString("put_code");
if (StringUtil.isEmpty(putCode)){
throw new BadRequestException("终点不能为空");
}
if (ObjectUtil.isNotEmpty(orderCode)) { if (ObjectUtil.isNotEmpty(orderCode)) {
rawfoilworkorderService.update(new LambdaUpdateWrapper<PdmBiRawfoilworkorder>() rawfoilworkorderService.update(new LambdaUpdateWrapper<PdmBiRawfoilworkorder>()
.set(PdmBiRawfoilworkorder::getStatus, "04") .set(PdmBiRawfoilworkorder::getStatus, "04")
@@ -158,6 +164,7 @@ public class BakingOperationServiceImpl implements BakingOperationService {
taskParam.put("order_code", orderCode); taskParam.put("order_code", orderCode);
taskParam.put("up_task_code", taskObj.getTask_code()); taskParam.put("up_task_code", taskObj.getTask_code());
taskParam.put("device_code", hxPointCode); taskParam.put("device_code", hxPointCode);
taskParam.put("put_code", putCode);
taskParam.put("config_code", "InHotDockingTrussTask"); taskParam.put("config_code", "InHotDockingTrussTask");
taskParam.put("create_mode", GeneralDefinition.ACS_CREATION); taskParam.put("create_mode", GeneralDefinition.ACS_CREATION);
// 满卷的收卷辊编码放在AGV任务的载具2上 // 满卷的收卷辊编码放在AGV任务的载具2上

View File

@@ -1,8 +1,15 @@
package org.nl.wms.sch.task_manage.tasks.hot; package org.nl.wms.sch.task_manage.tasks.hot;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.ISchBaseTaskService;
@@ -11,6 +18,7 @@ import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.TaskStatus; 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.constant.RegionConstant; import org.nl.wms.sch.task_manage.core.constant.RegionConstant;
import org.nl.wms.sch.task_manage.core.enums.PointStatusEnum;
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.PointUtils; import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils; import org.nl.wms.util.TaskUtils;
@@ -20,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import static org.nl.wms.util.PointUtils.setHxUpdateByType;
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
import static org.nl.wms.util.TaskUtils.setUpdateByPC; import static org.nl.wms.util.TaskUtils.setUpdateByPC;
import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*; import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
@@ -37,6 +46,11 @@ public class InHotDockingTrussTask extends AbstractTask {
private ISchBaseTaskService taskService; private ISchBaseTaskService taskService;
@Autowired @Autowired
private ISchBasePointService pointService; private ISchBasePointService pointService;
@Autowired
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
@Autowired
private IstIvtHotpointivtService hotpointivtService;
@Override @Override
public void create() throws BadRequestException { public void create() throws BadRequestException {
@@ -50,13 +64,15 @@ public class InHotDockingTrussTask extends AbstractTask {
public void createCompletion(SchBaseTask task) { public void createCompletion(SchBaseTask task) {
TaskUtils.taskLock(RegionConstant.REGION_A1_HXZC + "5", () -> { TaskUtils.taskLock(RegionConstant.REGION_A1_HXZC + "5", () -> {
// 找个对接位(状态是空的,没有任务的) // 找个对接位(状态是空的,没有任务的)
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC, // List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC,
POINT_TYPE_HOT_DOCKING, POINT_STATUS_BINDING,"1"); // POINT_TYPE_HOT_DOCKING, POINT_STATUS_BINDING,"1");
if (endPoints.size() == 0) { // if (endPoints.size() == 0) {
throw new BadRequestException("没有可用的烘箱对接位!"); // throw new BadRequestException("没有可用的烘箱对接位!");
} // }
SchBasePoint endPoint = endPoints.get(0); String requestParam = task.getRequest_param();
task.setPoint_code2(endPoint.getPoint_code()); JSONObject requestObj = JSONObject.parseObject(requestParam);
String putCode = requestObj.getString("put_code");
task.setPoint_code2(putCode);
// 保存任务参数 // 保存任务参数
task.setHandle_class(THIS_CLASS); task.setHandle_class(THIS_CLASS);
task.setTask_status(TaskStatus.START_AND_POINT.getCode()); task.setTask_status(TaskStatus.START_AND_POINT.getCode());
@@ -74,12 +90,34 @@ public class InHotDockingTrussTask extends AbstractTask {
// 点位赋值。 // 点位赋值。
String endPointCode = taskObj.getPoint_code2(); String endPointCode = taskObj.getPoint_code2();
SchBasePoint endPoint = pointService.getById(endPointCode); SchBasePoint endPoint = pointService.getById(endPointCode);
endPoint.setMaterial_code(orderCode); //终点为对接位或者烘箱
endPoint.setVehicle_code(taskObj.getVehicle_code()); if (ObjectUtil.isNotEmpty(endPoint)){
//添加入库锁 endPoint.setMaterial_code(orderCode);
endPoint.setLock_type("2"); endPoint.setVehicle_code(taskObj.getVehicle_code());
PointUtils.setUpdateByType(endPoint, taskFinishedType); //添加入库锁
pointService.updateById(endPoint); endPoint.setLock_type("2");
endPoint.setPoint_status(PointStatusEnum.WAIT_BIND.getCode());
PointUtils.setUpdateByType(endPoint, taskFinishedType);
pointService.updateById(endPoint);
} else {
StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(endPointCode, false);
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
Assert.notNull(order, "工单不能为空!");
if (ObjectUtil.isNotEmpty(hotpointivt)) {
// 如果是烘箱位, 需要判断是做为暂存还是说进行暂存则状态为03暂存中
hotpointivt.setContainer_name(order.getContainer_name());
hotpointivt.setWorkorder_id(order.getWorkorder_id());
hotpointivt.setInstorage_time(DateUtil.now());
hotpointivt.setFull_vehicle_code(taskObj.getVehicle_code());
// 02烘烤中
hotpointivt.setPoint_status("02");
// todo: 更新温度和倒计时
setHxUpdateByType(hotpointivt, taskFinishedType);
hotpointivtService.updateById(hotpointivt);
}
}
// 完成 // 完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setFinished_type(taskFinishedType.getCode()); taskObj.setFinished_type(taskFinishedType.getCode());

View File

@@ -93,24 +93,7 @@ public class InHotTrussTask extends AbstractTask {
requestObj.put("baking_temperature", bakingTemperature); requestObj.put("baking_temperature", bakingTemperature);
requestObj.put("baking_time", order.getBaking_time()); requestObj.put("baking_time", order.getBaking_time());
// 如果需要烘烤, 先找对应点 // 如果需要烘烤, 先找对应点
List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "1","01"); List<StIvtHotpointivt> hotList = getStIvtHotpointivts(task, order, bakingTemperature);
if (hotList.size() > 0) {
List<StIvtHotpointivt> hotListFilter = multiFilter(hotList);
// 查找合适温度的点位
for (StIvtHotpointivt hotPoint : hotListFilter) {
String pointCode = hotPoint.getPoint_code();
String pointTemperature = (String) redisUtils.hget(pointCode, "temperature");
if (ObjectUtil.isNotEmpty(pointTemperature)) {
if (pointTemperature.equals(bakingTemperature)) {
task.setPoint_code2(pointCode);
break;
}
}
// 临时测试
// task.setPoint_code2(hotPoint.getPoint_code());
}
}
// 没有烘烤位置或者没有找到对应的点就区待烘烤区, 就去待烘烤 // 没有烘烤位置或者没有找到对应的点就区待烘烤区, 就去待烘烤
if (hotList.size() == 0 || ObjectUtil.isEmpty(task.getPoint_code2())) { if (hotList.size() == 0 || ObjectUtil.isEmpty(task.getPoint_code2())) {
// 找不到就去找暂存区(待烘烤区) // 找不到就去找暂存区(待烘烤区)
@@ -175,6 +158,51 @@ public class InHotTrussTask extends AbstractTask {
taskService.save(task); taskService.save(task);
} }
private List<StIvtHotpointivt> getStIvtHotpointivts(SchBaseTask task, PdmBiRawfoilworkorder order, String bakingTemperature) {
List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "1","01");
if (hotList.size() > 0) {
List<StIvtHotpointivt> hotListFilter = multiFilter(hotList);
// 查找合适温度的点位
for (StIvtHotpointivt hotPoint : hotListFilter) {
String pointCode = hotPoint.getPoint_code();
String pointTemperature = (String) redisUtils.hget(pointCode, "temperature");
if (ObjectUtil.isNotEmpty(pointTemperature)) {
if (pointTemperature.equals(bakingTemperature)) {
task.setPoint_code2(pointCode);
break;
}
}
}
}
return hotList;
}
/**
* 获取烘箱点位
*
* @return
*/
public String getStIvtHotpointivt(String rollType, String bakingTemperature) {
String poitnt = "";
List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(rollType, "1","01");
if (hotList.size() > 0) {
List<StIvtHotpointivt> hotListFilter = multiFilter(hotList);
// 查找合适温度的点位
for (StIvtHotpointivt hotPoint : hotListFilter) {
String pointCode = hotPoint.getPoint_code();
String pointTemperature = (String) redisUtils.hget(pointCode, "temperature");
if (ObjectUtil.isNotEmpty(pointTemperature)) {
if (pointTemperature.equals(bakingTemperature)) {
poitnt = pointCode;
break;
}
}
}
}
return poitnt;
}
private List<StIvtHotpointivt> multiFilter(List<StIvtHotpointivt> hotList) { private List<StIvtHotpointivt> multiFilter(List<StIvtHotpointivt> hotList) {
// 根据烘箱分组 // 根据烘箱分组
Map<String, List<StIvtHotpointivt>> stIvtHotListMap = hotList.stream().collect(Collectors.groupingBy(StIvtHotpointivt::getGroup_name)); Map<String, List<StIvtHotpointivt>> stIvtHotListMap = hotList.stream().collect(Collectors.groupingBy(StIvtHotpointivt::getGroup_name));

View File

@@ -31,6 +31,7 @@ import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
/** /**
* 出烘箱到对接位质检桁架任务 * 出烘箱到对接位质检桁架任务
*
* @Author: lyd * @Author: lyd
* @Date: 2024/9/6 * @Date: 2024/9/6
*/ */
@@ -46,6 +47,7 @@ public class OutHotToDockingTrussTask extends AbstractTask {
private ISchBaseTaskService taskService; private ISchBaseTaskService taskService;
@Autowired @Autowired
private IpdmBiRawfoilworkorderService rawfoilworkorderService; private IpdmBiRawfoilworkorderService rawfoilworkorderService;
@Override @Override
public void create() throws BadRequestException { public void create() throws BadRequestException {
@@ -54,15 +56,28 @@ public class OutHotToDockingTrussTask extends AbstractTask {
@Override @Override
public void createCompletion(SchBaseTask task) { public void createCompletion(SchBaseTask task) {
TaskUtils.taskLock(REGION_A1_HXZC + "5", () -> { TaskUtils.taskLock(REGION_A1_HXZC + "5", () -> {
// 从烘箱对接位中找一个空位 String region = RegionConstant.A1;
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC, String station = RegionConstant.REGION_A1_HXZC;
POINT_TYPE_HOT_DOCKING, POINT_STATUS_EMPTY,"1"); String status = POINT_STATUS_EMPTY;
if (endPoints.size() == 0) { String version = "1";
// 需要尝试的点位类型(按优先级排序:先找缓存架,再找对接位)
String[] pointTypes = {POINT_TYPE_HOT_FINISH, POINT_TYPE_HOT_DOCKING};
SchBasePoint endPoint = null;
for (String pointType : pointTypes) {
// 调用服务获取对应类型的空位
List<SchBasePoint> points = pointService.getHotNotTaskPoint2(region, station, pointType, status, version);
if (!points.isEmpty()) { // 找到非空集合,取第一个元素并退出循环
endPoint = points.get(0);
break;
}
}
// 两个类型都未找到可用点位,抛出异常
if (endPoint == null) {
throw new BadRequestException("没有可用的烘箱对接位!"); throw new BadRequestException("没有可用的烘箱对接位!");
} }
// 烘箱起点位置 // 烘箱起点位置
StIvtHotpointivt hotPoint = hotpointivtService.getPointByCode(task.getPoint_code1(), false); StIvtHotpointivt hotPoint = hotpointivtService.getPointByCode(task.getPoint_code1(), false);
SchBasePoint endPoint = endPoints.get(0);
String requestParam = task.getRequest_param(); String requestParam = task.getRequest_param();
JSONObject requestObj = JSONObject.parseObject(requestParam); JSONObject requestObj = JSONObject.parseObject(requestParam);
requestObj.put("workorder_id", hotPoint.getWorkorder_id()); requestObj.put("workorder_id", hotPoint.getWorkorder_id());
@@ -93,7 +108,12 @@ public class OutHotToDockingTrussTask extends AbstractTask {
endPoint.setMaterial_code(order.getContainer_name()); endPoint.setMaterial_code(order.getContainer_name());
endPoint.setVehicle_code(order.getWind_roll()); endPoint.setVehicle_code(order.getWind_roll());
endPoint.setSource_id(request.getString("workorder_id")); endPoint.setSource_id(request.getString("workorder_id"));
endPoint.setPoint_status(POINT_STATUS_WAIT_QUALITY); if (POINT_TYPE_HOT_DOCKING.equals(endPoint.getPoint_type())) {
endPoint.setPoint_status(POINT_STATUS_WAIT_QUALITY);
}
if (POINT_TYPE_HOT_FINISH.equals(endPoint.getPoint_type())) {
endPoint.setPoint_status(POINT_STATUS_WAIT_CUT);
}
PointUtils.setUpdateByType(endPoint, taskFinishedType); PointUtils.setUpdateByType(endPoint, taskFinishedType);
pointService.updateById(endPoint); pointService.updateById(endPoint);
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setTask_status(TaskStatus.FINISHED.getCode());

View File

@@ -1,9 +1,15 @@
package org.nl.wms.sch.task_manage.tasks.raw; package org.nl.wms.sch.task_manage.tasks.raw;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService; import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt; import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.ISchBasePointService;
@@ -22,7 +28,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import static org.nl.wms.util.PointUtils.clearPoint; import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.POINT_STATUS_WAIT_CUT;
import static org.nl.wms.util.PointUtils.*;
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
import static org.nl.wms.util.TaskUtils.setUpdateByPC; import static org.nl.wms.util.TaskUtils.setUpdateByPC;
@@ -50,6 +58,7 @@ public class RawCallRollTrussTask extends AbstractTask {
private RawDownAGVTask rawDownAGVTask; private RawDownAGVTask rawDownAGVTask;
@Resource @Resource
private IstIvtSbpointivtService stIvtSbpointivtService; private IstIvtSbpointivtService stIvtSbpointivtService;
@Override @Override
public void create() throws BadRequestException { public void create() throws BadRequestException {
} }
@@ -87,28 +96,14 @@ public class RawCallRollTrussTask extends AbstractTask {
setUpdateByPC(task); setUpdateByPC(task);
taskService.save(task); taskService.save(task);
log.info("任务创建成功:{}", task); log.info("任务创建成功:{}", task);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
checkTaskOptionStatus(taskObj);
// 完成任务1、清空起点数据2、创建AGV任务
JSONObject taskParam = new JSONObject(); JSONObject taskParam = new JSONObject();
String requestParam = taskObj.getRequest_param(); String requestParam = task.getRequest_param();
// 其中device_code代表AGV的终点生箔点位 // 其中device_code代表AGV的终点生箔点位
JSONObject requestObj = JSONObject.parseObject(requestParam); JSONObject requestObj = JSONObject.parseObject(requestParam);
String endAgvPoint = requestObj.getString("device_code"); String endAgvPoint = requestObj.getString("device_code");
String flag = requestObj.getString("is_flag"); String flag = requestObj.getString("is_flag");
// 1、清空起点数据 String putCode = requestObj.getString("put_code");
String startPoint = taskObj.getPoint_code1();
SchBasePoint startPointObj = pointService.getById(startPoint);
// 设置载具类型、点位状态、释放点位
if (ObjectUtil.isNotEmpty(startPointObj)) {
// 起点清空
clearPoint(startPointObj, taskFinishedType);
}
log.info("点位清除完毕,清除后的数据:{}", startPointObj);
if (NOT_AGV_TASK_FLAG.equals(flag)) { if (NOT_AGV_TASK_FLAG.equals(flag)) {
// 此功能留给手持人工需要单独叫收卷辊出来 // 此功能留给手持人工需要单独叫收卷辊出来
log.info("手持单独呼叫收卷辊不创建AGV任务!"); log.info("手持单独呼叫收卷辊不创建AGV任务!");
@@ -124,8 +119,9 @@ public class RawCallRollTrussTask extends AbstractTask {
taskParam.put("device_code", endAgvPoint); taskParam.put("device_code", endAgvPoint);
taskParam.put("is_flag", flag); taskParam.put("is_flag", flag);
taskParam.put("order_code", requestObj.getString("order_code")); taskParam.put("order_code", requestObj.getString("order_code"));
taskParam.put("start_point_code", taskObj.getPoint_code2()); taskParam.put("start_point_code", endPoint.getPoint_code());
taskParam.put("up_task_code", taskObj.getTask_code()); taskParam.put("up_task_code", "-");
taskParam.put("put_code", putCode);
taskParam.put("create_mode", GeneralDefinition.TASK_CREATION); taskParam.put("create_mode", GeneralDefinition.TASK_CREATION);
// 这里需要判断是否是送轴的任务 // 这里需要判断是否是送轴的任务
if (FOUR_POINT_TASK_FLAG.equals(flag)) { if (FOUR_POINT_TASK_FLAG.equals(flag)) {
@@ -139,6 +135,34 @@ public class RawCallRollTrussTask extends AbstractTask {
} }
} }
log.info("创建AGV任务的参数{}", taskParam); log.info("创建AGV任务的参数{}", taskParam);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
checkTaskOptionStatus(taskObj);
// 完成任务1、清空起点数据2、创建AGV任务
String requestParam = taskObj.getRequest_param();
// 其中device_code代表AGV的终点生箔点位
JSONObject requestObj = JSONObject.parseObject(requestParam);
String endAgvPoint = requestObj.getString("device_code");
String flag = requestObj.getString("is_flag");
// 1、清空起点数据
String startPoint = taskObj.getPoint_code1();
String endPoint = taskObj.getPoint_code2();
SchBasePoint startPointObj = pointService.getById(startPoint);
SchBasePoint endPointObj = pointService.getById(endPoint);
// 设置载具类型、点位状态、释放点位
if (ObjectUtil.isNotEmpty(startPointObj)) {
// 起点清空
clearPoint(startPointObj, taskFinishedType);
}
log.info("点位清除完毕,清除后的数据:{}", startPointObj);
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setFinished_type(taskFinishedType.getCode()); taskObj.setFinished_type(taskFinishedType.getCode());
TaskUtils.setUpdateByType(taskObj, taskFinishedType); TaskUtils.setUpdateByType(taskObj, taskFinishedType);

View File

@@ -69,7 +69,7 @@ public class RawDownAGVTask extends AbstractTask {
// 查找烘箱对接位可用的位置(没货、没任务、没禁用) // 查找烘箱对接位可用的位置(没货、没任务、没禁用)
List<SchBasePoint> hxPoints = pointService.getAllBusinessTaskPoint(A1, HX_REGION, POINT_TYPE_EMPTY, POINT_STATUS_EMPTY,null,null); List<SchBasePoint> hxPoints = pointService.getAllBusinessTaskPoint(A1, HX_REGION, POINT_TYPE_EMPTY, POINT_STATUS_EMPTY,null,null);
if (hxPoints.size() == 0) { if (hxPoints.size() == 0) {
throw new BadRequestException("烘箱没有可以用的对接位!"); throw new BadRequestException("烘箱对接位4状态不对");
} }
SchBasePoint hxPoint = hxPoints.get(0); SchBasePoint hxPoint = hxPoints.get(0);
// flag由上游标记用来判断创建四点还是两任务 // flag由上游标记用来判断创建四点还是两任务