提交 32c5bd78 作者: 方治民

Merge branch 'dev_lijing' of https://gitlab.yiring.com/chemical-kesai/kshg-api into dev_fzm

......@@ -73,4 +73,7 @@ dependencies {
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
implementation "org.springframework.cloud:spring-cloud-starter-openfeign:${openfeignVersion}"
// feign-okhttp
implementation "io.github.openfeign:feign-okhttp:${feignOkhttpVersion}"
}
......@@ -6,6 +6,7 @@ import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
......@@ -94,6 +95,9 @@ public class LocationBeacon extends BasicEntity implements Serializable {
@Comment("电量单位")
String voltUnit;
@Comment("状态更新时间")
LocalDateTime time;
@Comment("围栏集合")
@Builder.Default
@ManyToMany
......
......@@ -99,6 +99,10 @@ public class LocationTag extends BasicEntity implements Serializable {
@Comment("电量单位")
String voltUnit;
@FieldMapping
@Comment("类型(1:内部/2:访客/3:承包商)")
Integer category;
@FieldMapping(value = "raiseTimestamp", desc = "更新时间戳", type = Long.class)
@Comment("更新时间")
LocalDateTime updateTime;
......
/* (C) 2022 YiRing, Inc. */
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.ExcelModel;
import com.yiring.auth.domain.dept.Department;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
......@@ -33,19 +30,22 @@ public class DepartmentExportExcel implements Serializable {
@ExcelColumn(title = "部门名称")
String name;
@ExcelColumn(title = "创建时间")
String createTime;
public static List<DepartmentExportExcel> transforms(List<Department> departments) {
return departments
.stream()
.map(department ->
DepartmentExportExcel
.builder()
.name(department.getName())
.createTime(LocalDateTimeUtil.format(department.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.build()
)
.collect(Collectors.toList());
@ExcelColumn(title = "负责人")
String realName;
@ExcelColumn(title = "手机号")
String mobile;
@ExcelColumn(title = "是否启用")
String enable;
public static DepartmentExportExcel transform(Department department) {
return DepartmentExportExcel
.builder()
.name(department.getName())
.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(title = "部门名称")
@NotNull
String name;
@ExcelColumn(title = "负责人")
String realName;
@ExcelColumn(title = "手机号码")
String mobile;
@ExcelColumn(title = "状态")
String enable;
public static Department transform(DepartmentImportExcel departmentImportExcel) {
return Department
.builder()
.name(departmentImportExcel.getName())
.enable(StrUtil.equals(departmentImportExcel.getEnable(), "启用"))
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.location;
package com.yiring.app.excel.location.tag;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
......@@ -7,8 +7,6 @@ import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.domain.location.LocationTag;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
......@@ -51,20 +49,15 @@ public class LocationTagExportExcel implements Serializable {
@ExcelColumn(title = "最近更新时间")
String updateTime;
public static List<LocationTagExportExcel> transforms(List<LocationTag> locationTags) {
return locationTags
.stream()
.map(locationTag ->
LocationTagExportExcel
.builder()
.code(locationTag.getCode())
.type(locationTag.getType())
.silent(locationTag.getSilent())
.imei(locationTag.getImei())
.volt(locationTag.getVolt())
.updateTime(LocalDateTimeUtil.format(locationTag.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
.build()
)
.collect(Collectors.toList());
public static LocationTagExportExcel transform(LocationTag locationTag) {
return LocationTagExportExcel
.builder()
.code(locationTag.getCode())
.type(locationTag.getType())
.silent(locationTag.getSilent())
.imei(locationTag.getImei())
.volt(locationTag.getVolt())
.updateTime(LocalDateTimeUtil.format(locationTag.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.location;
package com.yiring.app.excel.location.tag;
import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.app.domain.location.LocationTag;
import java.io.Serial;
......@@ -25,23 +26,23 @@ public class LocationTagImportExcel implements Serializable {
private static final long serialVersionUID = -8817732062049005201L;
// 编号
@ExcelColumn(index = 0)
@ExcelColumn(title = "编号")
String code;
// 标签型号
@ExcelColumn(index = 1)
@ExcelColumn(title = "标签型号")
String type;
// 设备编码
@ExcelColumn(index = 2)
@ExcelColumn(title = "imei")
String imei;
public LocationTag transform() {
public static LocationTag transform(LocationTagImportExcel locationTagImportExcel) {
return LocationTag
.builder()
.code(this.code)
.type(LocationTag.Type.valueOf(this.type))
.imei(this.imei)
.code(locationTagImportExcel.code)
.type(LocationTag.Type.valueOf(locationTagImportExcel.type))
.imei(StrUtil.isEmpty(locationTagImportExcel.imei) ? null : locationTagImportExcel.imei)
.createTime(LocalDateTime.now())
.build();
}
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.user;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.app.vo.user.UserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* 用户导出
*
* @author LJ-2204
* @date 2022/4/24
......@@ -31,19 +28,49 @@ public class UserExportExcel implements Serializable {
@ExcelColumn(title = "真实姓名")
String realName;
@ExcelColumn(title = "创建时间")
String createTime;
public static List<UserExportExcel> transforms(List<UserVo> userVos) {
return userVos
.stream()
.map(userVo ->
UserExportExcel
.builder()
.realName(userVo.getRealName())
.createTime(LocalDateTimeUtil.format(userVo.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.build()
)
.collect(Collectors.toList());
@ExcelColumn(title = "工号")
String uuid;
// 图标类型
@ExcelColumn(title = "图标类型")
String type;
// 手机号
@ExcelColumn(title = "手机号")
String mobile;
// 部门id
@ExcelColumn(title = "部门名称")
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(title = "姓名")
String realName;
// 工号
@ExcelColumn(title = "工号")
String uuid;
// 图标类型
@ExcelColumn(title = "图标类型")
String type;
// 手机号
@ExcelColumn(title = "手机号码")
String mobile;
// 部门id
@ExcelColumn(title = "部门名称")
String deptName;
// 职位id
@ExcelColumn(title = "职位名称")
String postName;
// 标签号
@ExcelColumn(title = "标签编号")
String code;
// 性别
@ExcelColumn(title = "性别")
Boolean gender;
// 是否为特殊人员
@ExcelColumn(title = "特殊人员")
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();
}
}
......@@ -2,12 +2,10 @@
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 java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -31,7 +29,7 @@ public class DepartmentAddParam implements Serializable {
@ApiModelProperty(value = "上级部门", example = "1", required = true)
@NotNull
Long pid;
Long id;
@ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull
......@@ -43,15 +41,12 @@ public class DepartmentAddParam implements Serializable {
@ApiModelProperty(value = "部门状态", example = "1")
Boolean enable;
public Department transform() {
public static Department transform(DepartmentAddParam departmentAddParam) {
return Department
.builder()
.pid(this.pid)
.name(this.name)
.leader(User.builder().id(this.leaderId).build())
.enable(this.enable)
.createTime(LocalDateTime.now())
.updateTime(LocalDateTime.now())
.pid(departmentAddParam.getId())
.name(departmentAddParam.getName())
.enable(departmentAddParam.getEnable())
.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 cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
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 void transform(DepartmentModifyParam departmentModifyParam, Department department) {
department.setPid(departmentModifyParam.getPid());
department.setName(departmentModifyParam.getName());
if (ObjectUtil.isNotEmpty(departmentModifyParam.getLeaderId())) {
department.setLeader(User.builder().id(departmentModifyParam.getLeaderId()).build());
}
department.setUpdateTime(LocalDateTimeUtil.now());
}
}
/* (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 io.swagger.annotations.ApiModel;
......@@ -39,12 +39,12 @@ public class LocationTagAddParam implements Serializable {
@ApiModelProperty(value = "imei 设备编码标识", example = "88888888")
String imei;
public LocationTag transform() {
public static LocationTag transform(LocationTagAddParam locationTagAddParam) {
return LocationTag
.builder()
.code(this.code)
.type(this.type)
.imei(this.imei)
.code(locationTagAddParam.getCode())
.type(locationTagAddParam.getType())
.imei(locationTagAddParam.getImei())
.used(false)
.silent(false)
.volt(0)
......
/* (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.ApiModelProperty;
......@@ -29,8 +29,4 @@ public class LocationTagDeleteParam implements Serializable {
@ApiModelProperty(value = "ids", example = "145235231,145235232", required = true)
@NotNull(message = "ids 不能为空")
Long[] ids;
@ApiModelProperty(value = "codes", example = "BTT99999998,BTT99999999", required = true)
@NotNull(message = "codes 不能为空")
String[] codes;
}
/* (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. */
package com.yiring.app.param.location;
package com.yiring.app.param.location.tag;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location;
package com.yiring.app.param.location.tag;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -38,7 +39,10 @@ public class LocationTagModifyParam implements Serializable {
@ApiModelProperty(value = "imei 设备编码标识", example = "88888888")
String imei;
public LocationTag transform() {
return LocationTag.builder().code(this.code).type(this.type).imei(this.imei).build();
public static void transform(LocationTagModifyParam locationTagModifyParam, LocationTag locationTag) {
locationTag.setCode(locationTagModifyParam.getCode());
locationTag.setType(locationTagModifyParam.getType());
locationTag.setImei(locationTagModifyParam.getImei());
locationTag.setUpdateTime(LocalDateTimeUtil.now());
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.tag;
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("LocationTagTypeFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagTypeFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -647961131755069990L;
@ApiModelProperty(value = "编号", example = "BTT8888888")
String code;
@ApiModelProperty(value = "类别", example = "1内部/2访客")
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.*;
import lombok.experimental.FieldDefaults;
/**
* 职位分页入参
* 职位条件入参
* @author LJ-2204
* @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 void transform(PostModifyParam postParam, Post post) {
post.setName(postParam.getName());
post.setDescribe(postParam.getDescribe());
post.setEnable(postParam.getEnable());
post.setUpdateTime(LocalDateTimeUtil.now());
}
}
......@@ -28,16 +28,16 @@ public class PostParam implements Serializable {
private static final long serialVersionUID = 5247408856592333466L;
@ApiModelProperty(value = "名称", example = "Java", required = true)
@NotNull
@NotNull(message = "名称不能为空")
String name;
@ApiModelProperty(value = "描述", example = "描述", required = true)
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "是否启用", example = "true", required = true)
@ApiModelProperty(value = "是否启用", example = "true")
Boolean enable;
public Post transform() {
return Post.builder().name(this.name).describe(this.describe).enable(this.enable).build();
public static Post transform(PostParam postParam) {
return Post.builder().name(postParam.name).describe(postParam.describe).enable(postParam.enable).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.user;
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)
Long deptId;
@ApiModelProperty(value = "工号", example = "1888888888", required = true)
String uuid;
@ApiModelProperty(value = "职位", example = "1")
Long 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())
.uuid(userAddParam.getUuid())
.isSpecial(userAddParam.getIsSpecial())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.user;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
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
Long deptId;
@ApiModelProperty(value = "工号", example = "1888888888", required = true)
@NotNull
String uuid;
@ApiModelProperty(value = "职位", example = "1")
Long postId;
@ApiModelProperty(value = "是否特殊人员", example = "0/1", required = true)
@NotNull
Boolean isSpecial;
public static void transform(UserModifyParam userModifyParam, User user) {
user.setAvatar(userModifyParam.getAvatar());
user.setRealName(userModifyParam.getRealName());
user.setMobile(userModifyParam.getMobile());
user.setType(userModifyParam.getType());
user.setGender(userModifyParam.getGender());
user.setDepartment(Department.builder().id(Convert.toLong(userModifyParam.getDeptId())).build());
user.setUuid(userModifyParam.getUuid());
if (ObjectUtil.isNotEmpty(userModifyParam.getPostId())) {
user.setPost(Post.builder().id(Convert.toLong(userModifyParam.getPostId())).build());
}
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location.zy;
package com.yiring.app.param.zy.location.tag;
import cn.hutool.core.util.StrUtil;
import com.yiring.app.domain.location.LocationTag;
import com.yiring.app.excel.location.LocationTagImportExcel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -42,6 +39,9 @@ public class ZyLocationTagAddParam implements Serializable {
@ApiModelProperty(value = "实体类型", example = "car", required = true)
String entityType;
@ApiModelProperty(value = "card", example = "card")
String card;
public static ZyLocationTagAddParam transform(LocationTag locationTag, Integer orgId) {
String entityType = StrUtil.equals(locationTag.getType().name(), "BTT02") ? "car" : "staff";
return ZyLocationTagAddParam
......@@ -50,25 +50,7 @@ public class ZyLocationTagAddParam implements Serializable {
.tagId(locationTag.getCode())
.types(locationTag.getType())
.entityType(entityType)
.card(locationTag.getImei())
.build();
}
public static List<ZyLocationTagAddParam> transforms(
List<LocationTagImportExcel> locationTagImportExcels,
Integer orgId
) {
return locationTagImportExcels
.stream()
.map(locationTagImportExcel -> {
String entityType = StrUtil.equals(locationTagImportExcel.getType(), "BTT02") ? "car" : "staff";
return ZyLocationTagAddParam
.builder()
.entityType(entityType)
.orgId(orgId)
.tagId(locationTagImportExcel.getCode())
.types(LocationTag.Type.valueOf(locationTagImportExcel.getType()))
.build();
})
.collect(Collectors.toList());
}
}
......@@ -67,7 +67,7 @@ public class ZyConfigProperties {
String api;
String tenant;
@Resource
@Resource(name = "ZyConfigProxyClient")
ZyConfigProxyClient client;
@Resource
......@@ -75,7 +75,7 @@ public class ZyConfigProperties {
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@Component
@Component("ZyConfigProxyClient")
@ConfigurationProperties(prefix = "zy-config.proxy.client")
public static class ZyConfigProxyClient {
......
......@@ -2,13 +2,19 @@
package com.yiring.app.service.dept;
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.DepartmentModifyParam;
import com.yiring.app.vo.dept.DepartmentInfoVo;
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.param.IdParam;
import com.yiring.common.vo.PageVo;
import java.util.HashMap;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/**
* 部门管理
......@@ -18,17 +24,17 @@ import javax.servlet.http.HttpServletResponse;
public interface DepartmentService {
/**
* 新增部门
* @param param DepartmentAddParam
* @param departmentAddParam DepartmentAddParam
* @return Result<String>
*/
Result<String> addDepartment(DepartmentAddParam param);
Result<String> addDepartment(DepartmentAddParam departmentAddParam);
/**
* 查询树状图
* @param param DepartmentFindParam
* @param departmentFindParam DepartmentFindParam
* @return Result<PageVo<DepartmentVo>>
*/
Result<PageVo<DepartmentVo>> findDepartmentTree(DepartmentFindParam param);
Result<PageVo<DepartmentVo>> findDepartmentTree(DepartmentFindParam departmentFindParam);
/**
* 根据id查询详细信息
......@@ -39,10 +45,10 @@ public interface DepartmentService {
/**
* 导出部门
* @param param DepartmentFindParam
* @param departmentExportParam DepartmentFindParam
* @param response HttpServletResponse
*/
void exportDepartment(DepartmentFindParam param, HttpServletResponse response);
void exportDepartment(DepartmentExportParam departmentExportParam, HttpServletResponse response);
/**
* 逻辑删除部门
......@@ -52,9 +58,30 @@ public interface DepartmentService {
Result<String> deleteDepartment(IdParam idParam);
/**
* 启用/停用
* 部门添加岗位
* @param idParam IdParam
* @param idsParam IdsParam
* @return Result<String>
*/
Result<String> stateDepartment(IdParam idParam);
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. */
package com.yiring.app.service.location.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.github.liaochong.myexcel.core.SaxExcelReader;
import com.yiring.app.domain.location.LocationTag;
import com.yiring.app.domain.location.LocationTagRepository;
import com.yiring.app.excel.location.LocationTagExportExcel;
import com.yiring.app.excel.location.LocationTagImportExcel;
import com.yiring.app.param.location.LocationTagAddParam;
import com.yiring.app.param.location.LocationTagDeleteParam;
import com.yiring.app.param.location.LocationTagFindParam;
import com.yiring.app.param.location.LocationTagModifyParam;
import com.yiring.app.param.location.zy.ZyLocationTagAddParam;
import com.yiring.app.service.location.LocationTagService;
import com.yiring.app.service.zy.ZyHttpService;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.jetbrains.annotations.NotNull;
import org.springframework.data.domain.*;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
/**
* 定位标签
* @author LJ-2204
* @date 2022/4/14
*/
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class LocationTagServiceImpl implements LocationTagService {
final Integer FACTORY_ID = 100;
@Resource
ZyHttpService zyHttpService;
@Resource
LocationTagRepository locationTagRepository;
@Override
public Result<String> addLocationTag(LocationTagAddParam param) {
if (hasLocationTagInfoByCode(param.getCode())) return Result.no(Status.BAD_REQUEST, "编号已存在");
LocationTag locationTag = param.transform();
ZyLocationTagAddParam zyLocationTagAddParam = ZyLocationTagAddParam.transform(locationTag, FACTORY_ID);
List<ZyLocationTagAddParam> of = ListUtil.of(zyLocationTagAddParam);
zyHttpService.post("/positionApi/api/tag/saveTag", of, 3000);
locationTagRepository.save(locationTag);
return Result.ok();
}
@Override
public Result<PageVo<LocationTagVo>> findLocationTagPage(LocationTagFindParam param, PageParam pageParam) {
Specification<LocationTag> specification = getLocationTagPageSpecification(param);
Sort sort = Sort.by(Sort.Order.desc(LocationTag.Fields.createTime));
if (ObjectUtil.isNotEmpty(pageParam.getPageNo()) && ObjectUtil.isNotEmpty(pageParam.getPageSize())) {
//分页
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<LocationTag> locationTags = locationTagRepository.findAll(specification, pageable);
List<LocationTagVo> locationTagVos = LocationTagVo.transforms(locationTags.getContent());
PageVo<LocationTagVo> page = PageVo.build(locationTagVos, locationTags.getTotalElements());
return Result.ok(page);
} else {
List<LocationTag> locationTags = locationTagRepository.findAll(specification, sort);
List<LocationTagVo> locationTagVos = LocationTagVo.transforms(locationTags);
PageVo<LocationTagVo> page = PageVo.build(locationTagVos, locationTagVos.size());
return Result.ok(page);
}
}
@Override
public Result<String> deleteLocationTag(LocationTagDeleteParam param) {
if (ObjectUtil.isEmpty(param)) return Result.no(Status.EXPECTATION_FAILED);
Map<Object, Object> map = MapUtil.createMap(HashMap.class);
map.put("tagIds", param.getCodes());
map.put("orgId", FACTORY_ID);
zyHttpService.delete("/positionApi/api/tag/delete", map, 3000);
locationTagRepository.deleteAllById(ListUtil.toList(param.getIds()));
return Result.ok();
}
@Override
public void exportLocationTagInfo(LocationTagFindParam param, HttpServletResponse response) {
Specification<LocationTag> specification = getLocationTagPageSpecification(param);
List<LocationTag> locationTags = locationTagRepository.findAll(specification);
List<LocationTagExportExcel> locationTagExportExcels = LocationTagExportExcel.transforms(locationTags);
try (
DefaultStreamExcelBuilder<LocationTagExportExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(LocationTagExportExcel.class)
.threadPool(Executors.newFixedThreadPool(2))
.rowHeight(14)
.titleRowHeight(14)
.style(
"cell->vertical-align:center;text-align:center",
"title->vertical-align:center;text-align:center;font-weight:bold;font-family:等线"
)
.start()
) {
streamExcelBuilder.append(locationTagExportExcels);
String fileName = URLEncoder.encode("定位标签信息.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream();
Workbook workbook = streamExcelBuilder.fixedTitles().build();
workbook.write(out);
workbook.close();
out.flush();
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException("导出岗位信息失败: " + e.getMessage());
}
}
@Override
public Result<String> importLocationTagInfo(MultipartFile file) {
if (file.isEmpty()) throw new RuntimeException("请选择文件");
List<LocationTagImportExcel> locationTagImportExcels;
try (InputStream inputStream = file.getInputStream()) {
locationTagImportExcels =
SaxExcelReader
.of(LocationTagImportExcel.class)
.rowFilter(row -> row.getRowNum() > 0)
.ignoreBlankRow()
.read(inputStream);
} catch (IOException e) {
log.info(e.getMessage());
throw new RuntimeException("文件导入异常");
}
List<LocationTag> locationTags;
locationTags =
locationTagImportExcels
.stream()
.filter(locationTagImportExcel -> !hasLocationTagInfoByCode(locationTagImportExcel.getCode()))
.map(LocationTagImportExcel::transform)
.collect(Collectors.toList());
List<ZyLocationTagAddParam> zyLocationTagAddParams = ZyLocationTagAddParam.transforms(
locationTagImportExcels,
FACTORY_ID
);
zyHttpService.post("/positionApi/api/tag/saveTag", zyLocationTagAddParams, 3000);
locationTagRepository.saveAll(locationTags);
return Result.ok();
}
@Override
public Result<String> modifyLocationTag(LocationTagModifyParam param) {
Optional<LocationTag> locationTagOptional = locationTagRepository.findById(param.getId());
if (locationTagOptional.isEmpty()) return Result.no(Status.BAD_REQUEST, "被修改的数据不存在");
LocationTag locationTag = locationTagOptional.get();
if (!StrUtil.equals(locationTag.getCode(), param.getCode())) {
if (hasLocationTagInfoByCode(param.getCode())) return Result.no(Status.BAD_REQUEST, "编号已存在");
}
locationTag = param.transform();
locationTag.setId(param.getId());
locationTagRepository.save(locationTag);
return Result.ok();
}
private boolean hasLocationTagInfoByCode(String code) {
LocationTag locationTag = LocationTag.builder().code(code).build();
return locationTagRepository.count(Example.of(locationTag)) > 0;
}
@NotNull
private Specification<LocationTag> getLocationTagPageSpecification(LocationTagFindParam param) {
return (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (StrUtil.isNotEmpty(param.getCode())) {
predicates.add(cb.like(root.get(LocationTag.Fields.code), "%" + param.getCode() + "%"));
}
if (ObjectUtil.isNotEmpty(param.getType())) {
predicates.add(cb.equal(root.get(LocationTag.Fields.type), param.getType()));
}
if (ObjectUtil.isNotEmpty(param.getSilent())) {
predicates.add(cb.equal(root.get(LocationTag.Fields.silent), param.getSilent()));
}
Order order = cb.desc(root.get(LocationTag.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
}
}
/* (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.LocationTagDeleteParam;
import com.yiring.app.param.location.LocationTagFindParam;
import com.yiring.app.param.location.LocationTagModifyParam;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.app.param.location.tag.*;
import com.yiring.app.vo.location.tag.LocationTagIndexVo;
import com.yiring.app.vo.location.tag.LocationTagVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
......@@ -20,31 +19,31 @@ import org.springframework.web.multipart.MultipartFile;
public interface LocationTagService {
/**
* 新增定位标签
* @param param 入参
* @param locationTagAddParam LocationTagAddParam
* @return Result<String>
*/
Result<String> addLocationTag(LocationTagAddParam param);
Result<String> addLocationTag(LocationTagAddParam locationTagAddParam);
/**
* 分页查询
* @param param 入参
* @param locationTagFindParam LocationTagFindParam
* @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>
*/
Result<String> deleteLocationTag(LocationTagDeleteParam param);
Result<String> deleteLocationTag(LocationTagDeleteParam locationTagDeleteParam);
/**
* 导出定位标签
* @param param 入参
* @param locationTagExportParam 入参
* @param response 响应信息
*/
void exportLocationTagInfo(LocationTagFindParam param, HttpServletResponse response);
void exportLocationTagInfo(LocationTagExportParam locationTagExportParam, HttpServletResponse response);
/**
* 导入定位标签
......@@ -53,10 +52,17 @@ public interface LocationTagService {
*/
Result<String> importLocationTagInfo(MultipartFile file);
/**
/* *//**
* 修改定位标签
* @param param 入参
* @param locationTagModifyParam 入参
* @return Result<String>
*//*
Result<String> modifyLocationTag(LocationTagModifyParam locationTagModifyParam);*/
/**
* 检索标签
* @param indexParam IndexParam
* @return Result<PageVo<LocationTagIndexVo>>
*/
Result<String> modifyLocationTag(LocationTagModifyParam param);
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.param.location.tag.LocationTagTypeSendParam;
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
);
/**
* 批量分配内部/外部
* @param locationtagtypeSendParam LocationTagTypeSendParam
* @return Result<String>
*/
Result<String> sendLocationTagType(LocationTagTypeSendParam locationtagtypeSendParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location.tag.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.yiring.app.domain.location.LocationTag;
import com.yiring.app.domain.location.LocationTagRepository;
import com.yiring.app.feign.zy.location.tag.LocationTagTypeClient;
import com.yiring.app.param.location.tag.LocationTagTypeFindParam;
import com.yiring.app.param.location.tag.LocationTagTypeSendParam;
import com.yiring.app.param.zy.location.tag.ZyLocationTagTypeSendParam;
import com.yiring.app.service.location.tag.LocationTagTypeService;
import com.yiring.app.util.zy.ZyUtil;
import com.yiring.app.vo.location.tag.LocationTagTypeVo;
import com.yiring.common.core.Result;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder;
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 {
final Integer FACTORY_ID = 100;
@Resource
LocationTagRepository locationTagRepository;
@Resource
LocationTagTypeClient locationTagTypeClient;
@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);
}
@Override
public Result<String> sendLocationTagType(LocationTagTypeSendParam locationtagtypeSendParam) {
ZyLocationTagTypeSendParam zyLocationTagTypeSendParam = ZyLocationTagTypeSendParam
.builder()
.orgId(FACTORY_ID)
.category(locationtagtypeSendParam.getCategory())
.build();
String[] split = locationtagtypeSendParam.getIds().split(",");
ArrayList<Long> ids = ListUtil.toList();
ArrayList<String> list = ListUtil.toList(split);
for (String id : list) {
Optional<LocationTag> locationTagOptional = locationTagRepository.findById(Convert.toLong(id));
locationTagOptional.ifPresent(locationTag -> ids.add(locationTag.getLinkId()));
}
zyLocationTagTypeSendParam.setIds(Convert.toLongArray(ids));
JSONObject jsonObject = locationTagTypeClient.updateEntityType(
JSONUtil.toJsonStr(zyLocationTagTypeSendParam),
ZyUtil.manageLogin()
);
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg")));
}
Specification<LocationTag> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (StrUtil.isNotEmpty(locationtagtypeSendParam.getIds())) {
CriteriaBuilder.In<Object> in = cb.in(root.get(BasicEntity.Fields.id));
for (String id : list) in.value(Convert.toLong(id));
predicates.add(cb.and(in));
}
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);
locationTags =
locationTags
.stream()
.peek(locationTag -> locationTag.setCategory(locationtagtypeSendParam.getCategory()))
.collect(Collectors.toList());
locationTagRepository.saveAll(locationTags);
return Result.ok();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.post;
import com.yiring.app.param.post.PostFindParam;
import com.yiring.app.param.post.PostParam;
import com.yiring.app.param.post.*;
import com.yiring.app.vo.post.PostIndexVo;
import com.yiring.app.vo.post.PostInfoVo;
import com.yiring.app.vo.post.PostVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
......@@ -18,57 +20,58 @@ import javax.servlet.http.HttpServletResponse;
public interface PostService {
/**
* 新增职位信息
* @param postParam 入参
* @param postAddParam PostAddParam
* @return Result<String>
*/
Result<String> addPost(PostParam postParam);
Result<String> addPost(PostAddParam postAddParam);
/**
* 修改职位信息
* @param postParam 入参
* @param idParam id
* @param postModifyParam PostModifyParam
* @return Result<String>
*/
Result<String> modifyPost(PostParam postParam, IdParam idParam);
Result<String> modifyPost(PostModifyParam postModifyParam);
/**
* 销毁职位信息
* @param idParam id
* @param idParam IdParam
* @return Result<String>
*/
Result<String> deletePost(IdParam idParam);
/**
* 职位信息分页
* @param param 入参
* @param postFindParam PostFindParam
* @param pageParam PageParam
* @return Result<PageVo<PostVo>>
*/
Result<PageVo<PostVo>> findPostPage(PostFindParam param, PageParam pageParam);
Result<PageVo<PostVo>> findPostPage(PostFindParam postFindParam, PageParam pageParam);
/**
* 详细信息查询
* @param idParam id
* @return Result<PostVo>
* @param idParam IdParam
* @return Result<PostInfoVo>
*/
Result<PostVo> findPostById(IdParam idParam);
Result<PostInfoVo> findPostById(IdParam idParam);
/**
* 根据名称判断是否存在职业信息
* @param name 职业名称
* @return T/F
* @param name String
* @return boolean
*/
boolean hasPostInfo(String name);
/**
* 导出职位信息
* @param param 入参
* @param response 响应信息
* @param postExportParam PostExportParam
* @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);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.user;
import com.yiring.app.param.user.UserBingTagParam;
import com.yiring.app.param.user.UserFindParam;
import com.yiring.app.param.user.*;
import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.app.vo.user.UserVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/**
* 用户
......@@ -18,25 +20,25 @@ import javax.servlet.http.HttpServletResponse;
public interface UserService {
/**
* 表格查询
* @param param UserByNameParam
* @param userFindParam UserByNameParam
* @param pageParam PageParam
* @return Result<PageVo<UserAutoVo>>
*/
Result<PageVo<UserVo>> findUserPage(UserFindParam param, PageParam pageParam);
Result<PageVo<UserVo>> findUserPage(UserFindParam userFindParam, PageParam pageParam);
/**
* 用户详细信息
* @param idParam IdParam
* @return Result<UserVo>
*/
Result<UserVo> findUserById(IdParam idParam);
Result<UserInfoVo> findUserById(IdParam idParam);
/**
* 用户绑定标签
* @param param UserBingTagParam
* @param userBingTagParam UserBingTagParam
* @return Result<String>
*/
Result<String> userBingTag(UserBingTagParam param);
Result<String> userBingTag(UserBingTagParam userBingTagParam);
/**
* 收卡
......@@ -53,15 +55,44 @@ public interface UserService {
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 response HttpServletResponse
* 启用/停用
* @param idParam IdParam
* @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. */
package com.yiring.app.service.zy;
import com.yiring.common.core.Result;
import java.io.Serializable;
import java.util.concurrent.CompletableFuture;
/**
* ZyHttp请求
* @author LJ-2204
* @date 2022/4/18
*/
public interface ZyHttpService {
/**
* get请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
CompletableFuture<Result<Serializable>> get(String urlString, Object obj, int timeout);
/**
* post请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
CompletableFuture<Result<Serializable>> post(String urlString, Object obj, int timeout);
/**
* put请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
CompletableFuture<Result<Serializable>> put(String urlString, Object obj, int timeout);
/**
* delete请求
* @param urlString 路径
* @param obj 参数
* @param timeout 请求时长
* @return json
*/
CompletableFuture<Result<Serializable>> delete(String urlString, Object obj, int timeout);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.zy.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.yiring.app.service.zy.ZyHttpService;
import com.yiring.auth.util.ZyUtil;
import com.yiring.common.core.Result;
import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* ZyHttp请求
* @author LJ-2204
* @date 2022/4/18
*/
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class ZyHttpServiceImpl implements ZyHttpService {
public final String TOKEN_TYPE = "bearer ";
public final String URL_PREFIX = "http://project.yz-online.com:789";
@Override
@Async("httpThreadPool")
public CompletableFuture<Result<Serializable>> get(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = ZyUtil.login();
String body = HttpRequest
.get(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return CompletableFuture.completedFuture(getResult(body));
}
@Override
@Async("httpThreadPool")
public CompletableFuture<Result<Serializable>> post(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = ZyUtil.login();
String body = HttpRequest
.post(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return CompletableFuture.completedFuture(getResult(body));
}
@Override
@Async("httpThreadPool")
public CompletableFuture<Result<Serializable>> put(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = ZyUtil.login();
String body = HttpRequest
.put(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/json")
.body(json)
.timeout(timeout)
.execute()
.body();
return CompletableFuture.completedFuture(getResult(body));
}
@Override
@Async("httpThreadPool")
public CompletableFuture<Result<Serializable>> delete(String urlString, Object obj, int timeout) {
String json = JSONUtil.toJsonStr(obj);
String token = ZyUtil.login();
String body = HttpRequest
.delete(URL_PREFIX + urlString)
.header(Header.AUTHORIZATION, TOKEN_TYPE + token)
.header(Header.CONTENT_TYPE, "application/x-www-form-urlencoded")
.body(json)
.timeout(timeout)
.execute()
.body();
return CompletableFuture.completedFuture(getResult(body));
}
/**
* 返回类型转换
* @param body json
* @return Result
*/
private static Result<Serializable> getResult(String body) {
String data = null;
Map map = JSONUtil.toBean(body, Map.class);
Integer code = Convert.toInt(map.get("code"));
String msg = Convert.toStr(map.get("msg"));
if (ObjectUtil.isNotEmpty(map.get("data"))) {
data = Convert.toStr(map.get("data"));
}
return Result.builder().status(code).message(msg).body(data).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.util.zy;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.http.Header;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.yiring.app.rabbit.config.ZyConfigProperties;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import lombok.experimental.UtilityClass;
import org.springframework.data.redis.core.RedisTemplate;
/**
* 真源授权工具
* @author LJ-2204
* @date 2022/4/15
*/
@UtilityClass
public class ZyUtil {
RedisTemplate<String, Object> redisTemplate;
ZyConfigProperties.ZyConfigOpen zyConfigOpen;
ZyConfigProperties.ZyConfigProxy zyConfigProxy;
static {
redisTemplate = SpringUtil.getBean("redisTemplate");
zyConfigOpen = SpringUtil.getBean("zyConfigProperties.ZyConfigOpen");
zyConfigProxy = SpringUtil.getBean("zyConfigProperties.ZyConfigProxy");
}
public final Integer ORG_ID = 100;
public final String OPEN_KEY = "zy_open_token";
// public final String CLIENT_KEY = "zy_client_token";
// public final String MANAGE_KEY = "zy_manage_token";
/**
* 获取openToken
* @return token
*/
public static String openLogin() {
Object obj = redisTemplate.opsForValue().get(OPEN_KEY);
if (ObjectUtil.isNotEmpty(obj)) {
return String.valueOf(obj);
}
Map<String, Object> map = MapUtil.createMap(HashMap.class);
map.put("client_id", zyConfigOpen.getClientId());
map.put("client_secret", zyConfigOpen.getClientSecret());
map.put("grant_type", zyConfigOpen.getGrantType());
String json = HttpUtil.get(zyConfigOpen.getApi() + "/oauth/token", map);
JSONObject jsonObject = JSONUtil.parseObj(json);
String access_token = Convert.toStr(jsonObject.get("access_token"));
Integer expires_in = Convert.toInt(jsonObject.get("expires_in"));
redisTemplate.opsForValue().set(OPEN_KEY, access_token, expires_in, TimeUnit.SECONDS);
return access_token;
}
/**
* 获取应用平台token
* @return token
*/
public static String clientLogin() {
// Object obj = redisTemplate.opsForValue().get(CLIENT_KEY);
// if (ObjectUtil.isNotEmpty(obj)) {
// return String.valueOf(obj);
// }
Map<String, Object> map = MapUtil.createMap(HashMap.class);
map.put("orgId", ORG_ID);
map.put("tenantId", zyConfigProxy.getTenant());
map.put("username", zyConfigProxy.getClient().getUsername());
map.put("password", zyConfigProxy.getClient().getPassword());
String json = HttpRequest
.post(zyConfigProxy.getApi() + "/position/login")
.header(Header.CONTENT_TYPE, "application/json")
.body(JSONUtil.toJsonStr(map))
.execute()
.body();
JSONObject jsonObject = JSONUtil.parseObj(json);
// String token = Convert.toStr(jsonObject.get("token"));
// redisTemplate.opsForValue().set(CLIENT_KEY, token, 1200, TimeUnit.SECONDS);
return Convert.toStr(jsonObject.get("token"));
}
/**
* 获取管理平台token
* @return token
*/
public static String manageLogin() {
// Object obj = redisTemplate.opsForValue().get(MANAGE_KEY);
// if (ObjectUtil.isNotEmpty(obj)) {
// return String.valueOf(obj);
// }
Map<String, Object> map = MapUtil.createMap(HashMap.class);
map.put("orgId", ORG_ID);
map.put("tenantId", zyConfigProxy.getTenant());
map.put("username", zyConfigProxy.getManage().getUsername());
map.put("password", zyConfigProxy.getManage().getPassword());
String json = HttpRequest
.post(zyConfigProxy.getApi() + "/position/login")
.header(Header.CONTENT_TYPE, "application/json")
.body(JSONUtil.toJsonStr(map))
.execute()
.body();
JSONObject jsonObject = JSONUtil.parseObj(json);
// String token = Convert.toStr(jsonObject.get("token"));
// redisTemplate.opsForValue().set(MANAGE_KEY, token, 1200, TimeUnit.SECONDS);
return Convert.toStr(jsonObject.get("token"));
}
}
/* (C) 2022 YiRing, Inc. */
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.auth.domain.dept.Department;
import com.yiring.auth.domain.post.Post;
......@@ -41,6 +43,7 @@ public class DepartmentInfoVo implements Serializable {
@ApiModelProperty(value = "是否启用", example = "T/F")
Boolean enable;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "上级部门", example = "0根目录")
Long pid;
......@@ -61,7 +64,7 @@ public class DepartmentInfoVo implements Serializable {
return DepartmentInfoVo
.builder()
.name(department.getName())
.userVo(UserVo.transform(department.getLeader()))
.userVo(UserVo.transformDept(department.getLeader()))
.enable(department.getEnable())
.posts(department.getPosts())
.pid(department.getPid())
......
/* (C) 2022 YiRing, Inc. */
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.auth.domain.dept.Department;
import io.swagger.annotations.ApiModel;
......@@ -9,7 +12,6 @@ import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -31,9 +33,14 @@ public class DepartmentVo implements Serializable {
@Serial
private static final long serialVersionUID = -8193039102015929156L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "111")
Long id;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "上级部门", example = "0根目录")
Long pid;
@ApiModelProperty(value = "部门名称", example = "研发部")
String name;
......@@ -43,9 +50,6 @@ public class DepartmentVo implements Serializable {
@ApiModelProperty(value = "是否启用", example = "T/F")
Boolean enable;
@ApiModelProperty(value = "上级部门", example = "0根目录")
Long pid;
@ApiModelProperty(value = "上级部门名称", example = "前端")
String pName;
......@@ -58,21 +62,19 @@ public class DepartmentVo implements Serializable {
@ApiModelProperty(value = "子节点")
List<DepartmentVo> childList;
public static List<DepartmentVo> transforms(List<Department> departments) {
return departments
.stream()
.map(department ->
DepartmentVo
.builder()
.id(department.getId())
.name(department.getName())
.leader(UserVo.transform(department.getLeader()))
.enable(department.getEnable())
.pid(department.getPid())
.updateTime(department.getUpdateTime())
.createTime(department.getCreateTime())
.build()
)
.collect(Collectors.toList());
public static DepartmentVo transform(Department department) {
DepartmentVo departmentVo = DepartmentVo
.builder()
.id(department.getId())
.name(department.getName())
.enable(department.getEnable())
.pid(department.getPid())
.updateTime(department.getUpdateTime())
.createTime(department.getCreateTime())
.build();
if (ObjectUtil.isNotEmpty(department.getLeader())) {
departmentVo.setLeader(UserVo.transformDept(department.getLeader()));
}
return departmentVo;
}
}
/* (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. */
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.ser.std.ToStringSerializer;
......@@ -9,8 +9,6 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -44,30 +42,25 @@ public class LocationTagVo implements Serializable {
@ApiModelProperty(value = "状态", example = "静止")
Boolean silent;
@ApiModelProperty(value = "电量", example = "1")
Integer volt;
@ApiModelProperty(value = "imei 设备编码", example = "88888888")
String imei;
@ApiModelProperty(value = "电量", example = "1")
Integer volt;
@ApiModelProperty(value = "最近更新时间", example = "2022-01-01 00:00:00")
LocalDateTime updateTime;
public static List<LocationTagVo> transforms(List<LocationTag> locationTags) {
return locationTags
.stream()
.map(locationTag ->
LocationTagVo
.builder()
.id(locationTag.getId())
.code(locationTag.getCode())
.type(locationTag.getType())
.silent(locationTag.getSilent())
.volt(locationTag.getVolt())
.imei(locationTag.getImei())
.updateTime(locationTag.getUpdateTime())
.build()
)
.collect(Collectors.toList());
public static LocationTagVo transform(LocationTag locationTag) {
return LocationTagVo
.builder()
.id(locationTag.getId())
.code(locationTag.getCode())
.type(locationTag.getType())
.silent(locationTag.getSilent())
.volt(locationTag.getVolt())
.imei(locationTag.getImei())
.updateTime(locationTag.getUpdateTime())
.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 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;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -38,16 +36,13 @@ public class PostVo implements Serializable {
@ApiModelProperty(value = "名称", example = "Java")
String name;
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "创建时间", example = "创建时间")
LocalDateTime createTime;
@ApiModelProperty(value = "更新时间", example = "更新时间")
LocalDateTime updateTime;
@ApiModelProperty(value = "描述", example = "描述")
String describe;
@ApiModelProperty(value = "是否启用", example = "true")
@ApiModelProperty(value = "职位状态", example = "true")
Boolean enable;
public static PostVo transform(Post post) {
......@@ -55,27 +50,9 @@ public class PostVo implements Serializable {
.builder()
.id(post.getId())
.name(post.getName())
.describe(post.getDescribe())
.enable(post.getEnable())
.describe(post.getDescribe())
.createTime(post.getCreateTime())
.updateTime(post.getUpdateTime())
.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;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
......@@ -47,86 +44,51 @@ public class UserVo implements Serializable {
@ApiModelProperty(value = "部门", example = "系统管理员")
String department;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "部门id", example = "200")
Long departmentId;
@ApiModelProperty(value = "手机号", example = "13012345678")
String mobile;
@ApiModelProperty(value = "职位", example = "系统管理员")
String post;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "职位id", example = "100")
Long postId;
@ApiModelProperty(value = "标签编号", example = "BTT88888888")
String code;
@ApiModelProperty(value = "用户名", example = "admin")
String username;
@ApiModelProperty(value = "是否特殊", example = "false")
Boolean isSpecial;
@ApiModelProperty(value = "性别", example = "false")
Boolean gender;
@ApiModelProperty(value = "邮箱", example = "developer@yiring.com")
String email;
@ApiModelProperty(value = "头像", example = "https://s1.ax1x.com/2022/03/30/qggJH0.jpg")
@ApiModelProperty(value = "头像", example = "baidu.com")
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(
Long id,
String realName,
String uuid,
User.Type type,
String department,
String mobile,
String post,
String code
String code,
Boolean gender,
Boolean isSpecial,
Long departmentId,
Long postId,
String avatar
) {
this.id = id;
this.realName = realName;
this.uuid = uuid;
this.type = type;
......@@ -134,22 +96,20 @@ public class UserVo implements Serializable {
this.mobile = mobile;
this.post = post;
this.code = code;
this.gender = gender;
this.isSpecial = isSpecial;
this.departmentId = departmentId;
this.postId = postId;
this.avatar = avatar;
}
public static UserVo transformUserInfo(User user) {
public static UserVo transformDept(User user) {
return 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();
}
}
......@@ -3,6 +3,7 @@ package com.yiring.app.web;
import com.yiring.app.constant.Code;
import com.yiring.app.exception.CodeException;
import com.yiring.app.util.zy.ZyUtil;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
......@@ -46,4 +47,9 @@ public class HelloController {
PageVo<String> vo = PageVo.build(data, data.size());
return Result.ok(vo);
}
@GetMapping("test")
public Result<String> test() {
return Result.ok(ZyUtil.manageLogin());
}
}
......@@ -2,10 +2,13 @@
package com.yiring.app.web.dept;
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.DepartmentModifyParam;
import com.yiring.app.service.dept.DepartmentService;
import com.yiring.app.vo.dept.DepartmentInfoVo;
import com.yiring.app.vo.dept.DepartmentVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo;
......@@ -17,6 +20,7 @@ import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 部门信息控制器
......@@ -36,14 +40,14 @@ public class DepartmentController {
@ApiOperation("新增部门")
@PostMapping("addDepartment")
public Result<String> addDepartment(@Valid DepartmentAddParam param) {
return departmentService.addDepartment(param);
public Result<String> addDepartment(@Valid DepartmentAddParam departmentAddParam) {
return departmentService.addDepartment(departmentAddParam);
}
@ApiOperation("树形表格")
@GetMapping("findDepartmentTree")
public Result<PageVo<DepartmentVo>> findDepartmentTree(@Valid DepartmentFindParam param) {
return departmentService.findDepartmentTree(param);
public Result<PageVo<DepartmentVo>> findDepartmentTree(@Valid DepartmentFindParam departmentFindParam) {
return departmentService.findDepartmentTree(departmentFindParam);
}
@ApiOperation("部门详细信息")
......@@ -54,8 +58,8 @@ public class DepartmentController {
@ApiOperation("部门导出")
@GetMapping("exportDepartment")
public void exportDepartment(@Valid DepartmentFindParam param, HttpServletResponse response) {
departmentService.exportDepartment(param, response);
public void exportDepartment(@Valid DepartmentExportParam departmentExportParam, HttpServletResponse response) {
departmentService.exportDepartment(departmentExportParam, response);
}
@ApiOperation("逻辑删除部门")
......@@ -64,9 +68,21 @@ public class DepartmentController {
return departmentService.deleteDepartment(idParam);
}
@ApiOperation("启用/停用")
@PutMapping("stateDepartment")
public Result<String> stateDepartment(@Valid IdParam 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("importDepartment")
public Result<String> importDepartment(@RequestParam("file") MultipartFile file) {
return departmentService.importDepartment(file);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.beacon;
import com.yiring.app.param.location.beacon.LocationBeaconExportParam;
import com.yiring.app.param.location.beacon.LocationBeaconFindParam;
import com.yiring.app.service.location.beacon.LocationBeaconService;
import com.yiring.app.vo.location.beacon.LocationBeaconVo;
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.servlet.http.HttpServletResponse;
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.PostMapping;
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 {
@Resource
LocationBeaconService locationBeaconService;
@ApiOperation("添加定位信标")
@PostMapping("saveLocationBeacon")
public void saveLocationBeacon() {
locationBeaconService.saveLocationBeacon();
}
@ApiOperation("表格查询")
@GetMapping("findLocationBeacon")
public Result<PageVo<LocationBeaconVo>> findLocationBeacon(
@Valid LocationBeaconFindParam locationBeaconFindParam,
@Valid PageParam pageParam
) {
return locationBeaconService.findLocationBeacon(locationBeaconFindParam, pageParam);
}
@ApiOperation("导出")
@GetMapping("exportLocationBeacon")
public void exportLocationBeacon(
@Valid LocationBeaconExportParam locationBeaconExportParam,
HttpServletResponse response
) {
locationBeaconService.exportLocationBeacon(locationBeaconExportParam, response);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.location.tag;
import com.yiring.app.param.location.LocationTagAddParam;
import com.yiring.app.param.location.LocationTagDeleteParam;
import com.yiring.app.param.location.LocationTagFindParam;
import com.yiring.app.param.location.LocationTagModifyParam;
import com.yiring.app.service.location.LocationTagService;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.app.param.location.tag.*;
import com.yiring.app.service.location.tag.LocationTagService;
import com.yiring.app.vo.location.tag.LocationTagIndexVo;
import com.yiring.app.vo.location.tag.LocationTagVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
......@@ -38,26 +37,32 @@ public class LocationTagController {
@ApiOperation("新增定位标签")
@PostMapping("addLocationTag")
public Result<String> addLocationTag(@Valid LocationTagAddParam param) {
return locationTagService.addLocationTag(param);
public Result<String> addLocationTag(@Valid LocationTagAddParam locationTagAddParam) {
return locationTagService.addLocationTag(locationTagAddParam);
}
@ApiOperation("分页查询")
@GetMapping("findLocationTagPage")
public Result<PageVo<LocationTagVo>> findLocationTagPage(@Valid LocationTagFindParam param, PageParam pageParam) {
return locationTagService.findLocationTagPage(param, pageParam);
public Result<PageVo<LocationTagVo>> findLocationTagPage(
@Valid LocationTagFindParam locationTagFindParam,
@Valid PageParam pageParam
) {
return locationTagService.findLocationTagPage(locationTagFindParam, pageParam);
}
@ApiOperation("销毁定位标签")
@DeleteMapping("deleteLocationTag")
public Result<String> deleteLocationTag(@Valid LocationTagDeleteParam param) {
return locationTagService.deleteLocationTag(param);
public Result<String> deleteLocationTag(@Valid LocationTagDeleteParam locationTagDeleteParam) {
return locationTagService.deleteLocationTag(locationTagDeleteParam);
}
@ApiOperation("导出定位标签")
@GetMapping("exportLocationTagInfo")
public void exportLocationTagInfo(@Valid LocationTagFindParam param, HttpServletResponse response) {
locationTagService.exportLocationTagInfo(param, response);
public void exportLocationTagInfo(
@Valid LocationTagExportParam locationTagExportParam,
HttpServletResponse response
) {
locationTagService.exportLocationTagInfo(locationTagExportParam, response);
}
@ApiOperation("导入定位标签")
......@@ -66,9 +71,15 @@ public class LocationTagController {
return locationTagService.importLocationTagInfo(file);
}
@ApiOperation("修改定位标签")
/* @ApiOperation("修改定位标签")
@PutMapping("modifyLocationTag")
public Result<String> modifyLocationTag(@Valid LocationTagModifyParam param) {
return locationTagService.modifyLocationTag(param);
public Result<String> modifyLocationTag(@Valid LocationTagModifyParam locationTagModifyParam) {
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.param.location.tag.LocationTagTypeSendParam;
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.PutMapping;
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);
}
@ApiOperation("批量分配内部/外部")
@PutMapping("sendLocationTagType")
public Result<String> sendLocationTagType(@Valid LocationTagTypeSendParam locationtagtypeSendParam) {
return locationTagTypeService.sendLocationTagType(locationtagtypeSendParam);
}
}
......@@ -3,7 +3,7 @@ package com.yiring.app.web.map;
import com.alibaba.fastjson.JSONObject;
import com.yiring.app.feign.MapClient;
import com.yiring.auth.util.ZyUtil;
import com.yiring.app.util.zy.ZyUtil;
import com.yiring.common.core.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......@@ -20,7 +20,6 @@ import org.springframework.web.bind.annotation.RestController;
* 地图控制器
* @author Administrator
* @version 1.0
* @description: TODO
* @date 2022/4/24 13:48
*/
@Slf4j
......@@ -36,7 +35,7 @@ public class MapController {
@GetMapping("/mapSelect")
@ApiImplicitParams({ @ApiImplicitParam(value = "orgId", required = true, name = "orgId") })
public Result<Serializable> fail(String orgId) {
String login = ZyUtil.login();
String login = ZyUtil.openLogin();
JSONObject jsonObject = mapClient.selectMap(orgId, "bearer " + login);
return Result.ok(jsonObject.get("data").toString());
}
......
/* (C) 2022 YiRing, Inc. */
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.PostParam;
import com.yiring.app.param.post.PostModifyParam;
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.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
......@@ -36,14 +41,14 @@ public class PostController {
@ApiOperation(value = "新增职位")
@PostMapping("addPost")
public Result<String> addPost(@Valid PostParam postParam) {
return postService.addPost(postParam);
public Result<String> addPost(@Valid PostAddParam postAddParam) {
return postService.addPost(postAddParam);
}
@ApiOperation(value = "修改职位")
@PutMapping("modifyPost")
public Result<String> modifyPost(@Valid PostParam postParam, @Valid IdParam idParam) {
return postService.modifyPost(postParam, idParam);
public Result<String> modifyPost(@Valid PostModifyParam postModifyParam) {
return postService.modifyPost(postModifyParam);
}
@ApiOperation(value = "销毁职位")
......@@ -54,25 +59,25 @@ public class PostController {
@ApiOperation(value = "分页查询")
@GetMapping("findPostPage")
public Result<PageVo<PostVo>> findPostPage(@Valid PostFindParam param, @Valid PageParam pageParam) {
return postService.findPostPage(param, pageParam);
public Result<PageVo<PostVo>> findPostPage(@Valid PostFindParam postFindParam, @Valid PageParam pageParam) {
return postService.findPostPage(postFindParam, pageParam);
}
@ApiOperation(value = "详细信息查询")
@GetMapping("findPostById")
public Result<PostVo> findPostById(@Valid IdParam idParam) {
public Result<PostInfoVo> findPostById(@Valid IdParam idParam) {
return postService.findPostById(idParam);
}
@ApiOperation(value = "导出职位信息")
@GetMapping("exportPostInfo")
public void exportPostInfo(@Valid PostFindParam param, HttpServletResponse response) {
postService.exportPostInfo(param, response);
public void exportPostInfo(@Valid PostExportParam postExportParam, HttpServletResponse response) {
postService.exportPostInfo(postExportParam, response);
}
@ApiOperation(value = "下拉菜单")
@GetMapping("selectPost")
public Result<PageVo<PostVo>> selectPost() {
return postService.selectPost();
@ApiOperation(value = "职位检索")
@GetMapping("indexPost")
public Result<PageVo<PostIndexVo>> indexPost(@Valid IndexParam indexParam) {
return postService.indexPost(indexParam);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.user;
import com.yiring.app.param.user.UserBingTagParam;
import com.yiring.app.param.user.UserFindParam;
import com.yiring.app.param.user.*;
import com.yiring.app.service.user.UserService;
import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.app.vo.user.UserVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
......@@ -17,6 +18,7 @@ import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 用户信息
......@@ -28,9 +30,9 @@ import org.springframework.web.bind.annotation.*;
@Slf4j
@Validated
@Api(tags = "User")
@Api(tags = "人员管理")
@RestController
@RequestMapping("/user/")
@RequestMapping("/user/app/")
public class UserAppController {
@Resource
......@@ -38,20 +40,20 @@ public class UserAppController {
@ApiOperation("表格查询")
@GetMapping("findUserPage")
public Result<PageVo<UserVo>> findUserPage(@Valid UserFindParam param, @Valid PageParam pageParam) {
return userService.findUserPage(param, pageParam);
public Result<PageVo<UserVo>> findUserPage(@Valid UserFindParam userFindParam, @Valid PageParam pageParam) {
return userService.findUserPage(userFindParam, pageParam);
}
@ApiOperation("用户详细信息查询")
@GetMapping("findUserById")
public Result<UserVo> findUserById(@Valid IdParam idParam) {
public Result<UserInfoVo> findUserById(@Valid IdParam idParam) {
return userService.findUserById(idParam);
}
@ApiOperation("给用户分配标签卡")
@PutMapping("userBingTag")
public Result<String> userBingTag(@Valid UserBingTagParam param) {
return userService.userBingTag(param);
public Result<String> userBingTag(@Valid UserBingTagParam userBingTagParam) {
return userService.userBingTag(userBingTagParam);
}
@ApiOperation("收卡")
......@@ -66,15 +68,39 @@ public class UserAppController {
return userService.deleteUser(idParam);
}
@ApiOperation("下拉菜单")
@GetMapping("selectUser")
public Result<PageVo<UserVo>> selectUser() {
return userService.selectUser();
}
@ApiOperation("用户导出")
@GetMapping("exportUser")
public void exportUser(@Valid UserFindParam param, HttpServletResponse response) {
userService.exportUser(param, response);
public void exportUser(@Valid UserFindParam userFindParam, HttpServletResponse 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:
simple:
# 手动确认消息
acknowledge-mode: manual
servlet:
multipart:
enabled: true
max-file-size: 50MB
max-request-size: 100MB
# knife4j
knife4j:
......@@ -61,7 +66,6 @@ logging:
level:
# sql bind parameter
org.hibernate.type.descriptor.sql.BasicBinder: trace
# 真源定位系统相关配置
zy-config:
host: project.yz-online.com
......@@ -93,3 +97,10 @@ zy-config:
manage:
username: test123
password: test123
feign:
httpclient:
enabled: false
okhttp:
enabled: true
......@@ -5,20 +5,17 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.user.User;
import com.yiring.common.annotation.FieldMapping;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.Hibernate;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/**
* 部门
......@@ -30,7 +27,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Setter
@ToString
@Builder
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
......@@ -38,17 +35,11 @@ import org.hibernate.snowflake.SnowflakeId;
@Entity
@Comment("系统部门")
@Table(name = "SYS_DEPARTMENT", indexes = { @Index(columnList = "pid"), @Index(columnList = "tree") })
public class Department implements Serializable {
public class Department extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = -5402731145404250150L;
@Comment("主键")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
/**
* 数据来源于【真源人员定位系统 - 部门】
* 作用: 用于双向联动进行数据同步
......@@ -87,12 +78,6 @@ public class Department implements Serializable {
@Comment("树节点标识")
String tree;
@Comment("更新时间")
LocalDateTime updateTime;
@Comment("创建时间")
LocalDateTime createTime;
@Comment("岗位集合")
@Builder.Default
@ToString.Exclude
......@@ -105,14 +90,6 @@ public class Department implements Serializable {
Set<Post> posts = new HashSet<>(0);
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
Department that = (Department) o;
return id != null && Objects.equals(id, that.id);
}
@Override
public int hashCode() {
return getClass().hashCode();
}
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.domain.post;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.snowflake.SnowflakeId;
/**
* 岗位
......@@ -25,7 +22,7 @@ import org.hibernate.snowflake.SnowflakeId;
@Getter
@Setter
@ToString
@Builder
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
......@@ -33,29 +30,17 @@ import org.hibernate.snowflake.SnowflakeId;
@Entity
@Comment("系统岗位")
@Table(name = "SYS_POST")
public class Post implements Serializable {
public class Post extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 3744892781714515997L;
@Comment("主键")
@Id
@GeneratedValue(generator = SnowflakeId.GENERATOR)
@GenericGenerator(name = SnowflakeId.GENERATOR, strategy = SnowflakeId.Strategy.LONG)
Long id;
@Comment("名称")
String name;
@Comment("描述")
String describe;
@Comment("创建时间")
LocalDateTime createTime;
@Comment("更新时间")
LocalDateTime updateTime;
@Comment("是否启用")
Boolean enable;
}
......@@ -98,6 +98,12 @@ public class User extends BasicEntity implements Serializable {
@Comment("是否删除")
Boolean deleted;
@Comment("是否特殊")
Boolean isSpecial;
@Comment("性别")
Boolean gender;
@JsonIgnore
@Builder.Default
@Comment("角色集合")
......
......@@ -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.ExcelModel;
import com.yiring.auth.domain.post.Post;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
......@@ -40,19 +38,13 @@ public class PostExcel {
@ExcelColumn(title = "创建时间")
String createTime;
public static List<PostExcel> transforms(List<Post> posts) {
return posts
.stream()
.map(post ->
PostExcel
.builder()
// .id(post.getId())
.name(post.getName())
.describe(post.getDescribe())
.enable(post.getEnable() ? "启用" : "禁用")
.createTime(LocalDateTimeUtil.format(post.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.build()
)
.collect(Collectors.toList());
public static PostExcel transform(Post post) {
return PostExcel
.builder()
.name(post.getName())
.describe(post.getDescribe())
.enable(post.getEnable() ? "启用" : "禁用")
.createTime(LocalDateTimeUtil.format(post.getCreateTime(), "yyyy-MM-dd HH:mm:ss"))
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.util;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import lombok.experimental.UtilityClass;
import org.springframework.data.redis.core.RedisTemplate;
/**
* 真源授权工具
* @author LJ-2204
* @date 2022/4/15
*/
@UtilityClass
public class ZyUtil {
RedisTemplate<String, Object> redisTemplate;
static {
redisTemplate = SpringUtil.getBean("redisTemplate");
}
public final String CLIENT_ID = "sc21080400";
public final String CLIENT_SECRET = "12A14FDC";
public final String GRANT_TYPE = "client_credentials";
public final String KEY = "zy_token";
/**
* 获取token
* @return token
*/
public static String login() {
Object obj = redisTemplate.opsForValue().get(KEY);
if (ObjectUtil.isNotEmpty(obj)) {
return String.valueOf(obj);
}
Map<String, Object> map = MapUtil.createMap(HashMap.class);
map.put("client_id", CLIENT_ID);
map.put("client_secret", CLIENT_SECRET);
map.put("grant_type", GRANT_TYPE);
String json = HttpUtil.get("http://project.yz-online.com:789/positionApi/oauth/token", map);
Map result = JSON.parseObject(json, Map.class);
String access_token = result.get("access_token").toString();
String expires_in = result.get("expires_in").toString();
redisTemplate.opsForValue().set(KEY, access_token, Convert.toInt(expires_in), TimeUnit.SECONDS);
return access_token;
}
/**
* 判断token是否有效
* @return T/F
*/
public static boolean getToken() {
return ObjectUtil.isNotEmpty(redisTemplate.opsForValue().get(KEY));
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.common.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.Valid;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 公共下拉str查询入参
*
* @author LJ-2204
* @date 2022/4/26
*/
@ApiModel("IndexParam")
@Valid
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class IndexParam implements Serializable {
@Serial
private static final long serialVersionUID = 1175269732754454737L;
@ApiModelProperty(value = "下拉查询")
String str;
}
......@@ -29,7 +29,7 @@ public class MinioConfig {
String bucket;
String domain;
@Bean
@Bean("MinioClient")
public MinioClient getClient() {
return MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
}
......
......@@ -28,7 +28,7 @@ public class Minio {
@Resource
public MinioConfig config;
@Resource
@Resource(name = "MinioClient")
public MinioClient client;
/**
......
......@@ -31,6 +31,8 @@ buildscript {
myexcelVersion = '4.1.1'
// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign
openfeignVersion = '3.1.1'
// https://mvnrepository.com/artifact/io.github.openfeign/feign-okhttp
feignOkhttpVersion= '11.8'
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论