敏捷工具
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

212 lines
5.7 KiB

package com.whn.hellospring.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.whn.hellospring.model.OilDO;
import com.whn.hellospring.model.OilPriceBean;
import com.whn.hellospring.repository.OilRepository;
import com.whn.hellospring.utils.HttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class OilService {
@Autowired
private OilRepository oilRepository;
/**
* 获取三方油价列表
* @return
*/
public OilPriceBean requestOilList() throws Exception {
String host = "http://apis.juhe.cn";
String path = "/gnyj/query";
String key = "212b6526c4f8a3899ca406a1173bafa8";
JSONObject requestObj = new JSONObject();
// requestObj.put("key", key);
String bodys = requestObj.toJSONString();
JSONObject resObj = new JSONObject();
// resObj.put("key",key);
try {
Map<String, String> headers = new HashMap<String, String>();
Map<String, String> querys = new HashMap<String, String>();
querys.put("key",key);
HttpResponse response = HttpUtils.doPost(host, path, "POST", headers, querys, bodys);
int stat = response.getStatusLine().getStatusCode();
if (stat != 200) {
System.out.println("Http code: " + stat);
System.out.println("http header error msg: " + response.getFirstHeader("X-Ca-Error-Message"));
String bodyErr = EntityUtils.toString(response.getEntity());
System.out.println("Http body error msg:" + bodyErr);
resObj.put("errorMsg",bodyErr);
}else{
String res = EntityUtils.toString(response.getEntity());
resObj.put("status","SUCCESS");
resObj.putAll(JSON.parseObject(res));
}
} catch (Exception e) {
resObj.put("status","FAIL");
e.printStackTrace();
} finally {
if(!"SUCCESS".equals(resObj.getString("status"))){
throw new Exception();
}
log.info("resObj={}",JSONObject.toJSONString(resObj,true));
OilPriceBean oilPriceBean = JSONObject.parseObject(String.valueOf(resObj), OilPriceBean.class);
log.info("bean"+oilPriceBean.toString());
return oilPriceBean;
}
}
//获取id,里程,区间里程
//计算区间里程
//根据id,将区间里程赋值到数据库
/**
* test
* 计算区间里程
*/
public void calculationIntervalMileage(Long customer_id) {
List<OilDO> list = oilRepository.finAllSortByTime(customer_id);
log.info("list:{}", list);
for (int i = 1; i < list.size(); i++) {
list.get(i).setMileage(list.get(i-1).getMileage()-list.get(i).getIntervalMileage());
}
}
/**
* 油耗列表
*/
public List<Double> getWearList(Long customer_id) {
return oilRepository.findWearList(customer_id);
}
/**
* 一天油费
*/
public List<Double> getFuelOneDay(Long customer_id) {
return oilRepository.findFuelOneDay(customer_id);
}
/**
* 获取有效数量num之和
*
* @return
*/
public double getNumTotal(Long customer_id) {
return oilRepository.countNum(customer_id);
}
/**
* 获取有效区间里程和
*
* @return
*/
public double getIntervalMileageTotal(Long customer_id) {
return oilRepository.countIntervalMileage(customer_id);
}
/**
* 获取最新的一条有效记录
*/
public OilDO getRecentlyRecord(Long customer_id) {
List<OilDO> recordList = oilRepository.finAllSortByTime(customer_id);
if (recordList == null || recordList.size() == 0) return null;
int index = -1;
for (int i = 0; i < recordList.size(); i++) {
OilDO oilDO = recordList.get(i);
if (oilDO.getStatus() == 1) {
index = i;
break;
}
}
if (index == -1) {
return null;
} else {
return recordList.get(index);
}
}
/**
* 获取有效记录列表
*/
public List<OilDO> getRecordList(Long customer_id) {
log.info("customer_id:{}", customer_id);
List<OilDO> recordList = oilRepository.finAllSortByTime(customer_id);
log.info("recordList:{}", recordList);
// Collections.reverse(recordList);
List<OilDO> list = new ArrayList<>();
for (int i = 0; i < recordList.size(); i++) {
if (recordList.get(i).getStatus() == 1) {
list.add(recordList.get(i));
}
}
log.info("list:{}", list);
return list;
}
/**
* 获取全部记录列表
* 包括被删除的status = 0
*/
public List<OilDO> getRecordAllList(Long customer_id) {
List<OilDO> recordList = oilRepository.finAllSortByTime(customer_id);
// Collections.reverse(recordList);
log.info("recordList:{}", recordList);
return recordList;
}
/**
* 新增更新
*/
public OilDO addUpdateRecord(OilDO oilDO) {
OilDO save = oilRepository.save(oilDO);
return save;
}
/**
* 删除
*
* @return
*/
public OilDO deleteRecord(Long id) {
OilDO oilDO = oilRepository.getOne(id);
oilDO.setStatus(0);
return oilRepository.save(oilDO);
}
}