diff --git a/nflg-wms-admin/src/main/resources/fonts/simsun.ttc b/nflg-wms-admin/fonts/simsun.ttc similarity index 100% rename from nflg-wms-admin/src/main/resources/fonts/simsun.ttc rename to nflg-wms-admin/fonts/simsun.ttc diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PathUtils.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PathUtils.java new file mode 100644 index 00000000..7fc40df2 --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PathUtils.java @@ -0,0 +1,22 @@ +package com.nflg.wms.admin.util; + +import java.io.File; + +public class PathUtils { + + public static String getPath() { + String classPath = PathUtils.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + System.out.println("classPath:" + classPath); + // 如果是jar包运行,获取jar包所在目录 + if (classPath.contains(".jar")) { + File jarFile = new File(classPath); + return jarFile.getParent(); + } + // 如果是开发环境,获取target/classes目录的父目录 + File classDir = new File(classPath); + if (classDir.getName().equals("classes")) { + return classDir.getParentFile().getParentFile().getAbsolutePath(); + } + return new File(classPath).getAbsolutePath(); + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PdfGeneratorUtil.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PdfGeneratorUtil.java index eae70c8a..42e1d24b 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PdfGeneratorUtil.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/PdfGeneratorUtil.java @@ -1,20 +1,33 @@ package com.nflg.wms.admin.util; import com.lowagie.text.pdf.BaseFont; +import com.nflg.wms.common.util.VUtil; import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.io.FilenameUtils; import org.springframework.core.io.ClassPathResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.xhtmlrenderer.pdf.ITextRenderer; +import java.io.File; +import java.io.IOException; import java.io.OutputStream; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; public class PdfGeneratorUtil { - private static final String fontPath = "fonts/simsun.ttc"; + private static final Set SUPPORTED_EXTENSIONS = new HashSet<>(Arrays.asList( + "ttf", "ttc", "otf", "pfb" + )); public static void generatePdf(String name,String html, HttpServletResponse response) throws Exception { URL baseUrl = new ClassPathResource("template/").getURL(); @@ -23,7 +36,7 @@ public class PdfGeneratorUtil { public static void generatePdf(String name,String html,String baseUrl, HttpServletResponse response) throws Exception { ITextRenderer renderer = new ITextRenderer(); - renderer.getFontResolver().addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); + loadFonts(renderer); renderer.setDocumentFromString(html,baseUrl); renderer.layout(); renderer.createPDF(response.getOutputStream()); @@ -39,9 +52,21 @@ public class PdfGeneratorUtil { public static void generatePdf(String name,String html,String baseUrl,OutputStream output) throws Exception { ITextRenderer renderer = new ITextRenderer(); - renderer.getFontResolver().addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); + loadFonts(renderer); renderer.setDocumentFromString(html,baseUrl); renderer.layout(); renderer.createPDF(output); } + + private static void loadFonts(ITextRenderer renderer) throws IOException { + Path fontsDir = Paths.get(PathUtils.getPath(), "fonts"); + VUtil.trueThrowBusinessError(!Files.exists(fontsDir) || !Files.isDirectory(fontsDir)) + .throwMessage("fonts文件夹不存在: " + fontsDir); + File directory = fontsDir.toFile(); + File[] fonts = directory.listFiles((dir, name) -> SUPPORTED_EXTENSIONS.contains(FilenameUtils.getExtension(name))); + VUtil.trueThrowBusinessError(Objects.isNull(fonts) || fonts.length == 0).throwMessage("未找到有效字体"); + for (File font : fonts) { + renderer.getFontResolver().addFont(font.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED); + } + } } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/resources/application.yml b/nflg-wms-admin/src/main/resources/application.yml index 6453e699..e36a23fc 100644 --- a/nflg-wms-admin/src/main/resources/application.yml +++ b/nflg-wms-admin/src/main/resources/application.yml @@ -33,4 +33,12 @@ management: web: exposure: include: '*' - enabled-by-default: on \ No newline at end of file + enabled-by-default: on + endpoint: + health: + show-details: always + health: + db: + enabled: true + redis: + enabled: true \ No newline at end of file diff --git a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeployTest.java b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeployTest.java index fd765391..fa6c1c11 100644 --- a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeployTest.java +++ b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeployTest.java @@ -35,6 +35,8 @@ public class DeployTest { sshUtil.connect("192.168.163.84", 22, "root", "CMP2025nf"); //处理主jar包 handleFile(sshUtil, localPath + jarName, remotePath + jarName); + //处理字体目录 + handleDir(sshUtil, localPath, remotePath, "fonts"); //处理lib目录 // handleDir(sshUtil, localPath, remotePath, "lib"); //执行脚本启动服务 diff --git a/nflg-wms-auth/pom.xml b/nflg-wms-auth/pom.xml index 3761b7d9..568457cb 100644 --- a/nflg-wms-auth/pom.xml +++ b/nflg-wms-auth/pom.xml @@ -44,6 +44,10 @@ com.github.loki4j loki-logback-appender + + org.springframework.boot + spring-boot-starter-actuator + com.jcraft jsch diff --git a/nflg-wms-auth/src/main/resources/application.yml b/nflg-wms-auth/src/main/resources/application.yml index 058150cd..16000a39 100644 --- a/nflg-wms-auth/src/main/resources/application.yml +++ b/nflg-wms-auth/src/main/resources/application.yml @@ -33,4 +33,18 @@ sa-token: jwt-secret-key: asdasdasifhueuiwyurfewbfjsdafjk logging: level: - root: info \ No newline at end of file + root: info +management: + endpoints: + web: + exposure: + include: '*' + enabled-by-default: on + endpoint: + health: + show-details: always + health: + db: + enabled: true + redis: + enabled: true \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java index 7a80a52c..4dcbae2c 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java @@ -2,8 +2,10 @@ package com.nflg.wms.common.pojo; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.STATE; import lombok.Data; +import org.slf4j.MDC; import java.io.Serializable; import java.time.LocalDateTime; @@ -15,7 +17,8 @@ public class ApiResult implements Serializable { private String type; private String message; private Object extras; - private LocalDateTime time=LocalDateTime.now(); + private LocalDateTime time = LocalDateTime.now(); + private String traceId = MDC.get(Constant.TRACE_ID); private T result; public static ApiResult success(T value) { diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackageMaterialDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackageMaterialDTO.java index 090e5b0e..ae7b7f15 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackageMaterialDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackageMaterialDTO.java @@ -1,5 +1,7 @@ package com.nflg.wms.common.pojo.dto; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.experimental.Accessors; @@ -13,6 +15,7 @@ public class PackageMaterialDTO { /** * 编号 */ + @NotBlank private String no; /** @@ -28,16 +31,19 @@ public class PackageMaterialDTO { /** * 工位 */ + @NotBlank private String station; /** * 托盘 */ + @NotBlank private String tray; /** * 数量 */ + @NotNull private BigDecimal num; /** @@ -52,6 +58,7 @@ public class PackageMaterialDTO { /** * 版本 */ + @NotNull private Integer version; /** diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java index df6bb311..bcaba7af 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java @@ -1,6 +1,7 @@ package com.nflg.wms.common.pojo.qo; import com.nflg.wms.common.pojo.dto.PackageMaterialDTO; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -71,6 +72,7 @@ public class PackageAddQO { /** * 零件清单 */ + @Valid @NotEmpty private List materials; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayVO.java index bdefb38e..30a7e8b2 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayVO.java @@ -37,7 +37,7 @@ public class TrayVO { private String tray; /** - * 状态,0:未打包;1:已打包;2-在途; + * 状态,0:未打包;1:已打包;2-在途;3:已收货 */ private Short state; diff --git a/nflg-wms-gateway/src/main/resources/application.yml b/nflg-wms-gateway/src/main/resources/application.yml index 8c88d137..803277b8 100644 --- a/nflg-wms-gateway/src/main/resources/application.yml +++ b/nflg-wms-gateway/src/main/resources/application.yml @@ -31,4 +31,13 @@ management: endpoints: web: exposure: - include: "*" \ No newline at end of file + include: '*' + enabled-by-default: on + endpoint: + health: + show-details: always + health: + db: + enabled: true + redis: + enabled: true \ No newline at end of file diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml index 072d199f..922ed2af 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml @@ -3,30 +3,25 @@ diff --git a/nflg-wms-scheduled/pom.xml b/nflg-wms-scheduled/pom.xml index 3febb551..0cea5c1c 100644 --- a/nflg-wms-scheduled/pom.xml +++ b/nflg-wms-scheduled/pom.xml @@ -50,6 +50,10 @@ org.springframework.ldap spring-ldap-core + + org.springframework.boot + spring-boot-starter-actuator + diff --git a/nflg-wms-scheduled/src/main/resources/application.yml b/nflg-wms-scheduled/src/main/resources/application.yml index 9ce6c31b..0f660931 100644 --- a/nflg-wms-scheduled/src/main/resources/application.yml +++ b/nflg-wms-scheduled/src/main/resources/application.yml @@ -19,4 +19,18 @@ spring: group: ${spring.profiles.active} logging: level: - root: info \ No newline at end of file + root: info +management: + endpoints: + web: + exposure: + include: '*' + enabled-by-default: on + endpoint: + health: + show-details: always + health: + db: + enabled: true + redis: + enabled: true \ No newline at end of file diff --git a/nflg-wms-srm-receive/pom.xml b/nflg-wms-srm-receive/pom.xml index 0dc2f65f..6d30d596 100644 --- a/nflg-wms-srm-receive/pom.xml +++ b/nflg-wms-srm-receive/pom.xml @@ -34,6 +34,10 @@ com.github.loki4j loki-logback-appender + + org.springframework.boot + spring-boot-starter-actuator + com.jcraft jsch diff --git a/nflg-wms-srm-receive/src/main/resources/application.yml b/nflg-wms-srm-receive/src/main/resources/application.yml index 5e9893ba..cc62a668 100644 --- a/nflg-wms-srm-receive/src/main/resources/application.yml +++ b/nflg-wms-srm-receive/src/main/resources/application.yml @@ -23,4 +23,18 @@ spring: group: ${spring.profiles.active} logging: level: - root: info \ No newline at end of file + root: info +management: + endpoints: + web: + exposure: + include: '*' + enabled-by-default: on + endpoint: + health: + show-details: always + health: + db: + enabled: true + redis: + enabled: true \ No newline at end of file diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java index 6ac01d8f..6976370c 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.resource.NoResourceFoundException; import java.util.ArrayList; import java.util.List; @@ -66,4 +67,11 @@ public class GlobalRestControllerAdvice { public String handleNotLoginException(NotLoginException e) { return "请重新登录"; } + + @ExceptionHandler(NoResourceFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public ApiResult handleNoResourceFoundException(NoResourceFoundException ex) { + log.error("请求的地址无效: ", ex); + return ApiResult.error(STATE.BusinessError, "请求的地址无效:" + ex.getResourcePath()); + } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 433d87c5..e8a5cb79 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ ${java.version} ${java.version} UTF-8 - 1.18.34 + 1.18.38 2023.0.1 2023.0.1.0 5.8.36