提交 f773da7a 作者: 17607474349

feat:

1、实现对定位标签的相关操作(未同步)
2、添加hutool相关依赖
上级 b54bb589
...@@ -47,4 +47,13 @@ dependencies { ...@@ -47,4 +47,13 @@ dependencies {
// https://mvnrepository.com/artifact/com.graphhopper.external/jackson-datatype-jts // https://mvnrepository.com/artifact/com.graphhopper.external/jackson-datatype-jts
implementation 'com.graphhopper.external:jackson-datatype-jts:1.0-2.7' implementation 'com.graphhopper.external:jackson-datatype-jts:1.0-2.7'
// hutool-core
implementation "cn.hutool:hutool-core:${hutoolVersion}"
// hutool-http
implementation "cn.hutool:hutool-http:${hutoolVersion}"
// myexcel
implementation "com.github.liaochong:myexcel:${myexcelVersion}"
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.location;
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
* 定位标签JPA
* @author LJ-2204
* @date 2022/4/14
*/
@Repository
public interface LocationTagRepository
extends JpaRepository<LocationTag, Serializable>, JpaSpecificationExecutor<LocationTag> {}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.location;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.domain.location.LocationTag;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.FieldDefaults;
/**
* 定位标签导出模型
* @author LJ-2204
* @date 2022/4/14
*/
@ExcelModel
@Data
@Builder
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagExportExcel implements Serializable {
private static final long serialVersionUID = -4549580878785078998L;
@ExcelColumn(title = "主键")
@JsonSerialize(using = ToStringSerializer.class)
Long id;
@ExcelColumn(title = "编号")
String code;
@ExcelColumn(title = "标签类型")
LocationTag.Type type;
@ExcelColumn(title = "状态")
Boolean silent;
@ExcelColumn(title = "imei")
String imei;
@ExcelColumn(title = "电量")
Integer volt;
@ExcelColumn(title = "最近更新时间")
LocalDateTime updateTime;
public static List<LocationTagExportExcel> transforms(List<LocationTag> locationTags) {
return locationTags
.stream()
.map(locationTag ->
LocationTagExportExcel
.builder()
.id(locationTag.getId())
.code(locationTag.getCode())
.type(locationTag.getType())
.silent(locationTag.getSilent())
.imei(locationTag.getImei())
.volt(locationTag.getVolt())
.updateTime(locationTag.getUpdateTime())
.build()
)
.collect(Collectors.toList());
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.location;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.app.domain.location.LocationTag;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author LJ-2204
* @date 2022/4/14
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagImportExcel implements Serializable {
private static final long serialVersionUID = -8817732062049005201L;
// 编号
@ExcelColumn(index = 0)
String code;
// 标签型号
@ExcelColumn(index = 1)
String type;
// 所用实体
@ExcelColumn(index = 2)
String entityType;
// 设备编码
@ExcelColumn(index = 3)
String imei;
public LocationTag transform() {
return LocationTag.builder().code(this.code).type(LocationTag.Type.valueOf(this.type)).imei(this.imei).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 定位标签新增入参
* @author LJ-2204
* @date 2022/4/14
*/
@ApiModel("LocationTagAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagAddParam implements Serializable {
private static final long serialVersionUID = -2942040230386389302L;
@ApiModelProperty(value = "编号", example = "BTT88888888", required = true)
String code;
@ApiModelProperty(value = "标签类型", example = "蓝牙人员定位卡", required = true)
LocationTag.Type type;
@ApiModelProperty(value = "imei 设备编码标识", example = "88888888")
String imei;
public LocationTag transform() {
return LocationTag.builder().code(this.code).type(this.type).imei(this.imei).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location;
import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 定位标签销毁入参
* @author LJ-2204
* @date 2022/4/14
*/
@ApiModel("LocationTagDeleteParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagDeleteParam implements Serializable {
private static final long serialVersionUID = 2404060244461070885L;
@ApiModelProperty(value = "id", example = "145235231", required = true)
@NotNull(message = "id 不能为空")
Long id;
@ApiModelProperty(value = "人员", example = "1")
User user;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 定位标签分页入参
* @author LJ-2204
* @date 2022/4/14
*/
@ApiModel("LocationTagFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagFindParam implements Serializable {
private static final long serialVersionUID = -5134311481372693111L;
@ApiModelProperty(value = "编号", example = "BTT88888888")
String code;
@ApiModelProperty(value = "标签类型", example = "蓝牙人员定位卡")
LocationTag.Type type;
@ApiModelProperty(value = "状态", example = "true")
Boolean silent;
@ApiModelProperty(value = "每页记录数", example = "10")
Integer pageSize;
@ApiModelProperty(value = "页码", example = "1")
Integer pageNo;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.location;
import com.yiring.app.domain.location.LocationTag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 定位标签修改入参
* @author LJ-2204
* @date 2022/4/14
*/
@ApiModel("LocationTagModifyParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagModifyParam implements Serializable {
private static final long serialVersionUID = 7711908393372149723L;
@ApiModelProperty(value = "编号", example = "BTT88888888", required = true)
String code;
@ApiModelProperty(value = "标签类型", example = "蓝牙人员定位卡", required = true)
LocationTag.Type type;
@ApiModelProperty(value = "imei 设备编码标识", example = "88888888")
String imei;
public LocationTag transform() {
return LocationTag.builder().code(this.code).type(this.type).imei(this.imei).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location;
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.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/**
* 定位标签
* @author LJ-2204
* @date 2022/4/14
*/
public interface LocationTagService {
/**
* 新增定位标签
* @param param
* @return
*/
Result<String> addLocationTag(LocationTagAddParam param);
/**
* 分页查询
* @param param
* @return
*/
Result<PageVo<LocationTagVo>> findLocationTagPage(LocationTagFindParam param);
/**
* 销毁定位标签
* @param param
* @return
*/
Result<String> deleteLocationTag(LocationTagDeleteParam param);
/**
* 导出定位标签
* @param param
* @param response
*/
void exportLocationTagInfo(LocationTagFindParam param, HttpServletResponse response);
/**
* 导入定位标签
* @param file
* @return
*/
Result<String> importLocationTagInfo(MultipartFile file);
/**
* 修改定位标签
* @param param
* @return
*/
Result<String> modifyLocationTag(LocationTagModifyParam param, IdParam idParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location.impl;
import cn.hutool.core.collection.ListUtil;
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.service.location.LocationTagService;
import com.yiring.app.vo.location.LocationTagVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
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.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
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
LocationTagRepository locationTagRepository;
@Override
public Result<String> addLocationTag(LocationTagAddParam param) {
if (hasLocationTagInfoByCode(param.getCode())) return Result.no(Status.BAD_REQUEST, "编号已存在");
LocationTag locationTag = param.transform();
locationTagRepository.save(locationTag);
return Result.ok();
}
@Override
public Result<PageVo<LocationTagVo>> findLocationTagPage(LocationTagFindParam param) {
Specification<LocationTag> specification = getLocationTagPageSpecification(param);
Sort sort = Sort.by(Sort.Order.desc(LocationTag.Fields.createTime));
if (Objects.nonNull(param.getPageNo()) && Objects.nonNull(param.getPageSize())) {
//分页
Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize());
Page<LocationTag> locationTags = locationTagRepository.findAll(specification, pageable);
List<LocationTagVo> locationTagVos = LocationTagVo.transforms(locationTags.getContent());
PageVo<LocationTagVo> page = PageVo.build(locationTagVos, locationTagVos.size());
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.isNotEmpty(param.getUser())) return Result.no(Status.BAD_REQUEST, "请先解绑人员");
locationTagRepository.deleteById(param.getId());
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("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 = locationTagImportExcels
.stream()
.map(LocationTagImportExcel::transform)
.collect(Collectors.toList());
locationTags.forEach(locationTag -> {
locationTagRepository
.findOne((root, cq, cb) -> {
List<Predicate> predicates = new ArrayList<>();
if (StrUtil.isNotEmpty(locationTag.getCode())) {
predicates.add(cb.equal(root.get(LocationTag.Fields.code), locationTag.getCode()));
}
return cq.where(predicates.toArray(new Predicate[0])).getRestriction();
})
.ifPresent(temp -> locationTag.setId(temp.getId()));
locationTagRepository.save(locationTag);
});
return Result.ok();
}
@Override
public Result<String> modifyLocationTag(LocationTagModifyParam param, IdParam idParam) {
Optional<LocationTag> locationTagOptional = locationTagRepository.findById(idParam.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(idParam.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())) {
cb.equal(root.get(LocationTag.Fields.code), param.getCode());
}
if (ObjectUtil.isNotEmpty(param.getType())) {
cb.equal(root.get(LocationTag.Fields.type), param.getType());
}
if (ObjectUtil.isNotEmpty(param.getSilent())) {
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.vo.location;
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.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 定位标签视图
* @author LJ-2204
* @date 2022/4/14
*/
@ApiModel("LocationTagVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class LocationTagVo implements Serializable {
private static final long serialVersionUID = -7884163207638158359L;
@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 = "静止")
Boolean silent;
@ApiModelProperty(value = "电量", example = "1")
Integer volt;
@ApiModelProperty(value = "imei 设备编码", example = "88888888")
String imei;
@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())
.build()
)
.collect(Collectors.toList());
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web;
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.common.core.Result;
import com.yiring.common.param.IdParam;
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.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 定位标签
* @author LJ-2204
* @date 2022/4/13
*/
@Slf4j
@Validated
@Api(tags = "职位信息")
@RestController
@RequestMapping("/location/tag/")
public class LocationTagController {
@Resource
LocationTagService locationTagService;
@ApiOperation("新增定位标签")
@PostMapping("addLocationTag")
public Result<String> addLocationTag(@Valid LocationTagAddParam param) {
return locationTagService.addLocationTag(param);
}
@ApiOperation("分页查询")
@GetMapping("findLocationTagPage")
public Result<PageVo<LocationTagVo>> findLocationTagPage(@Valid LocationTagFindParam param) {
return locationTagService.findLocationTagPage(param);
}
@ApiOperation("销毁定位标签")
@DeleteMapping("deleteLocationTag")
public Result<String> deleteLocationTag(@Valid LocationTagDeleteParam param) {
return locationTagService.deleteLocationTag(param);
}
@ApiOperation("导出定位标签")
@GetMapping("exportLocationTagInfo")
public void exportLocationTagInfo(@Valid LocationTagFindParam param, HttpServletResponse response) {
locationTagService.exportLocationTagInfo(param, response);
}
@ApiOperation("导入定位标签")
@PostMapping("importLocationTagInfo")
public Result<String> importLocationTagInfo(@RequestParam("file") MultipartFile file) {
return locationTagService.importLocationTagInfo(file);
}
@ApiOperation("修改定位标签")
@PutMapping("modifyLocationTag")
public Result<String> modifyLocationTag(@Valid LocationTagModifyParam param, IdParam idParam) {
return locationTagService.modifyLocationTag(param, idParam);
}
}
...@@ -23,4 +23,7 @@ dependencies { ...@@ -23,4 +23,7 @@ dependencies {
// myexcel // myexcel
implementation "com.github.liaochong:myexcel:${myexcelVersion}" implementation "com.github.liaochong:myexcel:${myexcelVersion}"
// hutool-http
implementation "cn.hutool:hutool-http:${hutoolVersion}"
} }
...@@ -13,13 +13,13 @@ import lombok.experimental.FieldDefaults; ...@@ -13,13 +13,13 @@ import lombok.experimental.FieldDefaults;
* @date 2022/4/13 * @date 2022/4/13
*/ */
@ApiModel("FindPostParam") @ApiModel("PostFindParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class FindPostParam implements Serializable { public class PostFindParam implements Serializable {
private static final long serialVersionUID = 1926710333813935577L; private static final long serialVersionUID = 1926710333813935577L;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.service.post; package com.yiring.auth.service.post;
import com.yiring.auth.param.post.FindPostParam; import com.yiring.auth.param.post.PostFindParam;
import com.yiring.auth.param.post.PostParam; import com.yiring.auth.param.post.PostParam;
import com.yiring.auth.vo.post.PostVo; import com.yiring.auth.vo.post.PostVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
...@@ -42,7 +42,7 @@ public interface PostService { ...@@ -42,7 +42,7 @@ public interface PostService {
* @param param * @param param
* @return * @return
*/ */
Result<PageVo<PostVo>> findPostPage(FindPostParam param); Result<PageVo<PostVo>> findPostPage(PostFindParam param);
/** /**
* 详细信息查询 * 详细信息查询
...@@ -63,5 +63,5 @@ public interface PostService { ...@@ -63,5 +63,5 @@ public interface PostService {
* @param param * @param param
* @param response * @param response
*/ */
void exportPostInfo(FindPostParam param, HttpServletResponse response); void exportPostInfo(PostFindParam param, HttpServletResponse response);
} }
...@@ -8,7 +8,7 @@ import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder; ...@@ -8,7 +8,7 @@ import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.auth.domain.post.Post; import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.post.PostRepository; import com.yiring.auth.domain.post.PostRepository;
import com.yiring.auth.excel.post.PostExcel; import com.yiring.auth.excel.post.PostExcel;
import com.yiring.auth.param.post.FindPostParam; import com.yiring.auth.param.post.PostFindParam;
import com.yiring.auth.param.post.PostParam; import com.yiring.auth.param.post.PostParam;
import com.yiring.auth.service.post.PostService; import com.yiring.auth.service.post.PostService;
import com.yiring.auth.vo.post.PostVo; import com.yiring.auth.vo.post.PostVo;
...@@ -50,7 +50,7 @@ public class PostServiceImpl implements PostService { ...@@ -50,7 +50,7 @@ public class PostServiceImpl implements PostService {
@Override @Override
public Result<String> addPost(PostParam postParam) { public Result<String> addPost(PostParam postParam) {
if (hasPostInfo(postParam.getName())) return Result.no(Status.INTERNAL_SERVER_ERROR, "职位已存在"); if (hasPostInfo(postParam.getName())) return Result.no(Status.BAD_REQUEST, "职位已存在");
Post post = postParam.transform(); Post post = postParam.transform();
postRepository.save(post); postRepository.save(post);
return Result.ok(); return Result.ok();
...@@ -59,12 +59,12 @@ public class PostServiceImpl implements PostService { ...@@ -59,12 +59,12 @@ public class PostServiceImpl implements PostService {
@Override @Override
public Result<String> modifyPost(PostParam postParam, IdParam idParam) { public Result<String> modifyPost(PostParam postParam, IdParam idParam) {
Optional<Post> postOptional = postRepository.findById(idParam.getId()); Optional<Post> postOptional = postRepository.findById(idParam.getId());
if (postOptional.isEmpty()) return Result.no(Status.INTERNAL_SERVER_ERROR, "被修改的数据不存在"); if (postOptional.isEmpty()) return Result.no(Status.BAD_REQUEST, "被修改的数据不存在");
Post post = postOptional.get(); Post post = postOptional.get();
if (!StrUtil.equals(post.getName(), postParam.getName())) { if (!StrUtil.equals(post.getName(), postParam.getName())) {
if (hasPostInfo(postParam.getName())) return Result.no(Status.INTERNAL_SERVER_ERROR, "职位已存在"); if (hasPostInfo(postParam.getName())) return Result.no(Status.BAD_REQUEST, "职位已存在");
} }
post = postParam.transform(); post = postParam.transform();
...@@ -81,7 +81,7 @@ public class PostServiceImpl implements PostService { ...@@ -81,7 +81,7 @@ public class PostServiceImpl implements PostService {
} }
@Override @Override
public Result<PageVo<PostVo>> findPostPage(FindPostParam param) { public Result<PageVo<PostVo>> findPostPage(PostFindParam param) {
Specification<Post> specification = getPostPageSpecification(param); Specification<Post> specification = getPostPageSpecification(param);
if (ObjectUtil.isEmpty(param.getPageSize()) && ObjectUtil.isEmpty(param.getPageNo())) { if (ObjectUtil.isEmpty(param.getPageSize()) && ObjectUtil.isEmpty(param.getPageNo())) {
...@@ -113,7 +113,7 @@ public class PostServiceImpl implements PostService { ...@@ -113,7 +113,7 @@ public class PostServiceImpl implements PostService {
} }
@Override @Override
public void exportPostInfo(FindPostParam param, HttpServletResponse response) { public void exportPostInfo(PostFindParam param, HttpServletResponse response) {
Specification<Post> specification = getPostPageSpecification(param); Specification<Post> specification = getPostPageSpecification(param);
List<Post> postList = postRepository.findAll(specification); List<Post> postList = postRepository.findAll(specification);
List<PostExcel> postExcels = PostExcel.transforms(postList); List<PostExcel> postExcels = PostExcel.transforms(postList);
...@@ -147,7 +147,7 @@ public class PostServiceImpl implements PostService { ...@@ -147,7 +147,7 @@ public class PostServiceImpl implements PostService {
} }
} }
private Specification<Post> getPostPageSpecification(FindPostParam param) { private Specification<Post> getPostPageSpecification(PostFindParam param) {
return (root, cq, cb) -> { return (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList(); List<Predicate> predicates = ListUtil.toList();
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.web.post; package com.yiring.auth.web.post;
import com.yiring.auth.param.post.FindPostParam; import com.yiring.auth.param.post.PostFindParam;
import com.yiring.auth.param.post.PostParam; import com.yiring.auth.param.post.PostParam;
import com.yiring.auth.service.post.PostService; import com.yiring.auth.service.post.PostService;
import com.yiring.auth.vo.post.PostVo; import com.yiring.auth.vo.post.PostVo;
...@@ -53,7 +53,7 @@ public class PostController { ...@@ -53,7 +53,7 @@ public class PostController {
@ApiOperation(value = "分页查询") @ApiOperation(value = "分页查询")
@GetMapping("findPostPage") @GetMapping("findPostPage")
public Result<PageVo<PostVo>> findPostPage(@Valid FindPostParam param) { public Result<PageVo<PostVo>> findPostPage(@Valid PostFindParam param) {
return postService.findPostPage(param); return postService.findPostPage(param);
} }
...@@ -65,7 +65,7 @@ public class PostController { ...@@ -65,7 +65,7 @@ public class PostController {
@ApiOperation(value = "导出职位信息") @ApiOperation(value = "导出职位信息")
@GetMapping("exportPostInfo") @GetMapping("exportPostInfo")
public void exportPostInfo(@Valid FindPostParam param, HttpServletResponse response) { public void exportPostInfo(@Valid PostFindParam param, HttpServletResponse response) {
postService.exportPostInfo(param, response); postService.exportPostInfo(param, response);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论