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 headers = new HashMap(); Map querys = new HashMap(); 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 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 getWearList(Long customer_id) { return oilRepository.findWearList(customer_id); } /** * 一天油费 */ public List 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 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 getRecordList(Long customer_id) { log.info("customer_id:{}", customer_id); List recordList = oilRepository.finAllSortByTime(customer_id); log.info("recordList:{}", recordList); // Collections.reverse(recordList); List 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 getRecordAllList(Long customer_id) { List 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); } }