pom.xml
@@ -23,6 +23,9 @@ <mybatis-plus.version>3.5.6</mybatis-plus.version> <dynamic-datasource-spring-boot-starter.version>3.2.0</dynamic-datasource-spring-boot-starter.version> <druid.version>1.1.22</druid.version> <knife4j-spring-boot-starter.version>3.0.3</knife4j-spring-boot-starter.version> <knife4j-spring-ui.version>2.0.9</knife4j-spring-ui.version> </properties> <dependencies> @@ -73,6 +76,13 @@ <scope>runtime</scope> </dependency> <!-- knife4j --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>${knife4j-spring-boot-starter.version}</version> </dependency> <!-- Lombok --> <dependency> <groupId>org.projectlombok</groupId> src/main/java/com/lxzn/CodeGenerate.java
@@ -3,8 +3,6 @@ import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.nio.file.Paths; public class CodeGenerate { public static void main(String[] args) { FastAutoGenerator.create("jdbc:sqlserver://127.0.0.1:1433;databaseName=XHJ-HUB3Line", "sa", "sa123") @@ -22,7 +20,7 @@ .xml("mapper.xml") ) .strategyConfig(builder -> builder .addInclude("T020_BoltCheck") .addInclude("TC_OPState") .entityBuilder() .enableLombok() ) src/main/java/com/lxzn/LxznSystemCollectApplication.java
@@ -1,8 +1,10 @@ package com.lxzn; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ConfigurableApplicationContext; @@ -16,7 +18,8 @@ * æ¥éæé: æªéæmongoæ¥éï¼å¯ä»¥æå¼å¯å¨ç±»ä¸é¢ç注é exclude={MongoAutoConfiguration.class} */ @Slf4j @SpringBootApplication @SpringBootApplication(scanBasePackages = "com.lxzn", exclude = { DataSourceAutoConfiguration.class }) @MapperScan(value={"com.lxzn.modules.**.mapper*"}) public class LxznSystemCollectApplication extends SpringBootServletInitializer { @Override @@ -33,6 +36,7 @@ log.info("\n----------------------------------------------------------\n\t" + "Application Lxzn System Collect Server is running! Access URLs:\n\t" + "Local: \t\thttp://localhost:" + port + path + "/\n\t" + "Swaggerææ¡£: \thttp://" + ip + ":" + port + path + "/doc.html\n" + "----------------------------------------------------------"); } src/main/java/com/lxzn/common/CommonConstant.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.lxzn.common; /** * @Description: éç¨å¸¸é * @author: jeecg-boot */ public interface CommonConstant { /** * {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */ Integer SC_INTERNAL_SERVER_ERROR_500 = 500; /** * {@code 200 OK} (HTTP/1.0 - RFC 1945) */ Integer SC_OK_200 = 200; /** * è®¿é®æéè®¤è¯æªéè¿ 510 */ Integer SC_JEECG_NO_AUTHZ = 510; /**===============================================================================================*/ /** * ::é常éè¦:: * 注æï¼è¿å个常éå¼å¦æä¿®æ¹ï¼éè¦ä¸ jeecg-boot-starter/jeecg-boot-common/org.jeecg.config.FeignConfig ç±»ä¸çå¼ä¿æä¸è´ã */ String X_ACCESS_TOKEN = "X-Access-Token"; } src/main/java/com/lxzn/common/Result.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,176 @@ package com.lxzn.common; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; /** * æ¥å£è¿åæ°æ®æ ¼å¼ * @author scott * @email jeecgos@163.com * @date 2019å¹´1æ19æ¥ */ @Data @ApiModel(value = "æ¥å£è¿å对象", description = "æ¥å£è¿å对象") public class Result<T> implements Serializable { private static final long serialVersionUID = 1L; /** * æåæ å¿ */ @ApiModelProperty(value = "æåæ å¿") private boolean success = true; /** * è¿åå¤çæ¶æ¯ */ @ApiModelProperty(value = "è¿åå¤çæ¶æ¯") private String message = ""; /** * è¿å代ç */ @ApiModelProperty(value = "è¿å代ç ") private Integer code = 0; /** * è¿åæ°æ®å¯¹è±¡ data */ @ApiModelProperty(value = "è¿åæ°æ®å¯¹è±¡") private T result; /** * æ¶é´æ³ */ @ApiModelProperty(value = "æ¶é´æ³") private long timestamp = System.currentTimeMillis(); public Result() { } /** * å ¼å®¹VUE3çtoken失æä¸è·³è½¬ç»å½é¡µé¢ * @param code * @param message */ public Result(Integer code, String message) { this.code = code; this.message = message; } public Result<T> success(String message) { this.message = message; this.code = CommonConstant.SC_OK_200; this.success = true; return this; } public static <T> Result<T> ok() { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); return r; } public static <T> Result<T> ok(String msg) { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); //Result OK(String msg)æ¹æ³ä¼é æå ¼å®¹æ§é®é¢ issues/I4IP3D r.setResult((T) msg); r.setMessage(msg); return r; } public static <T> Result<T> ok(T data) { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); r.setResult(data); return r; } public static <T> Result<T> OK() { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); return r; } /** * æ¤æ¹æ³æ¯ä¸ºäºå ¼å®¹å级æå建 * * @param msg * @param <T> * @return */ public static <T> Result<T> OK(String msg) { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); r.setMessage(msg); //Result OK(String msg)æ¹æ³ä¼é æå ¼å®¹æ§é®é¢ issues/I4IP3D r.setResult((T) msg); return r; } public static <T> Result<T> OK(T data) { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); r.setResult(data); return r; } public static <T> Result<T> OK(String msg, T data) { Result<T> r = new Result<T>(); r.setSuccess(true); r.setCode(CommonConstant.SC_OK_200); r.setMessage(msg); r.setResult(data); return r; } public static <T> Result<T> error(String msg, T data) { Result<T> r = new Result<T>(); r.setSuccess(false); r.setCode(CommonConstant.SC_INTERNAL_SERVER_ERROR_500); r.setMessage(msg); r.setResult(data); return r; } public static <T> Result<T> error(String msg) { return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg); } public static <T> Result<T> error(int code, String msg) { Result<T> r = new Result<T>(); r.setCode(code); r.setMessage(msg); r.setSuccess(false); return r; } public Result<T> error500(String message) { this.message = message; this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500; this.success = false; return this; } /** * æ æé访é®è¿åç»æ */ public static <T> Result<T> noauth(String msg) { return error(CommonConstant.SC_JEECG_NO_AUTHZ, msg); } @JsonIgnore private String onlTable; } src/main/java/com/lxzn/config/Swagger2Config.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,183 @@ package com.lxzn.config; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import com.lxzn.common.CommonConstant; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.util.ReflectionUtils; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider; import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * @Author scott */ @Configuration @EnableSwagger2 //å¼å¯ Swagger2 @EnableKnife4j //å¼å¯ knife4jï¼å¯ä»¥ä¸å @Import(BeanValidatorPluginsConfiguration.class) public class Swagger2Config implements WebMvcConfigurer { /** * * æ¾ç¤ºswagger-ui.htmlææ¡£å±ç¤ºé¡µï¼è¿å¿ é¡»æ³¨å ¥swaggerèµæºï¼ * * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } /** * swagger2çé ç½®æä»¶ï¼è¿éå¯ä»¥é ç½®swagger2çä¸äºåºæ¬çå å®¹ï¼æ¯å¦æ«æçå çç * * @return Docket */ @Bean(value = "defaultApi") public Docket defaultApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //æ¤å è·¯å¾ä¸çç±»ï¼æçææ¥å£ææ¡£ .apis(RequestHandlerSelectors.basePackage("com.lxzn")) //å äºApiOperation注解çç±»ï¼æçææ¥å£ææ¡£ .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build() .securitySchemes(Collections.singletonList(securityScheme())) .securityContexts(securityContexts()) .globalOperationParameters(setHeaderToken()) .groupName("default"); } /*** * oauth2é ç½® * éè¦å¢å swaggerææåè°å°å * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html * @return */ @Bean SecurityScheme securityScheme() { return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header"); } /** * JWT token * @return */ private List<Parameter> setHeaderToken() { ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<>(); tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); pars.add(tokenPar.build()); return pars; } /** * apiææ¡£ç详ç»ä¿¡æ¯å½æ°,注æè¿éçæ³¨è§£å¼ç¨çæ¯åªä¸ª * * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() // //大æ é¢ .title("LXZN System Collect åå°æå¡APIæ¥å£ææ¡£") // çæ¬å· .version("1.0") // .termsOfServiceUrl("NO terms of service") // æè¿° .description("åå°APIæ¥å£") // ä½è .contact(new Contact("西å®çµç§æºçµæºè½ç³»ç»ææ¯æéå ¬å¸", "www.xalxzn.com", "zhangherong@xalxzn.com")) .license("The Apache License, Version 2.0") .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html") .build(); } /** * æ°å¢ securityContexts ä¿æç»å½ç¶æ */ private List<SecurityContext> securityContexts() { return new ArrayList( Collections.singleton(SecurityContext.builder() .securityReferences(defaultAuth()) .forPaths(PathSelectors.regex("^(?!auth).*$")) .build()) ); } private List<SecurityReference> defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; return new ArrayList( Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes))); } /** * è§£å³springboot2.6 åspringfoxä¸å ¼å®¹é®é¢ * @return */ @Bean public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { return new BeanPostProcessor() { @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); } return bean; } private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) { List<T> copy = mappings.stream() .filter(mapping -> mapping.getPatternParser() == null) .collect(Collectors.toList()); mappings.clear(); mappings.addAll(copy); } @SuppressWarnings("unchecked") private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) { try { Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); field.setAccessible(true); return (List<RequestMappingInfoHandlerMapping>) field.get(bean); } catch (IllegalArgumentException | IllegalAccessException e) { throw new IllegalStateException(e); } } }; } } src/main/java/com/lxzn/modules/assembly2/controller/AssemblyCollectionJobController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.lxzn.modules.assembly2.controller; import com.lxzn.common.Result; import com.lxzn.modules.assembly2.entity.TcOpstate; import com.lxzn.modules.assembly2.service.ITcOpstateService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Api(tags = "2#è£ é 线éé") @RestController @RequestMapping("/assembly2/job") public class AssemblyCollectionJobController { @Autowired private ITcOpstateService tcOpstateService; @ApiOperation(value = "2å·è£ é 线éé-设å¤ç¶æ", notes = "2å·è£ é 线éé-设å¤ç¶æ") @GetMapping("/opstate") public Result<?> testOpStateList(){ List<TcOpstate> list = tcOpstateService.list(); return Result.ok(list); } } src/main/java/com/lxzn/modules/assembly2/entity/T020Boltcheck.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package com.lxzn.modules.assembly2.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; /** * <p> * * </p> * * @author baomidou * @since 2025-09-02 */ @Getter @Setter @TableName("T020_BoltCheck") public class T020Boltcheck implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "RecordID", type = IdType.AUTO) private Integer recordID; private LocalDateTime recordTime; private Integer modelID; private Double length; private Double lengthUL; private Double lengthLL; private Double pitchMAX; private Double pitchMIN; private Double pitchUL; private Double pitchLL; private String result; } src/main/java/com/lxzn/modules/assembly2/entity/TcOpstate.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.lxzn.modules.assembly2.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; /** * <p> * * </p> * * @author baomidou * @since 2025-09-03 */ @Getter @Setter @TableName("TC_OPState") public class TcOpstate implements Serializable { private static final long serialVersionUID = 1L; private LocalDateTime recordTime; @TableId(value = "OPName", type = IdType.AUTO) private String oPName; private String state; } src/main/java/com/lxzn/modules/assembly2/mapper/T020BoltcheckMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.lxzn.modules.assembly2.mapper; import com.lxzn.modules.assembly2.entity.T020Boltcheck; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * Mapper æ¥å£ * </p> * * @author baomidou * @since 2025-09-02 */ public interface T020BoltcheckMapper extends BaseMapper<T020Boltcheck> { } src/main/java/com/lxzn/modules/assembly2/mapper/TcOpstateMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.lxzn.modules.assembly2.mapper; import com.lxzn.modules.assembly2.entity.TcOpstate; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * Mapper æ¥å£ * </p> * * @author baomidou * @since 2025-09-03 */ public interface TcOpstateMapper extends BaseMapper<TcOpstate> { } src/main/java/com/lxzn/modules/assembly2/mapper/xml/T020BoltcheckMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?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.lxzn.modules.assembly2.mapper.T020BoltcheckMapper"> </mapper> src/main/java/com/lxzn/modules/assembly2/mapper/xml/TcOpstateMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ <?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.lxzn.modules.assembly2.mapper.TcOpstateMapper"> </mapper> src/main/java/com/lxzn/modules/assembly2/service/IT020BoltcheckService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.lxzn.modules.assembly2.service; import com.lxzn.modules.assembly2.entity.T020Boltcheck; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * æå¡ç±» * </p> * * @author baomidou * @since 2025-09-02 */ public interface IT020BoltcheckService extends IService<T020Boltcheck> { } src/main/java/com/lxzn/modules/assembly2/service/ITcOpstateService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.lxzn.modules.assembly2.service; import com.lxzn.modules.assembly2.entity.TcOpstate; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * æå¡ç±» * </p> * * @author baomidou * @since 2025-09-03 */ public interface ITcOpstateService extends IService<TcOpstate> { } src/main/java/com/lxzn/modules/assembly2/service/impl/T020BoltcheckServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.lxzn.modules.assembly2.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.lxzn.modules.assembly2.entity.T020Boltcheck; import com.lxzn.modules.assembly2.mapper.T020BoltcheckMapper; import com.lxzn.modules.assembly2.service.IT020BoltcheckService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * æå¡å®ç°ç±» * </p> * * @author baomidou * @since 2025-09-02 */ @Service @DS("assembly2") public class T020BoltcheckServiceImpl extends ServiceImpl<T020BoltcheckMapper, T020Boltcheck> implements IT020BoltcheckService { } src/main/java/com/lxzn/modules/assembly2/service/impl/TcOpstateServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.lxzn.modules.assembly2.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.lxzn.modules.assembly2.entity.TcOpstate; import com.lxzn.modules.assembly2.mapper.TcOpstateMapper; import com.lxzn.modules.assembly2.service.ITcOpstateService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * æå¡å®ç°ç±» * </p> * * @author baomidou * @since 2025-09-03 */ @Service @DS("assembly2") public class TcOpstateServiceImpl extends ServiceImpl<TcOpstateMapper, TcOpstate> implements ITcOpstateService { } src/main/resources/application-dev.yml
@@ -42,14 +42,14 @@ username: sa password: sa123 driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver slave_1: assembly2: url: jdbc:sqlserver://127.0.0.1:1433;databasename=XHJ-HUB3Line;nullCatalogMeansCurrent=true username: sa password: sa123 driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver #mybatis plus 设置 mybatis-plus: mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml mapper-locations: classpath*:com/lxzn/modules/**/xml/*Mapper.xml global-config: # å ³éMP3.0èªå¸¦çbanner banner: false @@ -62,4 +62,14 @@ # è¿ä¸ªé ç½®ä¼å°æ§è¡çsqlæå°åºæ¥ï¼å¨å¼åææµè¯çæ¶åå¯ä»¥ç¨ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # è¿åç±»å为Map,æ¾ç¤ºnull对åºçåæ®µ call-setters-on-nulls: true call-setters-on-nulls: true #swagger knife4j: #å¼å¯å¢å¼ºé ç½® enable: true #å¼å¯ç产ç¯å¢å±è½ production: false basic: enable: false username: jeecg password: jeecg1314