package com.zteits.bill.util; import java.util.Date; import java.util.List; import com.xiaoleilu.hutool.date.DateUnit; import com.xiaoleilu.hutool.date.DateUtil; import com.zteits.clouds.api.dto.bill.billing.param.BillingReq; import com.zteits.clouds.api.dto.bill.billinglog.dto.BillingLogDTO; import com.zteits.clouds.api.dto.bill.billinglog.dto.BillingLogDetailDTO; import com.zteits.clouds.api.dto.bill.billinglog.dto.BillingLogOfDayDTO; /** * Copyright: Copyright (c) 2017 zteits * * @ClassName: com.zteits.billing.util * @Description: * @version: v1.0.0 * @author: atao * @date: 2017/11/7 下午2:37 * Modification History: * Date Author Version Description * ---------------------------------------------------------* * 2017/11/7 atao v1.0.0 创建 */ public class BillingInfoUtil { private static final ThreadLocal tl = new ThreadLocal<> (); private BillingInfoUtil(){ } public static BillingLogDTO init(BillingReq req) { tl.remove(); BillingLogDTO dto = new BillingLogDTO(); dto.setPlNo(req.getPlNo()); dto.setCarNo(req.getCarNo()); dto.setCarType(req.getCarType()); dto.setInTime(req.getInTime()); dto.setOutTime(req.getOutTime()); dto.setParkDuration(DateUtil.between(req.getInTime(), req.getOutTime(), DateUnit.SECOND)); tl.set(dto); return dto; } /** * 生成新的一天计费日志对象 * * @param date * @return */ public static BillingLogOfDayDTO newDayLog(Date date) { List dayLogs = tl.get().getDayLogs(); BillingLogOfDayDTO dto = new BillingLogOfDayDTO(); dto.setDay(date); dayLogs.add(dto); return dto; } /** * 获取最后一天计费日志对象 * * @return */ public static BillingLogOfDayDTO getLastBillingLogDay() { List dayLogs = tl.get().getDayLogs(); if (null == dayLogs || 0 == dayLogs.size()) { return null; } return dayLogs.get(dayLogs.size() - 1); } /** * @return */ public static BillingLogDetailDTO newDayLogDetail() { BillingLogDetailDTO billingLogDetailDTO = new BillingLogDetailDTO(); BillingLogOfDayDTO billingLogOfDayDTO = getLastBillingLogDay(); if (null != billingLogOfDayDTO) { List detailBillingLogs = billingLogOfDayDTO.getDetailBillingLogs(); detailBillingLogs.add(billingLogDetailDTO); } return billingLogDetailDTO; } /** * 获取最后一条计费规则明细 * * @return */ public static BillingLogDetailDTO getLastBillingLogDetail() { BillingLogOfDayDTO billingLogOfDayDTO = getLastBillingLogDay(); if (null != billingLogOfDayDTO) { List detailBillingLogs = billingLogOfDayDTO.getDetailBillingLogs(); return detailBillingLogs.get(detailBillingLogs.size() - 1); } else { return null; } } /** * 获取计费日志对象 * * @return */ public static BillingLogDTO getBillingLog() { return tl.get(); } public static void remove() { tl.remove(); } }