敏捷工具
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.
 
 
 
 

184 lines
6.5 KiB

package com.whn.hellospring.controller;
import com.whn.hellospring.common.StateMessage;
import com.whn.hellospring.common.Status;
import com.whn.hellospring.model.OilDO;
import com.whn.hellospring.model.OilPriceBean;
import com.whn.hellospring.request.DeleteOilRecordRequest;
import com.whn.hellospring.request.OilRecordListRequest;
import com.whn.hellospring.service.OilService;
import com.whn.hellospring.utils.DateUtils;
import com.whn.hellospring.utils.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.common.util.impl.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@Slf4j
@RestController
@RequestMapping(value = "/oil")
public class OilController {
@Autowired
OilService service;
/**
* 市场油价
*/
@PostMapping(value = "/price")
public Status requestOilPrice(){
try {
OilPriceBean oilPriceBean = service.requestOilList();
Status status = new Status(StateMessage.SUCCESS, "success");
status.setData("list", oilPriceBean.getResult());
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
/**
* 平均油耗
*/
@PostMapping(value = "/wear")
public Status getOilWear(@RequestBody OilRecordListRequest request) {
try {
//平均油耗 = 加油总数量(num 数量相加 除第一次) / 区间里程总数(intervalmileage 相加 除第一次)* 100
double numTotal = service.getNumTotal(request.getCustomer_id());
double intervalMileageTotal = service.getIntervalMileageTotal(request.getCustomer_id());
double oilWear = numTotal * 100.0 / intervalMileageTotal;
String s = StringUtil.INSTANCE.doubleToString1(oilWear);
Status status = new Status(StateMessage.SUCCESS, "success");
status.setData("wear", s);
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
/**
* 删除记录
*/
@PostMapping(value = "/delete")
public Status deleteCoffeeById(@RequestBody DeleteOilRecordRequest request) {
try {
OilDO oilDO = service.deleteRecord(request.getId());
Status status = new Status(StateMessage.SUCCESS, "success");
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
/**
* 获取油耗列表
*/
@PostMapping(value = "/wearList")
public Status getWearList(@RequestBody OilRecordListRequest request) {
try {
List<Double> wearList = service.getWearList(request.getCustomer_id());
//删除第一条记录,一般为空
wearList.remove(0);
Status status = new Status(StateMessage.SUCCESS, "success");
status.setData("list", wearList);
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
/**
* 获取一天的油费
*/
@PostMapping(value = "/fuelOneDayList")
public Status getFuelOneDayList(@RequestBody OilRecordListRequest request) {
try {
List<Double> list = service.getFuelOneDay(request.getCustomer_id());
//删除第一条记录,一般为空
list.remove(0);
Status status = new Status(StateMessage.SUCCESS, "success");
status.setData("list", list);
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
/**
* 获取记录列表
*/
@PostMapping(value = "/recordList")
public Status getRecordList(@RequestBody OilRecordListRequest request) {
try {
List<OilDO> recordList = service.getRecordList(request.getCustomer_id());
Status status = new Status(StateMessage.SUCCESS, "success");
status.setData("list", recordList);
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
/**
* 创建记录
*/
@PostMapping(value = "/add")
public Status createRecord(@Valid @RequestBody OilDO oilDO) {
try {
//上条有效记录的currentMileage
OilDO recentlyRecord = service.getRecentlyRecord(oilDO.getCustomer_id());
int recentlyMileage = 0;
if (recentlyRecord != null) {
recentlyMileage = recentlyRecord.getMileage();
//区间里程intervalmileage = currentMileage - 上条有效记录的currentMileage
int intervalMileage = oilDO.getMileage() - recentlyMileage;
oilDO.setIntervalMileage(intervalMileage);
//计算区间油耗 intervalOilWear = num / intervalmileage
double intervalOilWear = oilDO.getNum() * 100.0 / intervalMileage;
oilDO.setIntervalOilWear(intervalOilWear);
//计算区间每天油费 fuelOneDay = price / (oilDO.Date - recentlyRecord.Date)
long i = DateUtils.daysBetween(recentlyRecord.getTime(), oilDO.getTime());
log.info("createRecord","间隔天数:"+i);
oilDO.setBetweenDay(i);
double fuelOneDay = oilDO.getPrice() / i;
oilDO.setFuelOneDay(fuelOneDay);
}else{
oilDO.setIntervalOilWear(0.0);
}
oilDO.setStatus(1);
oilDO.setTime(oilDO.getTime());
OilDO oil = service.addUpdateRecord(oilDO);
Status status = new Status(StateMessage.SUCCESS, "success");
status.setData("bean", oil);
return status;
} catch (Exception e) {
return new Status(StateMessage.UN_KNOW_REASON);
}
}
// /**
// * 更新记录
// */
// @PostMapping(value = "/update")
// public Status updateRecord(@Valid @RequestBody OilDO oilDO){
// try {
// oilDO.setTime(oilDO.getTime());
// OilDO oil = service.addUpdateRecord(oilDO);
// Status status = new Status(StateMessage.SUCCESS, "success");
// status.setData("bean",oil);
// return status;
// }catch (Exception e){
// return new Status(StateMessage.UN_KNOW_REASON);
// }
// }
}