版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38750084/article/details/88597630
1.前端接收不同参数过来
2.根据不同条件拼sql
3.使用limit分页(前端要传一个pageNum和pageSize,即第几页,每页展示多少条)
4.返回结果(封装对象StringData返回前端即json格式)
如下代码参考:
controller:
/**
* 客户服务统计接口
* @param json
* @return
*/
@CrossOrigin
@PostMapping(value = "/customerServerSearch", produces = {"application/json;charset=UTF-8"})
public StringData customerServerSearch(@RequestBody String json) {
StringData data = new StringData();
Map<EnumCustomerServerQuryParam, String> quryParamMap = new HashMap();
try {
LogUtil.print("接收消息: "+json);
//解析json消息
JSONObject jsonobj = JSONObject.parseObject(json);
String pageNo = jsonobj.getString("pageNo");
String pageSize = jsonobj.getString("pageSize");
String companyName = jsonobj.getString("companyName");
String brand = jsonobj.getString("brand");
String serverType = jsonobj.getString("serverType");
String clientFrom = jsonobj.getString("clientFrom");
String contractInto = jsonobj.getString("contractInto");
String moneyCount = jsonobj.getString("moneyCount");
String startTime = jsonobj.getString("startTime");
String endTime = jsonobj.getString("endTime");
if (StringUtils.isNotBlank(pageNo)) {
quryParamMap.put(EnumCustomerServerQuryParam.pageNo, pageNo);
}
if (StringUtils.isNotBlank(pageSize)) {
quryParamMap.put(EnumCustomerServerQuryParam.pageSize, pageSize);
}
if (StringUtils.isNotBlank(companyName)) {
quryParamMap.put(EnumCustomerServerQuryParam.companyName, companyName);
}
if (StringUtils.isNotBlank(brand)) {
quryParamMap.put(EnumCustomerServerQuryParam.brand, brand);
}
if (StringUtils.isNotBlank(serverType)) {
quryParamMap.put(EnumCustomerServerQuryParam.serverType, serverType);
}
if (StringUtils.isNotBlank(clientFrom)) {
quryParamMap.put(EnumCustomerServerQuryParam.clientFrom, clientFrom);
}
if (StringUtils.isNotBlank(contractInto)) {
quryParamMap.put(EnumCustomerServerQuryParam.contractInto, contractInto);
}
if (StringUtils.isNotBlank(moneyCount)) {
quryParamMap.put(EnumCustomerServerQuryParam.moneyCount, moneyCount);
}
if (StringUtils.isNotBlank(startTime)) {
quryParamMap.put(EnumCustomerServerQuryParam.startTime, startTime);
}
if (StringUtils.isNotBlank(endTime)) {
quryParamMap.put(EnumCustomerServerQuryParam.endTime, endTime);
}
Page results = iCalCustomerServerService.searchResult(quryParamMap);
if(null!=results.getData() && results.getData().size()>0){
data.success();
data.setData(results);
}else {
data.dataNull();
}
} catch (Exception e) {
// e.printStackTrace();
LogUtil.error(DateUtil.fmtDateToStr(new Date(),"yyyy-MM-dd HH:mm:ss")+"http接口异常",e.getMessage(),e);
data.error();
}
return data;
}
service:
@Override
public Page searchResult(Map<EnumCustomerServerQuryParam, String> quryParamMap) {
String sql = "";
//计算start、rows
int start = 0;
int pageNo = 1;
int pageSize = 10;
String companyName="";
String brand="";
String serverType="";
String clientFrom="";
String contractInto="";
String moneyCount="";
String startTime="";
String endTime="";
Page<CompanyForListModel> page = new Page<CompanyForListModel>();
List<CompanyForListModel> listModels = new ArrayList<CompanyForListModel>();
if (quryParamMap == null || quryParamMap.size() == 0) {
// throw new Exception("", "查询参数不能为空!" );
}
try {
//查询条件
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.pageNo)) {
try {
pageNo = Integer.parseInt(quryParamMap.get(EnumCustomerServerQuryParam.pageNo));
} catch (Exception e) {
LogUtil.error("CalCustomerServerServiceImpl", "类型转换异常", e);
}
}
if (pageNo < 1) {
pageNo = 1;
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.pageSize)) {
try {
pageSize = Integer.parseInt(quryParamMap.get(EnumCustomerServerQuryParam.pageSize));
} catch (Exception e) {
LogUtil.error("CalCustomerServerServiceImpl", "类型转换异常", e);
}
}
if (pageSize < 0) {
pageSize = 10;
}
start = (pageNo - 1) * pageSize;
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.companyName)){
companyName= quryParamMap.get(EnumCustomerServerQuryParam.companyName);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.brand)){
brand= quryParamMap.get(EnumCustomerServerQuryParam.brand);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.serverType)){
serverType= quryParamMap.get(EnumCustomerServerQuryParam.serverType);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.clientFrom)){
clientFrom= quryParamMap.get(EnumCustomerServerQuryParam.clientFrom);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.contractInto)){
contractInto= quryParamMap.get(EnumCustomerServerQuryParam.contractInto);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.moneyCount)){
moneyCount= quryParamMap.get(EnumCustomerServerQuryParam.moneyCount);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.startTime)){
startTime= quryParamMap.get(EnumCustomerServerQuryParam.startTime);
}
if (quryParamMap.containsKey(EnumCustomerServerQuryParam.endTime)){
endTime= quryParamMap.get(EnumCustomerServerQuryParam.endTime);
}
//通过合同查公司,找出满足查询条件的合同的所有公司,然后再查询结果
StringBuffer sq= new StringBuffer();
sq.append("SELECT distinct(company_name) FROM t_cal_contract ");
if(quryParamMap!=null && quryParamMap.size()>0){
sq.append(" WHERE ");
}
if(StringUtil.isNotBlank(companyName)){
sq.append(" company_name='"+companyName+"' AND ");
}
if(StringUtil.isNotBlank(brand)){
sq.append(" brand_own='"+brand+"' AND ");
}
if(StringUtil.isNotBlank(serverType)){
sq.append(" service_type='"+serverType+"' AND ");
}
if(StringUtil.isNotBlank(clientFrom)){
sq.append(" customer_source='"+clientFrom+"' AND ");
}
if(StringUtil.isNotBlank(contractInto)){
sq.append(" contract_status='"+contractInto+"' AND ");
}
if(StringUtil.isNotBlank(startTime)){
sq.append(" contract_start_time>='"+startTime+"' AND ");
}
if(StringUtil.isNotBlank(endTime)){
sq.append(" contract_due_time<= '"+endTime+"' ");
}
if(sq.toString().endsWith("AND")){
sq.substring(0,sq.length()-3);
}
sq.append(" limit "+start+","+pageSize);
LogUtil.print("sql: " + sq);
Query qry = em.createNativeQuery(sq.toString());
qry.unwrap(org.hibernate.SQLQuery.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> rws = qry.getResultList();
Set<String> lis = new HashSet<String>();
if (null != rws && rws.size() > 0) {
String cn="";
for (Map<String, Object> m : rws) {
if (null != m.get("company_name"))
cn = m.get("company_name").toString();
lis.add(cn);
}
}
//total
String sql_sub="";
if(sq.toString().contains("limit")){
sql_sub=sq.toString().split("limit")[0];
}
LogUtil.print("sql: " + sql_sub);
Query qy = em.createNativeQuery(sql_sub);
qy.unwrap(org.hibernate.SQLQuery.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> rs = qy.getResultList();
Set<String> li = new HashSet<String>();
if (null != rs && rs.size() > 0) {
String cn="";
for (Map<String, Object> m : rs) {
if (null != m.get("company_name"))
cn = m.get("company_name").toString();
li.add(cn);
}
}
for (String cnm: lis ) {
sq= new StringBuffer();
sq.append("SELECT" +
" *" +
" FROM" +
" t_cal_company WHERE company_name ='"+cnm+"' ") ;
if(StringUtil.isNotBlank(moneyCount)){
sq.append(" AND money_back_times='"+moneyCount+"'");
}
LogUtil.print("sql: " + sq);
Query query = em.createNativeQuery(sq.toString());
query.unwrap(org.hibernate.SQLQuery.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> rows = query.getResultList();
if (null != rows && rows.size() > 0) {
CompanyForListModel companyForListModel = null;
for (Map<String, Object> map : rows) {
companyForListModel = new CompanyForListModel();
companyForListModel.setId(Long.valueOf(map.get("id").toString()));
if (null != map.get("company_name"))
companyName = map.get("company_name").toString();
companyForListModel.setCompanyName(companyName);
if (null != map.get("industry_level_one"))
companyForListModel.setIndustryName(map.get("industry_level_one").toString());
if (null != map.get("city_name"))
companyForListModel.setCityName(map.get("city_name").toString());
if (null != map.get("corporate_nature"))
companyForListModel.setCompanyNatueName(map.get("corporate_nature").toString());
if (null != map.get("financ_stage"))
companyForListModel.setFinancing(map.get("financ_stage").toString());
if (null != map.get("cooperation_times"))
companyForListModel.setCooperateCount(Integer.valueOf(map.get("cooperation_times").toString()));
if (null != map.get("recommend_report_num"))
companyForListModel.setReportCount(Integer.valueOf(map.get("recommend_report_num").toString()));
if (null != map.get("offers_num"))
companyForListModel.setOfferCount(Integer.valueOf(map.get("offers_num").toString()));
if (null != map.get("money_back_times"))
companyForListModel.setMoneyCount(Integer.valueOf(map.get("money_back_times").toString()));
if (null != map.get("money_back_total"))
companyForListModel.setMoneyTotal(map.get("money_back_total").toString());
List<CompanyForListModel.Contract> liscc = new ArrayList<>();
sql = "SELECT" +
" *" +
" FROM" +
" t_cal_contract" +
" WHERE" +
" company_name='"+companyName+"'";
LogUtil.print("sql: " + sql);
Query que = em.createNativeQuery(sql);
que.unwrap(org.hibernate.SQLQuery.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> ros = que.getResultList();
if (null != ros && ros.size() > 0) {
for (Map<String, Object> ma : ros) {
CompanyForListModel.Contract cc = new CompanyForListModel.Contract();
if (null != ma.get("brand_own"))
cc.setBrand(ma.get("brand_own").toString());
if (null != ma.get("customer_source"))
cc.setClientFrom(ma.get("customer_source").toString());
if (null != ma.get("service_type"))
cc.setServerType(ma.get("service_type").toString());
if (null != ma.get("contract_due_time"))
cc.setContractDueTime(ma.get("contract_due_time").toString().substring(0,10));
if (null != ma.get("contract_status"))
cc.setContractInto(ma.get("contract_status").toString());
liscc.add(cc);
}
}
if (null != liscc && liscc.size() > 0) {
companyForListModel.setList(liscc);
}
listModels.add(companyForListModel);
}
page.setTotal(li.size());
page.setPageNo(pageNo);
page.setPageSize(listModels.size());
page.setData(listModels);
}
}
}catch (Exception e) {
LogUtil.print("sql: "+sql);
e.printStackTrace();
LogUtil.error("客户服务接口,错误信息:", e.getMessage(), e);
}
return page;
}
封装的page:
public class Page<T> implements Serializable {
private int pageSize = 10;
private int pageNo = 1;
private int total;
private List<T> data = new ArrayList<>(0);
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
@Override
public String toString() {
return "Page{" +
"pageSize=" + pageSize +
", pageNo=" + pageNo +
", total=" + total +
", data=" + data +
'}';
}
}
public class StringData<T>{
private final static String SUCCESS = "success";
private final static String ERROR = "errot";
private final static String DATANULL = "dataNull";
private T data; //实体
private String code; //返回状态码
private String msg; //返回状态
// private Map<String,T> dataMap; //返回参数
public static String getSUCCESS() {
return SUCCESS;
}
public static String getERROR() {
return ERROR;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
// public Map<String, T> getDataMap() {
// return dataMap;
// }
//
// public void setDataMap(Map<String, T> dataMap) {
// this.dataMap = dataMap;
// }
public void success() {
this.code = EnumHttpStatusType.success.getCode()+"";
this.msg=EnumHttpStatusType.success.getStatus();
}
public void error() {
this.code = EnumHttpStatusType.error.getCode()+"";
this.msg=EnumHttpStatusType.error.getStatus();
}
public void dataNull() {
this.code = EnumHttpStatusType.data_null.getCode()+"";
this.msg= EnumHttpStatusType.data_null.getStatus();
}
结果展示: