Merge branch 'master' of https://gitee.com/yuanchu_code/lims-management-system
# Conflicts:
# .gitignore
| | |
| | | <<<<<<< HEAD |
| | | *.class |
| | | |
| | | # Mobile Tools for Java (J2ME) |
| | |
| | | |
| | | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml |
| | | hs_err_pid* |
| | | ======= |
| | | HELP.md |
| | | target/ |
| | | !.mvn/wrapper/maven-wrapper.jar |
| | | !**/src/main/**/target/ |
| | | !**/src/test/**/target/ |
| | | |
| | | ### STS ### |
| | | .apt_generated |
| | | .classpath |
| | | .factorypath |
| | | .project |
| | | .settings |
| | | .springBeans |
| | | .sts4-cache |
| | | |
| | | ### IntelliJ IDEA ### |
| | | .idea |
| | | *.iws |
| | | *.iml |
| | | *.ipr |
| | | *.log |
| | | |
| | | ### NetBeans ### |
| | | /nbproject/private/ |
| | | /nbbuild/ |
| | | /dist/ |
| | | /nbdist/ |
| | | /.nb-gradle/ |
| | | build/ |
| | | !**/src/main/**/build/ |
| | | !**/src/test/**/build/ |
| | | |
| | | ### VS Code ### |
| | | .vscode/ |
| | | >>>>>>> 97287ee79f67a623da39650ad9718131e8130cb5 |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <groupId>com.yuanchu</groupId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | </parent> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>framework</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>framework</name> |
| | | <description>framework</description> |
| | | |
| | | <packaging>jar</packaging> |
| | | <dependencies> |
| | | <!--æ°æ®åºè¿æ¥æ± --> |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>druid</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- mysqlé©±å¨ --> |
| | | <dependency> |
| | | <groupId>mysql</groupId> |
| | | <artifactId>mysql-connector-java</artifactId> |
| | | </dependency> |
| | | |
| | | <!--Swagger3-Uiç¾å--> |
| | | <dependency> |
| | | <groupId>com.github.xiaoymin</groupId> |
| | | <artifactId>knife4j-spring-ui</artifactId> |
| | | </dependency> |
| | | |
| | | <!--redis jarå
--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-data-redis</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.config; |
| | | |
| | | import com.alibaba.druid.pool.DruidDataSource; |
| | | import com.alibaba.druid.support.http.StatViewServlet; |
| | | import com.alibaba.druid.support.http.WebStatFilter; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.boot.web.servlet.ServletRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import javax.sql.DataSource; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | @Configuration |
| | | public class DruidConfig { |
| | | //å è½½application.yamlä¸çDruidé
ç½® |
| | | @ConfigurationProperties(prefix = "spring.datasource") |
| | | @Bean |
| | | public DataSource druid(){ |
| | | return new DruidDataSource(); |
| | | } |
| | | |
| | | //é
ç½®Druidççæ§ |
| | | //1ãé
ç½®ä¸ä¸ªç®¡çåå°çServlet |
| | | @Bean |
| | | public ServletRegistrationBean statViewServlet(){ |
| | | ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); |
| | | Map<String,String> initParams = new HashMap<>(); |
| | | |
| | | initParams.put("loginUsername","root"); |
| | | initParams.put("loginPassword","123456"); |
| | | initParams.put("allow","");//é»è®¤å°±æ¯å
许ææè®¿é® |
| | | // initParams.put("deny","192.168.15.21"); ç¦æ¢è¯¥IPè®¿é® |
| | | |
| | | bean.setInitParameters(initParams); |
| | | return bean; |
| | | } |
| | | |
| | | //2ãé
ç½®ä¸ä¸ªwebçæ§çfilter |
| | | @Bean |
| | | public FilterRegistrationBean webStatFilter(){ |
| | | FilterRegistrationBean bean = new FilterRegistrationBean(); |
| | | bean.setFilter(new WebStatFilter()); |
| | | |
| | | Map<String,String> initParams = new HashMap<>(); |
| | | initParams.put("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); |
| | | |
| | | bean.setInitParameters(initParams); |
| | | |
| | | bean.setUrlPatterns(Arrays.asList("/*")); |
| | | |
| | | return bean; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.config; |
| | | |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.Ordered; |
| | | import org.springframework.web.cors.CorsConfiguration; |
| | | import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
| | | import org.springframework.web.filter.CorsFilter; |
| | | |
| | | @Configuration |
| | | public class MyCorsConfig { |
| | | |
| | | private CorsConfiguration buildConfig() { |
| | | CorsConfiguration corsConfiguration = new CorsConfiguration(); |
| | | // 1 è®¾ç½®è®¿é®æºå°å |
| | | corsConfiguration.addAllowedOrigin("*"); |
| | | // 2 è®¾ç½®è®¿é®æºè¯·æ±å¤´ |
| | | corsConfiguration.addAllowedHeader("*"); |
| | | // 3 è®¾ç½®è®¿é®æºè¯·æ±æ¹æ³ |
| | | corsConfiguration.addAllowedMethod("*"); |
| | | // 4 æ´é²åªäºå¤´é¨ä¿¡æ¯ |
| | | // corsConfiguration.addExposedHeader(JwtConstant.HEADER); |
| | | return corsConfiguration; |
| | | } |
| | | @Bean |
| | | public FilterRegistrationBean<CorsFilter> corsFilter() { |
| | | // log.info("è·¨å设置ãããã"); |
| | | UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); |
| | | // 5 对æ¥å£é
置跨å设置 |
| | | source.registerCorsConfiguration("/**", buildConfig()); |
| | | //æå¤ä¸ªfilteræ¶æ¤å¤è®¾ç½®æ¹CorsFilterçä¼å
æ§è¡é¡ºåº |
| | | FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source)); |
| | | bean.setOrder(Ordered.HIGHEST_PRECEDENCE); |
| | | return bean; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.config; |
| | | |
| | | |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import springfox.documentation.builders.ApiInfoBuilder; |
| | | import springfox.documentation.builders.PathSelectors; |
| | | import springfox.documentation.builders.RequestHandlerSelectors; |
| | | import springfox.documentation.oas.annotations.EnableOpenApi; |
| | | import springfox.documentation.service.*; |
| | | import springfox.documentation.spi.DocumentationType; |
| | | import springfox.documentation.spi.service.contexts.SecurityContext; |
| | | import springfox.documentation.spring.web.plugins.Docket; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | @Configuration |
| | | @EnableOpenApi |
| | | public class Swagger3 { |
| | | // è·¯å¾http://localhost:8080/doc.html |
| | | @Value("${swagger.enabled}") |
| | | private boolean enable; |
| | | |
| | | private final String swaggerPackage = "com.yuanchu.limslaboratory"; |
| | | |
| | | /** |
| | | * æ·»å æè¦ä¿¡æ¯ |
| | | */ |
| | | private ApiInfo apiInfo() { |
| | | // ç¨ApiInfoBuilderè¿è¡å®å¶ |
| | | return new ApiInfoBuilder() |
| | | // 设置æ é¢ |
| | | .title("LIMS管çç³»ç»") |
| | | // æè¿° |
| | | .description("LIMS管çç³»ç»") |
| | | // ä½è
ä¿¡æ¯ |
| | | .contact(new Contact("Crunchy", null, null)) |
| | | // çæ¬ |
| | | .version("çæ¬å·:V.1") |
| | | //åè®® |
| | | .license("The Apache License") |
| | | //åè®®url |
| | | .licenseUrl("http://www.baidu.com") |
| | | .build(); |
| | | } |
| | | |
| | | /** |
| | | * å建API |
| | | * http:IP:端å£å·/swagger-ui/index.html åçå°å |
| | | * http:IP:端å£å·/doc.html bootStrap-UIå°å |
| | | */ |
| | | @Bean |
| | | public Docket createRestApi() { |
| | | return new Docket(DocumentationType.OAS_30).pathMapping("/") |
| | | // ç¨æ¥å建该APIçåºæ¬ä¿¡æ¯ï¼å±ç¤ºå¨ææ¡£ç页é¢ä¸ï¼èªå®ä¹å±ç¤ºçä¿¡æ¯ï¼ |
| | | .enable(enable) |
| | | .apiInfo(apiInfo()) |
| | | // 设置åªäºæ¥å£æ´é²ç»Swaggerå±ç¤º |
| | | .select() |
| | | // æ«æææææ³¨è§£çapiï¼ç¨è¿ç§æ¹å¼æ´çµæ´» |
| | | .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) |
| | | |
| | | |
| | | // æ«ææå®å
ä¸çswagger注解 |
| | | .apis(RequestHandlerSelectors.basePackage(swaggerPackage)) |
| | | // æ«æææ .apis(RequestHandlerSelectors.any()) |
| | | .paths(PathSelectors.regex("(?!/ApiError.*).*")) |
| | | .paths(PathSelectors.any()) |
| | | .build() |
| | | // æ¯æçé讯åè®®éå |
| | | .protocols(newHashSet("https", "http")) |
| | | .securitySchemes(securitySchemes()) |
| | | .securityContexts(securityContexts()); |
| | | } |
| | | |
| | | /** |
| | | * æ¯æçé讯åè®®éå |
| | | * @param type1 |
| | | * @param type2 |
| | | * @return |
| | | */ |
| | | private Set<String> newHashSet(String type1, String type2){ |
| | | Set<String> set = new HashSet<>(); |
| | | set.add(type1); |
| | | set.add(type2); |
| | | return set; |
| | | } |
| | | |
| | | /** |
| | | * 认è¯çå®å
¨ä¸ä¸æ |
| | | */ |
| | | private List<SecurityScheme> securitySchemes() { |
| | | List<SecurityScheme> securitySchemes = new ArrayList<>(); |
| | | securitySchemes.add((SecurityScheme) new ApiKey("token", "token", "header")); |
| | | return securitySchemes; |
| | | } |
| | | |
| | | /** |
| | | * ææä¿¡æ¯å
¨å±åºç¨ |
| | | */ |
| | | private List<SecurityContext> securityContexts() { |
| | | List<SecurityContext> securityContexts = new ArrayList<>(); |
| | | securityContexts.add(SecurityContext.builder() |
| | | .securityReferences(defaultAuth()) |
| | | .forPaths(PathSelectors.any()).build()); |
| | | return securityContexts; |
| | | } |
| | | |
| | | private List<SecurityReference> defaultAuth() { |
| | | AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); |
| | | AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; |
| | | authorizationScopes[0] = authorizationScope; |
| | | List<SecurityReference> securityReferences = new ArrayList<>(); |
| | | securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); |
| | | return securityReferences; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.config; |
| | | |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; |
| | | import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; |
| | | |
| | | @Configuration |
| | | public class WebMvcConfig extends WebMvcConfigurationSupport { |
| | | |
| | | @Value("${file.path}") |
| | | private String filePath; |
| | | |
| | | @Override |
| | | protected void addResourceHandlers(ResourceHandlerRegistry registry) { |
| | | //é
ç½®æ¦æªå¨è®¿é®éæèµæº |
| | | registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); |
| | | registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/META-INF/resources/"); |
| | | registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); |
| | | |
| | | //设置æä»¶èæè·¯å¾æ å° |
| | | registry.addResourceHandler("/img/**").addResourceLocations("file:"+filePath+"/"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.exception; |
| | | |
| | | public class MyFileException extends RuntimeException{ |
| | | public MyFileException() { |
| | | } |
| | | |
| | | public MyFileException(String message) { |
| | | super(message); |
| | | } |
| | | |
| | | public MyFileException(Throwable cause) { |
| | | super(cause); |
| | | } |
| | | |
| | | public MyFileException(String message, Throwable cause) { |
| | | super(message, cause); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.handler; |
| | | |
| | | import com.yuanchu.limslaboratory.exception.MyFileException; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException; |
| | | import org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException; |
| | | import org.springframework.beans.ConversionNotSupportedException; |
| | | import org.springframework.beans.TypeMismatchException; |
| | | import org.springframework.beans.factory.NoSuchBeanDefinitionException; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.dao.DuplicateKeyException; |
| | | import org.springframework.http.converter.HttpMessageNotReadableException; |
| | | import org.springframework.http.converter.HttpMessageNotWritableException; |
| | | import org.springframework.jdbc.BadSqlGrammarException; |
| | | import org.springframework.validation.ObjectError; |
| | | import org.springframework.web.bind.MethodArgumentNotValidException; |
| | | import org.springframework.web.bind.annotation.ExceptionHandler; |
| | | import org.springframework.web.bind.annotation.RestControllerAdvice; |
| | | import org.springframework.web.multipart.MultipartException; |
| | | |
| | | import java.io.FileNotFoundException; |
| | | import java.io.IOException; |
| | | import java.net.BindException; |
| | | import java.sql.SQLException; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | @Slf4j |
| | | @RestControllerAdvice |
| | | public class GlobalExceptionHandler { |
| | | |
| | | @Value("${spring.servlet.multipart.max-file-size}") |
| | | private String maxFileSize; |
| | | |
| | | @Value("${spring.servlet.multipart.max-request-size}") |
| | | private String maxRequestSize; |
| | | |
| | | @ExceptionHandler(SQLException.class) |
| | | public Result<?> handlerSQLException(SQLException e) |
| | | { |
| | | log.error(e.getMessage().toLowerCase(), e); |
| | | return Result.fail("æ°æ®æä½å¤±è´¥ï¼è¯·è系管çå"); |
| | | } |
| | | |
| | | /** |
| | | * å¯ä¸å¼å¨æ°æ®åºä¸éå¤ |
| | | * Duplicate entry ' ' for key ' ' |
| | | * @param eï¼éå¤é®å¼å¸¸ |
| | | * @return 199 |
| | | */ |
| | | @ExceptionHandler |
| | | public Result<?> DuplicateKeyException(DuplicateKeyException e) { |
| | | log.error(String.valueOf(e)); |
| | | String message = e.getCause().getMessage(); |
| | | String[] split = message.split("'"); |
| | | return Result.fail("é夿·»å ï¼ã" + split[1] + "ãæä½å¤±è´¥ï¼"); |
| | | } |
| | | |
| | | @ExceptionHandler |
| | | public Result<?> NullPointerException(NullPointerException e){ |
| | | e.printStackTrace(); |
| | | return Result.fail("é¨ååæ°ä¸ºç©ºï¼è¯·æ£æ¥ï¼"); |
| | | } |
| | | |
| | | /** è¿è¡æ¶å¼å¸¸ */ |
| | | @ExceptionHandler(RuntimeException.class) |
| | | public Result<?> runtimeExceptionHandler(RuntimeException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("è¿è¡æ¶å¼å¸¸"); |
| | | } |
| | | |
| | | /** ç±»å转æ¢å¼å¸¸ */ |
| | | @ExceptionHandler(ClassCastException.class) |
| | | public Result<?> classCastExceptionHandler(ClassCastException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("ç±»å转æ¢å¼å¸¸"); |
| | | } |
| | | /** æä»¶æªæ¾å°å¼å¸¸ */ |
| | | @ExceptionHandler(FileNotFoundException.class) |
| | | public Result<?> FileNotFoundException(FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æä»¶æªæ¾å°å¼å¸¸"); |
| | | } |
| | | /** æ°åæ ¼å¼å¼å¸¸ */ |
| | | @ExceptionHandler(NumberFormatException.class) |
| | | public Result<?> NumberFormatException(NumberFormatException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æ°åæ ¼å¼å¼å¸¸"); |
| | | } |
| | | /** å®å
¨å¼å¸¸ */ |
| | | @ExceptionHandler(SecurityException.class) |
| | | public Result<?> SecurityException(SecurityException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("å®å
¨å¼å¸¸"); |
| | | } |
| | | |
| | | /** ç±»åä¸åå¨å¼å¸¸ */ |
| | | @ExceptionHandler(TypeNotPresentException.class) |
| | | public Result<?> TypeNotPresentException(TypeNotPresentException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("ç±»åä¸åå¨å¼å¸¸"); |
| | | } |
| | | |
| | | /** IOå¼å¸¸ */ |
| | | @ExceptionHandler(IOException.class) |
| | | public Result<?> iOExceptionHandler(IOException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("IOå¼å¸¸"); |
| | | } |
| | | |
| | | /** æªç¥æ¹æ³å¼å¸¸ */ |
| | | @ExceptionHandler(NoSuchMethodException.class) |
| | | public Result<?> noSuchMethodExceptionHandler(NoSuchMethodException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æªç¥æ¹æ³å¼å¸¸"); |
| | | } |
| | | |
| | | /** æ°ç»è¶çå¼å¸¸ */ |
| | | @ExceptionHandler(IndexOutOfBoundsException.class) |
| | | public Result<?> indexOutOfBoundsExceptionHandler(IndexOutOfBoundsException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æ°ç»è¶çå¼å¸¸"); |
| | | } |
| | | /** sqlè¯æ³é误å¼å¸¸ */ |
| | | @ExceptionHandler(BadSqlGrammarException.class) |
| | | public Result<?> BadSqlGrammarException(BadSqlGrammarException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("sqlè¯æ³é误å¼å¸¸"); |
| | | } |
| | | |
| | | /** æ æ³æ³¨å
¥beanå¼å¸¸ */ |
| | | @ExceptionHandler(NoSuchBeanDefinitionException.class) |
| | | public Result<?> NoSuchBeanDefinitionException(NoSuchBeanDefinitionException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æ æ³æ³¨å
¥bean"); |
| | | } |
| | | |
| | | /** Httpæ¶æ¯ä¸å¯è¯»å¼å¸¸ */ |
| | | @ExceptionHandler({HttpMessageNotReadableException.class}) |
| | | public Result<?> requestNotReadable(HttpMessageNotReadableException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("Httpæ¶æ¯ä¸å¯è¯»"); |
| | | } |
| | | |
| | | /** 400é误 */ |
| | | @ExceptionHandler({TypeMismatchException.class}) |
| | | public Result<?> requestTypeMismatch(TypeMismatchException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æå¡å¨å¼å¸¸"); |
| | | } |
| | | |
| | | /** 500é误 */ |
| | | @ExceptionHandler({ConversionNotSupportedException.class, HttpMessageNotWritableException.class}) |
| | | public Result<?> server500(RuntimeException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æå¡å¨å¼å¸¸"); |
| | | } |
| | | |
| | | /** æ æº¢åº */ |
| | | @ExceptionHandler({StackOverflowError.class}) |
| | | public Result<?> requestStackOverflow(StackOverflowError e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("æ æº¢åºå¼å¸¸"); |
| | | } |
| | | |
| | | /** 餿°ä¸è½ä¸º0 */ |
| | | @ExceptionHandler({ArithmeticException.class}) |
| | | public Result<?> arithmeticException(ArithmeticException e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("餿°ä¸è½ä¸º0å¼å¸¸"); |
| | | } |
| | | |
| | | /** |
| | | *æä»¶è¿å¤§æ¥éæç¤º |
| | | */ |
| | | @ExceptionHandler({MultipartException.class}) |
| | | public Result<?> fileUploadExceptionHandler(MultipartException e) { |
| | | String msg; |
| | | Throwable rootCause = e.getRootCause(); |
| | | if (rootCause instanceof FileSizeLimitExceededException) { |
| | | msg="ä¸ä¼ æä»¶è¿å¤§ãå个æä»¶å¤§å°ä¸å¾è¶
è¿" + maxFileSize + "ã"; |
| | | }else if(rootCause instanceof SizeLimitExceededException){ |
| | | msg="ä¸ä¼ æä»¶è¿å¤§ãæ»ä¸ä¼ 大å°ä¸å¾è¶
è¿" + maxRequestSize + "ã"; |
| | | }else { |
| | | msg="æä»¶ä¸ä¼ 失败ãæå¡å¨å¼å¸¸ã"; |
| | | } |
| | | return Result.fail(msg); |
| | | } |
| | | |
| | | /** æä»¶åç¼åä¸éè¿è¿åæç¤º */ |
| | | @ExceptionHandler({MyFileException.class}) |
| | | public Result<?> myFileException(Exception e) { |
| | | return Result.fail("æ±æä¸æ¯æã" + e.getMessage() +"ãåç¼çæä»¶ï¼"); |
| | | } |
| | | |
| | | /** |
| | | * åæ°æ£éª |
| | | */ |
| | | @ExceptionHandler({MethodArgumentNotValidException.class}) |
| | | public Result<?> methodArgumentNotValidException(MethodArgumentNotValidException e) { |
| | | List<ObjectError> allErrors = e.getBindingResult().getAllErrors(); |
| | | String message = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";")); |
| | | return Result.fail(message); |
| | | } |
| | | |
| | | /** å
¶ä»é误 */ |
| | | @ExceptionHandler({Exception.class}) |
| | | public Result<?> exception(Exception e) { |
| | | e.printStackTrace(); |
| | | return Result.fail("ç½ç»è¿æ¥å¤±è´¥ï¼è¯·éåºååè¯"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mybatis_config; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * èªå®ä¹æ·»å mybatis-plusæ¹éæ·»å |
| | | * @param <T> |
| | | */ |
| | | public interface MyBaseMapper <T> extends BaseMapper<T> { |
| | | |
| | | int insertBatchSomeColumn(List<T> entityList); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mybatis_config; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.DbType; |
| | | import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; |
| | | import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; |
| | | import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | |
| | | @Configuration |
| | | public class MyBatisPlusConfig { |
| | | |
| | | /** |
| | | * éè¦é
ç½®æ¦æªå¨ï¼ä¸ç¶å¨AddDeviceä¸çtotalæ æ³è·åå° |
| | | * @return |
| | | */ |
| | | @Bean |
| | | public MybatisPlusInterceptor mybatisPlusInterceptor(){ |
| | | MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); |
| | | // ä¹è§é |
| | | interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); |
| | | // å页é
ç½® |
| | | interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); |
| | | return interceptor; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mybatis_config; |
| | | |
| | | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; |
| | | import org.apache.ibatis.reflection.MetaObject; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Component |
| | | public class MyMetaObjectHandler implements MetaObjectHandler { |
| | | @Override |
| | | public void insertFill(MetaObject metaObject) { |
| | | this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // èµ·å§çæ¬ 3.3.0(æ¨è使ç¨) |
| | | this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); // èµ·å§çæ¬ 3.3.0(æ¨è使ç¨) |
| | | } |
| | | |
| | | @Override |
| | | public void updateFill(MetaObject metaObject) { |
| | | // updateçæ¶å使ç¨ï¼æ´æ°çæ¶å强å¶è¿è¡å¡«å
|
| | | this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // èµ·å§çæ¬ 3.3.0(æ¨è) |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mybatis_config; |
| | | |
| | | import com.baomidou.mybatisplus.core.injector.AbstractMethod; |
| | | import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; |
| | | import com.baomidou.mybatisplus.core.metadata.TableInfo; |
| | | import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æ¹éæ·»å |
| | | */ |
| | | @Component |
| | | public class MySqlInjector extends DefaultSqlInjector { |
| | | |
| | | @Override |
| | | public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) { |
| | | List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo); |
| | | //å¢å èªå®ä¹æ¹æ³ï¼å段注解ä¸ä¸çäºFieldFill.DEFAULTçåæ®µæä¼æå
¥ |
| | | methodList.add(new InsertBatchSomeColumn(t->!t.isLogicDelete())); |
| | | return methodList; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.utils; |
| | | |
| | | import com.yuanchu.limslaboratory.exception.MyFileException; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.tomcat.util.http.fileupload.IOUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.FileSystemUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.io.ByteArrayInputStream; |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.io.IOException; |
| | | |
| | | /** |
| | | * ä¿åæä»¶å·¥å
· |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class FileSaveUtil { |
| | | |
| | | // åymlä¸çè·¯å¾ + / |
| | | private static String FILE_PATH; |
| | | |
| | | private static String[] ALLOWED; |
| | | |
| | | @Value("${file.path}") |
| | | private String file; |
| | | |
| | | @Value("${file.allowed}") |
| | | private String[] allowed; |
| | | |
| | | @PostConstruct |
| | | public void getFile() { |
| | | FILE_PATH = this.file; |
| | | } |
| | | |
| | | @PostConstruct |
| | | public void getAllowed(){ |
| | | ALLOWED = this.allowed; |
| | | } |
| | | /** |
| | | * å卿件䏻彿° |
| | | * @param file æä»¶äºè¿å¶æµ |
| | | * @return è¿åæä»¶åç§°ç¨äºå卿°æ®åº |
| | | */ |
| | | public static String StoreFile(MultipartFile file) { |
| | | String originalFilename = file.getOriginalFilename(); |
| | | // çæéæºåç§°ï¼æ¶é´_éæº6使°å |
| | | String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6); |
| | | String suffix = null; |
| | | if (originalFilename != null) { |
| | | suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); |
| | | // 妿åç¼åä¸éè¿æåºå¼å¸¸ |
| | | if (!isFileAllowed(suffix)){ |
| | | throw new MyFileException(suffix); |
| | | } |
| | | } |
| | | // åç§°æ¼æ¥ |
| | | String fileName = FileName + suffix; |
| | | // è¿è¡åå¨ |
| | | try { |
| | | storeFileWithFileName(file.getBytes(), fileName); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | return fileName; |
| | | } |
| | | |
| | | public static Boolean DeleteFile(String fileName) { |
| | | return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName)); |
| | | } |
| | | /** |
| | | * å卿件彿° |
| | | * @param content æä»¶äºè¿å¶æµ |
| | | * @param fileName æä»¶åç§° |
| | | */ |
| | | private static void storeFileWithFileName(byte[] content, String fileName) { |
| | | // åå¨è·¯å¾ |
| | | String path = FILE_PATH + java.io.File.separatorChar; |
| | | // ç®å½ä¸åå¨åå建 |
| | | java.io.File file = new java.io.File(path); |
| | | if (!file.exists()) { |
| | | file.mkdirs(); |
| | | } |
| | | // å¼å§åå¨ |
| | | try (FileOutputStream os = new FileOutputStream(path + fileName); |
| | | ByteArrayInputStream is = new ByteArrayInputStream(content)) { |
| | | IOUtils.copy(is, os); |
| | | } catch (IOException e) { |
| | | MyUtil.PrintLog("å卿件å¼å¸¸ï¼" + e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 夿æä»¶æ¯å¦è¢«å
许ä¸ä¼ |
| | | * |
| | | * @param fileName æä»¶å |
| | | * @return å
许true, å¦åfalse |
| | | */ |
| | | private static boolean isFileAllowed(String fileName) { |
| | | // è·ååç¼å |
| | | String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); |
| | | for (String allow : ALLOWED) { |
| | | if (allow.equals(suffixName)) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.utils; |
| | | |
| | | import com.fasterxml.jackson.core.JsonGenerationException; |
| | | import com.fasterxml.jackson.core.JsonParseException; |
| | | import com.fasterxml.jackson.databind.JsonMappingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.ObjectWriter; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | |
| | | /** |
| | | * JSONè§£æå¤ç |
| | | * |
| | | * @author å¼ å®¾ |
| | | */ |
| | | @Component |
| | | public class JackSonUtil { |
| | | private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); |
| | | private static final ObjectWriter OBJECT_WRITER = OBJECT_MAPPER.writerWithDefaultPrettyPrinter(); |
| | | |
| | | public static void marshal(File file, Object value) throws Exception { |
| | | try { |
| | | OBJECT_WRITER.writeValue(file, value); |
| | | } catch (JsonGenerationException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static void marshal(OutputStream os, Object value) throws Exception { |
| | | try { |
| | | OBJECT_WRITER.writeValue(os, value); |
| | | } catch (JsonGenerationException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static String marshal(Object value) throws Exception { |
| | | try { |
| | | return OBJECT_WRITER.writeValueAsString(value); |
| | | } catch (JsonGenerationException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static byte[] marshalBytes(Object value) throws Exception { |
| | | try { |
| | | return OBJECT_WRITER.writeValueAsBytes(value); |
| | | } catch (JsonGenerationException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(File file, Class<T> valueType) throws Exception { |
| | | try { |
| | | return OBJECT_MAPPER.readValue(file, valueType); |
| | | } catch (JsonParseException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(InputStream is, Class<T> valueType) throws Exception { |
| | | try { |
| | | return OBJECT_MAPPER.readValue(is, valueType); |
| | | } catch (JsonParseException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å符串转对象 |
| | | * @param str |
| | | * @param valueType |
| | | * @return |
| | | * @param <T> |
| | | * @throws Exception |
| | | */ |
| | | public static <T> T unmarshal(String str, Class<T> valueType) throws Exception { |
| | | try { |
| | | return OBJECT_MAPPER.readValue(str, valueType); |
| | | } catch (JsonParseException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | |
| | | public static <T> T unmarshal(byte[] bytes, Class<T> valueType) throws Exception { |
| | | try { |
| | | if (bytes == null) { |
| | | bytes = new byte[0]; |
| | | } |
| | | return OBJECT_MAPPER.readValue(bytes, 0, bytes.length, valueType); |
| | | } catch (JsonParseException e) { |
| | | throw new Exception(e); |
| | | } catch (JsonMappingException e) { |
| | | throw new Exception(e); |
| | | } catch (IOException e) { |
| | | throw new Exception(e); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.utils; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.Random; |
| | | |
| | | @Component |
| | | public class MyUtil<T> { |
| | | |
| | | /** |
| | | * èªå®ä¹è°è¯å·¥å
·ç±» |
| | | * @return |
| | | */ |
| | | public static void PrintLog(String str){ |
| | | // ç±»å |
| | | String className = Thread.currentThread().getStackTrace()[2].getClassName(); |
| | | // 彿°å |
| | | String methodName = Thread.currentThread().getStackTrace()[2].getMethodName(); |
| | | System.out.println("\033[1;94m" + className + "-->" + methodName + "-->" + str + "\033[0m"); |
| | | } |
| | | |
| | | /** |
| | | * æ¥æå·¥å
·ç±» |
| | | * @return |
| | | */ |
| | | public static String MyDateFormat(){ |
| | | //è·åæ¥æ |
| | | //导 import java.util.Date; ä¸çå
|
| | | Date date = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | return sdf.format(date); |
| | | } |
| | | |
| | | /** |
| | | * è·åéæºå å¯ç |
| | | * @param n 使° |
| | | * @return è¿åéæºå å¯ç |
| | | */ |
| | | public static String getSalt(int n) { |
| | | char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@#$%^&*()+-=/[];~.".toCharArray(); |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (int i = 0; i < n; i++) { |
| | | char c = chars[new Random().nextInt(chars.length)]; |
| | | sb.append(c); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * è·åéæºæ°å |
| | | * @param n 使° |
| | | * @return è¿åéæºå¼ |
| | | */ |
| | | public static String getNumber(int n) { |
| | | char[] chars = "1234567890".toCharArray(); |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (int i = 0; i < n; i++) { |
| | | char c = chars[new Random().nextInt(chars.length)]; |
| | | sb.append(c); |
| | | } |
| | | return sb.toString(); |
| | | } |
| | | |
| | | public static String getTimeSixNumberCode(String prefix){ |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String format = simpleDateFormat.format(new Date()); |
| | | String timeStr = format.replace("-", ""); |
| | | long incrNum = RedisUtil.incr("num", 1); |
| | | if(incrNum == 1){ |
| | | RedisUtil.expire("num", 60 * 60 * 24); |
| | | } |
| | | String sixIncr = String.format("%06d", incrNum); |
| | | return prefix + timeStr + sixIncr; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.utils; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonAutoDetect; |
| | | import com.fasterxml.jackson.annotation.JsonTypeInfo; |
| | | import com.fasterxml.jackson.annotation.PropertyAccessor; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.connection.RedisConnectionFactory; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; |
| | | import org.springframework.data.redis.serializer.StringRedisSerializer; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @Component |
| | | public class RedisUtil { |
| | | private static RedisTemplate<String, Object> redisTemplate; |
| | | public static RedisTemplate<String, Object> getRedisTemplate() { |
| | | return redisTemplate; |
| | | } |
| | | @Autowired |
| | | private RedisUtil(RedisConnectionFactory redisConnectionFactory){ |
| | | // redisTemplate模æ¿åå§å |
| | | redisTemplate = new RedisTemplate<>(); |
| | | redisTemplate.setConnectionFactory(redisConnectionFactory); |
| | | |
| | | // å°å¯¹è±¡åºåå |
| | | ObjectMapper om=new ObjectMapper(); |
| | | om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); |
| | | om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, |
| | | ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); |
| | | |
| | | // Stringçåºåå |
| | | StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); |
| | | // jsonåºååé
ç½® |
| | | Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer=new Jackson2JsonRedisSerializer<>(Object.class); |
| | | jackson2JsonRedisSerializer.setObjectMapper(om); |
| | | //keyéç¨Stringçåºååæ¹å¼ |
| | | redisTemplate.setKeySerializer(stringRedisSerializer); |
| | | //hashçkeyä¹éç¨String çåºååæ¹å¼ |
| | | redisTemplate.setHashKeySerializer(stringRedisSerializer); |
| | | //valueçåºååæ¹å¼éç¨jacksonçæ¹å¼ |
| | | redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); |
| | | // //hashçvalueåºååæ¹å¼éç¨jackson |
| | | redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); |
| | | redisTemplate.afterPropertiesSet(); |
| | | } |
| | | |
| | | // =============================common============================ |
| | | /** |
| | | * æå®ç¼åå¤±ææ¶é´ |
| | | * @param key é® |
| | | * @param time æ¶é´(ç§) |
| | | */ |
| | | public static boolean expire(String key, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | redisTemplate.expire(key, time, TimeUnit.SECONDS); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®key è·åè¿ææ¶é´ |
| | | * @param key é® ä¸è½ä¸ºnull |
| | | * @return æ¶é´(ç§) è¿å0代表为永ä¹
ææ |
| | | */ |
| | | public static long getExpire(String key) { |
| | | return redisTemplate.getExpire(key, TimeUnit.SECONDS); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 夿keyæ¯å¦åå¨ |
| | | * @param key é® |
| | | * @return true åå¨ falseä¸åå¨ |
| | | */ |
| | | public static boolean hasKey(String key) { |
| | | try { |
| | | return redisTemplate.hasKey(key); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å é¤ç¼å |
| | | * @param key å¯ä»¥ä¼ ä¸ä¸ªå¼ æå¤ä¸ª |
| | | */ |
| | | // @SuppressWarnings("unchecked") |
| | | public static void del(String... key) { |
| | | if (key != null && key.length > 0) { |
| | | if (key.length == 1) { |
| | | redisTemplate.delete(key[0]); |
| | | } else { |
| | | redisTemplate.delete(Arrays.asList(key)); |
| | | // redisTemplate.delete(CollectionUtils.arrayToList(key)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åå¹¶å é¤ç¼å |
| | | * @param key é® |
| | | * @return å¼ |
| | | */ |
| | | public static Object getAndDelete(String key) { |
| | | try{ |
| | | return key == null ? null : get(key); |
| | | }finally { |
| | | del(key); |
| | | } |
| | | } |
| | | |
| | | // ============================String============================= |
| | | |
| | | /** |
| | | * æ®éç¼åè·å |
| | | * @param key é® |
| | | * @return å¼ |
| | | */ |
| | | public static Object get(String key) { |
| | | return key == null ? null : redisTemplate.opsForValue().get(key); |
| | | } |
| | | |
| | | /** |
| | | * æ®éç¼åæ¾å
¥ |
| | | * @param key é® |
| | | * @param value å¼ |
| | | * @return trueæå false失败 |
| | | */ |
| | | |
| | | public static boolean set(String key, Object value) { |
| | | try { |
| | | redisTemplate.opsForValue().set(key, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ®éç¼åæ¾å
¥å¹¶è®¾ç½®æ¶é´ |
| | | * @param key é® |
| | | * @param value å¼ |
| | | * @param time æ¶é´(ç§) timeè¦å¤§äº0 妿timeå°äºçäº0 å°è®¾ç½®æ éæ |
| | | * @return trueæå false 失败 |
| | | */ |
| | | |
| | | public static boolean set(String key, Object value, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | redisTemplate.opsForValue().set(key, value, time, TimeUnit.MINUTES); |
| | | } else { |
| | | // åªä¿®æ¹åæ°ä¸ä¿®æ¹ttl |
| | | redisTemplate.opsForValue().set(key, value, 0); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * éå¢ |
| | | * @param key é® |
| | | * @param delta è¦å¢å å (大äº0) |
| | | */ |
| | | public static long incr(String key, long delta) { |
| | | if (delta < 0) { |
| | | throw new RuntimeException("éå¢å åå¿
须大äº0"); |
| | | } |
| | | return redisTemplate.opsForValue().increment(key, delta); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * éå |
| | | * @param key é® |
| | | * @param delta è¦åå°å (å°äº0) |
| | | */ |
| | | public static long decr(String key, long delta) { |
| | | if (delta < 0) { |
| | | throw new RuntimeException("éåå åå¿
须大äº0"); |
| | | } |
| | | return redisTemplate.opsForValue().increment(key, -delta); |
| | | } |
| | | |
| | | |
| | | // ================================Map================================= |
| | | |
| | | /** |
| | | * HashGet |
| | | * @param key é® ä¸è½ä¸ºnull |
| | | * @param item 项 ä¸è½ä¸ºnull |
| | | */ |
| | | public static Object hget(String key, String item) { |
| | | return redisTemplate.opsForHash().get(key, item); |
| | | } |
| | | |
| | | /** |
| | | * è·åhashKey对åºçææé®å¼ |
| | | * @param key é® |
| | | * @return 对åºçå¤ä¸ªé®å¼ |
| | | */ |
| | | public static Map<Object, Object> hmget(String key) { |
| | | return redisTemplate.opsForHash().entries(key); |
| | | } |
| | | |
| | | /** |
| | | * HashSet |
| | | * @param key é® |
| | | * @param map 对åºå¤ä¸ªé®å¼ |
| | | */ |
| | | public static boolean hmset(String key, Map<String, Object> map) { |
| | | try { |
| | | redisTemplate.opsForHash().putAll(key, map); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * HashSet 并设置æ¶é´ |
| | | * @param key é® |
| | | * @param map 对åºå¤ä¸ªé®å¼ |
| | | * @param time æ¶é´(ç§) |
| | | * @return trueæå false失败 |
| | | */ |
| | | public static boolean hmset(String key, Map<String, Object> map, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | redisTemplate.opsForHash().putAll(key, map); |
| | | expire(key, time); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åä¸å¼ hashè¡¨ä¸æ¾å
¥æ°æ®,妿ä¸åå¨å°å建 |
| | | * |
| | | * @param key é® |
| | | * @param item 项 |
| | | * @param value å¼ |
| | | * @return true æå false失败 |
| | | */ |
| | | public static boolean hset(String key, String item, Object value) { |
| | | try { |
| | | redisTemplate.opsForHash().put(key, item, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åä¸å¼ hashè¡¨ä¸æ¾å
¥æ°æ®,妿ä¸åå¨å°å建 |
| | | * |
| | | * @param key é® |
| | | * @param item 项 |
| | | * @param value å¼ |
| | | * @param time æ¶é´(ç§) 注æ:妿已åå¨çhashè¡¨ææ¶é´,è¿éå°ä¼æ¿æ¢åæçæ¶é´ |
| | | * @return true æå false失败 |
| | | */ |
| | | public static boolean hset(String key, String item, Object value, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | redisTemplate.opsForHash().put(key, item, value); |
| | | expire(key, time); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å é¤hash表ä¸çå¼ |
| | | * |
| | | * @param key é® ä¸è½ä¸ºnull |
| | | * @param item 项 å¯ä»¥ä½¿å¤ä¸ª ä¸è½ä¸ºnull |
| | | */ |
| | | public static void hdel(String key, Object... item) { |
| | | redisTemplate.opsForHash().delete(key, item); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 夿hashè¡¨ä¸æ¯å¦æè¯¥é¡¹çå¼ |
| | | * |
| | | * @param key é® ä¸è½ä¸ºnull |
| | | * @param item 项 ä¸è½ä¸ºnull |
| | | * @return true åå¨ falseä¸åå¨ |
| | | */ |
| | | public static boolean hHasKey(String key, String item) { |
| | | return redisTemplate.opsForHash().hasKey(key, item); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * hashéå¢ å¦æä¸åå¨,å°±ä¼å建ä¸ä¸ª å¹¶ææ°å¢åçå¼è¿å |
| | | * |
| | | * @param key é® |
| | | * @param item 项 |
| | | * @param by è¦å¢å å (大äº0) |
| | | */ |
| | | public static double hincr(String key, String item, double by) { |
| | | return redisTemplate.opsForHash().increment(key, item, by); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * hashéå |
| | | * |
| | | * @param key é® |
| | | * @param item 项 |
| | | * @param by è¦åå°è®°(å°äº0) |
| | | */ |
| | | public static double hdecr(String key, String item, double by) { |
| | | return redisTemplate.opsForHash().increment(key, item, -by); |
| | | } |
| | | |
| | | |
| | | // ============================set============================= |
| | | |
| | | /** |
| | | * æ ¹æ®keyè·åSetä¸çææå¼ |
| | | * @param key é® |
| | | */ |
| | | public static Set<Object> sGet(String key) { |
| | | try { |
| | | return redisTemplate.opsForSet().members(key); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®valueä»ä¸ä¸ªset䏿¥è¯¢,æ¯å¦åå¨ |
| | | * |
| | | * @param key é® |
| | | * @param value å¼ |
| | | * @return true åå¨ falseä¸åå¨ |
| | | */ |
| | | public static boolean sHasKey(String key, Object value) { |
| | | try { |
| | | return redisTemplate.opsForSet().isMember(key, value); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°æ°æ®æ¾å
¥setç¼å |
| | | * |
| | | * @param key é® |
| | | * @param values å¼ å¯ä»¥æ¯å¤ä¸ª |
| | | * @return æåä¸ªæ° |
| | | */ |
| | | public static long sSet(String key, Object... values) { |
| | | try { |
| | | return redisTemplate.opsForSet().add(key, values); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°setæ°æ®æ¾å
¥ç¼å |
| | | * |
| | | * @param key é® |
| | | * @param time æ¶é´(ç§) |
| | | * @param values å¼ å¯ä»¥æ¯å¤ä¸ª |
| | | * @return æåä¸ªæ° |
| | | */ |
| | | public static long sSetAndTime(String key, long time, Object... values) { |
| | | try { |
| | | Long count = (long)values.length; |
| | | if (time > 0) { |
| | | count = redisTemplate.opsForSet().add(key, values); |
| | | expire(key, time); |
| | | } |
| | | return count; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·åsetç¼åçé¿åº¦ |
| | | * |
| | | * @param key é® |
| | | */ |
| | | public static long sGetSetSize(String key) { |
| | | try { |
| | | return redisTemplate.opsForSet().size(key); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ç§»é¤å¼ä¸ºvalueç |
| | | * |
| | | * @param key é® |
| | | * @param values å¼ å¯ä»¥æ¯å¤ä¸ª |
| | | * @return ç§»é¤çä¸ªæ° |
| | | */ |
| | | |
| | | public static long setRemove(String key, Object... values) { |
| | | try { |
| | | return redisTemplate.opsForSet().remove(key, values); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | // ===============================list================================= |
| | | |
| | | /** |
| | | * è·ålistç¼åçå
容 |
| | | * |
| | | * @param key é® |
| | | * @param start å¼å§ |
| | | * @param end ç»æ 0 å° -1代表ææå¼ |
| | | */ |
| | | public static List<Object> lGet(String key, long start, long end) { |
| | | try { |
| | | return redisTemplate.opsForList().range(key, start, end); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·ålistç¼åçé¿åº¦ |
| | | * |
| | | * @param key é® |
| | | */ |
| | | public static long lGetListSize(String key) { |
| | | try { |
| | | return redisTemplate.opsForList().size(key); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * éè¿ç´¢å¼ è·ålistä¸çå¼ |
| | | * |
| | | * @param key é® |
| | | * @param index ç´¢å¼ index>=0æ¶ï¼ 0 表头ï¼1 第äºä¸ªå
ç´ ï¼ä¾æ¬¡ç±»æ¨ï¼index<0æ¶ï¼-1ï¼è¡¨å°¾ï¼-2åæ°ç¬¬äºä¸ªå
ç´ ï¼ä¾æ¬¡ç±»æ¨ |
| | | */ |
| | | public static Object lGetIndex(String key, long index) { |
| | | try { |
| | | return redisTemplate.opsForList().index(key, index); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°listæ¾å
¥ç¼å |
| | | * |
| | | * @param key é® |
| | | * @param value å¼ |
| | | */ |
| | | public static boolean lSet(String key, Object value) { |
| | | try { |
| | | redisTemplate.opsForList().rightPush(key, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°listæ¾å
¥ç¼å |
| | | * @param key é® |
| | | * @param value å¼ |
| | | * @param time æ¶é´(ç§) |
| | | */ |
| | | public static boolean lSet(String key, Object value, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | redisTemplate.opsForList().rightPush(key, value); |
| | | expire(key, time); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°listæ¾å
¥ç¼å |
| | | * |
| | | * @param key é® |
| | | * @param value å¼ |
| | | * @return true åæ¾æå falseåæ¾å¤±è´¥ |
| | | */ |
| | | public static boolean lSet(String key, List<Object> value) { |
| | | try { |
| | | redisTemplate.opsForList().rightPushAll(key, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°listæ¾å
¥ç¼å |
| | | * |
| | | * @param key é® |
| | | * @param value å¼ |
| | | * @param time æ¶é´(ç§) |
| | | * @return true åæ¾æå falseåæ¾å¤±è´¥ |
| | | */ |
| | | public static boolean lSet(String key, List<Object> value, long time) { |
| | | try { |
| | | if (time > 0) { |
| | | redisTemplate.opsForList().rightPushAll(key, value); |
| | | expire(key, time); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®ç´¢å¼ä¿®æ¹listä¸çææ¡æ°æ® |
| | | * |
| | | * @param key é® |
| | | * @param index ç´¢å¼ |
| | | * @param value å¼ |
| | | * @return true åæ¾æå falseåæ¾å¤±è´¥ |
| | | */ |
| | | |
| | | public static boolean lUpdateIndex(String key, long index, Object value) { |
| | | try { |
| | | redisTemplate.opsForList().set(key, index, value); |
| | | return true; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ç§»é¤N个å¼ä¸ºvalue |
| | | * |
| | | * @param key é® |
| | | * @param count ç§»é¤å¤å°ä¸ª |
| | | * @param value å¼ |
| | | * @return ç§»é¤çä¸ªæ° |
| | | */ |
| | | |
| | | public static long lRemove(String key, long count, Object value) { |
| | | try { |
| | | return redisTemplate.opsForList().remove(key, count, value); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return 0; |
| | | } |
| | | } |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.utils; |
| | | |
| | | import org.springframework.beans.BeansException; |
| | | import org.springframework.context.ApplicationContext; |
| | | import org.springframework.context.ApplicationContextAware; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Component |
| | | public class SpringUtil implements ApplicationContextAware { |
| | | private static ApplicationContext context; |
| | | |
| | | @Override |
| | | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { |
| | | context = applicationContext; |
| | | } |
| | | |
| | | public static void set(ApplicationContext applicationContext) { |
| | | context = applicationContext; |
| | | } |
| | | |
| | | /** |
| | | * éè¿åèç è·å |
| | | * @param beanClass |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> T getBean(Class<T> beanClass) { |
| | | return context.getBean(beanClass); |
| | | } |
| | | |
| | | /** |
| | | * éè¿BeanNameè·å |
| | | * @param beanName |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> T getBean(String beanName) { |
| | | return (T) context.getBean(beanName); |
| | | } |
| | | |
| | | /** |
| | | * éè¿beanNameååèç è·å |
| | | * @param name |
| | | * @param beanClass |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> T getBean(String name, Class<T> beanClass) { |
| | | return context.getBean(name, beanClass); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.vo; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | @Data |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public class Result<T> { |
| | | |
| | | @ApiModelProperty(value = "ååºç ï¼200æåï¼201失败") |
| | | private int code; |
| | | |
| | | @ApiModelProperty(value = "ååºæ¶æ¯") |
| | | private String message; |
| | | |
| | | @ApiModelProperty(value = "ååºåæ°") |
| | | private T data; |
| | | |
| | | public static <T> Result<T> success(){ |
| | | return new Result<>(200, "success",null); |
| | | } |
| | | |
| | | public static <T> Result<T> success(String message){ |
| | | return new Result<>(200, message,null); |
| | | } |
| | | |
| | | public static <T> Result<T> success(T data){ |
| | | return new Result<>(200, "success",data); |
| | | } |
| | | |
| | | public static <T> Result<T> success(String message, T data){ |
| | | return new Result<>(200, message,data); |
| | | } |
| | | |
| | | public static <T> Result<T> fail(){ |
| | | return new Result<>(201, "fail", null); |
| | | } |
| | | |
| | | public static <T> Result<T> fail(String message){ |
| | | return new Result<>(201, message, null); |
| | | } |
| | | |
| | | public static <T> Result<T> fail(Integer code){ |
| | | return new Result<>(code, "fail", null); |
| | | } |
| | | |
| | | public static <T> Result<T> fail(Integer code, String message){ |
| | | return new Result<>(code, message, null); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <groupId>com.yuanchu</groupId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | </parent> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>inspection-server</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>inspection-server</name> |
| | | <description>inspection-server</description> |
| | | |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>framework</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>standard-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>laboratory-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.hutool</groupId> |
| | | <artifactId>hutool-all</artifactId> |
| | | <version>5.8.12</version> |
| | | </dependency> |
| | | </dependencies> |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | |
| | | import java.text.ParseException; |
| | | import java.util.*; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.yuanchu.limslaboratory.pojo.Inspection; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | import com.yuanchu.limslaboratory.service.LinkBasicInformationService; |
| | | import com.yuanchu.limslaboratory.service.RawMaterialService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.service.InspectionService; |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * ç³è¯·è¡¨(Inspection)表æ§å¶å± |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:03:36 |
| | | */ |
| | | @Api(tags = "è¯éªç®¡ç-->æ£éªç³è¯·") |
| | | @RestController |
| | | @RequestMapping("/inspection") |
| | | public class InspectionController { |
| | | |
| | | @Autowired |
| | | private InspectionService inspectionService; |
| | | |
| | | @Resource |
| | | RawMaterialService rawMaterialService; |
| | | |
| | | @Resource |
| | | LinkBasicInformationService linkBasicInformationService; |
| | | |
| | | @ApiOperation(value = "æ¥è¯¢æ£éªç³è¯·åå表") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageSize", value = "页æ°", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "countSize", value = "æ¡æ°/页", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "message", value = "ç³è¯·åå·/åææåç§°", dataTypeClass = String.class) |
| | | }) |
| | | @GetMapping("/selectInspectsList") |
| | | public Result selectInspectsList(int pageSize, int countSize, String message) { |
| | | IPage<Map<String, Object>> inspectionPage = inspectionService.selectInspectsList(new Page<Object>(pageSize, countSize), message); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("total", inspectionPage.getTotal()); |
| | | map.put("row", inspectionPage.getRecords()); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "æ¥è¯¢æææ¥æ£") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "type", value = "ç±»å", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/selectAll") |
| | | public Result selectAll(Integer type) { |
| | | switch (type) { |
| | | case 0 : |
| | | //åææ |
| | | return Result.success(rawMaterialService.selectRawmaAll()); |
| | | case 1 : |
| | | //å§æå |
| | | return Result.success(linkBasicInformationService.selectLinkAll()); |
| | | case 2 : |
| | | //æåæ£éª |
| | | return Result.success("请è¾å
¥æ£éªä¿¡æ¯!"); |
| | | } |
| | | return Result.fail("ç±»åé误!"); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "éæ©åæææ¥æ£") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "id", value = "åæææ¥æ£åid", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "startTime", value = "æ£éªå¼å§æ¥æ", dataTypeClass = String.class, required = true), |
| | | @ApiImplicitParam(name = "endTime", value = "æ£éªç»ææ¥æ", dataTypeClass = String.class, required = true) |
| | | }) |
| | | @GetMapping("/selectRawmaById") |
| | | public Result selectRawmaById(Integer id, String startTime, String endTime) throws ParseException { |
| | | return Result.success(rawMaterialService.selectRawmaById(id,startTime,endTime)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "éæ©å§ææ¥æ£åæ ·å") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "bid", value = "å§ææ¥æ£åid", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "did", value = "å§ææ¥æ£æ ·åid", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/selectLinkByid") |
| | | public Result selectLinkByid(Integer bid, Integer did) { |
| | | return Result.success(linkBasicInformationService.selectLinkByid(bid, did)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "æ°å¢æ£éªå") |
| | | @PostMapping("/addInspect") |
| | | public Result addInspect(@RequestHeader("token") String token, @RequestBody InspectionVo inspectionVo) throws Exception { |
| | | Object object = RedisUtil.get(token); |
| | | Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class); |
| | | return Result.success(inspectionService.addInspect((Integer) unmarshal.get("id"), inspectionVo)); |
| | | } |
| | | |
| | | @ApiOperation(value = "æ ¹æ®æ£éªåidæ¥è¯¢åæææ£éªå详æ
") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "id", value = "æ£éªåid", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/selectInspectsListById") |
| | | public Result selectInspectsListById(Integer id) { |
| | | return Result.success(inspectionService.selectInspectsListById(id)); |
| | | } |
| | | |
| | | @ApiOperation(value = "䏿¥(æ´æ°æ£éªç¶æ)") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "id", value = "æ£éªåid", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @PostMapping("/updateInspectsById") |
| | | public Result updateInspectsById(Integer id) { |
| | | //妿已ç»ä¸æ¥äºä¸è½å䏿¬¡ä¸æ¥ |
| | | Inspection inspection = inspectionService.getById(id); |
| | | if (ObjectUtils.isNotEmpty(inspection.getInspectionStatus())) { |
| | | return Result.fail("å·²ç»ä¸æ¥è¿äº,ä¸è½åæ¬¡ä¸æ¥!"); |
| | | } |
| | | return Result.success(inspectionService.updateInspectsById(id)); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import io.swagger.annotations.Api; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.yuanchu.limslaboratory.service.InspectionMaterialService; |
| | | |
| | | /** |
| | | * (æ ·å)æ£éªåéé¢çç©æ(InspectionMaterial)表æ§å¶å± |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:28 |
| | | */ |
| | | @Api(tags = "(æ ·å)æ£éªåéé¢çç©ææ¥å£") |
| | | @RestController |
| | | @RequestMapping("/inspectionMaterial") |
| | | public class InspectionMaterialController { |
| | | |
| | | @Autowired |
| | | private InspectionMaterialService inspectionMaterialService; |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.InspectionProduct; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InsProductVo; |
| | | import com.yuanchu.limslaboratory.service.InstrumentService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.json.JSONObject; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.domain.PageImpl; |
| | | import org.springframework.data.domain.PageRequest; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.service.InspectionProductService; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ç³è¯·åä¸ç©æä¸ç项ç®(InspectionProduct)表æ§å¶å± |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:54 |
| | | */ |
| | | @Api(tags = "è¯éªç®¡ç-->æ£éªç³è¯·-->æ£éªé¡¹ç®") |
| | | @RestController |
| | | @RequestMapping("/inspectionProduct") |
| | | public class InspectionProductController { |
| | | |
| | | @Autowired |
| | | private InspectionProductService inspectionProductService; |
| | | |
| | | @Resource |
| | | InstrumentService instrumentService; |
| | | |
| | | @ApiOperation(value = "æ¥è¯¢ææè®¾å¤") |
| | | @GetMapping("/selectInstrument") |
| | | public Result selectInstrument() { |
| | | return Result.success(instrumentService.selectInstrument()); |
| | | } |
| | | |
| | | @ApiOperation("éæ©è®¾å¤ä¿¡æ¯") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "id", value = "设å¤ID", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/selectInstrumentById") |
| | | public Result selectInstrumentById(Integer id) { |
| | | String equipmentName = instrumentService.getById(id).getEquipmentName(); |
| | | return Result.success(equipmentName); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "æ´æ°æ£éªé¡¹ç®") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "testValue", value = "æ£æµå¼", dataTypeClass = String.class, required = true), |
| | | @ApiImplicitParam(name = "required", value = "æ åå¼", dataTypeClass = String.class, required = true), |
| | | @ApiImplicitParam(name = "internal", value = "å
æ§å¼", dataTypeClass = String.class, required = true), |
| | | @ApiImplicitParam(name = "name", value = "项ç®åç§°", dataTypeClass = String.class, required = true), |
| | | @ApiImplicitParam(name = "inspectionMaterialId", value = "å
æ§å¼", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @PostMapping("/updateInsProduct") |
| | | public Result updateInsProduct(@RequestHeader("token") String token, @RequestBody InspectionProduct inspectionProduct) throws Exception { |
| | | Object object = RedisUtil.get(token); |
| | | Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class); |
| | | Integer userId = (Integer) unmarshal.get("id"); |
| | | return Result.success(inspectionProductService.updateInsProduct(userId,inspectionProduct)); |
| | | } |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.service.LinkBasicInformationService; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | @Api(tags = "æ¥æ£ç®¡ç-->å§ææ£éª") |
| | | @RestController |
| | | @RequestMapping("/link-basic-table") |
| | | public class LinkBasicInformationController { |
| | | |
| | | @Autowired |
| | | private LinkBasicInformationService linkBasicInformationService; |
| | | |
| | | @ApiOperation("龿¥-->è·å龿¥") |
| | | @GetMapping("/link") |
| | | public Result<?> getLink() { |
| | | Object link1 = null; |
| | | try { |
| | | link1 = RedisUtil.get("link"); |
| | | } catch (Exception e) { |
| | | String uuid = IdWorker.get32UUID(); |
| | | RedisUtil.set("link", uuid, 60 * 24); |
| | | return Result.success("success", uuid); |
| | | } |
| | | return Result.success(link1); |
| | | } |
| | | |
| | | @ApiOperation(value = "åé¡µè¡¨æ ¼") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "entrustCoding", value = "å§æç¼å·", dataTypeClass = String.class), |
| | | @ApiImplicitParam(name = "sampleName", value = "æ ·ååç§°", dataTypeClass = String.class), |
| | | @ApiImplicitParam(name = "entrusted", value = "å§æåä½", dataTypeClass = String.class), |
| | | @ApiImplicitParam(name = "inspectionStatus", value = "æ£éªç¶æ", dataTypeClass = Integer.class) |
| | | }) |
| | | @GetMapping("/page") |
| | | public Result<?> getLinkBasicPage(Integer pageNo, Integer pageSize, String entrustCoding, String sampleName, String entrusted, Integer inspectionStatus) { |
| | | IPage<Map<String, Object>> linkBasicPage = linkBasicInformationService.getLinkBasicPage(new Page<Object>(pageNo, pageSize), entrustCoding, sampleName, entrusted, inspectionStatus); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("total", linkBasicPage.getTotal()); |
| | | map.put("row", linkBasicPage.getRecords()); |
| | | return Result.success(map); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.yuanchu.limslaboratory.pojo.LinkBasicInformation; |
| | | import com.yuanchu.limslaboratory.pojo.Material; |
| | | import com.yuanchu.limslaboratory.service.LinkBasicInformationService; |
| | | import com.yuanchu.limslaboratory.service.MaterialService; |
| | | import com.yuanchu.limslaboratory.service.StandardService; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | @Api(tags = "æ¥æ£ç®¡ç-->å§ææ£éª") |
| | | @RestController |
| | | @RequestMapping("/link-basic") |
| | | public class LinkDetectionController { |
| | | |
| | | @Autowired |
| | | private LinkBasicInformationService linkBasicInformationService; |
| | | |
| | | @Autowired |
| | | private MaterialService materialService; |
| | | |
| | | @Autowired |
| | | private StandardService standardService; |
| | | |
| | | @ApiOperation("龿¥-->è·åæ ·ååç§°") |
| | | @GetMapping("/material") |
| | | public Result<?> getMaterialIdAndName(@RequestHeader("link") String link) { |
| | | String redisLink = RedisUtil.get("link").toString(); |
| | | if (redisLink.equals(link)){ |
| | | LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.select(Material::getId, Material::getName, Material::getCode); |
| | | List<Map<String, Object>> maps = materialService.listMaps(wrapper); |
| | | return Result.success(maps); |
| | | } |
| | | return Result.fail("æ±æé¾æ¥é误æå·²è¿æï¼"); |
| | | } |
| | | |
| | | @ApiOperation("龿¥-->è·åè§æ ¼åå·") |
| | | @GetMapping("/specification") |
| | | public Result<?> getSpecificationIdAndName(@RequestHeader("link") String link, String materialId) { |
| | | String redisLink = RedisUtil.get("link").toString(); |
| | | if (redisLink.equals(link)){ |
| | | List<Map<String, Object>> specificationIdAndName = standardService.getSpecificationIdAndName(materialId); |
| | | return Result.success(specificationIdAndName); |
| | | } |
| | | return Result.fail("æ±æé¾æ¥é误æå·²è¿æï¼"); |
| | | } |
| | | |
| | | @ApiOperation("龿¥-->æ·»å æ£éªç³è¯·å") |
| | | @PostMapping("/addInspection") |
| | | public Result<?> addLinkBasicInformation(@RequestHeader("link") String link, @RequestBody LinkBasicInformation linkBasicInformation) { |
| | | String redisLink = RedisUtil.get("link").toString(); |
| | | if (redisLink.equals(link)){ |
| | | String code = linkBasicInformationService.addLinkBasicInformation(linkBasicInformation); |
| | | if (!ObjectUtils.isEmpty(code)){ |
| | | return Result.success("æ·»å æåï¼", code); |
| | | } else { |
| | | return Result.fail("æ·»å 失败!"); |
| | | } |
| | | } |
| | | return Result.fail("æ±æé¾æ¥é误æå·²è¿æï¼"); |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.RawMaterial; |
| | | import com.yuanchu.limslaboratory.service.RawMaterialService; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | 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.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-28 |
| | | */ |
| | | @Api(tags = "æ¥æ£ç®¡ç-->åæææ¥æ£-->页é¢çæ¬è¡¨") |
| | | @RestController |
| | | @RequestMapping("/raw-material") |
| | | public class RawMaterialController { |
| | | |
| | | @Autowired |
| | | private RawMaterialService rawMaterialService; |
| | | |
| | | @ApiOperation("æ¥è¯¢æææ£éªè®¡ååé
") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "materialCoding", value = "ææç¼ç ", dataTypeClass = String.class), |
| | | @ApiImplicitParam(name = "materialName", value = "ææåç§°", dataTypeClass = String.class), |
| | | @ApiImplicitParam(name = "condition", value = "ç¶æ", dataTypeClass = Integer.class), |
| | | @ApiImplicitParam(name = "createTime", value = "æ¥ææ¥æ", dataTypeClass = String.class) |
| | | }) |
| | | @GetMapping("/selectAll") |
| | | public Result<?> selectRawMaterial(Integer pageSize, Integer pageNo, String materialCoding, String materialName, Integer condition, String createTime) { |
| | | IPage<RawMaterial> iPage = rawMaterialService.selectRawMaterial(materialCoding, materialName, condition, createTime, new Page<Objects>(pageNo, pageSize)); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("row", iPage.getRecords()); |
| | | map.put("total", iPage.getTotal()); |
| | | return Result.success(map); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Inspection; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ç³è¯·è¡¨(Inspection)è¡¨æ°æ®åºè®¿é®å± |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:03:36 |
| | | */ |
| | | public interface InspectionMapper extends BaseMapper<Inspection> { |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢æ£éªç³è¯·åå表 |
| | | * @param page |
| | | * @param message |
| | | * @return |
| | | */ |
| | | IPage<Map<String, Object>> selectInspectsList(Page<Object> page, String message); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.yuanchu.limslaboratory.pojo.InspectionMaterial; |
| | | |
| | | /** |
| | | * (æ ·å)æ£éªåéé¢çç©æ(InspectionMaterial)è¡¨æ°æ®åºè®¿é®å± |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:28 |
| | | */ |
| | | public interface InspectionMaterialMapper extends BaseMapper<InspectionMaterial> { |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.yuanchu.limslaboratory.pojo.InspectionProduct; |
| | | |
| | | /** |
| | | * ç³è¯·åä¸ç©æä¸ç项ç®(InspectionProduct)è¡¨æ°æ®åºè®¿é®å± |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:54 |
| | | */ |
| | | public interface InspectionProductMapper extends BaseMapper<InspectionProduct> { |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.LinkBasicInformation; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | public interface LinkBasicInformationMapper extends BaseMapper<LinkBasicInformation> { |
| | | |
| | | IPage<Map<String, Object>> getLinkBasicPage(Page<Object> page, String entrustCoding, String sampleName, String entrusted, Integer inspectionStatus); |
| | | |
| | | /** |
| | | * æ¥è¯¢ææå§æç³è¯·åæ ·å |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> selectLinkAll(); |
| | | |
| | | /** |
| | | * 鿩姿ç³è¯·åæ ·å |
| | | * @param bid |
| | | * @param did |
| | | * @return |
| | | */ |
| | | InspectionVo selectLinkByid(Integer bid, Integer did); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.yuanchu.limslaboratory.mybatis_config.MyBaseMapper; |
| | | import com.yuanchu.limslaboratory.pojo.LinkDetection; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | public interface LinkDetectionMapper extends MyBaseMapper<LinkDetection> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.RawMaterial; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-28 |
| | | */ |
| | | public interface RawMaterialMapper extends BaseMapper<RawMaterial> { |
| | | |
| | | IPage<RawMaterial> selectRawMaterial(String materialCoding, String materialName, Integer condition, String createTime, Page<Objects> page); |
| | | |
| | | |
| | | List<RawMaterial> selectRawmaAll(); |
| | | |
| | | InspectionVo selectRawmaById(Integer id); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.*; |
| | | import lombok.experimental.Accessors; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * ç³è¯·è¡¨(Inspection)表å®ä½ç±» |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:05 |
| | | */ |
| | | @Data |
| | | @Accessors(chain = true) |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Builder |
| | | @TableName("inspection") |
| | | public class Inspection implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ç³è¯·åç¼å· |
| | | **/ |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * ç³è¯·åç¼ç |
| | | **/ |
| | | private String code; |
| | | |
| | | /** |
| | | * æ£éªç±»å 0ï¼åææï¼1ï¼äº§åï¼2ï¼åæåï¼ |
| | | **/ |
| | | private Integer type; |
| | | |
| | | /** |
| | | * æ£éªç¶æï¼1ï¼åæ ¼ï¼0ï¼ä¸åæ ¼ |
| | | **/ |
| | | private Integer inspectionStatus; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | private Integer state; |
| | | |
| | | /** |
| | | * ç»è®°æ¥æ |
| | | **/ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * å
³è ç»è®°äººï¼ç¨æ·idï¼ |
| | | **/ |
| | | private Integer userId; |
| | | |
| | | /** |
| | | * æ£éªå¼å§æ¥æ |
| | | **/ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date startTime; |
| | | |
| | | /** |
| | | * æ£éªç»ææ¥æ |
| | | **/ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date endTime; |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.*; |
| | | import lombok.experimental.Accessors; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * (æ ·å)æ£éªåéé¢çç©æ(InspectionMaterial)表å®ä½ç±» |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:28 |
| | | */ |
| | | @Data |
| | | @Accessors(chain = true) |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Builder |
| | | @TableName("inspection_material") |
| | | public class InspectionMaterial implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * id |
| | | **/ |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * ç©æç¼ç |
| | | **/ |
| | | private String code; |
| | | |
| | | /** |
| | | * ç©æåç§° |
| | | **/ |
| | | private String name; |
| | | |
| | | /** |
| | | * æ¥æ£æ°é-ç©ææ°é |
| | | **/ |
| | | private Integer num; |
| | | |
| | | /** |
| | | * åä½ |
| | | **/ |
| | | private String unit; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | **/ |
| | | private String supplier; |
| | | |
| | | /** |
| | | * è§æ ¼åç§°-åå·åç§° |
| | | **/ |
| | | private String specifications; |
| | | |
| | | /** |
| | | * æ¥ææ¥æ |
| | | **/ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date formTime; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | private Integer state; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * å
³è ç³è¯·åid |
| | | **/ |
| | | private Integer inspectionId; |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.*; |
| | | import lombok.experimental.Accessors; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * ç³è¯·åä¸ç©æä¸ç项ç®(InspectionProduct)表å®ä½ç±» |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:55 |
| | | */ |
| | | @Data |
| | | @Accessors(chain = true) |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @Builder |
| | | @TableName("inspection_product") |
| | | public class InspectionProduct implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 项ç®id |
| | | **/ |
| | | @TableId(type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * 项ç®åç§° |
| | | **/ |
| | | private String name; |
| | | |
| | | /** |
| | | * åä½ |
| | | **/ |
| | | private String unit; |
| | | |
| | | /** |
| | | * è¦æ±å¼ |
| | | **/ |
| | | private String required; |
| | | |
| | | /** |
| | | * å
æ§å¼ |
| | | **/ |
| | | private String internal; |
| | | |
| | | /** |
| | | * æ£æµå¼ |
| | | **/ |
| | | private String testValue; |
| | | |
| | | /** |
| | | * ç»è®º 0ï¼ä¸åæ ¼ï¼1ï¼åæ ¼ |
| | | **/ |
| | | private Integer testState; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | private Integer state; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * ${column.comment} |
| | | **/ |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * å
³è æ¥æ£ç©æid |
| | | **/ |
| | | private Integer inspectionMaterialId; |
| | | |
| | | /** |
| | | * å
³è ç¨æ·id è¯éªå |
| | | **/ |
| | | private Integer userId; |
| | | |
| | | /** |
| | | * å
³è 设å¤id |
| | | **/ |
| | | private Integer instrumentId; |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="LinkBasicInformation对象", description="") |
| | | public class LinkBasicInformation implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®èªå¢", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "å§æç¼ç ", hidden = true) |
| | | private String entrustCoding; |
| | | |
| | | @ApiModelProperty(value = "å§æåä½", required = true, example = "é¿éå·´å·´") |
| | | private String entrusted; |
| | | |
| | | @ApiModelProperty(value = "è系人", required = true, example = "å°é»") |
| | | private String contacts; |
| | | |
| | | @ApiModelProperty(value = "èç³»çµè¯", required = true, example = "12321423432") |
| | | private String contactNumber; |
| | | |
| | | @ApiModelProperty(value = "èç³»å°å", required = true, example = "æ±èåé") |
| | | private String contactAddress; |
| | | |
| | | @ApiModelProperty(value = "宿æé", required = true, example = "2023-08-03", dataType = "date") |
| | | private Date completionDeadline; |
| | | |
| | | @ApiModelProperty(value = "éæ ·æ¶é´", required = true, example = "2023-08-03", dataType = "date") |
| | | private Date inspectionTime; |
| | | |
| | | @ApiModelProperty(value = "éæ ·æ¹å¼:1éæ ·;2ä¸é¨", required = true, example = "1") |
| | | private Integer sampleDeliveryMode; |
| | | |
| | | @ApiModelProperty(value = "éæ ·äººï¼å¦æéæ ·æ¹å¼éæ©äºéæ ·ï¼é£ä¹å¿
å¡«", example = "å°ç½") |
| | | private String sampleSender; |
| | | |
| | | @ApiModelProperty(value = "éæ ·äººçµè¯ï¼å¦æéæ ·æ¹å¼éæ©äºéæ ·ï¼é£ä¹å¿
å¡«", example = "123456789676") |
| | | private String sampleDeliveryPhone; |
| | | |
| | | @ApiModelProperty(value = "æ¥åæ°", required = true, example = "23") |
| | | private Integer reportNumber; |
| | | |
| | | @ApiModelProperty(value = "姿夿³¨", example = "姿夿³¨YPBH123456789YPBH123456789YPBH123456789") |
| | | private String entrustRemarks; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty(value = "æ£éªä¿¡æ¯") |
| | | private List<LinkDetection> linkDetectionList; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="LinkDetection对象", description="") |
| | | public class LinkDetection implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "æ ·åç¼å·", required = true, example = "YPBH123456789") |
| | | private String sampleNumber; |
| | | |
| | | @ApiModelProperty(value = "æ ·ååç§°", required = true, example = "å卿º") |
| | | private String sampleName; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼åå·", required = true, example = "GGXH-AAAAA") |
| | | private String specificationsModels; |
| | | |
| | | @NotBlank(message = "请填ååä½ï¼") |
| | | @ApiModelProperty(value = "åä½", required = true, example = "ç¾åº¦") |
| | | private String unit; |
| | | |
| | | @NotNull(message = "è¯·å¡«åæ ·åæ°éï¼") |
| | | @ApiModelProperty(value = "æ ·åæ°é", required = true, example = "20") |
| | | private Integer samplesNumber; |
| | | |
| | | @NotBlank(message = "è¯éªä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "è¯éª", required = true, example = "忢¦") |
| | | private String experiment; |
| | | |
| | | @ApiModelProperty(value = "夿³¨", example = "éè¿äº") |
| | | private String remarks; |
| | | |
| | | @ApiModelProperty(value = "LinkBasicInformation对象Id", hidden = true) |
| | | private Integer linkBasicId; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "æ£éªæ¥æ", hidden = true) |
| | | private Date dateSurvey; |
| | | |
| | | @ApiModelProperty(value = "æ£éªç¶æ", hidden = true) |
| | | private Integer inspectionStatus; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-28 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="RawMaterial对象", description="") |
| | | public class RawMaterial implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "ä¾åºååç§°") |
| | | private String supplierName; |
| | | |
| | | @ApiModelProperty(value = "ææç¼ç ") |
| | | private String materialCoding; |
| | | |
| | | @ApiModelProperty(value = "ææåç§°") |
| | | private String materialName; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼åå·") |
| | | private String specificationsModels; |
| | | |
| | | @ApiModelProperty(value = "åä½") |
| | | private String unit; |
| | | |
| | | @ApiModelProperty(value = "æ°é") |
| | | private Integer quantity; |
| | | |
| | | @ApiModelProperty(value = "æ¥æ£æ¥æ") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private LocalDateTime inspectionDate; |
| | | |
| | | @ApiModelProperty(value = "æ£éªäºº") |
| | | private String surveyor; |
| | | |
| | | @ApiModelProperty(value = "æ£éªæ¥æ") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private LocalDateTime dateSurvey; |
| | | |
| | | @ApiModelProperty(value = "ç¶æ0:å¾
æ£æµ;1:å·²æ£æµ") |
| | | private Integer condition; |
| | | |
| | | // @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.vo; |
| | | |
| | | |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | |
| | | @Data |
| | | public class InsProductVo implements Serializable { |
| | | |
| | | /** |
| | | * 项ç®åç§° |
| | | **/ |
| | | @JsonSerialize |
| | | private String name; |
| | | |
| | | /** |
| | | * åä½ |
| | | **/ |
| | | @JsonSerialize |
| | | private String unit; |
| | | |
| | | /** |
| | | * æ åå¼ |
| | | **/ |
| | | @JsonSerialize |
| | | private String required; |
| | | |
| | | /** |
| | | * å
æ§å¼ |
| | | **/ |
| | | @JsonSerialize |
| | | private String internal; |
| | | |
| | | /** |
| | | * æ£æµå¼ |
| | | **/ |
| | | @JsonSerialize |
| | | private String testValue; |
| | | |
| | | /** |
| | | * ç»è®º 0ï¼ä¸åæ ¼ï¼1ï¼åæ ¼ |
| | | **/ |
| | | @JsonSerialize |
| | | private Integer testState; |
| | | |
| | | /** |
| | | * 设å¤åç§° |
| | | **/ |
| | | @JsonSerialize |
| | | private String instrumentName; |
| | | |
| | | /** |
| | | * å
³è ç³è¯·åid |
| | | **/ |
| | | @JsonSerialize |
| | | private Integer inspectionMaterialId; |
| | | |
| | | /** |
| | | * æ£éªå |
| | | **/ |
| | | @JsonSerialize |
| | | private String userName; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.vo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldFill; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | //æ¥è¯¢æ£éªå详æ
(æ£éªåºæ¬ä¿¡æ¯ä»¥åæ£éªé¡¹ç®ä¿¡æ¯) |
| | | public class InspectDetailVo implements Serializable { |
| | | |
| | | /* æ£éªè¯¦æ
*/ |
| | | /** |
| | | * æ¥ææ¥æ |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date formTime; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | **/ |
| | | @JsonSerialize |
| | | private String supplier; |
| | | |
| | | /** |
| | | * åææç¼ç |
| | | */ |
| | | @JsonSerialize |
| | | private String code; |
| | | |
| | | /** |
| | | * åææåç§° |
| | | */ |
| | | @JsonSerialize |
| | | private String name; |
| | | |
| | | /** |
| | | * åå·è§æ ¼ |
| | | */ |
| | | @JsonSerialize |
| | | private String specifications; |
| | | |
| | | /** |
| | | * åä½ |
| | | */ |
| | | @JsonSerialize |
| | | private String unit; |
| | | |
| | | /** |
| | | * æ°é |
| | | */ |
| | | @JsonSerialize |
| | | private Integer num; |
| | | |
| | | /** |
| | | * æ£éªå¼å§æ¥æ |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date startTime; |
| | | |
| | | |
| | | /** |
| | | * æ£éªç»ææ¥æ |
| | | */ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date endTime; |
| | | |
| | | |
| | | /** |
| | | * æ¥æ£äººï¼å½åç¨æ·åï¼ |
| | | */ |
| | | @JsonSerialize |
| | | private String userName; |
| | | |
| | | /* æ£éªé¡¹ç® */ |
| | | @JsonSerialize |
| | | private List<InsProductVo> insProducts; |
| | | |
| | | /* æ£éªç»è®º */ |
| | | /** |
| | | * åæ ¼ç¶æ 0ï¼ä¸åæ ¼ï¼1ï¼åæ ¼ |
| | | */ |
| | | @JsonSerialize |
| | | private Integer inspectionStatus; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.vo; |
| | | |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | //æ°å¢æ£éªå |
| | | @Data |
| | | public class InspectionVo implements Serializable { |
| | | |
| | | /** |
| | | *æ£éªç±»å 0ï¼åææï¼1ï¼äº§åï¼2ï¼åæåï¼ |
| | | **/ |
| | | @JsonSerialize |
| | | private Integer type; |
| | | |
| | | /** |
| | | * æ¥ææ¥æ |
| | | **/ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date formTime; |
| | | |
| | | /** |
| | | * ä¾åºå |
| | | **/ |
| | | @JsonSerialize |
| | | private String supplier; |
| | | |
| | | /** |
| | | * ç©æç¼ç |
| | | **/ |
| | | @JsonSerialize |
| | | private String mcode; |
| | | |
| | | /** |
| | | * ç©æåç§° |
| | | **/ |
| | | @JsonSerialize |
| | | private String name; |
| | | |
| | | /** |
| | | * è§æ ¼åç§°-åå·åç§° |
| | | **/ |
| | | @JsonSerialize |
| | | private String specifications; |
| | | |
| | | /** |
| | | * åä½ |
| | | **/ |
| | | @JsonSerialize |
| | | private String unit; |
| | | |
| | | /** |
| | | * æ¥æ£æ°é-ç©ææ°é |
| | | **/ |
| | | @JsonSerialize |
| | | private Integer num; |
| | | |
| | | /** |
| | | * æ£éªå¼å§æ¥æ |
| | | **/ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date startTime; |
| | | |
| | | /** |
| | | * æ£éªç»ææ¥æ |
| | | **/ |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date endTime; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.InspectionMaterial; |
| | | |
| | | /** |
| | | * (æ ·å)æ£éªåéé¢çç©æ(InspectionMaterial)表æå¡æ¥å£ |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:28 |
| | | */ |
| | | public interface InspectionMaterialService extends IService<InspectionMaterial> { |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.InspectionProduct; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InsProductVo; |
| | | |
| | | /** |
| | | * ç³è¯·åä¸ç©æä¸ç项ç®(InspectionProduct)表æå¡æ¥å£ |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:54 |
| | | */ |
| | | public interface InspectionProductService extends IService<InspectionProduct> { |
| | | |
| | | /** |
| | | * æ´æ°æ£éªé¡¹ç® |
| | | * @param userId |
| | | * @param inspectionProduct |
| | | * @return |
| | | */ |
| | | boolean updateInsProduct(Integer userId, InspectionProduct inspectionProduct); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.Inspection; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectDetailVo; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ç³è¯·è¡¨(Inspection)表æå¡æ¥å£ |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:03:36 |
| | | */ |
| | | public interface InspectionService extends IService<Inspection> { |
| | | |
| | | |
| | | /** |
| | | *æ¥è¯¢æ£éªç³è¯·åå表 |
| | | * @param page |
| | | * @param message |
| | | * @return |
| | | */ |
| | | IPage<Map<String, Object>> selectInspectsList(Page<Object> page, String message); |
| | | |
| | | /** |
| | | * æ°å¢æ£éªç³è¯·è¡¨ |
| | | * @param id |
| | | * @param |
| | | * @return |
| | | */ |
| | | Integer addInspect(Integer id, InspectionVo inspectionVo); |
| | | |
| | | |
| | | /** |
| | | *æ ¹æ®æ£éªåidæ¥è¯¢åæææ£éªå详æ
|
| | | * @param id |
| | | * @return |
| | | */ |
| | | InspectDetailVo selectInspectsListById(Integer id); |
| | | |
| | | /** |
| | | * 䏿¥(æ´æ°æ£éªåæ£éªç»æ) |
| | | * @param id |
| | | * @return |
| | | */ |
| | | boolean updateInspectsById(Integer id); |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.LinkBasicInformation; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | public interface LinkBasicInformationService extends IService<LinkBasicInformation> { |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | String addLinkBasicInformation(LinkBasicInformation linkBasicInformation); |
| | | |
| | | IPage<Map<String, Object>> getLinkBasicPage(Page<Object> page, String entrustCoding, String sampleName, String entrusted, Integer inspectionStatus); |
| | | |
| | | /** |
| | | *æ¥è¯¢ææå§ææ£éªåæ ·å |
| | | * @return |
| | | */ |
| | | List<Map<String, Object>> selectLinkAll(); |
| | | |
| | | /** |
| | | * æ ¹æ®å§ææ£éªidåæ ·åidæ¥è¯¢å§ææ£éªåæ ·å |
| | | * @param bid |
| | | * @param did |
| | | * @return |
| | | */ |
| | | InspectionVo selectLinkByid(Integer bid, Integer did); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.LinkDetection; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | public interface LinkDetectionService extends IService<LinkDetection> { |
| | | |
| | | // æ¹éæ·»å |
| | | void insertListData(Integer id, List<LinkDetection> linkDetectionList); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.RawMaterial; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | |
| | | import java.text.ParseException; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-28 |
| | | */ |
| | | public interface RawMaterialService extends IService<RawMaterial> { |
| | | |
| | | IPage<RawMaterial> selectRawMaterial(String materialCoding, String materialName, Integer condition, String createTime, Page<Objects> page); |
| | | |
| | | /** |
| | | * æ¥è¯¢åæææ£éª |
| | | * |
| | | * @return |
| | | */ |
| | | List<RawMaterial> selectRawmaAll(); |
| | | |
| | | /** |
| | | * éæ©åæææ¥æ£ |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | | InspectionVo selectRawmaById(Integer id, String startTime, String endTime) throws ParseException; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.mapper.InspectionMaterialMapper; |
| | | import com.yuanchu.limslaboratory.pojo.InspectionMaterial; |
| | | import com.yuanchu.limslaboratory.service.InspectionMaterialService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * (æ ·å)æ£éªåéé¢çç©æ(InspectionMaterial)表æå¡å®ç°ç±» |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:28 |
| | | */ |
| | | @Service |
| | | public class InspectionMaterialServiceImpl extends ServiceImpl<InspectionMaterialMapper, InspectionMaterial> implements InspectionMaterialService { |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.mapper.InspectionProductMapper; |
| | | import com.yuanchu.limslaboratory.pojo.InspectionProduct; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InsProductVo; |
| | | import com.yuanchu.limslaboratory.service.InspectionProductService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * ç³è¯·åä¸ç©æä¸ç项ç®(InspectionProduct)表æå¡å®ç°ç±» |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:04:54 |
| | | */ |
| | | @Service |
| | | public class InspectionProductServiceImpl extends ServiceImpl<InspectionProductMapper, InspectionProduct> implements InspectionProductService { |
| | | |
| | | @Resource |
| | | InspectionProductMapper inspectionProductMapper; |
| | | |
| | | //æ´æ°æ£éªé¡¹ç® |
| | | @Override |
| | | public boolean updateInsProduct(Integer userId, InspectionProduct inspectionProduct) { |
| | | //èµå¼æ£éªåid |
| | | inspectionProduct.setUserId(userId); |
| | | //å¤ææ£æµå¼æ¯å¦æ»¡è¶³æ åå¼åå
æ§å¼çè¦æ±,妿䏿»¡è¶³åæ£éªç»è®ºä¸ºä¸åæ ¼0 |
| | | String testValue = inspectionProduct.getTestValue();//æ£éªå¼ |
| | | String required = inspectionProduct.getRequired();//æ åå¼ |
| | | String internal = inspectionProduct.getInternal();//å
æ§å¼ |
| | | inspectionProduct.setTestState(checkValues(required, internal, testValue)); |
| | | //æ ¹æ®æ£éªé¡¹ç®ååå
³èçæ£éªç©æidæ¥æ¥è¯¢æ£éªé¡¹ç®çæ°æ® |
| | | LambdaUpdateWrapper<InspectionProduct> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(InspectionProduct::getInspectionMaterialId, inspectionProduct.getInspectionMaterialId()) |
| | | .eq(InspectionProduct::getName, inspectionProduct.getName()); |
| | | inspectionProductMapper.update(inspectionProduct, updateWrapper); |
| | | return true; |
| | | } |
| | | |
| | | /*å¤ææ£æµå¼æ¯å¦æ»¡è¶³æ åå¼åå
æ§å¼çè¦æ±,妿䏿»¡è¶³åæ£éªç»è®ºä¸ºä¸åæ ¼*/ |
| | | private int checkValues(String standardValueStr, String controlValueStr, String detectionValueStr) { |
| | | boolean isStandardValueSatisfied = isValueSatisfied(standardValueStr, detectionValueStr); |
| | | boolean isControlValueSatisfied = isValueSatisfied(controlValueStr, detectionValueStr); |
| | | |
| | | if (isStandardValueSatisfied && isControlValueSatisfied) { |
| | | return 1; |
| | | } else { |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | private boolean isValueSatisfied(String valueStr, String detectionValueStr) { |
| | | String substring = valueStr.substring(1, 2); |
| | | if (substring.equals("=")) { |
| | | String operator = valueStr.substring(0, 2); |
| | | Double standardValue = Double.parseDouble(valueStr.substring(2)); |
| | | Double detectionValue = Double.parseDouble(detectionValueStr); |
| | | switch (operator) { |
| | | case ">=": |
| | | return detectionValue >= standardValue; |
| | | case "<=": |
| | | return detectionValue <= standardValue; |
| | | default: |
| | | return false; |
| | | } |
| | | } else { |
| | | String operator = valueStr.substring(0, 1); |
| | | Double standardValue = Double.parseDouble(valueStr.substring(1)); |
| | | Double detectionValue = Double.parseDouble(detectionValueStr); |
| | | switch (operator) { |
| | | case ">": |
| | | return detectionValue > standardValue; |
| | | case "â¥": |
| | | return detectionValue >= standardValue; |
| | | case "â¤": |
| | | return detectionValue <= standardValue; |
| | | case "<": |
| | | return detectionValue < standardValue; |
| | | case "=": |
| | | return detectionValue.equals(standardValue); |
| | | default: |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import cn.hutool.core.lang.Snowflake; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.mapper.*; |
| | | import com.yuanchu.limslaboratory.pojo.*; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InsProductVo; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectDetailVo; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | import com.yuanchu.limslaboratory.service.*; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * ç³è¯·è¡¨(Inspection)表æå¡å®ç°ç±» |
| | | * |
| | | * @author zss |
| | | * @since 2023-08-03 13:03:36 |
| | | */ |
| | | @Service |
| | | public class InspectionServiceImpl extends ServiceImpl<InspectionMapper, Inspection> implements InspectionService { |
| | | |
| | | @Resource |
| | | InspectionMapper inspectionMapper; |
| | | |
| | | @Resource |
| | | InspectionMaterialMapper inspectionMaterialMapper; |
| | | |
| | | @Resource |
| | | InspectionProductService inspectionProductService; |
| | | |
| | | @Resource |
| | | InspectionProductMapper inspectionProductMapper; |
| | | |
| | | @Resource |
| | | MaterialMapper materialMapper; |
| | | |
| | | @Resource |
| | | StandardService standardService; |
| | | |
| | | @Resource |
| | | SpecificationsService specificationsService; |
| | | |
| | | @Resource |
| | | ProductMapper productMapper; |
| | | |
| | | @Resource |
| | | InstrumentService instrumentService; |
| | | |
| | | @Resource |
| | | UserMapper userMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢æ£éªç³è¯·åå表 |
| | | * |
| | | * @param message |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<Map<String, Object>> selectInspectsList(Page<Object> page, String message) { |
| | | return inspectionMapper.selectInspectsList(page, message); |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢æ£éªç³è¯·è¡¨ |
| | | * |
| | | * @param id |
| | | * @param |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Integer addInspect(Integer id, InspectionVo inspectionVo) { |
| | | /*æ°å¢æ£éªç³è¯·è¡¨*/ |
| | | Inspection inspection = Inspection.builder() |
| | | .startTime(inspectionVo.getStartTime()) |
| | | .endTime(inspectionVo.getEndTime()) |
| | | .type(inspectionVo.getType()) |
| | | .code(new Snowflake(1, 1).nextIdStr()) |
| | | .userId(id) |
| | | .build(); |
| | | inspectionMapper.insert(inspection); |
| | | /*æ°å¢æ£éªæ ·å表*/ |
| | | InspectionMaterial inspectionMaterial = InspectionMaterial.builder() |
| | | .code(inspectionVo.getMcode()) |
| | | .name(inspectionVo.getName()) |
| | | .num(inspectionVo.getNum()) |
| | | .unit(inspectionVo.getUnit()) |
| | | .supplier(inspectionVo.getSupplier()) |
| | | .specifications(inspectionVo.getSpecifications()) |
| | | .formTime(inspectionVo.getFormTime()) |
| | | .inspectionId(inspection.getId()) |
| | | .build(); |
| | | inspectionMaterialMapper.insert(inspectionMaterial); |
| | | /*æ°å¢æ£éªé¡¹ç®è¡¨*/ |
| | | //è·åç©æid |
| | | Material material = materialMapper.selectOne(Wrappers.<Material>query() |
| | | .eq("name", inspectionVo.getName()) |
| | | .eq("code", inspectionVo.getMcode())); |
| | | //è·åè§æ ¼åç§°ååå·åç§° |
| | | String specification = inspectionVo.getSpecifications(); |
| | | String[] split = specification.split("-"); |
| | | String stName = split[0]; |
| | | String spName = split[1]; |
| | | //è·åè§æ ¼id |
| | | Standard standard = standardService.getOne(Wrappers.<Standard>query() |
| | | .eq("name", stName) |
| | | .eq("material_id", material.getId())); |
| | | //è·ååå·id |
| | | Specifications specifications = specificationsService.getOne(Wrappers.<Specifications>query() |
| | | .eq("name", spName) |
| | | .eq("standard_id", standard.getId())); |
| | | //æ ¹æ®åå·idæ¥è¯¢é¡¹ç®ä¿¡æ¯ |
| | | List<Product> productList = productMapper.selectList(Wrappers.<Product>query().eq("specifications_id", specifications.getId())); |
| | | ArrayList<InspectionProduct> list = new ArrayList<>(); |
| | | for (Product product : productList) { |
| | | InspectionProduct rawInsProduct = InspectionProduct.builder() |
| | | .name(product.getName()) |
| | | .unit(product.getUnit()) |
| | | .required(product.getRequired()) |
| | | .internal(product.getInternal()) |
| | | .inspectionMaterialId(material.getId()) |
| | | .build(); |
| | | list.add(rawInsProduct); |
| | | } |
| | | //æ£éªé¡¹ç®æ¹éæ·»å |
| | | inspectionProductService.saveBatch(list); |
| | | return inspection.getId(); |
| | | } |
| | | |
| | | //æ ¹æ®æ£éªåidæ¥è¯¢åæææ£éªå详æ
|
| | | @Override |
| | | public InspectDetailVo selectInspectsListById(Integer id) { |
| | | /*å°æ£éªååºæ¬ä¿¡æ¯æ¥è¯¢åºæ¥å¹¶å°è£
å°RawInspectVo对象ä¸*/ |
| | | Inspection inspection = inspectionMapper.selectById(id); |
| | | InspectDetailVo inspectDetailVo = new InspectDetailVo(); |
| | | //æ¥æ£äºº |
| | | User user = userMapper.selectById(inspection.getUserId()); |
| | | inspectDetailVo.setUserName(user.getName()); |
| | | //æ¥æ£å¼å§æ¶é´åç»ææ¶é´ |
| | | inspectDetailVo.setStartTime(inspection.getStartTime()); |
| | | inspectDetailVo.setEndTime(inspection.getEndTime()); |
| | | //æ£éªç»è®º |
| | | inspectDetailVo.setInspectionStatus(inspection.getInspectionStatus()); |
| | | //æ¥è¯¢æ£éªç©æ |
| | | InspectionMaterial inspectionMaterial = inspectionMaterialMapper.selectOne(Wrappers.<InspectionMaterial>query().eq("inspection_id", id)); |
| | | //æ¥ææ¥æ,ä¾åºååç§°,åææç¼ç ,åææåç§°,è§æ ¼åå·,åä½,æ°é |
| | | BeanUtils.copyProperties(inspectionMaterial, inspectDetailVo); |
| | | /*æ¥è¯¢æ£éªåéé¢çæ£éªé¡¹ç®,å¹¶å°è£
å°RawInspectVo对象ä¸*/ |
| | | LambdaQueryWrapper<InspectionProduct> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(InspectionProduct::getInspectionMaterialId, inspectionMaterial.getId()); |
| | | List<InspectionProduct> inspectionProducts = inspectionProductMapper.selectList(queryWrapper); |
| | | //è¿éæ¥å°ç设å¤id忣éªåidè¦æ¥è¯¢åç§° |
| | | List<InsProductVo> insProductVos = inspectionProducts.stream().map(insProduct -> { |
| | | //å°ä¸ä¸ªå¯¹è±¡çå¼èµå¼ç»å¦ä¸ä¸ªå¯¹è±¡ |
| | | InsProductVo insProductVo = new InsProductVo(); |
| | | BeanUtils.copyProperties(insProduct, insProductVo); |
| | | //è·å设å¤å(åææ¯å¦æåå¨) |
| | | if (insProduct.getInstrumentId() != null) { |
| | | String equipmentName = instrumentService.getById(insProduct.getInstrumentId()).getEquipmentName(); |
| | | insProductVo.setInstrumentName(equipmentName); |
| | | } |
| | | //è·åç¨æ·å(åææ¯å¦æåå¨) |
| | | if (insProduct.getUserId() != null) { |
| | | String userName = userMapper.selectById(insProduct.getUserId()).getName(); |
| | | insProductVo.setUserName(userName); |
| | | } |
| | | //项ç®å
³èç©æid |
| | | insProductVo.setInspectionMaterialId(inspectionMaterial.getId()); |
| | | return insProductVo; |
| | | }).collect(Collectors.toList()); |
| | | inspectDetailVo.setInsProducts(insProductVos); |
| | | return inspectDetailVo; |
| | | } |
| | | |
| | | //æ´æ°æ£éªåæ£éªç»æ |
| | | @Override |
| | | public boolean updateInspectsById(Integer id) { |
| | | //æ´æ°æ£éªåéé¢çæ£éªç¶æåæ£éªç»è®º |
| | | InspectDetailVo inspectDetailVo = selectInspectsListById(id); |
| | | Inspection inspection = Inspection.builder() |
| | | .id(id) |
| | | .inspectionStatus(inspectDetailVo.getInspectionStatus()) |
| | | .build(); |
| | | inspectionMapper.updateById(inspection); |
| | | //çææ¥åå |
| | | |
| | | return true; |
| | | } |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.LinkBasicInformation; |
| | | import com.yuanchu.limslaboratory.mapper.LinkBasicInformationMapper; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | import com.yuanchu.limslaboratory.service.LinkBasicInformationService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.service.LinkDetectionService; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | @Service |
| | | public class LinkBasicInformationServiceImpl extends ServiceImpl<LinkBasicInformationMapper, LinkBasicInformation> implements LinkBasicInformationService { |
| | | |
| | | @Resource |
| | | private LinkBasicInformationMapper linkBasicInformationMapper; |
| | | |
| | | @Autowired |
| | | private LinkDetectionService linkDetectionService; |
| | | |
| | | @Override |
| | | public String addLinkBasicInformation(LinkBasicInformation linkBasicInformation) { |
| | | String code = MyUtil.getTimeSixNumberCode("SL"); |
| | | linkBasicInformation.setEntrustCoding(code); |
| | | int insert = linkBasicInformationMapper.insert(linkBasicInformation); |
| | | if (insert == 1) { |
| | | linkDetectionService.insertListData(linkBasicInformation.getId(), linkBasicInformation.getLinkDetectionList()); |
| | | return code; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<Map<String, Object>> getLinkBasicPage(Page<Object> page, String entrustCoding, String sampleName, String entrusted, Integer inspectionStatus) { |
| | | return linkBasicInformationMapper.getLinkBasicPage(page, entrustCoding, sampleName, entrusted, inspectionStatus); |
| | | } |
| | | |
| | | //æ¥è¯¢ææå§ææ£éªåæ ·å |
| | | @Override |
| | | public List<Map<String, Object>> selectLinkAll() { |
| | | return linkBasicInformationMapper.selectLinkAll(); |
| | | } |
| | | |
| | | //æ ¹æ®å§ææ£éªidåæ ·åidæ¥è¯¢å§ææ£éªåæ ·å |
| | | @Override |
| | | public InspectionVo selectLinkByid(Integer bid, Integer did) { |
| | | InspectionVo inspectionVo = linkBasicInformationMapper.selectLinkByid(bid, did); |
| | | inspectionVo.setType(1); |
| | | return inspectionVo; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.LinkDetection; |
| | | import com.yuanchu.limslaboratory.mapper.LinkDetectionMapper; |
| | | import com.yuanchu.limslaboratory.service.LinkDetectionService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-08-03 |
| | | */ |
| | | @Service |
| | | public class LinkDetectionServiceImpl extends ServiceImpl<LinkDetectionMapper, LinkDetection> implements LinkDetectionService { |
| | | |
| | | @Resource |
| | | private LinkDetectionMapper linkDetectionMapper; |
| | | |
| | | // æ¹éæ·»å |
| | | @Override |
| | | public void insertListData(Integer id, List<LinkDetection> linkDetectionList) { |
| | | for (LinkDetection linkDetection:linkDetectionList){ |
| | | linkDetection.setLinkBasicId(id); |
| | | } |
| | | linkDetectionMapper.insertBatchSomeColumn(linkDetectionList); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.yuanchu.limslaboratory.pojo.RawMaterial; |
| | | import com.yuanchu.limslaboratory.mapper.RawMaterialMapper; |
| | | import com.yuanchu.limslaboratory.pojo.vo.InspectionVo; |
| | | import com.yuanchu.limslaboratory.service.RawMaterialService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-28 |
| | | */ |
| | | @Service |
| | | public class RawMaterialServiceImpl extends ServiceImpl<RawMaterialMapper, RawMaterial> implements RawMaterialService { |
| | | |
| | | @Resource |
| | | private RawMaterialMapper rawMaterialMapper; |
| | | |
| | | /** |
| | | * å页æ¥è¯¢ |
| | | * |
| | | * @param materialCoding |
| | | * @param materialName |
| | | * @param condition |
| | | * @param createTime |
| | | * @param page |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<RawMaterial> selectRawMaterial(String materialCoding, String materialName, Integer condition, String createTime, Page<Objects> page) { |
| | | return rawMaterialMapper.selectRawMaterial(materialCoding, materialName, condition, createTime, page); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ææåæææ¥æ£å |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<RawMaterial> selectRawmaAll() { |
| | | return rawMaterialMapper.selectRawmaAll(); |
| | | } |
| | | |
| | | /** |
| | | * éæ©åæææ¥æ£ |
| | | * |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public InspectionVo selectRawmaById(Integer id, String startTime, String endTime) throws ParseException { |
| | | InspectionVo inspectionVo = rawMaterialMapper.selectRawmaById(id); |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); |
| | | inspectionVo.setStartTime(formatter.parse(startTime)); |
| | | inspectionVo.setEndTime(formatter.parse(endTime)); |
| | | inspectionVo.setType(0); |
| | | return inspectionVo; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.InspectionMapper"> |
| | | <select id="selectInspectsList" resultType="map"> |
| | | select i.id, |
| | | i.code icode, |
| | | type, |
| | | DATE_FORMAT(`form_time`,'%Y-%m-%d'), |
| | | supplier, |
| | | im.code mcode, |
| | | im.name, |
| | | specifications, |
| | | unit, |
| | | num, |
| | | DATE_FORMAT(i.`create_time`,'%Y-%m-%d'), |
| | | u.name userName, |
| | | inspection_status, |
| | | DATE_FORMAT(i.`start_time`,'%Y-%m-%d'), |
| | | DATE_FORMAT(i.`end_time`,'%Y-%m-%d') |
| | | from lims_laboratory.inspection i |
| | | join lims_laboratory.user u on i.user_id = u.id |
| | | join lims_laboratory.inspection_material im on i.id = im.inspection_id |
| | | where i.state=1 |
| | | <if test="message!=null"> |
| | | and i.code like concat('%', #{message}, '%') |
| | | or im.name like concat('%', #{message}, '%') |
| | | </if> |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.InspectionMaterialMapper"> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.InspectionProductMapper"> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.LinkBasicInformationMapper"> |
| | | |
| | | <select id="getLinkBasicPage" resultType="map"> |
| | | SELECT l.`id`, l.`entrust_coding`, l.`entrusted`, d.`samples_number`, d.`sample_name`, d.`specifications_models`, |
| | | DATE_FORMAT(l.`inspection_time`,'%Y-%m-%d') inspectionTime, DATE_FORMAT(l.`completion_deadline`,'%Y-%m-%d') inspectionTime, l.`contacts`, d.`date_survey`, d.`inspection_status` |
| | | FROM link_basic_information l, link_detection d |
| | | WHERE l.`id` = d.`link_basic_id` |
| | | AND l.`state` = 1 |
| | | <if test="entrustCoding != null and entrustCoding != null"> |
| | | AND l.`entrust_coding` like concat('%', #{entrustCoding}, '%') |
| | | </if> |
| | | <if test="sampleName != null and sampleName != null"> |
| | | AND d.`sample_name` like concat('%', #{sampleName}, '%') |
| | | </if> |
| | | <if test="entrusted != null and entrusted != null"> |
| | | AND l.`contacts` like concat('%', #{entrusted}, '%') |
| | | </if> |
| | | <if test="inspectionStatus != null and inspectionStatus != null"> |
| | | AND d.`inspection_status` = #{inspectionStatus} |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectLinkAll" resultType="java.util.Map"> |
| | | SELECT l.`id`, l.`entrust_coding`, l.`entrusted`, d.`samples_number`, d.`sample_name`, d.`specifications_models`, |
| | | DATE_FORMAT(l.`inspection_time`,'%Y-%m-%d') inspectionTime, l.`completion_deadline`, l.`contacts`, d.`date_survey`, d.`inspection_status` |
| | | FROM lims_laboratory.link_basic_information l, lims_laboratory.link_detection d |
| | | WHERE l.`id` = d.`link_basic_id` |
| | | AND l.`state` = 1 |
| | | </select> |
| | | |
| | | <select id="selectLinkByid" resultType="com.yuanchu.limslaboratory.pojo.vo.InspectionVo"> |
| | | SELECT l.`inspection_time` formTime, |
| | | l.`entrusted` supplier, |
| | | d.`sample_number` mcode, |
| | | d.`sample_name` name, |
| | | d.`specifications_models` specifications, |
| | | d.`unit`, |
| | | d.`samples_number` num, |
| | | d.date_survey startTime, |
| | | l.completion_deadline endTime |
| | | FROM lims_laboratory.link_basic_information l, lims_laboratory.link_detection d |
| | | WHERE l.`id` = d.`link_basic_id` |
| | | AND l.`state` = 1 |
| | | <if test="bid!=null"> |
| | | and l.id=#{bid} |
| | | </if> |
| | | <if test="did!=null"> |
| | | and d.id=#{did} |
| | | </if> |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.LinkDetectionMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.RawMaterialMapper"> |
| | | |
| | | <select id="selectRawMaterial" resultType="com.yuanchu.limslaboratory.pojo.RawMaterial"> |
| | | SELECT * |
| | | FROM raw_material r |
| | | where r.state = 1 |
| | | <if test="materialCoding != null and materialCoding != ''"> |
| | | AND r.`material_coding` LIKE CONCAT('%',#{materialCoding},'%') |
| | | </if> |
| | | <if test="materialName != null and materialName != ''"> |
| | | AND r.`material_name` LIKE CONCAT('%',#{materialName},'%') |
| | | </if> |
| | | <if test="condition != null and condition != ''"> |
| | | AND r.`condition` = #{condition} |
| | | </if> |
| | | <if test="createTime != null and createTime != ''"> |
| | | AND DATE_FORMAT(r.`create_time`,'%Y-%m-%d') = #{createTime} |
| | | </if> |
| | | </select> |
| | | <select id="selectRawmaAll" resultType="com.yuanchu.limslaboratory.pojo.RawMaterial"> |
| | | select * from lims_laboratory.raw_material where state=1 |
| | | </select> |
| | | |
| | | <select id="selectRawmaById" resultType="com.yuanchu.limslaboratory.pojo.vo.InspectionVo"> |
| | | select create_time formTime, |
| | | supplier_name supplier, |
| | | material_coding mcode, |
| | | material_name name, |
| | | specifications_models specifications, |
| | | unit , |
| | | quantity num |
| | | from lims_laboratory.raw_material |
| | | where id=#{id} |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <groupId>com.yuanchu</groupId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | </parent> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>laboratory-server</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>laboratory-server</name> |
| | | <description>laboratory-server</description> |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>framework</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>user-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Classify; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateClassifyDto; |
| | | import com.yuanchu.limslaboratory.service.ClassifyService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Api(tags = "å®éªå®¤-->1ã设å¤å°è´¦-->1ãå类模å") |
| | | @RestController |
| | | @RequestMapping("/classify") |
| | | public class ClassifyController { |
| | | |
| | | @Autowired |
| | | private ClassifyService classifyService; |
| | | |
| | | @ApiOperation("æ·»å åç±»") |
| | | @PostMapping("/add") |
| | | public Result<?> addClassifyInformation(@RequestBody Classify classify) { |
| | | Integer isAddClassifySuccess = classifyService.addClassifyInformation(classify); |
| | | if (isAddClassifySuccess == 1) { |
| | | return Result.success("æ·»å åç±»ã"+ classify.getSonName() +"ãæåï¼"); |
| | | } else if (isAddClassifySuccess == 2) { |
| | | return Result.fail("æ±æé夿·»å åç±»åç§°ã"+ classify.getSonName() +"ãï¼æ·»å 失败ï¼"); |
| | | } |
| | | return Result.fail("æ·»å åç±»ã"+ classify.getSonName() +"ã失败ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("å类侧边æ å表ï¼å¦æsonName为空ï¼å带çfather_nameçIdè¿è¡ç¹å»æä½") |
| | | @GetMapping("/list") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(value = "åç±»åç§°", name = "classifyName", dataTypeClass = String.class) |
| | | }) |
| | | public Result<?> getListClassifyInformation(String classifyName) { |
| | | return Result.success(classifyService.getListClassifyInformation(classifyName)); |
| | | } |
| | | |
| | | @ApiOperation("å é¤åç±»") |
| | | @DeleteMapping("/delete") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(value = "åç±»Id", name = "classifyId", dataTypeClass = String.class) |
| | | }) |
| | | public Result<?> deleteClassifyInformation(String classifyId) { |
| | | Boolean isDeleteSuccess = classifyService.deleteClassifyInformation(classifyId); |
| | | if (isDeleteSuccess){ |
| | | return Result.success("å é¤åç±»æåï¼"); |
| | | } |
| | | return Result.fail("å é¤å类失败ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ´æ°åç±»") |
| | | @PutMapping("/update") |
| | | public Result<?> updateClassifyInformation(@RequestBody UpdateClassifyDto updateClassifyDto) throws Exception { |
| | | Classify classify = JackSonUtil.unmarshal(JackSonUtil.marshal(updateClassifyDto), Classify.class); |
| | | Boolean isUpdateClassifySuccess = classifyService.updateClassifyInformation(classify); |
| | | if (isUpdateClassifySuccess){ |
| | | return Result.success("æ´æ°åç±»æåï¼"); |
| | | } |
| | | return Result.fail("æ´æ°å类失败ï¼"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.EquipmentPoint; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateEquipmentPointDto; |
| | | import com.yuanchu.limslaboratory.service.EquipmentPointService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.constraints.NotNull; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Api(tags = "å®éªå®¤-->1ã设å¤å°è´¦-->3ã设å¤ç ç¹") |
| | | @RestController |
| | | @RequestMapping("/equipment-point") |
| | | public class EquipmentPointController { |
| | | |
| | | @Autowired |
| | | private EquipmentPointService equipmentPointService; |
| | | |
| | | @ApiOperation("æ·»å 设å¤ç ç¹") |
| | | @PostMapping("/add") |
| | | public Result<?> addEquipmentPointInformation(@RequestHeader("X-Token") String token, @RequestBody EquipmentPoint equipmentPoint) throws Exception { |
| | | Object object = RedisUtil.get(token); |
| | | Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class); |
| | | equipmentPoint.setUserId((Integer) unmarshal.get("id")); |
| | | Integer isInsertSuccess = equipmentPointService.addEquipmentPointInformation(equipmentPoint); |
| | | if (isInsertSuccess == 1){ |
| | | return Result.success("æ·»å ã"+ equipmentPoint.getEquipmentPointName() +"ãæåï¼"); |
| | | } |
| | | return Result.fail("æ·»å ã"+ equipmentPoint.getEquipmentPointName() +"ã失败ï¼è®¾å¤ç ç¹ç¼ç éå¤ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®ä»ªå¨Idæ¥è¯¢å¯¹åºè®¾å¤ç ç¹æ°æ®") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "InstrumentId", value = "ä»ªå¨æ¨¡åId", dataTypeClass = String.class, required = true) |
| | | }) |
| | | @GetMapping("/list") |
| | | public Result<?> getListEquipmentPointInformation(String InstrumentId) { |
| | | List<Map<String, Object>> list = equipmentPointService.getListEquipmentPointInformation(InstrumentId); |
| | | return Result.success(list); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®ç ç¹Idå 餿°æ®") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "equipmentPointId", value = "设å¤ç ç¹Id", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @DeleteMapping("/delete") |
| | | public Result<?> deleteEquipmentPointInformation(Integer equipmentPointId) { |
| | | Integer isDeleteSuccess = equipmentPointService.deleteEquipmentPointInformation(equipmentPointId); |
| | | if (isDeleteSuccess == 1){ |
| | | return Result.success("å 餿åï¼"); |
| | | } |
| | | return Result.fail("å é¤å¤±è´¥ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®ç ç¹Idæ´æ°æ°æ®") |
| | | @PutMapping("/update") |
| | | public Result<?> updateEquipmentPointInformation(@RequestHeader("X-Token") String token, @RequestBody UpdateEquipmentPointDto updateEquipmentPointDto) throws Exception { |
| | | Object object = RedisUtil.get(token); |
| | | Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class); |
| | | EquipmentPoint equipmentPoint = JackSonUtil.unmarshal(JackSonUtil.marshal(updateEquipmentPointDto), EquipmentPoint.class); |
| | | equipmentPoint.setUserId((Integer) unmarshal.get("id")); |
| | | Integer isUpdateSuccess = equipmentPointService.updateEquipmentPointInformation(equipmentPoint); |
| | | if (isUpdateSuccess == 1){ |
| | | return Result.success("æ´æ°æåï¼"); |
| | | } |
| | | return Result.fail("æ´æ°å¤±è´¥ï¼"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateInstrumentDto; |
| | | import com.yuanchu.limslaboratory.service.InstrumentService; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Api(tags = "å®éªå®¤-->1ã设å¤å°è´¦-->2ãä»ªå¨æ¨¡å") |
| | | @RestController |
| | | @RequestMapping("/instrument") |
| | | public class InstrumentController { |
| | | |
| | | @Autowired |
| | | private InstrumentService instrumentService; |
| | | |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @ApiOperation("æ·»å 仪å¨è®¾å¤") |
| | | @PostMapping("/add") |
| | | public Result<?> addInstrumentInformation(@RequestHeader("X-Token") String token, @RequestBody Instrument instrument) throws Exception { |
| | | Object object = RedisUtil.get(token); |
| | | Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class); |
| | | instrument.setCreateUserId((Integer) unmarshal.get("id")); |
| | | Integer isInsertSuccess = instrumentService.addInstrumentInformation(instrument); |
| | | if (isInsertSuccess == 1){ |
| | | return Result.success("æ·»å ã" + instrument.getEquipmentName() + "ãæå!"); |
| | | } |
| | | return Result.fail("仪å¨è®¾å¤ç¼å·éå¤ï¼æ·»å ã" + instrument.getEquipmentName() + "ã失败! "); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®åç±»Idï¼å页å表å±ç¤º") |
| | | @GetMapping("/list") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "classifyId", value = "åç±»Id", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "conditions", value = "æ¥è¯¢ç¶æ:é»è®¤å
¨é¨", dataTypeClass = Integer.class), |
| | | @ApiImplicitParam(name = "whetherWhether", value = "æ¯å¦å·²è¿æ", dataTypeClass = Boolean.class), |
| | | @ApiImplicitParam(name = "numberOrNameOrSpecifications", value = "ç¼å·/设å¤åç§°/è§æ ¼åå·", dataTypeClass = String.class) |
| | | }) |
| | | public Result<?> getListInstrumentInformation(Integer pageNo, |
| | | Integer pageSize, |
| | | Integer conditions, |
| | | Integer classifyId, |
| | | Boolean whetherWhether, |
| | | String numberOrNameOrSpecifications) { |
| | | IPage<Map<String, Object>> pageList = instrumentService.getListInstrumentInformation(conditions, whetherWhether, numberOrNameOrSpecifications, |
| | | classifyId, new Page<Objects>(pageNo, pageSize)); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("row", pageList.getRecords()); |
| | | map.put("total", pageList.getTotal()); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | @ApiOperation("å é¤ä»ªå¨æ°æ®") |
| | | @DeleteMapping("/delete") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "instrumentId", value = "仪å¨Id", dataTypeClass = String.class, required = true) |
| | | }) |
| | | public Result<?> deleteInstrumentInformation(String instrumentId) { |
| | | Boolean isDeleteSuccess = instrumentService.deleteInstrumentInformation(instrumentId); |
| | | if (isDeleteSuccess){ |
| | | return Result.success("å é¤ä»ªå¨æåï¼"); |
| | | } |
| | | return Result.fail("å é¤ä»ªå¨å¤±è´¥ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ·»å ä»ªå¨æ¶ä¿ç®¡äººä¸ææ¡æ°æ®") |
| | | @GetMapping("/get_user") |
| | | public Result<?> getMapUserInformation() { |
| | | return Result.success(userService.getUserNameAndId()); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®ä»ªå¨Idè·åä¿¡æ¯ç¨äºç¼è¾") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "InstrumentId", value = "åç±»Id", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/get_instrument") |
| | | public Result<?> getIdInstrumentInformation(Integer InstrumentId) { |
| | | Instrument idInstrumentInformation = instrumentService.getIdInstrumentInformation(InstrumentId); |
| | | return Result.success(idInstrumentInformation); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®ä»ªå¨Idæ´æ°æ°æ®") |
| | | @PutMapping("/update") |
| | | public Result<?> updateEquipmentPointInformation(@RequestBody UpdateInstrumentDto updateInstrumentDto) throws Exception { |
| | | Instrument instrument = JackSonUtil.unmarshal(JackSonUtil.marshal(updateInstrumentDto), Instrument.class); |
| | | Integer isUpdateSuccess = instrumentService.updateEquipmentPointInformation(instrument); |
| | | if (isUpdateSuccess == 1){ |
| | | return Result.success("æ´æ°ã" + instrument.getEquipmentName() + "ãæå!"); |
| | | } |
| | | return Result.fail("仪å¨è®¾å¤ç¼å·éå¤ï¼æ´æ°ã" + instrument.getEquipmentName() + "ã失败! "); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.yuanchu.limslaboratory.pojo.MeteringPlan; |
| | | import com.yuanchu.limslaboratory.service.MeteringPlanService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-27 |
| | | */ |
| | | @Api(tags = "å®éªå®¤-->2ã计é管ç") |
| | | @RestController |
| | | @RequestMapping("/metering-plan") |
| | | public class MeteringPlanController { |
| | | |
| | | @Autowired |
| | | private MeteringPlanService meteringPlanService; |
| | | |
| | | @ApiOperation("æ·»å 计é计å") |
| | | @PostMapping("/add") |
| | | public Result<?> addMeteringPlanInformation(@RequestBody MeteringPlan meteringPlan) { |
| | | Integer isInsertSuccess = meteringPlanService.addMeteringPlanInformation(meteringPlan); |
| | | if (isInsertSuccess == 1){ |
| | | return Result.success("æ·»å 计é计åæå!"); |
| | | } |
| | | return Result.fail("æ·»å 计é计å失败! "); |
| | | } |
| | | |
| | | @ApiOperation("计é计åå页æ¥è¯¢") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "measureCodeOrNameOrUnit", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/plan_page_list") |
| | | public Result<?> pagingQueryOfMeteringPlan(Integer pageNo, Integer pageSize, String measureCodeOrNameOrUnit) { |
| | | IPage<Map<String, Object>> page = meteringPlanService.pagingQueryOfMeteringPlan(measureCodeOrNameOrUnit, new Page<Objects>(pageNo, pageSize)); |
| | | return Result.success(page); |
| | | } |
| | | |
| | | @ApiOperation("计éå°è´¦å页æ¥è¯¢") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @GetMapping("/standing_page_list") |
| | | public Result<?> pagingQueryOfMeasurementLedger(Integer pageNo, Integer pageSize) { |
| | | IPage<Map<String, Object>> page = meteringPlanService.pagingQueryOfMeasurementLedger(new Page<Objects>(pageNo, pageSize)); |
| | | return Result.success(page); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.MetricalInformation; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateMetricalInformationDto; |
| | | import com.yuanchu.limslaboratory.service.MetricalInformationService; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Api(tags = "å®éªå®¤-->1ã设å¤å°è´¦-->4ã计éä¿¡æ¯") |
| | | @RestController |
| | | @RequestMapping("/metrical-information") |
| | | public class MetricalInformationController { |
| | | |
| | | @Autowired |
| | | private MetricalInformationService metricalInformationService; |
| | | |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @ApiOperation("æ·»å 计éä¿¡æ¯") |
| | | @PostMapping("/add") |
| | | public Result<?> addMetricalInformation(MetricalInformation metricalInformation, |
| | | @RequestPart(value = "file", required = false) MultipartFile file) { |
| | | Integer isInsertSuccess = metricalInformationService.addEquipmentPointInformation(metricalInformation, file); |
| | | if (isInsertSuccess == 1){ |
| | | return Result.success("æ·»å ã"+ metricalInformation.getMeasurementUnit() +"ãæåï¼"); |
| | | } |
| | | return Result.fail("æ·»å ã"+ metricalInformation.getMeasurementUnit() +"ã失败ï¼è®¾å¤ç ç¹ç¼ç éå¤ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ¥è¯¢ææè®¡éä¿¡æ¯æ°æ®") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "InstrumentId", value = "ä»ªå¨æ¨¡åId", dataTypeClass = String.class, required = true) |
| | | }) |
| | | @GetMapping("/list") |
| | | public Result<?> getListMetricalInformation(String InstrumentId) { |
| | | List<Map<String, Object>> list = metricalInformationService.getListEquipmentPointInformation(InstrumentId); |
| | | return Result.success(list); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®è®¡éä¿¡æ¯Idå 餿°æ®") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "metricalInformationId", value = "计éä¿¡æ¯Id", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @DeleteMapping("/delete") |
| | | public Result<?> deleteMetricalInformation(Integer metricalInformationId) { |
| | | Integer isDeleteSuccess = metricalInformationService.deleteMetricalInformation(metricalInformationId); |
| | | if (isDeleteSuccess == 1){ |
| | | return Result.success("å 餿åï¼"); |
| | | } |
| | | return Result.fail("å é¤å¤±è´¥ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®è®¡éä¿¡æ¯Idæ´æ°æ°æ®") |
| | | @PutMapping("/update") |
| | | public Result<?> updateMetricalInformation(UpdateMetricalInformationDto updateMetricalInformationDto, |
| | | @RequestPart(value = "file", required = false) MultipartFile file) throws Exception { |
| | | MetricalInformation metricalInformation = JackSonUtil.unmarshal(JackSonUtil.marshal(updateMetricalInformationDto), MetricalInformation.class); |
| | | Integer isUpdateSuccess = metricalInformationService.updateMetricalInformation(metricalInformation, file); |
| | | if (isUpdateSuccess == 1){ |
| | | return Result.success("æ´æ°æåï¼"); |
| | | } |
| | | return Result.fail("æ´æ°å¤±è´¥ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ·»å 计éä¿¡æ¯æ¶è´è´£äººä¸ææ¡æ°æ®") |
| | | @GetMapping("/get_user") |
| | | public Result<?> getMapUserInformation() { |
| | | return Result.success(userService.getUserNameAndId()); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Classify; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface ClassifyMapper extends BaseMapper<Classify> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.EquipmentPoint; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface EquipmentPointMapper extends BaseMapper<EquipmentPoint> { |
| | | |
| | | List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface InstrumentMapper extends BaseMapper<Instrument> { |
| | | |
| | | IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions,Boolean whetherWhether, String numberOrNameOrSpecifications, Integer classifyId, Page<Objects> page); |
| | | |
| | | //æ¥è¯¢ææè®¾å¤ä¿¡æ¯ |
| | | List<Map> selectInstrument(); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.MeteringPlan; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-27 |
| | | */ |
| | | public interface MeteringPlanMapper extends BaseMapper<MeteringPlan> { |
| | | |
| | | IPage<Map<String, Object>> pagingQueryOfMeasurementLedger(Page<Objects> page); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.MetricalInformation; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface MetricalInformationMapper extends BaseMapper<MetricalInformation> { |
| | | |
| | | List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Classify对象", description="") |
| | | public class Classify implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "å类主é®", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "åç±»ç¶åç§°", example = "温度æµé仪表") |
| | | private String fatherName; |
| | | |
| | | @NotBlank(message = "åç§°ä¸å
许为空ï¼") |
| | | @ApiModelProperty(value = "åç±»ååç§°", example = "使¸©è®¡",required = true) |
| | | private String sonName; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonIgnore; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="EquipmentPoint对象", description="") |
| | | public class EquipmentPoint implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "仪å¨Id å
³è", example = "1", required = true) |
| | | private Integer instrumentId; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·Id å
³è", hidden = true) |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "ç ç¹ç¼å·", example = "Area-1", required = true) |
| | | private String equipmentPoint; |
| | | |
| | | @ApiModelProperty(value = "ç ç¹åç§°", example = "导ä½å±è½ï¼å£åé¢ç§¯ï¼", required = true) |
| | | private String equipmentPointName; |
| | | |
| | | @ApiModelProperty(value = "åä½", example = "mm", required = true) |
| | | private String unit; |
| | | |
| | | @ApiModelProperty(value = "æè¿°", example = "ç¯äºï¼åä¸äº") |
| | | private String descriptiveness; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.fasterxml.jackson.annotation.JsonIgnore; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Instrument对象", description="") |
| | | public class Instrument implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "åç±»ID å
³è", example = "1", required = true) |
| | | private Integer classifyId; |
| | | |
| | | @ApiModelProperty(value = "ä¿ç®¡äººï¼ç¨æ·è¡¨å
³èId", example = "9", required = true) |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "ä¿ç®¡äººï¼ç¨æ·è¡¨å
³èId", hidden = true) |
| | | @TableField(value = "") |
| | | private Integer createUserId; |
| | | |
| | | @ApiModelProperty(value = "仪å¨è®¾å¤ç¼å·", example = "JSTC-W1-00001", required = true) |
| | | private String equipmentCode; |
| | | |
| | | @ApiModelProperty(value = "仪å¨è®¾å¤åç§°", example = "æ°åçµæ¡¥", required = true) |
| | | private String equipmentName; |
| | | |
| | | @ApiModelProperty(value = "é»è®¤1ï¼1ï¼è¿è¡ã2ï¼æ
éã3ï¼æ¥ä¿®ã4ï¼æ£ä¿®ã5ï¼å¾
æº", example = "1", required = true) |
| | | private Integer conditions; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼åå·", example = "WCDMS-1", required = true) |
| | | private String specificationsModels; |
| | | |
| | | @ApiModelProperty(value = "æµéèå´", example = "12毫米") |
| | | private String measuringRange; |
| | | |
| | | @ApiModelProperty(value = "误差", example = "0.000001微米") |
| | | private String errorRate; |
| | | |
| | | @ApiModelProperty(value = "ç产åå®¶", example = "æ±èéµ·é") |
| | | private String manufacturer; |
| | | |
| | | @ApiModelProperty(value = "å°è´§æ¥æ", example = "2001-07-06", dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date arrivalDate; |
| | | |
| | | @ApiModelProperty(value = "éªæ¶æ¥æ", example = "2060-07-06", dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date acceptanceDate; |
| | | |
| | | @ApiModelProperty(value = "åæ¾å°", example = "å°çäºæ´²ä¸å½æ±èåé") |
| | | private String storagePlace; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦æ¯ææ°éï¼1ï¼æ¯æï¼0ï¼ä¸æ¯æ", example = "1") |
| | | private Integer whetherDataAcquisition; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦éè¦ä»ªå¨è®¾å¤è®¡éï¼å¦æéè¦è®¡é卿å¿
å¡«ï¼å¦æä¸éè¦è®¡é卿ä¸å¿
å¡«.1ï¼éè¦ï¼0ï¼ä¸éè¦", example = "0") |
| | | private Integer equipmentMeasurement; |
| | | |
| | | @ApiModelProperty(value = "è®¡éæªæ¢æææï¼ä¸equipmentMeasurementç¸å
³è", example = "12") |
| | | private Integer termValidity; |
| | | |
| | | @ApiModelProperty(value = "æè¿°", example = "ç¯çææäºï¼ï¼ï¼") |
| | | private String descriptiveness; |
| | | |
| | | @JsonIgnore |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @JsonIgnore |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | private Date updateTime; |
| | | |
| | | @JsonIgnore |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-27 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="MeteringPlan对象", description="") |
| | | public class MeteringPlan implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "Id主é®", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "计éè´è´£äºº å
³èç¨æ·è¡¨", example = "10", required = true) |
| | | private Integer measurePerson; |
| | | |
| | | @ApiModelProperty(value = "å建人 å
³èç¨æ·è¡¨", example = "21", required = true) |
| | | @TableField("create_Person") |
| | | private Integer createPerson; |
| | | |
| | | @ApiModelProperty(value = "计ååå·", hidden = true) |
| | | private String plannedOrderNumber; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME) |
| | | @ApiModelProperty(value = "å¼å§æ¥æ", example = "2023-07-06", required = true, dataType = "date") |
| | | private Date beginTime; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME) |
| | | @ApiModelProperty(value = "ç»ææ¥æ", example = "2023-07-06", required = true, dataType = "date") |
| | | private Date endTime; |
| | | |
| | | @ApiModelProperty(value = "计åç¶æï¼ä¸ç§ï¼1ï¼å·²å®æï¼2ï¼å¾
æäº¤ï¼3ï¼æªå®æ", example = "1", required = true) |
| | | private Integer planningStatus; |
| | | |
| | | @ApiModelProperty(value = "计éåä½", example = "GB") |
| | | private String unit; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="MetricalInformation对象", description="") |
| | | public class MetricalInformation implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·å
³èId", example = "7", required = true) |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "仪å¨å
³èId", example = "1", required = true) |
| | | private Integer instrumentId; |
| | | |
| | | @ApiModelProperty(value = "计éåä½", example = "GB", required = true) |
| | | private String measurementUnit; |
| | | |
| | | @ApiModelProperty(value = "å¼å§æ¥æ", example = "2023-07-06", required = true, dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private Date beginDate; |
| | | |
| | | @ApiModelProperty(value = "ç»ææ¥æ", example = "2026-07-06", required = true, dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private Date endDate; |
| | | |
| | | @ApiModelProperty(value = "ä¸ç¡®å®åº¦", example = "0.3%", required = true) |
| | | private String uncertainty; |
| | | |
| | | @ApiModelProperty(value = "ç»æ: 1ï¼åæ ¼ï¼2ï¼ç«æ£åå¯ç¨ï¼3ï¼ä¸åæ ¼", example = "1", required = true) |
| | | private Integer result; |
| | | |
| | | @ApiModelProperty(value = "æ§è½ææ ", example = "10086") |
| | | private String performanceIndex; |
| | | |
| | | @ApiModelProperty(value = "夿³¨", example = "10086.com") |
| | | private String remarks; |
| | | |
| | | @ApiModelProperty(value = "æä»¶è·¯å¾", hidden = true) |
| | | private String filePath; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="UpdateClassifyDto对象", description="") |
| | | public class UpdateClassifyDto { |
| | | @ApiModelProperty(value = "å类主é®", example = "1", required = true) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "åç±»ç¶åç§°", example = "温度æµé仪表") |
| | | private String fatherName; |
| | | |
| | | @ApiModelProperty(value = "åç±»ååç§°", example = "使¸©è®¡",required = true) |
| | | private String sonName; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="UpdateEquipmentPointDto对象", description="") |
| | | public class UpdateEquipmentPointDto { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®", example = "1", required = true) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "仪å¨Id å
³è", example = "1", required = true) |
| | | private Integer instrumentId; |
| | | |
| | | @ApiModelProperty(value = "ç ç¹ç¼å·", example = "Area-1", required = true) |
| | | private String equipmentPoint; |
| | | |
| | | @ApiModelProperty(value = "ç ç¹åç§°", example = "导ä½å±è½ï¼å£åé¢ç§¯ï¼", required = true) |
| | | private String equipmentPointName; |
| | | |
| | | @ApiModelProperty(value = "åä½", example = "mm", required = true) |
| | | private String unit; |
| | | |
| | | @ApiModelProperty(value = "æè¿°", example = "ç¯äºï¼åä¸äº") |
| | | private String descriptiveness; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="UpdateInstrumentDto对象", description="") |
| | | public class UpdateInstrumentDto { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "计éä¿¡æ¯ä¸»é®",example = "1", required = true) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "åç±»ID å
³è", example = "1", required = true) |
| | | private Integer classifyId; |
| | | |
| | | @ApiModelProperty(value = "ä¿ç®¡äººï¼ç¨æ·è¡¨å
³èId", example = "9", required = true) |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "仪å¨è®¾å¤ç¼å·", example = "JSTC-W1-00001", required = true) |
| | | private String equipmentCode; |
| | | |
| | | @ApiModelProperty(value = "仪å¨è®¾å¤åç§°", example = "æ°åçµæ¡¥", required = true) |
| | | private String equipmentName; |
| | | |
| | | @ApiModelProperty(value = "é»è®¤1ï¼1ï¼è¿è¡ã2ï¼æ
éã3ï¼æ¥ä¿®ã4ï¼æ£ä¿®ã5ï¼å¾
æº", example = "1", required = true) |
| | | private Integer conditions; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼åå·", example = "WCDMS-1", required = true) |
| | | private String specificationsModels; |
| | | |
| | | @ApiModelProperty(value = "æµéèå´", example = "12毫米") |
| | | private String measuringRange; |
| | | |
| | | @ApiModelProperty(value = "误差", example = "0.000001微米") |
| | | private String errorRate; |
| | | |
| | | @ApiModelProperty(value = "ç产åå®¶", example = "æ±èéµ·é") |
| | | private String manufacturer; |
| | | |
| | | @ApiModelProperty(value = "å°è´§æ¥æ", example = "2001-07-06", dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date arrivalDate; |
| | | |
| | | @ApiModelProperty(value = "éªæ¶æ¥æ", example = "2060-07-06", dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date acceptanceDate; |
| | | |
| | | @ApiModelProperty(value = "åæ¾å°", example = "å°çäºæ´²ä¸å½æ±èåé") |
| | | private String storagePlace; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦æ¯ææ°éï¼1ï¼æ¯æï¼0ï¼ä¸æ¯æ", example = "1") |
| | | private Integer whetherDataAcquisition; |
| | | |
| | | @ApiModelProperty(value = "æ¯å¦éè¦ä»ªå¨è®¾å¤è®¡éï¼å¦æéè¦è®¡é卿å¿
å¡«ï¼å¦æä¸éè¦è®¡é卿ä¸å¿
å¡«.1ï¼éè¦ï¼0ï¼ä¸éè¦", example = "0") |
| | | private Integer equipmentMeasurement; |
| | | |
| | | @ApiModelProperty(value = "è®¡éæªæ¢æææï¼ä¸equipmentMeasurementç¸å
³è", example = "12") |
| | | private Integer termValidity; |
| | | |
| | | @ApiModelProperty(value = "æè¿°", example = "ç¯çææäºï¼ï¼ï¼") |
| | | private String descriptiveness; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="UpdateMetricalInformationDto对象", description="") |
| | | public class UpdateMetricalInformationDto { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "主é®") |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·å
³èId", example = "7", required = true) |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "计éåä½", example = "GB", required = true) |
| | | private String measurementUnit; |
| | | |
| | | @ApiModelProperty(value = "å¼å§æ¥æ", example = "2023-07-06", required = true, dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private Date beginDate; |
| | | |
| | | @ApiModelProperty(value = "ç»ææ¥æ", example = "2026-07-06", required = true, dataType = "date") |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE_TIME) |
| | | private Date endDate; |
| | | |
| | | @ApiModelProperty(value = "ä¸ç¡®å®åº¦", example = "0.3%", required = true) |
| | | private String uncertainty; |
| | | |
| | | @ApiModelProperty(value = "ç»æ: 1ï¼åæ ¼ï¼2ï¼ç«æ£åå¯ç¨ï¼3ï¼ä¸åæ ¼", example = "1", required = true) |
| | | private Integer result; |
| | | |
| | | @ApiModelProperty(value = "æ§è½ææ ", example = "10086") |
| | | private String performanceIndex; |
| | | |
| | | @ApiModelProperty(value = "夿³¨", example = "10086.com") |
| | | private String remarks; |
| | | |
| | | @ApiModelProperty(value = "æä»¶è·¯å¾", hidden = true) |
| | | private String filePath; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Classify; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface ClassifyService extends IService<Classify> { |
| | | |
| | | Integer addClassifyInformation(Classify classify); |
| | | |
| | | List<Map<String, Object>> getListClassifyInformation(String classifyName); |
| | | |
| | | Boolean deleteClassifyInformation(String classifyId); |
| | | |
| | | Boolean updateClassifyInformation(Classify classify); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.EquipmentPoint; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface EquipmentPointService extends IService<EquipmentPoint> { |
| | | |
| | | Integer addEquipmentPointInformation(EquipmentPoint equipmentPoint); |
| | | |
| | | List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId); |
| | | |
| | | Integer deleteEquipmentPointInformation(Integer equipmentPointId); |
| | | |
| | | Integer updateEquipmentPointInformation(EquipmentPoint equipmentPoint); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface InstrumentService extends IService<Instrument> { |
| | | |
| | | Integer addInstrumentInformation(Instrument instrument); |
| | | |
| | | Boolean deleteInstrumentInformation(String instrumentId); |
| | | |
| | | IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions, Boolean whetherWhether, String numberOrNameOrSpecifications, |
| | | Integer classifyId, Page<Objects> page); |
| | | |
| | | /** |
| | | * æ´æ°ä»ªå¨æ°æ®çæ¶åéè¦è·åæææ°æ® |
| | | * @param instrumentId |
| | | * @return |
| | | */ |
| | | Instrument getIdInstrumentInformation(Integer instrumentId); |
| | | |
| | | Integer updateEquipmentPointInformation(Instrument instrument); |
| | | |
| | | /** |
| | | * æ¥è¯¢ææè®¾å¤ä¿¡æ¯ |
| | | * @return |
| | | */ |
| | | List<Map> selectInstrument(); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.MeteringPlan; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-27 |
| | | */ |
| | | public interface MeteringPlanService extends IService<MeteringPlan> { |
| | | |
| | | Integer addMeteringPlanInformation(MeteringPlan meteringPlan); |
| | | |
| | | IPage<Map<String, Object>> pagingQueryOfMeteringPlan(String measureCodeOrNameOrUnit, Page<Objects> page); |
| | | |
| | | IPage<Map<String, Object>> pagingQueryOfMeasurementLedger(Page<Objects> page); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.MetricalInformation; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | public interface MetricalInformationService extends IService<MetricalInformation> { |
| | | |
| | | Integer addEquipmentPointInformation(MetricalInformation metricalInformation, MultipartFile file); |
| | | |
| | | List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId); |
| | | |
| | | Integer deleteMetricalInformation(Integer metricalInformationId); |
| | | |
| | | Integer updateMetricalInformation(MetricalInformation metricalInformation, MultipartFile file); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.yuanchu.limslaboratory.pojo.Classify; |
| | | import com.yuanchu.limslaboratory.mapper.ClassifyMapper; |
| | | import com.yuanchu.limslaboratory.service.ClassifyService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Service |
| | | public class ClassifyServiceImpl extends ServiceImpl<ClassifyMapper, Classify> implements ClassifyService { |
| | | |
| | | @Resource |
| | | private ClassifyMapper classifyMapper; |
| | | |
| | | @Override |
| | | public Integer addClassifyInformation(Classify classify) { |
| | | LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Classify::getFatherName, classify.getFatherName()); |
| | | wrapper.eq(Classify::getSonName, classify.getSonName()); |
| | | wrapper.eq(Classify::getState, 1); |
| | | Classify classify1 = classifyMapper.selectOne(wrapper); |
| | | if (ObjectUtils.isEmpty(classify1)){ |
| | | return classifyMapper.insert(classify); |
| | | } else { |
| | | return 2; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getListClassifyInformation(String classifyName) { |
| | | LambdaQueryWrapper<Classify> wrapper = new LambdaQueryWrapper<>(); |
| | | if (!ObjectUtils.isEmpty(classifyName)){ |
| | | wrapper.like(Classify::getFatherName, classifyName); |
| | | } |
| | | wrapper.groupBy(Classify::getFatherName); |
| | | wrapper.select(Classify::getId, Classify::getFatherName); |
| | | List<Map<String, Object>> maps = classifyMapper.selectMaps(wrapper); |
| | | for (Map<String, Object> map : maps){ |
| | | LambdaQueryWrapper<Classify> wrapper1 = new LambdaQueryWrapper<>(); |
| | | wrapper1.eq(Classify::getFatherName, map.get("father_name")); |
| | | wrapper1.isNotNull(Classify::getSonName); |
| | | wrapper1.select(Classify::getId, Classify::getSonName); |
| | | List<Map<String, Object>> maps1 = classifyMapper.selectMaps(wrapper1); |
| | | if (!ObjectUtils.isEmpty(maps1)){ |
| | | map.put("children", maps1); |
| | | map.remove("id"); |
| | | } else { |
| | | map.put("children", null); |
| | | } |
| | | } |
| | | return maps; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean deleteClassifyInformation(String classifyId) { |
| | | LambdaUpdateWrapper<Classify> wrapper = new LambdaUpdateWrapper<>(); |
| | | wrapper.eq(Classify::getId, classifyId); |
| | | wrapper.set(Classify::getState, 0); |
| | | int isDeleteSuccess = classifyMapper.update(new Classify(), wrapper); |
| | | return isDeleteSuccess > 0; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean updateClassifyInformation(Classify classify) { |
| | | LambdaUpdateWrapper<Classify> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Classify::getId, classify.getId()); |
| | | int isUpdateClassifySuccess = classifyMapper.update(classify, updateWrapper); |
| | | return isUpdateClassifySuccess > 0; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.EquipmentPoint; |
| | | import com.yuanchu.limslaboratory.mapper.EquipmentPointMapper; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.yuanchu.limslaboratory.service.EquipmentPointService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Service |
| | | public class EquipmentPointServiceImpl extends ServiceImpl<EquipmentPointMapper, EquipmentPoint> implements EquipmentPointService { |
| | | |
| | | @Resource |
| | | private EquipmentPointMapper equipmentPointMapper; |
| | | |
| | | @Override |
| | | public Integer addEquipmentPointInformation(EquipmentPoint equipmentPoint) { |
| | | LambdaQueryWrapper<EquipmentPoint> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(EquipmentPoint::getEquipmentPoint, equipmentPoint.getEquipmentPoint()); |
| | | wrapper.eq(EquipmentPoint::getState, 1); |
| | | wrapper.eq(EquipmentPoint::getInstrumentId, equipmentPoint.getInstrumentId()); |
| | | wrapper.select(EquipmentPoint::getEquipmentPoint); |
| | | EquipmentPoint equipmentPoint1 = equipmentPointMapper.selectOne(wrapper); |
| | | if (ObjectUtils.isEmpty(equipmentPoint1)){ |
| | | return equipmentPointMapper.insert(equipmentPoint); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId) { |
| | | return equipmentPointMapper.getListEquipmentPointInformation(InstrumentId); |
| | | } |
| | | |
| | | @Override |
| | | public Integer deleteEquipmentPointInformation(Integer equipmentPointId) { |
| | | LambdaUpdateWrapper<EquipmentPoint> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(EquipmentPoint::getId, equipmentPointId); |
| | | updateWrapper.set(EquipmentPoint::getState, 0); |
| | | return equipmentPointMapper.update(new EquipmentPoint(), updateWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public Integer updateEquipmentPointInformation(EquipmentPoint equipmentPoint) { |
| | | LambdaQueryWrapper<EquipmentPoint> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(EquipmentPoint::getEquipmentPoint, equipmentPoint.getEquipmentPoint()); |
| | | wrapper.eq(EquipmentPoint::getState, 1); |
| | | wrapper.select(EquipmentPoint::getId, EquipmentPoint::getId); |
| | | EquipmentPoint equipmentPoint1 = equipmentPointMapper.selectOne(wrapper); |
| | | if (ObjectUtils.isEmpty(equipmentPoint1)){ |
| | | return equipmentPointMapper.updateById(equipmentPoint); |
| | | } else if (equipmentPoint.getId().equals(equipmentPoint1.getId())){ |
| | | return equipmentPointMapper.updateById(equipmentPoint); |
| | | } |
| | | return 0; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.yuanchu.limslaboratory.mapper.InstrumentMapper; |
| | | import com.yuanchu.limslaboratory.service.InstrumentService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Service |
| | | public class InstrumentServiceImpl extends ServiceImpl<InstrumentMapper, Instrument> implements InstrumentService { |
| | | |
| | | @Resource |
| | | private InstrumentMapper instrumentMapper; |
| | | |
| | | @Override |
| | | public Integer addInstrumentInformation(Instrument instrument) { |
| | | LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Instrument::getEquipmentCode, instrument.getEquipmentCode()); |
| | | wrapper.eq(Instrument::getState, 1); |
| | | wrapper.select(Instrument::getEquipmentCode); |
| | | Instrument instrument1 = instrumentMapper.selectOne(wrapper); |
| | | if (ObjectUtils.isEmpty(instrument1)){ |
| | | return instrumentMapper.insert(instrument); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean deleteInstrumentInformation(String instrumentId) { |
| | | LambdaUpdateWrapper<Instrument> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Instrument::getId, instrumentId); |
| | | updateWrapper.set(Instrument::getState, 0); |
| | | int isUpdateSuccess = instrumentMapper.update(new Instrument(), updateWrapper); |
| | | return isUpdateSuccess > 0; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<Map<String, Object>> getListInstrumentInformation(Integer conditions, Boolean whetherWhether, String numberOrNameOrSpecifications, |
| | | Integer classifyId, Page<Objects> page) { |
| | | return instrumentMapper.getListInstrumentInformation(conditions, whetherWhether, numberOrNameOrSpecifications, classifyId, page); |
| | | } |
| | | |
| | | @Override |
| | | public Instrument getIdInstrumentInformation(Integer instrumentId) { |
| | | LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Instrument::getId, instrumentId); |
| | | return instrumentMapper.selectOne(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public Integer updateEquipmentPointInformation(Instrument instrument) { |
| | | LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Instrument::getEquipmentCode, instrument.getEquipmentCode()); |
| | | wrapper.eq(Instrument::getState, 1); |
| | | wrapper.select(Instrument::getEquipmentCode, Instrument::getId); |
| | | Instrument instrument1 = instrumentMapper.selectOne(wrapper); |
| | | if (ObjectUtils.isEmpty(instrument1)){ |
| | | return instrumentMapper.updateById(instrument); |
| | | } else if (instrument.getId().equals(instrument1.getId())){ |
| | | return instrumentMapper.updateById(instrument); |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | //æ¥è¯¢ææè®¾å¤ä¿¡æ¯ |
| | | @Override |
| | | public List<Map> selectInstrument() { |
| | | return instrumentMapper.selectInstrument(); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Instrument; |
| | | import com.yuanchu.limslaboratory.pojo.MeteringPlan; |
| | | import com.yuanchu.limslaboratory.mapper.MeteringPlanMapper; |
| | | import com.yuanchu.limslaboratory.service.MeteringPlanService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-27 |
| | | */ |
| | | @Service |
| | | public class MeteringPlanServiceImpl extends ServiceImpl<MeteringPlanMapper, MeteringPlan> implements MeteringPlanService { |
| | | |
| | | @Resource |
| | | private MeteringPlanMapper meteringPlanMapper; |
| | | |
| | | @Override |
| | | public Integer addMeteringPlanInformation(MeteringPlan meteringPlan) { |
| | | String timeSixNumber = MyUtil.getTimeSixNumberCode("P"); |
| | | meteringPlan.setPlannedOrderNumber(timeSixNumber); |
| | | return meteringPlanMapper.insert(meteringPlan); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<Map<String, Object>> pagingQueryOfMeteringPlan(String measureCodeOrNameOrUnit, Page<Objects> page) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<Map<String, Object>> pagingQueryOfMeasurementLedger(Page<Objects> page) { |
| | | return meteringPlanMapper.pagingQueryOfMeasurementLedger(page); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.yuanchu.limslaboratory.pojo.MetricalInformation; |
| | | import com.yuanchu.limslaboratory.mapper.MetricalInformationMapper; |
| | | import com.yuanchu.limslaboratory.service.MetricalInformationService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.utils.FileSaveUtil; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-20 |
| | | */ |
| | | @Service |
| | | public class MetricalInformationServiceImpl extends ServiceImpl<MetricalInformationMapper, MetricalInformation> implements MetricalInformationService { |
| | | |
| | | @Resource |
| | | private MetricalInformationMapper metricalInformationMapper; |
| | | |
| | | @Override |
| | | public Integer addEquipmentPointInformation(MetricalInformation metricalInformation, MultipartFile file) { |
| | | if (!ObjectUtils.isEmpty(file)){ |
| | | String fileName = FileSaveUtil.StoreFile(file); |
| | | metricalInformation.setFilePath(fileName); |
| | | } |
| | | return metricalInformationMapper.insert(metricalInformation); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId) { |
| | | return metricalInformationMapper.getListEquipmentPointInformation(InstrumentId); |
| | | } |
| | | |
| | | @Override |
| | | public Integer deleteMetricalInformation(Integer metricalInformationId) { |
| | | LambdaUpdateWrapper<MetricalInformation> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(MetricalInformation::getId, metricalInformationId); |
| | | updateWrapper.set(MetricalInformation::getState, 0); |
| | | return metricalInformationMapper.update(new MetricalInformation(), updateWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public Integer updateMetricalInformation(MetricalInformation metricalInformation, MultipartFile file) { |
| | | if (!ObjectUtils.isEmpty(file)){ |
| | | String fileName = FileSaveUtil.StoreFile(file); |
| | | metricalInformation.setFilePath(fileName); |
| | | LambdaQueryWrapper<MetricalInformation> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(MetricalInformation::getId, metricalInformation.getId()); |
| | | wrapper.select(MetricalInformation::getFilePath); |
| | | MetricalInformation metricalInformation1 = metricalInformationMapper.selectOne(wrapper); |
| | | if (!ObjectUtils.isEmpty(metricalInformation1.getFilePath())){ |
| | | FileSaveUtil.DeleteFile(metricalInformation1.getFilePath()); |
| | | } |
| | | } |
| | | return metricalInformationMapper.updateById(metricalInformation); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.ClassifyMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.EquipmentPointMapper"> |
| | | |
| | | <select id="getListEquipmentPointInformation" resultType="map"> |
| | | SELECT e.`id`, e.`equipment_point` equipmentPoint, e.`equipment_point_name` equipmentPointName, e.`unit`,u.`name`, DATE_FORMAT(e.`update_time`, '%Y-%m-%d') updateTime, e.`descriptiveness` |
| | | FROM equipment_point e, `user` u |
| | | WHERE e.`user_id` = u.`id` |
| | | AND e.`instrument_id` = #{InstrumentId} |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.InstrumentMapper"> |
| | | |
| | | <select id="getListInstrumentInformation" resultType="map"> |
| | | SELECT i.`id`, i.`equipment_code`, i.`equipment_name`, i.`specifications_models`, u.`name`, |
| | | DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') termValidity, i.`conditions`, i.`storage_place` |
| | | FROM instrument i, `user` u |
| | | WHERE i.`state` = 1 |
| | | AND i.`classify_id` = #{classifyId} |
| | | <if test="conditions != null"> |
| | | AND i.`conditions` = #{conditions} |
| | | </if> |
| | | <if test="numberOrNameOrSpecifications != null and numberOrNameOrSpecifications != ''"> |
| | | AND CONCAT(i.`equipment_code`, i.`equipment_name`, i.`specifications_models`) LIKE CONCAT('%',#{numberOrNameOrSpecifications},'%') |
| | | </if> |
| | | <if test="whetherWhether == true"> |
| | | AND DATE_FORMAT(DATE_ADD(i.`create_time`, INTERVAL i.`term_validity` MONTH), '%Y-%m-%d') <![CDATA[<]]> NOW() |
| | | </if> |
| | | AND i.`user_id` = u.`id` |
| | | </select> |
| | | <select id="selectInstrument" resultType="Map"> |
| | | select id,equipment_name from lims_laboratory.instrument |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.MeteringPlanMapper"> |
| | | |
| | | <select id="pagingQueryOfMeasurementLedger" resultType="map"> |
| | | SELECT i.`equipment_code`, i.`equipment_name`, i.`specifications_models`, m.`create_time`, m.`uncertainty`, |
| | | m.`end_date`, i.`term_validity`, i.`storage_place`, i.`conditions` |
| | | FROM instrument i, metrical_information m |
| | | WHERE i.`id` = m.`instrument_id` |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.MetricalInformationMapper"> |
| | | |
| | | <select id="getListEquipmentPointInformation" resultType="map"> |
| | | SELECT m.`id`, u.`name`, m.`measurement_unit`, DATE_FORMAT(m.`begin_date`, '%Y-%m-%d') beginDate, DATE_FORMAT(m.`end_date`, '%Y-%m-%d') endDate, |
| | | m.`uncertainty`, m.`result`, m.`performance_index`, m.`remarks`, m.`file_path`, DATE_FORMAT(m.`create_time`, '%Y-%m-%d') createDate |
| | | FROM metrical_information m, `user` u |
| | | WHERE m.`user_id` = u.`id` |
| | | AND m.`state` = 1 |
| | | AND m.`instrument_id` = #{InstrumentId} |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-parent</artifactId> |
| | | <version>2.7.3</version> |
| | | <relativePath/> <!-- lookup parent from repository --> |
| | | </parent> |
| | | <groupId>com.yuanchu</groupId> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>lims-laboratory</name> |
| | | <description>lims-laboratory</description> |
| | | <packaging>pom</packaging> |
| | | |
| | | <modules> |
| | | <module>user-server</module> |
| | | <module>sys</module> |
| | | <module>framework</module> |
| | | <module>standard-server</module> |
| | | <module>inspection-server</module> |
| | | <module>laboratory-server</module> |
| | | </modules> |
| | | |
| | | <properties> |
| | | <java.version>1.8</java.version> |
| | | <log4j.version>1.2.17</log4j.version> |
| | | <mysql.version>8.0.28</mysql.version> |
| | | <jwt.version>4.4.0</jwt.version> |
| | | <swagger.version>3.0.0</swagger.version> |
| | | <knife4j-spring-ui.version>3.0.3</knife4j-spring-ui.version> |
| | | <druid.version>1.2.18</druid.version> |
| | | <mybatis-plus.version>3.5.3.1</mybatis-plus.version> |
| | | <openfeign.version>3.1.3</openfeign.version> |
| | | <feign-okhttp.version>11.0</feign-okhttp.version> |
| | | <shiro.version>1.5.3</shiro.version> |
| | | |
| | | <!-- æå
å导åºçè·¯å¾ --> |
| | | <package.path>${project.build.directory}/LIMS</package.path> |
| | | </properties> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-web</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-test</artifactId> |
| | | </dependency> |
| | | |
| | | <!--çé¨ç½²a--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-devtools</artifactId> |
| | | <scope>runtime</scope> |
| | | <optional>true</optional> |
| | | </dependency> |
| | | |
| | | <!--lombok--> |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | |
| | | <!--Swagger3--> |
| | | <dependency> |
| | | <groupId>io.springfox</groupId> |
| | | <artifactId>springfox-boot-starter</artifactId> |
| | | <version>${swagger.version}</version> |
| | | </dependency> |
| | | |
| | | <!--mybatis-plus--> |
| | | <dependency> |
| | | <groupId>com.baomidou</groupId> |
| | | <artifactId>mybatis-plus-boot-starter</artifactId> |
| | | <version>${mybatis-plus.version}</version> |
| | | </dependency> |
| | | |
| | | <!--åç«¯æ³¨éæ£éªå·¥å
·--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-validation</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | <dependencyManagement> |
| | | <dependencies> |
| | | <!--log4j--> |
| | | <dependency> |
| | | <groupId>log4j</groupId> |
| | | <artifactId>log4j</artifactId> |
| | | <version>${log4j.version}</version> |
| | | </dependency> |
| | | |
| | | <!--mysql--> |
| | | <dependency> |
| | | <groupId>mysql</groupId> |
| | | <artifactId>mysql-connector-java</artifactId> |
| | | <version>${mysql.version}</version> |
| | | </dependency> |
| | | |
| | | <!--æ°æ®åºè¿æ¥æ± --> |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>druid</artifactId> |
| | | <version>${druid.version}</version> |
| | | </dependency> |
| | | |
| | | <!--Swagger3-Uiç¾å--> |
| | | <dependency> |
| | | <groupId>com.github.xiaoymin</groupId> |
| | | <artifactId>knife4j-spring-ui</artifactId> |
| | | <version>${knife4j-spring-ui.version}</version> |
| | | </dependency> |
| | | |
| | | <!--mybatis-plus代ç çæå¨--> |
| | | <dependency> |
| | | <groupId>com.baomidou</groupId> |
| | | <artifactId>mybatis-plus-generator</artifactId> |
| | | <version>${mybatis-plus.version}</version> |
| | | </dependency> |
| | | |
| | | <!--feign--> |
| | | <dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-openfeign</artifactId> |
| | | <version>${openfeign.version}</version> |
| | | </dependency> |
| | | |
| | | <!--okhttp--> |
| | | <dependency> |
| | | <groupId>io.github.openfeign</groupId> |
| | | <artifactId>feign-okhttp</artifactId> |
| | | <version>${feign-okhttp.version}</version> |
| | | </dependency> |
| | | |
| | | <!--å®å
¨æ¡æ¶shiro--> |
| | | <dependency> |
| | | <groupId>org.apache.shiro</groupId> |
| | | <artifactId>shiro-spring-boot-starter</artifactId> |
| | | <version>${shiro.version}</version> |
| | | </dependency> |
| | | |
| | | <!--jwt--> |
| | | <dependency> |
| | | <groupId>com.auth0</groupId> |
| | | <artifactId>java-jwt</artifactId> |
| | | <version>${jwt.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | </dependencyManagement> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <!-- ä¸çº¿é¨ç½² JARå¯å¨å离ä¾èµlibåé
ç½® --> |
| | | <!-- æå
jar --> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-jar-plugin</artifactId> |
| | | <configuration> |
| | | <!-- 䏿å
èµæºæä»¶ --> |
| | | <excludes> |
| | | <exclude>*.**</exclude> |
| | | </excludes> |
| | | <archive> |
| | | <manifest> |
| | | <addClasspath>true</addClasspath> |
| | | <!-- MANIFEST.MF ä¸ Class-Path å å
¥åç¼ --> |
| | | <classpathPrefix>lib/</classpathPrefix> |
| | | <!-- jarå
ä¸å
å«å¯ä¸çæ¬æ è¯ --> |
| | | <useUniqueVersions>false</useUniqueVersions> |
| | | <!-- æå®å
¥å£ç±» --> |
| | | <mainClass>com.yuanchu.limslaboratory.SysApplication</mainClass> |
| | | </manifest> |
| | | <!-- æå®é
ç½®æä»¶ç®å½ï¼è¿æ ·jarè¿è¡æ¶ä¼å»æ¾å°åç®å½ä¸çconfæä»¶å¤¹ä¸æ¥æ¾ --> |
| | | <manifestEntries> |
| | | <Class-Path>conf/</Class-Path> |
| | | </manifestEntries> |
| | | </archive> |
| | | <outputDirectory>${package.path}</outputDirectory> |
| | | </configuration> |
| | | </plugin> |
| | | <!-- æ·è´ä¾èµ copy-dependencies --> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-dependency-plugin</artifactId> |
| | | <executions> |
| | | <execution> |
| | | <id>copy-dependencies</id> |
| | | <phase>package</phase> |
| | | <goals> |
| | | <goal>copy-dependencies</goal> |
| | | </goals> |
| | | <configuration> |
| | | <outputDirectory>${package.path}/lib/ </outputDirectory> |
| | | </configuration> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | <!-- æ·è´èµæºæä»¶ copy-resources --> |
| | | <plugin> |
| | | <artifactId>maven-resources-plugin</artifactId> |
| | | <executions> |
| | | <execution> |
| | | <id>copy-resources</id> |
| | | <phase>package</phase> |
| | | <goals> |
| | | <goal>copy-resources</goal> |
| | | </goals> |
| | | <configuration> |
| | | <resources> |
| | | <resource> |
| | | <directory>src/main/resources</directory> |
| | | <!-- æå®åä¸æå»ºçresource --> |
| | | <includes> |
| | | <include>*.**</include> |
| | | <!--æé¤application-dev.ymlæä»¶--> |
| | | </includes> |
| | | </resource> |
| | | </resources> |
| | | <outputDirectory>${package.path}/conf</outputDirectory> |
| | | </configuration> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | SQLyog Ultimate v13.1.1 (64 bit) |
| | | MySQL - 5.7.32-log : Database - lims_laboratory |
| | | ********************************************************************* |
| | | */ |
| | | |
| | | /*!40101 SET NAMES utf8 */; |
| | | |
| | | /*!40101 SET SQL_MODE=''*/; |
| | | |
| | | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
| | | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
| | | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
| | | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
| | | CREATE DATABASE /*!32312 IF NOT EXISTS*/`lims_laboratory` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; |
| | | |
| | | USE `lims_laboratory`; |
| | | |
| | | /*Table structure for table `classify` */ |
| | | |
| | | DROP TABLE IF EXISTS `classify`; |
| | | |
| | | CREATE TABLE `classify` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'å类主é®', |
| | | `father_name` varchar(25) NOT NULL COMMENT 'åç±»ç¶åç§°', |
| | | `son_name` varchar(25) DEFAULT NULL COMMENT 'åç±»ååç§°', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT 'é»è¾å é¤', |
| | | `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `version` int(1) NOT NULL DEFAULT '1' COMMENT 'ä¹è§é', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `classify` */ |
| | | |
| | | insert into `classify`(`id`,`father_name`,`son_name`,`state`,`create_time`,`update_time`,`version`) values |
| | | (1,'温度æµé仪表','使¸©è®¡',1,'2023-07-21 10:42:26','2023-07-21 14:14:54',1), |
| | | (3,'使¸©è®¡',NULL,1,'2023-07-21 10:48:51','2023-07-21 10:48:51',1), |
| | | (5,'使¸©',NULL,1,'2023-07-21 10:53:32','2023-07-21 10:53:32',1), |
| | | (10,'使¸©','使¸©',0,'2023-07-21 11:16:51','2023-07-21 13:45:52',1), |
| | | (12,'使¸©','使¸©è®¡',1,'2023-07-21 11:16:51','2023-07-21 11:16:51',1), |
| | | (13,'使¸©','使¸©',1,'2023-07-21 13:50:52','2023-07-21 13:50:52',1); |
| | | |
| | | /*Table structure for table `enterprise` */ |
| | | |
| | | DROP TABLE IF EXISTS `enterprise`; |
| | | |
| | | CREATE TABLE `enterprise` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ä¼ä¸ç¼å·', |
| | | `name` varchar(20) NOT NULL COMMENT 'ä¼ä¸åå', |
| | | `byname` varchar(20) NOT NULL COMMENT 'ä¼ä¸ç®ç§°', |
| | | `link_name` varchar(10) NOT NULL COMMENT 'è系人åå', |
| | | `link_phone` varchar(11) NOT NULL COMMENT 'è系人çµè¯', |
| | | `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `version` int(1) NOT NULL DEFAULT '1' COMMENT 'é', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `enterprise` */ |
| | | |
| | | insert into `enterprise`(`id`,`name`,`byname`,`link_name`,`link_phone`,`create_time`,`update_time`,`version`) values |
| | | (1,'ä¸å¤©ç§æç½ç»æéå
¬å¸','ä¸å¤©ç§æ','ææ','18400000000','2023-07-07 10:51:38','2023-07-07 10:51:41',1); |
| | | |
| | | /*Table structure for table `equipment_point` */ |
| | | |
| | | DROP TABLE IF EXISTS `equipment_point`; |
| | | |
| | | CREATE TABLE `equipment_point` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主é®', |
| | | `instrument_id` int(10) NOT NULL COMMENT '仪å¨Id å
³è', |
| | | `user_id` int(10) NOT NULL COMMENT 'ç¨æ·Id å
³è', |
| | | `equipment_point` varchar(25) NOT NULL COMMENT 'ç ç¹ç¼å·', |
| | | `equipment_point_name` varchar(25) NOT NULL COMMENT 'ç ç¹åç§°', |
| | | `unit` varchar(20) NOT NULL COMMENT 'åä½', |
| | | `descriptiveness` varchar(100) DEFAULT '--' COMMENT 'æè¿°', |
| | | `create_time` datetime NOT NULL COMMENT 'åå»ºæ¥æ', |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¥æ', |
| | | `state` int(11) NOT NULL DEFAULT '1' COMMENT 'é»è¾å é¤', |
| | | `version` int(11) DEFAULT '1' COMMENT 'ä¹è§é', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `equipment_point` */ |
| | | |
| | | insert into `equipment_point`(`id`,`instrument_id`,`user_id`,`equipment_point`,`equipment_point_name`,`unit`,`descriptiveness`,`create_time`,`update_time`,`state`,`version`) values |
| | | (1,1,7,'Area-1','导ä½å±è½ï¼å£åé¢ç§¯ï¼','mm','ç¯äºï¼åä¸äº','2023-07-24 14:40:01','2023-07-24 17:23:15',1,1), |
| | | (2,1,7,'Area-2','导ä½å±è½ï¼å£åé¢ç§¯ï¼','mm','太å°äº','2023-07-24 14:40:01','2023-07-24 15:03:44',1,1); |
| | | |
| | | /*Table structure for table `inspection` */ |
| | | |
| | | DROP TABLE IF EXISTS `inspection`; |
| | | |
| | | CREATE TABLE `inspection` ( |
| | | `id` varchar(25) NOT NULL COMMENT 'æ¥æ£ç¼å·', |
| | | `type` int(1) NOT NULL COMMENT '0ï¼åææï¼1ï¼äº§åï¼2ï¼åæåï¼', |
| | | `inspection_status` int(1) NOT NULL DEFAULT '0' COMMENT 'æ¥æ£ç¶æ 1ï¼å·²æ£éªï¼0æªæ£éª', |
| | | `qualified_state` int(1) DEFAULT NULL COMMENT 'æ¯å¦åæ ¼ 1ï¼æ¯ï¼0å¦', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT '1ï¼å¾
æäº¤ï¼2ï¼å·²æäº¤ï¼0ï¼å·²ä½åº', |
| | | `create_time` datetime NOT NULL COMMENT 'æ¥æ£æ¶é´', |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) DEFAULT '1', |
| | | `user_name` varchar(25) NOT NULL COMMENT 'æ¥æ£äºº', |
| | | `inspect_user_id` int(10) DEFAULT NULL COMMENT 'å
³è æ£éªäººï¼ç¨æ·idï¼', |
| | | `inspect_start_time` datetime DEFAULT NULL COMMENT 'æ£éªå¼å§æ¥æ', |
| | | `inspect_end_time` datetime DEFAULT NULL COMMENT 'æ£éªç»ææ¥æ', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `inspection` */ |
| | | |
| | | insert into `inspection`(`id`,`type`,`inspection_status`,`qualified_state`,`state`,`create_time`,`update_time`,`version`,`user_name`,`inspect_user_id`,`inspect_start_time`,`inspect_end_time`) values |
| | | ('1680929494813868034',0,0,NULL,1,'2023-07-17 21:16:36','2023-07-17 21:16:36',1,'æµè¯äººå',NULL,NULL,NULL), |
| | | ('1680929899014750210',0,0,NULL,1,'2023-07-17 21:18:13','2023-07-17 21:18:13',1,'æµè¯äººå',NULL,NULL,NULL), |
| | | ('1681215775833042945',0,0,NULL,1,'2023-07-18 16:14:11','2023-07-18 16:14:11',1,'æµè¯äººå',NULL,NULL,NULL); |
| | | |
| | | /*Table structure for table `inspection_material_list` */ |
| | | |
| | | DROP TABLE IF EXISTS `inspection_material_list`; |
| | | |
| | | CREATE TABLE `inspection_material_list` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'id', |
| | | `material_id` varchar(25) NOT NULL COMMENT 'ç©æid', |
| | | `material_num` int(10) NOT NULL COMMENT 'æ¥æ£æ°é-ç©ææ°é', |
| | | `material_supplier` varchar(25) NOT NULL COMMENT 'ä¾åºå', |
| | | `material_name` varchar(25) NOT NULL COMMENT 'ç©æåç§°', |
| | | `material_location` varchar(25) NOT NULL COMMENT 'ç©æåæ¾å°', |
| | | `material_batch` varchar(25) NOT NULL COMMENT 'ç©ææ¹æ¬¡', |
| | | `material_reel_number` varchar(25) NOT NULL COMMENT 'ç©æçå·', |
| | | `specifications_serial_number` varchar(50) NOT NULL COMMENT 'è§æ ¼åç§°/åå·åç§°', |
| | | `specifications_voltage_level` varchar(30) DEFAULT NULL COMMENT 'çµåç级', |
| | | `specifications_cross_section` varchar(30) DEFAULT NULL COMMENT 'ä¸»çº¿å¿æªé¢', |
| | | `specifications_number_of_cores` varchar(30) DEFAULT NULL COMMENT '主线è¯è¯æ°', |
| | | `specifications_instruct` varchar(30) DEFAULT NULL COMMENT 'ç产æä»¤å·', |
| | | `notes` varchar(100) DEFAULT NULL COMMENT '夿³¨', |
| | | `state` int(1) NOT NULL DEFAULT '1', |
| | | `create_time` datetime NOT NULL COMMENT 'æ¥æ£æ¶é´', |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) DEFAULT '1', |
| | | `inspection_id` varchar(25) NOT NULL COMMENT 'å
³è æ¥æ£åid', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `inspection_material_list` */ |
| | | |
| | | insert into `inspection_material_list`(`id`,`material_id`,`material_num`,`material_supplier`,`material_name`,`material_location`,`material_batch`,`material_reel_number`,`specifications_serial_number`,`specifications_voltage_level`,`specifications_cross_section`,`specifications_number_of_cores`,`specifications_instruct`,`notes`,`state`,`create_time`,`update_time`,`version`,`inspection_id`) values |
| | | (1,'1680929494813868034',100,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','æµè¯è§æ ¼/dsahj1','1','1','1','1',NULL,1,'2023-07-17 21:16:36','2023-07-17 21:16:36',1,'1681215775833042945'), |
| | | (2,'1680929899014750210',100,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','æµè¯è§æ ¼/dsahj1','1','1','1','1',NULL,1,'2023-07-17 21:18:13','2023-07-17 21:18:13',1,'1681215775833042945'), |
| | | (3,'1681499095783407618',100,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','23123','3424','2131','2','123','312',1,'2023-07-19 11:00:00','2023-07-19 11:00:00',1,'1681215775833042945'), |
| | | (4,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','','','è§æ ¼/åå·','','','',1,'2023-07-19 13:59:46','2023-07-19 13:59:46',1,'1681215775833042945'), |
| | | (5,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','','','è§æ ¼/åå·','','','',1,'2023-07-19 14:00:51','2023-07-19 14:00:51',1,'1681215775833042945'), |
| | | (6,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','','','è§æ ¼/åå·','','','',0,'2023-07-19 14:01:46','2023-07-19 14:01:46',1,'1681215775833042945'), |
| | | (7,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','','','è§æ ¼/åå·','','','',0,'2023-07-19 14:02:47','2023-07-19 14:02:47',1,'1681215775833042945'), |
| | | (8,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','è§æ ¼/åå·','5','2','4','3','1',1,'2023-07-19 14:25:56','2023-07-19 14:39:23',1,'1681215775833042945'), |
| | | (9,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','è§æ ¼/åå·','5','2','4','3','1',1,'2023-07-19 15:17:56','2023-07-19 15:17:56',1,'1681215775833042945'), |
| | | (13,'1',10,'ä¸å¤©','çµçº¿çµç¼','å°ä¸ä¸å±','1','123','è§æ ¼/åå·','5','2','4','3','1',0,'2023-07-19 15:44:51','2023-07-20 11:07:27',1,'1681215775833042945'); |
| | | |
| | | /*Table structure for table `inspection_product_list` */ |
| | | |
| | | DROP TABLE IF EXISTS `inspection_product_list`; |
| | | |
| | | CREATE TABLE `inspection_product_list` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '项ç®id', |
| | | `name` varchar(25) NOT NULL COMMENT '项ç®åç§°', |
| | | `method` varchar(25) NOT NULL COMMENT 'è¯éªæ¹æ³', |
| | | `ask` varchar(30) DEFAULT NULL COMMENT 'è¯éªè¦æ±', |
| | | `unit` varchar(20) NOT NULL COMMENT 'åä½', |
| | | `required` varchar(20) NOT NULL COMMENT 'ææ äººè¦æ±å¼', |
| | | `internal` varchar(20) NOT NULL COMMENT 'å
æ§å¼', |
| | | `start_time` datetime DEFAULT NULL COMMENT 'å¼å§æ¥æ', |
| | | `end_time` datetime DEFAULT NULL COMMENT 'ç»ææ¥æ', |
| | | `state` int(1) NOT NULL DEFAULT '1', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) DEFAULT '1', |
| | | `inspection_material_list_id` int(10) NOT NULL COMMENT 'å
³è æ¥æ£ç©æid', |
| | | `user_id` int(10) NOT NULL COMMENT 'å
³è ç¨æ·id è¯éªå', |
| | | `instrument_id` int(10) DEFAULT NULL COMMENT 'å
³è 设å¤id', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `inspection_product_list` */ |
| | | |
| | | insert into `inspection_product_list`(`id`,`name`,`method`,`ask`,`unit`,`required`,`internal`,`start_time`,`end_time`,`state`,`create_time`,`update_time`,`version`,`inspection_material_list_id`,`user_id`,`instrument_id`) values |
| | | (2,'项ç®ä¸','尺表æµé',NULL,'ç±³','>=1','>1',NULL,NULL,1,'2023-07-17 21:16:36','2023-07-17 21:16:36',1,1,1,NULL), |
| | | (3,'项ç®ä¸','尺表æµé',NULL,'ç±³','>=1','>1',NULL,NULL,1,'2023-07-17 21:18:13','2023-07-17 21:18:13',1,2,1,NULL), |
| | | (4,'项ç®äº','æµè¯æ¹æ³',NULL,'人æ°å¸','>1','>2',NULL,NULL,1,'2023-07-17 21:18:13','2023-07-17 21:18:13',1,3,1,NULL), |
| | | (5,'项ç®ä¸','尺表æµé',NULL,'ç±³','>=1','>1',NULL,NULL,0,'2023-07-19 15:44:51','2023-07-20 11:07:27',1,0,1,NULL), |
| | | (6,'项ç®äº','æµè¯æ¹æ³',NULL,'人æ°å¸','>1','>2',NULL,NULL,0,'2023-07-19 15:44:51','2023-07-20 11:07:27',1,0,1,NULL); |
| | | |
| | | /*Table structure for table `inspection_records` */ |
| | | |
| | | DROP TABLE IF EXISTS `inspection_records`; |
| | | |
| | | CREATE TABLE `inspection_records` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'è®°å½id', |
| | | `method` varchar(25) NOT NULL COMMENT 'æ£æµæ¹æ³', |
| | | `num` int(10) NOT NULL COMMENT 'æ£æµçæ ·åæ°é', |
| | | `value` varchar(25) NOT NULL COMMENT 'æ£æµå¼', |
| | | `submit_state` int(1) NOT NULL DEFAULT '0' COMMENT 'æäº¤ç¶æ 0ï¼å¾
æäº¤ï¼1ï¼å¾
å®¡æ ¸ï¼2ï¼å·²éè¿', |
| | | `state` int(1) NOT NULL DEFAULT '1', |
| | | `create_time` datetime NOT NULL COMMENT 'æ£æµæ¥æ', |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) DEFAULT NULL, |
| | | `inspection_product_list_id` int(10) NOT NULL COMMENT 'å
³è æ ·åä¸ç项ç®id', |
| | | `user_name` int(10) DEFAULT NULL COMMENT 'å
³è 审æ¹äººï¼ç¨æ·åç§°ï¼', |
| | | `approval_time` datetime DEFAULT NULL COMMENT 'å®¡æ¹æ¥æ', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `inspection_records` */ |
| | | |
| | | /*Table structure for table `instrument` */ |
| | | |
| | | DROP TABLE IF EXISTS `instrument`; |
| | | |
| | | CREATE TABLE `instrument` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主é®', |
| | | `classify_id` int(10) NOT NULL COMMENT 'åç±»ID å
³è', |
| | | `user_id` int(10) NOT NULL COMMENT 'ç¨æ·å
³è ä¿ç®¡äºº', |
| | | `equipment_code` varchar(25) NOT NULL COMMENT '仪å¨è®¾å¤ç¼å·', |
| | | `equipment_name` varchar(25) NOT NULL COMMENT '仪å¨è®¾å¤åç§°', |
| | | `conditions` int(1) NOT NULL COMMENT 'é»è®¤1ï¼1ï¼è¿è¡ã2ï¼æ
éã3ï¼æ¥ä¿®ã4ï¼æ£ä¿®ã5ï¼å¾
æº', |
| | | `specifications_models` varchar(25) NOT NULL COMMENT 'è§æ ¼åå·', |
| | | `measuring_range` varchar(25) DEFAULT '--' COMMENT 'æµéèå´', |
| | | `error_rate` varchar(10) DEFAULT '--' COMMENT '误差', |
| | | `manufacturer` varchar(50) DEFAULT '--' COMMENT 'ç产åå®¶', |
| | | `arrival_date` datetime DEFAULT NULL COMMENT 'å°è´§æ¥æ', |
| | | `acceptance_date` datetime DEFAULT NULL COMMENT 'éªæ¶æ¥æ', |
| | | `storage_place` varchar(100) DEFAULT '--' COMMENT 'åæ¾å°', |
| | | `whether_data_acquisition` int(1) NOT NULL COMMENT 'æ¯å¦æ¯ææ°é', |
| | | `equipment_measurement` int(1) NOT NULL COMMENT 'æ¯å¦éè¦ä»ªå¨è®¾å¤è®¡éï¼å¦æéè¦è®¡é卿å¿
å¡«ï¼å¦æä¸éè¦è®¡é卿ä¸å¿
å¡«', |
| | | `term_validity` int(11) NOT NULL COMMENT 'è®¡éæªæ¢æææ', |
| | | `descriptiveness` varchar(100) DEFAULT '--' COMMENT 'æè¿°', |
| | | `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT 'é»è¾å é¤', |
| | | `version` int(1) DEFAULT '1' COMMENT 'ä¹è§é', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `instrument` */ |
| | | |
| | | insert into `instrument`(`id`,`classify_id`,`user_id`,`equipment_code`,`equipment_name`,`conditions`,`specifications_models`,`measuring_range`,`error_rate`,`manufacturer`,`arrival_date`,`acceptance_date`,`storage_place`,`whether_data_acquisition`,`equipment_measurement`,`term_validity`,`descriptiveness`,`create_time`,`update_time`,`state`,`version`) values |
| | | (1,1,9,'JSTC-W1-00001','æ°åçµæ¡¥',1,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-21 15:15:23','2023-07-24 17:10:17',1,1), |
| | | (2,1,9,'JSTC-W1-00002','æ°åçµæ¡¥',1,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-21 15:17:56','2023-07-21 15:58:35',1,1), |
| | | (3,1,10,'JSTC-W1-00003','æ°åçµæ¡¥',3,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2020-01-09 15:18:02','2023-07-21 15:18:02',1,1), |
| | | (4,1,11,'JSTC-W1-00004','æ°åçµæ¡¥',2,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-21 15:18:10','2023-07-21 15:18:10',1,1), |
| | | (5,1,12,'JSTC-W1-00005','æ°åçµæ¡¥',4,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-21 15:18:15','2023-07-21 15:18:15',1,1), |
| | | (6,1,13,'JSTC-W1-00006','Aæ°åçµæ¡¥',1,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-21 15:18:19','2023-07-21 15:18:19',1,1), |
| | | (7,1,14,'JSTC-W1-00007','æ°åçµæ¡¥',5,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-21 15:18:23','2023-07-21 15:18:23',1,1), |
| | | (8,1,9,'JSTC-W1-00008','æ°åçµæ¡¥',1,'WCDMS-1','12毫米','0.000001微米','æ±èéµ·é','2001-07-06 00:00:00','2060-07-06 00:00:00','å°çäºæ´²ä¸å½æ±èåé',1,0,12,'ç¯çææäºï¼ï¼ï¼','2023-07-24 14:16:07','2023-07-24 14:16:07',1,1); |
| | | |
| | | /*Table structure for table `material` */ |
| | | |
| | | DROP TABLE IF EXISTS `material`; |
| | | |
| | | CREATE TABLE `material` ( |
| | | `id` varchar(25) NOT NULL COMMENT 'ç©æid', |
| | | `name` varchar(25) NOT NULL COMMENT 'ç©æåç§°', |
| | | `supplier` varchar(25) NOT NULL COMMENT 'ä¾åºå', |
| | | `location` varchar(25) NOT NULL COMMENT 'ç©æåæ¾å°', |
| | | `num` int(10) NOT NULL COMMENT 'ç©ææ°é', |
| | | `batch` varchar(25) NOT NULL COMMENT 'æ¹æ¬¡', |
| | | `reel_number` varchar(25) NOT NULL COMMENT 'çå·', |
| | | `state` int(1) NOT NULL DEFAULT '1', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) NOT NULL DEFAULT '1', |
| | | `specifications_id` int(10) NOT NULL COMMENT 'å
³è è§æ ¼id', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `material` */ |
| | | |
| | | insert into `material`(`id`,`name`,`supplier`,`location`,`num`,`batch`,`reel_number`,`state`,`create_time`,`update_time`,`version`,`specifications_id`) values |
| | | ('11111111111111','22222222222','1111111111','1111111',1111111,'111111','1111111',0,'2023-07-20 15:19:11','2023-07-21 13:04:12',1,1), |
| | | ('112233445566','ææº','test','test',1,'2','3',1,'2023-07-21 13:29:57','2023-07-21 13:29:57',1,1), |
| | | ('11223456','test','è
¾è®¯','ä»åºä¸ï¼äºå·æ¶',200,'2','152453211563232',1,'2023-07-21 13:51:21','2023-07-21 13:51:21',1,1), |
| | | ('12345','testmaterial','test','test',1,'123','1',0,'2023-07-21 13:08:44','2023-07-21 13:13:54',1,1), |
| | | ('123456','test','test','test',1,'1','1',0,'2023-07-21 13:14:49','2023-07-21 13:20:20',1,1), |
| | | ('152423211563212','ææº','ç¾åº¦','ä»åºä¸ï¼äºå·æ¶',200,'1','152453211563212',0,'2023-07-17 14:22:57','2023-07-21 13:28:54',1,1), |
| | | ('152453211563211','ç³å¤´','ç¾åº¦','ä»åºä¸ï¼ä¸å·æ¶',200,'1','152453211563212',0,'2023-07-17 14:14:03','2023-07-21 13:42:15',1,1), |
| | | ('152453211563212','ç³å¤´','ç¾åº¦','ä»åºä¸ï¼äºå·æ¶',200,'1','152453211563212',1,'2023-07-21 13:41:49','2023-07-21 13:41:49',1,1), |
| | | ('152453211563222','ç³å¤´','ç¾åº¦','ä»åºä¸ï¼ä¸å·æ¶',200,'1','152453211563212',1,'2023-07-17 14:14:03','2023-07-20 11:09:36',1,4), |
| | | ('152453211563233','ç³å¤´','ç¾åº¦','ä»åºä¸ï¼ä¸å·æ¶',200,'1','152453211563212',1,'2023-07-17 14:14:03','2023-07-20 11:00:29',1,4), |
| | | ('218469124614','1122333','test','test',1,'1','1',1,'2023-07-21 13:31:00','2023-07-21 13:31:00',1,1), |
| | | ('22222222','2222222','22222222','22222222',22222222,'2222222222','2222222',0,'2023-07-20 15:20:20','2023-07-21 13:21:25',1,1); |
| | | |
| | | /*Table structure for table `metrical_information` */ |
| | | |
| | | DROP TABLE IF EXISTS `metrical_information`; |
| | | |
| | | CREATE TABLE `metrical_information` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主é®', |
| | | `user_id` int(10) NOT NULL COMMENT 'ç¨æ·å
³èId', |
| | | `measurement_unit` varchar(15) NOT NULL COMMENT '计éåä½', |
| | | `begin_date` datetime NOT NULL COMMENT 'å¼å§æ¥æ', |
| | | `end_date` datetime NOT NULL COMMENT 'ç»ææ¥æ', |
| | | `uncertainty` varchar(20) NOT NULL COMMENT 'ä¸ç¡®å®åº¦', |
| | | `result` int(1) NOT NULL COMMENT 'ç»æ 1ï¼åæ ¼ï¼2ï¼ç«æ£åå¯ç¨ï¼3ï¼ä¸åæ ¼', |
| | | `performance_index` varchar(100) DEFAULT NULL COMMENT 'æ§è½ææ ', |
| | | `remarks` varchar(100) DEFAULT NULL COMMENT '夿³¨', |
| | | `file_path` varchar(50) DEFAULT NULL COMMENT 'æä»¶è·¯å¾', |
| | | `create_time` datetime NOT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT 'é»è¾å é¤', |
| | | `version` int(1) DEFAULT '1' COMMENT 'ä¹è§é', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `metrical_information` */ |
| | | |
| | | insert into `metrical_information`(`id`,`user_id`,`measurement_unit`,`begin_date`,`end_date`,`uncertainty`,`result`,`performance_index`,`remarks`,`file_path`,`create_time`,`update_time`,`state`,`version`) values |
| | | (1,7,'1','2023-07-25 00:00:00','2023-07-25 00:00:00','1',1,'1','1','1690255123954_131493.png','2023-07-25 10:43:30','2023-07-25 13:50:24',1,1), |
| | | (2,7,'2','2023-07-25 00:00:00','2023-07-25 00:00:00','2',2,'2','2','1690264656523_540845.png','2023-07-25 11:18:44','2023-07-25 13:57:37',1,1); |
| | | |
| | | /*Table structure for table `plan` */ |
| | | |
| | | DROP TABLE IF EXISTS `plan`; |
| | | |
| | | CREATE TABLE `plan` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '计åç¼å·', |
| | | `results` int(10) DEFAULT NULL COMMENT 'æ£éªç»æ 0ï¼æªå®æï¼1ï¼å·²å®æï¼', |
| | | `thing` varchar(50) DEFAULT NULL COMMENT 'è¯éªè¯´æ', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT '1ï¼å¾
认é¢ï¼2ï¼å¾
åé
ï¼3ï¼å·²åé
ï¼4ï¼è¶
æå¾
åé
ï¼5ï¼å·²å®æï¼0ï¼å·²ä½åº', |
| | | `create_time` datetime NOT NULL COMMENT 'ä»»å¡ç»è®°æ¶é´', |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) DEFAULT '1', |
| | | `inspection_id` varchar(25) NOT NULL COMMENT 'å
³è æ¥æ£id(ç³è¯·åç¼å·)', |
| | | `user_id` int(10) DEFAULT NULL COMMENT 'å
³è ç¨æ·id(è´è´£äººid)', |
| | | `device_id` int(10) DEFAULT NULL COMMENT 'å
³è 设å¤id', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `plan` */ |
| | | |
| | | /*Table structure for table `product` */ |
| | | |
| | | DROP TABLE IF EXISTS `product`; |
| | | |
| | | CREATE TABLE `product` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'æµè¯æ åid', |
| | | `name` varchar(25) NOT NULL COMMENT 'æµè¯æ ååç§°', |
| | | `method` varchar(25) NOT NULL COMMENT 'è¯éªæ¹æ³', |
| | | `father` varchar(20) DEFAULT NULL COMMENT 'æµè¯æ åç¶ç±»', |
| | | `unit` varchar(20) NOT NULL COMMENT 'åä½', |
| | | `required` varchar(20) NOT NULL COMMENT 'ææ äººè¦æ±å¼', |
| | | `internal` varchar(20) NOT NULL COMMENT 'å
æ§å¼', |
| | | `state` int(1) NOT NULL DEFAULT '1', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) NOT NULL DEFAULT '1', |
| | | `user_id` int(10) NOT NULL COMMENT 'å
³è ç¨æ·id', |
| | | `material_id` varchar(25) NOT NULL COMMENT 'å
³è ç©æid', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `product` */ |
| | | |
| | | insert into `product`(`id`,`name`,`method`,`father`,`unit`,`required`,`internal`,`state`,`create_time`,`update_time`,`version`,`user_id`,`material_id`) values |
| | | (1,'åä½é¿åº¦è´¨é','--','éå
é¢è¯éç»çº¿','km','<=0.3458','<=0.3458',0,'2023-07-17 14:56:22','2023-07-21 13:28:54',1,7,'152423211563212'), |
| | | (2,'åä½å®½åº¦è´¨é','--','éå
é¢è¯éç»çº¿','km','<=0.3458','<=0.3458',1,'2023-07-17 14:56:22','2023-07-20 11:09:36',1,7,'152453211563222'), |
| | | (3,'åä½å®½åº¦è´¨é','--',NULL,'km','<=0.3458','<=0.3458',1,'2023-07-17 14:56:22','2023-07-20 11:09:36',1,7,'152453211563222'), |
| | | (4,'好å¤1','æ§å¶åéæ³','1111111','好å¤1','2000','100',0,'2023-07-20 16:05:38','2023-07-21 13:04:12',1,7,'11111111111111'), |
| | | (5,'好å¤å¥½å¤','---','æ°çç¶é¡¹ç®','好å¤å¥½å¤','200','100',0,'2023-07-20 16:10:19','2023-07-21 13:04:12',1,7,'11111111111111'), |
| | | (6,'好å¤å¥½å¤','---','æ°çç¶é¡¹ç®','好å¤å¥½å¤','200','100',0,'2023-07-20 16:11:39','2023-07-21 13:04:12',1,7,'11111111111111'), |
| | | (7,'1111111','test',NULL,'test','12','123',1,'2023-07-21 13:31:34','2023-07-21 13:31:34',1,7,'112233445566'), |
| | | (8,'111111','1',NULL,'11','1','1',1,'2023-07-21 13:33:06','2023-07-21 13:33:06',1,7,'112233445566'), |
| | | (9,'åä½é¿åº¦è´¨é','--','éå
é¢è¯éç»çº¿','km','<=0.3458','<=0.3458',1,'2023-07-21 13:39:28','2023-07-21 13:39:28',1,7,'152453211563212'), |
| | | (10,'åä½é¿åº¦è´¨é','--','éå
é¢è¯éç»çº¿','km','<=0.3458','<=0.3458',0,'2023-07-21 13:42:01','2023-07-21 14:19:34',1,7,'152453211563212'), |
| | | (11,'1111111111','1111','éå
é¢è¯éç»çº¿','cm','11','111',0,'2023-07-21 13:48:25','2023-07-21 14:20:50',1,7,'152453211563212'), |
| | | (12,'11111111','1','éå
é¢è¯éç»çº¿','1111','1','1',0,'2023-07-21 13:48:59','2023-07-21 14:19:04',1,7,'112233445566'), |
| | | (13,'11111','--','11111111','km','<=0.3458','<=0.3458',1,'2023-07-21 13:52:21','2023-07-21 13:52:21',1,7,'11223456'), |
| | | (14,'12345','--','11111111','km','<=0.3458','<=0.3458',0,'2023-07-21 13:53:58','2023-07-21 13:56:17',1,7,'11223456'), |
| | | (15,'11111111111111','1','éå
é¢è¯éç»çº¿','111','11','1',0,'2023-07-21 14:23:10','2023-07-21 14:23:22',1,7,'152453211563212'); |
| | | |
| | | /*Table structure for table `role` */ |
| | | |
| | | DROP TABLE IF EXISTS `role`; |
| | | |
| | | CREATE TABLE `role` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'è§è²id', |
| | | `name` varchar(30) NOT NULL COMMENT 'è§è²å', |
| | | `power` int(1) NOT NULL COMMENT '0ï¼æ æéï¼1ï¼ææé', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT 'é»è¾å é¤ æ£å¸¸>=1,å é¤<=0', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(10) NOT NULL COMMENT 'ä¹è§é', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `role` */ |
| | | |
| | | insert into `role`(`id`,`name`,`power`,`state`,`create_time`,`update_time`,`version`) values |
| | | (1,'æ®é人å',1,1,'2023-07-07 11:30:06','2023-07-07 11:30:11',1); |
| | | |
| | | /*Table structure for table `serial_number` */ |
| | | |
| | | DROP TABLE IF EXISTS `serial_number`; |
| | | |
| | | CREATE TABLE `serial_number` ( |
| | | `id` varchar(25) NOT NULL COMMENT 'åå·ç¼å·', |
| | | `name` varchar(25) NOT NULL COMMENT 'åå·åç§°', |
| | | `state` int(1) NOT NULL DEFAULT '1', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) NOT NULL DEFAULT '1', |
| | | `standards_id` varchar(15) NOT NULL COMMENT 'å
³èåæ®µ æ åid', |
| | | `user_id` int(10) NOT NULL, |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `serial_number` */ |
| | | |
| | | insert into `serial_number`(`id`,`name`,`state`,`create_time`,`update_time`,`version`,`standards_id`,`user_id`) values |
| | | ('111222','åå·1',0,'2023-07-20 15:01:08','2023-07-20 15:20:09',1,'111',7), |
| | | ('230711000002','å
纤2.0.1',1,'2023-07-11 22:34:11','2023-07-20 09:28:19',1,'230711000001',7), |
| | | ('ModelNumber001','å
纤2.0.1',1,'2023-07-20 10:51:01','2023-07-20 10:51:01',1,'230711000002',7), |
| | | ('ModelNumber002','å
纤2.0.2',1,'2023-07-18 13:36:13','2023-07-20 09:28:19',1,'230711000001',7), |
| | | ('ModelNumber003','å
纤2.0.3',1,'2023-07-18 13:36:23','2023-07-20 10:54:11',1,'230711000002',7), |
| | | ('num1','å
纤2.0.3',1,'2023-07-20 14:18:24','2023-07-20 14:18:24',1,'230711000002',7), |
| | | ('num2','å
纤2.0.4',1,'2023-07-20 14:19:34','2023-07-20 14:19:34',1,'230711000002',7), |
| | | ('PleasantGoat','1345',1,'2023-07-18 13:46:49','2023-07-20 10:22:42',1,'230711000002',7), |
| | | ('spiritless','78915',1,'2023-07-18 13:46:24','2023-07-18 13:46:24',1,'230711000004',7); |
| | | |
| | | /*Table structure for table `specifications` */ |
| | | |
| | | DROP TABLE IF EXISTS `specifications`; |
| | | |
| | | CREATE TABLE `specifications` ( |
| | | `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'è§æ ¼id', |
| | | `number` varchar(25) NOT NULL COMMENT 'è§æ ¼ç¼å·', |
| | | `name` varchar(25) NOT NULL COMMENT '产åè§æ ¼', |
| | | `instruct` varchar(25) DEFAULT NULL COMMENT 'ç产æä»¤å·', |
| | | `voltage_level` varchar(30) DEFAULT NULL COMMENT 'çµåç级', |
| | | `cross_section` varchar(30) DEFAULT NULL COMMENT 'ä¸»çº¿å¿æªé¢', |
| | | `number_of_cores` varchar(30) DEFAULT NULL COMMENT '主线è¯è¯æ°', |
| | | `spe_state` int(1) NOT NULL DEFAULT '-1' COMMENT 'è§æ ¼ç¶æ 0ï¼åç¨ï¼1ï¼æ£å¸¸ï¼-1ï¼è稿', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT 'é»è¾å é¤ æ£å¸¸>=1,å é¤<=0', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `version` int(1) NOT NULL DEFAULT '1', |
| | | `vel` varchar(15) NOT NULL DEFAULT 'V1.0' COMMENT 'è§æ ¼çæ¬', |
| | | `serial_id` varchar(25) NOT NULL COMMENT 'å
³èåæ®µ åå·id', |
| | | `user_id` int(10) NOT NULL COMMENT 'å
³èåæ®µ ç¨æ·id', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `specifications` */ |
| | | |
| | | insert into `specifications`(`id`,`number`,`name`,`instruct`,`voltage_level`,`cross_section`,`number_of_cores`,`spe_state`,`state`,`create_time`,`update_time`,`version`,`vel`,`serial_id`,`user_id`) values |
| | | (1,'111','ab','test','1','test','test',0,1,'2023-07-12 00:00:12','2023-07-21 09:52:22',1,'V1.0','230711000002',7), |
| | | (2,'abc','AB','abc','abc','abc','abc',0,1,'2023-07-12 00:00:12','2023-07-20 16:34:38',1,'V1.0','230711000002',7), |
| | | (4,'abc','AB','abc','abc','abc','abc',1,1,'2023-07-12 00:00:12','2023-07-20 11:00:29',1,'V1.0','ModelNumber003',7), |
| | | (5,'abc','AB','abc','abc','abc','abc',1,1,'2023-07-12 00:00:12','2023-07-20 10:22:42',1,'V1.0','PleasantGoat',7), |
| | | (6,'modelId','AB','test','test','test','test',-1,1,'2023-07-20 13:42:40','2023-07-20 13:42:40',1,'V1.0','230711000002',7), |
| | | (7,'modelID1','test','test','test','test','test',-1,1,'2023-07-20 14:02:26','2023-07-20 14:02:26',1,'V1.0','230711000002',7), |
| | | (8,'modelId2','test11','test','test','test','test',-1,1,'2023-07-20 14:03:54','2023-07-20 14:03:54',1,'V1.0','230711000002',7), |
| | | (9,'111222','å
纤2.0.3','test','test','test','test',-1,1,'2023-07-20 14:55:12','2023-07-20 14:55:12',1,'V1.0','230711000002',7); |
| | | |
| | | /*Table structure for table `standards` */ |
| | | |
| | | DROP TABLE IF EXISTS `standards`; |
| | | |
| | | CREATE TABLE `standards` ( |
| | | `id` varchar(15) NOT NULL COMMENT 'æ åç¼å· yyMMdd000001(000001++)', |
| | | `name` varchar(25) NOT NULL COMMENT 'æ ååç§°', |
| | | `eng_name` varchar(25) NOT NULL COMMENT 'è±æåç§°', |
| | | `type` int(1) NOT NULL COMMENT '0ï¼åææï¼1ï¼çµçº¿çµç¼', |
| | | `state` int(1) NOT NULL DEFAULT '1' COMMENT 'é»è¾å段 0ï¼å é¤ï¼1ï¼æ£å¸¸', |
| | | `create_time` datetime NOT NULL COMMENT 'çææ¥æ', |
| | | `update_time` datetime NOT NULL COMMENT 'æ´æ°æ¥æ', |
| | | `version` int(1) NOT NULL DEFAULT '1', |
| | | `user_id` int(10) NOT NULL COMMENT 'å
³èåæ®µ æ´æ°äººid', |
| | | PRIMARY KEY (`id`) |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `standards` */ |
| | | |
| | | insert into `standards`(`id`,`name`,`eng_name`,`type`,`state`,`create_time`,`update_time`,`version`,`user_id`) values |
| | | ('111','123131313','164654565',0,0,'2023-07-20 13:26:55','2023-07-20 15:20:09',1,7), |
| | | ('112233445566','鱼鱼','fish',1,0,'2023-07-20 10:54:12','2023-07-20 15:19:41',1,7), |
| | | ('230711000001','å°ç½','OpticalFibre',1,1,'2023-07-11 21:27:04','2023-07-20 09:28:19',1,6), |
| | | ('230711000002','ææ','OpticalFibrw',1,1,'2023-07-11 21:27:04','2023-07-20 10:22:42',1,6), |
| | | ('230711000003','æ¾ç¤ºå±','Monitor',2,1,'2023-07-18 13:43:52','2023-07-18 13:43:52',1,7), |
| | | ('230711000004','å°é»','Black',2,1,'2023-07-18 13:44:29','2023-07-18 13:44:29',1,7); |
| | | |
| | | /*Table structure for table `user` */ |
| | | |
| | | DROP TABLE IF EXISTS `user`; |
| | | |
| | | CREATE TABLE `user` ( |
| | | `id` int(10) NOT NULL AUTO_INCREMENT COMMENT 'ç¨æ·id', |
| | | `account` varchar(20) NOT NULL COMMENT 'è´¦å·', |
| | | `password` varchar(100) NOT NULL COMMENT 'å¯ç ', |
| | | `name` varchar(20) NOT NULL COMMENT 'å§å', |
| | | `phone` varchar(11) DEFAULT NULL COMMENT 'ææºå·', |
| | | `email` varchar(30) DEFAULT NULL COMMENT 'é®ç®±', |
| | | `age` int(3) DEFAULT NULL COMMENT 'å¹´é¾', |
| | | `job_state` int(1) NOT NULL DEFAULT '1' COMMENT 'å¨èç¶æ æ£å¸¸>=1,离è<=0', |
| | | `info` varchar(100) DEFAULT NULL COMMENT '个æ§ç¾å', |
| | | `create_time` datetime NOT NULL, |
| | | `update_time` datetime NOT NULL, |
| | | `version` int(1) NOT NULL DEFAULT '1', |
| | | `role_id` int(10) NOT NULL, |
| | | `enterprise_id` int(10) NOT NULL COMMENT 'å
³è ä¼ä¸ID', |
| | | PRIMARY KEY (`id`), |
| | | UNIQUE KEY `account_unique` (`account`) |
| | | ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4; |
| | | |
| | | /*Data for the table `user` */ |
| | | |
| | | insert into `user`(`id`,`account`,`password`,`name`,`phone`,`email`,`age`,`job_state`,`info`,`create_time`,`update_time`,`version`,`role_id`,`enterprise_id`) values |
| | | (7,'123456','123456','å°å°','12345678981','12345678@qq.com',23,1,NULL,'2023-07-11 09:14:50','2023-07-11 09:14:50',1,1,1), |
| | | (9,'1388967','123456','鱼鱼','19727565533','1981343953@qq.com',18,1,NULL,'2023-07-13 14:51:41','2023-07-13 14:51:41',1,1,1), |
| | | (10,'1111111','123456','å®å®å½','17726824629','13958368246@gmail.com',13,1,NULL,'2023-07-13 14:57:23','2023-07-13 14:57:23',1,0,1), |
| | | (11,'135686632','123456','å®å®å½','13795639054','19813438642@qq.com',18,1,NULL,'2023-07-13 14:58:45','2023-07-13 14:58:45',1,1,1), |
| | | (12,'333','123456','鱼鱼','72398','2144',36,1,NULL,'2023-07-13 15:21:34','2023-07-13 15:21:34',1,0,1), |
| | | (13,'199999','123456','鱼鱼','2154364646','18913908',34,1,NULL,'2023-07-13 15:22:16','2023-07-13 15:22:16',1,1,1), |
| | | (14,'8957824','123456','å¼ ä¸','23875185298','2222222872',13,1,NULL,'2023-07-13 15:29:13','2023-07-13 15:29:13',1,1,1), |
| | | (21,'45612345','123456','å°é»','12345678981','12345678@qq.com',23,1,NULL,'2023-07-17 10:36:23','2023-07-17 10:36:23',1,1,1), |
| | | (23,'4561278345','123456','å°é»','12345678981','12345678@qq.com',23,1,NULL,'2023-07-17 11:28:50','2023-07-17 11:28:50',1,1,1); |
| | | |
| | | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; |
| | | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; |
| | | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; |
| | | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <groupId>com.yuanchu</groupId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | </parent> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>standard-server</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>standard-library</name> |
| | | <description>standard-library</description> |
| | | |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>framework</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>user-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto; |
| | | import com.yuanchu.limslaboratory.service.MaterialService; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | @Api(tags = "æ ååº-->1ãç©æ") |
| | | @RestController |
| | | @RequestMapping("/material") |
| | | public class MaterialController { |
| | | |
| | | @Autowired |
| | | private MaterialService materialService; |
| | | |
| | | @ApiOperation("æ·»å ç©æ") |
| | | @PostMapping("/add") |
| | | public Result<?> addMaterialInformation(@Validated @RequestBody AddMaterialDto addMaterialDto) { |
| | | Integer isMaterialSuccess = materialService.addMaterialInformation(addMaterialDto); |
| | | if (isMaterialSuccess == 1) { |
| | | return Result.success("æ·»å ç©æã"+ addMaterialDto.getMaterialName() +"ãæåï¼"); |
| | | } |
| | | return Result.fail("æ·»å ç©æã"+ addMaterialDto.getMaterialName() +"ã失败ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®ç©æIDå é¤ç©æ") |
| | | @DeleteMapping("/delete") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(value = "ç©æID", name = "materialId", dataTypeClass = Integer.class) |
| | | }) |
| | | public Result<?> deleteMaterialInformation(Integer materialId) { |
| | | Integer isDeleteMaterialSuccess = materialService.deleteMaterialInformation(materialId); |
| | | if (isDeleteMaterialSuccess == 1) { |
| | | return Result.success("å 餿åï¼"); |
| | | } |
| | | return Result.fail("å é¤å¤±è´¥ï¼"); |
| | | } |
| | | |
| | | @ApiOperation(value = "æ ååº-->ç©æ-->ä¾§è¾¹æ å级å±å¼", tags = "âââåç«¯è°æ´") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(value = "åå·/åå·åç§°", name = "specificationName", dataTypeClass = String.class) |
| | | }) |
| | | @GetMapping("/list") |
| | | public Result<?> getFourLevelInformation(String specificationName) { |
| | | List<Map<String, Object>> fourLevelInformation = materialService.getFourLevelInformation(specificationName); |
| | | return Result.success(fourLevelInformation); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.service.ProductService; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | @Api(tags = "æ ååº-->4ã项ç®") |
| | | @RestController |
| | | @RequestMapping("/product") |
| | | public class ProductController { |
| | | |
| | | @Autowired |
| | | private ProductService productService; |
| | | |
| | | @ApiOperation("1ãå页æ¥è¯¢é¡¹ç®") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "specificationsId", value = "è§æ ¼åå·ID", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(value = "åææç¼ç /åææåç§°", name = "productCodeOrName", dataTypeClass = String.class) |
| | | }) |
| | | @GetMapping("/page") |
| | | public Result<?> pageProductInformation(Integer pageNo, Integer pageSize, Integer specificationsId, String productCodeOrName) { |
| | | IPage<Map<String, Object>> maps = productService.pageProductInformation(productCodeOrName, specificationsId, new Page<Objects>(pageNo, pageSize)); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("row", maps.getRecords()); |
| | | map.put("total", maps.getTotal()); |
| | | return Result.success(map); |
| | | } |
| | | |
| | | @ApiOperation("2ãæ ¹æ®ç¶ç±»æ¥åç±»") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(value = "ç¶ç±»åç§°", name = "fatherName", dataTypeClass = String.class) |
| | | }) |
| | | @GetMapping("/father") |
| | | public Result<?> pageFatherNameProductInformation(String fatherName) { |
| | | List<Map<String, Object>> maps = productService.pageFatherNameProductInformation(fatherName); |
| | | return Result.success(maps); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddSpecifications; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto; |
| | | import com.yuanchu.limslaboratory.service.SpecificationsService; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | @Api(tags = "æ ååº-->3ã产åè§æ ¼") |
| | | @RestController |
| | | @RequestMapping("/specifications") |
| | | public class SpecificationsController { |
| | | |
| | | @Autowired |
| | | private SpecificationsService specificationsService; |
| | | |
| | | @ApiOperation("æ·»å ç©æ") |
| | | @PostMapping("/add") |
| | | public Result<?> addSpecificationsInformation(@Validated @RequestBody AddSpecifications addSpecifications) { |
| | | Integer isMaterialSuccess = specificationsService.addSpecificationsInformation(addSpecifications); |
| | | if (isMaterialSuccess == 1) { |
| | | return Result.success("æ·»å ç©æã"+ addSpecifications.getSpecificationsName() +"ãæåï¼"); |
| | | } |
| | | return Result.fail("æ·»å ç©æã"+ addSpecifications.getSpecificationsName() +"ã失败ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("å é¤äº§åè§æ ¼") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "specificationsId", value = "è§æ ¼Id", dataTypeClass = Integer.class, required = true) |
| | | }) |
| | | @DeleteMapping("/delete") |
| | | public Result<?> deleteSpecificationsInformation(Integer specificationsId) { |
| | | Integer isStandardsSuccess = specificationsService.deleteSpecifications(specificationsId); |
| | | if (isStandardsSuccess == 1) { |
| | | return Result.success("å 餿åï¼"); |
| | | } |
| | | return Result.fail("å é¤å¤±è´¥ï¼"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto; |
| | | import com.yuanchu.limslaboratory.service.StandardService; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | @Api(tags = "æ ååº-->2ãæ å") |
| | | @RestController |
| | | @RequestMapping("/standards") |
| | | public class StandardController { |
| | | |
| | | @Autowired |
| | | private StandardService standardService; |
| | | |
| | | @ApiOperation("æ·»å ç©æ") |
| | | @PostMapping("/add") |
| | | public Result<?> addStandardInformation(@Validated @RequestBody AddStandardDto addStandardDto) { |
| | | Integer isMaterialSuccess = standardService.addStandardInformation(addStandardDto); |
| | | if (isMaterialSuccess == 1) { |
| | | return Result.success("æ·»å ç©æã"+ addStandardDto.getStandardName() +"ãæåï¼"); |
| | | } |
| | | return Result.fail("æ·»å ç©æã"+ addStandardDto.getStandardName() +"ã失败ï¼"); |
| | | } |
| | | |
| | | @ApiOperation("æ ¹æ®IDå 餿°æ®") |
| | | @DeleteMapping("/delete") |
| | | public Result<?> deleteStandardsInformation(Integer standardsId) { |
| | | Integer isDeleteMaterialSuccess = standardService.deleteStandardInformation(standardsId); |
| | | if (isDeleteMaterialSuccess == 1) { |
| | | return Result.success("å 餿åï¼"); |
| | | } |
| | | return Result.fail("å é¤å¤±è´¥ï¼"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Material; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | public interface MaterialMapper extends BaseMapper<Material> { |
| | | |
| | | //æ¥è¯¢ç©æä¿¡æ¯ |
| | | List<Map> selectMaterialLimit(int num1,int num2, int type); |
| | | |
| | | //æ ¹æ®ç©æidæ¥è¯¢ç©æä¿¡æ¯ |
| | | Map selectMaterialById(String materialId); |
| | | |
| | | // å级æ |
| | | List<Map<String, Object>> FourTree(String specificationsName); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Product; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.List; |
| | | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | public interface ProductMapper extends BaseMapper<Product> { |
| | | |
| | | //æ ¹æ®ç©æidæ¥è¯¢æ£éªé¡¹ç® |
| | | List<Map> selectProductByMaterialId(int materialId); |
| | | |
| | | IPage<Map<String, Object>> pageProductInformation(String productCodeOrName, Integer specificationsId, Page<Objects> page); |
| | | |
| | | Map<String, Object> selectOneChildren(Object father); |
| | | |
| | | Map<String, Object> getProductInformation(Integer productId); |
| | | |
| | | //éè¿é¡¹ç®åæ¥è¯¢é¡¹ç®çè¯éªæ¹æ³ |
| | | List<Map> selectInstrumentByProname(String name); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Specifications; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | public interface SpecificationsMapper extends BaseMapper<Specifications> { |
| | | |
| | | Map<String, Object> selectSNameSNName(int materialId); |
| | | |
| | | IPage<Map<String, Objects>> listSpecificationsInformation(String specificationsName, String serialNumberId, Page<Objects> page); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Standard; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | public interface StandardMapper extends BaseMapper<Standard> { |
| | | |
| | | IPage<Map<String, Object>> listPageStandardsInformation(Page<Object> page, String idOrNameOfStandards); |
| | | |
| | | List<Map<String, Object>> getSpecificationIdAndName(String materialId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | @Accessors(chain = true) |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Material对象", description="") |
| | | public class Material implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "ç©æid", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "ç©æç¼ç ", hidden = true) |
| | | private String code; |
| | | |
| | | @ApiModelProperty(value = "ç©æåç§°", example = "ç³å¤´", required = true) |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "0ï¼åææï¼1ï¼æåï¼2ï¼åæå", example = "1", required = true) |
| | | private Integer type; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Product对象", description="") |
| | | public class Product implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "项ç®id", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "项ç®åç§°", example = "åä½é¿åº¦è´¨é", required = true) |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "项ç®ç¶ç±»", example = "éå
é¢è¯éç»çº¿") |
| | | private String father; |
| | | |
| | | @ApiModelProperty(value = "åä½", example = "km", required = true) |
| | | private String unit; |
| | | |
| | | @ApiModelProperty(value = "æ åå¼", example = "<=0.3458", required = true) |
| | | private String required; |
| | | |
| | | @ApiModelProperty(value = "å
æ§å¼", example = "<=0.3458", required = true) |
| | | private String internal; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | private Integer version; |
| | | |
| | | @ApiModelProperty(value = "å
³è ç©æid", example = "1", hidden = true) |
| | | private Integer specifications_id; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import io.swagger.models.auth.In; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | @Data |
| | | @Accessors(chain = true) |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Specifications对象", description="è§æ ¼") |
| | | public class Specifications implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "åå·id", hidden = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "产ååå·åç§°", example = "AB", required = true) |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | @TableLogic(value = "1", delval = "0") |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | @Version |
| | | private Integer version; |
| | | |
| | | @ApiModelProperty(value = "å
³èåæ®µ è§æ ¼id", hidden = true) |
| | | private Integer standardId; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | @Data |
| | | @Accessors(chain = true) |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Standards对象", description="æ å") |
| | | public class Standard implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼ç¼å· yyMMdd000001(000001++)", example = "230711000001", required = true) |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "è§æ ¼åç§°", example = "å
纤", required = true) |
| | | private String name; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0", hidden = true) |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @ApiModelProperty(value = "å建æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @ApiModelProperty(value = "æ´æ°æ¶é´", hidden = true) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value = "ä¹è§é", hidden = true) |
| | | @Version |
| | | private Integer version; |
| | | |
| | | @ApiModelProperty(value = "ç©æId", hidden = true) |
| | | private Integer materialId; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="AddMaterialDto对象", description="") |
| | | public class AddMaterialDto { |
| | | |
| | | @NotNull(message = "ç©æç±»åä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "0ï¼åææï¼1ï¼æåï¼2ï¼åæå", example = "1", required = true) |
| | | private Integer type; |
| | | |
| | | @NotBlank(message = "ç©æåç§°ä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "ç©æåç§°", example = "ç³å¤´", required = true) |
| | | private String materialName; |
| | | |
| | | @NotBlank(message = "æ ååç§°ä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "æ ååç§°", example = "å
纤", required = true) |
| | | private String standardName; |
| | | |
| | | @NotBlank(message = "产åè§æ ¼åç§°ä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "产åè§æ ¼åç§°", example = "AB", required = true) |
| | | private String specificationsName; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="AddSpecifications对象", description="") |
| | | public class AddSpecifications { |
| | | |
| | | @NotNull(message = "æ åIDä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "æ åid", example = "1", required = true) |
| | | private Integer standardId; |
| | | |
| | | @NotBlank(message = "产åè§æ ¼åç§°ä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "产åè§æ ¼åç§°", example = "AB", required = true) |
| | | private String specificationsName; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="AddStandardDto对象", description="") |
| | | public class AddStandardDto { |
| | | |
| | | @NotNull(message = "ç©æIDä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "ç©æid", example = "1", required = true) |
| | | private Integer materialId; |
| | | |
| | | @NotBlank(message = "æ ååç§°ä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "æ ååç§°", example = "å
纤", required = true) |
| | | private String standardName; |
| | | |
| | | @NotBlank(message = "产åè§æ ¼åç§°ä¸è½ä¸ºç©ºï¼") |
| | | @ApiModelProperty(value = "产åè§æ ¼åç§°", example = "AB", required = true) |
| | | private String specificationsName; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Material; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | public interface MaterialService extends IService<Material> { |
| | | |
| | | List<Map> selectMaterialLimit(int pageSize,int countSize, int type); |
| | | |
| | | |
| | | /** |
| | | * å é¤çäºMaterialIdçæ°æ® |
| | | * @param materialId |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | Integer deleteMaterialInformation(Integer materialId); |
| | | |
| | | /** |
| | | * ä¸çº§æ·»å åæ° |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | Integer addMaterialInformation(AddMaterialDto addMaterialDto); |
| | | |
| | | /** |
| | | * å级å屿¾ç¤º |
| | | */ |
| | | List<Map<String, Object>> getFourLevelInformation(String specificationName); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Product; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | public interface ProductService extends IService<Product> { |
| | | void deleteProductInformation(List<Integer> SpecificationsId); |
| | | |
| | | IPage<Map<String, Object>> pageProductInformation(String productCodeOrName, Integer specificationsId, Page<Objects> page); |
| | | |
| | | List<Map<String, Object>> pageFatherNameProductInformation(String fatherName); |
| | | |
| | | /** |
| | | * éè¿é¡¹ç®åæ¥è¯¢é¡¹ç®çè¯éªæ¹æ³ |
| | | * @param name |
| | | * @return |
| | | */ |
| | | List<Map> selectInstrumentByProname(String name); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.yuanchu.limslaboratory.pojo.Specifications; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.Standard; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddSpecifications; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | public interface SpecificationsService extends IService<Specifications> { |
| | | /** |
| | | * å¤è¡¨å é¤ï¼è¡¨æ ¼å嫿ï¼Specification --> Material --> Product |
| | | * @param specificationsId |
| | | * @return |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | Integer deleteSpecifications(Integer specificationsId); |
| | | |
| | | List<Integer> StandardIdDeleteSpecifications(List<Integer> deleteStandard); |
| | | |
| | | Integer addSpecificationsInformation(AddSpecifications addStandardDto); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Standard; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto; |
| | | import io.swagger.models.auth.In; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | public interface StandardService extends IService<Standard> { |
| | | |
| | | /** |
| | | * æ ¹æ®æ åIdå 餿°æ® |
| | | * @param materialId |
| | | * @return |
| | | */ |
| | | List<Integer> deleteStandardsInformation(Integer materialId); |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | Integer deleteStandardInformation(Integer standardsId); |
| | | |
| | | Integer addStandardInformation(AddStandardDto addStandardDto); |
| | | |
| | | List<Map<String, Object>> getSpecificationIdAndName(String materialId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.yuanchu.limslaboratory.pojo.Material; |
| | | import com.yuanchu.limslaboratory.mapper.MaterialMapper; |
| | | import com.yuanchu.limslaboratory.pojo.Specifications; |
| | | import com.yuanchu.limslaboratory.pojo.Standard; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto; |
| | | import com.yuanchu.limslaboratory.service.MaterialService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.service.ProductService; |
| | | import com.yuanchu.limslaboratory.service.SpecificationsService; |
| | | import com.yuanchu.limslaboratory.service.StandardService; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | @Service |
| | | public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> implements MaterialService { |
| | | |
| | | @Resource |
| | | private MaterialMapper materialMapper; |
| | | |
| | | @Autowired |
| | | private StandardService standardService; |
| | | |
| | | @Autowired |
| | | private SpecificationsService specificationsService; |
| | | |
| | | @Autowired |
| | | private ProductService productService; |
| | | |
| | | //æ¥è¯¢ç©æä¿¡æ¯ |
| | | @Override |
| | | public List<Map> selectMaterialLimit(int pageSize, int countSize, int type) { |
| | | return materialMapper.selectMaterialLimit((pageSize - 1) * countSize,pageSize * countSize, type); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public Integer deleteMaterialInformation(Integer materialId) { |
| | | LambdaUpdateWrapper<Material> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Material::getId, materialId); |
| | | updateWrapper.set(Material::getState, 0); |
| | | int isDeleteSuccess = materialMapper.update(new Material(), updateWrapper); |
| | | if (isDeleteSuccess == 1){ |
| | | List<Integer> isDeleteStandard = standardService.deleteStandardsInformation(materialId); |
| | | if (!ObjectUtils.isEmpty(isDeleteStandard)){ |
| | | List<Integer> idDeleteSpecifications = specificationsService.StandardIdDeleteSpecifications(isDeleteStandard); |
| | | if (!ObjectUtils.isEmpty(idDeleteSpecifications)){ |
| | | productService.deleteProductInformation(idDeleteSpecifications); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public Integer addMaterialInformation(AddMaterialDto addMaterialDto) { |
| | | Material material = new Material() |
| | | .setCode("BZ" + IdWorker.getIdStr()) |
| | | .setName(addMaterialDto.getMaterialName()) |
| | | .setType(addMaterialDto.getType()); |
| | | int isInsertSuccess = materialMapper.insert(material); |
| | | if (isInsertSuccess > 0){ |
| | | Standard standard = new Standard() |
| | | .setMaterialId(material.getId()) |
| | | .setName(addMaterialDto.getStandardName()); |
| | | boolean save = standardService.save(standard); |
| | | if (save){ |
| | | Specifications specifications = new Specifications() |
| | | .setName(addMaterialDto.getSpecificationsName()) |
| | | .setStandardId(standard.getId()); |
| | | boolean save1 = specificationsService.save(specifications); |
| | | if (save1) |
| | | return 1; |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getFourLevelInformation(String specificationName) { |
| | | return materialMapper.FourTree(specificationName); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.Product; |
| | | import com.yuanchu.limslaboratory.mapper.ProductMapper; |
| | | import com.yuanchu.limslaboratory.service.ProductService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-17 |
| | | */ |
| | | @Service |
| | | public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService { |
| | | |
| | | @Resource |
| | | private ProductMapper productMapper; |
| | | |
| | | @Override |
| | | public void deleteProductInformation(List<Integer> SpecificationsId) { |
| | | for (Integer materialId : SpecificationsId){ |
| | | LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<>(); |
| | | wrapper.eq(Product::getSpecifications_id, materialId); |
| | | wrapper.set(Product::getState, 0); |
| | | productMapper.update(new Product(), wrapper); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public IPage<Map<String, Object>> pageProductInformation(String productCodeOrName, Integer specificationsId, Page<Objects> page) { |
| | | IPage<Map<String, Object>> iPage = productMapper.pageProductInformation(productCodeOrName, specificationsId, page); |
| | | List<Map<String, Object>> maps = iPage.getRecords(); |
| | | maps.forEach(map -> { |
| | | int num = Integer.parseInt(map.get("num").toString()); |
| | | boolean children = false; |
| | | if (num > 1){ |
| | | children = true; |
| | | } else { |
| | | Map<String, Object> product = productMapper.selectOneChildren(map.get("father")); |
| | | map.putAll(product); |
| | | } |
| | | map.put("children", children); |
| | | map.remove("num"); |
| | | }); |
| | | return iPage; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> pageFatherNameProductInformation(String fatherName) { |
| | | LambdaQueryWrapper<Product> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Product::getFather, fatherName); |
| | | wrapper.select(Product::getId, Product::getName, Product::getUnit, Product::getRequired, Product::getInternal); |
| | | return productMapper.selectMaps(wrapper); |
| | | } |
| | | |
| | | //éè¿é¡¹ç®åæ¥è¯¢é¡¹ç®çè¯éªæ¹æ³ |
| | | @Override |
| | | public List<Map> selectInstrumentByProname(String name) { |
| | | return productMapper.selectInstrumentByProname(name); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.yuanchu.limslaboratory.pojo.Specifications; |
| | | import com.yuanchu.limslaboratory.mapper.SpecificationsMapper; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddSpecifications; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto; |
| | | import com.yuanchu.limslaboratory.service.*; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | @Service |
| | | public class SpecificationsServiceImpl extends ServiceImpl<SpecificationsMapper, Specifications> implements SpecificationsService { |
| | | |
| | | @Resource |
| | | private SpecificationsMapper specificationsMapper; |
| | | |
| | | @Autowired |
| | | private ProductService productService; |
| | | |
| | | @Override |
| | | public Integer deleteSpecifications(Integer specificationsId) { |
| | | LambdaUpdateWrapper<Specifications> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Specifications::getId, specificationsId); |
| | | updateWrapper.set(Specifications::getState, 0); |
| | | List<Integer> list = new ArrayList<>(); |
| | | list.add(specificationsId); |
| | | int isDeleteSuccess = specificationsMapper.update(new Specifications(), updateWrapper); |
| | | if (isDeleteSuccess == 1){ |
| | | productService.deleteProductInformation(list); |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<Integer> StandardIdDeleteSpecifications(List<Integer> deleteStandard) { |
| | | List<Integer> list = new ArrayList<>(); |
| | | for (Integer standard : deleteStandard){ |
| | | LambdaQueryWrapper<Specifications> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Specifications::getStandardId, standard); |
| | | wrapper.select(Specifications::getId); |
| | | List<Specifications> maps1 = specificationsMapper.selectList(wrapper); |
| | | for (Specifications specifications:maps1){ |
| | | LambdaUpdateWrapper<Specifications> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Specifications::getId, specifications.getId()); |
| | | updateWrapper.set(Specifications::getState, 0); |
| | | specificationsMapper.update(new Specifications(), updateWrapper); |
| | | list.add(specifications.getId()); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public Integer addSpecificationsInformation(AddSpecifications addStandardDto) { |
| | | Specifications specifications = new Specifications() |
| | | .setName(addStandardDto.getSpecificationsName()) |
| | | .setStandardId(addStandardDto.getStandardId()); |
| | | return specificationsMapper.insert(specifications); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.yuanchu.limslaboratory.mapper.StandardMapper; |
| | | import com.yuanchu.limslaboratory.pojo.Material; |
| | | import com.yuanchu.limslaboratory.pojo.Specifications; |
| | | import com.yuanchu.limslaboratory.pojo.Standard; |
| | | import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto; |
| | | import com.yuanchu.limslaboratory.service.*; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-11 |
| | | */ |
| | | @Service |
| | | public class StandardServiceImpl extends ServiceImpl<StandardMapper, Standard> implements StandardService { |
| | | |
| | | @Resource |
| | | private StandardMapper standardMapper; |
| | | |
| | | @Lazy |
| | | @Autowired |
| | | private SpecificationsService specificationsService; |
| | | |
| | | @Autowired |
| | | private ProductService productService; |
| | | |
| | | |
| | | @Override |
| | | public List<Integer> deleteStandardsInformation(Integer materialId) { |
| | | LambdaQueryWrapper<Standard> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(Standard::getMaterialId, materialId); |
| | | wrapper.select(Standard::getId); |
| | | List<Integer> list = new ArrayList<>(); |
| | | List<Standard> standards = standardMapper.selectList(wrapper); |
| | | for (Standard standard : standards){ |
| | | LambdaUpdateWrapper<Standard> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Standard::getMaterialId, materialId); |
| | | updateWrapper.set(Standard::getState, 0); |
| | | standardMapper.update(new Standard(), updateWrapper); |
| | | list.add(standard.getId()); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public Integer deleteStandardInformation(Integer standardsId) { |
| | | LambdaUpdateWrapper<Standard> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(Standard::getId, standardsId); |
| | | updateWrapper.set(Standard::getState, 0); |
| | | List<Integer> list = new ArrayList<>(); |
| | | int isDeleteSuccess = standardMapper.update(new Standard(), updateWrapper); |
| | | if (isDeleteSuccess == 1){ |
| | | list.add(standardsId); |
| | | List<Integer> idDeleteSpecifications = specificationsService.StandardIdDeleteSpecifications(list); |
| | | if (!ObjectUtils.isEmpty(idDeleteSpecifications)){ |
| | | productService.deleteProductInformation(idDeleteSpecifications); |
| | | } |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public Integer addStandardInformation(AddStandardDto addStandardDto) { |
| | | Standard standard = new Standard() |
| | | .setMaterialId(addStandardDto.getMaterialId()) |
| | | .setName(addStandardDto.getStandardName()); |
| | | int save = standardMapper.insert(standard); |
| | | if (save == 1){ |
| | | Specifications specifications = new Specifications() |
| | | .setName(addStandardDto.getSpecificationsName()) |
| | | .setStandardId(standard.getId()); |
| | | boolean save1 = specificationsService.save(specifications); |
| | | if (save1) |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getSpecificationIdAndName(String materialId) { |
| | | return standardMapper.getSpecificationIdAndName(materialId); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.MaterialMapper"> |
| | | |
| | | <select id="selectMaterialLimit" resultType="Map"> |
| | | select id,code, name |
| | | from lims_laboratory.material |
| | | where state = 1 |
| | | and type = #{type} |
| | | order by create_time desc |
| | | limit #{num1},#{num2} |
| | | </select> |
| | | <select id="selectMaterialById" resultType="Map"> |
| | | select m.id, |
| | | m.num, |
| | | m.supplier, |
| | | m.name, |
| | | m.location, |
| | | m.batch, |
| | | m.reel_number reelNumber, |
| | | concat(s.name, '/', sn.name) specificationSerialNum, |
| | | s.voltage_level voltageLevel, |
| | | s.cross_section crossSection, |
| | | s.number_of_cores numberOfCores, |
| | | s.instruct |
| | | from lims_laboratory.material m, |
| | | lims_laboratory.specifications s, |
| | | lims_laboratory.serial_number sn |
| | | where m.specifications_id = s.id |
| | | and s.serial_id = sn.id |
| | | and m.id=#{materialId} |
| | | </select> |
| | | |
| | | <resultMap id="OneLevelTreeMap" type="Map"> |
| | | <id property="id" column="materialId"/> |
| | | <result property="name" column="materialName"/> |
| | | <collection property="children" resultMap="TwoLevelTreeMap" javaType="List"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="TwoLevelTreeMap" type="Map"> |
| | | <id property="id" column="standardId"/> |
| | | <result property="name" column="standardName"/> |
| | | <collection property="children" resultMap="ThreeLevelTreeMap" javaType="List"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="ThreeLevelTreeMap" type="Map"> |
| | | <id property="id" column="specificationsId"/> |
| | | <result property="name" column="specificationsName"/> |
| | | <collection property="children" resultMap="FourLevelTreeMap" javaType="List"/> |
| | | </resultMap> |
| | | |
| | | <resultMap id="FourLevelTreeMap" type="Map"> |
| | | <id property="id" column="productId"/> |
| | | <result property="name" column="productName"/> |
| | | </resultMap> |
| | | |
| | | <select id="FourTree" resultMap="OneLevelTreeMap"> |
| | | SELECT m.`id` materialId, m.`name` materialName, s.`id` standardId, s.`name` standardName, |
| | | f.`id` specificationsId, f.`name` specificationsName, p.`id` productId, p.`name` productName |
| | | FROM material m |
| | | LEFT JOIN (SELECT s.`id`, s.`name`, s.`material_id` FROM standard s WHERE s.`state` = 1) s ON m.id = s.`material_id` |
| | | LEFT JOIN (SELECT f.`id`, f.`name`, f.`standard_id` FROM specifications f WHERE f.`state` = 1 |
| | | <if test="specificationsName != null and specificationsName != ''"> |
| | | AND f.`name` = #{specificationsName} |
| | | </if> |
| | | ) f ON s.`id` = f.`standard_id` |
| | | LEFT JOIN (SELECT p.`id`, p.`name`, p.`specifications_id` FROM product p WHERE p.`state` = 1) p ON f.`id` = p.`specifications_id` |
| | | WHERE m.`state` = 1 |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.ProductMapper"> |
| | | |
| | | <select id="pageProductInformation" resultType="map"> |
| | | SELECT COUNT(1) num, p.`father` |
| | | FROM product p |
| | | WHERE p.`specifications_id` = #{specificationsId} |
| | | <if test="productCodeOrName != null and productCodeOrName != ''"> |
| | | AND p.`father` = #{productCodeOrName} |
| | | </if> |
| | | GROUP BY p.`father` |
| | | </select> |
| | | |
| | | <select id="selectOneChildren" resultType="map"> |
| | | SELECT p.`id`, p.`name`, p.`unit`, p.`required`, p.`internal` |
| | | FROM product p |
| | | WHERE p.`father` = #{father} |
| | | </select> |
| | | <select id="selectProductByMaterialId" resultType="Map"> |
| | | select p.name,unit,required,internal |
| | | from lims_laboratory.product p, |
| | | lims_laboratory.specifications sp, |
| | | lims_laboratory.standard st |
| | | where specifications_id=sp.id |
| | | and standard=st.id |
| | | and material_id=#{materialId} |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.SpecificationsMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.StandardMapper"> |
| | | |
| | | <resultMap id="BaseResultMap" type="java.util.Map"> |
| | | <id property="specificationsId" column="specificationsId" jdbcType="INTEGER"/> |
| | | <result property="specificationsName" column="specificationsName" jdbcType="VARCHAR"/> |
| | | <collection property="children" resultMap="BaseResultMapChildren" javaType="java.util.List"/> |
| | | </resultMap> |
| | | <resultMap id="BaseResultMapChildren" type="java.util.Map"> |
| | | <id property="modelId" column="modelId" jdbcType="INTEGER"/> |
| | | <result property="modelName" column="modelName" jdbcType="VARCHAR"/> |
| | | </resultMap> |
| | | |
| | | <select id="getSpecificationIdAndName" resultMap="BaseResultMap"> |
| | | SELECT s.`id` specificationsId, s.`name` specificationsName, f.id modelId, f.name modelName |
| | | FROM standard s |
| | | LEFT JOIN (SELECT f.`id`, f.`name`, f.`standard_id` FROM specifications f WHERE f.`state` = 1) f |
| | | ON s.`id` = f.`standard_id` |
| | | WHERE s.`material_id` = #{materialId} |
| | | AND s.`state` = 1 |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <groupId>com.yuanchu</groupId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | </parent> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>sys</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>sys</name> |
| | | <description>sys</description> |
| | | |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <!--åºç¡æ¡æ¶ç±»--> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>framework</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <!--ç¨æ·æå¡æ¨¡å--> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>user-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <!--æ ååºæ¨¡å--> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>standard-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <!--æ£éªæ¨¡å--> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>inspection-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <!--å®éªå®¤æ¨¡å--> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>laboratory-server</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <!--druid--> |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>druid</artifactId> |
| | | </dependency> |
| | | |
| | | <!--mybatis-plus代ç çæå¨--> |
| | | <dependency> |
| | | <groupId>com.baomidou</groupId> |
| | | <artifactId>mybatis-plus-generator</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- framework: mybatis-plus代ç çæéè¦ä¸ä¸ªæ¨¡æ¿å¼æ --> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-freemarker</artifactId> |
| | | </dependency> |
| | | |
| | | <!--mysql--> |
| | | <dependency> |
| | | <groupId>mysql</groupId> |
| | | <artifactId>mysql-connector-java</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory; |
| | | |
| | | import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.generator.FastAutoGenerator; |
| | | import com.baomidou.mybatisplus.generator.config.*; |
| | | import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; |
| | | |
| | | import java.util.Collections; |
| | | import java.util.Scanner; |
| | | |
| | | // æ¼ç¤ºä¾åï¼æ§è¡ main æ¹æ³æ§å¶å°è¾å
¥æ¨¡å表åå车èªå¨çæå¯¹åºé¡¹ç®ç®å½ä¸ |
| | | public class CodeGenerator { |
| | | |
| | | public static String database_url = "jdbc:mysql://localhost:3306/mom_ocean?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai"; |
| | | public static String database_username = "root"; |
| | | public static String database_password= "123456"; |
| | | public static String author = "æ±èéµ·éç½ç»ç§ææéå
¬å¸"; |
| | | public static String model_name = "/inspect-server"; // å¦æä¸ºåå¸å¼å¡«å模ååç§°ï¼å¦æä¸æ¯åå¸å¼ä¸ºç©ºå³å¯ |
| | | public static String setParent = "com.yuanchu.mom"; // å
è·¯å¾ |
| | | public static void main(String[] args) { |
| | | String projectPath = System.getProperty("user.dir"); |
| | | System.out.println(projectPath+"==================="); |
| | | FastAutoGenerator.create(database_url, database_username, database_password) |
| | | // å
¨å±é
ç½® |
| | | .globalConfig(builder -> { |
| | | builder.author(author) // 设置ä½è
|
| | | .commentDate("yyyy-MM-dd hh:mm:ss") //æ³¨éæ¥æ |
| | | .outputDir(projectPath + model_name + "/src/main/java") // æå®è¾åºç®å½ |
| | | .disableOpenDir() //ç¦æ¢æå¼è¾åºç®å½ï¼é»è®¤æå¼ |
| | | ; |
| | | }) |
| | | // å
é
ç½® |
| | | .packageConfig(builder -> { |
| | | builder.entity("pojo"); |
| | | builder.parent(setParent) // 设置ç¶å
å |
| | | .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + model_name + "/src/main/resources/mapper")); // 设置mapperXmlçæè·¯å¾ |
| | | }) |
| | | // çç¥é
ç½® |
| | | .strategyConfig(builder -> { |
| | | builder.addInclude(scanner("表åï¼å¤ä¸ªç©ºæ ¼åå²").split(" ")) // 设置éè¦çæç表å |
| | | .addTablePrefix("sys_") // è®¾ç½®è¿æ»¤è¡¨åç¼ |
| | | // Entity çç¥é
ç½® |
| | | .entityBuilder() |
| | | .enableLombok() //å¼å¯ Lombok |
| | | .naming(NamingStrategy.underline_to_camel) //æ°æ®åºè¡¨æ å°å°å®ä½çå½åçç¥ï¼ä¸åçº¿è½¬é©¼å³°å½ |
| | | .columnNaming(NamingStrategy.underline_to_camel) //æ°æ®åºè¡¨å段æ å°å°å®ä½çå½åçç¥ï¼ä¸åçº¿è½¬é©¼å³°å½ |
| | | // Mapper çç¥é
ç½® |
| | | .mapperBuilder() |
| | | .enableFileOverride() // è¦çå·²çææä»¶ |
| | | // Service çç¥é
ç½® |
| | | .serviceBuilder() |
| | | .enableFileOverride() // è¦çå·²çææä»¶ |
| | | .formatServiceFileName("%sService") //æ ¼å¼å service æ¥å£æä»¶åç§°ï¼%sè¿è¡å¹é
表åï¼å¦ UserService |
| | | .formatServiceImplFileName("%sServiceImpl") //æ ¼å¼å service å®ç°ç±»æä»¶åç§°ï¼%sè¿è¡å¹é
表åï¼å¦ UserServiceImpl |
| | | // Controller çç¥é
ç½® |
| | | .controllerBuilder() |
| | | .enableFileOverride() // è¦çå·²çææä»¶ |
| | | ; |
| | | }) |
| | | .execute(); |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * è¯»åæ§å¶å°å
容 |
| | | * </p> |
| | | */ |
| | | public static String scanner(String tip) { |
| | | Scanner scanner = new Scanner(System.in); |
| | | StringBuilder help = new StringBuilder(); |
| | | help.append("请è¾å
¥" + tip + "ï¼"); |
| | | System.out.println(help.toString()); |
| | | if (scanner.hasNext()) { |
| | | String ipt = scanner.next(); |
| | | |
| | | if (StringUtils.isNotBlank(ipt)) { |
| | | return ipt; |
| | | } |
| | | } |
| | | throw new MybatisPlusException("请è¾å
¥æ£ç¡®ç" + tip + "ï¼"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory; |
| | | |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springframework.boot.SpringApplication; |
| | | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| | | import org.springframework.cloud.openfeign.EnableFeignClients; |
| | | |
| | | @SpringBootApplication |
| | | @MapperScan("com.yuanchu.limslaboratory.mapper")// æ«æMybatisä¸çmapperå
|
| | | @EnableFeignClients("com.yuanchu.limslaboratory.clients") // æ«æfeignæ¥å£æå¨å
éè¦ |
| | | public class SysApplication { |
| | | |
| | | public static void main(String[] args) { |
| | | SpringApplication.run(SysApplication.class, args); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.backup; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.*; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | |
| | | @Component |
| | | @EnableScheduling |
| | | @Slf4j |
| | | public class MysqlDataBackup { |
| | | /** |
| | | * æ°æ®åºçæ¬æ¯å¦ä¸º 8.0 + ï¼false=å¦ true=æ¯ï¼ï¼ mysql8+ éè¦åæ° --column-statistics=0 ï¼ mysql8- ä¸éè¦ |
| | | */ |
| | | Boolean isDbVersion8 = false; |
| | | |
| | | /** |
| | | * å¤ä»½å½ä»¤ |
| | | * USERNAME è´¦å· |
| | | * PASSWORD å¯ç |
| | | * SERVERPATH æå¡å¨IP/åå |
| | | * DBNAME æ°æ®åºåç§° |
| | | * FILEPATH å¤ä»½æä»¶åæ¾å°å+åç§° |
| | | * 说æ |
| | | * cmdCompression ï¼ éå缩 ï¼æ¬å°ææå¡å¨éå®è£
mysqldump å½ä»¤(å®è£
mysqlèªå¸¦æ£ç¬ç«å®è£
) + gzip å½ä»¤(ç¬ç«å®è£
)ï¼ |
| | | * cmd ï¼ ä¸å缩 (æ¬å°ææå¡å¨éå®è£
mysqldump å½ä»¤(å®è£
mysqlèªå¸¦æ£ç¬ç«å®è£
) |
| | | * --column-statistics=0 mysql8 æ·»å è¯¥åæ°, émysql8 䏿·»å , å¦åå°åºé |
| | | */ |
| | | String cmdMysql8 = "mysqldump --column-statistics=0 -u{USERNAME} -p{PASSWORD} -h{SERVERPATH} -P3306 --databases {DBNAME}"; // > {FILEPATH}.sql |
| | | String cmd = "mysqldump -u{USERNAME} -p{PASSWORD} -h{SERVERPATH} -P3306 --databases {DBNAME}"; // > {FILEPATH}.sql |
| | | |
| | | /** |
| | | * å¤ä»½ sql åæ¾ç®å½(ç¸å¯¹è·¯å¾, 注æå¯è½éè¦å¨ MvcConfig é
ç½®è®¿é®æé) |
| | | */ |
| | | @Value("${backup.path}") |
| | | private String filePath; |
| | | |
| | | @Value("${spring.datasource.url}") |
| | | private String dbUrl; |
| | | |
| | | @Value("${spring.datasource.username}") |
| | | private String dbUserName; |
| | | |
| | | @Value("${spring.datasource.password}") |
| | | private String dbPassWord; |
| | | |
| | | @Value("${backup.destiny}") |
| | | private Integer destiny; |
| | | |
| | | @Value("${backup.mysqldump}") |
| | | private String mysqldump; |
| | | |
| | | /** |
| | | * æ¯å¤©æä¸23ç¹05ç§æ§è¡ ã 0 0 4 1/1 * ? ã |
| | | * æµè¯ 20 ç§ä¸æ¬¡ã 0/20 * * * * ? ã@Scheduled(cron = "5 * 23 * * ?") |
| | | */ |
| | | @Scheduled(cron = "5 0 23 * * ?") |
| | | private void configureTasks() { |
| | | log.info("ãå¤ä»½æ°æ®åºã--START"); |
| | | String dbUrl2 = dbUrl.replace("jdbc:mysql://", ""); |
| | | |
| | | // è·åæ°æ®åºåç§° |
| | | String dbName = dbUrl2.substring(dbUrl2.lastIndexOf("/") + 1, dbUrl2.indexOf("?")); |
| | | // è·åæ°æ®åºå°å |
| | | String serverPath = dbUrl2.substring(0, dbUrl2.lastIndexOf(":")); |
| | | // æ°æ®åºè´¦å· |
| | | String username = dbUserName; |
| | | // æ°æ®åºå¯ç |
| | | String password = dbPassWord; |
| | | |
| | | // å¤ä»½æä»¶ç®å½+åç§° å¤ä»½æä»¶åæ¾ç®å½+åç§°(åç§° = æ°æ®åºå+æ¶é´å符串.sql) |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | String format = simpleDateFormat.format(new Date()); |
| | | String timeStr = format |
| | | .replaceAll("-", "_") |
| | | .replaceAll(" ", "_") |
| | | .replaceAll(":", ""); |
| | | timeStr = timeStr.substring(0, 15); |
| | | String pathFileName = filePath + "/" + dbName + "_" + timeStr + ".sql"; |
| | | String newCmd = ""; |
| | | if (isDbVersion8) { |
| | | newCmd = cmdMysql8; |
| | | } else { |
| | | newCmd = cmd; |
| | | } |
| | | // æ§è¡å½ä»¤ |
| | | newCmd = newCmd.replace("{USERNAME}", username) |
| | | .replace("{PASSWORD}", password) |
| | | .replace("{SERVERPATH}", serverPath) |
| | | .replace("{DBNAME}", dbName) |
| | | .replace("{FILEPATH}", pathFileName); |
| | | PrintWriter printWriter = null; |
| | | BufferedReader bufferedReader = null; |
| | | try { |
| | | // åå»ºåæ¾sqlçæä»¶ |
| | | existsFile(new File(pathFileName)); |
| | | printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(pathFileName), "utf8")); |
| | | Process process = null; |
| | | String property = System.getProperty("os.name"); |
| | | System.out.println(property); |
| | | if (property.indexOf("Linux") != -1) { |
| | | // linux |
| | | process = Runtime.getRuntime().exec(new String[]{"bash", "-c", newCmd}); |
| | | } else { |
| | | // æ¬å°win |
| | | String mysqldumpPath = "cmd /c " + mysqldump + "/" + newCmd; |
| | | System.out.println(mysqldumpPath); |
| | | process = Runtime.getRuntime().exec(mysqldumpPath); |
| | | } |
| | | InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8"); |
| | | bufferedReader = new BufferedReader(inputStreamReader); |
| | | String line; |
| | | while ((line = bufferedReader.readLine()) != null) { |
| | | printWriter.println(line); |
| | | } |
| | | // æ¤æ¬¡ä¼æ§è¡è¿é¿æ¶é´,ç´å°å¤ä»½å®æ |
| | | printWriter.flush(); |
| | | printWriter.close(); |
| | | //0 è¡¨ç¤ºçº¿ç¨æ£å¸¸ç»æ¢ã |
| | | if (process.waitFor() == 0) { |
| | | // çº¿ç¨æ£å¸¸æ§è¡ |
| | | log.info("ãå¤ä»½æ°æ®åºãSUCCESSï¼SQLæä»¶ï¼{}", pathFileName); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.info("ãå¤ä»½æ°æ®åºãFAILURE"); |
| | | } finally { |
| | | try { |
| | | if (bufferedReader != null) { |
| | | bufferedReader.close(); |
| | | } |
| | | if (printWriter != null) { |
| | | printWriter.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | log.info("ãå¤ä»½æ°æ®åºã--END"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¯å¤©æä¸23ç¹0å10ç§æ§è¡ ã 0 0 4 1/1 * ? ã |
| | | * æµè¯ 20 ç§ä¸æ¬¡ã 0/20 * * * * ? ã |
| | | */ |
| | | @Scheduled(cron = "6 0 23 * * ?") |
| | | private void TimerDeleteFile(){ |
| | | Date date = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("d"); |
| | | Integer currentDay = Integer.valueOf(sdf.format(date)); |
| | | File file = new File(filePath); |
| | | File[] files = file.listFiles(); |
| | | if (files != null) { |
| | | for(File f : files){ |
| | | if(f.isFile()){//è¥æ¯æä»¶ï¼ç´æ¥æå° |
| | | String[] splitFile = f.getName().split("_"); |
| | | Integer fileDay = Integer.valueOf(splitFile[splitFile.length - 2]); |
| | | Integer i = currentDay - fileDay; |
| | | if (i.equals(destiny)){ |
| | | f.delete(); |
| | | log.info("å¤ä»½sqlæä»¶è¿å¤è¿è¡å é¤ï¼"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 夿æä»¶æ¯å¦åå¨ï¼ä¸åå¨å建 |
| | | */ |
| | | private static void existsFile(File file) { |
| | | // 夿æä»¶è·¯å¾æ¯å¦åå¨,ä¸å卿°å»º |
| | | if (!file.getParentFile().exists()) { |
| | | file.getParentFile().mkdirs(); |
| | | } |
| | | if (!file.exists()) { |
| | | try { |
| | | file.createNewFile(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | swagger: |
| | | enabled: true |
| | | |
| | | # æ¥å¿é
ç½® |
| | | logging: |
| | | config: classpath:logback-spring.xml |
| | | # æ¥å¿åå¨è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | file-location: log |
| | | |
| | | # æ°æ®åºå¤ä»½è·¯å¾ |
| | | backup: |
| | | # æ°æ®åºå¤ä»½è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | path: E:/webapp/backup |
| | | # æ°æ®åºå¤ä»½å¤©æ° |
| | | destiny: 7 |
| | | # æ°æ®åºå¤ä»½å·¥å
·è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | mysqldump: E:\JavaCode\WMS\WMS_Admin\src\main\resources |
| | | |
| | | # ç
§çåå¨è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | file: |
| | | path: E:/webapp/images |
| | | # ä¸ä¼ æä»¶å
è®¸çæ©å±å |
| | | allowed: png,jpg,jpeg,gif |
| | | |
| | | # éµ·é管çç³»ç»å¯é¥ |
| | | login: |
| | | userID: c8b1aaacec366c24e5d18c7eea9e551b |
| | | secret: 701C85FCE0F7CFD714C2052D77098DC7f407b0ee79210bcef51787a0eb8ec7a5 |
| | | |
| | | # éµ·éç½ç»IPæè
åå |
| | | customer: |
| | | url: http://114.132.189.42:8011 |
| | | |
| | | mybatis-plus: |
| | | configuration: |
| | | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # å¼å¯mybatis-plusæ¥å¿ |
| | | |
| | | # æ°æ®æºé
ç½® |
| | | spring: |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | url: jdbc:mysql://localhost:3306/lims_laboratory?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: 123456 |
| | | druid: |
| | | # Druidæ°æ®æºé
ç½® |
| | | initialSize: 5 # åå§è¿æ¥æ° |
| | | minIdle: 10 # æå°è¿æ¥æ± æ°é |
| | | maxActive: 20 # æå¤§è¿æ¥æ± æ°é |
| | | maxWait: 60000 # é
ç½®è·åè¿æ¥çå¾
è¶
æ¶çæ¶é´ |
| | | timeBetweenEvictionRunsMillis: 60000 # é
ç½®é´éå¤ä¹
æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å
³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ |
| | | minEvictableIdleTimeMillis: 300000 # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | maxEvictableIdleTimeMillis: 900000 # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | validationQuery: SELECT 1 FROM DUAL # é
ç½®æ£æµè¿æ¥æ¯å¦ææ |
| | | testWhileIdle: true #ç³è¯·è¿æ¥çæ¶åæ£æµï¼å¦æç©ºé²æ¶é´å¤§äºtimeBetweenEvictionRunsMillisï¼æ§è¡validationQueryæ£æµè¿æ¥æ¯å¦ææã |
| | | testOnBorrow: false #é
ç½®ä»è¿æ¥æ± è·åè¿æ¥æ¶ï¼æ¯å¦æ£æ¥è¿æ¥æææ§ï¼trueæ¯æ¬¡é½æ£æ¥ï¼false䏿£æ¥ãåäºè¿ä¸ªé
ç½®ä¼é使§è½ã |
| | | testOnReturn: false #é
ç½®åè¿æ¥æ± å½è¿è¿æ¥æ¶ï¼æ¯å¦æ£æ¥è¿æ¥æææ§ï¼trueæ¯æ¬¡é½æ£æ¥ï¼false䏿£æ¥ãåäºè¿ä¸ªé
ç½®ä¼é使§è½ã |
| | | poolPreparedStatements: true #æå¼PsCacheï¼å¹¶ä¸æå®æ¯ä¸ªè¿æ¥ä¸PSCacheçå¤§å° |
| | | maxPoolPreparedStatementPerConnectionSize: 20 |
| | | filters: stat,wall,log4j # é
ç½®çæ§ç»è®¡æ¦æªçfiltersï¼å»æåçæ§çé¢sqlæ æ³ç»è®¡ï¼'wall'ç¨äºé²ç«å¢ |
| | | useGlobalDataSourceStat: true #åå¹¶å¤ä¸ªDruidDatasourceççæ§æ°æ® |
| | | connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500; #éè¿connectProperties屿§æ¥æå¼mergesqlåè½ç½æ
¢sQLè®°å½ |
| | | redis: |
| | | # redisæ°æ®åºç´¢å¼(é»è®¤ä¸º0)ï¼æä»¬ä½¿ç¨ç´¢å¼ä¸º3çæ°æ®åºï¼é¿å
åå
¶ä»æ°æ®åºå²çª |
| | | database: 0 |
| | | # redisæå¡å¨å°åï¼é»è®¤ä¸ºlocalhostï¼ |
| | | host: localhost |
| | | # redis端å£ï¼é»è®¤ä¸º6379ï¼ |
| | | port: 6380 |
| | | # redis访é®å¯ç ï¼é»è®¤ä¸ºç©ºï¼ |
| | | password: null |
| | | # redisè¿æ¥è¶
æ¶æ¶é´ï¼å使¯«ç§ï¼ |
| | | timeout: 5 |
| | | # redisè¿æ¥æ± é
ç½® |
| | | pool: |
| | | # æå¤§å¯ç¨è¿æ¥æ°ï¼é»è®¤ä¸º8ï¼è´æ°è¡¨ç¤ºæ éï¼ |
| | | max-active: 8 |
| | | # æå¤§ç©ºé²è¿æ¥æ°ï¼é»è®¤ä¸º8ï¼è´æ°è¡¨ç¤ºæ éï¼ |
| | | max-idle: 8 |
| | | # æå°ç©ºé²è¿æ¥æ°ï¼é»è®¤ä¸º0ï¼è¯¥å¼åªæä¸ºæ£æ°ææç¨ï¼ |
| | | min-idle: 0 |
| | | # ä»è¿æ¥æ± ä¸è·åè¿æ¥æå¤§çå¾
æ¶é´ï¼é»è®¤ä¸º-1ï¼åä½ä¸ºæ¯«ç§ï¼è´æ°è¡¨ç¤ºæ éï¼ |
| | | max-wait: -1 |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | swagger: |
| | | enabled: false |
| | | |
| | | # æ¥å¿é
ç½® |
| | | logging: |
| | | config: classpath:logback-spring.xml |
| | | # æ¥å¿åå¨è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | file-location: /javaWork/LIMS/log |
| | | |
| | | # æ°æ®åºå¤ä»½è·¯å¾ |
| | | backup: |
| | | # æ°æ®åºå¤ä»½è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | path: /javaWork/LIMS/backup |
| | | # æ°æ®åºå¤ä»½å¤©æ°+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | destiny: 7 |
| | | # æ°æ®åºå¤ä»½å·¥å
·è·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | mysqldump: /javaWork/LIMS/conf |
| | | |
| | | # ç
§çè·¯å¾+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | file: |
| | | path: /javaWork/LIMS/images |
| | | # ä¸ä¼ æä»¶å
è®¸çæ©å±å |
| | | allowed: png,jpg,jpeg,gif |
| | | |
| | | # éµ·éç½ç»IPæè
åå+++++++++++++++++++++++++++è¿ç»´éè¦é
ç½®+++++++++++++++++++++++++++ |
| | | customer: |
| | | url: http://114.132.189.42:8011 |
| | | |
| | | login: |
| | | userID: c8b1aaacec366c24e5d18c7eea9e551b |
| | | secret: 701C85FCE0F7CFD714C2052D77098DC7f407b0ee79210bcef51787a0eb8ec7a5 |
| | | |
| | | mybatis-plus: |
| | | configuration: |
| | | log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl # å
³émybatis-plusæ¥å¿ |
| | | |
| | | # æ°æ®æºé
ç½® |
| | | spring: |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.jdbc.Driver |
| | | url: jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 |
| | | username: root |
| | | password: 123456 |
| | | druid: |
| | | # Druidæ°æ®æºé
ç½® |
| | | initialSize: 5 # åå§è¿æ¥æ° |
| | | minIdle: 10 # æå°è¿æ¥æ± æ°é |
| | | maxActive: 20 # æå¤§è¿æ¥æ± æ°é |
| | | maxWait: 60000 # é
ç½®è·åè¿æ¥çå¾
è¶
æ¶çæ¶é´ |
| | | timeBetweenEvictionRunsMillis: 60000 # é
ç½®é´éå¤ä¹
æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å
³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ |
| | | minEvictableIdleTimeMillis: 300000 # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | maxEvictableIdleTimeMillis: 900000 # é
ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ |
| | | validationQuery: SELECT 1 FROM DUAL # é
ç½®æ£æµè¿æ¥æ¯å¦ææ |
| | | testWhileIdle: true #ç³è¯·è¿æ¥çæ¶åæ£æµï¼å¦æç©ºé²æ¶é´å¤§äºtimeBetweenEvictionRunsMillisï¼æ§è¡validationQueryæ£æµè¿æ¥æ¯å¦ææã |
| | | testOnBorrow: false #é
ç½®ä»è¿æ¥æ± è·åè¿æ¥æ¶ï¼æ¯å¦æ£æ¥è¿æ¥æææ§ï¼trueæ¯æ¬¡é½æ£æ¥ï¼false䏿£æ¥ãåäºè¿ä¸ªé
ç½®ä¼é使§è½ã |
| | | testOnReturn: false #é
ç½®åè¿æ¥æ± å½è¿è¿æ¥æ¶ï¼æ¯å¦æ£æ¥è¿æ¥æææ§ï¼trueæ¯æ¬¡é½æ£æ¥ï¼false䏿£æ¥ãåäºè¿ä¸ªé
ç½®ä¼é使§è½ã |
| | | poolPreparedStatements: true #æå¼PsCacheï¼å¹¶ä¸æå®æ¯ä¸ªè¿æ¥ä¸PSCacheçå¤§å° |
| | | maxPoolPreparedStatementPerConnectionSize: 20 |
| | | filters: stat,wall,log4j # é
ç½®çæ§ç»è®¡æ¦æªçfiltersï¼å»æåçæ§çé¢sqlæ æ³ç»è®¡ï¼'wall'ç¨äºé²ç«å¢ |
| | | useGlobalDataSourceStat: true #åå¹¶å¤ä¸ªDruidDatasourceççæ§æ°æ® |
| | | connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500; #éè¿connectProperties屿§æ¥æå¼mergesqlåè½ç½æ
¢sQLè®°å½ |
| | | |
| | | |
| | | redis: |
| | | # redisæ°æ®åºç´¢å¼(é»è®¤ä¸º0)ï¼æä»¬ä½¿ç¨ç´¢å¼ä¸º3çæ°æ®åºï¼é¿å
åå
¶ä»æ°æ®åºå²çª |
| | | database: 0 |
| | | # redisæå¡å¨å°åï¼é»è®¤ä¸ºloaclhostï¼ |
| | | host: 127.0.0.1 |
| | | # redis端å£ï¼é»è®¤ä¸º6379ï¼ |
| | | port: 6379 |
| | | # redis访é®å¯ç ï¼é»è®¤ä¸ºç©ºï¼ |
| | | # password: |
| | | # redisè¿æ¥è¶
æ¶æ¶é´ï¼å使¯«ç§ï¼ |
| | | timeout: 0 |
| | | # redisè¿æ¥æ± é
ç½® |
| | | pool: |
| | | # æå¤§å¯ç¨è¿æ¥æ°ï¼é»è®¤ä¸º8ï¼è´æ°è¡¨ç¤ºæ éï¼ |
| | | max-active: 8 |
| | | # æå¤§ç©ºé²è¿æ¥æ°ï¼é»è®¤ä¸º8ï¼è´æ°è¡¨ç¤ºæ éï¼ |
| | | max-idle: 8 |
| | | # æå°ç©ºé²è¿æ¥æ°ï¼é»è®¤ä¸º0ï¼è¯¥å¼åªæä¸ºæ£æ°ææç¨ï¼ |
| | | min-idle: 0 |
| | | # ä»è¿æ¥æ± ä¸è·åè¿æ¥æå¤§çå¾
æ¶é´ï¼é»è®¤ä¸º-1ï¼åä½ä¸ºæ¯«ç§ï¼è´æ°è¡¨ç¤ºæ éï¼ |
| | | max-wait: -1 |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | server: |
| | | port: 1234 |
| | | |
| | | spring: |
| | | servlet: |
| | | multipart: |
| | | max-file-size: 20MB # å个æä»¶å¤§å° |
| | | max-request-size: 1024MB # 䏿¬¡è¯·æ±æä»¶æ»å¤§å° |
| | | profiles: |
| | | active: dev |
| | | |
| | | mybatis-plus: |
| | | type-aliases-package: com.yuanchu.limslaboratory.pojo |
| | | mapper-locations: classpath*:/mapper/*.xml |
| | | global-config: |
| | | banner: off # å
³émybatis-pluså¯å¨å¾æ |
| | | |
| | | feign: |
| | | client: |
| | | config: |
| | | default: |
| | | connectTimeout: 2000 |
| | | readTimeout: 3000 |
| | | loggerLevel: FULL |
| | | httpclient: |
| | | enabled: false # å
³é httpclient |
| | | okhttp: |
| | | enabled: true # å¼å¯ okhttp |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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="true" scanPeriod="10 seconds"> |
| | | <contextName>logback</contextName> |
| | | |
| | | <!-- nameç弿¯åéçåç§°ï¼valueç弿¶åéå®ä¹çå¼ãéè¿å®ä¹çå¼ä¼è¢«æå
¥å°loggerä¸ä¸æä¸ãå®ä¹åï¼å¯ä»¥ä½¿â${}âæ¥ä½¿ç¨åéã --> |
| | | <springProperty scope="context" name="logs" source="logging.file-location" default="/var/log/myapp"/> |
| | | <property name="log.path" value="${logs}"/> |
| | | |
| | | <!--0. æ¥å¿æ ¼å¼åé¢è²æ¸²æ --> |
| | | <!-- å½©è²æ¥å¿ä¾èµç渲æç±» --> |
| | | <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="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
| | | |
| | | <!--1. è¾åºå°æ§å¶å°--> |
| | | <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> |
| | | <!--æ¤æ¥å¿appenderæ¯ä¸ºå¼å使ç¨ï¼åªé
ç½®æåºçº§å«ï¼æ§å¶å°è¾åºçæ¥å¿çº§å«æ¯å¤§äºæçäºæ¤çº§å«çæ¥å¿ä¿¡æ¯--> |
| | | <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
| | | <level>debug</level> |
| | | </filter> |
| | | <encoder> |
| | | <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> |
| | | <!-- 设置å符é --> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | </appender> |
| | | |
| | | <!--2. è¾åºå°ææ¡£--> |
| | | <!-- 2.1 level为 DEBUG æ¥å¿ï¼æ¶é´æ»å¨è¾åº --> |
| | | <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- æ£å¨è®°å½çæ¥å¿ææ¡£çè·¯å¾åææ¡£å --> |
| | | <file>${log.path}/debug.log</file> |
| | | <!--æ¥å¿ææ¡£è¾åºæ ¼å¼--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- 设置å符é --> |
| | | </encoder> |
| | | <!-- æ¥å¿è®°å½å¨çæ»å¨çç¥ï¼ææ¥æï¼æå¤§å°è®°å½ --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- æ¥å¿å½æ¡£ --> |
| | | <fileNamePattern>${log.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--æ¥å¿ææ¡£ä¿ç天æ°--> |
| | | <maxHistory>60</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- æ¤æ¥å¿ææ¡£åªè®°å½debug级å«ç --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>debug</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.2 level为 INFO æ¥å¿ï¼æ¶é´æ»å¨è¾åº --> |
| | | <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- æ£å¨è®°å½çæ¥å¿ææ¡£çè·¯å¾åææ¡£å --> |
| | | <file>${log.path}/info.log</file> |
| | | <!--æ¥å¿ææ¡£è¾åºæ ¼å¼--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> |
| | | </encoder> |
| | | <!-- æ¥å¿è®°å½å¨çæ»å¨çç¥ï¼ææ¥æï¼æå¤§å°è®°å½ --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <!-- æ¯å¤©æ¥å¿å½æ¡£è·¯å¾ä»¥åæ ¼å¼ --> |
| | | <fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--æ¥å¿ææ¡£ä¿ç天æ°--> |
| | | <maxHistory>60</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- æ¤æ¥å¿ææ¡£åªè®°å½info级å«ç --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>info</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.3 level为 WARN æ¥å¿ï¼æ¶é´æ»å¨è¾åº --> |
| | | <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- æ£å¨è®°å½çæ¥å¿ææ¡£çè·¯å¾åææ¡£å --> |
| | | <file>${log.path}/warn.log</file> |
| | | <!--æ¥å¿ææ¡£è¾åºæ ¼å¼--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- æ¤å¤è®¾ç½®å符é --> |
| | | </encoder> |
| | | <!-- æ¥å¿è®°å½å¨çæ»å¨çç¥ï¼ææ¥æï¼æå¤§å°è®°å½ --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <fileNamePattern>${log.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--æ¥å¿ææ¡£ä¿ç天æ°--> |
| | | <maxHistory>60</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- æ¤æ¥å¿ææ¡£åªè®°å½warn级å«ç --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>warn</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.4 level为 ERROR æ¥å¿ï¼æ¶é´æ»å¨è¾åº --> |
| | | <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- æ£å¨è®°å½çæ¥å¿ææ¡£çè·¯å¾åææ¡£å --> |
| | | <file>${log.path}/error.log</file> |
| | | <!--æ¥å¿ææ¡£è¾åºæ ¼å¼--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- æ¤å¤è®¾ç½®å符é --> |
| | | </encoder> |
| | | <!-- æ¥å¿è®°å½å¨çæ»å¨çç¥ï¼ææ¥æï¼æå¤§å°è®°å½ --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--æ¥å¿ææ¡£ä¿ç天æ°--> |
| | | <maxHistory>60</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- æ¤æ¥å¿ææ¡£åªè®°å½ERROR级å«ç --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>ERROR</level> |
| | | <onMatch>ACCEPT</onMatch> |
| | | <onMismatch>DENY</onMismatch> |
| | | </filter> |
| | | </appender> |
| | | |
| | | <!-- 2.5 ææ é¤äºDEBUG级å«çå
¶å®é«äºDEBUGç æ¥å¿ï¼è®°å½å°ä¸ä¸ªæä»¶ --> |
| | | <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| | | <!-- æ£å¨è®°å½çæ¥å¿ææ¡£çè·¯å¾åææ¡£å --> |
| | | <file>${log.path}/all.log</file> |
| | | <!--æ¥å¿ææ¡£è¾åºæ ¼å¼--> |
| | | <encoder> |
| | | <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
| | | <charset>UTF-8</charset> <!-- æ¤å¤è®¾ç½®å符é --> |
| | | </encoder> |
| | | <!-- æ¥å¿è®°å½å¨çæ»å¨çç¥ï¼ææ¥æï¼æå¤§å°è®°å½ --> |
| | | <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| | | <fileNamePattern>${log.path}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
| | | <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
| | | <maxFileSize>100MB</maxFileSize> |
| | | </timeBasedFileNamingAndTriggeringPolicy> |
| | | <!--æ¥å¿ææ¡£ä¿ç天æ°--> |
| | | <maxHistory>60</maxHistory> |
| | | </rollingPolicy> |
| | | <!-- æ¤æ¥å¿ææ¡£è®°å½é¤äºDEBUG级å«çå
¶å®é«äºDEBUGç --> |
| | | <filter class="ch.qos.logback.classic.filter.LevelFilter"> |
| | | <level>DEBUG</level> |
| | | <onMatch>DENY</onMatch> |
| | | <onMismatch>ACCEPT</onMismatch> |
| | | </filter> |
| | | </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="org.springframework.web" level="info"/> |
| | | <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> |
| | | --> |
| | | |
| | | <!-- |
| | | 使ç¨mybatisçæ¶åï¼sqlè¯å¥æ¯debug䏿伿å°ï¼èè¿éæä»¬åªé
ç½®äºinfoï¼æä»¥æ³è¦æ¥çsqlè¯å¥çè¯ï¼æä»¥ä¸ä¸¤ç§æä½ï¼ |
| | | 第ä¸ç§æ<root level="info">æ¹æ<root level="DEBUG">è¿æ ·å°±ä¼æå°sqlï¼ä¸è¿è¿æ ·æ¥å¿é£è¾¹ä¼åºç°å¾å¤å
¶ä»æ¶æ¯ |
| | | 第äºç§å°±æ¯åç¬ç»daoä¸ç®å½é
ç½®debug模å¼ï¼ä»£ç å¦ä¸ï¼è¿æ ·é
ç½®sqlè¯å¥ä¼æå°ï¼å
¶ä»è¿æ¯æ£å¸¸info级å«ï¼ |
| | | ãlogging.level.org.mybatis=debug logging.level.dao=debugã |
| | | --> |
| | | |
| | | <!-- |
| | | rootèç¹æ¯å¿
éèç¹ï¼ç¨æ¥æå®æåºç¡çæ¥å¿è¾åºçº§å«ï¼åªæä¸ä¸ªlevel屿§ |
| | | level:ç¨æ¥è®¾ç½®æå°çº§å«ï¼å¤§å°åæ å
³ï¼TRACE, DEBUG, INFO, WARN, ERROR, ALL å OFFï¼ |
| | | ä¸è½è®¾ç½®ä¸ºINHERITEDæè
åä¹è¯NULLãé»è®¤æ¯DEBUG |
| | | å¯ä»¥å
å«é¶ä¸ªæå¤ä¸ªå
ç´ ï¼æ è¯è¿ä¸ªappenderå°ä¼æ·»å å°è¿ä¸ªloggerã |
| | | --> |
| | | |
| | | |
| | | |
| | | |
| | | <!-- 4 æç»ççç¥ï¼ |
| | | åºæ¬çç¥(root级) + æ ¹æ®profileå¨å¯å¨æ¶, loggeræ ç¾ä¸å®å¶åpackageæ¥å¿çº§å«(ä¼å
级é«äºä¸é¢çroot级)--> |
| | | <springProfile name="dev"> |
| | | <root level="info"> |
| | | <appender-ref ref="CONSOLE" /> |
| | | <appender-ref ref="DEBUG_FILE" /> |
| | | <appender-ref ref="INFO_FILE" /> |
| | | <appender-ref ref="WARN_FILE" /> |
| | | <appender-ref ref="ERROR_FILE" /> |
| | | <appender-ref ref="ALL_FILE" /> |
| | | </root> |
| | | <logger name="com.yuanchu.limslaboratory.SysApplication" level="debug"/> <!-- å¼åç¯å¢, æå®æå
æ¥å¿ä¸ºdebug级 --> |
| | | </springProfile> |
| | | |
| | | <springProfile name="test"> |
| | | <root level="info"> |
| | | <appender-ref ref="CONSOLE" /> |
| | | <appender-ref ref="DEBUG_FILE" /> |
| | | <appender-ref ref="INFO_FILE" /> |
| | | <appender-ref ref="WARN_FILE" /> |
| | | <appender-ref ref="ERROR_FILE" /> |
| | | <appender-ref ref="ALL_FILE" /> |
| | | </root> |
| | | <logger name="com.yuanchu.limslaboratory.SysApplication" level="info"/> <!-- æµè¯ç¯å¢, æå®æå
æ¥å¿ä¸ºinfo级 --> |
| | | </springProfile> |
| | | |
| | | <springProfile name="prod"> |
| | | <root level="info"> |
| | | <!-- ç产ç¯å¢æå¥½ä¸é
ç½®consoleåæä»¶ --> |
| | | <appender-ref ref="DEBUG_FILE" /> |
| | | <appender-ref ref="INFO_FILE" /> |
| | | <appender-ref ref="WARN_FILE" /> |
| | | <appender-ref ref="ERROR_FILE" /> |
| | | <appender-ref ref="ALL_FILE" /> |
| | | </root> |
| | | <logger name="com.yuanchu.limslaboratory" level="warn"/> <!-- ç产ç¯å¢, æå®æå
æ¥å¿ä¸ºwarn级 --> |
| | | <logger name="com.yuanchu.limslaboratory.SysApplication" level="info"/> <!-- ç¹å®æä¸ªç±»æå°infoæ¥å¿, æ¯å¦applicationå¯å¨æååçæç¤ºè¯ --> |
| | | </springProfile> |
| | | |
| | | </configuration> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | @SpringBootTest |
| | | class SysApplicationTests { |
| | | |
| | | @Test |
| | | void contextLoads() { |
| | | String newString = String.format("%06d", 77); |
| | | System.out.println("newString === " + newString); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <parent> |
| | | <artifactId>lims-laboratory</artifactId> |
| | | <groupId>com.yuanchu</groupId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | </parent> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>user-server</artifactId> |
| | | <version>0.0.1-SNAPSHOT</version> |
| | | <name>user-server</name> |
| | | <description>user-server</description> |
| | | |
| | | <packaging>jar</packaging> |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>com.yunchu.limslaboratory</groupId> |
| | | <artifactId>framework</artifactId> |
| | | <version>${project.parent.version}</version> |
| | | </dependency> |
| | | |
| | | <!--feign--> |
| | | <dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-openfeign</artifactId> |
| | | </dependency> |
| | | |
| | | <!--okhttp--> |
| | | <dependency> |
| | | <groupId>io.github.openfeign</groupId> |
| | | <artifactId>feign-okhttp</artifactId> |
| | | </dependency> |
| | | |
| | | <!--å®å
¨æ¡æ¶shiro--> |
| | | <dependency> |
| | | <groupId>org.apache.shiro</groupId> |
| | | <artifactId>shiro-spring-boot-starter</artifactId> |
| | | </dependency> |
| | | |
| | | <!--jwt--> |
| | | <dependency> |
| | | <groupId>com.auth0</groupId> |
| | | <artifactId>java-jwt</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.clients; |
| | | |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @FeignClient(value = "userservice", url = "${customer.url}") |
| | | public interface UserClient { |
| | | |
| | | @PostMapping("/business/login") |
| | | Result<?> BusynessUserLogin(@RequestBody Map<String, Object> mapData); |
| | | |
| | | @PostMapping("/business/code") |
| | | Result<?> BusynessUserLoginToken(@RequestParam("code") String code); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.clients; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.shiro.utils.JwtUtils; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | @Component |
| | | public class UserLoginUtils { |
| | | |
| | | @Resource |
| | | private UserClient userClient; |
| | | |
| | | @Value("${login.userID}") |
| | | private String LoginUserID; |
| | | |
| | | @Value("${login.secret}") |
| | | private String LoginSecret; |
| | | |
| | | public Result<Map<String, Object>> LoginExamine(User user){ |
| | | Map<String, Object> mapData = new HashMap<>(); |
| | | mapData.put("LoginUserID", LoginUserID); |
| | | mapData.put("LoginSecret", LoginSecret); |
| | | Result<?> code = userClient.BusynessUserLogin(mapData); |
| | | if (code.getCode() == 200){ |
| | | Result<?> result = userClient.BusynessUserLoginToken(code.getData().toString()); |
| | | if (result.getCode() == 200){ |
| | | Map data = (Map) result.getData(); |
| | | String token = data.get("token").toString(); |
| | | data.remove("token"); |
| | | HashMap<String, Object> mapRedis = new HashMap<>(); |
| | | mapRedis.put("id", user.getId()); |
| | | mapRedis.put("account", user.getAccount()); |
| | | mapRedis.put("name", user.getName()); |
| | | mapRedis.put("enterpriseId", user.getEnterpriseId()); |
| | | mapRedis.put("data", data); |
| | | //åå
¥redis,äºä¸ªå°æ¶åå é¤ |
| | | RedisUtil.set(token, mapRedis, 120); |
| | | // å°ç¾åç JWT token è¿åç»å端 |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | String refresh = JwtUtils.sign(user.getAccount()); |
| | | map.put("token", token); |
| | | map.put("refresh", refresh); |
| | | RedisUtil.set(user.getAccount(), map, 168); |
| | | return Result.success(map); |
| | | } else { |
| | | return Result.fail(result.getMessage()); |
| | | } |
| | | } else { |
| | | return Result.fail(code.getMessage()); |
| | | } |
| | | } |
| | | |
| | | |
| | | // public Result<Map<String, Object>> LoginExamine(User user){ |
| | | // String token = JwtUtils.sign(user.getAccount()); |
| | | // //åå
¥redis,äºä¸ªå°æ¶åå é¤ |
| | | // RedisUtil.set(token, user, 2); |
| | | // // å°ç¾åç JWT token è¿åç»å端 |
| | | // HashMap<String, Object> map = new HashMap<>(); |
| | | // String refresh = JwtUtils.sign(user.getAccount()); |
| | | // map.put("token", token); |
| | | // map.put("refresh", refresh); |
| | | // RedisUtil.set(user.getAccount(), map, 120); |
| | | // return Result.success(map); |
| | | // } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.config; |
| | | |
| | | |
| | | import feign.Feign; |
| | | import okhttp3.OkHttpClient; |
| | | import org.springframework.boot.autoconfigure.AutoConfigureBefore; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
| | | import org.springframework.cloud.commons.httpclient.OkHttpClientFactory; |
| | | import org.springframework.cloud.openfeign.EnableFeignClients; |
| | | import org.springframework.cloud.openfeign.FeignAutoConfiguration; |
| | | import org.springframework.cloud.openfeign.support.FeignHttpClientProperties; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @Configuration |
| | | @ConditionalOnClass(Feign.class) |
| | | @AutoConfigureBefore(FeignAutoConfiguration.class) |
| | | public class FeignConfig { |
| | | |
| | | private OkHttpClient okHttpClient; |
| | | |
| | | |
| | | //注å
¥okhttp |
| | | @Bean |
| | | public OkHttpClient okHttpClient(OkHttpClientFactory okHttpClientFactory, |
| | | FeignHttpClientProperties httpClientProperties) { |
| | | this.okHttpClient = okHttpClientFactory.createBuilder(httpClientProperties.isDisableSslValidation()).connectTimeout(httpClientProperties.getConnectionTimeout(),TimeUnit.SECONDS) |
| | | .followRedirects(httpClientProperties.isFollowRedirects()) |
| | | .build(); |
| | | return this.okHttpClient; |
| | | } |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/enterprise") |
| | | public class EnterpriseController { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/role") |
| | | public class RoleController { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.clients.UserLoginUtils; |
| | | import com.yuanchu.limslaboratory.pojo.Enterprise; |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import com.yuanchu.limslaboratory.shiro.realm.ShiroRealm; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.utils.SpringUtil; |
| | | import com.yuanchu.limslaboratory.vo.NewPersonnelVo; |
| | | import com.yuanchu.limslaboratory.vo.PagePersonnelVo; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo; |
| | | import io.swagger.annotations.*; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.authc.IncorrectCredentialsException; |
| | | import org.apache.shiro.authc.UnknownAccountException; |
| | | import org.apache.shiro.authc.UsernamePasswordToken; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * å端æ§å¶å¨ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/user") |
| | | @Api(tags = "ç¨æ·æ¨¡å") |
| | | public class UserController { |
| | | |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @ApiOperation("ç¨æ·ç»å½") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "account", value = "è´¦å·", dataTypeClass = String.class, required = true), |
| | | @ApiImplicitParam(name = "password", value = "å¯ç ", dataTypeClass = String.class, required = true) |
| | | }) |
| | | @PostMapping("/login") |
| | | public Result<?> userLogin(String account, String password){ |
| | | boolean loginSuccess = false; |
| | | Subject subject = SecurityUtils.getSubject(); |
| | | if (!subject.isAuthenticated()) { |
| | | UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(account, password); |
| | | try { |
| | | subject.login(usernamePasswordToken); |
| | | loginSuccess = true; |
| | | } catch (UnknownAccountException e) { |
| | | return Result.fail(202, "æ²¡ææ¾å°è¯¥è´¦å·ï¼è¯·æ£æ¥è¾å
¥ï¼"); |
| | | } catch (IncorrectCredentialsException e) { |
| | | return Result.fail(202, "å¯ç ä¸å¹é
ï¼è¯·æ£æ¥è¾å
¥ï¼"); |
| | | } |
| | | } |
| | | if (loginSuccess) { |
| | | // è·åshiroRealmä¸çæ°æ® |
| | | ShiroRealm bean = SpringUtil.getBean(ShiroRealm.class); |
| | | User user = bean.user; |
| | | user.setPassword(null); |
| | | UserLoginUtils bean1 = SpringUtil.getBean(UserLoginUtils.class); |
| | | return bean1.LoginExamine(user); |
| | | }else { |
| | | return Result.fail("ç»å½å¤±è´¥"); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("ç»å½-->è·åç¨æ·ä¿¡æ¯") |
| | | @GetMapping("/info") |
| | | public Result<?> getUserInfo(@RequestHeader("X-Token") String token){ |
| | | //æ ¹æ®tokenè·åç¨æ·ä¿¡æ¯ |
| | | Map<String,Object> data = userService.getUserInfo(token); |
| | | if (data != null){ |
| | | return Result.success(data); |
| | | } |
| | | return Result.fail(202,"ç¨æ·ç»å½ä¿¡æ¯æ æï¼è¯·éæ°ç»å½"); |
| | | } |
| | | |
| | | @PostMapping("/getUserById") |
| | | @ApiOperation("è·åæå®ç¨æ·idçç¨æ·ä¿¡æ¯åä¼ä¸ä¿¡æ¯") |
| | | public Result<?> getUserById(@RequestHeader("X-Token") String token) throws Exception { |
| | | Object o = RedisUtil.get(token); |
| | | Map<String, Object> unmarshal = null; |
| | | if (!ObjectUtils.isEmpty(o)){ |
| | | unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(o), Map.class); |
| | | Map<String, String> map = userService.selectUserByUserId((Integer) unmarshal.get("id")); |
| | | return Result.success(map); |
| | | } |
| | | return Result.fail("Tokené误ï¼"); |
| | | } |
| | | |
| | | @PostMapping("/add_new_personnel") |
| | | @ApiOperation("å®éªå®¤ç®¡ç-->人å管ç-->æ°å¢äººå") |
| | | public Result<?> addNewPersonnel(@RequestHeader("X-Token") String token, @RequestBody NewPersonnelVo newPersonnelVo) throws Exception { |
| | | Object redisUserMessage = RedisUtil.get(token); |
| | | Map<String, Object> user = null; |
| | | Integer isAddSuccess = 0; |
| | | if (!ObjectUtils.isEmpty(redisUserMessage)) { |
| | | user = JackSonUtil.unmarshal(JackSonUtil.marshal(redisUserMessage), Map.class); |
| | | newPersonnelVo.setPassword("123456"); |
| | | isAddSuccess = userService.addNewPersonnel(newPersonnelVo, user.get("enterpriseId").toString()); |
| | | } |
| | | |
| | | if (isAddSuccess == 1){ |
| | | return Result.success("æ·»å ã" + newPersonnelVo.getName() + "ãæåï¼é»è®¤å¯ç 为ï¼" + newPersonnelVo.getPassword()); |
| | | } |
| | | return Result.fail("æ·»å 失败ï¼"); |
| | | } |
| | | |
| | | @PutMapping("/update_new_personnel") |
| | | @ApiOperation("å®éªå®¤ç®¡ç-->人å管ç-->ç¼è¾æä½") |
| | | public Result<?> updateNewPersonnel(@RequestBody UpdatePersonnelVo updatePersonnelVo) { |
| | | Integer isUpdateSuccess = userService.updateNewPersonnel(updatePersonnelVo); |
| | | if (isUpdateSuccess == 1){ |
| | | return Result.success("æ´æ°ã" + updatePersonnelVo.getName() + "ãæå"); |
| | | } |
| | | return Result.fail("æ´æ°ã" + updatePersonnelVo.getName() + "ã失败"); |
| | | } |
| | | |
| | | @GetMapping("/list_new_personnel") |
| | | @ApiOperation("å®éªå®¤ç®¡ç-->人å管ç-->å页æ¥è¯¢") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "pageNo", value = "èµ·å§é¡µ", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "pageSize", value = "æ¯ä¸é¡µæ°é", dataTypeClass = Integer.class, required = true), |
| | | @ApiImplicitParam(name = "name", value = "人ååç§°", dataTypeClass = String.class) |
| | | }) |
| | | public Result<Map<String, Object>> getNewPersonnelPage(Integer pageNo, Integer pageSize, String name) { |
| | | IPage<PagePersonnelVo> PageList = userService.getNewPersonnelPage(name, new Page<Objects>(pageNo, pageSize)); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("row", PageList.getRecords()); |
| | | map.put("total", PageList.getTotal()); |
| | | return Result.success(map); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Enterprise; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | public interface EnterpriseMapper extends BaseMapper<Enterprise> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Role; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | public interface RoleMapper extends BaseMapper<Role> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.yuanchu.limslaboratory.vo.PagePersonnelVo; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | | * Mapper æ¥å£ |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | public interface UserMapper extends BaseMapper<User> { |
| | | Map<String, String> selectUserByUserId(int userId); |
| | | |
| | | IPage<PagePersonnelVo> getNewPersonnelPage(String name, Page page); |
| | | |
| | | List<Map> selectUser(); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @Data |
| | | @NoArgsConstructor |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Enterprise对象", description="") |
| | | public class Enterprise implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "ä¼ä¸ç¼å·") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "ä¼ä¸åå") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "ä¼ä¸ç®ç§°") |
| | | private String byname; |
| | | |
| | | @ApiModelProperty(value = "è系人åå") |
| | | private String linkName; |
| | | |
| | | @ApiModelProperty(value = "è系人çµè¯") |
| | | private String linkPhone; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone="GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone="GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @Version |
| | | @ApiModelProperty(value = "é") |
| | | private Integer version; |
| | | |
| | | |
| | | public Enterprise(String name, String byname, String linkName, String linkPhone) { |
| | | this.name = name; |
| | | this.byname = byname; |
| | | this.linkName = linkName; |
| | | this.linkPhone = linkPhone; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="Role对象", description="") |
| | | public class Role implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "è§è²id") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "è§è²å") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "0ï¼æ æéï¼1ï¼ææé") |
| | | private Integer power; |
| | | |
| | | @TableLogic(value = "1", delval = "0") |
| | | @ApiModelProperty(value = "é»è¾å é¤ æ£å¸¸>=1,å é¤<=0") |
| | | private Integer state; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone="GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone="GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @Version |
| | | @ApiModelProperty(value = "ä¹è§é") |
| | | private Integer version; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.sun.jmx.snmp.Timestamp; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.NoArgsConstructor; |
| | | import lombok.experimental.Accessors; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | /** |
| | | * <p> |
| | | * |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @Accessors(chain = true) |
| | | @Data |
| | | @NoArgsConstructor |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="User对象", description="") |
| | | public class User implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "ç¨æ·id") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "è´¦å·") |
| | | private String account; |
| | | |
| | | @ApiModelProperty(value = "å¯ç ") |
| | | private String password; |
| | | |
| | | @ApiModelProperty(value = "å§å") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "ææºå·") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "é®ç®±") |
| | | private String email; |
| | | |
| | | @ApiModelProperty(value = "å¹´é¾") |
| | | private Integer age; |
| | | |
| | | @ApiModelProperty(value = "个æ§ç¾å") |
| | | private String info; |
| | | |
| | | @ApiModelProperty(value = "å¨èç¶æ æ£å¸¸>=1,离è<=0") |
| | | private Integer jobState; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date updateTime; |
| | | |
| | | @Version |
| | | private Integer version; |
| | | |
| | | @ApiModelProperty(value = "å
³è è§è²id") |
| | | private Integer roleId; |
| | | |
| | | @ApiModelProperty(value = "å
³è ä¼ä¸id") |
| | | private Integer enterpriseId; |
| | | |
| | | public User(String account, String name, String phone, String email, String info) { |
| | | this.account = account; |
| | | this.name = name; |
| | | this.phone = phone; |
| | | this.email = email; |
| | | this.info = info; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Enterprise; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | public interface EnterpriseService extends IService<Enterprise> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Role; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | public interface RoleService extends IService<Role> { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.yuanchu.limslaboratory.vo.NewPersonnelVo; |
| | | import com.yuanchu.limslaboratory.vo.PagePersonnelVo; |
| | | import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | public interface UserService extends IService<User> { |
| | | /** |
| | | * éè¿ç¨æ·idè·åç¨æ·ä¿¡æ¯ |
| | | * @param userId |
| | | * @return |
| | | */ |
| | | Map<String, String> selectUserByUserId(int userId); |
| | | |
| | | User AccordingUsernameSelectAll(String account); |
| | | |
| | | /** |
| | | * æ·»å ç¨æ· |
| | | * @param newPersonnelVo |
| | | * @param enterpriseId |
| | | * @return |
| | | */ |
| | | Integer addNewPersonnel(NewPersonnelVo newPersonnelVo, String enterpriseId); |
| | | |
| | | /** |
| | | * æ´æ°ç¨æ·åºæ¬ä¿¡æ¯ |
| | | * @param updatePersonnelVo |
| | | * @return |
| | | */ |
| | | Integer updateNewPersonnel(UpdatePersonnelVo updatePersonnelVo); |
| | | |
| | | /** |
| | | * å页æ¥è¯¢ææç¨æ·ä¿¡æ¯ |
| | | * @param name |
| | | * @param page |
| | | * @return |
| | | */ |
| | | IPage<PagePersonnelVo> getNewPersonnelPage(String name, Page page); |
| | | |
| | | /** |
| | | * ç»å½è·åç¨æ·åºæ¬ä¿¡æ¯ä¸ç³»ç»è¶
æ¶æ¶é´æé |
| | | * @param token |
| | | * @return |
| | | */ |
| | | Map<String, Object> getUserInfo(String token); |
| | | |
| | | /** |
| | | * æ ¹æ®Idæ¥è¯¢æ¯å¦åå¨è¯¥ç¨æ· |
| | | */ |
| | | Boolean userIsNull(Integer Id); |
| | | |
| | | /** |
| | | * æ ¹æ®ç¨æ·Idæ¥è¯¢ç¨æ·åç§° |
| | | * @param userId ç¨æ·Id |
| | | * @return |
| | | */ |
| | | String selectByUserId(Integer userId); |
| | | |
| | | /** |
| | | * æ¥è¯¢ææç¨æ·ä¿¡æ¯ |
| | | * @return |
| | | */ |
| | | List<Map> selectUser(); |
| | | |
| | | /** |
| | | * è·åææç¨æ·çåç§°ä¸Id |
| | | */ |
| | | List<Map<String, Object>> getUserNameAndId(); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Enterprise; |
| | | import com.yuanchu.limslaboratory.mapper.EnterpriseMapper; |
| | | import com.yuanchu.limslaboratory.service.EnterpriseService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @Service |
| | | public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterprise> implements EnterpriseService { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.Role; |
| | | import com.yuanchu.limslaboratory.mapper.RoleMapper; |
| | | import com.yuanchu.limslaboratory.service.RoleService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @Service |
| | | public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService { |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.mapper.UserMapper; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import com.yuanchu.limslaboratory.vo.NewPersonnelVo; |
| | | import com.yuanchu.limslaboratory.vo.PagePersonnelVo; |
| | | import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2023-07-07 |
| | | */ |
| | | @Service |
| | | public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { |
| | | |
| | | @Resource |
| | | private UserMapper userMapper; |
| | | |
| | | @Override |
| | | public Map<String, Object> getUserInfo(String token) { |
| | | //æ ¹æ®tokenè·åç¨æ·ä¿¡æ¯ |
| | | Object obj = RedisUtil.get(token); |
| | | if (!ObjectUtils.isEmpty(obj)){ |
| | | Map loginUser = (Map) obj; |
| | | Map map = (Map)loginUser.get("data"); |
| | | Object residualTime = map.get("residualTime"); |
| | | int i = Integer.parseInt(residualTime.toString()); |
| | | String remind = null; |
| | | if (i <= 30) { |
| | | remind = "æ¨æä½¿ç¨çç³»ç»å³å°è¿æï¼è¯·è系管çåï¼"; |
| | | } |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("name",loginUser.get("name")); |
| | | data.put("remind", remind); |
| | | return data; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean userIsNull(Integer Id) { |
| | | LambdaQueryWrapper<User> userLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | userLambdaQueryWrapper.eq(User::getId, Id); |
| | | userLambdaQueryWrapper.select(User::getName); |
| | | User user = userMapper.selectOne(userLambdaQueryWrapper); |
| | | return !ObjectUtils.isEmpty(user); |
| | | } |
| | | |
| | | @Override |
| | | public String selectByUserId(Integer userId) { |
| | | LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(User::getId, userId); |
| | | wrapper.select(User::getName); |
| | | User user = userMapper.selectOne(wrapper); |
| | | return user.getName(); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map> selectUser() { |
| | | return userMapper.selectUser(); |
| | | } |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> getUserNameAndId() { |
| | | LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.select(User::getId, User::getName); |
| | | return userMapper.selectMaps(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> selectUserByUserId(int userId) { |
| | | return userMapper.selectUserByUserId(userId); |
| | | } |
| | | |
| | | @Override |
| | | public User AccordingUsernameSelectAll(String account) { |
| | | LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(User::getAccount, account); |
| | | wrapper.select(User::getPassword, User::getId, User::getName, User::getAccount, User::getEnterpriseId); |
| | | return userMapper.selectOne(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | public Integer addNewPersonnel(NewPersonnelVo newPersonnelVo, String enterpriseId) { |
| | | User user = new User() |
| | | .setName(newPersonnelVo.getName()) |
| | | .setAccount(newPersonnelVo.getAccount()) |
| | | .setAge(newPersonnelVo.getAge()) |
| | | .setPhone(newPersonnelVo.getPhone()) |
| | | .setEmail(newPersonnelVo.getEmail()) |
| | | .setRoleId(newPersonnelVo.getRole_id()) |
| | | .setPassword(newPersonnelVo.getPassword()) |
| | | .setEnterpriseId(Integer.valueOf(enterpriseId)); |
| | | return userMapper.insert(user); |
| | | } |
| | | |
| | | @Override |
| | | public Integer updateNewPersonnel(UpdatePersonnelVo updatePersonnelVo) { |
| | | User user = new User() |
| | | .setName(updatePersonnelVo.getName()) |
| | | .setAccount(updatePersonnelVo.getAccount()) |
| | | .setAge(updatePersonnelVo.getAge()) |
| | | .setPhone(updatePersonnelVo.getPhone()) |
| | | .setEmail(updatePersonnelVo.getEmail()) |
| | | .setRoleId(updatePersonnelVo.getRole_id()) |
| | | .setPassword(updatePersonnelVo.getPassword()) |
| | | .setJobState(updatePersonnelVo.getJobState()); |
| | | LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.eq(User::getId, updatePersonnelVo.getId()); |
| | | return userMapper.update(user, updateWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<PagePersonnelVo> getNewPersonnelPage(String name, Page page) { |
| | | return userMapper.getNewPersonnelPage(name, page); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro; |
| | | |
| | | import com.yuanchu.limslaboratory.shiro.utils.JwtUtils; |
| | | import org.apache.shiro.authc.AuthenticationToken; |
| | | |
| | | public class JwtToken implements AuthenticationToken { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | // å å¯åç JWT token串 |
| | | private String token; |
| | | |
| | | private String account; |
| | | |
| | | public JwtToken(String token) { |
| | | this.token = token; |
| | | this.account = JwtUtils.getClaimFiled(token, "account"); |
| | | } |
| | | |
| | | @Override |
| | | public Object getPrincipal() { |
| | | return this.account; |
| | | } |
| | | |
| | | @Override |
| | | public Object getCredentials() { |
| | | return token; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro; |
| | | |
| | | import org.apache.shiro.authc.AuthenticationException; |
| | | import org.apache.shiro.authc.AuthenticationInfo; |
| | | import org.apache.shiro.authc.AuthenticationToken; |
| | | import org.apache.shiro.authc.pam.AuthenticationStrategy; |
| | | import org.apache.shiro.authc.pam.ModularRealmAuthenticator; |
| | | import org.apache.shiro.realm.Realm; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | | import java.util.Collection; |
| | | |
| | | public class MultiRealmAuthenticator extends ModularRealmAuthenticator { |
| | | private static final Logger log = LoggerFactory.getLogger(MultiRealmAuthenticator.class); |
| | | |
| | | @Override |
| | | protected AuthenticationInfo doMultiRealmAuthentication(Collection<Realm> realms, AuthenticationToken token) |
| | | throws AuthenticationException { |
| | | AuthenticationStrategy strategy = getAuthenticationStrategy(); |
| | | |
| | | AuthenticationInfo aggregate = strategy.beforeAllAttempts(realms, token); |
| | | |
| | | if (log.isTraceEnabled()) { |
| | | log.trace("Iterating through {} realms for PAM authentication", realms.size()); |
| | | } |
| | | AuthenticationException authenticationException = null; |
| | | for (Realm realm : realms) { |
| | | |
| | | aggregate = strategy.beforeAttempt(realm, token, aggregate); |
| | | |
| | | if (realm.supports(token)) { |
| | | |
| | | log.trace("Attempting to authenticate token [{}] using realm [{}]", token, realm); |
| | | |
| | | AuthenticationInfo info = null; |
| | | try { |
| | | info = realm.getAuthenticationInfo(token); |
| | | } catch (AuthenticationException e) { |
| | | authenticationException = e; |
| | | if (log.isDebugEnabled()) { |
| | | String msg = "Realm [" + realm |
| | | + "] threw an exception during a multi-realm authentication attempt:"; |
| | | log.debug(msg, e); |
| | | } |
| | | } |
| | | |
| | | aggregate = strategy.afterAttempt(realm, token, info, aggregate, authenticationException); |
| | | |
| | | } else { |
| | | log.debug("Realm [{}] does not support token {}. Skipping realm.", realm, token); |
| | | } |
| | | } |
| | | if (authenticationException != null) { |
| | | throw authenticationException; |
| | | } |
| | | aggregate = strategy.afterAllAttempts(token, aggregate); |
| | | |
| | | return aggregate; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.config; |
| | | |
| | | import com.yuanchu.limslaboratory.shiro.filter.JwtFilter; |
| | | import com.yuanchu.limslaboratory.shiro.MultiRealmAuthenticator; |
| | | import com.yuanchu.limslaboratory.shiro.realm.JwtRealm; |
| | | import com.yuanchu.limslaboratory.shiro.realm.ShiroRealm; |
| | | import com.yuanchu.limslaboratory.shiro.utils.JwtCredentialsMatcher; |
| | | import org.apache.shiro.authc.credential.CredentialsMatcher; |
| | | import org.apache.shiro.authc.credential.HashedCredentialsMatcher; |
| | | import org.apache.shiro.authc.pam.AuthenticationStrategy; |
| | | import org.apache.shiro.authc.pam.FirstSuccessfulStrategy; |
| | | import org.apache.shiro.authc.pam.ModularRealmAuthenticator; |
| | | import org.apache.shiro.authz.Authorizer; |
| | | import org.apache.shiro.authz.ModularRealmAuthorizer; |
| | | import org.apache.shiro.crypto.hash.Md5Hash; |
| | | import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; |
| | | import org.apache.shiro.mgt.DefaultSubjectDAO; |
| | | import org.apache.shiro.mgt.SecurityManager; |
| | | import org.apache.shiro.mgt.SessionStorageEvaluator; |
| | | import org.apache.shiro.realm.Realm; |
| | | import org.apache.shiro.spring.LifecycleBeanPostProcessor; |
| | | import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; |
| | | import org.apache.shiro.spring.web.ShiroFilterFactoryBean; |
| | | import org.apache.shiro.web.mgt.DefaultWebSecurityManager; |
| | | import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; |
| | | import org.springframework.boot.web.servlet.FilterRegistrationBean; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | import javax.servlet.Filter; |
| | | import java.util.*; |
| | | |
| | | @Configuration |
| | | public class ShiroConfig { |
| | | |
| | | /** |
| | | * ä¸å Spring容å¨ä¸æ³¨å JwtFilter Beanï¼é²æ¢ Spring å° JwtFilter 注å为å
¨å±è¿æ»¤å¨ |
| | | * å
¨å±è¿æ»¤å¨ä¼å¯¹ææè¯·æ±è¿è¡æ¦æªï¼èæ¬ä¾ä¸åªéè¦æ¦æªé¤ /login å /logout å¤çè¯·æ± |
| | | * å¦ä¸ç§ç®ååæ³æ¯ï¼ç´æ¥å»æ jwtFilter()ä¸ç @Bean 注解 |
| | | */ |
| | | @Bean |
| | | public FilterRegistrationBean<Filter> registration(JwtFilter filter) { |
| | | FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>(filter); |
| | | registration.setEnabled(false); |
| | | return registration; |
| | | } |
| | | |
| | | //ShiroFilterè¿æ»¤ææè¯·æ± |
| | | @Bean |
| | | public ShiroFilterFactoryBean getShiroFilterFactoryBean(SecurityManager securityManager) { |
| | | ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); |
| | | //ç»ShiroFilteré
ç½®å®å
¨ç®¡çå¨ |
| | | shiroFilterFactoryBean.setSecurityManager(securityManager); |
| | | |
| | | // æ·»å jwt ä¸ç¨è¿æ»¤å¨ï¼æ¦æªé¤ /login å /logout å¤çè¯·æ± |
| | | Map<String, Filter> filterMap = new LinkedHashMap<>(); |
| | | filterMap.put("jwtFilter", new JwtFilter()); |
| | | shiroFilterFactoryBean.setFilters(filterMap); |
| | | |
| | | //é
置系ç»å
Œ
±èµæº |
| | | Map<String, String> map = new HashMap<String, String>(); |
| | | |
| | | // swaggeræ¾è¡ |
| | | map.put("/doc.html", "anon"); |
| | | map.put("/webjars/**/**", "anon"); |
| | | map.put("/swagger-resources", "anon"); |
| | | map.put("/api-docs", "anon"); |
| | | map.put("/v3/**", "anon"); |
| | | |
| | | map.put("/link-basic/*", "anon"); |
| | | map.put("/user/login/**","anon");//表示è¿ä¸ªä¸ºå
Œ
±èµæº ä¸å®æ¯å¨åéèµæºä¸é¢ |
| | | // map.put("/**","jwtFilter");//表示è¿ä¸ªèµæºéè¦è®¤è¯åææ |
| | | |
| | | shiroFilterFactoryBean.setFilterChainDefinitionMap(map); |
| | | |
| | | return shiroFilterFactoryBean; |
| | | } |
| | | |
| | | /** |
| | | * é
ç½® ModularRealmAuthenticator |
| | | */ |
| | | @Bean |
| | | public ModularRealmAuthenticator authenticator() { |
| | | ModularRealmAuthenticator authenticator = new MultiRealmAuthenticator(); |
| | | // è®¾ç½®å¤ Realmç认è¯çç¥ï¼é»è®¤ AtLeastOneSuccessfulStrategy |
| | | AuthenticationStrategy strategy = new FirstSuccessfulStrategy(); |
| | | authenticator.setAuthenticationStrategy(strategy); |
| | | return authenticator; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ç¦ç¨session, ä¸ä¿åç¨æ·ç»å½ç¶æãä¿è¯æ¯æ¬¡è¯·æ±é½éæ°è®¤è¯ |
| | | */ |
| | | @Bean |
| | | protected SessionStorageEvaluator sessionStorageEvaluator() { |
| | | DefaultSessionStorageEvaluator sessionStorageEvaluator = new DefaultSessionStorageEvaluator(); |
| | | sessionStorageEvaluator.setSessionStorageEnabled(false); |
| | | return sessionStorageEvaluator; |
| | | } |
| | | |
| | | /** |
| | | * é
ç½® SecurityManagerï¼æé管çå¨ |
| | | */ |
| | | @Bean |
| | | public DefaultWebSecurityManager securityManager() { |
| | | DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); |
| | | |
| | | // 1.身份éªè¯å¨ |
| | | securityManager.setAuthenticator(authenticator()); |
| | | |
| | | // 2.管çRealm |
| | | List<Realm> realms = new ArrayList<Realm>(16); |
| | | realms.add(JwtRealm()); |
| | | realms.add(shiroRealm()); |
| | | securityManager.setRealms(realms); // é
ç½®å¤ä¸ªrealm |
| | | |
| | | // 3.å
³éshiroèªå¸¦çsession |
| | | DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO(); |
| | | subjectDAO.setSessionStorageEvaluator(sessionStorageEvaluator()); |
| | | securityManager.setSubjectDAO(subjectDAO); |
| | | |
| | | return securityManager; |
| | | } |
| | | |
| | | // å建èªå®ä¹Realm |
| | | @Bean |
| | | public Realm shiroRealm() { |
| | | ShiroRealm realm = new ShiroRealm(); |
| | | // HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher(); |
| | | //// //设置使ç¨MD5å å¯ç®æ³ |
| | | //// credentialsMatcher.setHashAlgorithmName(Md5Hash.ALGORITHM_NAME); |
| | | //// //æ£åæ¬¡æ° |
| | | //// credentialsMatcher.setHashIterations(1024); |
| | | // realm.setCredentialsMatcher(credentialsMatcher); |
| | | return realm; |
| | | } |
| | | |
| | | @Bean |
| | | public Realm JwtRealm(){ |
| | | JwtRealm jwtRealm = new JwtRealm(); |
| | | // 设置å å¯ç®æ³ |
| | | CredentialsMatcher credentialsMatcher = new JwtCredentialsMatcher(); |
| | | // 设置å 坿¬¡æ° |
| | | jwtRealm.setCredentialsMatcher(credentialsMatcher); |
| | | return jwtRealm; |
| | | } |
| | | |
| | | |
| | | // 以ä¸ä¸ä¸beanéç¨ï¼åºå®é
ç½® |
| | | |
| | | /** |
| | | * äº¤ç± Spring æ¥èªå¨å°ç®¡ç Shiro-Bean ççå½å¨æ |
| | | */ |
| | | @Bean |
| | | public static LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { |
| | | return new LifecycleBeanPostProcessor(); |
| | | } |
| | | |
| | | /** |
| | | * 为 Spring-Bean å¼å¯å¯¹ Shiro æ³¨è§£çæ¯æ |
| | | */ |
| | | @Bean |
| | | public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { |
| | | AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); |
| | | authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); |
| | | return authorizationAttributeSourceAdvisor; |
| | | } |
| | | |
| | | /** |
| | | * å¼å¯AOPæ¹æ³çº§æéæ£æ¥ |
| | | */ |
| | | @Bean |
| | | public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { |
| | | DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); |
| | | advisorAutoProxyCreator.setProxyTargetClass(true); |
| | | return advisorAutoProxyCreator; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.filter; |
| | | |
| | | import com.yuanchu.limslaboratory.shiro.JwtToken; |
| | | import com.yuanchu.limslaboratory.shiro.utils.JwtUtils; |
| | | import org.apache.shiro.authc.AuthenticationException; |
| | | import org.apache.shiro.authc.AuthenticationToken; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter; |
| | | import org.apache.shiro.web.util.WebUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.ObjectUtils; |
| | | import org.springframework.web.bind.annotation.RequestMethod; |
| | | |
| | | import javax.servlet.ServletRequest; |
| | | import javax.servlet.ServletResponse; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.PrintWriter; |
| | | |
| | | @Component |
| | | public class JwtFilter extends BasicHttpAuthenticationFilter { |
| | | private Logger log = LoggerFactory.getLogger(this.getClass()); |
| | | |
| | | public Integer code; |
| | | public String message; |
| | | |
| | | /** |
| | | * åç½®å¤ç |
| | | */ |
| | | @Override |
| | | protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { |
| | | HttpServletRequest httpServletRequest = WebUtils.toHttp(request); |
| | | HttpServletResponse httpServletResponse = WebUtils.toHttp(response); |
| | | // è·¨åæ¶ä¼é¦å
åéä¸ä¸ªoption请æ±ï¼è¿éæä»¬ç»option请æ±ç´æ¥è¿åæ£å¸¸ç¶æ |
| | | if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) { |
| | | httpServletResponse.setStatus(HttpStatus.OK.value()); |
| | | return false; |
| | | } |
| | | return super.preHandle(request, response); |
| | | } |
| | | |
| | | /** |
| | | * åç½®å¤ç |
| | | */ |
| | | @Override |
| | | protected void postHandle(ServletRequest request, ServletResponse response) { |
| | | // æ·»å è·¨åæ¯æ |
| | | this.fillCorsHeader(WebUtils.toHttp(request), WebUtils.toHttp(response)); |
| | | } |
| | | |
| | | /** |
| | | * è¿æ»¤å¨æ¦æªè¯·æ±çå
¥å£æ¹æ³ |
| | | * è¿å true åå
è®¸è®¿é® |
| | | * è¿åfalse åç¦æ¢è®¿é®ï¼ä¼è¿å
¥ onAccessDenied() |
| | | */ |
| | | @Override |
| | | protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { |
| | | // 妿token为空ä¸è®©éè¿ |
| | | String header = ((HttpServletRequest) request).getHeader(JwtUtils.AUTH_HEADER); |
| | | if (ObjectUtils.isEmpty(header)){ |
| | | code = 503; |
| | | message = "STS tokenè§£ç è¿ç¨ä¸ï¼ç±äºå
é¨è°ç¨å¤±è´¥å¯¼è´è§£ç 失败ï¼è¯·ç¨ååè¯ã"; |
| | | return false; |
| | | } |
| | | boolean allowed = false; |
| | | try { |
| | | // æ£æµHeaderéç JWT tokenå
容æ¯å¦æ£ç¡®ï¼å°è¯ä½¿ç¨ tokenè¿è¡ç»å½ |
| | | allowed = executeLogin(request, response); |
| | | } catch (IllegalStateException e) { // not found any token |
| | | log.error("Not found any token"); |
| | | } catch (Exception e) { |
| | | log.error("Error occurs when login", e); |
| | | } |
| | | return allowed || super.isPermissive(mappedValue); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 身份éªè¯,æ£æ¥ JWT token æ¯å¦åæ³ |
| | | */ |
| | | @Override |
| | | protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception { |
| | | AuthenticationToken token = createToken(request, response); |
| | | if (token == null) { |
| | | String msg = "createToken method implementation returned null. A valid non-null AuthenticationToken " |
| | | + "must be created in order to execute a login attempt."; |
| | | throw new IllegalStateException(msg); |
| | | } |
| | | |
| | | try { |
| | | Subject subject = getSubject(request, response); |
| | | subject.login(token); // äº¤ç» Shiro å»è¿è¡ç»å½éªè¯ |
| | | return onLoginSuccess(token, subject, request, response); |
| | | } catch (AuthenticationException e) { |
| | | return onLoginFailure(token, e, request, response); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ä» Header éæå JWT token |
| | | */ |
| | | @Override |
| | | protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) { |
| | | HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; |
| | | String authorization = httpServletRequest.getHeader(JwtUtils.AUTH_HEADER); |
| | | JwtToken token = new JwtToken(authorization); |
| | | return token; |
| | | } |
| | | |
| | | /** |
| | | * isAccessAllowed()æ¹æ³è¿åfalseï¼ä¼è¿å
¥è¯¥æ¹æ³ï¼è¡¨ç¤ºæç»è®¿é® |
| | | */ |
| | | @Override |
| | | protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { |
| | | HttpServletResponse httpResponse = WebUtils.toHttp(servletResponse); |
| | | httpResponse.setCharacterEncoding("UTF-8"); |
| | | httpResponse.setContentType("application/json;charset=UTF-8"); |
| | | httpResponse.setStatus(HttpStatus.UNAUTHORIZED.value()); |
| | | PrintWriter writer = httpResponse.getWriter(); |
| | | writer.write("{\"errCode\": "+ code +", \"msg\": \"" + message +"\"}"); |
| | | fillCorsHeader(WebUtils.toHttp(servletRequest), httpResponse); |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * Shiro å©ç¨ JWT token ç»å½æåï¼ä¼è¿å
¥è¯¥æ¹æ³ |
| | | */ |
| | | @Override |
| | | protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, |
| | | ServletResponse response) { |
| | | HttpServletResponse httpResponse = WebUtils.toHttp(response); |
| | | String newToken = null; |
| | | if (token instanceof JwtToken) { |
| | | newToken = JwtUtils.refreshTokenExpired(token.getCredentials().toString(), JwtUtils.SECRET); |
| | | } |
| | | if (newToken != null) |
| | | httpResponse.setHeader(JwtUtils.AUTH_HEADER, newToken); |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * Shiro å©ç¨ JWT token ç»å½å¤±è´¥ï¼ä¼è¿å
¥è¯¥æ¹æ³ |
| | | */ |
| | | @Override |
| | | protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, |
| | | ServletResponse response) { |
| | | // æ¤å¤ç´æ¥è¿å false ï¼äº¤ç»åé¢ç onAccessDenied()æ¹æ³è¿è¡å¤ç |
| | | String error = e.getClass().toString().split("\\.")[4]; |
| | | if (error.equals("IncorrectCredentialsException")) { |
| | | code = 10010; |
| | | } else { |
| | | code = 401; |
| | | } |
| | | message = e.getMessage(); |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * æ·»å è·¨åæ¯æ |
| | | */ |
| | | protected void fillCorsHeader(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { |
| | | httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin")); |
| | | httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,HEAD"); |
| | | httpServletResponse.setHeader("Access-Control-Allow-Headers", |
| | | httpServletRequest.getHeader("Access-Control-Request-Headers")); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.realm; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.shiro.JwtToken; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import org.apache.shiro.authc.*; |
| | | import org.apache.shiro.authz.AuthorizationInfo; |
| | | import org.apache.shiro.authz.SimpleAuthorizationInfo; |
| | | import org.apache.shiro.realm.AuthorizingRealm; |
| | | import org.apache.shiro.subject.PrincipalCollection; |
| | | |
| | | public class JwtRealm extends AuthorizingRealm { |
| | | /** |
| | | * éå®è¿ä¸ª Realm åªå¤çæä»¬èªå®ä¹ç JwtToken |
| | | */ |
| | | @Override |
| | | public boolean supports(AuthenticationToken token) { |
| | | return token instanceof JwtToken; |
| | | } |
| | | |
| | | /** |
| | | * æ¤å¤ç SimpleAuthenticationInfo å¯è¿åä»»æå¼ï¼å¯ç æ ¡éªæ¶ä¸ä¼ç¨å°å® |
| | | */ |
| | | @Override |
| | | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException { |
| | | JwtToken jwtToken = (JwtToken) authcToken; |
| | | if (jwtToken.getPrincipal() == null) { |
| | | throw new AccountException("Tokenåæ°å¼å¸¸ï¼"); |
| | | } |
| | | // å½åç¨æ· |
| | | String account = jwtToken.getPrincipal().toString(); |
| | | // å½åç¨æ·çtoken |
| | | String credentials = (String)jwtToken.getCredentials(); |
| | | User user = (User) RedisUtil.get(credentials); |
| | | // ç¨æ·ä¸åå¨ |
| | | if (user == null) { |
| | | throw new UnknownAccountException("ç¨æ·ä¸åå¨ï¼"); |
| | | } |
| | | SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, account, getName()); |
| | | return info; |
| | | } |
| | | |
| | | @Override |
| | | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { |
| | | SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); |
| | | return info; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.realm; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import com.yuanchu.limslaboratory.utils.SpringUtil; |
| | | import org.apache.shiro.authc.*; |
| | | import org.apache.shiro.authz.AuthorizationInfo; |
| | | import org.apache.shiro.realm.AuthorizingRealm; |
| | | import org.apache.shiro.subject.PrincipalCollection; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | public class ShiroRealm extends AuthorizingRealm { |
| | | |
| | | public User user; |
| | | |
| | | /** |
| | | * éå®è¿ä¸ª Realm åªå¤ç UsernamePasswordToken |
| | | */ |
| | | @Override |
| | | public boolean supports(AuthenticationToken token) { |
| | | return token instanceof UsernamePasswordToken; |
| | | } |
| | | |
| | | @Override |
| | | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) { |
| | | String principal = (String) authenticationToken.getPrincipal(); |
| | | //è·åUserService对象 |
| | | UserService userService = SpringUtil.getBean(UserService.class); |
| | | user = userService.AccordingUsernameSelectAll(principal); |
| | | if (!ObjectUtils.isEmpty(user)) { |
| | | return new SimpleAuthenticationInfo(user.getAccount(), user.getPassword(), this.getName()); |
| | | } else { |
| | | throw new UnknownAccountException(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.utils; |
| | | |
| | | import com.auth0.jwt.JWT; |
| | | import com.auth0.jwt.JWTVerifier; |
| | | import com.auth0.jwt.algorithms.Algorithm; |
| | | import com.auth0.jwt.exceptions.JWTVerificationException; |
| | | import org.apache.shiro.authc.AuthenticationInfo; |
| | | import org.apache.shiro.authc.AuthenticationToken; |
| | | import org.apache.shiro.authc.credential.CredentialsMatcher; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Component |
| | | public class JwtCredentialsMatcher implements CredentialsMatcher { |
| | | /** |
| | | * JwtCredentialsMatcheråªééªè¯JwtTokenå
容æ¯å¦åæ³ |
| | | */ |
| | | @Override |
| | | public boolean doCredentialsMatch(AuthenticationToken authenticationToken, AuthenticationInfo authenticationInfo) { |
| | | |
| | | String token = authenticationToken.getCredentials().toString(); |
| | | String account = authenticationToken.getPrincipal().toString(); |
| | | try { |
| | | Algorithm algorithm = Algorithm.HMAC256(JwtUtils.getSecret()); |
| | | JWTVerifier verifier = JWT.require(algorithm).withClaim("account", account).build(); |
| | | verifier.verify(token); |
| | | return true; |
| | | } catch (JWTVerificationException e) { |
| | | |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return false; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.utils; |
| | | |
| | | |
| | | import com.auth0.jwt.JWT; |
| | | import com.auth0.jwt.JWTCreator; |
| | | import com.auth0.jwt.JWTVerifier; |
| | | import com.auth0.jwt.algorithms.Algorithm; |
| | | import com.auth0.jwt.exceptions.JWTCreationException; |
| | | import com.auth0.jwt.exceptions.JWTDecodeException; |
| | | import com.auth0.jwt.exceptions.JWTVerificationException; |
| | | import com.auth0.jwt.interfaces.Claim; |
| | | import com.auth0.jwt.interfaces.DecodedJWT; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | @Component |
| | | public class JwtUtils { |
| | | private static String staticSecret; |
| | | |
| | | @Value("${login.secret}") |
| | | private String secret; |
| | | |
| | | @PostConstruct |
| | | public void getApiToken() { |
| | | staticSecret = this.secret; |
| | | } |
| | | |
| | | public static String getSecret() { |
| | | // lockie.zou |
| | | return staticSecret; |
| | | } |
| | | |
| | | // è¿ææ¶é´ 2 å°æ¶ |
| | | private static final long EXPIRE_TIME = 2 * 60 * 60 * 1000; |
| | | //èªå·±å®å¶å¯é¥ |
| | | public static final String SECRET = "J-(t]Poe9P"; |
| | | |
| | | //请æ±å¤´ |
| | | public static final String AUTH_HEADER = "X-Token"; // X-Authorization-With |
| | | |
| | | /** |
| | | * éªè¯tokenæ¯å¦æ£ç¡® |
| | | * @param token |
| | | * @return |
| | | */ |
| | | public static boolean verify(String token){ |
| | | try{ |
| | | String account = getClaimFiled(token, "account"); |
| | | if (account == null){ |
| | | return false; |
| | | } |
| | | Algorithm algorithm = Algorithm.HMAC256(getSecret()); |
| | | JWTVerifier verifier = JWT.require(algorithm).withClaim("account",account).build(); |
| | | verifier.verify(token); |
| | | return true; |
| | | } catch (JWTVerificationException exception){ |
| | | return false; |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·å¾tokenä¸çèªå®ä¹ä¿¡æ¯,ä¸è¬æ¯è·åtokençusernameï¼æ ésecretè§£å¯ä¹è½è·å¾ |
| | | * @param token |
| | | * @param filed |
| | | * @return |
| | | */ |
| | | public static String getClaimFiled(String token, String filed){ |
| | | try{ |
| | | if (!ObjectUtils.isEmpty(token)){ |
| | | DecodedJWT jwt = JWT.decode(token); |
| | | return jwt.getClaim(filed).asString(); |
| | | } |
| | | return null; |
| | | } catch (JWTDecodeException e){ |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * çæç¾å,åç¡®å°è¯´æ¯çætoken |
| | | * @return |
| | | */ |
| | | public static String sign(String account){ |
| | | try{ |
| | | Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); |
| | | Algorithm algorithm = Algorithm.HMAC256(SECRET); |
| | | //é带username,nicknameä¿¡æ¯ |
| | | return JWT.create() |
| | | .withClaim("account",account) |
| | | .withExpiresAt(date) |
| | | .sign(algorithm); |
| | | } catch (JWTCreationException e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åtokençç¾åæ¶é´ |
| | | * @param token |
| | | * @return |
| | | */ |
| | | public static Date getIssueAt(String token){ |
| | | try{ |
| | | DecodedJWT jwt = JWT.decode(token); |
| | | return jwt.getIssuedAt(); |
| | | } catch (JWTDecodeException e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * éªè¯tokenæ¯å¦è¿æ |
| | | * @param token |
| | | * @return |
| | | */ |
| | | public static boolean isTokenExpired(String token){ |
| | | Date now = Calendar.getInstance().getTime(); |
| | | DecodedJWT jwt = JWT.decode(token); |
| | | return jwt.getExpiresAt().before(now); |
| | | } |
| | | |
| | | /** |
| | | * å·æ°tokençæææ |
| | | * @param token |
| | | * @param secret |
| | | * @return |
| | | */ |
| | | public static String refreshTokenExpired(String token, String secret){ |
| | | DecodedJWT jwt = JWT.decode(token); //è§£ætoken |
| | | Map<String, Claim> claims = jwt.getClaims(); //è·åtokençåæ°ä¿¡æ¯ |
| | | |
| | | try{ |
| | | Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME); |
| | | Algorithm algorithm = Algorithm.HMAC256(secret); |
| | | JWTCreator.Builder builder = JWT.create().withExpiresAt(date); |
| | | for(Map.Entry<String,Claim> entry : claims.entrySet()){ |
| | | builder.withClaim(entry.getKey(),entry.getValue().asString()); |
| | | } |
| | | return builder.sign(algorithm); |
| | | } catch (JWTCreationException e){ |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.vo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="NewPersonnelVo对象", description="ç¨äºå¯¹è§è²ç®¡ççæ·»å ") |
| | | public class NewPersonnelVo { |
| | | |
| | | @ApiModelProperty(value = "å§å", example = "å°é»", required = true) |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "è´¦å·", example = "45612345", required = true) |
| | | private String account; |
| | | |
| | | @ApiModelProperty(value = "0ï¼æ æéï¼1ï¼ææé", example = "1", required = true) |
| | | private Integer role_id; |
| | | |
| | | @ApiModelProperty(value = "å¹´é¾", example = "23") |
| | | private Integer age; |
| | | |
| | | @ApiModelProperty(value = "å¹´é¾", example = "23", hidden = true) |
| | | private String password; |
| | | |
| | | @ApiModelProperty(value = "ææºå·", example = "12345678981") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "é®ç®±", example = "12345678@qq.com") |
| | | private String email; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="UpdatePersonnelVo对象", description="ç¨äºå¯¹è§è²ç®¡ççæ´æ°") |
| | | public class PagePersonnelVo { |
| | | |
| | | @ApiModelProperty(value = "主é®ID", example = "1", required = true) |
| | | private String id; |
| | | |
| | | @ApiModelProperty(value = "å§å", example = "å°é»", required = true) |
| | | private String username; |
| | | |
| | | @ApiModelProperty(value = "è§è²æé", example = "å°é»", required = true) |
| | | private String roleName; |
| | | |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| | | @ApiModelProperty(value = "å¹´é¾", example = "23") |
| | | private Integer age; |
| | | |
| | | @ApiModelProperty(value = "ææºå·", example = "12345678981") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "é®ç®±", example = "12345678@qq.com") |
| | | private String email; |
| | | |
| | | @ApiModelProperty(value = "å¨èç¶æ æ£å¸¸>=1,离è<=0", example = "0") |
| | | private Integer jobState; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="UpdatePersonnelVo对象", description="ç¨äºå¯¹è§è²ç®¡ççæ´æ°") |
| | | public class UpdatePersonnelVo { |
| | | |
| | | @ApiModelProperty(value = "主é®ID", example = "1", required = true) |
| | | private String id; |
| | | |
| | | @ApiModelProperty(value = "å§å", example = "å°é»", required = true) |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "è´¦å·", example = "45612345", required = true) |
| | | private String account; |
| | | |
| | | @ApiModelProperty(value = "0ï¼æ æéï¼1ï¼ææé", example = "1", required = true) |
| | | private Integer role_id; |
| | | |
| | | @ApiModelProperty(value = "å¹´é¾", example = "23") |
| | | private Integer age; |
| | | |
| | | @ApiModelProperty(value = "ææºå·", example = "12345678981") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "é®ç®±", example = "12345678@qq.com") |
| | | private String email; |
| | | |
| | | @ApiModelProperty(value = "å¨èç¶æ æ£å¸¸>=1,离è<=0", example = "0") |
| | | private Integer jobState; |
| | | |
| | | @ApiModelProperty(value = "è´¦å·å¯ç ", example = "654321") |
| | | private String password; |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yunachu.limslaboratory.mapper.EnterpriseMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.RoleMapper"> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.yuanchu.limslaboratory.mapper.UserMapper"> |
| | | <select id="selectUserByUserId" parameterType="int" resultType="Map"> |
| | | SELECT u.account account, |
| | | u.name uname, |
| | | u.phone, |
| | | u.email, |
| | | u.info, |
| | | e.byname e_byname, |
| | | e.`name` e_name, |
| | | e.link_name e_link_name, |
| | | e.link_phone e_phone |
| | | FROM enterprise e, |
| | | `user` u |
| | | WHERE e.`id` = u.`enterprise_id` |
| | | AND u.id = #{userId} |
| | | </select> |
| | | |
| | | <resultMap id="PagePersonnelVoMap" type="com.yuanchu.limslaboratory.vo.PagePersonnelVo"> |
| | | <result property="id" column="id"/> |
| | | <result property="username" column="username"/> |
| | | <result property="roleName" column="roleName"/> |
| | | <result property="createTime" column="create_time"/> |
| | | <result property="age" column="age"/> |
| | | <result property="phone" column="phone"/> |
| | | <result property="email" column="email"/> |
| | | <result property="jobState" column="job_state"/> |
| | | </resultMap> |
| | | <select id="getNewPersonnelPage" resultMap="PagePersonnelVoMap"> |
| | | SELECT u.`id`, u.`name` username, r.`name` roleName, u.`create_time`, IFNULL(u.`age`, '---') age, |
| | | IFNULL(u.`phone`, '---') phone, IFNULL(u.`email`, '---') email, u.`job_state` |
| | | FROM `user` u, role r |
| | | WHERE u.`role_id` = r.`id` |
| | | <if test="name != null"> |
| | | AND u.name = #{name} |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectUser" resultType="Map"> |
| | | select id, name |
| | | from lims_laboratory.user |
| | | </select> |
| | | </mapper> |