https://www.cnblogs.com/Donnnnnn/p/6277872.html

方式一:

第一步:EmpAccNumService
package com.payease.scfordermis.service;

import com.payease.scfordermis.bo.ResultBo;
import com.payease.scfordermis.bo.requestBo.ReqEmpAccNumBean; /**
* @Created By liuxiaoming
* @CreateTime 2018/1/15 下午1:55
**/
public interface EmpAccNumService { ResultBo getEmpAccNumList(ReqEmpAccNumBean reqEmpAccNumBean); }

第二步:EmpAccNumServiceImpl

package com.payease.scfordermis.service.impl;

import com.payease.scfordermis.bo.ResultBo;
import com.payease.scfordermis.bo.requestBo.ReqEmpAccNumBean;
import com.payease.scfordermis.bo.responseBo.PageResponseCommBean;
import com.payease.scfordermis.bo.responseBo.RespEmpAccNumBean;
import com.payease.scfordermis.dao.DepartmentInfoDao;
import com.payease.scfordermis.dao.EmployeeInfoDao;
import com.payease.scfordermis.entity.TDepartmentInfoEntity;
import com.payease.scfordermis.entity.TEmployeeInfoEntity;
import com.payease.scfordermis.service.EmpAccNumService;
import com.payease.scfordermis.utils.MapUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; /**
* @Created By liuxiaoming
* @CreateTime 2018/1/15 下午1:55
**/
@Service
public class EmpAccNumServiceImpl implements EmpAccNumService { @Autowired
EmployeeInfoDao employeeInfoDao;
@Autowired
DepartmentInfoDao departmentInfoDao; /**
* 员工列表查询
* @param
* @return
*/
@Override
public ResultBo getEmpAccNumList(ReqEmpAccNumBean req) { ResultBo result = ResultBo.build();
//入参
/**
* json.put("depParentId",depParentId);
json.put("departmentId", departmentId);
json.put("other", other);
json.put("page",super.page);
json.put("size",super.size);
*/
Map<String,Object> map1 = req.getMap();
MapUtil map = new MapUtil(map1); //todo
Page<TEmployeeInfoEntity> page = this.pageTEmp(map);
//todo
PageResponseCommBean resp =this.pageToResp(page);
System.out.println("=========resp.getTotalPages():"+resp.getTotalPages());
System.out.println("=========resp.getTotalElements():"+resp.getTotalElements());
System.out.println("=========resp.getContent():"+resp.getContent());
//======================================================
result.setResultBody(resp);
return result; } /**
* 从数据库中查询数据
* @param map
* @return
*/
public Page<TEmployeeInfoEntity> pageTEmp(MapUtil map){
Integer depParentId = map.getInteger("depParentId");
Integer departmentId = map.getInteger("departmentId");
String other = map.getString("other");
//分页 当前页 每页显示条数 按照字段排序
Pageable pageable = new PageRequest(map.getInteger("page") - 1, map.getInteger("size"), new Sort(Sort.Direction.DESC, "fId"));
Page<TEmployeeInfoEntity> page = employeeInfoDao.findAll(
new Specification<TEmployeeInfoEntity>() { public Predicate toPredicate(Root<TEmployeeInfoEntity> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> lstPredicates = new ArrayList<Predicate>();
//部门-1 全查
//部门非-1
// 看 父ID 0 根节点
// 子节点
if (departmentId != 0){
if(departmentId != -1){
if(depParentId == 0) {
// 映射实体类字段 请求入参字段
lstPredicates.add(cb.equal(root.get("fDepartIdOne").as(Integer.class), departmentId));
}else{
lstPredicates.add(cb.equal(root.get("fDepartIdTwo").as(Integer.class), departmentId)); }
}
}
if (StringUtils.isNotBlank(other)) {
lstPredicates.add(cb.like(root.get("fSearchKey").as(String.class), "%"+ other +"%"));
}
lstPredicates.add(cb.notEqual(root.get("fIsDelete").as(String.class), "yes" ));
Predicate[] arrayPredicates = new Predicate[lstPredicates.size()];
return cb.and(lstPredicates.toArray(arrayPredicates));
}
}, pageable);
return page;
} public PageResponseCommBean pageToResp(Page<TEmployeeInfoEntity> page){
List<TEmployeeInfoEntity> list = page.getContent();
PageResponseCommBean bean = new PageResponseCommBean();
List<RespEmpAccNumBean> respList = new ArrayList<>();
for (TEmployeeInfoEntity entity : list){ RespEmpAccNumBean resp = new RespEmpAccNumBean();
resp.setfId(entity.getfId());
if(StringUtils.isNotBlank(String.valueOf(entity.getfAccount()))){
resp.setfAccount(entity.getfAccount());
}
if(StringUtils.isNotBlank(String.valueOf(entity.getfName()))){
resp.setfName(entity.getfName());
}
if(StringUtils.isNotBlank(String.valueOf(entity.getfPosition()))){
resp.setfPosition(entity.getfPosition());
}
if(StringUtils.isNotBlank(String.valueOf(entity.getfDepartIdTwo()))){
TDepartmentInfoEntity one = departmentInfoDao.findOne(entity.getfDepartIdTwo());
if(one == null){
resp.setfDepartIdTwo("");
}else{
resp.setfDepartIdTwo(one.getfName());
}
}
if(StringUtils.isNotBlank(entity.getfMobile())){
resp.setfMobile(entity.getfMobile());
} if(StringUtils.isNotBlank(entity.getfEmail())){
resp.setfEmail(entity.getfEmail());
} if(StringUtils.isNotBlank(entity.getfStatus())){
resp.setfStatus(entity.getfStatus());
}
respList.add(resp);
}
bean.setContent(respList);
bean.setNumber(page.getNumber());
bean.setSize(page.getSize());
bean.setTotalElements(Integer.valueOf(String.valueOf(page.getTotalElements())));
bean.setTotalPages(page.getTotalPages());
return bean;
} // public Boolean cheackMap(Map<String,Object> map) {
// boolean bo = true;
// Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();
// while (it.hasNext()) {
// Map.Entry<String, Object> entry = it.next();
// System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
// if(map.get(entry.getKey())==null){
// return false;
// }
// }
// return true;
// }
}

第三步:MapUtil

package com.payease.scfordermis.utils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map; /**
* @Created By liuxiaoming
* @CreateTime 2018/1/16 上午9:43
**/
public class MapUtil {
private Map<String,Object> map; public MapUtil(Map<String,Object> map){
this.map = map;
} /**
* <p>
* 根据Key返回一个Double型
* </p>
* @param key
* @return Double
*/
public Double getDouble(String key){
if(map.get(key)!=null){
if(map.get(key) instanceof Double){
return (Double)map.get(key);
}else{
return 0.0;
}
}else{
return 0.00;
}
} /**
* <p>
* 根据Key返回一个String
* </p>
* @param key
* @return String
*/
public String getString(String key){
if(map.get(key)!=null){
if(map.get(key) instanceof String){
return (String)map.get(key);
}else{
return "";
}
}else{
return "";
}
} /**
* <p>
* 根据Key返回一个Date
* </p>
* @param key
* @return Date
*/
public Date getDate(String key){
if(map.get(key)!=null){
if(map.get(key) instanceof Date){
return (Date)map.get(key);
}else{
return null;
}
}else{
return null;
}
} /**
* <p>
* 根据Key返回一个Integer
* </p>
* @param key
* @return Integer
*/
public Integer getInteger(String key){
if(map.get(key)!=null){
if(map.get(key) instanceof Integer){
return (Integer)map.get(key);
}else{
return 0;
}
}else{
return 0;
}
} /**
* <p>
* 根据一个Key返回一个Map<String,String>
* </p>
* @param key
* @return Map<String,String>
*/
@SuppressWarnings("unchecked")
public Map<String,String> getMap(String key){
if(map.get(key)!=null){
if(map.get(key) instanceof Map){
return (Map<String,String>)map.get(key);
}else{
return null;
}
}else{
return null;
}
} /**
* <p>
* 根据key返回BigDecimal
* 如果为null,则返回 new BigDecimal(0)
* </p>
* @param key
* @return BigDecimal
*/
public BigDecimal getBigDecimal(String key){
if(map.containsKey(key)){
if(map.get(key) instanceof BigDecimal){
return (BigDecimal)map.get(key);
}else{
return new BigDecimal(0);
}
}else{
return new BigDecimal(0);
}
}
}

第四步:RespEmpAccNumBean

package com.payease.scfordermis.bo.responseBo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; /**
* @Created By liuxiaoming
* @CreateTime 2018/1/10 下午2:23
**/
@ApiModel(value = "员工列表查询实体",description = "描述员工列表查询类")
public class RespEmpAccNumBean {
@ApiModelProperty(value = "序号",dataType = "long",required = true)
private long fId;
@ApiModelProperty(value = "部门",dataType = "string",required = true)
private String fDepartIdTwo;
@ApiModelProperty(value = "账号",dataType = "string",required = true)
private String fAccount;
@ApiModelProperty(value = "账号状态: open-开通 close-禁用 ",dataType = "string",required = true)
private String fStatus;
@ApiModelProperty(value = "姓名",dataType = "string",required = true)
private String fName;
@ApiModelProperty(value = "手机",dataType = "string",required = true)
private String fMobile;
@ApiModelProperty(value = "邮箱",dataType = "string",required = true)
private String fEmail;
@ApiModelProperty(value = "职位",dataType = "string",required = true)
private String fPosition; public long getfId() {
return fId;
} public void setfId(long fId) {
this.fId = fId;
} public String getfDepartIdTwo() {
return fDepartIdTwo;
} public void setfDepartIdTwo(String fDepartIdTwo) {
this.fDepartIdTwo = fDepartIdTwo;
} public String getfAccount() {
return fAccount;
} public void setfAccount(String fAccount) {
this.fAccount = fAccount;
} public String getfStatus() {
return fStatus;
} public void setfStatus(String fStatus) {
this.fStatus = fStatus;
} public String getfName() {
return fName;
} public void setfName(String fName) {
this.fName = fName;
} public String getfMobile() {
return fMobile;
} public void setfMobile(String fMobile) {
this.fMobile = fMobile;
} public String getfEmail() {
return fEmail;
} public void setfEmail(String fEmail) {
this.fEmail = fEmail;
} public String getfPosition() {
return fPosition;
} public void setfPosition(String fPosition) {
this.fPosition = fPosition;
} @Override
public String toString() {
return "RespEmpAccNumBean{" +
"fId=" + fId +
", fDepartIdTwo='" + fDepartIdTwo + '\'' +
", fAccount='" + fAccount + '\'' +
", fStatus='" + fStatus + '\'' +
", fName='" + fName + '\'' +
", fMobile='" + fMobile + '\'' +
", fEmail='" + fEmail + '\'' +
", fPosition='" + fPosition + '\'' +
'}';
}
}

第五步:PageResponseCommBean

package com.payease.scfordermis.bo.responseBo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; /**
* @Author : zhangwen
* @Data : 2018/1/10
* @Description :
*/
@ApiModel(value = "分页公共返回类",description = "描述分页返回类")
public class PageResponseCommBean<T> extends PageBean{
@ApiModelProperty(value = "结果集",dataType = "list")
private T content; public T getContent() {
return content;
} public void setContent(T content) {
this.content = content;
} @Override
public String toString() {
return "PageResponseCommBean{" +
"content=" + content +
'}';
}
}

第六步:PageBean

package com.payease.scfordermis.bo.responseBo;

import io.swagger.annotations.ApiModelProperty;

/**
* @Created By liuxiaoming
* @CreateTime 2018/1/10 下午2:02
**/
public class PageBean {
@ApiModelProperty(value = "当前页",dataType = "int",required = true)
private Integer number;
@ApiModelProperty(value = "每页显示条数",dataType = "int",required = true)
private Integer size;
@ApiModelProperty(value = "总条数",dataType = "int",required = true)
private Integer totalElements;
@ApiModelProperty(value = "总页数",dataType = "int",required = true)
private Integer totalPages; public Integer getNumber() {
return number;
} public void setNumber(Integer number) {
this.number = number;
} public Integer getSize() {
return size;
} public void setSize(Integer size) {
this.size = size;
} public Integer getTotalElements() {
return totalElements;
} public void setTotalElements(Integer totalElements) {
this.totalElements = totalElements;
} public Integer getTotalPages() {
return totalPages;
} public void setTotalPages(Integer totalPages) {
this.totalPages = totalPages;
} @Override
public String toString() {
return "PageBean{" +
"number=" + number +
", size=" + size +
", totalElements=" + totalElements +
", totalPages=" + totalPages +
'}';
}
}

第七步:测试

package com.payease.scfordermis;

import com.payease.scfordermis.bo.ResultBo;
import com.payease.scfordermis.bo.requestBo.ReqEmpAccNumBean;
import com.payease.scfordermis.service.EmpAccNumService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)
@SpringBootTest
public class ScfOrderMisApplicationTests {
@Autowired
private EmpAccNumService empAccNumService; @Test
public void contextLoads() {
ReqEmpAccNumBean req = new ReqEmpAccNumBean();
//req.setDepartmentId(-1);
//req.setDepParentId();
req.setDepartmentId(2);
req.setDepParentId(1);
req.setOther("1");
ResultBo result = empAccNumService.getEmpAccNumList(req);
System.out.println(result.toString()); // Map<String,Object> map = req.getMap();
// Boolean bo = new EmpAccNumServiceImpl().cheackMap(map);
// System.out.println(bo);
} }

最新文章

  1. IDEA使用maven中tomcat插件启动项目乱码问题
  2. Asp.Net网页头部动态加载标题、描述、关键字、css和js文件的方法
  3. Kali Linux渗透基础知识整理(三):漏洞利用
  4. [汇编] 将字符串里的一个&#39;&amp;&#39;字符换成空格
  5. 第一部分 mongodb 基础篇
  6. Log4Net日志记录两种方式
  7. 【水题】NOIP201504推销员
  8. 2013 Asia Regional Changchun I 题,HDU(4821),Hash
  9. js种的循环语句
  10. find-all-duplicates-in-an-array(典型的数组中的重复数,不错,我做出来了,可是发现别人有更好的做法)
  11. TCPIP通信
  12. Swift - 32 - 函数类型
  13. MSDTC问题集
  14. B - Numbers That Count
  15. Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class cn.e3mall.pojo.TbItem
  16. NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等
  17. 基于FPGA的16阶级联型iir带通滤波器实现
  18. archlinux 下使用 aria2+uget 作为下载工具
  19. 根据文件夹更改样本文件名小程序.py
  20. Android学习之基础知识十五 — 最佳UI体验(Material Design实战)

热门文章

  1. 第01章:MongoDB简介
  2. ROM的一种写法
  3. 自定义cell的高度
  4. C#-VS SQLServer数据库编程-摘
  5. python使用数据库的一些操作
  6. css设置自适应屏幕高度
  7. codeforces 891 b
  8. logrotate 日志切割工具
  9. bootstrap table 前端搜索
  10. cxGrid控件过滤筛选后如何获更新筛选后的数据集