Browse Source

接口完善

master
liuchao 5 years ago
parent
commit
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. 51
      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.Emp;
import com.aiprose.querydsl.entity.Response; import com.aiprose.querydsl.entity.Response;
import com.aiprose.querydsl.service.DeptService; import com.aiprose.querydsl.service.DeptService;
import com.aiprose.querydsl.service.EmpService;
import com.aiprose.querydsl.util.FixedPageData; import com.aiprose.querydsl.util.FixedPageData;
import com.aiprose.querydsl.vos.DeptTreeVo; import com.aiprose.querydsl.vos.DeptTreeVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -25,6 +26,8 @@ public class DeptController {
@Autowired @Autowired
private DeptService service; private DeptService service;
@Autowired
private EmpService empService;
@Autowired @Autowired
private Response resp; private Response resp;
@ -37,6 +40,14 @@ public class DeptController {
@DeleteMapping("{id}") @DeleteMapping("{id}")
public Mono<Response> delete(@PathVariable("id") Integer 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); service.deleteById(id);
return Mono.just(resp.success()); 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 * @Date: 2020/9/14
*/ */
@RestController @RestController
@RequestMapping("emp")
public class EmpController { public class EmpController {
@Autowired @Autowired
@ -32,8 +33,8 @@ public class EmpController {
private Response resp; private Response resp;
@GetMapping("list") @GetMapping("list")
public Mono<Response> list(@RequestParam Integer page, @RequestParam Integer size, Emp emp){ public Mono<Response> list(@RequestParam Integer page, @RequestParam Integer size, String search){
FixedPageData pageData = service.list(page,size,emp); FixedPageData pageData = service.list(page,size,search);
return Mono.just(resp.page(pageData.getResults(),pageData.getTotal())); 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(); DeptTreeVo vo = new DeptTreeVo();
BeanUtils.copyProperties(x, vo); BeanUtils.copyProperties(x, vo);
List<DeptTreeVo> childs = getChilds(qDept, x.getId()); List<DeptTreeVo> childs = getChilds(qDept, x.getId());
vo.setChild(childs); vo.setChildren(childs);
return vo; return vo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return collect; return collect;
@ -67,8 +67,14 @@ public class DeptService extends BasicServiceImpl<Dept, Integer> {
DeptTreeVo vo = new DeptTreeVo(); DeptTreeVo vo = new DeptTreeVo();
BeanUtils.copyProperties(x, vo); BeanUtils.copyProperties(x, vo);
List<DeptTreeVo> childs = getChilds(qDept, x.getId()); List<DeptTreeVo> childs = getChilds(qDept, x.getId());
vo.setChild(childs); vo.setChildren(childs);
return vo; return vo;
}).collect(Collectors.toList()); }).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;
}
} }

51
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.base.BasicServiceImpl;
import com.aiprose.querydsl.entity.Emp; import com.aiprose.querydsl.entity.Emp;
import com.aiprose.querydsl.entity.QDept;
import com.aiprose.querydsl.entity.QEmp; import com.aiprose.querydsl.entity.QEmp;
import com.aiprose.querydsl.repository.EmpRepository; import com.aiprose.querydsl.repository.EmpRepository;
import com.aiprose.querydsl.util.FixedPageData; 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.QueryResults;
import com.querydsl.core.Tuple;
import com.querydsl.core.types.ExpressionUtils; import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.Predicate; import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.impl.JPAQueryFactory; import com.querydsl.jpa.impl.JPAQueryFactory;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@ -19,6 +24,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* @version 1.0 * @version 1.0
@ -28,7 +35,7 @@ import javax.persistence.PersistenceContext;
*/ */
@Transactional @Transactional
@Service @Service
public class EmpService extends BasicServiceImpl<Emp,Integer> { public class EmpService extends BasicServiceImpl<Emp, Integer> {
@Autowired @Autowired
private JPAQueryFactory queryFactory; private JPAQueryFactory queryFactory;
@ -46,26 +53,40 @@ public class EmpService extends BasicServiceImpl<Emp,Integer> {
return null; 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); FixedPageData pageData = new FixedPageData(page, size);
QEmp qEmp = QEmp.emp; QEmp qEmp = QEmp.emp;
Integer deptId = emp.getDeptId(); QDept qDept = QDept.dept;
String empName = emp.getEmpName();
Long mobile = emp.getMobile();
Predicate predicate = qEmp.isNotNull(); Predicate predicate = qEmp.isNotNull();
if (StringUtils.isNotBlank(empName)) { if (StringUtils.isNotBlank(search)) {
predicate = ExpressionUtils.and(predicate, qEmp.empName.eq(empName)); 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) {
} }
if (deptId != null) { predicate = ExpressionUtils.and(predicate, builder);
predicate = ExpressionUtils.and(predicate, qEmp.deptId.eq(deptId));
} }
if (mobile != null) { // if (deptId != null) {
predicate = ExpressionUtils.and(predicate, qEmp.mobile.eq(mobile)); // predicate = ExpressionUtils.and(predicate, qEmp.deptId.eq(deptId));
} // }
QueryResults<Emp> queryResults = queryFactory.selectFrom(qEmp).where(predicate).offset(pageData.getOffset()) 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(); .limit(pageData.getSize()).fetchResults();
pageData.setResults(queryResults.getResults()); List<EmpVo> collect = tupleQueryResults.getResults().stream().map(x -> {
pageData.setTotal(queryResults.getTotal()); 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; 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 @Data
public class DeptTreeVo implements Serializable { public class DeptTreeVo implements Serializable {
private Integer id;
private String name; private String name;
private String loc; private String loc;
private Integer pid; private Integer pid;
private Date cdate; 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;
}
Loading…
Cancel
Save