From d8b66f0306ba21ebf9a3c3384ffd9b4cf530e8c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=97=AD=E6=98=8E=5C73939?= <739390650@QQ.COM> Date: Wed, 10 Sep 2025 10:43:03 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E8=BE=93=E9=80=81=E7=BA=BF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/acs/device/domain/Device.java | 41 ++++++++++-------- .../agv/ndctwo/AgvNdcTwoDeviceDriver.java | 3 +- .../BeltConveyorDeviceDriver.java | 42 +++++++++++++++++-- .../acs/ext/wms/data/CreateTaskRequest.java | 5 +++ .../wms/service/impl/WmsToAcsServiceImpl.java | 2 + .../java/org/nl/acs/opc/DeviceManageDto.java | 5 +++ .../java/org/nl/acs/task/domain/Task.java | 7 ++++ .../org/nl/acs/task/service/dto/TaskDto.java | 8 ++++ .../service/quartz/task/AutoCreateInst.java | 17 ++++++-- 9 files changed, 103 insertions(+), 27 deletions(-) diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/domain/Device.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/domain/Device.java index 143936d..194f3d5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/domain/Device.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/domain/Device.java @@ -113,70 +113,70 @@ public class Device implements Serializable { @TableField(exist = false) private String barrels_status; - + @TableId(type = IdType.ASSIGN_ID) private String device_id; - + @NotBlank private String device_code; - + @NotBlank private String device_name; - + private String device_type; - + private String region; - + private String manufacturer; - + private String manufacturer_phone; - + private String opc_server_id; - + private String opc_plc_id; - + @NotBlank private String is_route; - + private String driver_code; - + private String remark; - + @NotBlank private String is_active; - + @NotBlank private String is_delete; - + @NotBlank @TableField(fill = FieldFill.INSERT) private String create_by; - + @NotBlank @TableField(fill = FieldFill.INSERT) private String create_time; - + @TableField(fill = FieldFill.INSERT_UPDATE) private String update_by; - + private String address; @TableField(exist = false) @@ -190,6 +190,11 @@ public class Device implements Serializable { */ private String zh_device_name; + /** + * 出库任务数量 + */ + private Integer outbound_task_num; + /** * 设备英文名称 */ diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index a6cf94a..91bf3d9 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -17,7 +17,6 @@ import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.FeedLmsRealFailed; import org.nl.acs.device_driver.agv.utils.TwoAgvPhase; import org.nl.acs.device_driver.conveyor.belt_conveyor.BeltConveyorDeviceDriver; -import org.nl.acs.device_driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.conveyor.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.driver.AbstractDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; @@ -481,7 +480,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic map1.put("value", "2"); Map map2 = new HashMap(); map2.put("code", "to_target");//目标楼层从wms下发的参数字段取 - map2.put("value", "3"); + map2.put("value", task.getFloor_code()); list.add(map2); Map map3 = new HashMap(); map3.put("code", "to_task"); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java index 1506965..3bcaa84 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/belt_conveyor/BeltConveyorDeviceDriver.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -33,12 +34,14 @@ import org.nl.acs.rfid_manage.service.IbmVehicleRfidService; import org.nl.acs.rfid_manage.service.dao.BmVehicleRfid; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.utils.DeviceErrorUtil; import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; import org.nl.config.lucene.service.LuceneExecuteLogService; import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.system.service.param.ISysParamService; +import org.nl.system.service.user.dao.SysUser; import org.springframework.beans.factory.annotation.Autowired; import java.io.PrintWriter; @@ -108,7 +111,7 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements int move = 0; int last_move = 0; /** - * 托盘方向 + * 动作请求 */ int actionRequest = 0; int last_actionRequest = 0; @@ -318,8 +321,41 @@ public class BeltConveyorDeviceDriver extends AbstractOpcDeviceDriver implements } break; case 6: - //更新出库任务数 - log.info(this.device_code + ",运行中"); + // 更新出库任务数 + if (move == 1 && !requireSucess) { + synchronized(this) { // 添加同步锁 + if (!requireSucess) { // 双重检查锁定 + try { + // 1. 查询设备 + Device device = deviceAppService.findDeviceByCode(device_code); + + // 2. 更新任务数 + device.setOutbound_task_num(device.getOutbound_task_num() - 1); + + // 3. 保存更新(假设需要显式保存) + deviceservice.update(new UpdateWrapper() + .set("outbound_task_num",device.getOutbound_task_num()) + .eq("device_code",device.getDevice_code())); + + // 更新task的出库完成数 + TaskDto taskDto = new TaskDto(); + taskDto.setTask_id(instruction.getTask_id()); + taskDto.setOutbound_complete_flag(true); + taskserver.updateById(taskDto); + + // 5. 只有成功后才设置标记 + requireSucess = true; + + log.info(this.device_code + ",成功更新出库任务数"); + } catch (Exception e) { + // 处理异常,不设置成功标记 + log.error(this.device_code + ",更新出库任务数失败: {}", e.getMessage()); + } + } + } + } else { + log.info(this.device_code + ",运行中"); + } break; default: break; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java index c1f04f9..8883b3e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/CreateTaskRequest.java @@ -64,6 +64,11 @@ public class CreateTaskRequest extends BaseRequest { */ String remark; + /** + * 目标楼层 + */ + String floor_code; + /** * 扩展属性 */ diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 3b3e93c..2469054 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -112,6 +112,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String size = request.getSize(); String version = request.getVersion(); String bushing_num = request.getBushing_num(); + String floor_code = request.getFloor_code(); String storage_task_type = request.getDtl_type(); String agv_system_type = request.getAgv_system_type(); String remark = request.getRemark(); @@ -332,6 +333,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("size", JSONUtil.toJsonStr(size)); jo.put("version", JSONUtil.toJsonStr(version)); jo.put("bushing_num", JSONUtil.toJsonStr(bushing_num)); + jo.put("floor_code", JSONUtil.toJsonStr(floor_code)); if (!StrUtil.isEmpty(ext_task_id)) { jo.put("ext_task_id", ext_task_id); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceManageDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceManageDto.java index 30f34d3..b1e0d1e 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceManageDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/DeviceManageDto.java @@ -76,6 +76,11 @@ public class DeviceManageDto { */ private String barrels_status; + /** + * 出库任务数量 + */ + private Integer outbound_task_num; + private List extra = new LinkedList(); private String perfix; private Map extra_map = new LinkedHashMap(); diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java index c1e76c9..8021822 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/domain/Task.java @@ -51,6 +51,11 @@ public class Task extends CommonModel implements Serializable { private String vehicle_code2; + /** + * 出库完成标志 + */ + private Boolean outbound_complete_flag; + private String vehicle_type; @@ -257,6 +262,8 @@ public class Task extends CommonModel implements Serializable { */ private String class_type; + private String floor_code; + public void copyFrom(Task source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index 8a77885..4947445 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -370,4 +370,12 @@ public class TaskDto implements Serializable { * 15 RGV输送任务 */ private String class_type; + + private String floor_code; + + /** + * 出库完成标志 + */ + private Boolean outbound_complete_flag; + } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java index 645ca28..e794d5a 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java @@ -146,10 +146,6 @@ public class AutoCreateInst { log.info("当前输送线出入库信号不为出库"); continue; } - //满足出库,查询当前出库任务 -// int count = instructionService.queryInstructionCount(next_device_code); -// count = count + 1; -// beltConveyorDeviceDriver.writing("to_taskNum",count+""); } @@ -194,6 +190,19 @@ public class AutoCreateInst { try { instructionService.create(instdto); + + beltConveyorDeviceDriver = (BeltConveyorDeviceDriver) nextdevice.getDeviceDriver(); + //满足出库,查询当前出库任务,+1后返回给 + if (beltConveyorDeviceDriver.getType() == 2) { + synchronized (this) { + if (beltConveyorDeviceDriver.getType() == 2) { + //因为已经创建成功,因此这个时候可以+1了 + int count = instructionService.queryInstructionCount(next_device_code); + beltConveyorDeviceDriver.writing("to_taskNum", count + ""); + nextdevice.setOutbound_task_num(count); + } + } + } } catch (Exception e) { acsTask.setRemark(e.getMessage()); taskserver.updateByCodeFromCache(acsTask);