用户、项目、机组和部件新增和编辑时增加校验逻辑
This commit is contained in:
parent
a84bbf6928
commit
fbddea1c30
|
@ -15,7 +15,12 @@
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.dev33</groupId>
|
||||||
|
<artifactId>sa-token-spring-boot-starter</artifactId>
|
||||||
|
<version>1.43.0</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-devtools</artifactId>
|
<artifactId>spring-boot-devtools</artifactId>
|
||||||
|
|
|
@ -1,25 +1,33 @@
|
||||||
package com.dite.znpt.config;
|
package com.dite.znpt.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class WebMvcConfig extends WebMvcConfigurationSupport {
|
public class WebMvcConfig extends WebMvcConfigurationSupport {
|
||||||
|
|
||||||
|
@Value(value = "${upload.temp-path.image}")
|
||||||
|
private String uploadTempPath;
|
||||||
|
|
||||||
|
@Value(value = "${upload.perm-path.image}")
|
||||||
|
private String uploadPermPath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MVC 加载Swagger静态资源
|
* MVC 加载Swagger静态资源
|
||||||
* @param registry
|
* @param registry
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
|
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
registry.addResourceHandler("/**")
|
|
||||||
.addResourceLocations("classpath:/static/");
|
registry.addResourceHandler("/image/temp/**").addResourceLocations("file:" + uploadTempPath);
|
||||||
registry.addResourceHandler("doc.html")
|
registry.addResourceHandler("/image/**").addResourceLocations("file:" + uploadPermPath);
|
||||||
.addResourceLocations("classpath:/META-INF/resources/");
|
|
||||||
registry.addResourceHandler("/webjars/**")
|
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
|
||||||
.addResourceLocations("classpath:/META-INF/resources/webjars/");
|
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
|
||||||
registry.addResourceHandler("/swagger-ui/**")
|
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
|
||||||
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
|
registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
|
||||||
super.addResourceHandlers(registry);
|
super.addResourceHandlers(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package com.dite.znpt.domain;
|
package com.dite.znpt.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 常量
|
* @description: 常量
|
||||||
|
@ -21,4 +21,14 @@ public class Constants {
|
||||||
* 参数异常
|
* 参数异常
|
||||||
*/
|
*/
|
||||||
public static final String PARAMETER_EXCEPTION = "000003";
|
public static final String PARAMETER_EXCEPTION = "000003";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0:代表存在
|
||||||
|
*/
|
||||||
|
public static final String DEL_FLAG_0 = "0";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1:代表删除
|
||||||
|
*/
|
||||||
|
public static final String DEL_FLAG_1 = "1";
|
||||||
}
|
}
|
|
@ -20,5 +20,5 @@ public class Message implements Serializable {
|
||||||
public static final String TURBINE_ID_IS_NOT_EXIST = "机组id不存在";
|
public static final String TURBINE_ID_IS_NOT_EXIST = "机组id不存在";
|
||||||
public static final String PART_ID_IS_NOT_EXIST = "部件id不存在";
|
public static final String PART_ID_IS_NOT_EXIST = "部件id不存在";
|
||||||
public static final String IMAGE_SOURCE_ID_NOT_EXIST_OR_ILLEGAL = "部件id不存在";
|
public static final String IMAGE_SOURCE_ID_NOT_EXIST_OR_ILLEGAL = "部件id不存在";
|
||||||
public static final String USER_ID_NOT_EXIST = "部件id不存在";
|
public static final String USER_ID_NOT_EXIST = "用户id不存在";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.dite.znpt.domain;
|
package com.dite.znpt.domain;
|
||||||
|
|
||||||
|
import com.dite.znpt.constant.Constants;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
|
@ -45,6 +45,11 @@ public class UserEntity extends AuditableEntity implements Serializable {
|
||||||
@TableField("password")
|
@TableField("password")
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
|
@ExcelProperty("是否默认密码")
|
||||||
|
@ApiModelProperty("是否默认密码")
|
||||||
|
@TableField("is_default_password")
|
||||||
|
private Boolean isDefaultPassword;
|
||||||
|
|
||||||
@ExcelProperty("加密盐")
|
@ExcelProperty("加密盐")
|
||||||
@ApiModelProperty("加密盐")
|
@ApiModelProperty("加密盐")
|
||||||
@TableField("salt")
|
@TableField("salt")
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
package com.dite.znpt.domain.vo;
|
package com.dite.znpt.domain.vo;
|
||||||
|
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@ -19,24 +22,31 @@ public class PartReq implements Serializable {
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = -585044340118904985L;
|
private static final long serialVersionUID = -585044340118904985L;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "机组id不能为空")
|
||||||
@ApiModelProperty("机组id")
|
@ApiModelProperty("机组id")
|
||||||
private String turbineId;
|
private String turbineId;
|
||||||
|
|
||||||
@ApiModelProperty("名称")
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "部件名称不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "部件名称长度不能超过50字符")
|
||||||
|
@ApiModelProperty("部件名称")
|
||||||
private String partName;
|
private String partName;
|
||||||
|
|
||||||
@ApiModelProperty("编号")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "部件编号长度不能超过20字符")
|
||||||
|
@ApiModelProperty("部件编号")
|
||||||
private String partCode;
|
private String partCode;
|
||||||
|
|
||||||
@ApiModelProperty("类型,枚举PartTypeEnum")
|
@ApiModelProperty("部件类型,枚举PartTypeEnum")
|
||||||
private String partType;
|
private String partType;
|
||||||
|
|
||||||
@ApiModelProperty("描述")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 200, message = "部件描述长度不能超过200字符")
|
||||||
|
@ApiModelProperty("部件描述")
|
||||||
private String partDesc;
|
private String partDesc;
|
||||||
|
|
||||||
@ApiModelProperty("厂商")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "部件厂商长度不能超过20字符")
|
||||||
|
@ApiModelProperty("部件厂商")
|
||||||
private String PartManufacturer;
|
private String PartManufacturer;
|
||||||
|
|
||||||
@ApiModelProperty("型号")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "部件型号长度不能超过20字符")
|
||||||
|
@ApiModelProperty("部件型号")
|
||||||
private String PartModel;
|
private String PartModel;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class ProjectListResp implements Serializable {
|
||||||
private String farmName;
|
private String farmName;
|
||||||
|
|
||||||
@ApiModelProperty("项目状态,枚举:ProjectStatusEnum")
|
@ApiModelProperty("项目状态,枚举:ProjectStatusEnum")
|
||||||
private String status;
|
private int status;
|
||||||
|
|
||||||
@ApiModelProperty("项目状态,枚举:ProjectStatusEnum")
|
@ApiModelProperty("项目状态,枚举:ProjectStatusEnum")
|
||||||
private String statusLabel;
|
private String statusLabel;
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package com.dite.znpt.domain.vo;
|
package com.dite.znpt.domain.vo;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@ -20,48 +22,57 @@ public class ProjectReq implements Serializable {
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 740685592879189406L;
|
private static final long serialVersionUID = 740685592879189406L;
|
||||||
|
|
||||||
@ExcelProperty("项目名称")
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目名称不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "项目名称长度不能超过50字符")
|
||||||
@ApiModelProperty("项目名称")
|
@ApiModelProperty("项目名称")
|
||||||
private String projectName;
|
private String projectName;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "项目封面述长度不能超过100字符")
|
||||||
@ApiModelProperty("项目封面")
|
@ApiModelProperty("项目封面")
|
||||||
private String coverUrl;
|
private String coverUrl;
|
||||||
|
|
||||||
@ExcelProperty("风场名称")
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "风场名称不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "风场名称长度不能超过50字符")
|
||||||
@ApiModelProperty("风场名称")
|
@ApiModelProperty("风场名称")
|
||||||
private String farmName;
|
private String farmName;
|
||||||
|
|
||||||
@ExcelProperty("风场地址")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "风场名称长度不能超过100字符")
|
||||||
@ApiModelProperty("风场地址")
|
@ApiModelProperty("风场地址")
|
||||||
private String farmAddress;
|
private String farmAddress;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "委托单位长度不能超过50字符")
|
||||||
@ApiModelProperty("委托单位")
|
@ApiModelProperty("委托单位")
|
||||||
private String client;
|
private String client;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "委托单位联系人长度不能超过20字符")
|
||||||
@ApiModelProperty("委托单位联系人")
|
@ApiModelProperty("委托单位联系人")
|
||||||
private String clientContact;
|
private String clientContact;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "委托单位联系电话长度不能超过20字符")
|
||||||
@ApiModelProperty("委托单位联系电话")
|
@ApiModelProperty("委托单位联系电话")
|
||||||
private String clientPhone;
|
private String clientPhone;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "检查单位联系电话长度不能超过20字符")
|
||||||
@ApiModelProperty("检查单位")
|
@ApiModelProperty("检查单位")
|
||||||
private String inspectionUnit;
|
private String inspectionUnit;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "检查单位联系人长度不能超过20字符")
|
||||||
@ApiModelProperty("检查单位联系人")
|
@ApiModelProperty("检查单位联系人")
|
||||||
private String inspectionContact;
|
private String inspectionContact;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "检查单位联系电话长度不能超过20字符")
|
||||||
@ApiModelProperty("检查单位联系电话")
|
@ApiModelProperty("检查单位联系电话")
|
||||||
private String inspectionPhone;
|
private String inspectionPhone;
|
||||||
|
|
||||||
@ExcelProperty("项目规模")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "项目规模长度不能超过20字符")
|
||||||
@ApiModelProperty("项目规模")
|
@ApiModelProperty("项目规模")
|
||||||
private String scale;
|
private String scale;
|
||||||
|
|
||||||
@ExcelProperty("风机型号")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "风机型号不能超过20字符")
|
||||||
@ApiModelProperty("风机型号")
|
@ApiModelProperty("风机型号")
|
||||||
private String turbineModel;
|
private String turbineModel;
|
||||||
|
|
||||||
@ApiModelProperty("施工人员id")
|
@ApiModelProperty(value = "施工人员id", notes = "多个用英文逗号隔开")
|
||||||
private String constructorIds;
|
private String constructorIds;
|
||||||
|
|
||||||
@ApiModelProperty("安全员id")
|
@ApiModelProperty("安全员id")
|
||||||
|
@ -70,19 +81,20 @@ public class ProjectReq implements Serializable {
|
||||||
@ApiModelProperty("质量员id")
|
@ApiModelProperty("质量员id")
|
||||||
private String qualityOfficerId;
|
private String qualityOfficerId;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目经理id不能为空")
|
||||||
@ApiModelProperty("项目经理id")
|
@ApiModelProperty("项目经理id")
|
||||||
private String projectManagerId;
|
private String projectManagerId;
|
||||||
|
|
||||||
@ApiModelProperty("施工组长id")
|
@ApiModelProperty("施工组长id")
|
||||||
private String constructionTeamLeaderId;
|
private String constructionTeamLeaderId;
|
||||||
|
|
||||||
@ApiModelProperty("技术方案图片,多个用逗号隔开")
|
@ApiModelProperty(value = "技术方案图片", notes = "多项英文逗号隔开")
|
||||||
private String technicalImage;
|
private String technicalImage;
|
||||||
|
|
||||||
@ApiModelProperty("技术方案内容")
|
@ApiModelProperty("技术方案内容")
|
||||||
private String technicalContent;
|
private String technicalContent;
|
||||||
|
|
||||||
@ApiModelProperty("安全措施图片,多个用逗号隔开")
|
@ApiModelProperty(value = "安全措施图片", notes = "多项英文逗号隔开")
|
||||||
private String safetyImage;
|
private String safetyImage;
|
||||||
|
|
||||||
@ApiModelProperty("安全措施内容")
|
@ApiModelProperty("安全措施内容")
|
||||||
|
@ -92,14 +104,14 @@ public class ProjectReq implements Serializable {
|
||||||
private String discloseContent;
|
private String discloseContent;
|
||||||
|
|
||||||
@ApiModelProperty("状态:0待施工,1施工中,2已完工,3已审核,4已验收")
|
@ApiModelProperty("状态:0待施工,1施工中,2已完工,3已审核,4已验收")
|
||||||
private String status;
|
private int status;
|
||||||
|
|
||||||
@ApiModelProperty("项目工作类型 可能有多项,逗号分隔")
|
@ApiModelProperty(value = "项目工作类型", notes = "多项英文逗号隔开")
|
||||||
private String workType;
|
private String workType;
|
||||||
|
|
||||||
@ApiModelProperty("项目工作岗位 可能有多项,json对象保存")
|
@ApiModelProperty(value = "项目工作岗位", notes = "多项英文逗号隔开,json对象保存")
|
||||||
private String job;
|
private String job;
|
||||||
|
|
||||||
@ApiModelProperty(value = "项目安全风险点", example = "1", notes = "项目安全风险点 可能有多项,逗号分隔")
|
@ApiModelProperty(value = "项目安全风险点", notes = "多项英文逗号隔开")
|
||||||
private String safetyRiskPoint;
|
private String safetyRiskPoint;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,13 @@ package com.dite.znpt.domain.vo;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.Size;
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@ -21,25 +24,33 @@ public class TurbineReq implements Serializable {
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 115092978850852080L;
|
private static final long serialVersionUID = 115092978850852080L;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "项目id不能为空")
|
||||||
@ApiModelProperty("项目id")
|
@ApiModelProperty("项目id")
|
||||||
private String projectId;
|
private String projectId;
|
||||||
|
|
||||||
|
@NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "机组名称不能为空")
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "机组名称长度不能超过50字符")
|
||||||
@ApiModelProperty("机组名称")
|
@ApiModelProperty("机组名称")
|
||||||
private String turbineName;
|
private String turbineName;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "机组编码长度不能超过20字符")
|
||||||
@ApiModelProperty("机组编码")
|
@ApiModelProperty("机组编码")
|
||||||
private String turbineCode;
|
private String turbineCode;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 200, message = "机组描述长度不能超过200字符")
|
||||||
@ApiModelProperty("机组描述")
|
@ApiModelProperty("机组描述")
|
||||||
private String turbineDesc;
|
private String turbineDesc;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "机组厂商长度不能超过20字符")
|
||||||
@ApiModelProperty("机组厂商")
|
@ApiModelProperty("机组厂商")
|
||||||
private String turbineManufacturer;
|
private String turbineManufacturer;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "机组型号长度不能超过20字符")
|
||||||
@ApiModelProperty("机组型号")
|
@ApiModelProperty("机组型号")
|
||||||
private String turbineModel;
|
private String turbineModel;
|
||||||
|
|
||||||
@ApiModelProperty("封面图")
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "机组封面图长度不能超过100字符")
|
||||||
|
@ApiModelProperty("机组封面图")
|
||||||
private String turbineCoverUrl;
|
private String turbineCoverUrl;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package com.dite.znpt.domain.vo;
|
package com.dite.znpt.domain.vo;
|
||||||
|
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
@ -21,31 +23,43 @@ public class UserReq implements Serializable {
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = -5491849652107338027L;
|
private static final long serialVersionUID = -5491849652107338027L;
|
||||||
|
|
||||||
|
@Pattern(groups = {ValidationGroup.Insert.class},regexp = "^[a-zA-Z0-9_]{4,20}$", message = "只能包含字母、数字或下划线,长度4-20")
|
||||||
|
@ApiModelProperty("账号")
|
||||||
|
private String account;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 100, message = "头像地址长度不能超过100字符")
|
||||||
@ApiModelProperty("头像地址")
|
@ApiModelProperty("头像地址")
|
||||||
private String avatar;
|
private String avatar;
|
||||||
|
|
||||||
@ApiModelProperty("1正常0禁用")
|
@ApiModelProperty("1正常0禁用")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "姓名长度不能超过20字符")
|
||||||
@ApiModelProperty("姓名")
|
@ApiModelProperty("姓名")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
@Pattern(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, regexp = "^$|\\d(?:\\d{15}|\\d{17})$", message = "身份证号码格式不正确")
|
||||||
@ApiModelProperty("身份证")
|
@ApiModelProperty("身份证")
|
||||||
private String identityCard;
|
private String identityCard;
|
||||||
|
|
||||||
@ApiModelProperty("性别")
|
@ApiModelProperty("性别")
|
||||||
private String gender;
|
private String gender;
|
||||||
|
|
||||||
|
@Pattern(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, regexp ="^$|1\\d{10}$", message = "手机号码格式不正确")
|
||||||
@ApiModelProperty("手机号码")
|
@ApiModelProperty("手机号码")
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
|
@Email(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class})
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 50, message = "邮箱长度不能超过50字符")
|
||||||
@ApiModelProperty("邮箱")
|
@ApiModelProperty("邮箱")
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
|
@Past(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "入职日期必须是过去的日期")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
@ApiModelProperty("入职日期")
|
@ApiModelProperty("入职日期")
|
||||||
private LocalDate hiredate;
|
private LocalDate hiredate;
|
||||||
|
|
||||||
|
@Past(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "出生日期必须是过去的日期")
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
@ApiModelProperty("出生日期")
|
@ApiModelProperty("出生日期")
|
||||||
private LocalDate birthdate;
|
private LocalDate birthdate;
|
||||||
|
@ -53,9 +67,11 @@ public class UserReq implements Serializable {
|
||||||
@ApiModelProperty("学历")
|
@ApiModelProperty("学历")
|
||||||
private String education;
|
private String education;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "专业长度不能超过20字符")
|
||||||
@ApiModelProperty("专业")
|
@ApiModelProperty("专业")
|
||||||
private String majorField;
|
private String majorField;
|
||||||
|
|
||||||
|
@Size(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, max = 20, message = "工作方向长度不能超过20字符")
|
||||||
@ApiModelProperty("工作方向")
|
@ApiModelProperty("工作方向")
|
||||||
private String workField;
|
private String workField;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
public enum EducationEnum {
|
public enum EducationEnum {
|
||||||
|
UNKNOWN("unknown","小学"),
|
||||||
PRIMARY_SCHOOL("primary_school","小学"),
|
PRIMARY_SCHOOL("primary_school","小学"),
|
||||||
MIDDLE_SCHOOL("middle_school","初中"),
|
MIDDLE_SCHOOL("middle_school","初中"),
|
||||||
HIGH_SCHOOL(" high_school","高中"),
|
HIGH_SCHOOL(" high_school","高中"),
|
||||||
|
|
|
@ -15,25 +15,25 @@ import java.util.List;
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum ProjectStatusEnum {
|
public enum ProjectStatusEnum {
|
||||||
PENDING("PENDING","待施工", 0),
|
PENDING(0, "待施工"),
|
||||||
IN_PROGRESS("IN_PROGRESS","施工中", 1),
|
IN_PROGRESS(1, "施工中"),
|
||||||
COMPLETED("COMPLETED","已完工", 2),
|
COMPLETED(2, "已完工"),
|
||||||
AUDITED("AUDITED","已审核", 3),
|
AUDITED(3, "已审核"),
|
||||||
ACCEPTED("ACCEPTED","已验收", 4);
|
ACCEPTED(4, "已验收");
|
||||||
private final String code;
|
|
||||||
private final String desc;
|
|
||||||
private final int intValue;
|
|
||||||
|
|
||||||
public static ProjectStatusEnum getByCode(String code){
|
private final int code;
|
||||||
|
private final String desc;
|
||||||
|
|
||||||
|
public static ProjectStatusEnum getByCode(int code){
|
||||||
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {
|
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {
|
||||||
if(e.code.equals(code)){
|
if(e.code == code){
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getDescByCode(String code){
|
public static String getDescByCode(int code){
|
||||||
ProjectStatusEnum e = getByCode(code);
|
ProjectStatusEnum e = getByCode(code);
|
||||||
return null == e ? null : e.desc;
|
return null == e ? null : e.desc;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ public enum ProjectStatusEnum {
|
||||||
List<JSONObject> list = new ArrayList<>(ProjectStatusEnum.values().length);
|
List<JSONObject> list = new ArrayList<>(ProjectStatusEnum.values().length);
|
||||||
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {
|
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
jsonObject.set(e.code, e.desc);
|
jsonObject.set(String.valueOf(e.code), e.desc);
|
||||||
list.add(jsonObject);
|
list.add(jsonObject);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package com.dite.znpt.exception;
|
package com.dite.znpt.exception;
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.Result;
|
import com.dite.znpt.domain.Result;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
|
@ -51,7 +51,7 @@ public interface UserService extends IService<UserEntity> {
|
||||||
* @author huise23
|
* @author huise23
|
||||||
* @date 2025/04/11 23:17
|
* @date 2025/04/11 23:17
|
||||||
**/
|
**/
|
||||||
void save(UserReq req);
|
String save(UserReq req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能描述:更新用户信息
|
* 功能描述:更新用户信息
|
||||||
|
|
|
@ -31,7 +31,7 @@ import java.util.List;
|
||||||
@Service
|
@Service
|
||||||
public class ImageCollectServiceImpl extends ServiceImpl<ImageCollectMapper, ImageCollectEntity> implements ImageCollectService {
|
public class ImageCollectServiceImpl extends ServiceImpl<ImageCollectMapper, ImageCollectEntity> implements ImageCollectService {
|
||||||
|
|
||||||
@Value("${upload.perm-path}")
|
@Value("${upload.perm-path.image}")
|
||||||
private String permPath;
|
private String permPath;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -52,7 +52,7 @@ public class ImageCollectServiceImpl extends ServiceImpl<ImageCollectMapper, Ima
|
||||||
ImageCollectEntity imageCollect = Converts.INSTANCE.toImageCollectEntity(req);
|
ImageCollectEntity imageCollect = Converts.INSTANCE.toImageCollectEntity(req);
|
||||||
this.save(imageCollect);
|
this.save(imageCollect);
|
||||||
List<ImageEntity> imageList = Converts.INSTANCE.toImageEntity(req.getImageList());
|
List<ImageEntity> imageList = Converts.INSTANCE.toImageEntity(req.getImageList());
|
||||||
String path_prefix = permPath.concat(StrUtil.BACKSLASH).concat(ImageSourceEnum.COLLECT.getCode()).concat(StrUtil.BACKSLASH).concat(partId).concat(StrUtil.BACKSLASH);
|
String path_prefix = permPath.concat(FileUtil.FILE_SEPARATOR).concat(ImageSourceEnum.COLLECT.getCode()).concat(FileUtil.FILE_SEPARATOR).concat(partId).concat(FileUtil.FILE_SEPARATOR);
|
||||||
imageList.stream().forEach(image -> {
|
imageList.stream().forEach(image -> {
|
||||||
image.setPartId(partId);
|
image.setPartId(partId);
|
||||||
image.setCollectId(imageCollect.getCollectId());
|
image.setCollectId(imageCollect.getCollectId());
|
||||||
|
|
|
@ -10,7 +10,10 @@ import com.dite.znpt.constant.Message;
|
||||||
import com.dite.znpt.domain.entity.ImageEntity;
|
import com.dite.znpt.domain.entity.ImageEntity;
|
||||||
import com.dite.znpt.domain.entity.PartEntity;
|
import com.dite.znpt.domain.entity.PartEntity;
|
||||||
import com.dite.znpt.domain.vo.*;
|
import com.dite.znpt.domain.vo.*;
|
||||||
import com.dite.znpt.enums.*;
|
import com.dite.znpt.enums.ImageSourceEnum;
|
||||||
|
import com.dite.znpt.enums.ImageTypeEnum;
|
||||||
|
import com.dite.znpt.enums.ShootingMethodEnum;
|
||||||
|
import com.dite.znpt.enums.WeatherEnum;
|
||||||
import com.dite.znpt.exception.ServiceException;
|
import com.dite.znpt.exception.ServiceException;
|
||||||
import com.dite.znpt.mapper.ImageMapper;
|
import com.dite.znpt.mapper.ImageMapper;
|
||||||
import com.dite.znpt.service.ImageCollectService;
|
import com.dite.znpt.service.ImageCollectService;
|
||||||
|
@ -54,10 +57,10 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> impl
|
||||||
@Resource
|
@Resource
|
||||||
private PartService partService;
|
private PartService partService;
|
||||||
|
|
||||||
@Value("${upload.temp-path}")
|
@Value("${upload.temp-path.image}")
|
||||||
private String tempPath;
|
private String tempPath;
|
||||||
|
|
||||||
@Value("${upload.perm-path}")
|
@Value("${upload.perm-path.image}")
|
||||||
private String permPath;
|
private String permPath;
|
||||||
@Override
|
@Override
|
||||||
public List<ImageListResp> list(ImageListReq req) {
|
public List<ImageListResp> list(ImageListReq req) {
|
||||||
|
@ -83,8 +86,8 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> impl
|
||||||
Map<String, PartEntity> partIdMap= partService.listByIds(partIds).stream().collect(Collectors.toMap(PartEntity::getPartId, Function.identity()));
|
Map<String, PartEntity> partIdMap= partService.listByIds(partIds).stream().collect(Collectors.toMap(PartEntity::getPartId, Function.identity()));
|
||||||
list.stream().forEach(req -> {
|
list.stream().forEach(req -> {
|
||||||
if(partIdMap.containsKey(req.getPartId())){
|
if(partIdMap.containsKey(req.getPartId())){
|
||||||
String path_prefix = permPath.concat(FileUtil.FILE_SEPARATOR).concat(req.getImageSource()).concat(FileUtil.FILE_SEPARATOR).concat(req.getPartId()).concat(FileUtil.FILE_SEPARATOR);
|
String path_prefix = permPath.concat(StrUtil.BACKSLASH).concat(req.getImageSource()).concat(StrUtil.BACKSLASH).concat(req.getPartId()).concat(StrUtil.BACKSLASH);
|
||||||
String temp_path_prefix = tempPath.concat(FileUtil.FILE_SEPARATOR).concat(req.getImageSource()).concat(FileUtil.FILE_SEPARATOR).concat(req.getPartId()).concat(FileUtil.FILE_SEPARATOR);
|
String temp_path_prefix = tempPath.concat(StrUtil.BACKSLASH).concat(req.getImageSource()).concat(StrUtil.BACKSLASH).concat(req.getPartId()).concat(StrUtil.BACKSLASH);
|
||||||
File file = new File(req.getImagePath());
|
File file = new File(req.getImagePath());
|
||||||
if(file.exists() && req.getImagePath().contains(temp_path_prefix)){
|
if(file.exists() && req.getImagePath().contains(temp_path_prefix)){
|
||||||
ImageEntity entity = new ImageEntity();
|
ImageEntity entity = new ImageEntity();
|
||||||
|
@ -123,7 +126,12 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> impl
|
||||||
throw new ServiceException(Message.IMAGE_IS_EMPTY);
|
throw new ServiceException(Message.IMAGE_IS_EMPTY);
|
||||||
}
|
}
|
||||||
List<ImageReq> list = new ArrayList<>(files.length);
|
List<ImageReq> list = new ArrayList<>(files.length);
|
||||||
String path_prefix = tempPath.concat(FileUtil.FILE_SEPARATOR).concat(imageSource).concat(FileUtil.FILE_SEPARATOR).concat(partId).concat(FileUtil.FILE_SEPARATOR);
|
File temCategory = new File(tempPath);
|
||||||
|
if (!temCategory.exists()) {
|
||||||
|
// 创建完整的目录
|
||||||
|
temCategory.mkdirs();
|
||||||
|
}
|
||||||
|
String path_prefix = tempPath.concat(StrUtil.BACKSLASH).concat(imageSource).concat(StrUtil.BACKSLASH).concat(partId).concat(StrUtil.BACKSLASH);
|
||||||
for (MultipartFile file : files) {
|
for (MultipartFile file : files) {
|
||||||
if (!file.isEmpty()) {
|
if (!file.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
|
@ -189,7 +197,7 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> impl
|
||||||
req.setCameraManufacturer(obj.getStr("Make"));
|
req.setCameraManufacturer(obj.getStr("Make"));
|
||||||
req.setCameraModel(obj.getStr("Model"));
|
req.setCameraModel(obj.getStr("Model"));
|
||||||
req.setImageName(obj.getStr("File Name"));
|
req.setImageName(obj.getStr("File Name"));
|
||||||
req.setImagePath(path);
|
req.setImagePath(StrUtil.removePrefix(path, tempPath));
|
||||||
BigDecimal imageSize = new BigDecimal(extractDigit(obj.getStr("File Size"))).divide(new BigDecimal(1024*1024), 4, RoundingMode.HALF_UP);
|
BigDecimal imageSize = new BigDecimal(extractDigit(obj.getStr("File Size"))).divide(new BigDecimal(1024*1024), 4, RoundingMode.HALF_UP);
|
||||||
req.setImageSize(imageSize.toString().concat("M"));
|
req.setImageSize(imageSize.toString().concat("M"));
|
||||||
req.setImageWidth(extractDigit(obj.getStr("Image Width")));
|
req.setImageWidth(extractDigit(obj.getStr("Image Width")));
|
||||||
|
@ -200,15 +208,19 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> impl
|
||||||
req.setYResolution(extractDigit(obj.getStr("Y Resolution")));
|
req.setYResolution(extractDigit(obj.getStr("Y Resolution")));
|
||||||
req.setResolutionUnits(obj.getStr("Resolution Units"));
|
req.setResolutionUnits(obj.getStr("Resolution Units"));
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy:MM:dd HH:mm:ss");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy:MM:dd HH:mm:ss");
|
||||||
|
if(StrUtil.isNotBlank(obj.getStr("Date/Time Original"))){
|
||||||
req.setShootingTime(LocalDateTime.parse(obj.getStr("Date/Time Original"), formatter));
|
req.setShootingTime(LocalDateTime.parse(obj.getStr("Date/Time Original"), formatter));
|
||||||
|
}
|
||||||
req.setFocalDistance(extractDigit(obj.getStr("Focal Length")));
|
req.setFocalDistance(extractDigit(obj.getStr("Focal Length")));
|
||||||
req.setLatitude(obj.getStr("GPS Latitude"));
|
req.setLatitude(obj.getStr("GPS Latitude"));
|
||||||
req.setLongitude(obj.getStr("GPS Longitude"));
|
req.setLongitude(obj.getStr("GPS Longitude"));
|
||||||
req.setAltitude(extractDigit(obj.getStr("GPS Altitude")));
|
req.setAltitude(extractDigit(obj.getStr("GPS Altitude")));
|
||||||
|
if(StrUtil.isNotBlank(req.getLatitude()) && StrUtil.isNotBlank(req.getLongitude()) && StrUtil.isNotBlank(req.getAltitude())){
|
||||||
String gps = req.getLatitude().concat("°").concat(directionTranslator(obj.getStr("GPS Latitude Ref"))).concat(StrUtil.COMMA)
|
String gps = req.getLatitude().concat("°").concat(directionTranslator(obj.getStr("GPS Latitude Ref"))).concat(StrUtil.COMMA)
|
||||||
.concat(req.getLongitude()).concat("°").concat(directionTranslator(obj.getStr("GPS Longitude Ref"))).concat(StrUtil.COMMA)
|
.concat(req.getLongitude()).concat("°").concat(directionTranslator(obj.getStr("GPS Longitude Ref"))).concat(StrUtil.COMMA)
|
||||||
.concat("海拔").concat(req.getAltitude()).concat("m");
|
.concat("海拔").concat(req.getAltitude()).concat("m");
|
||||||
req.setGPS(gps);
|
req.setGPS(gps);
|
||||||
|
}
|
||||||
return req;
|
return req;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,6 +239,9 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, ImageEntity> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String extractDigit(String str) {
|
private static String extractDigit(String str) {
|
||||||
|
if(StrUtil.isEmpty(str)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");
|
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");
|
||||||
Matcher matcher = pattern.matcher(str);
|
Matcher matcher = pattern.matcher(str);
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
|
|
|
@ -201,7 +201,7 @@ public class TurbineServiceImpl extends ServiceImpl<TurbineMapper, TurbineEntity
|
||||||
if (turbine == null) {
|
if (turbine == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (turbine.getStatus() == ProjectStatusEnum.AUDITED.getIntValue()) {
|
if (turbine.getStatus() == ProjectStatusEnum.AUDITED.getCode()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<TurbineStatusResp> turbineStatusList = jobService.calCrewStatus(ListUtil.of(turbineId));
|
List<TurbineStatusResp> turbineStatusList = jobService.calCrewStatus(ListUtil.of(turbineId));
|
||||||
|
@ -223,19 +223,19 @@ public class TurbineServiceImpl extends ServiceImpl<TurbineMapper, TurbineEntity
|
||||||
&& status3.contains(turbineStatusVo.getAntiThunderWorkStatus())
|
&& status3.contains(turbineStatusVo.getAntiThunderWorkStatus())
|
||||||
&& status3.contains(turbineStatusVo.getSummaryWorkStatus())) {
|
&& status3.contains(turbineStatusVo.getSummaryWorkStatus())) {
|
||||||
// 全部提交已完工
|
// 全部提交已完工
|
||||||
turbine.setStatus(ProjectStatusEnum.COMPLETED.getIntValue());
|
turbine.setStatus(ProjectStatusEnum.COMPLETED.getCode());
|
||||||
} else if (status4.contains(turbineStatusVo.getInWorkStatus())
|
} else if (status4.contains(turbineStatusVo.getInWorkStatus())
|
||||||
&& status4.contains(turbineStatusVo.getOutWorkStatus())
|
&& status4.contains(turbineStatusVo.getOutWorkStatus())
|
||||||
&& status4.contains(turbineStatusVo.getAntiThunderWorkStatus())
|
&& status4.contains(turbineStatusVo.getAntiThunderWorkStatus())
|
||||||
&& status4.contains(turbineStatusVo.getSummaryWorkStatus())) {
|
&& status4.contains(turbineStatusVo.getSummaryWorkStatus())) {
|
||||||
// 全部审批已审批
|
// 全部审批已审批
|
||||||
turbine.setStatus(ProjectStatusEnum.AUDITED.getIntValue());
|
turbine.setStatus(ProjectStatusEnum.AUDITED.getCode());
|
||||||
} else if (status2.contains(turbineStatusVo.getInWorkStatus())
|
} else if (status2.contains(turbineStatusVo.getInWorkStatus())
|
||||||
|| status2.contains(turbineStatusVo.getOutWorkStatus())
|
|| status2.contains(turbineStatusVo.getOutWorkStatus())
|
||||||
|| status2.contains(turbineStatusVo.getAntiThunderWorkStatus())
|
|| status2.contains(turbineStatusVo.getAntiThunderWorkStatus())
|
||||||
|| status2.contains(turbineStatusVo.getSummaryWorkStatus())) {
|
|| status2.contains(turbineStatusVo.getSummaryWorkStatus())) {
|
||||||
// 有一个开始则开始
|
// 有一个开始则开始
|
||||||
turbine.setStatus(ProjectStatusEnum.IN_PROGRESS.getIntValue());
|
turbine.setStatus(ProjectStatusEnum.IN_PROGRESS.getCode());
|
||||||
}
|
}
|
||||||
this.updateById(turbine);
|
this.updateById(turbine);
|
||||||
// 更新项目状态
|
// 更新项目状态
|
||||||
|
@ -255,19 +255,19 @@ public class TurbineServiceImpl extends ServiceImpl<TurbineMapper, TurbineEntity
|
||||||
List<Integer> statusList = this.lambdaQuery().eq(TurbineEntity::getProjectId, projectId).list()
|
List<Integer> statusList = this.lambdaQuery().eq(TurbineEntity::getProjectId, projectId).list()
|
||||||
.stream().map(TurbineEntity::getStatus).toList();
|
.stream().map(TurbineEntity::getStatus).toList();
|
||||||
// 有施工中,则是施工中
|
// 有施工中,则是施工中
|
||||||
if (statusList.contains(ProjectStatusEnum.IN_PROGRESS.getIntValue())) {
|
if (statusList.contains(ProjectStatusEnum.IN_PROGRESS.getCode())) {
|
||||||
status = ProjectStatusEnum.IN_PROGRESS.getIntValue();
|
status = ProjectStatusEnum.IN_PROGRESS.getCode();
|
||||||
}
|
}
|
||||||
// 如果机组列表没有状态为 待施工、施工中 的则项目 完工
|
// 如果机组列表没有状态为 待施工、施工中 的则项目 完工
|
||||||
if (!statusList.contains(ProjectStatusEnum.PENDING.getIntValue()) &&
|
if (!statusList.contains(ProjectStatusEnum.PENDING.getCode()) &&
|
||||||
!statusList.contains(ProjectStatusEnum.IN_PROGRESS.getIntValue())) {
|
!statusList.contains(ProjectStatusEnum.IN_PROGRESS.getCode())) {
|
||||||
status = ProjectStatusEnum.COMPLETED.getIntValue();
|
status = ProjectStatusEnum.COMPLETED.getCode();
|
||||||
// 如果机组列表没有状态为 待施工、施工中、已完工 的则项目 已审核
|
// 如果机组列表没有状态为 待施工、施工中、已完工 的则项目 已审核
|
||||||
if (!statusList.contains(ProjectStatusEnum.COMPLETED.getIntValue())) {
|
if (!statusList.contains(ProjectStatusEnum.COMPLETED.getCode())) {
|
||||||
status = ProjectStatusEnum.AUDITED.getIntValue();
|
status = ProjectStatusEnum.AUDITED.getCode();
|
||||||
// 如果机组列表没有状态为 待施工、施工中、已完工、已审核 的则项目 已验收
|
// 如果机组列表没有状态为 待施工、施工中、已完工、已审核 的则项目 已验收
|
||||||
if (!statusList.contains(ProjectStatusEnum.AUDITED.getIntValue())) {
|
if (!statusList.contains(ProjectStatusEnum.AUDITED.getCode())) {
|
||||||
status = ProjectStatusEnum.ACCEPTED.getIntValue();
|
status = ProjectStatusEnum.ACCEPTED.getCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
package com.dite.znpt.service.impl;
|
package com.dite.znpt.service.impl;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.secure.SaBase64Util;
|
||||||
|
import cn.dev33.satoken.secure.SaSecureUtil;
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.constant.Message;
|
import com.dite.znpt.constant.Message;
|
||||||
import com.dite.znpt.converts.Converts;
|
import com.dite.znpt.converts.Converts;
|
||||||
import com.dite.znpt.domain.entity.UserEntity;
|
import com.dite.znpt.domain.entity.UserEntity;
|
||||||
|
@ -11,6 +16,8 @@ import com.dite.znpt.enums.EducationEnum;
|
||||||
import com.dite.znpt.exception.ServiceException;
|
import com.dite.znpt.exception.ServiceException;
|
||||||
import com.dite.znpt.service.UserService;
|
import com.dite.znpt.service.UserService;
|
||||||
import com.dite.znpt.mapper.UserMapper;
|
import com.dite.znpt.mapper.UserMapper;
|
||||||
|
import com.dite.znpt.util.PasswordUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import com.dite.znpt.util.PageUtil;
|
import com.dite.znpt.util.PageUtil;
|
||||||
|
@ -27,6 +34,12 @@ import java.util.List;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
|
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
|
||||||
|
|
||||||
|
@Value("${password.default-value:Ai3m@123}")
|
||||||
|
private String defaultPassword;
|
||||||
|
|
||||||
|
@Value("${password.enable-default:true}")
|
||||||
|
private Boolean enableDefaultPassword;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 功能描述:分页查询用户信息列表
|
* 功能描述:分页查询用户信息列表
|
||||||
*
|
*
|
||||||
|
@ -82,9 +95,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> impleme
|
||||||
**/
|
**/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void save(UserReq req) {
|
public String save(UserReq req) {
|
||||||
UserEntity entity = Converts.INSTANCE.toUserEntity(req);
|
UserEntity entity = Converts.INSTANCE.toUserEntity(req);
|
||||||
|
String salt = RandomUtil.randomString(req.getAccount(), 4);
|
||||||
|
entity.setSalt(salt);
|
||||||
|
String password = enableDefaultPassword ? defaultPassword : PasswordUtil.generatePassword();
|
||||||
|
entity.setPassword(SaSecureUtil.md5(req.getAccount().concat(password).concat(salt)));
|
||||||
this.save(entity);
|
this.save(entity);
|
||||||
|
return SaBase64Util.encode(password);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -103,6 +121,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> impleme
|
||||||
}
|
}
|
||||||
UserEntity entity = Converts.INSTANCE.toUserEntity(req);
|
UserEntity entity = Converts.INSTANCE.toUserEntity(req);
|
||||||
entity.setUserId(userId);
|
entity.setUserId(userId);
|
||||||
|
entity.setAccount(null);
|
||||||
this.updateById(entity);
|
this.updateById(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,10 +135,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> impleme
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Override
|
@Override
|
||||||
public void deleteById(String userId) {
|
public void deleteById(String userId) {
|
||||||
if(null == this.getById(userId)){
|
UserEntity entity = this.getById(userId);
|
||||||
|
if(null == entity){
|
||||||
throw new ServiceException(Message.USER_ID_NOT_EXIST);
|
throw new ServiceException(Message.USER_ID_NOT_EXIST);
|
||||||
}
|
}
|
||||||
this.removeById(userId);
|
entity.setDelFlag(Constants.DEL_FLAG_1);
|
||||||
|
this.updateById(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,12 @@ package com.dite.znpt.util;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
|
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class PasswordUtil {
|
public class PasswordUtil {
|
||||||
private static final PasswordEncoder encoder = new BCryptPasswordEncoder();
|
private static final PasswordEncoder encoder = new BCryptPasswordEncoder();
|
||||||
|
|
||||||
|
@ -13,4 +19,48 @@ public class PasswordUtil {
|
||||||
public static boolean matches(String rawPassword, String encodedPassword) {
|
public static boolean matches(String rawPassword, String encodedPassword) {
|
||||||
return encoder.matches(rawPassword, encodedPassword);
|
return encoder.matches(rawPassword, encodedPassword);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 字符集定义
|
||||||
|
private static final String UPPER_CASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
private static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz";
|
||||||
|
private static final String SPECIAL_CHARACTERS = "!@#$%^&*()-_=+[]{}|;:'\",.<>/?";
|
||||||
|
private static final String DIGITS = "0123456789";
|
||||||
|
|
||||||
|
// 安全随机数生成器
|
||||||
|
private static final Random RANDOM = new SecureRandom();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成随机密码
|
||||||
|
* @return 符合要求的随机密码
|
||||||
|
*/
|
||||||
|
public static String generatePassword() {
|
||||||
|
// 确保密码包含至少一个大写字母、一个小写字母和一个特殊字符
|
||||||
|
List<Character> passwordChars = new ArrayList<>();
|
||||||
|
|
||||||
|
// 1. 添加至少一个大写字母
|
||||||
|
passwordChars.add(UPPER_CASE.charAt(RANDOM.nextInt(UPPER_CASE.length())));
|
||||||
|
|
||||||
|
// 2. 添加至少一个小写字母
|
||||||
|
passwordChars.add(LOWER_CASE.charAt(RANDOM.nextInt(LOWER_CASE.length())));
|
||||||
|
|
||||||
|
// 3. 添加至少一个特殊字符
|
||||||
|
passwordChars.add(SPECIAL_CHARACTERS.charAt(RANDOM.nextInt(SPECIAL_CHARACTERS.length())));
|
||||||
|
|
||||||
|
// 4. 生成剩余字符(8位密码已添加3位,还需5位)
|
||||||
|
String allChars = UPPER_CASE + LOWER_CASE + SPECIAL_CHARACTERS + DIGITS;
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
passwordChars.add(allChars.charAt(RANDOM.nextInt(allChars.length())));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 打乱字符顺序
|
||||||
|
Collections.shuffle(passwordChars, RANDOM);
|
||||||
|
|
||||||
|
// 6. 转换为字符串
|
||||||
|
StringBuilder password = new StringBuilder();
|
||||||
|
for (Character c : passwordChars) {
|
||||||
|
password.append(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
return password.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.dite.znpt.util;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Bear.G
|
||||||
|
* @date 2025/5/19/周一 15:09
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface ValidationGroup {
|
||||||
|
interface Insert {} // 增
|
||||||
|
interface Update {} // 改
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.CombinedDictListReq;
|
import com.dite.znpt.domain.vo.CombinedDictListReq;
|
||||||
import com.dite.znpt.domain.vo.CombinedDictResp;
|
import com.dite.znpt.domain.vo.CombinedDictResp;
|
||||||
import com.dite.znpt.domain.entity.CombinedDictEntity;
|
import com.dite.znpt.domain.entity.CombinedDictEntity;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.DefectListReq;
|
import com.dite.znpt.domain.vo.DefectListReq;
|
||||||
import com.dite.znpt.domain.vo.DefectReq;
|
import com.dite.znpt.domain.vo.DefectReq;
|
||||||
import com.dite.znpt.domain.vo.DefectResp;
|
import com.dite.znpt.domain.vo.DefectResp;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.FileInfoListReq;
|
import com.dite.znpt.domain.vo.FileInfoListReq;
|
||||||
import com.dite.znpt.domain.vo.FileInfoResp;
|
import com.dite.znpt.domain.vo.FileInfoResp;
|
||||||
import com.dite.znpt.domain.entity.FileInfoEntity;
|
import com.dite.znpt.domain.entity.FileInfoEntity;
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Bear.G
|
||||||
|
* @date 2025/5/19/周一 14:32
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Api(tags = "登录")
|
||||||
|
@RestController
|
||||||
|
public class LoginController {
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.PartListReq;
|
import com.dite.znpt.domain.vo.PartListReq;
|
||||||
import com.dite.znpt.domain.vo.PartListResp;
|
import com.dite.znpt.domain.vo.PartListResp;
|
||||||
import com.dite.znpt.domain.vo.PartReq;
|
import com.dite.znpt.domain.vo.PartReq;
|
||||||
|
@ -10,12 +10,14 @@ import com.dite.znpt.domain.entity.PartEntity;
|
||||||
import com.dite.znpt.service.PartService;
|
import com.dite.znpt.service.PartService;
|
||||||
import com.dite.znpt.domain.Result;
|
import com.dite.znpt.domain.Result;
|
||||||
import com.dite.znpt.domain.PageResult;
|
import com.dite.znpt.domain.PageResult;
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
||||||
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
||||||
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
@ -32,39 +34,39 @@ public class PartController {
|
||||||
@Resource
|
@Resource
|
||||||
private PartService partService;
|
private PartService partService;
|
||||||
|
|
||||||
@ApiOperation(value = "分页获取部件列表", httpMethod = "GET")
|
@ApiOperation(value = "分页查询部件信息列表", httpMethod = "GET")
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
public PageResult<PartListResp> page(PartListReq partReq) {
|
public PageResult<PartListResp> page(PartListReq partReq) {
|
||||||
return PageResult.ok(partService.page(partReq));
|
return PageResult.ok(partService.page(partReq));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "获取部件列表", httpMethod = "GET")
|
@ApiOperation(value = "查询部件信息列表", httpMethod = "GET")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public Result<List<PartListResp>> list(PartListReq partReq) {
|
public Result<List<PartListResp>> list(PartListReq partReq) {
|
||||||
return Result.ok(partService.list(partReq));
|
return Result.ok(partService.list(partReq));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "根据Id获取详细信息", httpMethod = "GET")
|
@ApiOperation(value = "查询部件信息详情", httpMethod = "GET")
|
||||||
@GetMapping("/detail/{partId}")
|
@GetMapping("/detail/{partId}")
|
||||||
public Result<PartResp> detail(@PathVariable String partId) {
|
public Result<PartResp> detail(@PathVariable String partId) {
|
||||||
return Result.ok(partService.detail(partId));
|
return Result.ok(partService.detail(partId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "新增", httpMethod = "POST")
|
@ApiOperation(value = "新增部件信息", httpMethod = "POST")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public Result<Object> add(@RequestBody PartReq req) {
|
public Result<Object> add(@Validated(ValidationGroup.Insert.class) @RequestBody PartReq req) {
|
||||||
partService.save(req);
|
partService.save(req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "修改", httpMethod = "PUT")
|
@ApiOperation(value = "修改部件信息", httpMethod = "PUT")
|
||||||
@PutMapping("/{partId}")
|
@PutMapping("/{partId}")
|
||||||
public Result<Object> edit(@PathVariable String partId, @RequestBody PartReq req) {
|
public Result<Object> edit(@Validated(ValidationGroup.Update.class) @PathVariable String partId, @RequestBody PartReq req) {
|
||||||
partService.update(partId, req);
|
partService.update(partId, req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除", httpMethod = "DELETE")
|
@ApiOperation(value = "删除部件信息", httpMethod = "DELETE")
|
||||||
@DeleteMapping("/{partId}")
|
@DeleteMapping("/{partId}")
|
||||||
public Result<Object> remove(@PathVariable String partId) {
|
public Result<Object> remove(@PathVariable String partId) {
|
||||||
partService.deleteById(partId);
|
partService.deleteById(partId);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.ProjectListReq;
|
import com.dite.znpt.domain.vo.ProjectListReq;
|
||||||
import com.dite.znpt.domain.vo.ProjectListResp;
|
import com.dite.znpt.domain.vo.ProjectListResp;
|
||||||
import com.dite.znpt.domain.vo.ProjectReq;
|
import com.dite.znpt.domain.vo.ProjectReq;
|
||||||
|
@ -10,12 +10,14 @@ import com.dite.znpt.domain.entity.ProjectEntity;
|
||||||
import com.dite.znpt.service.ProjectService;
|
import com.dite.znpt.service.ProjectService;
|
||||||
import com.dite.znpt.domain.Result;
|
import com.dite.znpt.domain.Result;
|
||||||
import com.dite.znpt.domain.PageResult;
|
import com.dite.znpt.domain.PageResult;
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
||||||
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
||||||
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
@ -52,14 +54,14 @@ public class ProjectController {
|
||||||
|
|
||||||
@ApiOperation(value = "新增项目信息", httpMethod = "POST")
|
@ApiOperation(value = "新增项目信息", httpMethod = "POST")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public Result add(@RequestBody ProjectReq req) {
|
public Result add(@Validated(ValidationGroup.Insert.class) @RequestBody ProjectReq req) {
|
||||||
projectService.save(req);
|
projectService.save(req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "修改项目信息", httpMethod = "PUT")
|
@ApiOperation(value = "修改项目信息", httpMethod = "PUT")
|
||||||
@PutMapping("/{projectId}")
|
@PutMapping("/{projectId}")
|
||||||
public Result<Object> edit(@PathVariable String projectId, @RequestBody ProjectReq req) {
|
public Result<Object> edit(@PathVariable String projectId, @Validated(ValidationGroup.Update.class) @RequestBody ProjectReq req) {
|
||||||
projectService.update(projectId, req);
|
projectService.update(projectId, req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.TConstructionListReq;
|
import com.dite.znpt.domain.vo.TConstructionListReq;
|
||||||
import com.dite.znpt.domain.vo.TConstructionResp;
|
import com.dite.znpt.domain.vo.TConstructionResp;
|
||||||
import com.dite.znpt.domain.entity.TConstructionEntity;
|
import com.dite.znpt.domain.entity.TConstructionEntity;
|
||||||
|
|
|
@ -1,18 +1,20 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.*;
|
import com.dite.znpt.domain.vo.*;
|
||||||
import com.dite.znpt.domain.entity.TurbineEntity;
|
import com.dite.znpt.domain.entity.TurbineEntity;
|
||||||
import com.dite.znpt.service.TurbineService;
|
import com.dite.znpt.service.TurbineService;
|
||||||
import com.dite.znpt.domain.Result;
|
import com.dite.znpt.domain.Result;
|
||||||
import com.dite.znpt.domain.PageResult;
|
import com.dite.znpt.domain.PageResult;
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
||||||
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
||||||
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
@ -61,14 +63,14 @@ public class TurbineController {
|
||||||
|
|
||||||
@ApiOperation(value = "新增机组", httpMethod = "POST")
|
@ApiOperation(value = "新增机组", httpMethod = "POST")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public Result<Object> add(@RequestBody TurbineReq req) {
|
public Result<Object> add(@Validated(ValidationGroup.Insert.class) @RequestBody TurbineReq req) {
|
||||||
turbineService.save(req);
|
turbineService.save(req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "修改机组", httpMethod = "PUT")
|
@ApiOperation(value = "修改机组", httpMethod = "PUT")
|
||||||
@PutMapping("/{turbineId}")
|
@PutMapping("/{turbineId}")
|
||||||
public Result edit(@PathVariable String turbineId, @RequestBody TurbineReq req) {
|
public Result edit(@PathVariable String turbineId, @Validated(ValidationGroup.Insert.class) @RequestBody TurbineReq req) {
|
||||||
turbineService.update(turbineId, req);
|
turbineService.update(turbineId, req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,15 +8,18 @@ import com.dite.znpt.domain.entity.UserEntity;
|
||||||
import com.dite.znpt.service.UserService;
|
import com.dite.znpt.service.UserService;
|
||||||
import com.dite.znpt.domain.Result;
|
import com.dite.znpt.domain.Result;
|
||||||
import com.dite.znpt.domain.PageResult;
|
import com.dite.znpt.domain.PageResult;
|
||||||
|
import com.dite.znpt.util.ValidationGroup;
|
||||||
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
||||||
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
||||||
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,14 +53,13 @@ public class UserController {
|
||||||
|
|
||||||
@ApiOperation(value = "新增用户信息", httpMethod = "POST")
|
@ApiOperation(value = "新增用户信息", httpMethod = "POST")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public Result<Object> add(@RequestBody UserReq req) {
|
public Result<Object> add(@Validated(ValidationGroup.Insert.class) @RequestBody UserReq req) {
|
||||||
userService.save(req);
|
return Result.ok(userService.save(req));
|
||||||
return Result.ok();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "修改用户信息", httpMethod = "PUT")
|
@ApiOperation(value = "修改用户信息", httpMethod = "PUT")
|
||||||
@PutMapping("/{userId}")
|
@PutMapping("/{userId}")
|
||||||
public Result<Object> edit(@PathVariable String userId, @RequestBody UserReq req) {
|
public Result<Object> edit(@PathVariable String userId, @Validated(ValidationGroup.Update.class) @RequestBody UserReq req) {
|
||||||
userService.update(userId, req);
|
userService.update(userId, req);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.dite.znpt.web.controller;
|
package com.dite.znpt.web.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.dite.znpt.domain.Constants;
|
import com.dite.znpt.constant.Constants;
|
||||||
import com.dite.znpt.domain.vo.WeatherTypeListReq;
|
import com.dite.znpt.domain.vo.WeatherTypeListReq;
|
||||||
import com.dite.znpt.domain.vo.WeatherTypeResp;
|
import com.dite.znpt.domain.vo.WeatherTypeResp;
|
||||||
import com.dite.znpt.domain.entity.WeatherTypeEntity;
|
import com.dite.znpt.domain.entity.WeatherTypeEntity;
|
||||||
|
|
Loading…
Reference in New Issue