Compare commits

...

2 Commits

Author SHA1 Message Date
gaoshuguang 8fb5d1bbe3 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation.war
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation.war.original
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/common/config/CorsConfig.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/common/emnu/Constant.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/common/exception/PPExceptionHandler.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/common/utils/DateTimeUtil.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/common/utils/FileUtil.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/service/impl/GantryServiceImpl.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/service/impl/QueryTableServiceImpl.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/com/nmggs/query/service/impl/ScreenDataServiceImpl.class
#	ETCLaneMonitoringEvaluation/target/ETCLaneMonitoringEvaluation/WEB-INF/classes/static/index.html
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/common/config/CorsConfig.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/common/emnu/Constant.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/common/exception/PPExceptionHandler.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/common/utils/DateTimeUtil.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/common/utils/FileUtil.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/service/impl/GantryServiceImpl.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/service/impl/QueryTableServiceImpl.class
#	ETCLaneMonitoringEvaluation/target/classes/com/nmggs/query/service/impl/ScreenDataServiceImpl.class
#	ETCLaneMonitoringEvaluation/target/classes/static/index.html
#	ETCLaneMonitoringEvaluation/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
#	ETCLaneMonitoringEvaluation/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
8 months ago
gaoshuguang 5a63557a2e 2024年01月10日 1.0.12 报表查询跳转地址从10.15.110.58:8081更改为10.15.0.171:8081 8 months ago

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="fd29a122-927c-479e-ae89-fc24c186996c" />
</component>
</module>

@ -4,7 +4,7 @@
<inspection_tool class="AlibabaVarargsParameter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<Languages>
<language minSize="71" name="Java" />
<language minSize="74" name="Java" />
</Languages>
</inspection_tool>
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">

@ -34,6 +34,7 @@ public class CorsConfig implements WebMvcConfigurer {
.excludePathPatterns(
"/index**",
"/Screen**",
"/XNPJhome**",
"/Gantry**",
"/ETCSuccessRateQuery**",
"/ETCSuccessRateQuery",

@ -1,5 +1,8 @@
package com.nmggs.query.common.emnu;
import java.util.Arrays;
import java.util.List;
/**
* @author: shuguang
* @date: 20221010 17:13
@ -28,4 +31,9 @@ public class Constant {
public static final String IMAGE_INTERFACE_NAME = "/WebService/MyWebService/GetWebServiceData?wsdl";
public final static List<Integer> RG_GBTYPE_LIST = Arrays.asList(2,3,5,8);
public final static List<Integer> JQR_GBTYPE_LIST = Arrays.asList(6,7);
public final static List<Integer> ETC_GBTYPE_LIST = Arrays.asList(1);
}

@ -3,7 +3,7 @@ package com.nmggs.query.common.exception;
import com.alibaba.fastjson2.JSON;
import com.nmggs.query.common.emnu.MessageEnum;
import com.nmggs.query.common.utils.LogUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
* @description:
*/
@RestControllerAdvice
//@Slf4j
@Slf4j
public class PPExceptionHandler {
/**
@ -22,9 +22,7 @@ public class PPExceptionHandler {
@ExceptionHandler(PPException.class)
public <T> T handlePPException(PPException e) {
Result res = Result.error(e.getErrorCode(), e.getErrorMessage());
//log.info("异常处理模块出参:{}", JSON.toJSONString(res));
LogUtil.WriteLog_Error("异常处理模块出参" + JSON.toJSONString(res), "PPExceptionHandler");
log.error("异常处理模块出参:{}", JSON.toJSONString(res));
return (T) JSON.toJSONString(res);
}
@ -34,11 +32,9 @@ public class PPExceptionHandler {
*/
@ExceptionHandler(Exception.class)
public <T> T handleException(Exception e) {
//log.info(e.getMessage(),e);
LogUtil.WriteLog_Error(e.getMessage()+e, "PPExceptionHandler");
log.info(e.getMessage(),e);
Result res = Result.error(MessageEnum..getCode(), MessageEnum..getMessage());
LogUtil.WriteLog_Error("异常处理模块出参" + JSON.toJSONString(res), "PPExceptionHandler");
//log.info("异常处理模块出参:{}", JSON.toJSONString(res));
log.error("异常处理模块出参:{}", JSON.toJSONString(res));
return (T) JSON.toJSONString(res);
}
}

@ -8,9 +8,13 @@ import org.joda.time.format.ISODateTimeFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Calendar;
import java.util.Date;
@ -21,7 +25,64 @@ import java.util.Date;
*/
public class DateTimeUtil {
public static long getDifDateDay (String startStr,String endStr,String datePattern){
/**
* date
*/
public static long getDiffSeconds(Date start , Date end) {
// 将Date转换为Instant
Instant instant1 = start.toInstant();
Instant instant2 = end.toInstant();
// 使用Duration计算两个Instant之间的秒数
Duration duration = Duration.between(instant1, instant2);
return duration.getSeconds();
}
/**
* Date
*/
public static Date getFirstDayOfYearDate() {
LocalDate today = LocalDate.now();
LocalDate firstDayOfYear = today.withMonth(1).withDayOfMonth(1);
return convertLocalDateToDate(firstDayOfYear);
}
/**
* Date
*/
public static Date getFirstDayOfQuarterDate() {
LocalDate today = LocalDate.now();
int month = today.getMonthValue();
// 计算本季度的第一个月
int firstMonthOfQuarter = (month - 1) / 3 * 3 + 1;
LocalDate firstDayOfQuarter = today.withMonth(firstMonthOfQuarter).with(TemporalAdjusters.firstDayOfMonth());
return convertLocalDateToDate(firstDayOfQuarter);
}
/**
* Date
*/
public static Date getFirstDayOfWeekDate() {
LocalDate today = LocalDate.now();
LocalDate firstDayOfWeekDate = today.with(TemporalAdjusters.firstDayOfMonth());
return convertLocalDateToDate(firstDayOfWeekDate);
}
/**
* Date
*/
public static Date getFirstDayOfMonthDate() {
LocalDate today = LocalDate.now();
LocalDate firstDayOfMonth = today.with(TemporalAdjusters.firstDayOfMonth());
return convertLocalDateToDate(firstDayOfMonth);
}
private static Date convertLocalDateToDate(LocalDate localDate) {
return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
public static long getDifDateDay(String startStr, String endStr, String datePattern) {
// 定义日期格式
java.time.format.DateTimeFormatter formatter = java.time.format.DateTimeFormatter.ofPattern(datePattern);
// 将字符串转换为LocalDate对象
@ -64,6 +125,18 @@ public class DateTimeUtil {
return formatter.print(dt);
}
/**
* /
*
* @param date
* @param minute
* @return /
*/
public static Date addDateMinute(Date date, int minute) {
DateTime dateTime = new DateTime(date);
return dateTime.plusMinutes(minute).toDate();
}
/**
* /
*
@ -176,12 +249,26 @@ public class DateTimeUtil {
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 0
*/
public static Date getDateByHour(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 分
calendar.set(Calendar.MINUTE, 0);
// 秒
calendar.set(Calendar.SECOND, 0);
// 毫秒
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
public static void main(String[] args) throws ParseException {
// 两个日期字符串
String dateString1 = "2024-07-31";
String dateString2 = "2024-08-21";
System.out.println(getDifDateDay(dateString1,dateString2,"yyyy-MM-dd"));
System.out.println(getDifDateDay(dateString1, dateString2, "yyyy-MM-dd"));
}
}

@ -3,6 +3,7 @@ package com.nmggs.query.common.utils;
import cn.hutool.core.util.StrUtil;
import com.nmggs.query.common.emnu.MessageEnum;
import com.nmggs.query.common.exception.PPException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.FileFileFilter;
@ -42,7 +43,7 @@ import java.util.zip.ZipOutputStream;
* @date: 20221013 10:52
* @description:
*/
//@Slf4j
@Slf4j
public class FileUtil {
/**
@ -254,8 +255,9 @@ public class FileUtil {
* @param dirFilePath
*/
public static List<File> getAllFile(String dirFilePath) {
if (StrUtil.isBlank(dirFilePath))
if (StrUtil.isBlank(dirFilePath)) {
return null;
}
return getAllFile(new File(dirFilePath));
}
@ -267,13 +269,13 @@ public class FileUtil {
*/
public static List<File> getAllFile(File dirFile) {
// 如果文件夹不存在或着不是文件夹,则返回 null
if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile())
if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile()) {
return null;
}
File[] childrenFiles = dirFile.listFiles();
if (Objects.isNull(childrenFiles) || childrenFiles.length == 0)
if (Objects.isNull(childrenFiles) || childrenFiles.length == 0) {
return null;
}
List<File> files = new ArrayList<>();
for (File childFile : childrenFiles) {
// 如果是文件,直接添加到结果集合
@ -304,8 +306,7 @@ public class FileUtil {
try {
FileUtils.copyFile(new File(oldFilePath), new File(newFilePath));
} catch (IOException e) {
//log.error("拷贝备份文件{},到{}失败:{}", oldFilePath, newFilePath, e.getMessage(), e);
LogUtil.WriteLog_Error("拷贝备份文件" + oldFilePath+"到"+newFilePath+"失败,报错:"+e.getMessage(), "FileUtil");
log.error("拷贝备份文件{},到{}失败:{}", oldFilePath, newFilePath, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
}
@ -346,8 +347,7 @@ public class FileUtil {
zis.closeEntry();
zis.close();
} catch (IOException e) {
//log.error("解压缩{}失败:{}", zipName, e.getMessage(), e);
LogUtil.WriteLog_Error("解压缩" + zipName+"失败,报错:"+e.getMessage(), "FileUtil");
log.error("解压缩{}失败:{}", zipName, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
return srcList;
@ -555,8 +555,7 @@ public class FileUtil {
fileOutputStream.close();
} catch (IOException e) {
//log.error(e.getMessage(), e);
LogUtil.WriteLog_Error("报错:"+e.getMessage(), "FileUtil");
log.error(e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
} finally {
try {
@ -583,8 +582,7 @@ public class FileUtil {
try {
realPath = URLDecoder.decode(realPath, "utf-8");
} catch (Exception e) {
//log.error(e.getMessage(), e);
LogUtil.WriteLog_Error("报错:"+e.getMessage(), "FileUtil");
log.error(e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
return realPath;
@ -609,8 +607,7 @@ public class FileUtil {
i = bis.read(buffer);
}
} catch (Exception e) {
//log.error(e.getMessage(), e);
LogUtil.WriteLog_Error("报错:"+e.getMessage(), "FileUtil");
log.error(e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
} finally {
if (bis != null) {
@ -619,16 +616,14 @@ public class FileUtil {
// 删除临时文件
filePath.delete();
} catch (IOException e) {
//log.info(e.getMessage(), e);
LogUtil.WriteLog_Error("报错:"+e.getMessage(), "FileUtil");
log.error(e.getMessage(), e);
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
//log.error(e.getMessage(), e);
LogUtil.WriteLog_Error("报错:"+e.getMessage(), "FileUtil");
log.error(e.getMessage(), e);
}
}
}
@ -687,8 +682,7 @@ public class FileUtil {
in.close();
//log.info("{}文件下载成功", multipartFile.getOriginalFilename());
} catch (IOException e) {
//log.error("文件下载失败{}", e.getMessage(), e);
LogUtil.WriteLog_Error("报错:"+e.getMessage(), "FileUtil");
log.error("文件下载失败{}", e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
}

@ -1,116 +1,121 @@
package com.nmggs.query.common.utils;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
public class LogUtil {
public static String TomcatPath = System.getProperty("catalina.home");
private static String getFilePath() {
return TomcatPath ;
}
public static void WriteLog_Gantry(String msg, String disStr) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
String fileName = f.format(new Date()) + "_Gantry";
WriteLog(fileName, msg, disStr);
}
public static void WriteLog_ETCSuccessRateQuery(String msg, String disStr) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
String fileName = f.format(new Date()) + "_ETCSuccessRateQuery";
WriteLog(fileName, msg, disStr);
}
public static void WriteLog_Info(String msg, String disStr) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
String fileName = f.format(new Date()) + "_Info";
WriteLog(fileName, msg, disStr);
}
public static void WriteLog_Error(String msg, String disStr) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
String fileName = f.format(new Date()) + "_Error";
WriteLog(fileName, msg, disStr);
}
public static void WriteLog_237SplitJson(String msg, String disStr) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
String fileName = f.format(new Date()) + "_237SplitJson";
WriteLog(fileName, msg, disStr);
}
private static void WriteLog(String suffix, String content, String disStr) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String baseDir = getFilePath() + "/logs/ETCLaneMonitoringEvaluation/";
FileUtil.fileCreat(baseDir);
StringBuffer sb = new StringBuffer();
String str = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS")) + "-->类【" + disStr + "】:";
sb.append(str);
sb.append(content);
sb.append("\r\n");
String logPath = baseDir;
File logPathFile = new File(logPath);
if (!logPathFile.isDirectory()) {
Boolean _f = logPathFile.mkdir();
}
String fileDic = format.format(new Date());
File filedir = new File(logPath + fileDic);
if (!filedir.isDirectory()) {
filedir.mkdir();
File[] fs = logPathFile.listFiles();
LocalDateTime now = LocalDateTime.now();
int delFlag = Integer.parseInt(now.minus(30, ChronoUnit.DAYS).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
for (File f : fs) {
int deldir = Integer.parseInt(f.getName());
if (deldir < delFlag) {
if (f.isDirectory()) {
deleteDirectory(f);
}
}
}
}
String fullFilePath = logPath + fileDic + "/" + suffix + ".txt";
try (RandomAccessFile reader = new RandomAccessFile(new File(fullFilePath), "rw");
FileLock lock1 = reader.getChannel().lock()) {
reader.seek(reader.length());
reader.write(sb.toString().getBytes());
} catch (IOException e) {
System.out.println(e.getMessage());
}
} catch (Exception exception) {
System.out.println(exception.getMessage());
}
}
private static void deleteDirectory(File file) {
if (file.isFile()) {// 表示该文件不是文件夹
file.delete();
} else {
// 首先得到当前的路径
String[] childFilePaths = file.list();
for (String childFilePath : childFilePaths) {
File childFile = new File(file.getAbsolutePath() + "/" + childFilePath);
deleteDirectory(childFile);
}
file.delete();
}
}
}
//package com.nmggs.query.common.utils;
//
//
//import java.io.File;
//import java.io.IOException;
//import java.io.RandomAccessFile;
//import java.nio.channels.FileLock;
//import java.text.SimpleDateFormat;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.time.temporal.ChronoUnit;
//import java.util.Date;
//
//public class LogUtil {
//
// public static String TomcatPath = System.getProperty("catalina.home");
//
// private static String getFilePath() {
//
// return TomcatPath ;
// }
//
// public static void WriteLog_Gantry(String msg, String disStr) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
// String fileName = f.format(new Date()) + "_Gantry";
// WriteLog(fileName, msg, disStr);
// }
// public static void WriteLog_ETCSuccessRateQuery(String msg, String disStr) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
// String fileName = f.format(new Date()) + "_ETCSuccessRateQuery";
// WriteLog(fileName, msg, disStr);
// }
// public static void WriteLog_SFZXNPJQuery(String msg, String disStr) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
// String fileName = f.format(new Date()) + "_SFZXNPJQuery";
// WriteLog(fileName, msg, disStr);
// }
// public static void WriteLog_Info(String msg, String disStr) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
// String fileName = f.format(new Date()) + "_Info";
// WriteLog(fileName, msg, disStr);
// }
//
// public static void WriteLog_Error(String msg, String disStr) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
// String fileName = f.format(new Date()) + "_Error";
// WriteLog(fileName, msg, disStr);
// }
// public static void WriteLog_237SplitJson(String msg, String disStr) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd-HH");
// String fileName = f.format(new Date()) + "_237SplitJson";
// WriteLog(fileName, msg, disStr);
// }
//
//
//
// private static void WriteLog(String suffix, String content, String disStr) {
// try {
// SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
// String baseDir = getFilePath() + "/logs/ETCLaneMonitoringEvaluation/";
// FileUtil.fileCreat(baseDir);
// StringBuffer sb = new StringBuffer();
// String str = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS")) + "-->类【" + disStr + "】:";
// sb.append(str);
// sb.append(content);
// sb.append("\r\n");
//
// String logPath = baseDir;
// File logPathFile = new File(logPath);
// if (!logPathFile.isDirectory()) {
// Boolean _f = logPathFile.mkdir();
// }
//
// String fileDic = format.format(new Date());
// File filedir = new File(logPath + fileDic);
// if (!filedir.isDirectory()) {
// filedir.mkdir();
// File[] fs = logPathFile.listFiles();
// LocalDateTime now = LocalDateTime.now();
// int delFlag = Integer.parseInt(now.minus(30, ChronoUnit.DAYS).format(DateTimeFormatter.ofPattern("yyyyMMdd")));
// for (File f : fs) {
// int deldir = Integer.parseInt(f.getName());
// if (deldir < delFlag) {
// if (f.isDirectory()) {
// deleteDirectory(f);
// }
// }
// }
// }
// String fullFilePath = logPath + fileDic + "/" + suffix + ".txt";
//
// try (RandomAccessFile reader = new RandomAccessFile(new File(fullFilePath), "rw");
// FileLock lock1 = reader.getChannel().lock()) {
//
// reader.seek(reader.length());
// reader.write(sb.toString().getBytes());
//
// } catch (IOException e) {
// System.out.println(e.getMessage());
// }
//
// } catch (Exception exception) {
// System.out.println(exception.getMessage());
// }
// }
//
//
// private static void deleteDirectory(File file) {
// if (file.isFile()) {// 表示该文件不是文件夹
// file.delete();
// } else {
// // 首先得到当前的路径
// String[] childFilePaths = file.list();
// for (String childFilePath : childFilePaths) {
// File childFile = new File(file.getAbsolutePath() + "/" + childFilePath);
// deleteDirectory(childFile);
// }
// file.delete();
// }
// }
//}

@ -0,0 +1,59 @@
package com.nmggs.query.common.utils;
import java.text.DecimalFormat;
/**
* @author: shuguang
* @date: 20250307 14:37
* @description:
*/
public class StringUtils {
public static void main(String[] args) {
long flag = 2252350106386944L;
System.out.println(GetFlagValue(flag));
}
/**
* flag
*
* @param flag flag
* @return java.lang.String
* @author shuguang
* @date 2025-03-11 10:19
*/
public static String GetFlagValue(long flag) {
String flagValue = "";
if (flag == 0) {
flagValue = "0";
} else if (flag == 1) {
flagValue = "1";
} else {
String binaryString = Long.toBinaryString(flag);
int postion = 1;
for (int i = binaryString.length() - 1; i >= 0; i--, postion++) {
if (binaryString.charAt(i) == '1') {
flagValue += postion + ",";
}
}
flagValue = flagValue.substring(0, flagValue.length() - 1);
}
return flagValue;
}
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("0.00");
/**
*
*/
public static String formattedResult(double num1, double num2) {
if (num2 == 0) {
throw new IllegalArgumentException("除数不能为0");
}
double result = (double) num1 / num2;
return DECIMAL_FORMAT.format(result);
}
}

@ -0,0 +1,36 @@
package com.nmggs.query.controller;
import com.nmggs.query.entity.Res;
import com.nmggs.query.entity.xnpj.NameTable;
import com.nmggs.query.entity.xnpj.SubCompany;
import com.nmggs.query.service.BasicService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20231012 14:29
* @description:
*/
@RestController
public class BasicController {
@Resource
private BasicService basicService;
@PostMapping("/sysQuery/selectSubcomno")
public Res selectSubcomno() {
List<SubCompany> list = basicService.selectSubcomno();
return Res.success(list);
}
@PostMapping("/sysQuery/selectStanos")
public Res selectStanos(@RequestBody Map<String,Object> map) {
List<NameTable> list = basicService.selectStanos(map);
return Res.success(list);
}
}

@ -0,0 +1,61 @@
package com.nmggs.query.controller;
import com.nmggs.query.entity.Res;
import com.nmggs.query.entity.xnpj.CardInfo;
import com.nmggs.query.entity.xnpj.SubCompany;
import com.nmggs.query.service.XnpjService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250306 16:35
* @description:
*/
@RestController
public class XnpjController {
@Resource
private XnpjService xnpjService;
@PostMapping("/queryMiddleBottomInfo")
public Res queryMiddleBottomInfo(@RequestBody Map<String,Object> map) {
List<Map<String,Object>> list = xnpjService.queryMiddleBottomInfo(map);
return Res.success(list);
}
@PostMapping("/queryMiddleTopInfo")
public Res queryMiddleTopInfo(@RequestBody Map<String,Object> map) {
List<Map<String,Object>> list = xnpjService.queryMiddleTopInfo(map);
return Res.success(list);
}
@PostMapping("/queryRightBottomInfo")
public Res queryRightBottomInfo(@RequestBody Map<String,Object> map) {
List<Map<String,Object>> list = xnpjService.queryRightBottomInfo(map);
return Res.success(list);
}
@PostMapping("/queryLeftBottomInfo")
public Res queryLeftBottomInfo(@RequestBody Map<String,Object> map) {
List<Map<String,Object>> list = xnpjService.queryLeftBottomInfo(map);
return Res.success(list);
}
@PostMapping("/queryRightTopInfo")
public Res queryRightTopInfo(@RequestBody Map<String,Object> map) {
List<Map<String,Object>> list = xnpjService.queryRightTopInfo(map);
return Res.success(list);
}
@PostMapping("/queryLeftTopInfo")
public Res queryLeftTopInfo(@RequestBody Map<String,Object> map) {
List<Map<String,Object>> list = xnpjService.queryLeftTopInfo(map);
return Res.success(list);
}
@PostMapping("/queryCardInfo")
public Res queryCardInfo(@RequestBody Map<String,Object> map) {
CardInfo info = xnpjService.queryCardInfo(map);
return Res.success(info);
}
}

@ -0,0 +1,36 @@
package com.nmggs.query.entity.xnpj;
import lombok.Data;
/**
* @author: shuguang
* @date: 20250306 16:40
* @description:
*/
@Data
public class CardInfo {
/**
*
*/
private String outpressure;
/**
*
*/
private String inpressure;
/**
*
*/
private String intrafficefficiency;
/**
*
*/
private String outtrafficefficiency;
/**
*
*/
private String inspecial;
/**
*
*/
private String outspecial;
}

@ -0,0 +1,51 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* @author: shuguang
* @date: 20250305 11:46
* @description:
*/
@Data
@TableName("SFZ_XNPJ_CONFIG_TIME")
public class ConfigTime {
/**
* ID
*/
@TableId("ID")
private Integer id;
/**
* ,--
*/
@TableField("INRGAVERAGETIME")
private Integer inrgaveragetime;
/**
* ,--
*/
@TableField("INQRAVERAGETIME")
private Integer injqraveragetime;
/**
* ETC,--
*/
@TableField("INETCAVERAGETIME")
private Integer inetcaveragetime;
/**
* ,--
*/
@TableField("OUTRGAVERAGETIME")
private Integer outrgaveragetime;
/**
* ,--
*/
@TableField("OUTJQRAVERAGETIME")
private Integer outjqraveragetime;
/**
* ETC,--
*/
@TableField("OUTETCAVERAGETIME")
private Integer outetcaveragetime;
}

@ -0,0 +1,19 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* @author: shuguang
* @date: 20250311 10:37
* @description:
*/
@Data
@TableName("FLAG_TEXT")
public class FlagText {
@TableField("VALUE")
private Integer value;
@TableField("TEXT")
private String text;
}

@ -0,0 +1,35 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* @author: shuguang
* @date: 20250305 11:51
* @description:
*/
@Data
@TableName("SFZ_XNPJ_IN_SUM_DAY")
public class InSumDay {
@TableField("CLASSDATE")
private Date classdate;
@TableField("STANO")
private Integer stano;
@TableField("FLAG")
private Long flag;
@TableField("PORTNO")
private Integer portno;
@TableField("CARCOUNT")
private Long carcount;
@TableField("OPRTIMELEN")
private Long oprtimelen;
@TableField("TYPE")
private Integer type;
@TableField("KIND")
private Integer kind;
@TableField("CARDTP")
private Integer cardtp;
}

@ -0,0 +1,37 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* @author: shuguang
* @date: 20250305 11:51
* @description:
*/
@Data
@TableName("SFZ_XNPJ_IN_SUM_HOUR")
public class InSumHour {
@TableField("CLASSDATE")
private Date classdate;
@TableField("STANO")
private Integer stano;
@TableField("FLAG")
private Long flag;
@TableField("PORTNO")
private Integer portno;
@TableField("DT")
private Date dt;
@TableField("CARCOUNT")
private Long carcount;
@TableField("OPRTIMELEN")
private Long oprtimelen;
@TableField("TYPE")
private Integer type;
@TableField("KIND")
private Integer kind;
@TableField("CARDTP")
private Integer cardtp;
}

@ -0,0 +1,34 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @author: shuguang
* @date: 20230811 14:15
* @description:
*/
@Data
@TableName("NAME_TABLE")
public class NameTable implements Serializable {
private Date begdate;
private Integer areano;
private Integer roadno;
private Integer stano;
private String roadname;
private String staname;
private Integer statype;
private String stationhex;
private String gbstationid;
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,41 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* @author: shuguang
* @date: 20250305 11:51
* @description:
*/
@Data
@TableName("SFZ_XNPJ_OUT_SUM_DAY")
public class OutSumDay {
@TableField("CLASSDATE")
private Date classdate;
@TableField("STANO")
private Integer stano;
@TableField("FLAG")
private Long flag;
@TableField("PORTNO")
private Integer portno;
@TableField("CARCOUNT")
private Long carcount;
@TableField("OPRTIMELEN")
private Long oprtimelen;
@TableField("TYPE")
private Integer type;
@TableField("KIND")
private Integer kind;
@TableField("CARDTP")
private Integer cardtp;
@TableField("INCASH")
private Long incash;
@TableField("CASH")
private Long cash;
@TableField("PAYCASH")
private Long paycash;
}

@ -0,0 +1,43 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* @author: shuguang
* @date: 20250305 11:51
* @description:
*/
@Data
@TableName("SFZ_XNPJ_OUT_SUM_HOUR")
public class OutSumHour {
@TableField("CLASSDATE")
private Date classdate;
@TableField("STANO")
private Integer stano;
@TableField("FLAG")
private Long flag;
@TableField("PORTNO")
private Integer portno;
@TableField("DT")
private Date dt;
@TableField("CARCOUNT")
private Long carcount;
@TableField("OPRTIMELEN")
private Long oprtimelen;
@TableField("TYPE")
private Integer type;
@TableField("KIND")
private Integer kind;
@TableField("CARDTP")
private Integer cardtp;
@TableField("INCASH")
private Long incash;
@TableField("CASH")
private Long cash;
@TableField("PAYCASH")
private Long paycash;
}

@ -0,0 +1,19 @@
package com.nmggs.query.entity.xnpj;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* @author: shuguang
* @date: 20230829 14:29
* @description:
*/
@Data
@TableName("SUBCOMPANY_TABLE")
public class SubCompany {
@TableField("SUBCOMNO")
private Integer subcomno;
@TableField("SUBCOMNAME")
private String subcomname;
}

@ -0,0 +1,16 @@
package com.nmggs.query.entity.xnpj;
import lombok.Data;
/**
* @author: shuguang
* @date: 20250307 10:59
* @description:
*/
@Data
public class SumQueryInfo {
private Integer stano;
private Long sumcarcount;
private Long sumoprtimelen;
private Integer gbtype;
}

@ -0,0 +1,14 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.ConfigTime;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20250305 14:20
* @description:
*/
@Mapper
public interface ConfigTimeMapper extends BaseMapper<ConfigTime> {
}

@ -0,0 +1,14 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.FlagText;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20250311 10:39
* @description:
*/
@Mapper
public interface FlagTextMapper extends BaseMapper<FlagText> {
}

@ -0,0 +1,27 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.InSumDay;
import com.nmggs.query.entity.xnpj.SumQueryInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250305 14:23
* @description:
*/
@Mapper
public interface InSumDayMapper extends BaseMapper<InSumDay> {
List<SumQueryInfo> selectInfoList(int stano, String startDateStr, String endDateStr);
int selectInspecialcount(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectLeftTopInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectLeftBottomInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectMiddleTopInfoList(int stano, String startDateStr, String endDateStr);
}

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.InSumDayMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectInspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_IN_SUM_DAY
WHERE FLAG > 1
AND STANO = #{stano}
AND CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
</select>
<select id="selectLeftTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectLeftBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleTopInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,27 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.InSumHour;
import com.nmggs.query.entity.xnpj.SumQueryInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250305 14:22
* @description:
*/
@Mapper
public interface InSumHourMapper extends BaseMapper<InSumHour> {
List<SumQueryInfo> selectInfoList(int stano, String startDateStr, String endDateStr);
int selectInspecialcount(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectLeftTopInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectLeftBottomInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectMiddleTopInfoList(int stano, String startDateStr, String endDateStr);
}

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.InSumHourMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectInspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_IN_SUM_HOUR
WHERE FLAG > 1
AND STANO = #{stano}
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
</select>
<select id="selectLeftTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectLeftBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
AND FLAG>1
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleTopInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
AND FLAG>1
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,10 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.NameTable;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface NameTableMapper extends BaseMapper<NameTable> {
}

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.NameTableMapper">
<resultMap id="BaseResultMap" type="com.nmggs.query.entity.xnpj.NameTable">
<result column="BEGDATE" jdbcType="TIMESTAMP" property="begdate"/>
<result column="AREANO" jdbcType="DECIMAL" property="areano"/>
<result column="ROADNO" jdbcType="DECIMAL" property="roadno"/>
<result column="STANO" jdbcType="DECIMAL" property="stano"/>
<result column="ROADNAME" jdbcType="VARCHAR" property="roadname"/>
<result column="STANAME" jdbcType="VARCHAR" property="staname"/>
<result column="STATYPE" jdbcType="DECIMAL" property="statype"/>
<result column="STATIONHEX" jdbcType="VARCHAR" property="stationhex"/>
<result column="GBSTATIONID" jdbcType="VARCHAR" property="gbstationid"/>
</resultMap>
</mapper>

@ -0,0 +1,27 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.OutSumDay;
import com.nmggs.query.entity.xnpj.SumQueryInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250305 14:26
* @description:
*/
@Mapper
public interface OutSumDayMapper extends BaseMapper<OutSumDay> {
List<SumQueryInfo> selectInfoList(int stano, String startDateStr, String endDateStr);
int selectOutspecialcount(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectRightTopInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectRightBottomInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectMiddleBottomInfoList(int stano, String startDateStr, String endDateStr);
}

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.OutSumDayMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectOutspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_OUT_SUM_DAY
WHERE FLAG > 1
AND STANO = #{stano}
AND CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
</select>
<select id="selectRightTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectRightBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleBottomInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,27 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.OutSumHour;
import com.nmggs.query.entity.xnpj.SumQueryInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250305 14:23
* @description:
*/
@Mapper
public interface OutSumHourMapper extends BaseMapper<OutSumHour> {
List<SumQueryInfo> selectInfoList(int stano, String startDateStr, String endDateStr);
int selectOutspecialcount(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectRightTopInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectRightBottomInfoList(int stano, String startDateStr, String endDateStr);
List<Map<String, Object>> selectMiddleBottomInfoList(int stano, String startDateStr, String endDateStr);
}

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.OutSumHourMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectOutspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_OUT_SUM_HOUR
WHERE FLAG > 1
AND STANO = #{stano}
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
</select>
<select id="selectRightTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectRightBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
and FLAG>1
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleBottomInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
AND FLAG>1
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,15 @@
package com.nmggs.query.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmggs.query.entity.xnpj.SubCompany;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20230829 14:32
* @description:
*/
@Mapper
public interface SubCompanyMapper extends BaseMapper<SubCompany> {
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.SubCompanyMapper">
</mapper>

@ -0,0 +1,35 @@
package com.nmggs.query.service;
import com.nmggs.query.entity.xnpj.NameTable;
import com.nmggs.query.entity.xnpj.SubCompany;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20231012 14:30
* @description:
*/
public interface BasicService {
/**
*
*
* @return java.util.List<com.nm.gsgl.entity.SubCompany>
* @author shuguang
* @date 2023-10-12 14:33
*/
List<SubCompany> selectSubcomno();
/**
*
*
* @param map
* @return java.util.List<com.nm.gsgl.entity.NameTable>
* @author shuguang
* @date 2023-10-12 14:46
*/
List<NameTable> selectStanos(Map<String, Object> map);
}

@ -0,0 +1,78 @@
package com.nmggs.query.service;
import com.nmggs.query.entity.xnpj.CardInfo;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250306 16:36
* @description:
*/
public interface XnpjService {
/**
*
*
* @param map
* @return com.nmggs.query.entity.xnpj.CardInfo
* @author shuguang
* @date 2025-03-06 16:47
*/
CardInfo queryCardInfo(Map<String, Object> map);
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 10:34
*/
List<Map<String, Object>> queryLeftTopInfo(Map<String, Object> map);
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
List<Map<String, Object>> queryRightTopInfo(Map<String, Object> map);
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
List<Map<String, Object>> queryLeftBottomInfo(Map<String, Object> map);
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
List<Map<String, Object>> queryRightBottomInfo(Map<String, Object> map);
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
List<Map<String, Object>> queryMiddleTopInfo(Map<String, Object> map);
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
List<Map<String, Object>> queryMiddleBottomInfo(Map<String, Object> map);
}

@ -0,0 +1,65 @@
package com.nmggs.query.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.nmggs.query.common.utils.UuidUtil;
import com.nmggs.query.entity.xnpj.NameTable;
import com.nmggs.query.entity.xnpj.SubCompany;
import com.nmggs.query.mapper.NameTableMapper;
import com.nmggs.query.mapper.SubCompanyMapper;
import com.nmggs.query.service.BasicService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20231012 14:30
* @description:
*/
@Service
@Slf4j
public class BasicServiceImpl implements BasicService {
@Resource
private SubCompanyMapper subCompanyMapper;
@Resource
private NameTableMapper nameTableMapper;
/**
*
*
* @return java.util.List<com.nm.gsgl.entity.SubCompany>
* @author shuguang
* @date 2023-10-12 14:33
*/
@Override
public List<SubCompany> selectSubcomno() {
QueryWrapper<SubCompany> wrapper = new QueryWrapper<>();
wrapper
.orderByAsc("SUBCOMNO");
return subCompanyMapper.selectList(wrapper);
}
/**
*
*
* @param map
* @return java.util.List<com.nm.gsgl.entity.NameTable>
* @author shuguang
* @date 2023-10-12 14:46
*/
@Override
public List<NameTable> selectStanos(Map<String, Object> map) {
QueryWrapper<NameTable> wrapper = new QueryWrapper<>();
wrapper.eq("STATYPE", 1)
.orderByAsc("STANO");
if(ObjectUtils.isNotEmpty( map.get("SUBCOMNO"))){
wrapper.eq("SUBCOMNO",map.get("SUBCOMNO"));
}
return nameTableMapper.selectList(wrapper);
}
}

@ -5,13 +5,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nmggs.query.common.emnu.MessageEnum;
import com.nmggs.query.common.exception.PPException;
import com.nmggs.query.common.utils.LogUtil;
import com.nmggs.query.common.utils.UuidUtil;
import com.nmggs.query.entity.FollowGantry;
import com.nmggs.query.mapper.FollowGantryMapper;
import com.nmggs.query.mapper.GantryMapper;
import com.nmggs.query.mapper.NameTableFxMapper;
import com.nmggs.query.service.GantryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
@ -27,6 +27,7 @@ import java.util.Optional;
* @description:
*/
@Service
@Slf4j
public class GantryServiceImpl implements GantryService {
@Resource
@ -78,16 +79,13 @@ public class GantryServiceImpl implements GantryService {
if (!exists) {
count = followGantryMapper.insert(f);
} else {
LogUtil.WriteLog_Gantry("[uuid:" + uuid + "]-新增关注门架信息失败,数据库中已存在此条信息" + f, "GantryServiceImpl-insertFollowGantry");
log.info("[uuid:{}]-新增关注门架信息失败,数据库中已存在此条信息:{}", uuid, f);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
} catch (PPException e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-插入数据失败" + e.getMessage() + e,
"GantryServiceImpl-insertFollowGantry");
log.error("[uuid:{}]-插入数据失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
LogUtil.WriteLog_Gantry("[uuid:" + uuid + "]-新增关注门架信息完成,条数为" + count, "GantryServiceImpl-insertFollowGantry");
return count;
@ -95,13 +93,10 @@ public class GantryServiceImpl implements GantryService {
@Override
public int deleteFollowGantry(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
String id = (String) map.get("id");
QueryWrapper<FollowGantry> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ID", id);
int count = followGantryMapper.delete(queryWrapper);
LogUtil.WriteLog_Gantry("[uuid:" + uuid + "]-删除关注门架信息条数:" + count, "GantryServiceImpl-deleteFollowGantry");
return count;
return followGantryMapper.delete(queryWrapper);
}
@Override
@ -119,7 +114,6 @@ public class GantryServiceImpl implements GantryService {
int pageSize = (int) map.get("pageSize");
Map<String, Object> params = new HashMap<>();
Page<Map<String, Object>> page = new Page<>(pageNum, pageSize);
LogUtil.WriteLog_Gantry("[uuid:" + uuid + "]-开始查询重点关注门架车流量信息", "GantryServiceImpl-selectGantrySum");
try {
if (ObjectUtils.isNotEmpty(map.get("dT"))) {
@ -130,12 +124,9 @@ public class GantryServiceImpl implements GantryService {
}
page = gantryMapper.selectJoinPage(page, params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"GantryServiceImpl-selectGantrySum");
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,page);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
LogUtil.WriteLog_Gantry("[uuid:" + uuid + "]-查询重点关注门架车流量信息完成,条数为" + page.getTotal(), "GantryServiceImpl-selectGantrySum");
return page;
}

@ -4,10 +4,10 @@ import com.nmggs.query.common.emnu.Constant;
import com.nmggs.query.common.emnu.MessageEnum;
import com.nmggs.query.common.exception.PPException;
import com.nmggs.query.common.utils.DateTimeUtil;
import com.nmggs.query.common.utils.LogUtil;
import com.nmggs.query.common.utils.UuidUtil;
import com.nmggs.query.mapper.SysMapper;
import com.nmggs.query.service.QueryTableService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
@ -23,6 +23,7 @@ import java.util.Map;
* @description:
*/
@Service
@Slf4j
public class QueryTableServiceImpl implements QueryTableService {
@Resource
private SysMapper sysMapper;
@ -46,14 +47,9 @@ public class QueryTableServiceImpl implements QueryTableService {
list = sysMapper.selectByStanoDt(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"QueryTableServiceImpl-selectETCSuccessRateByStaNo");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
LogUtil.WriteLog_ETCSuccessRateQuery
("[uuid:" + uuid + "]-根据前台参数" + map + "查询数据完成,查询条数为" + list.size(),
"QueryTableServiceImpl-selectETCSuccessRateByStaNo");
return list;
}
@ -74,14 +70,9 @@ public class QueryTableServiceImpl implements QueryTableService {
list = sysMapper.selectByStanoAndPortDt(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"QueryTableServiceImpl-selectETCSuccessRateByStaNoAndPort");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
LogUtil.WriteLog_ETCSuccessRateQuery
("[uuid:" + uuid + "]-根据前台参数" + map + "查询数据完成,查询条数为" + list.size(),
"QueryTableServiceImpl-selectETCSuccessRateByStaNoAndPort");
return list;
}
@ -119,14 +110,9 @@ public class QueryTableServiceImpl implements QueryTableService {
}
list = sysMapper.selectChartByStanoDt(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"QueryTableServiceImpl-getChartData");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
LogUtil.WriteLog_ETCSuccessRateQuery
("[uuid:" + uuid + "]-根据前台参数" + map + "查询数据完成,查询条数为" + list.size(),
"QueryTableServiceImpl-getChartData");
return list;
}

@ -4,7 +4,6 @@ import com.nmggs.query.common.emnu.Constant;
import com.nmggs.query.common.emnu.MessageEnum;
import com.nmggs.query.common.exception.PPException;
import com.nmggs.query.common.utils.DateTimeUtil;
import com.nmggs.query.common.utils.LogUtil;
import com.nmggs.query.common.utils.PropertiesUtil;
import com.nmggs.query.common.utils.UuidUtil;
import com.nmggs.query.mapper.DataShowScreenMapper;
@ -47,9 +46,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list.add(listETC);
list.add(listHH);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getTotalData");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
return list;
@ -65,9 +62,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.queryStaBottom(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getStaBottom");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -84,9 +79,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.queryStaBottomWLSB(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getStaBottomWLSB");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -104,9 +97,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.queryStaTop(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getStaTop");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -123,9 +114,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.queryStaTopWLSB(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getStaTopWLSB");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -143,9 +132,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.querySubBottom(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getSubBottom");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -162,9 +149,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.querySubBottomWLSB(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getSubBottomWLSB");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -182,9 +167,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.querySubTop(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getSubTop");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -201,9 +184,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.querySubTopWLSB(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getSubTopWLSB");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -238,9 +219,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
result = resultBuilder.toString();
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-selectStaNoWLSB");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -275,9 +254,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
result = resultBuilder.toString();
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-selectStaNoJYCG");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -295,9 +272,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.queryStaScreenChartData(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getStaScreenChart");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
@ -314,9 +289,7 @@ public class ScreenDataServiceImpl implements ScreenDataService {
list=dataShowScreenMapper.queryStaScreenChartDataWLSB(params);
} catch (Exception e) {
LogUtil.WriteLog_Error
("[uuid:" + uuid + "]-查询操作失败" + e.getMessage() + e,
"ScreenDataServiceImpl-getStaScreenChartWLSB");
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}

@ -0,0 +1,824 @@
package com.nmggs.query.service.impl;
import com.nmggs.query.common.emnu.Constant;
import com.nmggs.query.common.emnu.MessageEnum;
import com.nmggs.query.common.exception.PPException;
import com.nmggs.query.common.utils.DateTimeUtil;
import com.nmggs.query.common.utils.StringUtils;
import com.nmggs.query.common.utils.UuidUtil;
import com.nmggs.query.entity.xnpj.CardInfo;
import com.nmggs.query.entity.xnpj.ConfigTime;
import com.nmggs.query.entity.xnpj.FlagText;
import com.nmggs.query.entity.xnpj.SumQueryInfo;
import com.nmggs.query.mapper.ConfigTimeMapper;
import com.nmggs.query.mapper.FlagTextMapper;
import com.nmggs.query.mapper.InSumDayMapper;
import com.nmggs.query.mapper.InSumHourMapper;
import com.nmggs.query.mapper.OutSumDayMapper;
import com.nmggs.query.mapper.OutSumHourMapper;
import com.nmggs.query.service.XnpjService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: shuguang
* @date: 20250306 16:36
* @description:
*/
@Service
@Slf4j
public class XnpjServiceImpl implements XnpjService {
@Resource
private ConfigTimeMapper configTimeMapper;
@Resource
private InSumDayMapper inSumDayMapper;
@Resource
private InSumHourMapper inSumHourMapper;
@Resource
private OutSumDayMapper outSumDayMapper;
@Resource
private OutSumHourMapper outSumHourMapper;
@Resource
private FlagTextMapper flagTextMapper;
/**
*
*
* @param map
* @return com.nmggs.query.entity.xnpj.CardInfo
* @author shuguang
* @date 2025-03-06 16:47
*/
@Override
public CardInfo queryCardInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
CardInfo cardInfo = new CardInfo();
try {
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
ConfigTime configTime = configTimeMapper.selectById(1);
Date startDate;
Date endDate;
Date nowDate = new Date();
//入口流量
int inCount = 0;
//出口流量
int outCount = 0;
//入口车道过车时长 单位秒
long inoprtimelen = 0;
//出口车道过车时长 单位秒
long outoprtimelen = 0;
//入口特情数量
int inspecialcount;
//出口特情数量
int outspecialcount;
//查询区间的时间差,单位秒
long diffTime;
String startDateStr;
String endDateStr;
List<SumQueryInfo> inSum;
List<SumQueryInfo> outSum;
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
inSum = inSumHourMapper.selectInfoList(stano, startDateStr, endDateStr);
outSum = outSumHourMapper.selectInfoList(stano, startDateStr, endDateStr);
inspecialcount = inSumHourMapper.selectInspecialcount(stano, startDateStr, endDateStr);
outspecialcount = outSumHourMapper.selectOutspecialcount(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
inSum = inSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
outSum = outSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
inspecialcount = inSumDayMapper.selectInspecialcount(stano, startDateStr, endDateStr);
outspecialcount = outSumDayMapper.selectOutspecialcount(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
inSum = inSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
outSum = outSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
inspecialcount = inSumDayMapper.selectInspecialcount(stano, startDateStr, endDateStr);
outspecialcount = outSumDayMapper.selectOutspecialcount(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
inSum = inSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
outSum = outSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
inspecialcount = inSumDayMapper.selectInspecialcount(stano, startDateStr, endDateStr);
outspecialcount = outSumDayMapper.selectOutspecialcount(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
inSum = inSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
outSum = outSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
inspecialcount = inSumDayMapper.selectInspecialcount(stano, startDateStr, endDateStr);
outspecialcount = outSumDayMapper.selectOutspecialcount(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
inSum = inSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
outSum = outSumDayMapper.selectInfoList(stano, startDateStr, endDateStr);
inspecialcount = inSumDayMapper.selectInspecialcount(stano, startDateStr, endDateStr);
outspecialcount = outSumDayMapper.selectOutspecialcount(stano, startDateStr, endDateStr);
break;
}
diffTime = DateTimeUtil.getDiffSeconds(startDate, endDate);
//入口人工车道数
int rgInCount = 0;
//入口机器人车道数
int jqrInCount = 0;
//入口ETC车道数
int etcInCount = 0;
//出口人工车道数
int rgOutCount = 0;
//出口机器人车道数
int jqrOutCount = 0;
//出口ETC车道数
int etcOutCount = 0;
//人工车道GBTYPE的值为2、3、5、8机器人车道GBTYPE的值为6、7ETC车道GBTYPE的值为1
//计算入口数据
if (inSum.size() > 0) {
for (SumQueryInfo info : inSum) {
if (Constant.ETC_GBTYPE_LIST.contains(info.getGbtype())) {
etcInCount++;
} else if (Constant.JQR_GBTYPE_LIST.contains(info.getGbtype())) {
jqrInCount++;
} else if (Constant.RG_GBTYPE_LIST.contains(info.getGbtype())) {
rgInCount++;
}
inCount += info.getSumcarcount();
inoprtimelen += info.getSumoprtimelen();
}
}
int inBhCount = (int) ((diffTime / configTime.getInrgaveragetime() * etcInCount)
+ (diffTime / configTime.getInjqraveragetime() * jqrInCount)
+ (diffTime / configTime.getInetcaveragetime() * rgInCount));
long inBhTime = (diffTime * etcInCount)
+ (diffTime * jqrInCount)
+ (diffTime * rgInCount);
//计算出口数据
if (outSum.size() > 0) {
for (SumQueryInfo info : outSum) {
if (Constant.ETC_GBTYPE_LIST.contains(info.getGbtype())) {
etcOutCount++;
} else if (Constant.JQR_GBTYPE_LIST.contains(info.getGbtype())) {
jqrOutCount++;
} else if (Constant.RG_GBTYPE_LIST.contains(info.getGbtype())) {
rgOutCount++;
}
outCount += info.getSumcarcount();
outoprtimelen += info.getSumoprtimelen();
}
}
int outBhCount = (int) ((diffTime / configTime.getOutrgaveragetime() * etcOutCount)
+ (diffTime / configTime.getOutjqraveragetime() * jqrOutCount)
+ (diffTime / configTime.getOutetcaveragetime() * rgOutCount));
long outBhTime = (diffTime * etcOutCount)
+ (diffTime * jqrOutCount)
+ (diffTime * rgOutCount);
//出口通行压力指数
String inpressure;
if (inBhCount > 0) {
inpressure = StringUtils.formattedResult(inCount * 100, inBhCount);
} else {
inpressure = "0";
}
//入口通行压力指数
String outpressure;
if (outBhCount > 0) {
outpressure = StringUtils.formattedResult(outCount * 100, outBhCount);
} else {
outpressure = "0";
}
//入口车道通行效率:(入口车道实际平均过车时间*100/入口车道平均饱和过车时间)
String intrafficefficiency;
if (inBhCount > 0 && inCount > 0 && inBhTime > 0) {
intrafficefficiency = StringUtils.formattedResult((double) inoprtimelen / inCount * 100, (double) inBhTime / inBhCount);
} else {
intrafficefficiency = "0";
}
//出口车道通行效率:(出口车道实际平均过车时间*100/出口车道平均饱和过车时间)
String outtrafficefficiency;
if (outBhCount > 0 && outCount > 0 && outBhTime > 0) {
//outtrafficefficiency = StringUtils.formattedResult((double) outoprtimelen / 1000 / outCount * 100, (double) outBhTime / outBhCount);
outtrafficefficiency = StringUtils.formattedResult((double) outoprtimelen / outCount * 100, (double) outBhTime / outBhCount);
} else {
outtrafficefficiency = "0";
}
//入口车道特情占比:入口特情数量*100/入口车辆总数
String inspecial;
if (inCount > 0) {
inspecial = StringUtils.formattedResult(inspecialcount * 100, inCount);
} else {
inspecial = "0";
}
//出口车道特情占比:出口特情数量*100/出口车辆总数
String outspecial;
if (outCount > 0) {
outspecial = StringUtils.formattedResult(outspecialcount * 100, outCount);
} else {
outspecial = "0";
}
cardInfo.setInpressure(inpressure);
cardInfo.setOutpressure(outpressure);
cardInfo.setIntrafficefficiency(intrafficefficiency);
cardInfo.setOuttrafficefficiency(outtrafficefficiency);
cardInfo.setInspecial(inspecial);
cardInfo.setOutspecial(outspecial);
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,cardInfo);
return cardInfo;
}
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 10:34
*/
@Override
public List<Map<String, Object>> queryLeftTopInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
Date startDate;
Date endDate;
Date nowDate = new Date();
String startDateStr;
String endDateStr;
List<Map<String, Object>> list;
try {
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
list = inSumHourMapper.selectLeftTopInfoList(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftTopInfoList(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftTopInfoList(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftTopInfoList(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftTopInfoList(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftTopInfoList(stano, startDateStr, endDateStr);
break;
}
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,list);
return list;
}
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
@Override
public List<Map<String, Object>> queryRightTopInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
Date startDate;
Date endDate;
Date nowDate = new Date();
String startDateStr;
String endDateStr;
List<Map<String, Object>> list;
try {
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
list = outSumHourMapper.selectRightTopInfoList(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightTopInfoList(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightTopInfoList(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightTopInfoList(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightTopInfoList(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightTopInfoList(stano, startDateStr, endDateStr);
break;
}
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,list);
return list;
}
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
@Override
public List<Map<String, Object>> queryLeftBottomInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
Date startDate;
Date endDate;
Date nowDate = new Date();
String startDateStr;
String endDateStr;
List<Map<String, Object>> list;
try {
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
list = inSumHourMapper.selectLeftBottomInfoList(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftBottomInfoList(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftBottomInfoList(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftBottomInfoList(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftBottomInfoList(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectLeftBottomInfoList(stano, startDateStr, endDateStr);
break;
}
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,list);
return list;
}
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
@Override
public List<Map<String, Object>> queryRightBottomInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
Date startDate;
Date endDate;
Date nowDate = new Date();
String startDateStr;
String endDateStr;
List<Map<String, Object>> list;
try {
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
list = outSumHourMapper.selectRightBottomInfoList(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightBottomInfoList(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightBottomInfoList(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightBottomInfoList(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightBottomInfoList(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectRightBottomInfoList(stano, startDateStr, endDateStr);
break;
}
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,list);
return list;
}
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
@Override
public List<Map<String, Object>> queryMiddleTopInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
Date startDate;
Date endDate;
Date nowDate = new Date();
String startDateStr;
String endDateStr;
List<Map<String, Object>> list;
List<Map<String, Object>> resultList = new ArrayList<>();
try {
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
list = inSumHourMapper.selectMiddleTopInfoList(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectMiddleTopInfoList(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectMiddleTopInfoList(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectMiddleTopInfoList(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectMiddleTopInfoList(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = inSumDayMapper.selectMiddleTopInfoList(stano, startDateStr, endDateStr);
break;
}
if (list.size() > 0) {
for (Map<String, Object> o : list) {
String flagString = StringUtils.GetFlagValue(((BigDecimal) o.get("FLAG")).longValue());
o.put("FLAGSTRING", flagString);
}
resultList= aggProcessing(list);
}
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,list);
return resultList;
}
/**
*
*
* @param map
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
* @author shuguang
* @date 2025-03-10 14:34
*/
@Override
public List<Map<String, Object>> queryMiddleBottomInfo(Map<String, Object> map) {
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据查询参数{}查询数据", uuid, map);
int stano = (int) map.get("stano");
int querytype = (int) map.get("querytype");
Date startDate;
Date endDate;
Date nowDate = new Date();
String startDateStr;
String endDateStr;
List<Map<String, Object>> list;
List<Map<String, Object>> resultList = new ArrayList<>();
try {
switch (querytype) {
//小时
case 1:
startDate = DateTimeUtil.addDateHours(nowDate, -1);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD_HH_MM_SS);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD_HH_MM_SS);
list = outSumHourMapper.selectMiddleBottomInfoList(stano, startDateStr, endDateStr);
break;
//天
case 2:
startDate = DateTimeUtil.getDateByDay(nowDate);
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectMiddleBottomInfoList(stano, startDateStr, endDateStr);
break;
//周
case 3:
startDate = DateTimeUtil.getFirstDayOfWeekDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectMiddleBottomInfoList(stano, startDateStr, endDateStr);
break;
//月
case 4:
startDate = DateTimeUtil.getFirstDayOfMonthDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectMiddleBottomInfoList(stano, startDateStr, endDateStr);
break;
//季度
case 5:
startDate = DateTimeUtil.getFirstDayOfQuarterDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectMiddleBottomInfoList(stano, startDateStr, endDateStr);
break;
//年
default:
startDate = DateTimeUtil.getFirstDayOfYearDate();
endDate = nowDate;
startDateStr = DateTimeUtil.getFormateString(startDate, Constant.YYYY_MM_DD);
endDateStr = DateTimeUtil.getFormateString(endDate, Constant.YYYY_MM_DD);
list = outSumDayMapper.selectMiddleBottomInfoList(stano, startDateStr, endDateStr);
break;
}
if (list.size() > 0) {
for (Map<String, Object> o : list) {
String flagString = StringUtils.GetFlagValue(((BigDecimal) o.get("FLAG")).longValue());
o.put("FLAGSTRING", flagString);
}
resultList= aggProcessing(list);
}
} catch (Exception e) {
log.error("[uuid:{}]-查询失败,报错为:{}", uuid, e.getMessage(), e);
throw new PPException(MessageEnum..getCode(), MessageEnum..getMessage());
}
log.info("[uuid:{}]-根据查询参数{}查询数据完成{}", uuid, map,list);
return resultList;
}
private List<Map<String, Object>> aggProcessing(List<Map<String, Object>> list) {
List<FlagText> flagTexts = flagTextMapper.selectList(null);
// 将 FlagText 数据存储到 Map 中,便于快速查找
Map<Integer, String> flagTextMap = flagTexts.stream()
.collect(Collectors.toMap(FlagText::getValue, FlagText::getText));
// 拆分 FLAGSTRING 并生成新的记录
List<Map<String, Object>> tempList = new ArrayList<>();
Map<Integer, Integer> summaryMap = new HashMap<>();
for (Map<String, Object> item : list) {
String flagString = (String) item.get("FLAGSTRING");
Integer sumCarCount = ((BigDecimal) item.get("SUMCARCOUNT")).intValue();
// 按照逗号拆分 FLAGSTRING
String[] flags = flagString.split(",");
for (String flag : flags) {
int flagValue = Integer.parseInt(flag.trim());
Map<String, Object> newItem = new HashMap<>();
newItem.put("FLAGSTRING", flagValue);
newItem.put("SUMCARCOUNT", sumCarCount);
tempList.add(newItem);
// 同时更新汇总 Map
summaryMap.merge(flagValue, sumCarCount, Integer::sum);
}
}
// 将汇总结果转换为列表,并添加 FLAGTEXT 字段 对汇总结果按 SUMCARCOUNT 进行倒序排序
return summaryMap.entrySet().stream()
.map(entry -> {
Map<String, Object> summaryItem = new HashMap<>();
summaryItem.put("FLAGSTRING", entry.getKey());
summaryItem.put("SUMCARCOUNT", entry.getValue());
// 添加 FLAGTEXT 字段
summaryItem.put("FLAGTEXT", flagTextMap.get(entry.getKey()));
return summaryItem;
}).sorted((a, b) -> {
Integer sumCarCountA = (Integer) a.get("SUMCARCOUNT");
Integer sumCarCountB = (Integer) b.get("SUMCARCOUNT");
return sumCarCountB.compareTo(sumCarCountA);
}).collect(Collectors.toList());
}
}

@ -0,0 +1,255 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL如果设置为WARN则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时配置文件如果发生改变将会被重新加载默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -->
<configuration scan="false" scanPeriod="10 seconds" debug="true">
<springProperty scope="context" name="logLevel" source="spring.logback.level"/>
<springProperty scope="context" name="APP_NAME" source="spring.logback.appName"/>
<springProperty scope="context" name="myMaxHistory" source="spring.logback.myMaxHistory"/>
<springProperty scope="context" name="myFileSize" source="spring.logback.myFileSize"/>
<springProperty scope="context" name="myTotalSizeCap" source="spring.logback.myTotalSizeCap"/>
<springProperty scope="context" name="logPath" source="spring.logback.logPath"/>
<contextName>${APP_NAME}</contextName>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!--彩色日志输出格式-->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%level){blue} %clr(${PID}){magenta} %clr([%thread]){orange} %clr(%logger){cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!--非彩色日志输出格式-->
<property name="PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level 服务名称:${APP_NAME} %logger{36} - %msg%n"/>
<!--dev文件路径src同级目录logs,如果上级目录不存在会自动创建-->
<property name="DEV_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%class:%line] %logger{50} - %m %n</pattern>-->
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>${PATTERN}</pattern>
<!-- <charset>UTF-8</charset>-->
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 按照每天生成输出日志文件 -->
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<!--格式化输出:%d表示日期%thread表示线程%-5level级别从左显示五个字符宽度%logger{36}logger是class的全名,后面的数字代表限制最长的字符,%msg日志消息%n换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<!--滚动策略按照时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily 文件名称 -->
<fileNamePattern>${DEV_FILE_PATH}/output-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${DEV_FILE_PATH}/log_info_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
<!-- 当文件总大小超过2GB先删除30天内最早的文件。不会删除30天外的文件。 -->
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${DEV_FILE_PATH}/log_error_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
<!-- 当文件总大小超过1GB先删除10天内最早的文件。不会删除10天外的文件。 -->
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_warn_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 每产生一个日志文件该日志文件的保存期限为10天 &ndash;&gt;-->
<!-- <maxHistory>10</maxHistory>-->
<!-- <maxFileSize>20MB</maxFileSize>-->
<!-- <totalSizeCap>500MB</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>WARN</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!-- <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_debug_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 当文件总大小超过1GB先删除10天内最早的文件。不会删除10天外的文件。 &ndash;&gt;-->
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!-- <appender name="SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log-sql-%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 每产生一个日志文件该日志文件的保存期限为3天 &ndash;&gt;-->
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!--异步输出-->
<!-- <appender name="DEBUG_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>2048</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="DEBUG"/>-->
<!-- </appender>-->
<!--异步输出-->
<appender name="ERROR_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>1024</queueSize>
<includeCallerData>true</includeCallerData>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="ERROR"/>
</appender>
<!--异步输出-->
<!-- <appender name="WARN_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>1024</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="WARN"/>-->
<!-- </appender>-->
<!--异步输出-->
<appender name="INFO_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>2048</queueSize>
<includeCallerData>true</includeCallerData>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="INFO"/>
</appender>
<!--异步输出-->
<!-- <appender name="SQL_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>2048</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="SQL"/>-->
<!-- </appender>-->
<!--
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
以及指定<appender><logger>仅有一个name属性
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
还有一个特俗值INHERITED或者同义词NULL代表强制执行上级的级别。
如果未设置此属性那么当前logger将会继承上级的级别。
addtivity:是否向上级logger传递打印信息。默认是true。
-->
<!-- <logger name="dao" level="ERROR">-->
<!-- <appender-ref ref="SQL"/>-->
<!-- <appender-ref ref="STDOUT"/>-->
<!-- </logger>-->
<root level="${logLevel}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="INFO_ASYNC_LOG"/>
<!-- <appender-ref ref="WARN_ASYNC_LOG"/>-->
<appender-ref ref="ERROR_ASYNC_LOG"/>
<!-- <appender-ref ref="DEBUG_ASYNC_LOG"/>-->
<!-- <appender-ref ref="SQL_ASYNC_LOG"/>-->
</root>
</configuration>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -5,8 +5,8 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>大屏展示</title>
<script type="module" crossorigin src="./assets/index-3df73ed2.js"></script>
<link rel="stylesheet" href="./assets/index-9beced89.css">
<script type="module" crossorigin src="./assets/index-d502ac33.js"></script>
<link rel="stylesheet" href="./assets/index-eacbe4a1.css">
</head>
<body>

@ -11,5 +11,7 @@
10 2024年11月11日 1.0.9 将前端路由页面去掉都由主框架路径跳转同时兼容GoldenDB数据库
11 2024年11月20日 1.0.10 优化大屏折线图
12 2024年11月25日 1.0.11 优化关注门架查询语句
13 2024年01月10日 1.0.12 报表查询跳转地址从10.15.110.58:8081更改为10.15.0.171:8081
13 2025年01月10日 1.0.12 报表查询跳转地址从10.15.110.58:8081更改为10.15.0.171:8081
14 2025年03月13日 1.0.13 增加收费站效能评价系统相关页面及代码

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.InSumDayMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectInspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_IN_SUM_DAY
WHERE FLAG > 1
AND STANO = #{stano}
AND CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
</select>
<select id="selectLeftTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectLeftBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleTopInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_IN_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.InSumHourMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectInspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_IN_SUM_HOUR
WHERE FLAG > 1
AND STANO = #{stano}
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
</select>
<select id="selectLeftTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectLeftBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
AND FLAG>1
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleTopInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_IN_SUM_HOUR
WHERE stano = #{stano}
AND FLAG>1
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.NameTableMapper">
<resultMap id="BaseResultMap" type="com.nmggs.query.entity.xnpj.NameTable">
<result column="BEGDATE" jdbcType="TIMESTAMP" property="begdate"/>
<result column="AREANO" jdbcType="DECIMAL" property="areano"/>
<result column="ROADNO" jdbcType="DECIMAL" property="roadno"/>
<result column="STANO" jdbcType="DECIMAL" property="stano"/>
<result column="ROADNAME" jdbcType="VARCHAR" property="roadname"/>
<result column="STANAME" jdbcType="VARCHAR" property="staname"/>
<result column="STATYPE" jdbcType="DECIMAL" property="statype"/>
<result column="STATIONHEX" jdbcType="VARCHAR" property="stationhex"/>
<result column="GBSTATIONID" jdbcType="VARCHAR" property="gbstationid"/>
</resultMap>
</mapper>

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.OutSumDayMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectOutspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_OUT_SUM_DAY
WHERE FLAG > 1
AND STANO = #{stano}
AND CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
</select>
<select id="selectRightTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectRightBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleBottomInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_OUT_SUM_DAY
WHERE stano = #{stano}
and FLAG>1
and CLASSDATE >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd')
AND CLASSDATE &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.OutSumHourMapper">
<select id="selectInfoList" resultType="com.nmggs.query.entity.xnpj.SumQueryInfo">
SELECT m.STANO, m.GBTYPE, sum(SUMCARCOUNT) as SUMCARCOUNT, sum(SUMOPRTIMELEN) as SUMOPRTIMELEN
FROM (SELECT t.*, s.GBTYPE
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) m
GROUP BY m.STANO, m.GBTYPE
</select>
<select id="selectOutspecialcount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(CARCOUNT), 0) AS total_carcount
FROM SFZ_XNPJ_OUT_SUM_HOUR
WHERE FLAG > 1
AND STANO = #{stano}
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
</select>
<select id="selectRightTopInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY PORTNO ASC
</select>
<select id="selectRightBottomInfoList" resultType="java.util.Map">
SELECT a.* , p.* FROM (SELECT t.*, s.GBTYPE,n.STANAME
FROM (
(SELECT STANO, PORTNO, sum(CARCOUNT) as SUMCARCOUNT, sum(OPRTIMELEN) as SUMOPRTIMELEN
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
and FLAG>1
and DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, PORTNO) t
LEFT JOIN NAME_TABLE n on n.STANO = t.STANO
LEFT JOIN SETUP_TABLE s on s.STANO = t.STANO and s.PORTNO = t.PORTNO
)) a
LEFT JOIN PORTTYPEGB_TEXT p on p.VALUE = a.GBTYPE
ORDER BY SUMCARCOUNT desc
</select>
<select id="selectMiddleBottomInfoList" resultType="java.util.Map">
SELECT STANO, FLAG, sum(CARCOUNT) as SUMCARCOUNT
from SFZ_XNPJ_OUT_SUM_HOUR
WHERE stano = #{stano}
AND FLAG>1
AND DT >= TO_DATE(#{startDateStr}, 'yyyy-MM-dd HH24:MI:SS')
AND DT &lt;= TO_DATE(#{endDateStr}, 'yyyy-MM-dd HH24:MI:SS')
GROUP BY STANO, FLAG
</select>
</mapper>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmggs.query.mapper.SubCompanyMapper">
</mapper>

@ -0,0 +1,255 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL如果设置为WARN则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时配置文件如果发生改变将会被重新加载默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -->
<configuration scan="false" scanPeriod="10 seconds" debug="true">
<springProperty scope="context" name="logLevel" source="spring.logback.level"/>
<springProperty scope="context" name="APP_NAME" source="spring.logback.appName"/>
<springProperty scope="context" name="myMaxHistory" source="spring.logback.myMaxHistory"/>
<springProperty scope="context" name="myFileSize" source="spring.logback.myFileSize"/>
<springProperty scope="context" name="myTotalSizeCap" source="spring.logback.myTotalSizeCap"/>
<springProperty scope="context" name="logPath" source="spring.logback.logPath"/>
<contextName>${APP_NAME}</contextName>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!--彩色日志输出格式-->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%level){blue} %clr(${PID}){magenta} %clr([%thread]){orange} %clr(%logger){cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!--非彩色日志输出格式-->
<property name="PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level 服务名称:${APP_NAME} %logger{36} - %msg%n"/>
<!--dev文件路径src同级目录logs,如果上级目录不存在会自动创建-->
<property name="DEV_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%class:%line] %logger{50} - %m %n</pattern>-->
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>${PATTERN}</pattern>
<!-- <charset>UTF-8</charset>-->
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 按照每天生成输出日志文件 -->
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<!--格式化输出:%d表示日期%thread表示线程%-5level级别从左显示五个字符宽度%logger{36}logger是class的全名,后面的数字代表限制最长的字符,%msg日志消息%n换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<!--滚动策略按照时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily 文件名称 -->
<fileNamePattern>${DEV_FILE_PATH}/output-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${DEV_FILE_PATH}/log_info_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
<!-- 当文件总大小超过2GB先删除30天内最早的文件。不会删除30天外的文件。 -->
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${DEV_FILE_PATH}/log_error_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
<!-- 当文件总大小超过1GB先删除10天内最早的文件。不会删除10天外的文件。 -->
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_warn_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 每产生一个日志文件该日志文件的保存期限为10天 &ndash;&gt;-->
<!-- <maxHistory>10</maxHistory>-->
<!-- <maxFileSize>20MB</maxFileSize>-->
<!-- <totalSizeCap>500MB</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>WARN</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!-- <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_debug_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 当文件总大小超过1GB先删除10天内最早的文件。不会删除10天外的文件。 &ndash;&gt;-->
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!-- <appender name="SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log-sql-%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 每产生一个日志文件该日志文件的保存期限为3天 &ndash;&gt;-->
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!--异步输出-->
<!-- <appender name="DEBUG_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>2048</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="DEBUG"/>-->
<!-- </appender>-->
<!--异步输出-->
<appender name="ERROR_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>1024</queueSize>
<includeCallerData>true</includeCallerData>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="ERROR"/>
</appender>
<!--异步输出-->
<!-- <appender name="WARN_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>1024</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="WARN"/>-->
<!-- </appender>-->
<!--异步输出-->
<appender name="INFO_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>2048</queueSize>
<includeCallerData>true</includeCallerData>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="INFO"/>
</appender>
<!--异步输出-->
<!-- <appender name="SQL_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>2048</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="SQL"/>-->
<!-- </appender>-->
<!--
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
以及指定<appender><logger>仅有一个name属性
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
还有一个特俗值INHERITED或者同义词NULL代表强制执行上级的级别。
如果未设置此属性那么当前logger将会继承上级的级别。
addtivity:是否向上级logger传递打印信息。默认是true。
-->
<!-- <logger name="dao" level="ERROR">-->
<!-- <appender-ref ref="SQL"/>-->
<!-- <appender-ref ref="STDOUT"/>-->
<!-- </logger>-->
<root level="${logLevel}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="INFO_ASYNC_LOG"/>
<!-- <appender-ref ref="WARN_ASYNC_LOG"/>-->
<appender-ref ref="ERROR_ASYNC_LOG"/>
<!-- <appender-ref ref="DEBUG_ASYNC_LOG"/>-->
<!-- <appender-ref ref="SQL_ASYNC_LOG"/>-->
</root>
</configuration>

@ -5,8 +5,8 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>大屏展示</title>
<script type="module" crossorigin src="./assets/index-3df73ed2.js"></script>
<link rel="stylesheet" href="./assets/index-9beced89.css">
<script type="module" crossorigin src="./assets/index-d502ac33.js"></script>
<link rel="stylesheet" href="./assets/index-eacbe4a1.css">
</head>
<body>

@ -11,5 +11,7 @@
10 2024年11月11日 1.0.9 将前端路由页面去掉都由主框架路径跳转同时兼容GoldenDB数据库
11 2024年11月20日 1.0.10 优化大屏折线图
12 2024年11月25日 1.0.11 优化关注门架查询语句
13 2024年01月10日 1.0.12 报表查询跳转地址从10.15.110.58:8081更改为10.15.0.171:8081
13 2025年01月10日 1.0.12 报表查询跳转地址从10.15.110.58:8081更改为10.15.0.171:8081
14 2025年03月13日 1.0.13 增加收费站效能评价系统相关页面及代码

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save