fix: 日志、定时任务

This commit is contained in:
2025-07-31 16:03:02 +08:00
parent 9adfce31ea
commit 689237654c
14 changed files with 119 additions and 99 deletions

View File

@@ -42,6 +42,10 @@ public class LogMessageConstant {
* tlogTraceId * tlogTraceId
*/ */
public final static String FIELD_TRACEID = "tlogTraceId"; public final static String FIELD_TRACEID = "tlogTraceId";
/**
* api地址
*/
public final static String API = "requestMethod";
// 定义颜色值 // 定义颜色值
/** /**
* 文本颜色:黑色 * 文本颜色:黑色

View File

@@ -11,7 +11,6 @@ import ch.qos.logback.core.AppenderBase;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.ttl.TransmittableThreadLocal; import com.alibaba.ttl.TransmittableThreadLocal;
import org.apache.commons.lang3.StringUtils;
import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.*; import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriter;
@@ -38,7 +37,6 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
public static IndexWriter indexWriter; public static IndexWriter indexWriter;
@Override @Override
public void start() { public void start() {
super.start(); super.start();
@@ -48,7 +46,7 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
// 获取配置值 // 获取配置值
String luceneDir = properties.getProperty("lucene.index.path"); String luceneDir = properties.getProperty("lucene.index.path");
System.out.println("---index地址----"+luceneDir); System.out.println("---index地址----" + luceneDir);
index = FSDirectory.open(Paths.get(luceneDir)); index = FSDirectory.open(Paths.get(luceneDir));
// 初始化 Lucene 索引 // 初始化 Lucene 索引
Analyzer analyzer = new IKAnalyzer(); Analyzer analyzer = new IKAnalyzer();
@@ -81,11 +79,22 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName())); doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName()));
doc.add(new StoredField(LogMessageConstant.FIELD_IP, ipAddress)); doc.add(new StoredField(LogMessageConstant.FIELD_IP, ipAddress));
doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName())); doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName()));
if (ObjectUtil.isNotEmpty(mdcPropertyMap) && ObjectUtil.isNotEmpty(mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID))) { if (ObjectUtil.isNotEmpty(mdcPropertyMap)) {
String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID); String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID);
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES)); String api = mdcPropertyMap.get(LogMessageConstant.API);
doc.add(new StringField(LogMessageConstant.FIELD_LABEL, ObjectUtil.isNotEmpty(mdcPropertyMap.get("tag_name")) doc.add(new StringField(LogMessageConstant.FIELD_TRACEID,
? mdcPropertyMap.get("tag_name") : "-", Field.Store.YES)); 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, message, Field.Store.YES)); doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES));
try { try {

View File

@@ -109,6 +109,8 @@ public class Searcher {
LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_RESET + " - " +
LogMessageConstant.COLOR_BLUE + doc.get(LogMessageConstant.FIELD_IP) + LogMessageConstant.COLOR_BLUE + doc.get(LogMessageConstant.FIELD_IP) +
LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_RESET + " - " +
LogMessageConstant.COLOR_CYAN + doc.get(LogMessageConstant.API) +
LogMessageConstant.COLOR_RESET + " - " +
LogMessageConstant.COLOR_GREEN + "[" + doc.get(LogMessageConstant.FIELD_THREAD) + "]" + LogMessageConstant.COLOR_GREEN + "[" + doc.get(LogMessageConstant.FIELD_THREAD) + "]" +
LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_RESET + " - " +
LogMessageConstant.COLOR_BLACK + doc.get(LogMessageConstant.FIELD_LEVEL) + LogMessageConstant.COLOR_BLACK + doc.get(LogMessageConstant.FIELD_LEVEL) +

View File

@@ -17,6 +17,10 @@ package org.nl.config.thread;
import org.nl.config.SpringContextHolder; 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.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
@@ -27,16 +31,21 @@ import java.util.concurrent.TimeUnit;
* @author Zheng Jie * @author Zheng Jie
* @date 2019年10月31日18:16:47 * @date 2019年10月31日18:16:47
*/ */
@Configuration
public class ThreadPoolExecutorUtil { public class ThreadPoolExecutorUtil {
public static ThreadPoolExecutor getPoll(){ @Autowired
AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class); private AsyncTaskProperties asyncTaskProperties;
@Bean
@Primary
public ThreadPoolExecutor threadPoolExecutor() {
return new ThreadPoolExecutor( return new ThreadPoolExecutor(
properties.getCorePoolSize(), asyncTaskProperties.getCorePoolSize(),
properties.getMaxPoolSize(), asyncTaskProperties.getMaxPoolSize(),
properties.getKeepAliveSeconds(), asyncTaskProperties.getKeepAliveSeconds(),
TimeUnit.SECONDS, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(properties.getQueueCapacity()), new ArrayBlockingQueue<>(asyncTaskProperties.getQueueCapacity()),
new TheadFactoryName() new TheadFactoryName()
); );
} }

View File

@@ -420,13 +420,12 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
Structattr structattr = this.getByCode(changeDto.getStructCode()); Structattr structattr = this.getByCode(changeDto.getStructCode());
for (GroupPlate vehicleMater : groupPlates) { for (GroupPlate vehicleMater : groupPlates) {
String vehicleCode = vehicleMater.getStoragevehicle_code(); String vehicleCode = vehicleMater.getStoragevehicle_code();
BigDecimal subtract = vehicleMater.getQty().add(vehicleMater.getFrozen_qty()); BigDecimal subtract = vehicleMater.getFrozen_qty();
//100-出50 = 50 //100-出50 = 50
//如果出库是手持库出确认则不在这边变动组盘信息 //如果出库是手持库出确认则不在这边变动组盘信息
if (!changeDto.getInBound()) { if (!changeDto.getInBound()) {
UpdateWrapper<GroupPlate> update = new UpdateWrapper<GroupPlate>() UpdateWrapper<GroupPlate> update = new UpdateWrapper<GroupPlate>()
.set("frozen_qty", 0) .set("frozen_qty", 0)
.set("qty", subtract)
.set("update_time", now) .set("update_time", now)
.set("status", GROUP_PLATE_STATUS.code("出库")) .set("status", GROUP_PLATE_STATUS.code("出库"))
.eq("group_id", vehicleMater.getGroup_id()); .eq("group_id", vehicleMater.getGroup_id());

View File

@@ -43,7 +43,8 @@ public class BigScreenController {
@Log("大屏数据") @Log("大屏数据")
@SaIgnore @SaIgnore
public ResponseEntity<Object> getData(@RequestBody JSONObject stors) { public ResponseEntity<Object> getData(@RequestBody JSONObject stors) {
String storStr = stors.getString("stors"); // String storStr = stors.getString("stors");
String storStr = "LT,YL";
List<JSONObject> data = new ArrayList<>(); List<JSONObject> data = new ArrayList<>();
if (!StringUtils.isEmpty(storStr)){ if (!StringUtils.isEmpty(storStr)){
data = bigScreenService.getData(Arrays.asList(storStr.split(","))); data = bigScreenService.getData(Arrays.asList(storStr.split(",")));

View File

@@ -7,7 +7,6 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.wms.basedata_manage.service.IStructattrService; 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.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.BsrealStorattrMapper; import org.nl.wms.basedata_manage.service.dao.mapper.BsrealStorattrMapper;
@@ -61,39 +60,41 @@ public class BigScreenServiceImpl implements BigScreenService {
public List<JSONObject> getData(List<String> stors) { public List<JSONObject> getData(List<String> stors) {
// String storCode = "GW"; // String storCode = "GW";
List result = new ArrayList<>(); List result = new ArrayList<>();
if (CollectionUtils.isEmpty(stors)){ if (CollectionUtils.isEmpty(stors)) {
return result; return result;
} }
for (String storCode : stors) { for (String storCode : stors) {
JSONObject item = new JSONObject(); JSONObject item = new JSONObject();
//1.【货位使用】数据 //1.【货位使用】数据
item.put("title",storCode+"仓库"); item.put("title", storCode + "仓库");
item.put("pointUse", pointUse(storCode)); item.put("pointUse", pointUse(storCode));
// //2.【实时库存分析】数据 // //2.【实时库存分析】数据
item.put("ivtAnalyse", ivtAnalyse(storCode)); item.put("ivtAnalyse", ivtAnalyse(storCode));
//3.【出入库趋势】数据 //3.【出入库趋势】数据
item.put("inAndOutTrend", inAndOutTrend(storCode)); item.put("inAndOutTrend", inAndOutTrend(storCode));
// //4.【今日出入库】数据 // //4.【今日出入库】数据
item.put("toDayInAndOut", toDayInAndOut(storCode)); item.put("toDayInAndOut", toDayInAndOut(storCode));
// //5.【今日出入库】数据 // //5.【今日出入库】数据
item.put("realTask", realTask(storCode)); item.put("realTask", realTask(storCode));
//6.【未完成单据】数据 //6.【未完成单据】数据
item.put("unIos", unIos(storCode)); item.put("unIos", unIos(storCode));
result.add(item); result.add(item);
} }
return result; return result;
} }
/** /**
// * //
// * 货位使用 * // * 货位使用
// * * // *
// * @return JSONObject { * // * @return JSONObject {
// * total_qty: 总货位数 * // * total_qty: 总货位数
// * use_qty: 已用货位 * // * use_qty: 已用货位
// * emp_qty: 空余货位 * // * emp_qty: 空余货位
// * use_percentage: 百分比(使用货位百分比) * // * use_percentage: 百分比(使用货位百分比)
// * } * // * }
// */ * //
*/
private JSONObject pointUse(String storCode) { private JSONObject pointUse(String storCode) {
// 返回数据 // 返回数据
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
@@ -120,7 +121,7 @@ public class BigScreenServiceImpl implements BigScreenService {
result.put("emp_qty", emp_qty); result.put("emp_qty", emp_qty);
// 使用货位百分比 // 使用货位百分比
double use_percentage = 0; double use_percentage = 0;
if (total_qty != 0){ if (total_qty != 0) {
use_percentage = NumberUtil.mul(NumberUtil.div(use_qty, total_qty), 100); use_percentage = NumberUtil.mul(NumberUtil.div(use_qty, total_qty), 100);
} }
result.put("use_percentage", NumberUtil.round(use_percentage, 2)); result.put("use_percentage", NumberUtil.round(use_percentage, 2));
@@ -148,21 +149,23 @@ public class BigScreenServiceImpl implements BigScreenService {
int i = 0; int i = 0;
int top5 = 0; int top5 = 0;
for (IvtAnalyse json : list) { for (IvtAnalyse json : list) {
if (i==5){break;} if (i == 5) {
break;
}
JSONObject item = new JSONObject(); JSONObject item = new JSONObject();
item.put("ivt_qty", json.getSum_qty()); item.put("ivt_qty", json.getSum_qty());
item.put("material_name", json.getMaterial_name()); 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)); item.put("percentage", NumberUtil.round(percentage, 2));
topFiveList.add(item); topFiveList.add(item);
i++; i++;
top5 = top5+json.getSum_qty(); top5 = top5 + json.getSum_qty();
} }
if (sum>top5){ if (sum > top5) {
JSONObject other = new JSONObject(); JSONObject other = new JSONObject();
other.put("ivt_qty", sum-top5); other.put("ivt_qty", sum - top5);
other.put("material_name", "其他物料"); 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); topFiveList.add(other);
} }
result.put("data", topFiveList); result.put("data", topFiveList);
@@ -318,7 +321,7 @@ public class BigScreenServiceImpl implements BigScreenService {
new QueryWrapper<SchBaseTask>().lambda() new QueryWrapper<SchBaseTask>().lambda()
.le(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) .le(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.ge(SchBaseTask::getCreate_time,DateUtil.today()) .ge(SchBaseTask::getCreate_time, DateUtil.today())
); );
list.stream().forEach(item -> { list.stream().forEach(item -> {
item.setTask_status(TaskStatus.convertName(item.getTask_status())); 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("完成")) .ne(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
); );
list.stream().forEach(item -> { 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("生成"))) { if (item.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))) {
item.setBill_status("生成"); item.setBill_status("生成");
} }

View File

@@ -3,24 +3,21 @@ package org.nl.wms.sch_manage.service.util;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask; 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.nl.wms.warehouse_manage.enums.IOSConstant;
import org.redisson.api.RLock; import org.slf4j.MDC;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor
public class AutoTask { public class AutoTask {
/** /**
@@ -35,21 +32,12 @@ public class AutoTask {
@Autowired @Autowired
private TaskFactory taskFactory; private TaskFactory taskFactory;
private final RedissonClient redissonClient;
//定时任务
@SneakyThrows @SneakyThrows
public void run() { public void run() {
RLock lock = redissonClient.getLock(this.getClass().getName()); MDC.put(TagNameEnum.TAG_NAME.getTag(), TagNameEnum.AUTO_TASK_SEND.getTag());
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); log.info("定时器正在执行下发任务调度...");
try { sendTask();
if (tryLock) { log.info("定时器执行下发任务调度结束...");
sendTask();
}
} catch (Exception e) {
if (tryLock) {
lock.unlock();
}
}
} }
/** /**
@@ -58,7 +46,8 @@ public class AutoTask {
private void sendTask() { private void sendTask() {
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>() List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) .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)) { if (ObjectUtil.isEmpty(taskList)) {
return; return;
} }

View File

@@ -11,10 +11,15 @@ import lombok.Getter;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum TagNameEnum { public enum TagNameEnum {
/**
* 请勿作为mdc的value只能作为key
*/
TAG_NAME("tag_name"),
/** /**
* LMS系统 * LMS系统
*/ */
LMS("LMS系统"), LMS("LMS系统"),
AUTO_TASK_SEND("自动下发任务到ACS"),
/** /**
* 标记符号 * 标记符号
*/ */

View File

@@ -1,6 +1,7 @@
package org.nl.wms.system_manage.service.quartz.utils; package org.nl.wms.system_manage.service.quartz.utils;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.yomahub.tlog.task.quartz.TLogQuartzJobBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.RedisUtils; import org.nl.common.utils.RedisUtils;
@@ -30,17 +31,17 @@ import java.util.concurrent.ThreadPoolExecutor;
@SuppressWarnings({"unchecked", "all"}) @SuppressWarnings({"unchecked", "all"})
@Slf4j @Slf4j
@DisallowConcurrentExecution @DisallowConcurrentExecution
public class ExecutionJob extends QuartzJobBean { public class ExecutionJob extends TLogQuartzJobBean {
/** /**
* 该处仅供参考 * 该处仅供参考
*/ */
@Resource @Resource
@Qualifier("meshandlerPool") @Qualifier("threadPoolExecutor")
private ThreadPoolExecutor EXECUTOR; private ThreadPoolExecutor EXECUTOR;
@Override @Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { public void executeTask(JobExecutionContext context) throws JobExecutionException {
SysQuartzJob quartzJob = (SysQuartzJob) context.getMergedJobDataMap().get(SysQuartzJob.JOB_KEY); SysQuartzJob quartzJob = (SysQuartzJob) context.getMergedJobDataMap().get(SysQuartzJob.JOB_KEY);
// 获取spring bean // 获取spring bean
ISysQuartzJobService quartzJobService = SpringContextHolder.getBean(SysQuartzJobServiceImpl.class); ISysQuartzJobService quartzJobService = SpringContextHolder.getBean(SysQuartzJobServiceImpl.class);

View File

@@ -23,7 +23,7 @@ import static org.quartz.TriggerBuilder.newTrigger;
public class QuartzManage { public class QuartzManage {
private static final String JOB_NAME = "TASK_"; private static final String JOB_NAME = "TASK_";
@Resource(name = "quartzScheduler") @Resource(name = "scheduler")
private Scheduler scheduler; private Scheduler scheduler;
public void addJob(SysQuartzJob quartzJob) { public void addJob(SysQuartzJob quartzJob) {

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate; import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
@@ -25,6 +26,7 @@ import java.util.Set;
* @author Liuxy * @author Liuxy
* @since 2025-05-23 * @since 2025-05-23
*/ */
@Slf4j
@Service @Service
public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper, GroupPlate> implements IMdPbGroupplateService { public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper, GroupPlate> implements IMdPbGroupplateService {
/** /**
@@ -35,6 +37,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
@Override @Override
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) { public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
log.info("查询------");
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
whereJson); whereJson);
} }

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="false"> <configuration scan="true" scanPeriod="30 seconds" debug="false">
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
<contextName>nlAdmin</contextName> <contextName>nlAdmin</contextName>
<property name="log.charset" value="utf-8"/> <property name="log.charset" value="utf-8"/>
<property name="log.pattern" <property name="log.pattern"
@@ -22,25 +23,9 @@
<!--日志文件输出的文件名--> <!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.log</FileNamePattern> <FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数--> <!--日志文件保留天数-->
<maxHistory>10</maxHistory> <maxHistory>30</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来--> <!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>100MB</maxFileSize> <maxFileSize>200MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<appender name="ErpLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>7</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>100MB</maxFileSize>
<!--所有日志最多占多大容量--> <!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap> <totalSizeCap>20GB</totalSizeCap>
</rollingPolicy> </rollingPolicy>
@@ -49,17 +34,33 @@
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder> </encoder>
</appender> </appender>
<!-- <appender name="ErpLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- &lt;!&ndash;日志文件输出的文件名&ndash;&gt;-->
<!-- <FileNamePattern>${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log</FileNamePattern>-->
<!-- &lt;!&ndash;日志文件保留天数&ndash;&gt;-->
<!-- <maxHistory>7</maxHistory>-->
<!-- &lt;!&ndash;单个日志最大容量 至少10MB才能看得出来&ndash;&gt;-->
<!-- <maxFileSize>100MB</maxFileSize>-->
<!-- &lt;!&ndash;所有日志最多占多大容量&ndash;&gt;-->
<!-- <totalSizeCap>20GB</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- &lt;!&ndash;格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符&ndash;&gt;-->
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<!-- </encoder>-->
<!-- </appender>-->
<!--异步到文件--> <!--异步到文件-->
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender"> <appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
<discardingThreshold>2</discardingThreshold> <discardingThreshold>2</discardingThreshold>
<queueSize>500</queueSize> <queueSize>500</queueSize>
<appender-ref ref="FILE"/> <appender-ref ref="FILE"/>
</appender> </appender>
<appender name="asyncERPFileAppender" class="ch.qos.logback.classic.AsyncAppender"> <!-- <appender name="asyncERPFileAppender" class="ch.qos.logback.classic.AsyncAppender">-->
<discardingThreshold>2</discardingThreshold> <!-- <discardingThreshold>2</discardingThreshold>-->
<queueSize>500</queueSize> <!-- <queueSize>500</queueSize>-->
<appender-ref ref="ErpLogFile"/> <!-- <appender-ref ref="ErpLogFile"/>-->
</appender> <!-- </appender>-->
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" > <appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
<!-- Filter for INFO level --> <!-- Filter for INFO level -->
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
@@ -87,17 +88,14 @@
</appender> </appender>
<!--开发环境:打印控制台--> <!--开发环境:打印控制台-->
<springProfile name="prod"> <springProfile name="dev">
<root level="info"> <root level="info">
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="asyncLuceneAppender"/> <appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/>
</root> </root>
<logger name="jdbc" level="ERROR" additivity="true"> <logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/> <appender-ref ref="asyncFileAppender"/>
</logger> </logger>
<logger name="org.nl.wms.system_manage.service.quartz.task" level="ERROR" additivity="true">
<appender-ref ref="asyncERPFileAppender"/>
</logger>
<logger name="org.springframework" level="ERROR" additivity="true"> <logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/> <appender-ref ref="asyncFileAppender"/>
</logger> </logger>
@@ -121,7 +119,7 @@
</logger> </logger>
</springProfile> </springProfile>
<!--测试环境:打印控制台--> <!--测试环境:打印控制台-->
<springProfile name="dev"> <springProfile name="prod">
<root level="INFO"> <root level="INFO">
<appender-ref ref="asyncLuceneAppender"/> <appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/> <appender-ref ref="CONSOLE"/>

View File

@@ -140,12 +140,14 @@
<el-select <el-select
v-model="form.supp_code" v-model="form.supp_code"
placeholder="请选择" placeholder="请选择"
style="width: 200px;"> style="width: 200px;"
>
<el-option <el-option
v-for="item in supplist" v-for="item in supplist"
:key="item.supp_code" :key="item.supp_code"
:label="item.supp_name" :label="item.supp_name"
:value="item.supp_code"> :value="item.supp_code"
>
<span style="float: left">{{ item.supp_name }}</span> <span style="float: left">{{ item.supp_name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.supp_code }}</span> <span style="float: right; color: #8492a6; font-size: 13px">{{ item.supp_code }}</span>
</el-option> </el-option>
@@ -175,11 +177,6 @@
<el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" /> <el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" />
<el-table-column prop="qty" label="可用数" :formatter="crud.formatNum3" :min-width="100" /> <el-table-column prop="qty" label="可用数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" /> <el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column label="总数" :formatter="crud.formatNum3" :min-width="100">
<template slot-scope="scope">
{{ parseFloat(scope.row.qty + scope.row.frozen_qty).toFixed(3) }}
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" /> <el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_name" label="组盘人" :min-width="flexWidth('create_name',crud.data,'组盘人')" /> <el-table-column prop="create_name" label="组盘人" :min-width="flexWidth('create_name',crud.data,'组盘人')" />
<el-table-column prop="create_time" label="组盘时间" :min-width="flexWidth('create_time',crud.data,'组盘时间')" /> <el-table-column prop="create_time" label="组盘时间" :min-width="flexWidth('create_time',crud.data,'组盘时间')" />