From 087b9f5f8e8d48b05fe201667fad7bb4ea8bf452 Mon Sep 17 00:00:00 2001
From: gongbaoxiong <751575283@qq.com>
Date: Tue, 14 Jan 2025 10:22:45 +0800
Subject: [PATCH] =?UTF-8?q?add:1=E3=80=81=E5=A2=9E=E5=8A=A0=E4=BB=BB?=
=?UTF-8?q?=E5=8A=A1=E6=9D=A1=E4=BB=B6=E6=90=9C=E7=B4=A2=EF=BC=9B=202?=
=?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E5=9B=BA=E5=8C=96=E5=87=BA=E8=B4=A7?=
=?UTF-8?q?=E5=8F=A3=E6=A0=A1=E9=AA=8C=EF=BC=8C=E6=8C=89=E4=BB=BB=E5=8A=A1?=
=?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=A1=BA=E5=BA=8F=E6=89=A7=E8=A1=8C=EF=BC=8C?=
=?UTF-8?q?=E5=BF=85=E9=A1=BB=E7=9A=84=E7=AD=89=E5=9B=BA=E5=8C=96=E5=AE=A4?=
=?UTF-8?q?=E5=87=BA=E5=8F=A3=E5=90=8E=E6=89=8D=E8=83=BD=E5=8F=AB=E6=96=99?=
=?UTF-8?q?=EF=BC=9B=203=E3=80=81=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8?=
=?UTF-8?q?=E4=BB=BB=E5=8A=A1=E9=94=81=EF=BC=8C=E5=A4=A9=E8=83=BD=E7=8E=B0?=
=?UTF-8?q?=E5=9C=BA=E8=B4=A7=E7=89=A9=E5=90=A8=E4=BD=8D=E8=BE=83=E5=A4=A7?=
=?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E7=A2=B0=E6=92=9E=E9=A3=8E=E9=99=A9?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lms/nladmin-system/nlsso-server/pom.xml | 6 +-
.../service/impl/SchBaseTaskServiceImpl.java | 40 +++-
.../task_manage/enums/PointStatusEnum.java | 2 +-
.../enums/TaskFinishedTypeEnum.java | 2 +-
.../task/tasks/auto/GHCMLTask.java | 67 ++++---
.../task/tasks/auto/GHCQLTask.java | 68 +++++--
.../task/tasks/auto/mapper/AutoMapper.java | 3 +-
.../task/tasks/auto/mapper/AutoMapper.xml | 8 +-
.../resources/config/application-dev-fabu.yml | 174 ++++++++++++++++++
.../main/resources/config/application-dev.yml | 11 +-
.../resources/config/application-prod.yml | 10 +
.../src/main/resources/config/application.yml | 4 +-
12 files changed, 334 insertions(+), 61 deletions(-)
create mode 100644 lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev-fabu.yml
diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml
index 17ab57b..07548c1 100644
--- a/lms/nladmin-system/nlsso-server/pom.xml
+++ b/lms/nladmin-system/nlsso-server/pom.xml
@@ -64,7 +64,11 @@
dynamic-tp-spring-boot-starter-adapter-webserver
1.1.7
-
+
+ org.redisson
+ redisson-spring-boot-starter
+ 3.16.4
+
org.springframework
spring-jdbc
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java
index 1a9816f..3dd79ef 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java
@@ -52,11 +52,13 @@ public class SchBaseTaskServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) {
String task_code = ObjectUtil.isNotEmpty(whereJson.get("task_code")) ? whereJson.get("task_code").toString() : null;
String vehicle_code = ObjectUtil.isNotEmpty(whereJson.get("vehicle_code")) ? whereJson.get("vehicle_code").toString() : null;
- String point_code = ObjectUtil.isNotEmpty(whereJson.get("point_code")) ? whereJson.get("point_code").toString() : null;
+ String point_code1 = ObjectUtil.isNotEmpty(whereJson.get("point_code1")) ? whereJson.get("point_code1").toString().trim() : null;
+ String point_code2 = ObjectUtil.isNotEmpty(whereJson.get("point_code2")) ? whereJson.get("point_code2").toString().trim() : null;
+ String config_code = ObjectUtil.isNotEmpty(whereJson.get("config_code")) ? whereJson.get("config_code").toString().trim() : null;
String begin_time = ObjectUtil.isNotEmpty(whereJson.get("begin_time")) ? whereJson.get("begin_time").toString() : null;
String end_time = ObjectUtil.isNotEmpty(whereJson.get("end_time")) ? whereJson.get("end_time").toString() : null;
String more_task_status = ObjectUtil.isNotEmpty(whereJson.get("more_task_status")) ? whereJson.get("more_task_status").toString() : null;
- List collect = ObjectUtil.isNotEmpty(more_task_status)?Arrays.stream(more_task_status.split(",")).collect(Collectors.toList()):null;
+ List collect = ObjectUtil.isNotEmpty(more_task_status) ? Arrays.stream(more_task_status.split(",")).collect(Collectors.toList()) : null;
String unFinished = null;
if (collect != null) {
if (collect.contains(TaskStatus.UNFINISHED.getCode())) {
@@ -65,17 +67,35 @@ public class SchBaseTaskServiceImpl extends ServiceImpl lam = new LambdaQueryWrapper<>();
- lam.eq(ObjectUtil.isNotEmpty(task_code), SchBaseTask::getTask_code, task_code)
- .eq(ObjectUtil.isNotEmpty(vehicle_code), SchBaseTask::getVehicle_code, vehicle_code)
- .eq(ObjectUtil.isNotEmpty(point_code), SchBaseTask::getPoint_code1, point_code)
- .ge(ObjectUtil.isNotEmpty(begin_time), SchBaseTask::getCreate_time, begin_time)
- .le(ObjectUtil.isNotEmpty(end_time), SchBaseTask::getCreate_time, end_time)
- .in(ObjectUtil.isNotEmpty(collect), SchBaseTask::getTask_status, collect)
- .le(ObjectUtil.isNotEmpty(unFinished), SchBaseTask::getTask_status, unFinished)
- .orderByDesc(SchBaseTask::getUpdate_time);
+ if (ObjectUtil.isNotEmpty(point_code1) || ObjectUtil.isNotEmpty(point_code2)) {
+ lam.and(r -> {
+ r.eq(ObjectUtil.isNotEmpty(point_code1), SchBaseTask::getPoint_code1, point_code1)
+ .or(ObjectUtil.isNotEmpty(point_code2), w -> w.eq(SchBaseTask::getPoint_code2, point_code2));
+ });
+ }
+ if (ObjectUtil.isNotEmpty(vehicle_code)) {
+ lam.eq(SchBaseTask::getVehicle_code, vehicle_code);
+ }
+ if (ObjectUtil.isNotEmpty(config_code)) {
+ lam.eq(SchBaseTask::getConfig_code, config_code);
+ }
+ if (ObjectUtil.isNotEmpty(begin_time)) {
+ lam.ge(SchBaseTask::getCreate_time, begin_time);
+ }
+ if (ObjectUtil.isNotEmpty(end_time)) {
+ lam.le(SchBaseTask::getCreate_time, end_time);
+ }
+ if (ObjectUtil.isNotEmpty(collect)) {
+ lam.in(SchBaseTask::getTask_status, collect);
+ }
+ if (ObjectUtil.isNotEmpty(unFinished)) {
+ lam.le(SchBaseTask::getTask_status, unFinished);
+ }
+ lam.orderByDesc(SchBaseTask::getUpdate_time);
IPage pages = new Page<>(page.getPage() + 1, page.getSize());
schBaseTaskMapper.selectPage(pages, lam);
return pages;
+
}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java
index 5b5c488..3e1307e 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/PointStatusEnum.java
@@ -5,7 +5,7 @@ import lombok.Getter;
/**
* @Author: lyd
- * @Description:
+ * @Description: 点位状态
* @Date: 2023/5/25
*/
@Getter
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java
index 9a31662..d39dc1d 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/enums/TaskFinishedTypeEnum.java
@@ -13,7 +13,7 @@ import lombok.Getter;
public enum TaskFinishedTypeEnum {
AUTO_ACS("1", "ACS自动完成"),
- MANUAL_PC("2", "PC手完成"),
+ MANUAL_PC("2", "PC手动完成"),
MANUAL_PDA("3", "PDA手持");
private final String code;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCMLTask.java
index 57dba19..4a85f5e 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCMLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCMLTask.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.dromara.dynamictp.common.util.StringUtil;
import org.nl.common.exception.BadRequestException;
@@ -31,17 +32,20 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.auto.mapper.AutoMapper;
import org.nl.wms.util.PointUtils;
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.stereotype.Component;
+import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
-import java.util.Objects;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @Author: lyd
- * @Description: 固化室出口出库任务
+ * @Description: 固化室满料->货架任务
* @Date: 2023/11/30
*/
@Slf4j
@@ -66,6 +70,8 @@ public class GHCMLTask extends AbstractTask {
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Autowired
private IPdmBdProductionProcessTrackingService processTrackingService;
+ @Resource
+ private RedissonClient redissonClient;
@Override
protected void create() throws BadRequestException {
@@ -73,30 +79,43 @@ public class GHCMLTask extends AbstractTask {
}
@Override
+ @SneakyThrows
protected void autoCreate() {
- // 自动创建任务
- // 寻找固化室满足出库的位置:有货
- List ghsExitList = autoMapper.getGHSExitMaterialList();
- AbstractTask task = taskFactory.getTask(TASK_CONFIG_CODE);
- ghsExitList.forEach(point -> {
- try {
- JSONObject param = new JSONObject();
- param.put("config_code", TASK_CONFIG_CODE);
- param.put("requestNo", "LMS" + IdUtil.simpleUUID());
- param.put("device_code", point.getPoint_code());
- param.put("vehicle_code", point.getVehicle_code());
- param.put("vehicle_type", point.getVehicle_type());
- param.put("create_mode", GeneralDefinition.AUTO_CREATION);
- SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getVehicleGroupInfo(
- point.getVehicle_code(),
- point.getVehicle_type(),
- GroupBindMaterialStatusEnum.BOUND.getValue());
- param.put("material_id", groupInfo.getMaterial_id());
- task.apply(param);
- } catch (Exception e) {
- log.error("{}创建任务失败{}{}", this.TASK_CONFIG_CODE, e, e.getMessage());
+ RLock lock = redissonClient.getLock(TASK_CONFIG_CODE);
+ boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
+ try {
+ if (tryLock) {
+ // 自动创建任务
+ // 寻找固化室满足出库的位置:有货
+ List ghsExitList = autoMapper.getGHSExitMaterialList();
+ AbstractTask task = taskFactory.getTask(TASK_CONFIG_CODE);
+ ghsExitList.forEach(point -> {
+ try {
+ JSONObject param = new JSONObject();
+ param.put("config_code", TASK_CONFIG_CODE);
+ param.put("requestNo", "LMS" + IdUtil.simpleUUID());
+ param.put("device_code", point.getPoint_code());
+ param.put("vehicle_code", point.getVehicle_code());
+ param.put("vehicle_type", point.getVehicle_type());
+ param.put("create_mode", GeneralDefinition.AUTO_CREATION);
+ SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getVehicleGroupInfo(
+ point.getVehicle_code(),
+ point.getVehicle_type(),
+ GroupBindMaterialStatusEnum.BOUND.getValue());
+ param.put("material_id", groupInfo.getMaterial_id());
+ task.apply(param);
+ } catch (Exception e) {
+ log.error("{}创建任务失败{}{}", this.TASK_CONFIG_CODE, e, e.getMessage());
+ }
+ });
+ } else {
+ log.info("GHCMLTask固化室满料->货架任务正在创建被锁住。");
}
- });
+ } finally {
+ if (tryLock) {
+ lock.unlock();
+ }
+ }
}
@Override
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCQLTask.java
index e25dc9c..9e766b8 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCQLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/GHCQLTask.java
@@ -6,7 +6,9 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.system.service.param.ISysParamService;
@@ -30,16 +32,21 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.auto.mapper.AutoMapper;
import org.nl.wms.util.PointUtils;
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.stereotype.Component;
+import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* @Author: lyd
- * @Description: 固化室出口叫料
+ * @Description: 固化室->固化室出口
* @Date: 2023/11/30
*/
@Slf4j
@@ -66,6 +73,8 @@ public class GHCQLTask extends AbstractTask {
private IPdmBdProductionProcessTrackingService processTrackingService;
@Autowired
private WmsToAcsService wmsToAcsService;
+ @Resource
+ private RedissonClient redissonClient;
@Override
protected void create() throws BadRequestException {
@@ -73,23 +82,50 @@ public class GHCQLTask extends AbstractTask {
}
@Override
+ @SneakyThrows
protected void autoCreate() {
- // 自动创建任务
- // 寻找出料中,并且出口没有锁住的点位
- List ghsExitList = autoMapper.getGHSExitAvailableList();
- AbstractTask task = taskFactory.getTask(TASK_CONFIG_CODE);
- ghsExitList.forEach(point -> {
- try {
- JSONObject param = new JSONObject();
- param.put("config_code", TASK_CONFIG_CODE);
- param.put("requestNo", "LMS" + IdUtil.simpleUUID());
- param.put("device_code", point.getPoint_code());
- param.put("create_mode", GeneralDefinition.AUTO_CREATION);
- task.apply(param);
- }catch (Exception e){
- log.error("{}创建任务失败{}{}",this.TASK_CONFIG_CODE,e,e.getMessage());
+ RLock lock = redissonClient.getLock(TASK_CONFIG_CODE);
+ boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
+ try {
+ if (tryLock) {
+ // 自动创建任务
+ // 寻找出料中,并且出口没有锁住的点位
+ Set ghsExitList = autoMapper.getGHSExitAvailableList();
+ if (ObjectUtils.isEmpty(ghsExitList)) {
+ return;
+ }
+ //过滤未完成的固化室出库任务的点位
+ List taskList = taskService.list(new LambdaQueryWrapper()
+ .in(SchBaseTask::getPoint_code1, ghsExitList)
+ .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
+ );
+ if (ObjectUtils.isNotEmpty(taskList)) {
+ taskList.stream().map(SchBaseTask::getPoint_code1).forEach(ghsExitList::remove);
+ }
+ if (ObjectUtils.isEmpty(ghsExitList)) {
+ return;
+ }
+ AbstractTask task = taskFactory.getTask(TASK_CONFIG_CODE);
+ ghsExitList.forEach(point -> {
+ try {
+ JSONObject param = new JSONObject();
+ param.put("config_code", TASK_CONFIG_CODE);
+ param.put("requestNo", "LMS" + IdUtil.simpleUUID());
+ param.put("device_code", point);
+ param.put("create_mode", GeneralDefinition.AUTO_CREATION);
+ task.apply(param);
+ } catch (Exception e) {
+ log.error("{}创建任务失败{}{}", this.TASK_CONFIG_CODE, e, e.getMessage());
+ }
+ });
+ } else {
+ log.info("GHCQLTask固化室->固化室出口任务正在创建被锁住。");
}
- });
+ } finally {
+ if (tryLock) {
+ lock.unlock();
+ }
+ }
}
@Override
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.java
index 091238c..aa90e78 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.java
@@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.task.tasks.auto.mapper;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import java.util.List;
+import java.util.Set;
/**
* @Author: lyd
@@ -11,7 +12,7 @@ import java.util.List;
*/
public interface AutoMapper {
- List getGHSExitAvailableList();
+ Set getGHSExitAvailableList();
List getGHSExitMaterialList();
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.xml
index 566ead4..3366446 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.xml
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/mapper/AutoMapper.xml
@@ -2,9 +2,9 @@
-