diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml index b1d5f4e..0350f23 100644 --- a/lms/nladmin-system/nlsso-server/pom.xml +++ b/lms/nladmin-system/nlsso-server/pom.xml @@ -291,9 +291,10 @@ org.quartz-scheduler quartz + com.yomahub - tlog-core + tlog-all-spring-boot-starter 1.5.0 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java index 14ddcca..af19bdd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java @@ -6,41 +6,90 @@ package org.nl.config.lucene; * @Date: 2023/8/25 */ public class LogMessageConstant { - /** */ - public final static String SORT_NAME = "time"; - /** 级别 */ + /** + * 标签 + */ + public final static String FIELD_LABEL = "label"; + /** + * 时间 + */ + public final static String FIELD_SORT_NAME = "time"; + /** + * IP + */ + public final static String FIELD_IP = "ip"; + /** + * 级别 + */ public final static String FIELD_LEVEL = "level"; - /** 时间 */ + /** + * 时间 + */ public final static String FIELD_TIMESTAMP = "timestamp"; - /** 类的限定名 */ + /** + * 类的限定名 + */ public final static String FIELD_CLASS_NAME = "logger"; - /** 线程名 */ + /** + * 线程名 + */ public final static String FIELD_THREAD = "thread"; - /** 日志内容 */ + /** + * 日志内容 + */ public final static String FIELD_MESSAGE = "message"; + /** + * tlogTraceId + */ public final static String FIELD_TRACEID = "tlogTraceId"; + /** + * api地址 + */ + public final static String API = "requestMethod"; // 定义颜色值 - /** 文本颜色:黑色 */ + /** + * 文本颜色:黑色 + */ public final static String COLOR_BLACK = "\u001B[30m"; - /** 文本颜色:红色 */ + /** + * 文本颜色:红色 + */ public final static String COLOR_RED = "\u001B[31m"; - /** 文本颜色:绿色 */ + /** + * 文本颜色:绿色 + */ public final static String COLOR_GREEN = "\u001B[32m"; - /** 文本颜色:黄色 */ + /** + * 文本颜色:黄色 + */ public final static String COLOR_YELLOW = "\u001B[33m"; - /** 文本颜色:蓝色 */ + /** + * 文本颜色:蓝色 + */ public final static String COLOR_BLUE = "\u001B[34m"; - /** 文本颜色:品红色 */ + /** + * 文本颜色:品红色 + */ public final static String COLOR_MAGENTA = "\u001B[35m"; - /** 文本颜色:青色 */ + /** + * 文本颜色:青色 + */ public final static String COLOR_CYAN = "\u001B[36m"; - /** 文本颜色:白色 */ + /** + * 文本颜色:白色 + */ public final static String COLOR_WHITE = "\u001B[37m"; - /** 文本颜色重置 */ + /** + * 文本颜色重置 + */ public final static String COLOR_RESET = "\u001B[0m"; - /** 背景颜色:黄色 */ + /** + * 背景颜色:黄色 + */ public final static String BACKGROUND_YELLOW = "\u001B[43m"; - /** 索引路径 */ - public final static String INDEX_DIR = "E:\\lucene\\index"; + /** + * 索引路径 + */ + public final static String INDEX_DIR = "D:\\software\\lucene\\index"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java index a4c204a..239557a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java @@ -8,8 +8,9 @@ package org.nl.config.lucene; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.ttl.TransmittableThreadLocal; -import org.apache.commons.lang3.StringUtils; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.*; import org.apache.lucene.index.IndexWriter; @@ -20,6 +21,8 @@ import org.nl.common.utils.YmlConfigFileUtil; import org.wltea.analyzer.lucene.IKAnalyzer; import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.nio.file.Paths; import java.util.List; import java.util.Map; @@ -34,7 +37,6 @@ public class LuceneAppender extends AppenderBase { public static IndexWriter indexWriter; - @Override public void start() { super.start(); @@ -44,7 +46,7 @@ public class LuceneAppender extends AppenderBase { // 获取配置值 String luceneDir = properties.getProperty("lucene.index.path"); - System.out.println("---index地址----"+luceneDir); + System.out.println("---index地址----" + luceneDir); index = FSDirectory.open(Paths.get(luceneDir)); // 初始化 Lucene 索引 Analyzer analyzer = new IKAnalyzer(); @@ -58,26 +60,47 @@ public class LuceneAppender extends AppenderBase { @Override protected void append(ILoggingEvent event) { + String message = event.getFormattedMessage(); + Map mdcPropertyMap = event.getMDCPropertyMap(); Document doc = new Document(); - for (Property property : this.properties.getProperties()) { - LucenePropertyAndEncoder encoder = new LucenePropertyAndEncoder(property, this.context); - String encode = encoder.encode(event); - doc.add(new StringField(property.getName(), encode, Field.Store.YES)); + long timeStamp = event.getTimeStamp(); + // 获取本机的IP地址 + String ipAddress = "-"; + try { + ipAddress = InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + throw new RuntimeException(e); } - Map map = event.getMDCPropertyMap(); - if (!map.isEmpty() && StringUtils.isNotEmpty(map.get("traceId"))){ - doc.add(new StringField("traceId",map.get("traceId"), Field.Store.YES)); - }else { - doc.add(new StringField("traceId"," ", Field.Store.YES)); + String formattedDateTime = DateUtil.format(new java.util.Date(timeStamp), "yyyy-MM-dd HH:mm:ss.SSS"); + doc.add(new LongPoint(LogMessageConstant.FIELD_SORT_NAME, timeStamp)); + doc.add(new NumericDocValuesField(LogMessageConstant.FIELD_SORT_NAME, timeStamp)); + doc.add(new StringField(LogMessageConstant.FIELD_LEVEL, event.getLevel().toString(), Field.Store.YES)); + doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime, Field.Store.YES)); + doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName())); + doc.add(new StoredField(LogMessageConstant.FIELD_IP, ipAddress)); + doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName())); + if (ObjectUtil.isNotEmpty(mdcPropertyMap)) { + String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID); + String api = mdcPropertyMap.get(LogMessageConstant.API); + doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, + ObjectUtil.isNotEmpty(traceId) + ? traceId + : "-" + , Field.Store.YES) + ); + doc.add(new StringField(LogMessageConstant.FIELD_LABEL, + ObjectUtil.isNotEmpty(mdcPropertyMap.get("tag_name")) + ? mdcPropertyMap.get("tag_name") + : "-" + , Field.Store.YES) + ); + doc.add(new StringField(LogMessageConstant.API, ObjectUtil.isNotEmpty(api) ? api : "-", Field.Store.YES)); } - - doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, event.getFormattedMessage(), Field.Store.YES)); - doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, String.valueOf(event.getTimeStamp()),Field.Store.YES)); - doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, event.getTimeStamp())); + doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES)); try { indexWriter.addDocument(doc); indexWriter.commit(); - } catch (Exception e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java new file mode 100644 index 0000000..e420c44 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java @@ -0,0 +1,166 @@ +package org.nl.config.lucene; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.document.Document; +import org.apache.lucene.index.DirectoryReader; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.Term; +import org.apache.lucene.queryparser.classic.QueryParser; +import org.apache.lucene.search.*; +import org.apache.lucene.store.Directory; +import org.apache.lucene.store.FSDirectory; +import org.apache.lucene.util.BytesRef; +import org.wltea.analyzer.lucene.IKAnalyzer; + +import java.io.IOException; +import java.nio.file.Paths; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.*; + +/** + * lucene查询器 + */ +@Slf4j +public class Searcher { + + public static Map search(String indexDir, JSONObject whereJson) throws Exception { + //获取要查询的路径,也就是索引所在的位置 + Directory dir = FSDirectory.open(Paths.get(indexDir)); + IndexReader reader = DirectoryReader.open(dir); + //构建IndexSearcher + IndexSearcher searcher = new IndexSearcher(reader); + //标准分词器,会自动去掉空格啊,is a the等单词 + Analyzer analyzer = new IKAnalyzer(true); + + // 实际上Lucene本身不支持分页。因此我们需要自己进行逻辑分页。我们要准备分页参数: + // 每页条数 + int pageSize = Integer.parseInt(whereJson.get("size").toString()); + // 当前页码 + int pageNum = Integer.parseInt(whereJson.get("page").toString()) - 1; + // 当前页的起始条数 + int start = pageNum * pageSize; + // 当前页的结束条数(不能包含) + int end = start + pageSize; + // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序 + Sort sort = new Sort(new SortField(LogMessageConstant.FIELD_SORT_NAME, SortField.Type.LONG, true)); + + TopDocs docs = null; + BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); + Calendar calendar = Calendar.getInstance(); + calendar.set(1970, 0, 1); + //时间范围查询 + JSONArray createTime = whereJson.getJSONArray("createTime"); + String startDate = DateUtil.format(calendar.getTime(), "yyyy-MM-dd HH:mm:ss.SSS"); + String endDate = DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"); + + if (createTime != null) { + startDate = createTime.getString(0); + endDate = createTime.getString(1); + } + // 字段之间的与或非关系,MUST表示and,MUST_NOT表示not,SHOULD表示or,有几个fields就必须有几个clauses + TermRangeQuery termRangeQuery = new TermRangeQuery("timestamp", new BytesRef(startDate), + new BytesRef(endDate), true, true); + booleanQueryBuilder.add(termRangeQuery, BooleanClause.Occur.MUST); + if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_MESSAGE))) { + //查询解析器 + QueryParser queryParser = new QueryParser("message", analyzer); + Query query = queryParser.parse("message:" + whereJson.getString("message") + "~"); + booleanQueryBuilder.add(query, BooleanClause.Occur.MUST); + } + if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_TRACEID))) { + //查询解析器 + TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_TRACEID, + whereJson.getString(LogMessageConstant.FIELD_TRACEID).trim())); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); + } + if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_LABEL))) { + //查询解析器 + TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_LABEL, + whereJson.getString(LogMessageConstant.FIELD_LABEL).trim())); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); + } + if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_LEVEL))) { + //查询解析器 + TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_LEVEL, + whereJson.get(LogMessageConstant.FIELD_LEVEL).toString())); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); + } + // 使用实体接收 + List list = new ArrayList<>(); + TopFieldCollector collector = TopFieldCollector.create(sort, 20000, 0); + searcher.search(booleanQueryBuilder.build(), collector); + docs = collector.topDocs(pageNum*pageSize, pageSize); + ScoreDoc[] scoreDocs = docs.scoreDocs; + int totalSize = collector.getTotalHits(); + + for (ScoreDoc scoreDoc : scoreDocs) { + Document doc = reader.document(scoreDoc.doc); + String logInfo = LogMessageConstant.COLOR_RED + doc.get(LogMessageConstant.FIELD_TIMESTAMP) + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_BLUE + doc.get(LogMessageConstant.FIELD_IP) + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_CYAN + doc.get(LogMessageConstant.API) + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_GREEN + "[" + doc.get(LogMessageConstant.FIELD_THREAD) + "]" + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_BLACK + doc.get(LogMessageConstant.FIELD_LEVEL) + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_MAGENTA + doc.get(LogMessageConstant.FIELD_CLASS_NAME) + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_GREEN + "<" + doc.get(LogMessageConstant.FIELD_TRACEID) + ">" + + LogMessageConstant.COLOR_RESET + " - " + + LogMessageConstant.COLOR_BLACK + highlightKeyword(doc.get(LogMessageConstant.FIELD_MESSAGE), whereJson.getString("message")); + list.add(logInfo); + } + reader.close(); + JSONObject jo = new JSONObject(); + jo.put("content", list); + jo.put("totalElements", totalSize); + return jo; + } + + public static String highlightKeyword(String text, String keyword) { + if (ObjectUtil.isEmpty(keyword)) { + return text; + } + + int startIndex = text.indexOf(keyword); + if (startIndex != -1) { + int endIndex = startIndex + keyword.length(); + String beforeKeyword = text.substring(0, startIndex); + String afterKeyword = text.substring(endIndex); + String highlightedKeyword = LogMessageConstant.BACKGROUND_YELLOW + keyword + LogMessageConstant.COLOR_RESET + + LogMessageConstant.COLOR_BLACK; + return beforeKeyword + highlightedKeyword + afterKeyword; + } else { + return text; + } + } + + public static void main(String[] args) throws IOException, ParseException { + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + // 减去七天 + LocalDateTime sevenDaysAgo = now.minus(7, ChronoUnit.DAYS); + // 转换为 Date 类型 + Date sevenDaysAgoDate = Date.from(sevenDaysAgo.atZone(ZoneId.systemDefault()).toInstant()); + // 获取时间戳 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"); + Date date = dateFormat.parse(String.valueOf(sevenDaysAgo)); + long timestamp = date.getTime(); + System.out.println(now); + System.out.println(sevenDaysAgo); + System.out.println(sevenDaysAgoDate); + System.out.println(timestamp); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java index 00c1bfe..2e3b017 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/ThreadPoolExecutorUtil.java @@ -17,6 +17,10 @@ package org.nl.config.thread; import org.nl.config.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -27,16 +31,21 @@ import java.util.concurrent.TimeUnit; * @author Zheng Jie * @date 2019年10月31日18:16:47 */ +@Configuration public class ThreadPoolExecutorUtil { - public static ThreadPoolExecutor getPoll(){ - AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); + @Autowired + private AsyncTaskProperties asyncTaskProperties; + + @Bean + @Primary + public ThreadPoolExecutor threadPoolExecutor() { return new ThreadPoolExecutor( - properties.getCorePoolSize(), - properties.getMaxPoolSize(), - properties.getKeepAliveSeconds(), + asyncTaskProperties.getCorePoolSize(), + asyncTaskProperties.getMaxPoolSize(), + asyncTaskProperties.getKeepAliveSeconds(), TimeUnit.SECONDS, - new ArrayBlockingQueue<>(properties.getQueueCapacity()), + new ArrayBlockingQueue<>(asyncTaskProperties.getQueueCapacity()), new TheadFactoryName() ); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structattr.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structattr.java index 232593c..5b66337 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structattr.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/Structattr.java @@ -1,5 +1,7 @@ package org.nl.wms.basedata_manage.service.dao; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -183,11 +185,13 @@ public class Structattr implements Serializable { /** * 存储载具号 */ + @TableField(updateStrategy = FieldStrategy.IGNORED) private String storagevehicle_code; /** * 存储载具类型 */ + @TableField(updateStrategy = FieldStrategy.IGNORED) private String storagevehicle_type; /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index 7f9824d..c0399be 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -420,13 +420,12 @@ public class StructattrServiceImpl extends ServiceImpl update = new UpdateWrapper() .set("frozen_qty", 0) - .set("qty", subtract) .set("update_time", now) .set("status", GROUP_PLATE_STATUS.code("出库")) .eq("group_id", vehicleMater.getGroup_id()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java index 5dbdd1c..e418f36 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/bigscreen_manage/service/impl/BigScreenServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; - import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dao.mapper.BsrealStorattrMapper; @@ -61,39 +60,41 @@ public class BigScreenServiceImpl implements BigScreenService { public List getData(List stors) { // String storCode = "GW"; List result = new ArrayList<>(); - if (CollectionUtils.isEmpty(stors)){ + if (CollectionUtils.isEmpty(stors)) { return result; } for (String storCode : stors) { JSONObject item = new JSONObject(); //1.【货位使用】数据 - item.put("title",storCode+"仓库"); + item.put("title", storCode + "仓库"); item.put("pointUse", pointUse(storCode)); // //2.【实时库存分析】数据 item.put("ivtAnalyse", ivtAnalyse(storCode)); - //3.【出入库趋势】数据 + //3.【出入库趋势】数据 item.put("inAndOutTrend", inAndOutTrend(storCode)); // //4.【今日出入库】数据 item.put("toDayInAndOut", toDayInAndOut(storCode)); // //5.【今日出入库】数据 item.put("realTask", realTask(storCode)); - //6.【未完成单据】数据 + //6.【未完成单据】数据 item.put("unIos", unIos(storCode)); result.add(item); } return result; } + /** -// -// * 货位使用 -// * -// * @return JSONObject { -// * total_qty: 总货位数 -// * use_qty: 已用货位 -// * emp_qty: 空余货位 -// * use_percentage: 百分比(使用货位百分比) -// * } -// */ + * // + * // * 货位使用 + * // * + * // * @return JSONObject { + * // * total_qty: 总货位数 + * // * use_qty: 已用货位 + * // * emp_qty: 空余货位 + * // * use_percentage: 百分比(使用货位百分比) + * // * } + * // + */ private JSONObject pointUse(String storCode) { // 返回数据 JSONObject result = new JSONObject(); @@ -120,7 +121,7 @@ public class BigScreenServiceImpl implements BigScreenService { result.put("emp_qty", emp_qty); // 使用货位百分比 double use_percentage = 0; - if (total_qty != 0){ + if (total_qty != 0) { use_percentage = NumberUtil.mul(NumberUtil.div(use_qty, total_qty), 100); } result.put("use_percentage", NumberUtil.round(use_percentage, 2)); @@ -148,21 +149,23 @@ public class BigScreenServiceImpl implements BigScreenService { int i = 0; int top5 = 0; for (IvtAnalyse json : list) { - if (i==5){break;} + if (i == 5) { + break; + } JSONObject item = new JSONObject(); item.put("ivt_qty", json.getSum_qty()); item.put("material_name", json.getMaterial_name()); - double percentage = NumberUtil.mul(json.getSum_qty()/sum, 100); + double percentage = NumberUtil.mul(sum == 0 ? 0 : json.getSum_qty() / sum, 100); item.put("percentage", NumberUtil.round(percentage, 2)); topFiveList.add(item); i++; - top5 = top5+json.getSum_qty(); + top5 = top5 + json.getSum_qty(); } - if (sum>top5){ + if (sum > top5) { JSONObject other = new JSONObject(); - other.put("ivt_qty", sum-top5); + other.put("ivt_qty", sum - top5); other.put("material_name", "其他物料"); - other.put("percentage", NumberUtil.round(1-top5/sum, 2)); + other.put("percentage", NumberUtil.round(sum == 0 ? 0 : 1 - top5 / sum, 2)); topFiveList.add(other); } result.put("data", topFiveList); @@ -318,7 +321,7 @@ public class BigScreenServiceImpl implements BigScreenService { new QueryWrapper().lambda() .le(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) - .ge(SchBaseTask::getCreate_time,DateUtil.today()) + .ge(SchBaseTask::getCreate_time, DateUtil.today()) ); list.stream().forEach(item -> { item.setTask_status(TaskStatus.convertName(item.getTask_status())); @@ -342,7 +345,7 @@ public class BigScreenServiceImpl implements BigScreenService { .ne(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) ); list.stream().forEach(item -> { - item.setIo_type(item.getIo_type().equals(IOSEnum.IO_TYPE.code("入库"))?"入库":"出库"); + item.setIo_type(item.getIo_type().equals(IOSEnum.IO_TYPE.code("入库")) ? "入库" : "出库"); if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))) { item.setBill_status("生成"); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/util/MesUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/util/MesUtil.java new file mode 100644 index 0000000..e44b7c2 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/util/MesUtil.java @@ -0,0 +1,65 @@ +package org.nl.wms.ext_manage.util; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.config.SpringContextHolder; +import org.nl.wms.ext_manage.service.util.AcsResponse; +import org.nl.wms.system_manage.enums.SysParamConstant; +import org.nl.wms.system_manage.service.param.dao.Param; +import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; +import org.nl.wms.warehouse_manage.enums.IOSConstant; + +/** + * @Author: lyd + * @Date: 2025/7/30 + */ +@Slf4j +public class MesUtil { + /** + * 下发任务 + * @param api mes地址 + * @param param 下发参数 + * @return AcsResponse + */ + public static AcsResponse notifyMes(String api, T param) { + log.info("下发MES的参数为:-------------------" + param.toString()); + // 返回参数 + AcsResponse resultAcs; + // 系统参数类 + SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); + //判断是否连接MES系统 + Param isConnectMes = sysParamService.findByCode(SysParamConstant.IS_CONNECT_MES); + if (ObjectUtil.isEmpty(isConnectMes)) { + return AcsResponse.requestError("系统参数表中:" + SysParamConstant.IS_CONNECT_MES + "不存在"); + } + if (isConnectMes.getValue().equals(IOSConstant.IS_DELETE_NO)) { + return AcsResponse.requestOkMessage("下发成功,未连接MES系统!"); + } + + //MES地址 + Param acsUrlParam = sysParamService.findByCode(SysParamConstant.MES_URL); + if (ObjectUtil.isEmpty(acsUrlParam)) { + return AcsResponse.requestError("系统参数表中:" + SysParamConstant.MES_URL + "不存在"); + } + + String url = acsUrlParam.getValue() + api; + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(param)) + .execute().body(); + // 格式转换 + JSONObject result = JSONObject.parseObject(resultMsg); + resultAcs = JSONObject.toJavaObject(result, AcsResponse.class); + + log.info("下发MES任务的输出参数为:-------------------" + resultMsg); + } catch (Exception e) { + //网络不通 + String msg = e.getMessage(); + log.error("连接失败:{}", msg); + return AcsResponse.requestError("网络不通,操作失败!"); + } + return resultAcs; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/controller/PdaJBController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/controller/PdaJBController.java index 6579d56..b6292a1 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/controller/PdaJBController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/controller/PdaJBController.java @@ -68,4 +68,40 @@ public class PdaJBController { public ResponseEntity jbReturnMaterial(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(pdaJBService.jbReturnMaterial(whereJson), HttpStatus.OK); } + @PostMapping("/jbGetVehicleCode") + @Log("获取解包点位的托盘编码") + @SaIgnore + public ResponseEntity jbGetVehicleCode(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaJBService.jbGetVehicleCode(whereJson), HttpStatus.OK); + } + @PostMapping("/jbGetLtInfo") + @Log("获取料桶组盘信息") + @SaIgnore + public ResponseEntity jbGetLtInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaJBService.jbGetLtInfo(whereJson), HttpStatus.OK); + } + @PostMapping("/jbEmptyTakeOut") + @Log("空桶取出") + @SaIgnore + public ResponseEntity jbEmptyTakeOut(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaJBService.jbEmptyTakeOut(whereJson), HttpStatus.OK); + } + @PostMapping("/getAllIntoRegionMembers") + @Log("获取所有区域成员") + @SaIgnore + public ResponseEntity getAllIntoRegionMembers(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaJBService.getAllIntoRegionMembers(whereJson), HttpStatus.OK); + } + @PostMapping("/intoRegion") + @Log("进入区域") + @SaIgnore + public ResponseEntity intoRegion(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaJBService.intoRegion(whereJson), HttpStatus.OK); + } + @PostMapping("/outRegion") + @Log("出去区域") + @SaIgnore + public ResponseEntity outRegion(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaJBService.outRegion(whereJson), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/GroupInfoPdaVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/GroupInfoPdaVo.java new file mode 100644 index 0000000..92bec2a --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/GroupInfoPdaVo.java @@ -0,0 +1,23 @@ +package org.nl.wms.pda_manage.sch_manage.service; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Author: lyd + * @Date: 2025/8/1 + */ +@Data +public class GroupInfoPdaVo implements Serializable { + private String storagevehicle_code; + private String pcsn; + private BigDecimal qty; + private String qty_unit_name; + private String supp_name; + private String material_code; + private String material_name; + private String material_spec; + private String material_model; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaJBService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaJBService.java index 64b3ab4..7819db0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaJBService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaJBService.java @@ -36,4 +36,26 @@ public interface PdaJBService { * @return */ PdaResponse jbReturnMaterial(JSONObject param); + + PdaResponse jbGetVehicleCode(JSONObject param); + + PdaResponse jbGetLtInfo(JSONObject param); + + PdaResponse jbEmptyTakeOut(JSONObject param); + + /** + * + * @param whereJson + * @return + */ + PdaResponse getAllIntoRegionMembers(JSONObject whereJson); + + /** + * 进入区域 + * @param param + * @return + */ + PdaResponse intoRegion(JSONObject param); + + PdaResponse outRegion(JSONObject param); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java index 7983a27..5c50d31 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaJBServiceImpl.java @@ -21,16 +21,21 @@ import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; import org.nl.wms.basedata_manage.service.dao.Sectattr; import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.pda_manage.sch_manage.service.GroupInfoPdaVo; import org.nl.wms.pda_manage.sch_manage.service.PdaJBService; import org.nl.wms.pda_manage.sch_manage.service.mapper.PdaJBMapper; import org.nl.wms.pda_manage.util.PdaResponse; import org.nl.wms.pm_manage.service.IPdmBdWorkorderService; import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder; +import org.nl.wms.record_manage.service.IMdPbRegionMemberService; +import org.nl.wms.record_manage.service.dao.MdPbRegionMember; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.util.tasks.jb.JbUpAgvTask; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; +import org.nl.wms.system_manage.service.param.ISysParamService; +import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService; @@ -57,6 +62,8 @@ import java.util.*; @Service @Slf4j public class PdaJBServiceImpl implements PdaJBService { + /** 解包重量误差范围值 */ + public static final String JB_STANDARD_ERROR = "JB_STANDARD_ERROR"; @Autowired private PdaJBMapper pdaJBMapper; @Autowired @@ -89,6 +96,10 @@ public class PdaJBServiceImpl implements PdaJBService { private IInBillService inBillService; @Resource private IMdPbStoragevehicleinfoService storagevehicleinfoService; + @Resource + private ISysParamService sysParamService; + @Resource + private IMdPbRegionMemberService regionMemberService; @Override public PdaResponse getOrderList(JSONObject whereJson) { String flag = whereJson.getString("flag"); @@ -209,10 +220,25 @@ public class PdaJBServiceImpl implements PdaJBService { @Override public PdaResponse getWeight(JSONObject whereJson) { // todo: 调用acs获取 + String currentUserId = SecurityUtils.getCurrentUserId(); + String pointCode = whereJson.getString("point_code"); + String workorder_id = whereJson.getString("workorder_id"); + Param param = sysParamService.findByCode(JB_STANDARD_ERROR); + if (ObjectUtil.isEmpty(param)) { + throw new BadRequestException("请先定义 " + JB_STANDARD_ERROR + " 系统参数!"); + } JSONObject res = new JSONObject(); res.put("weight", "999.99"); - res.put("flag", "2"); - res.put("message", "重量误差过大,请注意!"); + res.put("flag", "1"); + res.put("message", "重量误差范围正常!"); + PdmBdWorkorder workorder = workorderService.getById(workorder_id); + res.put("org_weight", workorder.getPlan_weight()); + res.put("stand_error", param.getValue()); + if (workorder.getPlan_weight().subtract(BigDecimal.valueOf(999.99)) + .abs().compareTo(new BigDecimal(param.getValue().trim())) > 0) { + res.put("flag", "2"); + res.put("message", "重量误差过大,请注意!"); + } return PdaResponse.requestParamOk(res); } @@ -404,6 +430,9 @@ public class PdaJBServiceImpl implements PdaJBService { structattr.setStoragevehicle_code(groupPlate.getStoragevehicle_code()); structattr.setStoragevehicle_type(vehicleInfo.getStoragevehicle_type()); structattr.setOccupancy_state(3); + structattr.setUpdate_id(currentUserId); + structattr.setUpdate_name(nickName); + structattr.setUpdate_time(now); structattrService.updateById(structattr); // 1.4 组盘设置入库 @@ -507,6 +536,117 @@ public class PdaJBServiceImpl implements PdaJBService { return PdaResponse.requestOk(); } + @Override + public PdaResponse jbGetVehicleCode(JSONObject param) { + String pointCode = param.getString("point_code"); + SchBasePoint device = pointService.getById(pointCode); + // 获取对应区域的点位 + SchBasePoint tPPoint = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getRegion_code, device.getRegion_code()) + .eq(SchBasePoint::getParent_point_code, device.getPoint_code()) + .eq(SchBasePoint::getPoint_type, "3")); + SchBasePoint ltPoint = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getRegion_code, device.getRegion_code()) + .eq(SchBasePoint::getParent_point_code, device.getPoint_code()) + .eq(SchBasePoint::getPoint_type, "2")); + JSONObject res = new JSONObject(); + res.put("tp_code", tPPoint.getVehicle_code()); + res.put("lt_code", ltPoint.getVehicle_code()); + return PdaResponse.requestParamOk(res); + } + + @Override + public PdaResponse jbGetLtInfo(JSONObject param) { + String vehicleCode = param.getString("vehicle_code"); + List groups = pdaJBMapper.getGroupInfoByVehicle(vehicleCode, "01"); + if (groups.size() > 1) { + throw new BadRequestException("组盘信息错误!"); + } + return PdaResponse.requestParamOk(groups.size() > 0 ? groups.get(0) : null); + } + + @Override + public PdaResponse jbEmptyTakeOut(JSONObject param) { + String pointCode = param.getString("point_code"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + JSONObject res = doCheckStruct(pointCode); + if ("2".equals(res.getString("flag"))) { + throw new BadRequestException(res.getString("message")); + } + Structattr structattr = structattrService.getByCode(pointCode); + if (ObjectUtil.isEmpty(structattr)) { + throw new BadRequestException("仓位:" + pointCode + " 不存在!"); + } + // 1.3 仓位赋值 + structattr.setStoragevehicle_code(null); + structattr.setStoragevehicle_type(null); + structattr.setOccupancy_state(1); + structattr.setUpdate_id(currentUserId); + structattr.setUpdate_name(nickName); + structattr.setUpdate_time(now); + structattrService.updateById(structattr); + return PdaResponse.requestOk(); + } + + @Override + public PdaResponse getAllIntoRegionMembers(JSONObject whereJson) { + String regionCode = whereJson.getString("region_code"); + List list = regionMemberService.list(new LambdaQueryWrapper() + .eq(MdPbRegionMember::getRecord_status, "1") + .eq(MdPbRegionMember::getRegion_code, regionCode)); + return PdaResponse.requestParamOk(list); + } + + @Override + public PdaResponse intoRegion(JSONObject param) { + String regionCode = param.getString("region_code"); + String nickname = param.getString("nickname"); + MdPbRegionMember pbRegionMember = regionMemberService.getOne(new LambdaQueryWrapper() + .eq(MdPbRegionMember::getRegion_code, regionCode) + .eq(MdPbRegionMember::getInto_member, nickname) + .eq(MdPbRegionMember::getRecord_status, "1"), false); + if (ObjectUtil.isNotEmpty(pbRegionMember)) { + throw new BadRequestException("您已经记录进入该区域,请勿多次进入!"); + } + MdPbRegionMember regionMember = new MdPbRegionMember(); + regionMember.setRecord_id(IdUtil.getStringId()); + regionMember.setInto_member(nickname); + regionMember.setIn_time(DateUtil.now()); + regionMember.setRecord_status("1"); + regionMember.setRegion_code(regionCode); + regionMemberService.save(regionMember); + return PdaResponse.requestOk(); + } + + @Override + public PdaResponse outRegion(JSONObject param) { + // region_code、nickname、rows + String regionCode = param.getString("region_code"); + String nickname = param.getString("nickname"); + JSONArray rows = param.getJSONArray("rows"); + List memberRecords; + if (rows.size() > 0) { + memberRecords = rows.toJavaList(MdPbRegionMember.class); + } else { + // 更新自身 + memberRecords = regionMemberService.list(new LambdaQueryWrapper() + .eq(MdPbRegionMember::getRecord_status, "1") + .eq(MdPbRegionMember::getInto_member, nickname) + .eq(MdPbRegionMember::getRegion_code, regionCode)); + } + memberRecords.forEach(m -> { + m.setOut_time(DateUtil.now()); + m.setOperate_name(nickname); + m.setRecord_status("2"); + }); + if (memberRecords.size() > 0) { + regionMemberService.updateBatchById(memberRecords); + } + return PdaResponse.requestOk(); + } + private Map buildTaskData(String pointCode, String workorderId, String invId) { Map jsonMst = new HashMap<>(); // ru库点 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.java index 4fbe62e..a939a58 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.java @@ -1,6 +1,7 @@ package org.nl.wms.pda_manage.sch_manage.service.mapper; import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.pda_manage.sch_manage.service.GroupInfoPdaVo; import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder; import org.nl.wms.sch_manage.service.dao.SchBasePoint; @@ -28,4 +29,12 @@ public interface PdaJBMapper { * @return */ List getCanUseCFGJ(PdmBdWorkorder workorder, String pointStatus); + + /** + * 获取组盘信息 + * @param vehicleCode 托盘 + * @param groupStatus 状态 + * @return + */ + List getGroupInfoByVehicle(String vehicleCode, String groupStatus); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml index 837454f..3296279 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/mapper/PdaJBMapper.xml @@ -37,4 +37,21 @@ OR t.point_code4 = p.point_code )) + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/util/PdaResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/util/PdaResponse.java index 4eb7871..c92f9e5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/util/PdaResponse.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/util/PdaResponse.java @@ -17,6 +17,7 @@ import org.nl.common.base.TableDataInfo; @Data @Builder public class PdaResponse { + private String code; /** * 信息 @@ -34,6 +35,7 @@ public class PdaResponse { */ public static PdaResponse requestOk() { return PdaResponse.builder() + .code("200") .message("操作成功!") .build(); } @@ -44,6 +46,7 @@ public class PdaResponse { */ public static PdaResponse requestParamOk(T data) { return PdaResponse.builder() + .code("200") .message("操作成功!") .data(data) .build(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/controller/MdPbRegionMemberController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/controller/MdPbRegionMemberController.java new file mode 100644 index 0000000..6a7eefb --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/controller/MdPbRegionMemberController.java @@ -0,0 +1,59 @@ +package org.nl.wms.record_manage.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.record_manage.service.IMdPbRegionMemberService; +import org.nl.wms.record_manage.service.dao.MdPbRegionMember; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** +* @author liyd +* @date 2025-08-01 +**/ +@Slf4j +@RestController +@RequestMapping("/api/mdPbRegionMember") +public class MdPbRegionMemberController { + + @Autowired + private IMdPbRegionMemberService mdPbRegionMemberService; + + @GetMapping + @Log("查询管控区域记录") + //@SaCheckPermission("mdPbRegionMember:list") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(mdPbRegionMemberService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增管控区域记录") + //@SaCheckPermission("mdPbRegionMember:add") + public ResponseEntity create(@Validated @RequestBody MdPbRegionMember entity){ + mdPbRegionMemberService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改管控区域记录") + //@SaCheckPermission("mdPbRegionMember:edit") + public ResponseEntity update(@Validated @RequestBody MdPbRegionMember entity){ + mdPbRegionMemberService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除管控区域记录") + //@SaCheckPermission("mdPbRegionMember:del") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + mdPbRegionMemberService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/IMdPbRegionMemberService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/IMdPbRegionMemberService.java new file mode 100644 index 0000000..6c7be7f --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/IMdPbRegionMemberService.java @@ -0,0 +1,43 @@ +package org.nl.wms.record_manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.record_manage.service.dao.MdPbRegionMember; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author liyd +* @date 2025-08-01 +**/ +public interface IMdPbRegionMemberService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(MdPbRegionMember entity); + + /** + * 编辑 + * @param entity / + */ + void update(MdPbRegionMember entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/MdPbRegionMember.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/MdPbRegionMember.java new file mode 100644 index 0000000..2596417 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/MdPbRegionMember.java @@ -0,0 +1,46 @@ +package org.nl.wms.record_manage.service.dao; + + import com.baomidou.mybatisplus.annotation.IdType; + import com.baomidou.mybatisplus.annotation.TableId; + import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author liyd +* @date 2025-08-01 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_pb_region_member") +public class MdPbRegionMember implements Serializable { + +private static final long serialVersionUID = 1L; + + @TableId(value = "record_id", type = IdType.NONE) + /** 记录id */ + private String record_id; + + /** 进入成员 */ + private String into_member; + + /** 进入时间 */ + private String in_time; + + /** 状态:1进去,2出去 */ + private String record_status; + + /** 出去时间 */ + private String out_time; + + /** 管控区域 */ + private String region_code; + + /** 操作人员 */ + private String operate_name; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/mapper/MdPbRegionMemberMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/mapper/MdPbRegionMemberMapper.java new file mode 100644 index 0000000..e4766f7 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/mapper/MdPbRegionMemberMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.record_manage.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.record_manage.service.dao.MdPbRegionMember; + +/** +* @author liyd +* @date 2025-08-01 +**/ +public interface MdPbRegionMemberMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/mapper/MdPbRegionMemberMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/mapper/MdPbRegionMemberMapper.xml new file mode 100644 index 0000000..483a65b --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dao/mapper/MdPbRegionMemberMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dto/MdPbRegionMemberDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dto/MdPbRegionMemberDto.java new file mode 100644 index 0000000..56565cb --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dto/MdPbRegionMemberDto.java @@ -0,0 +1,36 @@ +package org.nl.wms.record_manage.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author liyd +* @date 2025-08-01 +**/ +@Data +public class MdPbRegionMemberDto implements Serializable { + + /** 记录id */ + private String record_id; + + /** 进入成员 */ + private String member; + + /** 进入时间 */ + private String in_time; + + /** 状态:1进去,2出去 */ + private String record_status; + + /** 出去时间 */ + private String out_time; + + /** 管控区域 */ + private String region_code; + + /** 操作人员 */ + private String operate_name; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dto/MdPbRegionMemberQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dto/MdPbRegionMemberQuery.java new file mode 100644 index 0000000..857f8bd --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/dto/MdPbRegionMemberQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.record_manage.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.record_manage.service.dao.MdPbRegionMember; + +/** +* @author liyd +* @date 2025-08-01 +**/ +public class MdPbRegionMemberQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/impl/MdPbRegionMemberServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/impl/MdPbRegionMemberServiceImpl.java new file mode 100644 index 0000000..36926da --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/record_manage/service/impl/MdPbRegionMemberServiceImpl.java @@ -0,0 +1,63 @@ +package org.nl.wms.record_manage.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.config.language.LangProcess; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.record_manage.service.IMdPbRegionMemberService; +import org.nl.wms.record_manage.service.dao.mapper.MdPbRegionMemberMapper; +import org.nl.wms.record_manage.service.dao.MdPbRegionMember; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author liyd +* @date 2025-08-01 +**/ +@Slf4j +@Service +public class MdPbRegionMemberServiceImpl extends ServiceImpl implements IMdPbRegionMemberService { + + @Autowired + private MdPbRegionMemberMapper mdPbRegionMemberMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + mdPbRegionMemberMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(MdPbRegionMember entity) { + entity.setRecord_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + mdPbRegionMemberMapper.insert(entity); + } + + @Override + public void update(MdPbRegionMember entity) { + MdPbRegionMember dto = mdPbRegionMemberMapper.selectById(entity.getRecord_id()); + if (dto == null) throw new BadRequestException(LangProcess.msg("error_SystemAuthError")); + mdPbRegionMemberMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + mdPbRegionMemberMapper.deleteBatchIds(ids); + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java index 0354f30..a591eba 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java @@ -3,24 +3,21 @@ package org.nl.wms.sch_manage.service.util; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.system_manage.enums.TagNameEnum; import org.nl.wms.warehouse_manage.enums.IOSConstant; -import org.redisson.api.RLock; -import org.redisson.api.RedissonClient; +import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; -import java.util.concurrent.TimeUnit; @Slf4j @Component -@RequiredArgsConstructor public class AutoTask { /** @@ -35,21 +32,12 @@ public class AutoTask { @Autowired private TaskFactory taskFactory; - private final RedissonClient redissonClient; - //定时任务 @SneakyThrows public void run() { - RLock lock = redissonClient.getLock(this.getClass().getName()); - boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); - try { - if (tryLock) { - sendTask(); - } - } catch (Exception e) { - if (tryLock) { - lock.unlock(); - } - } + MDC.put(TagNameEnum.TAG_NAME.getTag(), TagNameEnum.AUTO_TASK_SEND.getTag()); + log.info("定时器正在执行下发任务调度..."); + sendTask(); + log.info("定时器执行下发任务调度结束..."); } /** @@ -58,7 +46,8 @@ public class AutoTask { private void sendTask() { List taskList = taskService.list(new LambdaQueryWrapper() .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) - .eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode())); + .eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode()) + .orderByAsc(SchBaseTask::getTask_group_seq)); if (ObjectUtil.isEmpty(taskList)) { return; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java index 54cc93b..b1db846 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/controller/lucence/LuceneLogController.java @@ -1,6 +1,8 @@ package org.nl.wms.system_manage.controller.lucence; import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; import org.nl.wms.system_manage.service.logserver.LogQuery; @@ -16,9 +18,9 @@ import org.springframework.web.bind.annotation.*; * @date 2023年01月29日 18:55 * @desc desc */ - @RestController -@RequestMapping("/api/esLog") +@RequiredArgsConstructor +@RequestMapping("/api/lucene") @Slf4j public class LuceneLogController { @@ -26,44 +28,13 @@ public class LuceneLogController { private LuceneLogService luceneLogService; - @GetMapping("/labels/{type}") - //("获取标签") - public ResponseEntity labelsValues(@PathVariable String type) { - return new ResponseEntity<>(luceneLogService.getLabelsValues(type), HttpStatus.OK); + @PostMapping("/getAll") + public ResponseEntity get(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(luceneLogService.getAll(whereJson), HttpStatus.OK); } - @PostMapping("/query") - //("日志查询") - public ResponseEntity queryAll(@RequestBody LogQuery query) { - return new ResponseEntity<>(luceneLogService.query(query), HttpStatus.OK); + @PostMapping("/getTagName") + public ResponseEntity getTagName() { + return new ResponseEntity<>(luceneLogService.getTagName(), HttpStatus.OK); } - @DeleteMapping("/clearLogs") - //("清空日志") - public ResponseEntity clearLogs(@RequestBody LogQuery query) { - luceneLogService.clearLogs(query); - return new ResponseEntity<>(HttpStatus.OK); - } - - @GetMapping("/thread") - @SaIgnore - @Log("线程追踪测试") - //("清空日志") - public ResponseEntity thread(@RequestBody LogQuery query) { - log.info("线程链路测试"+Thread.currentThread().getName()); - log.error("线程链路测试"+Thread.currentThread().getName()); - luceneLogService.syncdemo(); - Thread thread = new Thread(()->{ - try { - Thread.sleep(5000); - log.info("线程链路测试"+Thread.currentThread().getName()); - log.error("线程链路测试"+Thread.currentThread().getName()); - log.info("线程链路测试"+Thread.currentThread().getName()); - }catch (Exception ex){ - ex.printStackTrace(); - } - }); - thread.start(); - return new ResponseEntity<>(HttpStatus.OK); - } - } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java index 7476008..5850ff9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/SysParamConstant.java @@ -12,10 +12,16 @@ public class SysParamConstant { */ public final static String IS_CONNECT_ACS = "is_connect_acs"; + /** + * 是否连接MES + */ + public final static String IS_CONNECT_MES = "is_connect_mes"; + /** * ACS系统IP */ public final static String ACS_URL = "acs_url"; + public final static String MES_URL = "mes_url"; /** * ERP系统IP diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java new file mode 100644 index 0000000..391e0e2 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/enums/TagNameEnum.java @@ -0,0 +1,28 @@ +package org.nl.wms.system_manage.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: lyd + * @Description: 日志标签枚举 + * @Date: 2023/12/28 + */ +@Getter +@AllArgsConstructor +public enum TagNameEnum { + /** + * 请勿作为mdc的value,只能作为key + */ + TAG_NAME("tag_name"), + /** + * LMS系统 + */ + LMS("LMS系统"), + AUTO_TASK_SEND("自动下发任务到ACS"), + /** + * 标记符号 + */ + MARK_SYMBOL("-"); + private final String tag; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogService.java index 1ec06a9..d857ac7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogService.java @@ -3,6 +3,9 @@ package org.nl.wms.system_manage.service.logserver; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import java.util.List; +import java.util.Map; + /** * @author ldjun * @version 1.0 @@ -12,21 +15,16 @@ import com.alibaba.fastjson.JSONObject; public interface LuceneLogService { /** - * 清空日志 + * 获取数据分页 + * + * @param whereJson 条件 + * @return Map */ - void clearLogs(LogQuery query); - /** - * 获取labels和values树 - * @return - */ - JSONArray getLabelsValues(String type); + Map getAll(JSONObject whereJson); /** - * 日志查询 - * @param logQuery + * 获取枚举的标签名称 * @return */ - JSONObject query(LogQuery logQuery); - - void syncdemo(); + List getTagName(); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java index 709d4dc..b19d1ce 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/logserver/LuceneLogServiceImpl.java @@ -17,156 +17,47 @@ import org.apache.lucene.search.*; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.BytesRef; import org.nl.common.exception.BadRequestException; +import org.nl.config.language.LangProcess; import org.nl.config.lucene.LuceneAppender; +import org.nl.config.lucene.Searcher; +import org.nl.wms.system_manage.enums.TagNameEnum; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.wltea.analyzer.lucene.IKAnalyzer; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service @Slf4j public class LuceneLogServiceImpl implements LuceneLogService { - - static String[] INFO_LEVEL = new String[]{"DEBUG","INFO","WARN","ERROR"}; - + /** + * 日志索引目录 + */ @Value("${lucene.index.path}") - private String indexUrl; + private String luceneUrl; @Override - public void clearLogs(LogQuery query) { + public Map getAll(JSONObject whereJson) { + JSONObject jo = new JSONObject(); try { - IndexWriter indexWriter = LuceneAppender.indexWriter; - if (indexWriter != null){ - BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); - DateTime offset = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -10); - TermRangeQuery termRangeQuery = new TermRangeQuery( - "requestTime",null, - new BytesRef(DateUtil.format(offset, "yyyy-MM-dd HH:mm:ss.SSS")), true, true); - booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST); - indexWriter.deleteDocuments(termRangeQuery); - indexWriter.commit(); - } - }catch (Exception ex){ - throw new BadRequestException("删除失败:"+ex.getMessage()); + JSONObject jsonObject = (JSONObject) Searcher.search(luceneUrl, whereJson); + JSONArray array = jsonObject.getJSONArray("content"); + int totalElements = Integer.parseInt(jsonObject.get("totalElements").toString()); + jo.put("content", array); + jo.put("totalElements", totalElements); + } catch (Exception e) { + log.error("索引查询为空", e); + throw new NullPointerException(LangProcess.msg("error_NullPoint")); } + + return jo; } @Override - public JSONArray getLabelsValues(String type) { - JSONArray result = new JSONArray(); - for (String v : INFO_LEVEL) { - JSONObject item = new JSONObject(); - item.put("label", v); - item.put("value", v); - result.add(item); - } - return result; - } - - - @Override - public JSONObject query(LogQuery logQuery) { - JSONObject res = new JSONObject(); - PageResult page = new PageResult(); - page.setPage(logQuery.getPage()); - page.setPageSize(logQuery.getSize()); - try { - FSDirectory directory = FSDirectory.open(Paths.get(indexUrl)); - DirectoryReader open = DirectoryReader.open(directory); - IndexSearcher searcher = new IndexSearcher(open); - // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序 - BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder(); - //时间范围查询 - Date startDate = logQuery.getStartTime(); - Date endDate = logQuery.getEndTime(); - - if (startDate == null){ - Calendar calendar=Calendar.getInstance(); - calendar.set(1970, 0, 1); - startDate = calendar.getTime(); } - if (endDate == null){ endDate = new DateTime(); } - TermRangeQuery termRangeQuery = new TermRangeQuery( - "requestTime", - new BytesRef(DateUtil.format(startDate, "yyyy-MM-dd HH:mm:ss.SSS")), - new BytesRef(DateUtil.format(endDate, "yyyy-MM-dd HH:mm:ss.SSS")), true, true); - booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST); - - // 字段之间的与或非关系,MUST表示and,MUST_NOT表示not,SHOULD表示or,有几个fields就必须有几个clauses - if (ObjectUtil.isNotEmpty(logQuery.getTraceId())){ - TermQuery termQuery = new TermQuery(new Term("traceId", logQuery.getTraceId())); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); - } - if (ObjectUtil.isNotEmpty(logQuery.getLogLevel())){ - TermQuery termQuery = new TermQuery(new Term("logLevel", logQuery.getLogLevel())); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); - } - if (ObjectUtil.isNotEmpty(logQuery.getSystem())) { - TermQuery termQuery = new TermQuery(new Term("system", logQuery.getSystem())); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); - } - if (ObjectUtil.isNotEmpty(logQuery.getRequestMethod())) { - TermQuery termQuery = new TermQuery(new Term("requestMethod", logQuery.getRequestMethod())); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); - } - if (Boolean.TRUE.equals(logQuery.getIsRequest())) { - Term traceid = new Term("traceId"); - TermQuery termQuery = new TermQuery(traceid); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST_NOT); - } - if (ObjectUtil.isNotEmpty(logQuery.getMessage())){ - //查询解析器 - QueryParser queryParser = new QueryParser("message", new IKAnalyzer(true)); - Query query = queryParser.parse(logQuery.getMessage()); - booleanQueryBuilder.add(query, BooleanClause.Occur.MUST); - } - - TopFieldCollector collector = TopFieldCollector.create(new Sort(new SortField("time", SortField.Type.LONG,true)), 20000, 0); - searcher.search(booleanQueryBuilder.build(), collector); - TopDocs topDocs = collector.topDocs((logQuery.getPage()-1)*logQuery.getSize(), logQuery.getSize()); - int totalSize = collector.getTotalHits(); - ScoreDoc[] scoreDocs = topDocs.scoreDocs; - - List list = new ArrayList<>(); - for (ScoreDoc scoreDoc : scoreDocs) { - Document doc = open.document(scoreDoc.doc); - LogRepositoryDTO dto = new LogRepositoryDTO(); - dto.setSystem(doc.get("system")); - dto.setTraceId(doc.get("traceId")); - dto.setLogger(doc.get("logger")); - dto.setLogLevel(doc.get("logLevel")); - dto.setMessage(doc.get("message")); - dto.setRequestIp(doc.get("requestIp")); - dto.setRequestMethod(doc.get("requestMethod")); - dto.setRequestTime(doc.get("requestTime")); - dto.setThread(doc.get("thread")); - list.add(dto); - } - open.close(); - directory.close(); - page.addAll(list); - page.setTotal(scoreDocs.length); - res.put("total", totalSize); - }catch (Exception ex){ - ex.printStackTrace(); - } - res.put("page",page); - return res; - - } - - - @Override - @Async - public void syncdemo() { - log.info("Async线程链路测试"+Thread.currentThread().getName()); - log.error("Async线程链路测试"+Thread.currentThread().getName()); - log.info("Async线程链路测试"+Thread.currentThread().getName()); - log.info("线程链路测试"+Thread.currentThread().getName()); + public List getTagName() { + return Arrays.stream(TagNameEnum.values()).map(TagNameEnum::getTag).collect(Collectors.toList()); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java index ece4f4a..799797a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java @@ -1,6 +1,7 @@ package org.nl.wms.system_manage.service.quartz.utils; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.yomahub.tlog.task.quartz.TLogQuartzJobBean; import lombok.extern.slf4j.Slf4j; import org.nl.common.utils.RedisUtils; @@ -30,17 +31,17 @@ import java.util.concurrent.ThreadPoolExecutor; @SuppressWarnings({"unchecked", "all"}) @Slf4j @DisallowConcurrentExecution -public class ExecutionJob extends QuartzJobBean { +public class ExecutionJob extends TLogQuartzJobBean { /** * 该处仅供参考 */ @Resource - @Qualifier("meshandlerPool") + @Qualifier("threadPoolExecutor") private ThreadPoolExecutor EXECUTOR; @Override - protected void executeInternal(JobExecutionContext context) throws JobExecutionException { + public void executeTask(JobExecutionContext context) throws JobExecutionException { SysQuartzJob quartzJob = (SysQuartzJob) context.getMergedJobDataMap().get(SysQuartzJob.JOB_KEY); // 获取spring bean ISysQuartzJobService quartzJobService = SpringContextHolder.getBean(SysQuartzJobServiceImpl.class); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java index 4631369..0afdbd5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java @@ -23,7 +23,7 @@ import static org.quartz.TriggerBuilder.newTrigger; public class QuartzManage { private static final String JOB_NAME = "TASK_"; - @Resource(name = "quartzScheduler") + @Resource(name = "scheduler") private Scheduler scheduler; public void addJob(SysQuartzJob quartzJob) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java index 3727a73..df7c7b2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java @@ -676,6 +676,7 @@ public class InBillServiceImpl extends ServiceImpl i SchBasePoint parentPoint = pointService.getById(rkPoint.getParent_point_code()); // 2、创建任务(4条任务、优先级需要获取所有的任务中的最小值并且-1,默认8) // 获取工单对应的区域的出入点 + // todo: 不对 SchBasePoint intoPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "2"); SchBasePoint emptyPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "5"); SchBasePoint fullPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "6"); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/MdPbGroupplateServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/MdPbGroupplateServiceImpl.java index 1016f11..7e6b230 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/MdPbGroupplateServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/MdPbGroupplateServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; import org.nl.common.domain.query.PageQuery; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; import org.nl.wms.warehouse_manage.service.dao.GroupPlate; @@ -25,6 +26,7 @@ import java.util.Set; * @author Liuxy * @since 2025-05-23 */ +@Slf4j @Service public class MdPbGroupplateServiceImpl extends ServiceImpl implements IMdPbGroupplateService { /** @@ -35,6 +37,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { + log.info("查询------"); return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), whereJson); } diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 1d8373e..8806b17 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -9,10 +9,11 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://${DB_HOST:192.168.81.251}:${DB_PORT:3306}/${DB_NAME:wms_standardv1}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - # url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:mysql://${DB_HOST:192.168.81.251}:${DB_PORT:3306}/${DB_NAME:zzzw_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false +# url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:zzzw_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} - password: ${DB_PWD:123456} + password: ${DB_PWD:P@ssw0rd.} +# password: ${DB_PWD:12356} # 初始连接数 initial-size: 15 # 最小连接数 @@ -134,6 +135,3 @@ sa-token: token-prefix: is-read-cookie: false is-print: false -lucene: - index: - path: D:\lms\lucene\index diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index 516ab71..b708b69 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -1,6 +1,7 @@ + nlAdmin ${LOG_HOME}/%d{yyyy-MM-dd}.%i.log - 10 + 30 - 100MB - - 20GB - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - - - - - - ${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log - - 7 - - 100MB + 200MB 20GB @@ -49,72 +34,69 @@ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + + + + + + + + + + + + + 2 500 - - 2 - 500 - - + + + + + - - - system - lms - - - logLevel - %level - - - requestMethod - %X{requestMethod} - - - requestTime - %d{yyyy-MM-dd HH:mm:ss.SSS} - - - requestIp - %X{requestIp} - - - thread - %thread - - - logger - %logger - - + + + INFO + ACCEPT + NEXT + + + + WARN + ACCEPT + NEXT + + + + ERROR + ACCEPT + DENY + - + + 512 - - - - s - - + - - - @@ -138,7 +120,48 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lms/nladmin-ui/src/views/lucene/index.vue b/lms/nladmin-ui/src/views/lucene/index.vue index d08b9e0..e0fc4d8 100644 --- a/lms/nladmin-ui/src/views/lucene/index.vue +++ b/lms/nladmin-ui/src/views/lucene/index.vue @@ -62,6 +62,15 @@ :end-placeholder="$t('Log.end_time')" /> + + + {{ $t('common.Query') }} @@ -73,7 +82,8 @@
-
+
+
@@ -126,7 +136,8 @@ export default { size: 100, total: 0, createTime: '' - } + }, + compressedView: true } }, created() { diff --git a/lms/nladmin-ui/src/views/system/menu/locale/en.js b/lms/nladmin-ui/src/views/system/menu/locale/en.js index 7100542..ec5a3ba 100644 --- a/lms/nladmin-ui/src/views/system/menu/locale/en.js +++ b/lms/nladmin-ui/src/views/system/menu/locale/en.js @@ -44,6 +44,7 @@ export default { }, 'msg': { 'delete_msg': 'Are you sure to delete it? If there are subordinate nodes, they will be deleted together. This operation cannot be undone!' - } + }, + 'SystemParam': 'sys parameter' } } diff --git a/lms/nladmin-ui/src/views/system/menu/locale/in.js b/lms/nladmin-ui/src/views/system/menu/locale/in.js index 7fbe7a3..661e0e6 100644 --- a/lms/nladmin-ui/src/views/system/menu/locale/in.js +++ b/lms/nladmin-ui/src/views/system/menu/locale/in.js @@ -44,6 +44,7 @@ export default { }, 'msg': { 'delete_msg': 'Apakah Anda yakin untuk menghapusnya? Jika ada nod subordinat, mereka akan dihapus bersama. Operasi ini tidak dapat dibatalkan!' - } + }, + 'SystemParam': 'parameter sistem' } } diff --git a/lms/nladmin-ui/src/views/system/menu/locale/zh.js b/lms/nladmin-ui/src/views/system/menu/locale/zh.js index d930887..2c17a16 100644 --- a/lms/nladmin-ui/src/views/system/menu/locale/zh.js +++ b/lms/nladmin-ui/src/views/system/menu/locale/zh.js @@ -44,6 +44,7 @@ export default { }, 'msg': { 'delete_msg': '确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!' - } + }, + 'SystemParam': '系统参数' } } diff --git a/lms/nladmin-ui/src/views/system/param/index.vue b/lms/nladmin-ui/src/views/system/param/index.vue index b9a234b..89d577e 100644 --- a/lms/nladmin-ui/src/views/system/param/index.vue +++ b/lms/nladmin-ui/src/views/system/param/index.vue @@ -19,6 +19,15 @@ + + + + + + + + + @@ -73,6 +82,9 @@ const defaultForm = { id: null, code: null, name: null, + zh_name: null, + en_name: null, + in_name: null, value: null, remark: null, is_active: true diff --git a/lms/nladmin-ui/src/views/system/param/locale/en.js b/lms/nladmin-ui/src/views/system/param/locale/en.js index 7255108..79710ae 100644 --- a/lms/nladmin-ui/src/views/system/param/locale/en.js +++ b/lms/nladmin-ui/src/views/system/param/locale/en.js @@ -2,7 +2,10 @@ export default { 'SysParam': { 'table': { 'code': 'code', - 'name': 'name', + 'name': 'default name', + 'zh_name': 'chinese name', + 'en_name': 'english name', + 'in_name': 'indonesian name', 'values': 'value', 'description': 'remark' }, diff --git a/lms/nladmin-ui/src/views/system/param/locale/in.js b/lms/nladmin-ui/src/views/system/param/locale/in.js index 29b2312..2d30aa0 100644 --- a/lms/nladmin-ui/src/views/system/param/locale/in.js +++ b/lms/nladmin-ui/src/views/system/param/locale/in.js @@ -2,7 +2,10 @@ export default { 'SysParam': { 'table': { 'code': 'kode', - 'name': 'nama', + 'name': 'nama bawaan', + 'zh_name': 'nama cina', + 'en_name': 'nama Inggris', + 'in_name': 'nama indonesia', 'values': 'nilai', 'description': 'Catatan' }, diff --git a/lms/nladmin-ui/src/views/system/param/locale/zh.js b/lms/nladmin-ui/src/views/system/param/locale/zh.js index 1b045b6..e7b3e01 100644 --- a/lms/nladmin-ui/src/views/system/param/locale/zh.js +++ b/lms/nladmin-ui/src/views/system/param/locale/zh.js @@ -2,7 +2,10 @@ export default { 'SysParam': { 'table': { 'code': '编码', - 'name': '名称', + 'name': '默认名称', + 'zh_name': '中文名称', + 'en_name': '英文名称', + 'in_name': '印尼名称', 'values': '值', 'description': '备注' }, diff --git a/lms/nladmin-ui/src/views/wms/basedata/group/index.vue b/lms/nladmin-ui/src/views/wms/basedata/group/index.vue index 8ca15d7..1100726 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/group/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/group/index.vue @@ -140,12 +140,14 @@ + style="width: 200px;" + > + :value="item.supp_code" + > {{ item.supp_name }} {{ item.supp_code }} @@ -175,11 +177,6 @@ - - - diff --git a/lms/nladmin-ui/src/views/wms/record/index.vue b/lms/nladmin-ui/src/views/wms/record/index.vue new file mode 100644 index 0000000..017df49 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/record/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/record/mdPbRegionMember.js b/lms/nladmin-ui/src/views/wms/record/mdPbRegionMember.js new file mode 100644 index 0000000..08be015 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/record/mdPbRegionMember.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/mdPbRegionMember', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/mdPbRegionMember/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/mdPbRegionMember', + method: 'put', + data + }) +} + +export default { add, edit, del }