提交 29382047 作者: Administrator

Merge remote-tracking branch 'origin/dev_lijing' into dev_tzl

...@@ -73,4 +73,7 @@ dependencies { ...@@ -73,4 +73,7 @@ dependencies {
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
implementation "org.springframework.cloud:spring-cloud-starter-openfeign:${openfeignVersion}" implementation "org.springframework.cloud:spring-cloud-starter-openfeign:${openfeignVersion}"
// feign-okhttp
implementation "io.github.openfeign:feign-okhttp:${feignOkhttpVersion}"
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.config;
import feign.Feign;
import java.util.concurrent.TimeUnit;
import okhttp3.ConnectionPool;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* feignOkhttp
*
* @author LJ-2204
* @date 2022/4/27
*/
@Configuration
@ConditionalOnClass(Feign.class)
@AutoConfigureBefore(FeignAutoConfiguration.class)
public class FeignOkHttpConfig {
@Bean
public okhttp3.OkHttpClient okHttpClient() {
return new okhttp3.OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(120, TimeUnit.SECONDS)
.connectionPool(new ConnectionPool())
.build();
}
}
...@@ -99,6 +99,10 @@ public class LocationTag extends BasicEntity implements Serializable { ...@@ -99,6 +99,10 @@ public class LocationTag extends BasicEntity implements Serializable {
@Comment("电量单位") @Comment("电量单位")
String voltUnit; String voltUnit;
@FieldMapping
@Comment("类型(1:内部/2:访客/3:承包商)")
Integer category;
@FieldMapping(value = "raiseTimestamp", desc = "更新时间戳", type = Long.class) @FieldMapping(value = "raiseTimestamp", desc = "更新时间戳", type = Long.class)
@Comment("更新时间") @Comment("更新时间")
LocalDateTime updateTime; LocalDateTime updateTime;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.dept; package com.yiring.app.excel.dept;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn; import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel; import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.auth.domain.dept.Department; import com.yiring.auth.domain.dept.Department;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -33,19 +30,22 @@ public class DepartmentExportExcel implements Serializable { ...@@ -33,19 +30,22 @@ public class DepartmentExportExcel implements Serializable {
@ExcelColumn(title = "部门名称") @ExcelColumn(title = "部门名称")
String name; String name;
@ExcelColumn(title = "创建时间") @ExcelColumn(title = "负责人")
String createTime; String realName;
public static List<DepartmentExportExcel> transforms(List<Department> departments) { @ExcelColumn(title = "手机号")
return departments String mobile;
.stream()
.map(department -> @ExcelColumn(title = "是否启用")
DepartmentExportExcel String enable;
.builder()
.name(department.getName()) public static DepartmentExportExcel transform(Department department) {
.createTime(LocalDateTimeUtil.format(department.getCreateTime(), "yyyy-MM-dd HH:mm:ss")) return DepartmentExportExcel
.build() .builder()
) .name(department.getName())
.collect(Collectors.toList()); .realName(department.getLeader().getRealName())
.mobile(department.getLeader().getMobile())
.enable(department.getEnable() ? "启用" : "禁用")
.build();
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.dept;
import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.auth.domain.dept.Department;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门导入
*
* @author LJ-2204
* @date 2022/4/25
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class DepartmentImportExcel implements Serializable {
@Serial
private static final long serialVersionUID = -1287875741111587840L;
@ExcelColumn(index = 0)
@NotNull
String name;
@ExcelColumn(index = 1)
String realName;
@ExcelColumn(index = 2)
String mobile;
@ExcelColumn(index = 3)
String enable;
public static Department transform(DepartmentImportExcel departmentImportExcel) {
return Department
.builder()
.name(departmentImportExcel.getName())
.enable(StrUtil.equals(departmentImportExcel.getEnable(), "启用"))
.build();
}
}
...@@ -7,8 +7,6 @@ import com.github.liaochong.myexcel.core.annotation.ExcelModel; ...@@ -7,8 +7,6 @@ import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.domain.location.LocationTag; import com.yiring.app.domain.location.LocationTag;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -51,20 +49,15 @@ public class LocationTagExportExcel implements Serializable { ...@@ -51,20 +49,15 @@ public class LocationTagExportExcel implements Serializable {
@ExcelColumn(title = "最近更新时间") @ExcelColumn(title = "最近更新时间")
String updateTime; String updateTime;
public static List<LocationTagExportExcel> transforms(List<LocationTag> locationTags) { public static LocationTagExportExcel transform(LocationTag locationTag) {
return locationTags return LocationTagExportExcel
.stream() .builder()
.map(locationTag -> .code(locationTag.getCode())
LocationTagExportExcel .type(locationTag.getType())
.builder() .silent(locationTag.getSilent())
.code(locationTag.getCode()) .imei(locationTag.getImei())
.type(locationTag.getType()) .volt(locationTag.getVolt())
.silent(locationTag.getSilent()) .updateTime(LocalDateTimeUtil.format(locationTag.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
.imei(locationTag.getImei()) .build();
.volt(locationTag.getVolt())
.updateTime(LocalDateTimeUtil.format(locationTag.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
.build()
)
.collect(Collectors.toList());
} }
} }
...@@ -36,12 +36,12 @@ public class LocationTagImportExcel implements Serializable { ...@@ -36,12 +36,12 @@ public class LocationTagImportExcel implements Serializable {
@ExcelColumn(index = 2) @ExcelColumn(index = 2)
String imei; String imei;
public LocationTag transform() { public static LocationTag transform(LocationTagImportExcel locationTagImportExcel) {
return LocationTag return LocationTag
.builder() .builder()
.code(this.code) .code(locationTagImportExcel.code)
.type(LocationTag.Type.valueOf(this.type)) .type(LocationTag.Type.valueOf(locationTagImportExcel.type))
.imei(this.imei) .imei(locationTagImportExcel.imei)
.createTime(LocalDateTime.now()) .createTime(LocalDateTime.now())
.build(); .build();
} }
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.user; package com.yiring.app.excel.user;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn; import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * 用户导出
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/24 * @date 2022/4/24
...@@ -31,19 +28,49 @@ public class UserExportExcel implements Serializable { ...@@ -31,19 +28,49 @@ public class UserExportExcel implements Serializable {
@ExcelColumn(title = "真实姓名") @ExcelColumn(title = "真实姓名")
String realName; String realName;
@ExcelColumn(title = "创建时间") @ExcelColumn(title = "工号")
String createTime; String uuid;
public static List<UserExportExcel> transforms(List<UserVo> userVos) { // 图标类型
return userVos @ExcelColumn(title = "图标类型")
.stream() String type;
.map(userVo ->
UserExportExcel // 手机号
.builder() @ExcelColumn(title = "手机号")
.realName(userVo.getRealName()) String mobile;
.createTime(LocalDateTimeUtil.format(userVo.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.build() // 部门id
) @ExcelColumn(title = "部门名称")
.collect(Collectors.toList()); String deptName;
// 职位id
@ExcelColumn(title = "职位名称")
String postName;
// 标签号
@ExcelColumn(title = "标签号")
String code;
// 性别
@ExcelColumn(title = "性别")
Boolean gender;
// 是否为特殊人员
@ExcelColumn(title = "是否为特殊人员")
Boolean isSpecial;
public static UserExportExcel transform(UserVo userVo) {
return UserExportExcel
.builder()
.realName(userVo.getRealName())
.uuid(userVo.getUuid())
.type(userVo.getType().text())
.mobile(userVo.getMobile())
.deptName(userVo.getDepartment())
.postName(userVo.getPost())
.code(userVo.getCode())
.gender(userVo.getGender())
.isSpecial(userVo.getIsSpecial())
.build();
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.user;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.auth.domain.user.User;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 用户导入
*
* @author LJ-2204
* @date 2022/4/25
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserImportExcel implements Serializable {
@Serial
private static final long serialVersionUID = 3471291755743945051L;
// 姓名
@ExcelColumn(index = 0)
String realName;
// 工号
@ExcelColumn(index = 1)
String uuid;
// 图标类型
@ExcelColumn(index = 2)
String type;
// 手机号
@ExcelColumn(index = 3)
String mobile;
// 部门id
@ExcelColumn(index = 4)
String deptName;
// 职位id
@ExcelColumn(index = 5)
String postName;
// 标签号
@ExcelColumn(index = 6)
String code;
// 性别
@ExcelColumn(index = 7)
Boolean gender;
// 是否为特殊人员
@ExcelColumn(index = 8)
Boolean isSpecial;
public static User transform(UserImportExcel userImportExcel) {
return User
.builder()
.realName(userImportExcel.getRealName())
.uuid(userImportExcel.getUuid())
.type(User.Type.valueOf(userImportExcel.getType()))
.mobile(userImportExcel.getMobile())
.gender(userImportExcel.getGender())
.isSpecial(userImportExcel.getIsSpecial())
.build();
}
}
...@@ -31,7 +31,7 @@ public class DepartmentAddParam implements Serializable { ...@@ -31,7 +31,7 @@ public class DepartmentAddParam implements Serializable {
@ApiModelProperty(value = "上级部门", example = "1", required = true) @ApiModelProperty(value = "上级部门", example = "1", required = true)
@NotNull @NotNull
Long pid; Long id;
@ApiModelProperty(value = "名称", example = "Java", required = true) @ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull @NotNull
...@@ -43,13 +43,13 @@ public class DepartmentAddParam implements Serializable { ...@@ -43,13 +43,13 @@ public class DepartmentAddParam implements Serializable {
@ApiModelProperty(value = "部门状态", example = "1") @ApiModelProperty(value = "部门状态", example = "1")
Boolean enable; Boolean enable;
public Department transform() { public static Department transform(DepartmentAddParam departmentAddParam) {
return Department return Department
.builder() .builder()
.pid(this.pid) .pid(departmentAddParam.getId())
.name(this.name) .name(departmentAddParam.getName())
.leader(User.builder().id(this.leaderId).build()) .leader(User.builder().id(departmentAddParam.getLeaderId()).build())
.enable(this.enable) .enable(departmentAddParam.getEnable())
.createTime(LocalDateTime.now()) .createTime(LocalDateTime.now())
.updateTime(LocalDateTime.now()) .updateTime(LocalDateTime.now())
.build(); .build();
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.dept;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门导入
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("DepartmentExportParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class DepartmentExportParam implements Serializable {
@Serial
private static final long serialVersionUID = 6314061369190511168L;
@ApiModelProperty(value = "部门状态", example = "启用/禁用")
Boolean enable;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.dept;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门修改入参
*
* @author LJ-2204
* @date 2022/4/24
*/
@ApiModel("DepartmentModifyParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class DepartmentModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 8839239258775446219L;
@ApiModelProperty(value = "主键", example = "1", required = true)
@NotNull
Long id;
@ApiModelProperty(value = "上级部门", example = "1", required = true)
@NotNull
Long pid;
@ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull
String name;
@ApiModelProperty(value = "负责人", example = "1")
Long leaderId;
public Department transform() {
return Department
.builder()
.id(this.id)
.pid(this.pid)
.name(this.name)
.leader(User.builder().id(this.leaderId).build())
.build();
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location; package com.yiring.app.param.location.tag;
import com.yiring.app.domain.location.LocationTag; import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -39,12 +39,12 @@ public class LocationTagAddParam implements Serializable { ...@@ -39,12 +39,12 @@ public class LocationTagAddParam implements Serializable {
@ApiModelProperty(value = "imei 设备编码标识", example = "88888888") @ApiModelProperty(value = "imei 设备编码标识", example = "88888888")
String imei; String imei;
public LocationTag transform() { public static LocationTag transform(LocationTagAddParam locationTagAddParam) {
return LocationTag return LocationTag
.builder() .builder()
.code(this.code) .code(locationTagAddParam.getCode())
.type(this.type) .type(locationTagAddParam.getType())
.imei(this.imei) .imei(locationTagAddParam.getImei())
.used(false) .used(false)
.silent(false) .silent(false)
.volt(0) .volt(0)
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location; package com.yiring.app.param.location.tag;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.tag;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("LocationTagExportParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagExportParam implements Serializable {
@Serial
private static final long serialVersionUID = -344458727454884014L;
@ApiModelProperty(value = "编号", example = "BTT88888888")
String code;
@ApiModelProperty(value = "标签类型", example = "蓝牙人员定位卡")
LocationTag.Type type;
@ApiModelProperty(value = "状态", example = "true")
Boolean silent;
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location; package com.yiring.app.param.location.tag;
import com.yiring.app.domain.location.LocationTag; import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location; package com.yiring.app.param.location.tag;
import com.yiring.app.domain.location.LocationTag; import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -38,7 +38,13 @@ public class LocationTagModifyParam implements Serializable { ...@@ -38,7 +38,13 @@ public class LocationTagModifyParam implements Serializable {
@ApiModelProperty(value = "imei 设备编码标识", example = "88888888") @ApiModelProperty(value = "imei 设备编码标识", example = "88888888")
String imei; String imei;
public LocationTag transform() { public static LocationTag transform(LocationTagModifyParam locationTagModifyParam) {
return LocationTag.builder().code(this.code).type(this.type).imei(this.imei).build(); return LocationTag
.builder()
.id(locationTagModifyParam.id)
.code(locationTagModifyParam.code)
.type(locationTagModifyParam.type)
.imei(locationTagModifyParam.imei)
.build();
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.tag;
import io.swagger.annotations.ApiModel;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 标签分配
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("LocationTagTypeFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagTypeFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -647961131755069990L;
String code;
Integer category;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.post;
import com.yiring.auth.domain.post.Post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 职位新增
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("PostAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class PostAddParam implements Serializable {
@Serial
private static final long serialVersionUID = -7451952048517810923L;
@ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull(message = "名称不能为空")
String name;
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enable;
public static Post transform(PostAddParam param) {
return Post.builder().name(param.getName()).describe(param.getDescribe()).enable(param.getEnable()).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 职位导入入参
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("PostExportParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class PostExportParam implements Serializable {
@Serial
private static final long serialVersionUID = 86398868302287802L;
@ApiModelProperty(value = "名称", example = "Java")
String name;
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enable;
}
...@@ -9,7 +9,7 @@ import lombok.*; ...@@ -9,7 +9,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 职位分页入参 * 职位条件入参
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/13 * @date 2022/4/13
*/ */
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.post;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.yiring.auth.domain.post.Post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 职位修改
*
* @author LJ-2204
* @date 2022/4/25
*/
@ApiModel("PostModifyParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class PostModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 9182648236336186660L;
@ApiModelProperty(value = "主键", example = "1", required = true)
@NotNull(message = "编号不能为空")
Long id;
@ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull(message = "名称不能为空")
String name;
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enable;
public Post transform(PostModifyParam postParam) {
return Post
.builder()
.id(postParam.getId())
.name(postParam.getName())
.describe(postParam.getDescribe())
.enable(postParam.getEnable())
.createTime(LocalDateTimeUtil.now())
.build();
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.post; package com.yiring.app.param.post;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.yiring.auth.domain.post.Post; import com.yiring.auth.domain.post.Post;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -28,16 +29,22 @@ public class PostParam implements Serializable { ...@@ -28,16 +29,22 @@ public class PostParam implements Serializable {
private static final long serialVersionUID = 5247408856592333466L; private static final long serialVersionUID = 5247408856592333466L;
@ApiModelProperty(value = "名称", example = "Java", required = true) @ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull @NotNull(message = "名称不能为空")
String name; String name;
@ApiModelProperty(value = "描述", example = "描述", required = true) @ApiModelProperty(value = "描述", example = "描述")
String describe; String describe;
@ApiModelProperty(value = "是否启用", example = "true", required = true) @ApiModelProperty(value = "是否启用", example = "true")
Boolean enable; Boolean enable;
public Post transform() { public static Post transform(PostParam postParam) {
return Post.builder().name(this.name).describe(this.describe).enable(this.enable).build(); return Post
.builder()
.name(postParam.name)
.describe(postParam.describe)
.enable(postParam.enable)
.createTime(LocalDateTimeUtil.now())
.build();
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.user;
import cn.hutool.core.convert.Convert;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 用户新增入参
*
* @author LJ-2204
* @date 2022/4/25
*/
@ApiModel("UserAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserAddParam implements Serializable {
@Serial
private static final long serialVersionUID = -4976674015255774601L;
@ApiModelProperty(value = "头像", example = "url")
String avatar;
@ApiModelProperty(value = "真实姓名", example = "张三", required = true)
String realName;
@ApiModelProperty(value = "电话", example = "1888888888", required = true)
String mobile;
@ApiModelProperty(value = "图标类型", example = "EMPLOYEES人员、GUEST访客", required = true)
User.Type type;
@ApiModelProperty(value = "性别", example = "0/1")
Boolean gender;
@ApiModelProperty(value = "归属部门", example = "1", required = true)
String deptId;
@ApiModelProperty(value = "工号", example = "1888888888", required = true)
String uuid;
@ApiModelProperty(value = "职位", example = "1")
String postId;
@ApiModelProperty(value = "是否特殊人员", example = "0/1", required = true)
Boolean isSpecial;
public static User transform(UserAddParam userAddParam) {
return User
.builder()
.avatar(userAddParam.getAvatar())
.realName(userAddParam.getRealName())
.mobile(userAddParam.getMobile())
.type(userAddParam.getType())
.gender(userAddParam.getGender())
.department(Department.builder().id(Convert.toLong(userAddParam.getDeptId())).build())
.uuid(userAddParam.getUuid())
.post(Post.builder().id(Convert.toLong(userAddParam.getPostId())).build())
.isSpecial(userAddParam.getIsSpecial())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.user;
import cn.hutool.core.convert.Convert;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 用户修改入参
*
* @author LJ-2204
* @date 2022/4/25
*/
@ApiModel("UserModifyParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = -5475181111082029313L;
@ApiModelProperty(value = "主键", example = "11", required = true)
@NotNull
Long id;
@ApiModelProperty(value = "头像", example = "url")
String avatar;
@ApiModelProperty(value = "真实姓名", example = "张三", required = true)
@NotNull
String realName;
@ApiModelProperty(value = "电话", example = "1888888888", required = true)
@NotNull
String mobile;
@ApiModelProperty(value = "图标类型", example = "EMPLOYEES人员、GUEST访客", required = true)
@NotNull
User.Type type;
@ApiModelProperty(value = "性别", example = "0/1")
Boolean gender;
@ApiModelProperty(value = "归属部门", example = "1", required = true)
@NotNull
String deptId;
@ApiModelProperty(value = "工号", example = "1888888888", required = true)
@NotNull
String uuid;
@ApiModelProperty(value = "职位", example = "1")
String postId;
@ApiModelProperty(value = "是否特殊人员", example = "0/1", required = true)
@NotNull
Boolean isSpecial;
public User transform() {
return User
.builder()
.id(this.id)
.avatar(this.avatar)
.realName(this.realName)
.mobile(this.mobile)
.type(this.type)
.gender(this.gender)
.department(Department.builder().id(Convert.toLong(this.deptId)).build())
.uuid(this.uuid)
.post(Post.builder().id(Convert.toLong(this.postId)).build())
.isSpecial(this.isSpecial)
.build();
}
}
...@@ -2,13 +2,19 @@ ...@@ -2,13 +2,19 @@
package com.yiring.app.service.dept; package com.yiring.app.service.dept;
import com.yiring.app.param.dept.DepartmentAddParam; import com.yiring.app.param.dept.DepartmentAddParam;
import com.yiring.app.param.dept.DepartmentExportParam;
import com.yiring.app.param.dept.DepartmentFindParam; import com.yiring.app.param.dept.DepartmentFindParam;
import com.yiring.app.param.dept.DepartmentModifyParam;
import com.yiring.app.vo.dept.DepartmentInfoVo; import com.yiring.app.vo.dept.DepartmentInfoVo;
import com.yiring.app.vo.dept.DepartmentVo; import com.yiring.app.vo.dept.DepartmentVo;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.HashMap;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 部门管理 * 部门管理
...@@ -18,17 +24,17 @@ import javax.servlet.http.HttpServletResponse; ...@@ -18,17 +24,17 @@ import javax.servlet.http.HttpServletResponse;
public interface DepartmentService { public interface DepartmentService {
/** /**
* 新增部门 * 新增部门
* @param param DepartmentAddParam * @param departmentAddParam DepartmentAddParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> addDepartment(DepartmentAddParam param); Result<String> addDepartment(DepartmentAddParam departmentAddParam);
/** /**
* 查询树状图 * 查询树状图
* @param param DepartmentFindParam * @param departmentFindParam DepartmentFindParam
* @return Result<PageVo<DepartmentVo>> * @return Result<PageVo<DepartmentVo>>
*/ */
Result<PageVo<DepartmentVo>> findDepartmentTree(DepartmentFindParam param); Result<PageVo<DepartmentVo>> findDepartmentTree(DepartmentFindParam departmentFindParam);
/** /**
* 根据id查询详细信息 * 根据id查询详细信息
...@@ -39,10 +45,10 @@ public interface DepartmentService { ...@@ -39,10 +45,10 @@ public interface DepartmentService {
/** /**
* 导出部门 * 导出部门
* @param param DepartmentFindParam * @param departmentExportParam DepartmentFindParam
* @param response HttpServletResponse * @param response HttpServletResponse
*/ */
void exportDepartment(DepartmentFindParam param, HttpServletResponse response); void exportDepartment(DepartmentExportParam departmentExportParam, HttpServletResponse response);
/** /**
* 逻辑删除部门 * 逻辑删除部门
...@@ -57,4 +63,32 @@ public interface DepartmentService { ...@@ -57,4 +63,32 @@ public interface DepartmentService {
* @return Result<String> * @return Result<String>
*/ */
Result<String> stateDepartment(IdParam idParam); Result<String> stateDepartment(IdParam idParam);
/**
* 部门添加岗位
* @param idParam IdParam
* @param idsParam IdsParam
* @return Result<String>
*/
Result<String> deptBingPost(IdParam idParam, IdsParam idsParam);
/**
* 部门修改
* @param departmentModifyParam DepartmentModifyParam
* @return Result<String>
*/
Result<String> modifyDept(DepartmentModifyParam departmentModifyParam);
/**
* 导入部门
* @param file MultipartFile
* @return Result<String>
*/
Result<String> importDepartment(MultipartFile file);
/**
* 部门名称字符串形式
* @return HashMap<String, Department>
*/
HashMap<String, Department> getStringDepartmentHashMap();
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location; package com.yiring.app.service.location.tag;
import com.yiring.app.param.location.LocationTagAddParam; import com.yiring.app.param.location.tag.*;
import com.yiring.app.param.location.LocationTagDeleteParam; import com.yiring.app.vo.location.tag.LocationTagIndexVo;
import com.yiring.app.param.location.LocationTagFindParam; import com.yiring.app.vo.location.tag.LocationTagVo;
import com.yiring.app.param.location.LocationTagModifyParam;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -20,31 +19,31 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -20,31 +19,31 @@ import org.springframework.web.multipart.MultipartFile;
public interface LocationTagService { public interface LocationTagService {
/** /**
* 新增定位标签 * 新增定位标签
* @param param 入参 * @param locationTagAddParam LocationTagAddParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> addLocationTag(LocationTagAddParam param); Result<String> addLocationTag(LocationTagAddParam locationTagAddParam);
/** /**
* 分页查询 * 分页查询
* @param param 入参 * @param locationTagFindParam LocationTagFindParam
* @return Result<PageVo<LocationTagVo>> * @return Result<PageVo<LocationTagVo>>
*/ */
Result<PageVo<LocationTagVo>> findLocationTagPage(LocationTagFindParam param, PageParam pageParam); Result<PageVo<LocationTagVo>> findLocationTagPage(LocationTagFindParam locationTagFindParam, PageParam pageParam);
/** /**
* 销毁定位标签 * 销毁定位标签
* @param param 入参 * @param locationTagDeleteParam 入参
* @return Result<String> * @return Result<String>
*/ */
Result<String> deleteLocationTag(LocationTagDeleteParam param); Result<String> deleteLocationTag(LocationTagDeleteParam locationTagDeleteParam);
/** /**
* 导出定位标签 * 导出定位标签
* @param param 入参 * @param locationTagExportParam 入参
* @param response 响应信息 * @param response 响应信息
*/ */
void exportLocationTagInfo(LocationTagFindParam param, HttpServletResponse response); void exportLocationTagInfo(LocationTagExportParam locationTagExportParam, HttpServletResponse response);
/** /**
* 导入定位标签 * 导入定位标签
...@@ -55,8 +54,15 @@ public interface LocationTagService { ...@@ -55,8 +54,15 @@ public interface LocationTagService {
/** /**
* 修改定位标签 * 修改定位标签
* @param param 入参 * @param locationTagModifyParam 入参
* @return Result<String> * @return Result<String>
*/ */
Result<String> modifyLocationTag(LocationTagModifyParam param); Result<String> modifyLocationTag(LocationTagModifyParam locationTagModifyParam);
/**
* 检索标签
* @param indexParam IndexParam
* @return Result<PageVo<LocationTagIndexVo>>
*/
Result<PageVo<LocationTagIndexVo>> indexLocationTag(IndexParam indexParam);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location.tag;
import com.yiring.app.param.location.tag.LocationTagTypeFindParam;
import com.yiring.app.vo.location.tag.LocationTagTypeVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* 标签分配
*
* @author LJ-2204
* @date 2022/4/27
*/
public interface LocationTagTypeService {
/**
* 分页查询
* @param locationTagTypeFindParam LocationTagTypeFindParam
* @param pageParam PageParam
* @return Result<PageVo<LocationTagTypeVo>>
*/
Result<PageVo<LocationTagTypeVo>> findLocationTagType(
LocationTagTypeFindParam locationTagTypeFindParam,
PageParam pageParam
);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location.tag.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.yiring.app.domain.location.LocationTag;
import com.yiring.app.domain.location.LocationTagRepository;
import com.yiring.app.param.location.tag.LocationTagTypeFindParam;
import com.yiring.app.service.location.tag.LocationTagTypeService;
import com.yiring.app.vo.location.tag.LocationTagTypeVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 部门信息控制器
*
* @author LJ-2204
* @date 2022/4/27
*/
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class LocationTagTypeServiceImpl implements LocationTagTypeService {
@Resource
LocationTagRepository locationTagRepository;
@Override
public Result<PageVo<LocationTagTypeVo>> findLocationTagType(
LocationTagTypeFindParam locationTagTypeFindParam,
PageParam pageParam
) {
Specification<LocationTag> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (StrUtil.isNotEmpty(locationTagTypeFindParam.getCode())) {
predicates.add(
cb.like(root.get(LocationTag.Fields.code), "%" + locationTagTypeFindParam.getCode() + "%")
);
}
if (ObjectUtil.isNotEmpty(locationTagTypeFindParam.getCategory())) {
predicates.add(cb.equal(root.get(LocationTag.Fields.category), locationTagTypeFindParam.getCategory()));
}
Order order = cb.desc(root.get(LocationTag.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
List<LocationTag> locationTags = locationTagRepository.findAll(specification);
List<LocationTagTypeVo> locationTagTypeVos = locationTags
.stream()
.map(LocationTagTypeVo::transform)
.collect(Collectors.toList());
PageVo<LocationTagTypeVo> pageVo = PageVo.build(locationTagTypeVos, locationTagTypeVos.size());
return Result.ok(pageVo);
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.post; package com.yiring.app.service.post;
import com.yiring.app.param.post.PostFindParam; import com.yiring.app.param.post.*;
import com.yiring.app.param.post.PostParam; import com.yiring.app.vo.post.PostIndexVo;
import com.yiring.app.vo.post.PostInfoVo;
import com.yiring.app.vo.post.PostVo; import com.yiring.app.vo.post.PostVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -18,57 +20,58 @@ import javax.servlet.http.HttpServletResponse; ...@@ -18,57 +20,58 @@ import javax.servlet.http.HttpServletResponse;
public interface PostService { public interface PostService {
/** /**
* 新增职位信息 * 新增职位信息
* @param postParam 入参 * @param postAddParam PostAddParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> addPost(PostParam postParam); Result<String> addPost(PostAddParam postAddParam);
/** /**
* 修改职位信息 * 修改职位信息
* @param postParam 入参 * @param postModifyParam PostModifyParam
* @param idParam id
* @return Result<String> * @return Result<String>
*/ */
Result<String> modifyPost(PostParam postParam, IdParam idParam); Result<String> modifyPost(PostModifyParam postModifyParam);
/** /**
* 销毁职位信息 * 销毁职位信息
* @param idParam id * @param idParam IdParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> deletePost(IdParam idParam); Result<String> deletePost(IdParam idParam);
/** /**
* 职位信息分页 * 职位信息分页
* @param param 入参 * @param postFindParam PostFindParam
* @param pageParam PageParam
* @return Result<PageVo<PostVo>> * @return Result<PageVo<PostVo>>
*/ */
Result<PageVo<PostVo>> findPostPage(PostFindParam param, PageParam pageParam); Result<PageVo<PostVo>> findPostPage(PostFindParam postFindParam, PageParam pageParam);
/** /**
* 详细信息查询 * 详细信息查询
* @param idParam id * @param idParam IdParam
* @return Result<PostVo> * @return Result<PostInfoVo>
*/ */
Result<PostVo> findPostById(IdParam idParam); Result<PostInfoVo> findPostById(IdParam idParam);
/** /**
* 根据名称判断是否存在职业信息 * 根据名称判断是否存在职业信息
* @param name 职业名称 * @param name String
* @return T/F * @return boolean
*/ */
boolean hasPostInfo(String name); boolean hasPostInfo(String name);
/** /**
* 导出职位信息 * 导出职位信息
* @param param 入参 * @param postExportParam PostExportParam
* @param response 响应信息 * @param response HttpServletResponse
*/ */
void exportPostInfo(PostFindParam param, HttpServletResponse response); void exportPostInfo(PostExportParam postExportParam, HttpServletResponse response);
/** /**
* 下拉菜单 * 职位检索
* @return Result<PageVo<PostVo>> * @param indexParam IndexParam
* @return Result<PageVo<PostIndexVo>>
*/ */
Result<PageVo<PostVo>> selectPost(); Result<PageVo<PostIndexVo>> indexPost(IndexParam indexParam);
} }
...@@ -5,9 +5,10 @@ import cn.hutool.core.collection.ListUtil; ...@@ -5,9 +5,10 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder; import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.param.post.PostFindParam; import com.yiring.app.param.post.*;
import com.yiring.app.param.post.PostParam;
import com.yiring.app.service.post.PostService; import com.yiring.app.service.post.PostService;
import com.yiring.app.vo.post.PostIndexVo;
import com.yiring.app.vo.post.PostInfoVo;
import com.yiring.app.vo.post.PostVo; import com.yiring.app.vo.post.PostVo;
import com.yiring.auth.domain.post.Post; import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.post.PostRepository; import com.yiring.auth.domain.post.PostRepository;
...@@ -15,15 +16,15 @@ import com.yiring.auth.excel.post.PostExcel; ...@@ -15,15 +16,15 @@ import com.yiring.auth.excel.post.PostExcel;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.Order; import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
...@@ -49,29 +50,28 @@ public class PostServiceImpl implements PostService { ...@@ -49,29 +50,28 @@ public class PostServiceImpl implements PostService {
PostRepository postRepository; PostRepository postRepository;
@Override @Override
public Result<String> addPost(PostParam postParam) { public Result<String> addPost(PostAddParam postAddParam) {
if (hasPostInfo(postParam.getName())) return Result.no(Status.BAD_REQUEST, "职位已存在"); // 判断职位是否存在
Post post = postParam.transform(); if (hasPostInfo(postAddParam.getName())) return Result.no(Status.BAD_REQUEST, "职位已存在");
post.setCreateTime(LocalDateTime.now());
Post post = PostAddParam.transform(postAddParam);
postRepository.save(post); postRepository.save(post);
return Result.ok(); return Result.ok();
} }
@Override @Override
public Result<String> modifyPost(PostParam postParam, IdParam idParam) { public Result<String> modifyPost(PostModifyParam postModifyParam) {
Optional<Post> postOptional = postRepository.findById(idParam.getId()); // 是否变更 职位名称
if (postOptional.isEmpty()) return Result.no(Status.BAD_REQUEST, "被修改的数据不存在"); long count = postRepository.count(
Example.of(Post.builder().id(postModifyParam.getId()).name(postModifyParam.getName()).build())
Post post = postOptional.get(); );
if (!StrUtil.equals(post.getName(), postParam.getName())) { // 变更处理
if (hasPostInfo(postParam.getName())) return Result.no(Status.BAD_REQUEST, "职位已存在"); if (count == 0 && hasPostInfo(postModifyParam.getName())) {
return Result.no(Status.BAD_REQUEST, "职位名称重复");
} }
post.setName(postParam.getName());
post.setDescribe(postParam.getDescribe()); Post post = postModifyParam.transform(postModifyParam);
post.setEnable(postParam.getEnable());
post.setUpdateTime(LocalDateTime.now());
post.setId(idParam.getId());
postRepository.save(post); postRepository.save(post);
return Result.ok(); return Result.ok();
} }
...@@ -84,31 +84,36 @@ public class PostServiceImpl implements PostService { ...@@ -84,31 +84,36 @@ public class PostServiceImpl implements PostService {
} }
@Override @Override
public Result<PageVo<PostVo>> findPostPage(PostFindParam param, PageParam pageParam) { public Result<PageVo<PostVo>> findPostPage(PostFindParam postFindParam, PageParam pageParam) {
Specification<Post> specification = getPostPageSpecification(param); Specification<Post> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
Sort sort = Sort.by(Sort.Order.desc(Post.Fields.createTime));
if (StrUtil.isNotEmpty(postFindParam.getName())) {
if (ObjectUtil.isNotEmpty(pageParam.getPageSize()) && ObjectUtil.isNotEmpty(pageParam.getPageNo())) { predicates.add(cb.like(root.get(Post.Fields.name), "%" + postFindParam.getName() + "%"));
//分页 }
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<Post> page = postRepository.findAll(specification, pageable); if (ObjectUtil.isNotEmpty(postFindParam.getEnable())) {
List<PostVo> postVos = PostVo.transforms(page.getContent()); predicates.add(cb.equal(root.get(Post.Fields.enable), postFindParam.getEnable()));
PageVo<PostVo> pageVo = PageVo.build(postVos, postVos.size()); }
return Result.ok(pageVo);
} else { Order order = cb.desc(root.get(Post.Fields.createTime));
List<Post> posts = postRepository.findAll(specification, sort);
List<PostVo> postVos = PostVo.transforms(posts); return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
PageVo<PostVo> pageVo = PageVo.build(postVos, postVos.size()); };
return Result.ok(pageVo);
} // 分页
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<Post> page = postRepository.findAll(specification, pageable);
List<PostVo> postVos = page.getContent().stream().map(PostVo::transform).collect(Collectors.toList());
PageVo<PostVo> pageVo = PageVo.build(postVos, postVos.size());
return Result.ok(pageVo);
} }
@Override @Override
public Result<PostVo> findPostById(IdParam idParam) { public Result<PostInfoVo> findPostById(IdParam idParam) {
Post post = postRepository.getById(idParam.getId()); Post post = postRepository.getById(idParam.getId());
PostVo postVo = PostVo.transform(post); PostInfoVo postInfoVo = PostInfoVo.transform(post);
return Result.ok(postVo); return Result.ok(postInfoVo);
} }
@Override @Override
...@@ -118,10 +123,25 @@ public class PostServiceImpl implements PostService { ...@@ -118,10 +123,25 @@ public class PostServiceImpl implements PostService {
} }
@Override @Override
public void exportPostInfo(PostFindParam param, HttpServletResponse response) { public void exportPostInfo(PostExportParam postExportParam, HttpServletResponse response) {
Specification<Post> specification = getPostPageSpecification(param); Specification<Post> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (StrUtil.isNotEmpty(postExportParam.getName())) {
predicates.add(cb.like(root.get(Post.Fields.name), "%" + postExportParam.getName() + "%"));
}
if (ObjectUtil.isNotEmpty(postExportParam.getEnable())) {
predicates.add(cb.equal(root.get(Post.Fields.enable), postExportParam.getEnable()));
}
Order order = cb.desc(root.get(Post.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
List<Post> postList = postRepository.findAll(specification); List<Post> postList = postRepository.findAll(specification);
List<PostExcel> postExcels = PostExcel.transforms(postList); List<PostExcel> postExcels = postList.stream().map(PostExcel::transform).collect(Collectors.toList());
try ( try (
DefaultStreamExcelBuilder<PostExcel> streamExcelBuilder = DefaultStreamExcelBuilder DefaultStreamExcelBuilder<PostExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(PostExcel.class) .of(PostExcel.class)
...@@ -137,9 +157,11 @@ public class PostServiceImpl implements PostService { ...@@ -137,9 +157,11 @@ public class PostServiceImpl implements PostService {
streamExcelBuilder.append(postExcels); streamExcelBuilder.append(postExcels);
String fileName = URLEncoder.encode("职位信息.xlsx", StandardCharsets.UTF_8); String fileName = URLEncoder.encode("职位信息.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream"); response.setContentType("application/octet-stream");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream(); OutputStream out = response.getOutputStream();
Workbook workbook = streamExcelBuilder.fixedTitles().build(); Workbook workbook = streamExcelBuilder.fixedTitles().build();
...@@ -154,28 +176,21 @@ public class PostServiceImpl implements PostService { ...@@ -154,28 +176,21 @@ public class PostServiceImpl implements PostService {
} }
@Override @Override
public Result<PageVo<PostVo>> selectPost() { public Result<PageVo<PostIndexVo>> indexPost(IndexParam indexParam) {
List<Post> posts = postRepository.findAll(); List<Post> posts = postRepository.findAll((root, cq, cb) -> {
List<PostVo> postVos = PostVo.transforms(posts);
PageVo<PostVo> pageVo = PageVo.build(postVos, postVos.size());
return Result.ok(pageVo);
}
private Specification<Post> getPostPageSpecification(PostFindParam param) {
return (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList(); List<Predicate> predicates = ListUtil.toList();
if (StrUtil.isNotEmpty(param.getName())) { if (StrUtil.isNotEmpty(indexParam.getStr())) {
predicates.add(cb.like(root.get(Post.Fields.name), "%" + param.getName() + "%")); predicates.add(cb.like(root.get(Post.Fields.name), "%" + indexParam.getStr() + "%"));
}
if (ObjectUtil.isNotEmpty(param.getEnable())) {
predicates.add(cb.equal(root.get(Post.Fields.enable), param.getEnable()));
} }
Order order = cb.desc(root.get(Post.Fields.createTime)); Order order = cb.desc(root.get(Post.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction(); return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
}; });
List<PostIndexVo> postIndexVos = posts.stream().map(PostIndexVo::transform).collect(Collectors.toList());
PageVo<PostIndexVo> pageVo = PageVo.build(postIndexVos, postIndexVos.size());
return Result.ok(pageVo);
} }
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.user; package com.yiring.app.service.user;
import com.yiring.app.param.user.UserBingTagParam; import com.yiring.app.param.user.*;
import com.yiring.app.param.user.UserFindParam; import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 用户 * 用户
...@@ -18,25 +20,25 @@ import javax.servlet.http.HttpServletResponse; ...@@ -18,25 +20,25 @@ import javax.servlet.http.HttpServletResponse;
public interface UserService { public interface UserService {
/** /**
* 表格查询 * 表格查询
* @param param UserByNameParam * @param userFindParam UserByNameParam
* @param pageParam PageParam * @param pageParam PageParam
* @return Result<PageVo<UserAutoVo>> * @return Result<PageVo<UserAutoVo>>
*/ */
Result<PageVo<UserVo>> findUserPage(UserFindParam param, PageParam pageParam); Result<PageVo<UserVo>> findUserPage(UserFindParam userFindParam, PageParam pageParam);
/** /**
* 用户详细信息 * 用户详细信息
* @param idParam IdParam * @param idParam IdParam
* @return Result<UserVo> * @return Result<UserVo>
*/ */
Result<UserVo> findUserById(IdParam idParam); Result<UserInfoVo> findUserById(IdParam idParam);
/** /**
* 用户绑定标签 * 用户绑定标签
* @param param UserBingTagParam * @param userBingTagParam UserBingTagParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> userBingTag(UserBingTagParam param); Result<String> userBingTag(UserBingTagParam userBingTagParam);
/** /**
* 收卡 * 收卡
...@@ -53,15 +55,44 @@ public interface UserService { ...@@ -53,15 +55,44 @@ public interface UserService {
Result<String> deleteUser(IdParam idParam); Result<String> deleteUser(IdParam idParam);
/** /**
* 下拉菜单 * 导出用户
* @return Result<PageVo<UserVo>> * @param userFindParam UserFindParam
* @param response HttpServletResponse
*/ */
Result<PageVo<UserVo>> selectUser(); void exportUser(UserFindParam userFindParam, HttpServletResponse response);
/** /**
* 导出用户 * 启用/停用
* @param param UserFindParam * @param idParam IdParam
* @param response HttpServletResponse * @return Result<String>
*/
Result<String> stateUser(IdParam idParam);
/**
* 修改用户
* @param userModifyParam UserModifyParam
* @return Result<String>
*/
Result<String> modifyUser(UserModifyParam userModifyParam);
/**
* 新增用户
* @param userAddParam UserAddParam
* @return Result<String>
*/
Result<String> addUser(UserAddParam userAddParam);
/**
* 导入
* @param file MultipartFile
* @return Result<String>
*/
Result<String> importUser(MultipartFile file);
/**
* 用户索引
* @param indexParam IndexParam
* @return Result<PageVo<UserVo>>
*/ */
void exportUser(UserFindParam param, HttpServletResponse response); Result<PageVo<UserVo>> indexUser(IndexParam indexParam);
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.dept; package com.yiring.app.vo.dept;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
import com.yiring.auth.domain.dept.Department; import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.post.Post; import com.yiring.auth.domain.post.Post;
...@@ -41,6 +43,7 @@ public class DepartmentInfoVo implements Serializable { ...@@ -41,6 +43,7 @@ public class DepartmentInfoVo implements Serializable {
@ApiModelProperty(value = "是否启用", example = "T/F") @ApiModelProperty(value = "是否启用", example = "T/F")
Boolean enable; Boolean enable;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "上级部门", example = "0根目录") @ApiModelProperty(value = "上级部门", example = "0根目录")
Long pid; Long pid;
...@@ -61,7 +64,7 @@ public class DepartmentInfoVo implements Serializable { ...@@ -61,7 +64,7 @@ public class DepartmentInfoVo implements Serializable {
return DepartmentInfoVo return DepartmentInfoVo
.builder() .builder()
.name(department.getName()) .name(department.getName())
.userVo(UserVo.transform(department.getLeader())) .userVo(UserVo.transformDept(department.getLeader()))
.enable(department.getEnable()) .enable(department.getEnable())
.posts(department.getPosts()) .posts(department.getPosts())
.pid(department.getPid()) .pid(department.getPid())
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.dept; package com.yiring.app.vo.dept;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
import com.yiring.auth.domain.dept.Department; import com.yiring.auth.domain.dept.Department;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -9,7 +12,6 @@ import java.io.Serial; ...@@ -9,7 +12,6 @@ import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -31,9 +33,14 @@ public class DepartmentVo implements Serializable { ...@@ -31,9 +33,14 @@ public class DepartmentVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -8193039102015929156L; private static final long serialVersionUID = -8193039102015929156L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "111") @ApiModelProperty(value = "主键", example = "111")
Long id; Long id;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "上级部门", example = "0根目录")
Long pid;
@ApiModelProperty(value = "部门名称", example = "研发部") @ApiModelProperty(value = "部门名称", example = "研发部")
String name; String name;
...@@ -43,9 +50,6 @@ public class DepartmentVo implements Serializable { ...@@ -43,9 +50,6 @@ public class DepartmentVo implements Serializable {
@ApiModelProperty(value = "是否启用", example = "T/F") @ApiModelProperty(value = "是否启用", example = "T/F")
Boolean enable; Boolean enable;
@ApiModelProperty(value = "上级部门", example = "0根目录")
Long pid;
@ApiModelProperty(value = "上级部门名称", example = "前端") @ApiModelProperty(value = "上级部门名称", example = "前端")
String pName; String pName;
...@@ -58,21 +62,19 @@ public class DepartmentVo implements Serializable { ...@@ -58,21 +62,19 @@ public class DepartmentVo implements Serializable {
@ApiModelProperty(value = "子节点") @ApiModelProperty(value = "子节点")
List<DepartmentVo> childList; List<DepartmentVo> childList;
public static List<DepartmentVo> transforms(List<Department> departments) { public static DepartmentVo transform(Department department) {
return departments DepartmentVo departmentVo = DepartmentVo
.stream() .builder()
.map(department -> .id(department.getId())
DepartmentVo .name(department.getName())
.builder() .enable(department.getEnable())
.id(department.getId()) .pid(department.getPid())
.name(department.getName()) .updateTime(department.getUpdateTime())
.leader(UserVo.transform(department.getLeader())) .createTime(department.getCreateTime())
.enable(department.getEnable()) .build();
.pid(department.getPid()) if (ObjectUtil.isNotEmpty(department.getLeader())) {
.updateTime(department.getUpdateTime()) departmentVo.setLeader(UserVo.transformDept(department.getLeader()));
.createTime(department.getCreateTime()) }
.build() return departmentVo;
)
.collect(Collectors.toList());
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.tag;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 定位索引
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("LocationTagIndexVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagIndexVo implements Serializable {
@Serial
private static final long serialVersionUID = -1459205162627200071L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "188354391834")
Long id;
@ApiModelProperty(value = "编号", example = "BTT88888888")
String code;
@ApiModelProperty(value = "标签型号", example = "BTT01")
LocationTag.Type type;
@ApiModelProperty(value = "是否启用", example = "0/1")
Boolean used;
public static LocationTagIndexVo transform(LocationTag locationTag) {
return LocationTagIndexVo
.builder()
.id(locationTag.getId())
.code(locationTag.getCode())
.type(locationTag.getType())
.used(locationTag.getUsed())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.tag;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 标签分配
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("LocationTagTypeVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = -5223102796143763942L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "188354391834")
Long id;
@ApiModelProperty(value = "编号", example = "BTT88888888")
String code;
@ApiModelProperty(value = "标签型号", example = "BTT01")
LocationTag.Type type;
@ApiModelProperty(value = "标签类型", example = "人员")
String tagType;
@ApiModelProperty(value = "类型", example = "类型(1:内部/2:访客/3:承包商)")
Integer category;
public static LocationTagTypeVo transform(LocationTag locationTag) {
String entityType = StrUtil.equals(locationTag.getType().name(), "BTT02") ? "car" : "staff";
return LocationTagTypeVo
.builder()
.id(locationTag.getId())
.code(locationTag.getCode())
.type(locationTag.getType())
.tagType(entityType)
.category(locationTag.getCategory())
.build();
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location; package com.yiring.app.vo.location.tag;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
...@@ -9,8 +9,6 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -9,8 +9,6 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -44,30 +42,25 @@ public class LocationTagVo implements Serializable { ...@@ -44,30 +42,25 @@ public class LocationTagVo implements Serializable {
@ApiModelProperty(value = "状态", example = "静止") @ApiModelProperty(value = "状态", example = "静止")
Boolean silent; Boolean silent;
@ApiModelProperty(value = "电量", example = "1")
Integer volt;
@ApiModelProperty(value = "imei 设备编码", example = "88888888") @ApiModelProperty(value = "imei 设备编码", example = "88888888")
String imei; String imei;
@ApiModelProperty(value = "电量", example = "1")
Integer volt;
@ApiModelProperty(value = "最近更新时间", example = "2022-01-01 00:00:00") @ApiModelProperty(value = "最近更新时间", example = "2022-01-01 00:00:00")
LocalDateTime updateTime; LocalDateTime updateTime;
public static List<LocationTagVo> transforms(List<LocationTag> locationTags) { public static LocationTagVo transform(LocationTag locationTag) {
return locationTags return LocationTagVo
.stream() .builder()
.map(locationTag -> .id(locationTag.getId())
LocationTagVo .code(locationTag.getCode())
.builder() .type(locationTag.getType())
.id(locationTag.getId()) .silent(locationTag.getSilent())
.code(locationTag.getCode()) .volt(locationTag.getVolt())
.type(locationTag.getType()) .imei(locationTag.getImei())
.silent(locationTag.getSilent()) .updateTime(locationTag.getUpdateTime())
.volt(locationTag.getVolt()) .build();
.imei(locationTag.getImei())
.updateTime(locationTag.getUpdateTime())
.build()
)
.collect(Collectors.toList());
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.post;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.auth.domain.post.Post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 职位索引视图
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("PostIndexVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class PostIndexVo implements Serializable {
@Serial
private static final long serialVersionUID = 6787422359697016766L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "1")
Long id;
@ApiModelProperty(value = "名称", example = "Java")
String name;
public static PostIndexVo transform(Post post) {
return PostIndexVo.builder().id(post.getId()).name(post.getName()).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.post;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.auth.domain.post.Post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 职位详细视图
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("PostInfoVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class PostInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = -8256863200798776816L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "1")
Long id;
@ApiModelProperty(value = "名称", example = "Java")
String name;
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "创建时间", example = "创建时间")
LocalDateTime createTime;
@ApiModelProperty(value = "更新时间", example = "更新时间")
LocalDateTime updateTime;
@ApiModelProperty(value = "职位状态", example = "true")
Boolean enable;
public static PostInfoVo transform(Post post) {
return PostInfoVo
.builder()
.id(post.getId())
.name(post.getName())
.describe(post.getDescribe())
.enable(post.getEnable())
.createTime(post.getCreateTime())
.updateTime(post.getUpdateTime())
.build();
}
}
...@@ -9,8 +9,6 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -9,8 +9,6 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -38,16 +36,10 @@ public class PostVo implements Serializable { ...@@ -38,16 +36,10 @@ public class PostVo implements Serializable {
@ApiModelProperty(value = "名称", example = "Java") @ApiModelProperty(value = "名称", example = "Java")
String name; String name;
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "创建时间", example = "创建时间") @ApiModelProperty(value = "创建时间", example = "创建时间")
LocalDateTime createTime; LocalDateTime createTime;
@ApiModelProperty(value = "更新时间", example = "更新时间") @ApiModelProperty(value = "职位状态", example = "true")
LocalDateTime updateTime;
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enable; Boolean enable;
public static PostVo transform(Post post) { public static PostVo transform(Post post) {
...@@ -55,27 +47,8 @@ public class PostVo implements Serializable { ...@@ -55,27 +47,8 @@ public class PostVo implements Serializable {
.builder() .builder()
.id(post.getId()) .id(post.getId())
.name(post.getName()) .name(post.getName())
.describe(post.getDescribe())
.enable(post.getEnable()) .enable(post.getEnable())
.createTime(post.getCreateTime()) .createTime(post.getCreateTime())
.updateTime(post.getUpdateTime())
.build(); .build();
} }
public static List<PostVo> transforms(List<Post> posts) {
return posts
.stream()
.map(post ->
PostVo
.builder()
.id(post.getId())
.name(post.getName())
.describe(post.getDescribe())
.enable(post.getEnable())
.createTime(post.getCreateTime())
.updateTime(post.getUpdateTime())
.build()
)
.collect(Collectors.toList());
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.user;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 用户详细信息模型
*
* @author LJ-2204
* @date 2022/4/27
*/
@ApiModel("UserInfoVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = -1040199557851348068L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "1")
Long id;
@ApiModelProperty(value = "真实姓名", example = "超级用户")
String realName;
@ApiModelProperty(value = "工号", example = "8888888")
String uuid;
@ApiModelProperty(value = "类型", example = "员工")
User.Type type;
@ApiModelProperty(value = "部门", example = "系统管理员")
String department;
@ApiModelProperty(value = "手机号", example = "13012345678")
String mobile;
@ApiModelProperty(value = "职位", example = "系统管理员")
String post;
@ApiModelProperty(value = "邮箱", example = "developer@yiring.com")
String email;
@ApiModelProperty(value = "头像", example = "https://s1.ax1x.com/2022/03/30/qggJH0.jpg")
String avatar;
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enabled;
@ApiModelProperty(value = "是否删除", example = "false")
Boolean deleted;
@ApiModelProperty(value = "是否特殊", example = "false")
Boolean isSpecial;
@ApiModelProperty(value = "性别", example = "false")
Boolean gender;
@ApiModelProperty(value = "创建时间", example = "2022-01-01 00:00:00")
LocalDateTime createTime;
@ApiModelProperty(value = "更新时间", example = "2022-01-01 00:00:00")
LocalDateTime updateTime;
public static UserInfoVo transform(User user) {
return UserInfoVo
.builder()
.id(user.getId())
.realName(user.getRealName())
.uuid(user.getUuid())
.type(user.getType())
.department(user.getDepartment().getName())
.mobile(user.getMobile())
.post(user.getPost().getName())
.email(user.getEmail())
.avatar(user.getAvatar())
.enabled(user.getEnabled())
.deleted(user.getDeleted())
.isSpecial(user.getIsSpecial())
.gender(user.getGender())
.createTime(user.getCreateTime())
.updateTime(user.getUpdateTime())
.build();
}
}
...@@ -8,9 +8,6 @@ import io.swagger.annotations.ApiModel; ...@@ -8,9 +8,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -56,77 +53,28 @@ public class UserVo implements Serializable { ...@@ -56,77 +53,28 @@ public class UserVo implements Serializable {
@ApiModelProperty(value = "标签编号", example = "BTT88888888") @ApiModelProperty(value = "标签编号", example = "BTT88888888")
String code; String code;
@ApiModelProperty(value = "用户名", example = "admin") @ApiModelProperty(value = "是否特殊", example = "false")
String username; Boolean isSpecial;
@ApiModelProperty(value = "性别", example = "false")
Boolean gender;
@ApiModelProperty(value = "邮箱", example = "developer@yiring.com") @ApiModelProperty(value = "邮箱", example = "developer@yiring.com")
String email; String email;
@ApiModelProperty(value = "头像", example = "https://s1.ax1x.com/2022/03/30/qggJH0.jpg")
String avatar;
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enabled;
@ApiModelProperty(value = "是否删除", example = "false")
Boolean deleted;
@ApiModelProperty(value = "最后登录IP地址", example = "127.0.0.1")
String lastLoginIp;
@ApiModelProperty(value = "最后登录时间", example = "2022-10-24 10:24:00")
LocalDateTime lastLoginTime;
@ApiModelProperty(value = "创建时间", example = "2022-01-01 00:00:00")
LocalDateTime createTime;
public static UserVo transform(User user) {
return UserVo
.builder()
.id(user.getId())
.realName(user.getRealName())
.username(user.getUsername())
.mobile(user.getMobile())
.email(user.getEmail())
.enabled(user.getEnabled())
.deleted(user.getDeleted())
.lastLoginIp(user.getLastLoginIp())
.lastLoginTime(user.getLastLoginTime())
.createTime(user.getCreateTime())
.build();
}
public static List<UserVo> transforms(List<User> users) {
return users
.stream()
.map(user ->
UserVo
.builder()
.id(user.getId())
.realName(user.getRealName())
.username(user.getUsername())
.mobile(user.getMobile())
.email(user.getEmail())
.avatar(user.getAvatar())
.enabled(user.getEnabled())
.deleted(user.getDeleted())
.lastLoginIp(user.getLastLoginIp())
.lastLoginTime(user.getLastLoginTime())
.createTime(user.getCreateTime())
.build()
)
.collect(Collectors.toList());
}
public UserVo( public UserVo(
Long id,
String realName, String realName,
String uuid, String uuid,
User.Type type, User.Type type,
String department, String department,
String mobile, String mobile,
String post, String post,
String code String code,
Boolean gender,
Boolean isSpecial
) { ) {
this.id = id;
this.realName = realName; this.realName = realName;
this.uuid = uuid; this.uuid = uuid;
this.type = type; this.type = type;
...@@ -134,22 +82,17 @@ public class UserVo implements Serializable { ...@@ -134,22 +82,17 @@ public class UserVo implements Serializable {
this.mobile = mobile; this.mobile = mobile;
this.post = post; this.post = post;
this.code = code; this.code = code;
this.gender = gender;
this.isSpecial = isSpecial;
} }
public static UserVo transformUserInfo(User user) { public static UserVo transformDept(User user) {
return UserVo return UserVo
.builder() .builder()
.id(user.getId()) .id(user.getId())
.realName(user.getRealName()) .realName(user.getRealName())
.username(user.getUsername())
.mobile(user.getMobile()) .mobile(user.getMobile())
.email(user.getEmail()) .email(user.getEmail())
.avatar(user.getAvatar())
.enabled(user.getEnabled())
.deleted(user.getDeleted())
.lastLoginIp(user.getLastLoginIp())
.lastLoginTime(user.getLastLoginTime())
.createTime(user.getCreateTime())
.build(); .build();
} }
} }
...@@ -2,10 +2,13 @@ ...@@ -2,10 +2,13 @@
package com.yiring.app.web.dept; package com.yiring.app.web.dept;
import com.yiring.app.param.dept.DepartmentAddParam; import com.yiring.app.param.dept.DepartmentAddParam;
import com.yiring.app.param.dept.DepartmentExportParam;
import com.yiring.app.param.dept.DepartmentFindParam; import com.yiring.app.param.dept.DepartmentFindParam;
import com.yiring.app.param.dept.DepartmentModifyParam;
import com.yiring.app.service.dept.DepartmentService; import com.yiring.app.service.dept.DepartmentService;
import com.yiring.app.vo.dept.DepartmentInfoVo; import com.yiring.app.vo.dept.DepartmentInfoVo;
import com.yiring.app.vo.dept.DepartmentVo; import com.yiring.app.vo.dept.DepartmentVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -17,6 +20,7 @@ import javax.validation.Valid; ...@@ -17,6 +20,7 @@ import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 部门信息控制器 * 部门信息控制器
...@@ -36,14 +40,14 @@ public class DepartmentController { ...@@ -36,14 +40,14 @@ public class DepartmentController {
@ApiOperation("新增部门") @ApiOperation("新增部门")
@PostMapping("addDepartment") @PostMapping("addDepartment")
public Result<String> addDepartment(@Valid DepartmentAddParam param) { public Result<String> addDepartment(@Valid DepartmentAddParam departmentAddParam) {
return departmentService.addDepartment(param); return departmentService.addDepartment(departmentAddParam);
} }
@ApiOperation("树形表格") @ApiOperation("树形表格")
@GetMapping("findDepartmentTree") @GetMapping("findDepartmentTree")
public Result<PageVo<DepartmentVo>> findDepartmentTree(@Valid DepartmentFindParam param) { public Result<PageVo<DepartmentVo>> findDepartmentTree(@Valid DepartmentFindParam departmentFindParam) {
return departmentService.findDepartmentTree(param); return departmentService.findDepartmentTree(departmentFindParam);
} }
@ApiOperation("部门详细信息") @ApiOperation("部门详细信息")
...@@ -54,8 +58,8 @@ public class DepartmentController { ...@@ -54,8 +58,8 @@ public class DepartmentController {
@ApiOperation("部门导出") @ApiOperation("部门导出")
@GetMapping("exportDepartment") @GetMapping("exportDepartment")
public void exportDepartment(@Valid DepartmentFindParam param, HttpServletResponse response) { public void exportDepartment(@Valid DepartmentExportParam departmentExportParam, HttpServletResponse response) {
departmentService.exportDepartment(param, response); departmentService.exportDepartment(departmentExportParam, response);
} }
@ApiOperation("逻辑删除部门") @ApiOperation("逻辑删除部门")
...@@ -69,4 +73,22 @@ public class DepartmentController { ...@@ -69,4 +73,22 @@ public class DepartmentController {
public Result<String> stateDepartment(@Valid IdParam idParam) { public Result<String> stateDepartment(@Valid IdParam idParam) {
return departmentService.stateDepartment(idParam); return departmentService.stateDepartment(idParam);
} }
@ApiOperation("给部门添加职位")
@PutMapping("deptBingPost")
public Result<String> deptBingPost(@Valid IdParam idParam, @Valid IdsParam idsParam) {
return departmentService.deptBingPost(idParam, idsParam);
}
@ApiOperation("部门编辑")
@PutMapping("modifyDepartment")
public Result<String> modifyDepartment(@Valid DepartmentModifyParam departmentModifyParam) {
return departmentService.modifyDept(departmentModifyParam);
}
@ApiOperation("部门导入")
@PostMapping("Department")
public Result<String> importDepartment(@RequestParam("file") MultipartFile file) {
return departmentService.importDepartment(file);
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.beacon;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 定位信标
*
* @author LJ-2204
* @date 2022/4/27
*/
@Slf4j
@Validated
@Api(tags = "定位信标")
@RestController
@RequestMapping("/location/beacon/")
public class LocationBeaconController {}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.tag; package com.yiring.app.web.location.tag;
import com.yiring.app.param.location.LocationTagAddParam; import com.yiring.app.param.location.tag.*;
import com.yiring.app.param.location.LocationTagDeleteParam; import com.yiring.app.service.location.tag.LocationTagService;
import com.yiring.app.param.location.LocationTagFindParam; import com.yiring.app.vo.location.tag.LocationTagIndexVo;
import com.yiring.app.param.location.LocationTagModifyParam; import com.yiring.app.vo.location.tag.LocationTagVo;
import com.yiring.app.service.location.LocationTagService;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -38,26 +37,32 @@ public class LocationTagController { ...@@ -38,26 +37,32 @@ public class LocationTagController {
@ApiOperation("新增定位标签") @ApiOperation("新增定位标签")
@PostMapping("addLocationTag") @PostMapping("addLocationTag")
public Result<String> addLocationTag(@Valid LocationTagAddParam param) { public Result<String> addLocationTag(@Valid LocationTagAddParam locationTagAddParam) {
return locationTagService.addLocationTag(param); return locationTagService.addLocationTag(locationTagAddParam);
} }
@ApiOperation("分页查询") @ApiOperation("分页查询")
@GetMapping("findLocationTagPage") @GetMapping("findLocationTagPage")
public Result<PageVo<LocationTagVo>> findLocationTagPage(@Valid LocationTagFindParam param, PageParam pageParam) { public Result<PageVo<LocationTagVo>> findLocationTagPage(
return locationTagService.findLocationTagPage(param, pageParam); @Valid LocationTagFindParam locationTagFindParam,
@Valid PageParam pageParam
) {
return locationTagService.findLocationTagPage(locationTagFindParam, pageParam);
} }
@ApiOperation("销毁定位标签") @ApiOperation("销毁定位标签")
@DeleteMapping("deleteLocationTag") @DeleteMapping("deleteLocationTag")
public Result<String> deleteLocationTag(@Valid LocationTagDeleteParam param) { public Result<String> deleteLocationTag(@Valid LocationTagDeleteParam locationTagDeleteParam) {
return locationTagService.deleteLocationTag(param); return locationTagService.deleteLocationTag(locationTagDeleteParam);
} }
@ApiOperation("导出定位标签") @ApiOperation("导出定位标签")
@GetMapping("exportLocationTagInfo") @GetMapping("exportLocationTagInfo")
public void exportLocationTagInfo(@Valid LocationTagFindParam param, HttpServletResponse response) { public void exportLocationTagInfo(
locationTagService.exportLocationTagInfo(param, response); @Valid LocationTagExportParam locationTagExportParam,
HttpServletResponse response
) {
locationTagService.exportLocationTagInfo(locationTagExportParam, response);
} }
@ApiOperation("导入定位标签") @ApiOperation("导入定位标签")
...@@ -68,7 +73,13 @@ public class LocationTagController { ...@@ -68,7 +73,13 @@ public class LocationTagController {
@ApiOperation("修改定位标签") @ApiOperation("修改定位标签")
@PutMapping("modifyLocationTag") @PutMapping("modifyLocationTag")
public Result<String> modifyLocationTag(@Valid LocationTagModifyParam param) { public Result<String> modifyLocationTag(@Valid LocationTagModifyParam locationTagModifyParam) {
return locationTagService.modifyLocationTag(param); return locationTagService.modifyLocationTag(locationTagModifyParam);
}
@ApiOperation("标签检索")
@GetMapping("indexLocationTag")
public Result<PageVo<LocationTagIndexVo>> indexLocationTag(@Valid IndexParam indexParam) {
return locationTagService.indexLocationTag(indexParam);
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.tag;
import com.yiring.app.param.location.tag.LocationTagTypeFindParam;
import com.yiring.app.service.location.tag.LocationTagTypeService;
import com.yiring.app.vo.location.tag.LocationTagTypeVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 标签分配
*
* @author LJ-2204
* @date 2022/4/27
*/
@Slf4j
@Validated
@Api(tags = "标签分配")
@RestController
@RequestMapping("/location/tag/type")
public class LocationTagTypeController {
@Resource
LocationTagTypeService locationTagTypeService;
@ApiOperation("分页查询")
@GetMapping("findLocationTagType")
public Result<PageVo<LocationTagTypeVo>> findLocationTagType(
@Valid LocationTagTypeFindParam locationTagTypeFindParam,
@Valid PageParam pageParam
) {
return locationTagTypeService.findLocationTagType(locationTagTypeFindParam, pageParam);
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.post; package com.yiring.app.web.post;
import com.yiring.app.param.post.PostAddParam;
import com.yiring.app.param.post.PostExportParam;
import com.yiring.app.param.post.PostFindParam; import com.yiring.app.param.post.PostFindParam;
import com.yiring.app.param.post.PostParam; import com.yiring.app.param.post.PostModifyParam;
import com.yiring.app.service.post.PostService; import com.yiring.app.service.post.PostService;
import com.yiring.app.vo.post.PostIndexVo;
import com.yiring.app.vo.post.PostInfoVo;
import com.yiring.app.vo.post.PostVo; import com.yiring.app.vo.post.PostVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -36,14 +41,14 @@ public class PostController { ...@@ -36,14 +41,14 @@ public class PostController {
@ApiOperation(value = "新增职位") @ApiOperation(value = "新增职位")
@PostMapping("addPost") @PostMapping("addPost")
public Result<String> addPost(@Valid PostParam postParam) { public Result<String> addPost(@Valid PostAddParam postAddParam) {
return postService.addPost(postParam); return postService.addPost(postAddParam);
} }
@ApiOperation(value = "修改职位") @ApiOperation(value = "修改职位")
@PutMapping("modifyPost") @PutMapping("modifyPost")
public Result<String> modifyPost(@Valid PostParam postParam, @Valid IdParam idParam) { public Result<String> modifyPost(@Valid PostModifyParam postModifyParam) {
return postService.modifyPost(postParam, idParam); return postService.modifyPost(postModifyParam);
} }
@ApiOperation(value = "销毁职位") @ApiOperation(value = "销毁职位")
...@@ -54,25 +59,25 @@ public class PostController { ...@@ -54,25 +59,25 @@ public class PostController {
@ApiOperation(value = "分页查询") @ApiOperation(value = "分页查询")
@GetMapping("findPostPage") @GetMapping("findPostPage")
public Result<PageVo<PostVo>> findPostPage(@Valid PostFindParam param, @Valid PageParam pageParam) { public Result<PageVo<PostVo>> findPostPage(@Valid PostFindParam postFindParam, @Valid PageParam pageParam) {
return postService.findPostPage(param, pageParam); return postService.findPostPage(postFindParam, pageParam);
} }
@ApiOperation(value = "详细信息查询") @ApiOperation(value = "详细信息查询")
@GetMapping("findPostById") @GetMapping("findPostById")
public Result<PostVo> findPostById(@Valid IdParam idParam) { public Result<PostInfoVo> findPostById(@Valid IdParam idParam) {
return postService.findPostById(idParam); return postService.findPostById(idParam);
} }
@ApiOperation(value = "导出职位信息") @ApiOperation(value = "导出职位信息")
@GetMapping("exportPostInfo") @GetMapping("exportPostInfo")
public void exportPostInfo(@Valid PostFindParam param, HttpServletResponse response) { public void exportPostInfo(@Valid PostExportParam postExportParam, HttpServletResponse response) {
postService.exportPostInfo(param, response); postService.exportPostInfo(postExportParam, response);
} }
@ApiOperation(value = "下拉菜单") @ApiOperation(value = "职位检索")
@GetMapping("selectPost") @GetMapping("indexPost")
public Result<PageVo<PostVo>> selectPost() { public Result<PageVo<PostIndexVo>> indexPost(@Valid IndexParam indexParam) {
return postService.selectPost(); return postService.indexPost(indexParam);
} }
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.user; package com.yiring.app.web.user;
import com.yiring.app.param.user.UserBingTagParam; import com.yiring.app.param.user.*;
import com.yiring.app.param.user.UserFindParam;
import com.yiring.app.service.user.UserService; import com.yiring.app.service.user.UserService;
import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -17,6 +18,7 @@ import javax.validation.Valid; ...@@ -17,6 +18,7 @@ import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/** /**
* 用户信息 * 用户信息
...@@ -28,9 +30,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -28,9 +30,9 @@ import org.springframework.web.bind.annotation.*;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "User") @Api(tags = "人员管理")
@RestController @RestController
@RequestMapping("/user/") @RequestMapping("/user/app/")
public class UserAppController { public class UserAppController {
@Resource @Resource
...@@ -38,20 +40,20 @@ public class UserAppController { ...@@ -38,20 +40,20 @@ public class UserAppController {
@ApiOperation("表格查询") @ApiOperation("表格查询")
@GetMapping("findUserPage") @GetMapping("findUserPage")
public Result<PageVo<UserVo>> findUserPage(@Valid UserFindParam param, @Valid PageParam pageParam) { public Result<PageVo<UserVo>> findUserPage(@Valid UserFindParam userFindParam, @Valid PageParam pageParam) {
return userService.findUserPage(param, pageParam); return userService.findUserPage(userFindParam, pageParam);
} }
@ApiOperation("用户详细信息查询") @ApiOperation("用户详细信息查询")
@GetMapping("findUserById") @GetMapping("findUserById")
public Result<UserVo> findUserById(@Valid IdParam idParam) { public Result<UserInfoVo> findUserById(@Valid IdParam idParam) {
return userService.findUserById(idParam); return userService.findUserById(idParam);
} }
@ApiOperation("给用户分配标签卡") @ApiOperation("给用户分配标签卡")
@PutMapping("userBingTag") @PutMapping("userBingTag")
public Result<String> userBingTag(@Valid UserBingTagParam param) { public Result<String> userBingTag(@Valid UserBingTagParam userBingTagParam) {
return userService.userBingTag(param); return userService.userBingTag(userBingTagParam);
} }
@ApiOperation("收卡") @ApiOperation("收卡")
...@@ -66,15 +68,39 @@ public class UserAppController { ...@@ -66,15 +68,39 @@ public class UserAppController {
return userService.deleteUser(idParam); return userService.deleteUser(idParam);
} }
@ApiOperation("下拉菜单")
@GetMapping("selectUser")
public Result<PageVo<UserVo>> selectUser() {
return userService.selectUser();
}
@ApiOperation("用户导出") @ApiOperation("用户导出")
@GetMapping("exportUser") @GetMapping("exportUser")
public void exportUser(@Valid UserFindParam param, HttpServletResponse response) { public void exportUser(@Valid UserFindParam userFindParam, HttpServletResponse response) {
userService.exportUser(param, response); userService.exportUser(userFindParam, response);
}
@ApiOperation("启用/停用")
@PutMapping("stateUser")
public Result<String> stateUser(@Valid IdParam idParam) {
return userService.stateUser(idParam);
}
@ApiOperation("编辑用户")
@PutMapping("modifyUser")
public Result<String> modifyUser(@Valid UserModifyParam userModifyParam) {
return userService.modifyUser(userModifyParam);
}
@ApiOperation("新增用户")
@PostMapping("addUser")
public Result<String> addUser(@Valid UserAddParam userAddParam) {
return userService.addUser(userAddParam);
}
@ApiOperation("导入")
@PostMapping("importUser")
public Result<String> importUser(@RequestParam("file") MultipartFile file) {
return userService.importUser(file);
}
@ApiOperation("用户信息检索")
@GetMapping("indexUser")
public Result<PageVo<UserVo>> indexUser(@Valid IndexParam indexParam) {
return userService.indexUser(indexParam);
} }
} }
...@@ -37,6 +37,11 @@ spring: ...@@ -37,6 +37,11 @@ spring:
simple: simple:
# 手动确认消息 # 手动确认消息
acknowledge-mode: manual acknowledge-mode: manual
servlet:
multipart:
enabled: true
max-file-size: 50MB
max-request-size: 100MB
# knife4j # knife4j
knife4j: knife4j:
...@@ -61,7 +66,6 @@ logging: ...@@ -61,7 +66,6 @@ logging:
level: level:
# sql bind parameter # sql bind parameter
org.hibernate.type.descriptor.sql.BasicBinder: trace org.hibernate.type.descriptor.sql.BasicBinder: trace
# 真源定位系统相关配置 # 真源定位系统相关配置
zy-config: zy-config:
host: project.yz-online.com host: project.yz-online.com
...@@ -93,3 +97,10 @@ zy-config: ...@@ -93,3 +97,10 @@ zy-config:
manage: manage:
username: test123 username: test123
password: test123 password: test123
feign:
httpclient:
enabled: false
okhttp:
enabled: true
...@@ -98,6 +98,12 @@ public class User extends BasicEntity implements Serializable { ...@@ -98,6 +98,12 @@ public class User extends BasicEntity implements Serializable {
@Comment("是否删除") @Comment("是否删除")
Boolean deleted; Boolean deleted;
@Comment("是否特殊")
Boolean isSpecial;
@Comment("性别")
Boolean gender;
@JsonIgnore @JsonIgnore
@Builder.Default @Builder.Default
@Comment("角色集合") @Comment("角色集合")
......
...@@ -5,8 +5,6 @@ import cn.hutool.core.date.LocalDateTimeUtil; ...@@ -5,8 +5,6 @@ import cn.hutool.core.date.LocalDateTimeUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn; import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel; import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.auth.domain.post.Post; import com.yiring.auth.domain.post.Post;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -40,19 +38,13 @@ public class PostExcel { ...@@ -40,19 +38,13 @@ public class PostExcel {
@ExcelColumn(title = "创建时间") @ExcelColumn(title = "创建时间")
String createTime; String createTime;
public static List<PostExcel> transforms(List<Post> posts) { public static PostExcel transform(Post post) {
return posts return PostExcel
.stream() .builder()
.map(post -> .name(post.getName())
PostExcel .describe(post.getDescribe())
.builder() .enable(post.getEnable() ? "启用" : "禁用")
// .id(post.getId()) .createTime(LocalDateTimeUtil.format(post.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.name(post.getName()) .build();
.describe(post.getDescribe())
.enable(post.getEnable() ? "启用" : "禁用")
.createTime(LocalDateTimeUtil.format(post.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.build()
)
.collect(Collectors.toList());
} }
} }
...@@ -31,6 +31,8 @@ buildscript { ...@@ -31,6 +31,8 @@ buildscript {
myexcelVersion = '4.1.1' myexcelVersion = '4.1.1'
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign // https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
openfeignVersion = '3.1.1' openfeignVersion = '3.1.1'
// https://mvnrepository.com/artifact/io.github.openfeign/feign-okhttp
feignOkhttpVersion= '11.8'
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论