Pārlūkot izejas kodu

接口完善

master
liuchao pirms 5 gadiem
vecāks
revīzija
2c76f34d89
  1. 11
      src/main/java/com/aiprose/querydsl/controller/DeptController.java
  2. 5
      src/main/java/com/aiprose/querydsl/controller/EmpController.java
  3. 10
      src/main/java/com/aiprose/querydsl/service/DeptService.java
  4. 53
      src/main/java/com/aiprose/querydsl/service/EmpService.java
  5. 3
      src/main/java/com/aiprose/querydsl/vos/DeptTreeVo.java
  6. 28
      src/main/java/com/aiprose/querydsl/vos/EmpVo.java

11
src/main/java/com/aiprose/querydsl/controller/DeptController.java

@ -4,6 +4,7 @@ import com.aiprose.querydsl.entity.Dept;
import com.aiprose.querydsl.entity.Emp;
import com.aiprose.querydsl.entity.Response;
import com.aiprose.querydsl.service.DeptService;
import com.aiprose.querydsl.service.EmpService;
import com.aiprose.querydsl.util.FixedPageData;
import com.aiprose.querydsl.vos.DeptTreeVo;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,6 +26,8 @@ public class DeptController {
@Autowired
private DeptService service;
@Autowired
private EmpService empService;
@Autowired
private Response resp;
@ -37,6 +40,14 @@ public class DeptController {
@DeleteMapping("{id}")
public Mono<Response> delete(@PathVariable("id") Integer id){
Boolean flag = empService.hasEmp(id);
if(flag){
return Mono.just(resp.failure("该部门下面有员工,无法删除"));
}
flag = service.hasChild(id);
if(flag){
return Mono.just(resp.failure("该部门下面有其他部门,无法删除"));
}
service.deleteById(id);
return Mono.just(resp.success());
}

5
src/main/java/com/aiprose/querydsl/controller/EmpController.java

@ -23,6 +23,7 @@ import java.util.Map;
* @Date: 2020/9/14
*/
@RestController
@RequestMapping("emp")
public class EmpController {
@Autowired
@ -32,8 +33,8 @@ public class EmpController {
private Response resp;
@GetMapping("list")
public Mono<Response> list(@RequestParam Integer page, @RequestParam Integer size, Emp emp){
FixedPageData pageData = service.list(page,size,emp);
public Mono<Response> list(@RequestParam Integer page, @RequestParam Integer size, String search){
FixedPageData pageData = service.list(page,size,search);
return Mono.just(resp.page(pageData.getResults(),pageData.getTotal()));
}

10
src/main/java/com/aiprose/querydsl/service/DeptService.java

@ -56,7 +56,7 @@ public class DeptService extends BasicServiceImpl<Dept, Integer> {
DeptTreeVo vo = new DeptTreeVo();
BeanUtils.copyProperties(x, vo);
List<DeptTreeVo> childs = getChilds(qDept, x.getId());
vo.setChild(childs);
vo.setChildren(childs);
return vo;
}).collect(Collectors.toList());
return collect;
@ -67,8 +67,14 @@ public class DeptService extends BasicServiceImpl<Dept, Integer> {
DeptTreeVo vo = new DeptTreeVo();
BeanUtils.copyProperties(x, vo);
List<DeptTreeVo> childs = getChilds(qDept, x.getId());
vo.setChild(childs);
vo.setChildren(childs);
return vo;
}).collect(Collectors.toList());
}
public Boolean hasChild(Integer id) {
QDept qDept = QDept.dept;
long l = queryFactory.selectFrom(qDept).where(qDept.pid.eq(id)).fetchCount();
return l>0;
}
}

53
src/main/java/com/aiprose/querydsl/service/EmpService.java

@ -2,14 +2,19 @@ package com.aiprose.querydsl.service;
import com.aiprose.base.BasicServiceImpl;
import com.aiprose.querydsl.entity.Emp;
import com.aiprose.querydsl.entity.QDept;
import com.aiprose.querydsl.entity.QEmp;
import com.aiprose.querydsl.repository.EmpRepository;
import com.aiprose.querydsl.util.FixedPageData;
import com.aiprose.querydsl.vos.EmpVo;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.QueryResults;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@ -19,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;
import java.util.stream.Collectors;
/**
* @version 1.0
@ -28,7 +35,7 @@ import javax.persistence.PersistenceContext;
*/
@Transactional
@Service
public class EmpService extends BasicServiceImpl<Emp,Integer> {
public class EmpService extends BasicServiceImpl<Emp, Integer> {
@Autowired
private JPAQueryFactory queryFactory;
@ -46,26 +53,40 @@ public class EmpService extends BasicServiceImpl<Emp,Integer> {
return null;
}
public FixedPageData list(Integer page, Integer size, Emp emp) {
public FixedPageData list(Integer page, Integer size, String search) {
FixedPageData pageData = new FixedPageData(page, size);
QEmp qEmp = QEmp.emp;
Integer deptId = emp.getDeptId();
String empName = emp.getEmpName();
Long mobile = emp.getMobile();
QDept qDept = QDept.dept;
Predicate predicate = qEmp.isNotNull();
if (StringUtils.isNotBlank(empName)) {
predicate = ExpressionUtils.and(predicate, qEmp.empName.eq(empName));
if (StringUtils.isNotBlank(search)) {
BooleanBuilder builder = new BooleanBuilder();
builder.or(qEmp.empName.like(search));
try {
Long aLong = Long.valueOf(search);
builder.or(qEmp.mobile.eq(aLong));
} catch (Exception e) {
}
predicate = ExpressionUtils.and(predicate, builder);
}
if (deptId != null) {
predicate = ExpressionUtils.and(predicate, qEmp.deptId.eq(deptId));
}
if (mobile != null) {
predicate = ExpressionUtils.and(predicate, qEmp.mobile.eq(mobile));
}
QueryResults<Emp> queryResults = queryFactory.selectFrom(qEmp).where(predicate).offset(pageData.getOffset())
// if (deptId != null) {
// predicate = ExpressionUtils.and(predicate, qEmp.deptId.eq(deptId));
// }
QueryResults<Tuple> tupleQueryResults = queryFactory.select(qEmp, qDept.name).from(qEmp).leftJoin(qDept).on(qEmp.deptId.eq(qDept.id)).where(predicate).offset(pageData.getOffset())
.limit(pageData.getSize()).fetchResults();
pageData.setResults(queryResults.getResults());
pageData.setTotal(queryResults.getTotal());
List<EmpVo> collect = tupleQueryResults.getResults().stream().map(x -> {
EmpVo vo = new EmpVo();
BeanUtils.copyProperties(x.get(0, Emp.class), vo);
vo.setDeptName(x.get(1, String.class));
return vo;
}).collect(Collectors.toList());
pageData.setResults(collect);
pageData.setTotal(tupleQueryResults.getTotal());
return pageData;
}
public Boolean hasEmp(Integer id) {
QEmp qEmp = QEmp.emp;
long l = queryFactory.selectFrom(qEmp).where(qEmp.deptId.eq(id)).fetchCount();
return l > 0;
}
}

3
src/main/java/com/aiprose/querydsl/vos/DeptTreeVo.java

@ -17,9 +17,10 @@ import java.util.List;
*/
@Data
public class DeptTreeVo implements Serializable {
private Integer id;
private String name;
private String loc;
private Integer pid;
private Date cdate;
private List<DeptTreeVo> child;
private List<DeptTreeVo> children;
}

28
src/main/java/com/aiprose/querydsl/vos/EmpVo.java

@ -0,0 +1,28 @@
package com.aiprose.querydsl.vos;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @version 1.0
* @Auther: liuchao
* @company 北京中经网软件有限公司
* @Date: 2020/9/15
*/
@Data
public class EmpVo implements Serializable {
private Integer id;
private String empName;
private String deptName;
private Long mobile;
private Integer deptId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date joindate;
}
Notiek ielāde…
Atcelt
Saglabāt