步驟 1: 分頁工具類
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.mideaframework.core.bean; import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class PagingDomain { private Integer pageNo; private Integer start = 0; private Integer pageSize = 30; private Date startTime; private Date endTime; private String orderBy = "1"; private String orderByType = "asc"; private String asc = " asc"; private Map<String, List> dataMap = new HashMap(); public PagingDomain() { }
-----添加get set 方法 }
返回客戶端響應類工具
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.mideaframework.core.web; import com.google.common.collect.Lists; import java.io.Serializable; import java.util.List; public class PageResponse<T> implements Serializable { private static final long serialVersionUID = -2103014265407834780L; public List<T> list; public Integer totalCount; public Integer totalPage; public Integer pageNo; public Integer pageSize; public Integer offset; public PageResponse() { this.list = Lists.newArrayList(); this.totalCount = 0; this.totalPage = 0; this.pageNo = 1; this.pageSize = 30; this.offset = 0; } public List<T> getList() { return this.list; } public void setList(List<T> list) { this.list = list; } public Integer getTotalCount() { return this.totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public Integer getTotalPage() { return this.totalPage; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getPageNo() { return this.pageNo; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public Integer getPageSize() { return this.pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getOffset() { return this.offset; } public void setOffset(Integer offset) { this.offset = offset; } public PageResponse(Integer pageNo, Integer pageSize, Integer totalCount, List<T> list) { this.list = Lists.newArrayList(); this.totalCount = 0; this.totalPage = 0; this.pageNo = 1; this.pageSize = 30; this.offset = 0; this.init(pageNo, pageSize, totalCount, list); } public PageResponse(Integer pageNo, Integer pageSize, Integer totalCount) { this(pageNo, pageSize, totalCount, (List)null); } public PageResponse(Integer pageNo, Integer pageSize) { this(pageNo, pageSize, (Integer)null); } public void init(Integer pageNo, Integer pageSize, Integer totalCount, List<T> list) { if (pageNo != null) { this.pageNo = pageNo; } if (pageSize != null) { this.pageSize = pageSize; } if (this.pageNo > 0) { this.offset = this.pageSize * this.pageNo; } if (totalCount != null) { this.totalCount = totalCount; this.totalPage = this.totalCount % pageSize > 0 ? this.totalCount / pageSize + 1 : this.totalCount / pageSize; } if (list != null) { this.list = list; } } }
步驟2:實體類繼承 PagingDomain
public class ErpWorkOrder extends PagingDomain{}
步驟3 數據層 :
import com.midea.lmes.intelligent.logistics.domain.mes.base.entity.base.ErpWorkOrder; import com.midea.lmes.intelligent.logistics.dto.mes.base.ErpWorkOrderDto; import com.mideaframework.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface ErpWorkOrderMapper extends BaseMapper<ErpWorkOrder>{}
步驟4:業務層 使用分頁
@Override public PageResponse<ErpWorkOrder> selectErpWorkOrderPage(ErpWorkOrder erpWorkOrder) { PageResponse<ErpWorkOrder> pagingData = new PageResponse<ErpWorkOrder>(); if (null == erpWorkOrder) { LOGGER.warn("select erpWorkOrder page, but erpWorkOrder is null..."); return pagingData; } //設置工單狀態 用於IN 關鍵字查詢 if(StringUtils.isNotEmpty(erpWorkOrder.getStatusTypeName())){ String[] str=erpWorkOrder.getStatusTypeName().split(","); StringBuffer stringBuffer =new StringBuffer(); String statusTypeName=""; List<String> list =new ArrayList<String>(); for (int i = 0; i <str.length ; i++) { statusTypeName=str[i]; list.add(statusTypeName); } erpWorkOrder.setList(list); } List<ErpWorkOrder> erpWorkOrders = selectErpWorkOrderByIndex(erpWorkOrder); if(erpWorkOrders !=null && erpWorkOrders.size()>0){ SysOrg sysOrg = new SysOrg();; for (int i = 0; i <erpWorkOrders.size() ; i++) { if(erpWorkOrders.get(i).getMoLine() !=null && erpWorkOrders.get(i).getOrgId() !=null){ sysOrg.setInvOrgId(ValueUtil.toInt(erpWorkOrders.get(i).getOrgId())); sysOrg.setSourceSystemId(ValueUtil.toInt(erpWorkOrders.get(i).getMoLine())); List<SysOrg> listSysOrg =sysOrgClient.queryLineCodeByCodeAndOrgId(sysOrg); if(listSysOrg !=null && listSysOrg.size()>0){ for (int j = 0; j <listSysOrg.size() ; j++) { if(listSysOrg.get(j).getSourceSystemId()!=null && erpWorkOrders.get(i).getMoLine().equals(listSysOrg.get(j).getSourceSystemId()) && erpWorkOrders.get(i).getOrgId().equals(ValueUtil.toLong(listSysOrg.get(j).getInvOrgId()))){ erpWorkOrders.get(i).setMoLineCode(listSysOrg.get(j).getCode()); } } }else{ LOGGER.info("=====select SysOrg page ======服務異常, but count {} == 0 ...", listSysOrg.size()); return pagingData; } } } pagingData.setList(erpWorkOrders); Integer queryCount = erpWorkOrderMapper.selectByIndexCount(erpWorkOrder); pagingData.setTotalCount(queryCount); if (null != queryCount && queryCount <= 0) { LOGGER.info("select erpWorkOrder page , but count {} == 0 ...", queryCount); return pagingData; } } return pagingData; }
步驟5 控制層
/** * @return 查詢集合 */ @PostMapping(value = "/fndContainerInvRelations/search") public JsonResponse search(@RequestBody FndContainerInvRelation fndContainerInvRelation,HttpServletRequest request) { RestDoing doing = jsonResponse -> { PageResponse<FndContainerInvRelation> PageResponse = fndContainerInvRelationServiceImpl.selectFndContainerInvRelationPage(fndContainerInvRelation); jsonResponse.data = PageResponse; }; return doing.go(request, logger); }
返回客戶端響應類
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.mideaframework.core.web; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.mideaframework.core.constants.BaseCodeEnum; import com.mideaframework.core.exception.IBusinessException; import java.io.Serializable; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; public class JsonResponse<T> implements Serializable { private static final long serialVersionUID = -6609499448346439617L; private String code; private String msg; private String timestamp; public T data; public JsonResponse() { this.code = BaseCodeEnum.SUCCESS.getCode(); this.msg = BaseCodeEnum.SUCCESS.getMsg(); } public JsonResponse(IBusinessException resultCodeConstant) { this.code = BaseCodeEnum.SUCCESS.getCode(); this.msg = BaseCodeEnum.SUCCESS.getMsg(); this.code = resultCodeConstant.getCode(); this.msg = resultCodeConstant.getMsg(); } public JsonResponse(String code, String msg) { this.code = BaseCodeEnum.SUCCESS.getCode(); this.msg = BaseCodeEnum.SUCCESS.getMsg(); this.code = code; this.msg = msg; } private void saveJsonResult(IBusinessException resultCodeConstant) { this.code = resultCodeConstant.getCode(); this.msg = resultCodeConstant.getMsg(); } public void errorParam(String msg, Logger log) { this.code = BaseCodeEnum.FAILED.getCode(); this.msg = BaseCodeEnum.FAILED.getMsg() + msg; log.error("error code|{}|msg|{}|", this.code, msg); } public void errorParam(String code, String msg, Logger log) { this.custom(code, msg, log); } public void custom(String code, String msg, Logger log) { this.code = code; this.msg = msg; log.error("error code|{}|msg:{}", code, msg); } public void saveResult(String codeInput, Logger log) { this.saveResult(codeInput, (String)null, (Logger)null); } public void saveResult(String codeInput, String msg, Logger log) { byte var5 = -1; switch(codeInput.hashCode()) { case 48: if (codeInput.equals("0")) { var5 = 0; } default: switch(var5) { case 0: this.saveJsonResult(BaseCodeEnum.SUCCESS); break; default: this.saveJsonResult(BaseCodeEnum.FAILED); } if (StringUtils.isNotBlank(msg)) { this.setMsg(msg); } if (null != log) { log.error("error code:{}|msg:{}", this.code, msg); } } } public String getTimestamp() { return this.timestamp; } public void setTimestamp(String timestamp) { this.timestamp = timestamp; } public String getCode() { return this.code; } public void setCode(String code) { this.code = code; } public String getMsg() { return this.msg; } public void setMsg(String msg) { this.msg = msg; } public T getData() { return this.data; } public void setData(T data) { this.data = data; } public void go(Logger logger) { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); StackTraceElement[] var3 = stackTrace; int var4 = stackTrace.length; for(int var5 = 0; var5 < var4; ++var5) { StackTraceElement s = var3[var5]; logger.error(s.getClassName() + ",-" + s.getMethodName() + ":[ " + s.getLineNumber() + "]"); } } public JsonResponse build(String code, String msg) { this.code = code; this.msg = msg; LocalDateTime arrivalDate = LocalDateTime.now(); DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"); String timestamp = arrivalDate.format(format); this.timestamp = timestamp; return this; } public String toString() { return JSON.toJSONStringWithDateFormat(this, "yyyy-MM-dd HH:mm:ss", new SerializerFeature[0]); } public static JsonResponse<Object> success(Object data) { JsonResponse<Object> jsonResponse = new JsonResponse(BaseCodeEnum.SUCCESS); jsonResponse.setData(data); return jsonResponse; } public static JsonResponse<Object> fail(String msg) { JsonResponse<Object> jsonResponse = new JsonResponse(BaseCodeEnum.FAILED.getCode(), msg); return jsonResponse; } public static JsonResponse<Object> fail(String code, String msg) { JsonResponse<Object> jsonResponse = new JsonResponse(code, msg); return jsonResponse; } }
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.mideaframework.core.web; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.mideaframework.core.constants.BaseCodeEnum; import com.mideaframework.core.exception.BusinessException; import com.mideaframework.core.exception.CommonException; import com.mideaframework.core.utils.SpringContextHolder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.MessageSource; import org.springframework.transaction.NoTransactionException; import org.springframework.transaction.interceptor.TransactionAspectSupport; @FunctionalInterface public interface RestDoing<T> { Logger log = LoggerFactory.getLogger(RestDoing.class); String sqlReturnFormat = "======================>return data : |{}|"; default JsonResponse<T> go(Logger log) { return this.invoke((Object)null, (Object)null, (HttpServletRequest)null, (ObjectMapper)null, log); } default JsonResponse<T> go(HttpServletRequest r, Logger log) { return this.invoke((Object)null, (Object)null, r, (ObjectMapper)null, log); } default JsonResponse<T> go(HttpServletRequest r, ObjectMapper objectMapper, Logger log) { return this.invoke((Object)null, (Object)null, r, objectMapper, log); } default JsonResponse<T> go(Object visitor, HttpServletRequest request, ObjectMapper objectMapper, Logger log) { return this.invoke((Object)null, visitor, request, objectMapper, log); } default JsonResponse<T> go(Object inputData, Object visitor, HttpServletRequest request, ObjectMapper objectMapper, Logger log) { return this.invoke(inputData, visitor, request, objectMapper, log); } default JsonResponse<T> invoke(Object inputData, Object visitor, HttpServletRequest request, ObjectMapper objectMapper, Logger log) { JsonResponse<T> jr = new JsonResponse(); Object[] args = null; try { this.service(jr); } catch (CommonException var24) { log.error("throw CommonException{}|", var24); throw var24; } catch (BusinessException var25) { try { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } catch (NoTransactionException var23) { log.error("NoTransactionException happen|{}|", var25); } jr.errorParam(var25.getCode(), var25.getMessage(), log); args = var25.getArgs(); } catch (Exception var26) { try { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } catch (NoTransactionException var22) { log.error("NoTransactionException happen|{}|", var26); } log.error("error happen|{}|", var26); jr.saveResult(BaseCodeEnum.FAILED.getCode(), log); } finally { this.showReturnData(jr, objectMapper, log); } LocalDateTime arrivalDate = LocalDateTime.now(); DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); String timestamp = arrivalDate.format(format); if (StringUtils.isBlank(jr.getMsg())) { try { MessageSource messageSource = (MessageSource)SpringContextHolder.getBean(MessageSource.class); Locale locale = Locale.SIMPLIFIED_CHINESE; String msg = messageSource.getMessage(jr.getCode(), args, locale); jr.setMsg(msg); } catch (Exception var21) { log.error("cannot find messageSource,error:{}", var21.getMessage()); } } jr.setTimestamp(timestamp); return jr; } default void showReturnData(JsonResponse jr, ObjectMapper objectMapper, Logger log) { if (objectMapper != null) { try { String returnData = objectMapper.writeValueAsString(jr); log.warn("======================>return data : |{}|", returnData); } catch (JsonProcessingException var5) { log.error(var5.getMessage(), var5); } } } void service(JsonResponse<T> var1) throws Exception; }
步驟6 xml 文件
<select id="selectByIndexCount" resultType="Integer"> select count(t.id) from erp_work_order t <include refid="whereFieldsSql"/> </select> <select id="selectByIndex" resultType="com.midea.lmes.intelligent.logistics.domain.mes.base.entity.base.ErpWorkOrder"> select <include refid="searchFieldsSql"/> from erp_work_order t <include refid="whereFieldsSql"/> limit #{start},#{pageSize} </select>
前端傳給後臺 字段 vue.js
{"pageNo":1,"pageSize":10}