package com.zteits.park.dao.impl; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.collections4.CollectionUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xiaoleilu.hutool.date.DateUtil; import com.zteits.clouds.api.dto.order.parkorder.dto.IncomeCalculationDTO; import com.zteits.clouds.api.dto.order.parkorder.param.QueryIncomeCalculationForPageReq; import com.zteits.clouds.api.dto.park.dto.IncomeCalculationExcelDTO; import com.zteits.park.dao.InComeCalculationStaticDao; import com.zteits.park.domain.TIncomeCalculationStaticNum; import com.zteits.park.domain.TIncomeCalculationStaticNumExample; import com.zteits.park.domain.TIncomeCalculationStaticTime; import com.zteits.park.domain.TIncomeCalculationStaticTimeExample; import com.zteits.park.mapper.TIncomeCalculationStaticNumMapper; import com.zteits.park.mapper.TIncomeCalculationStaticTimeMapper; import com.zteits.park.mapper.smapper.TIncomeCalculationStaticNumSMapper; import com.zteits.park.mapper.smapper.TIncomeCalculationStaticTimeSMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Copyright: Copyright (c) 2017 zteits * * @ClassName: com.zteits.park.dao.impl * @Description: * @version: v1.0.0 * @author: atao * @date: 2017/12/26 下午3:43 * Modification History: * Date Author Version Description * ---------------------------------------------------------* * 2017/12/26 atao v1.0.0 创建 */ @Component public class InComeCalculationStaticDaoImpl implements InComeCalculationStaticDao { @Autowired private TIncomeCalculationStaticNumSMapper tIncomeCalculationStaticNumSMapper; @Autowired private TIncomeCalculationStaticTimeSMapper tIncomeCalculationStaticTimeSMapper; @Autowired private TIncomeCalculationStaticNumMapper tIncomeCalculationStaticNumMapper; @Autowired private TIncomeCalculationStaticTimeMapper tIncomeCalculationStaticTimeMapper; @Override public int staticIncomeCalculationDataOfNum(String month, Date staticStartDate, Date staticEndDate) { return tIncomeCalculationStaticNumSMapper.staticIncomeCalculationDataOfNum(month, staticStartDate, staticEndDate); } @Override public int staticIncomeCalculationDataOfTime(String month, Date staticStartDate, Date staticEndDate) { return tIncomeCalculationStaticTimeSMapper.staticIncomeCalculationDataOfTime(month, staticStartDate, staticEndDate); } @Override public PageInfo exportStaticIncomeExcelByNum(QueryIncomeCalculationForPageReq req) { PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticNumSMapper.queryIncomeCalculationDataByNum(req); return new PageInfo<>(list); } @Override public Boolean updateParkBaseInfoByProc() { try { tIncomeCalculationStaticNumSMapper.updateParkBaseInfoByProc(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public PageInfo exportStaticIncomeExcelByNumForAreaBlock( QueryIncomeCalculationForPageReq req) { req.setGroupType(2); PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticNumSMapper .queryIncomeCalculationDataByNum(req); Map berthNumMap = getAllBerthNumByCondition(req.getPlNos(), req.getBeginTime(), req.getEndTime()); berthNumMap = berthNumMap == null ? new HashMap<>() : berthNumMap; if (CollectionUtils.isNotEmpty(list)) { // for (IncomeCalculationExcelDTO dto : list) { Integer allBerthNums = berthNumMap.get(dto.getAreaId()); allBerthNums = allBerthNums == null ? 0 : allBerthNums; dto.setBerthNum(allBerthNums); Long amount = dto.getAmount(); amount = amount == null ? 0 : amount; ; Integer allParkDuration = dto.getAllParkDuration(); allParkDuration = allParkDuration == null ? 0 : allParkDuration; //计算泊位平均收益 及 平均时长 if (allBerthNums == null || allBerthNums == 0) { dto.setAvgAmount(0); ; dto.setAvgParkDuration(0.00); } else { dto.setAvgAmount(Math.round(amount / allBerthNums)); dto.setAvgParkDuration(Math.round(allParkDuration * 100.0 / allBerthNums) / 100.0); } } } return new PageInfo<>(list); } @Override public Map getAllBerthNumByCondition(List plNos, Date startDate, Date endDate) { List> mapList = tIncomeCalculationStaticNumSMapper.getAllBerthNumByCondition(plNos, startDate, endDate); Map result = new HashMap<>(); if (CollectionUtils.isEmpty(mapList)) { return result; } for (Map temp : mapList) { String AREAID = null; Integer BERTHNUMS = null; for (Entry entry : temp.entrySet()) { if ("AREAID".equals(entry.getKey())) { AREAID = entry.getValue().toString(); } if ("BERTHNUMS".equals(entry.getKey())) { BERTHNUMS = Integer.valueOf(entry.getValue().toString()); } } result.put(AREAID, BERTHNUMS); } return result; } @Override public PageInfo getIncomeCalculationDataOfSummationByTime( QueryIncomeCalculationForPageReq req) { Map berthNumMap = getAllBerthNumByCondition(req.getPlNos(), req.getBeginTime(), req.getEndTime()); Integer allBerthNums = berthNumMap.values().stream().mapToInt(value -> value).sum(); req.setTimeType(100); PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticTimeSMapper .getIncomeCalculationDataOfPlByTime(req); if (CollectionUtils.isNotEmpty(list)) { for (IncomeCalculationExcelDTO dto : list) { if (null == dto) { continue; } dto.setBerthNum(allBerthNums); dto.setStaticDate(DateUtil.format(req.getBeginTime(), "yyyy-MM-dd") + "-" + DateUtil .format(req.getEndTime(), "yyyy-MM-dd")); Long amount = dto.getAmount(); amount = amount == null ? 0 : amount; Integer allParkDuration = dto.getAllParkDuration(); allParkDuration = allParkDuration == null ? 0 : allParkDuration; //计算泊位平均收益 及 平均时长 if (allBerthNums == null || allBerthNums == 0) { dto.setAvgAmount(0); dto.setAvgParkDuration(0.00); } else { dto.setAvgAmount(Math.round(amount / allBerthNums)); dto.setAvgParkDuration(Math.round(allParkDuration * 100.0 / allBerthNums) / 100.0); } } } return new PageInfo<>(list); } @Override public PageInfo getIncomeCalculationDataOfAreaByTime( QueryIncomeCalculationForPageReq req) { Map berthNumMap = getAllBerthNumByCondition(req.getPlNos(), req.getBeginTime(), req.getEndTime()); berthNumMap = berthNumMap == null ? new HashMap<>() : berthNumMap; req.setGroupType(2); PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticTimeSMapper.getIncomeCalculationDataOfPlByTime( req); if (CollectionUtils.isNotEmpty(list)) { for (IncomeCalculationExcelDTO dto : list) { Integer allBerthNums = berthNumMap.get(dto.getAreaId()); allBerthNums = allBerthNums == null ? 0 : allBerthNums; dto.setBerthNum(allBerthNums); Long amount = dto.getAmount(); amount = amount == null ? 0 : amount; Integer allParkDuration = dto.getAllParkDuration(); allParkDuration = allParkDuration == null ? 0 : allParkDuration; //计算泊位平均收益 及 平均时长 if (allBerthNums == null || allBerthNums == 0) { dto.setAvgAmount(0); dto.setAvgParkDuration(0.00); ;; } else { dto.setAvgAmount(Math.round(amount / allBerthNums)); dto.setAvgParkDuration(Math.round(allParkDuration * 100.0 / allBerthNums) / 100.0); } } } return new PageInfo<>(list); } @Override public PageInfo getIncomeCalculationDataOfPlByTime( QueryIncomeCalculationForPageReq req) { PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticTimeSMapper.getIncomeCalculationDataOfPlByTime( req); if (CollectionUtils.isNotEmpty(list)) { for (IncomeCalculationExcelDTO dto : list) { Integer allBerthNums = dto.getBerthNum(); allBerthNums = allBerthNums == null ? 0 : allBerthNums; dto.setBerthNum(allBerthNums); Long amount = dto.getAmount(); amount = amount == null ? 0 : amount; Integer allParkDuration = dto.getAllParkDuration(); allParkDuration = allParkDuration == null ? 0 : allParkDuration; //计算泊位平均收益 及 平均时长 if (allBerthNums == null || allBerthNums == 0) { dto.setAvgAmount(0); dto.setAvgParkDuration(0.00); ; } else { dto.setAvgAmount(Math.round(amount / allBerthNums)); dto.setAvgParkDuration(Math.round(allParkDuration * 100.0 / allBerthNums) / 100.0); } } } return new PageInfo<>(list); } @Override public int batchSaveIncomeNum(List incomeNumList) { int count = tIncomeCalculationStaticNumSMapper.batchSaveIncomeNum(incomeNumList); return count; } @Override public int batchSaveIncomeTime(List incomeTimeList) { int count = tIncomeCalculationStaticTimeSMapper.batchSaveIncomeTime(incomeTimeList); return count; } @Override public List staticIncomeByNumForNewColumnChart(QueryIncomeCalculationForPageReq req) { return tIncomeCalculationStaticNumSMapper.staticIncomeByNumForNewColumnChart(req); } @Override public List staticIncomeByNumForNewLineChart(QueryIncomeCalculationForPageReq req) { return tIncomeCalculationStaticNumSMapper.staticIncomeByNumForNewLineChart(req); } @Override public PageInfo exportStaticIncomeExcelByNumForAllGroupByPlType( QueryIncomeCalculationForPageReq req) { PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticNumSMapper .exportStaticIncomeExcelByNumForAllGroupByPlType(req); Map berthNumMap = getAllBerthNumByCondition(req.getPlNos(), req.getBeginTime(), req.getEndTime()); Integer allBerthNums = berthNumMap.values().stream().mapToInt(value -> value).sum(); if (CollectionUtils.isNotEmpty(list)) { for (IncomeCalculationExcelDTO dto : list) { if (null == dto) { continue; } dto.setBerthNum(allBerthNums); dto.setStaticDate(DateUtil.format(req.getBeginTime(), "yyyy-MM-dd") + "-" + DateUtil .format(req.getEndTime(), "yyyy-MM-dd")); Long amount = dto.getAmount(); amount = amount == null ? 0 : amount; Integer allParkDuration = dto.getAllParkDuration(); allParkDuration = allParkDuration == null ? 0 : allParkDuration; //计算泊位平均收益 及 平均时长 if (allBerthNums == null || allBerthNums == 0) { dto.setAvgAmount(0); ; dto.setAvgParkDuration(0.00); ; ; } else { dto.setAvgAmount(Math.round(amount / allBerthNums)); dto.setAvgParkDuration(Math.round(allParkDuration * 100.0 / allBerthNums) / 100.0); } } } return new PageInfo<>(list); } @Override public PageInfo getSummationIncomeByTimeOfArea(QueryIncomeCalculationForPageReq req) { if (0 == req.getBaseRequest().getPageNum()) { req.getBaseRequest().setPageNum(1); } req.setGroupType(2); req.setTimeType(100); PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticTimeSMapper.getIncomeCalculationDataOfPlByTime(req);; return new PageInfo<>(list); } @Override public PageInfo getSummationIncomeByTimeOfPl(QueryIncomeCalculationForPageReq req) { if (0 == req.getBaseRequest().getPageNum()) { req.getBaseRequest().setPageNum(1); } req.setGroupType(2); req.setTimeType(100); PageHelper.startPage(req.getBaseRequest().getPageNum(), req.getBaseRequest().getPageSize()); List list = tIncomeCalculationStaticTimeSMapper.getIncomeCalculationDataOfPlByTime(req); return new PageInfo<>(list); } @Override public void deleteNumInfoByPlNo(String plNo, String staDate) { TIncomeCalculationStaticNumExample example = new TIncomeCalculationStaticNumExample(); example.createCriteria().andPlNoEqualTo(plNo).andStaticDateEqualTo(staDate); tIncomeCalculationStaticNumMapper.deleteByExample(example); } @Override public void deleteTimeInfoByPlNo(String plNo, String staDate) { TIncomeCalculationStaticTimeExample example = new TIncomeCalculationStaticTimeExample(); example.createCriteria().andPlNoEqualTo(plNo).andStaticDateEqualTo(staDate); tIncomeCalculationStaticTimeMapper.deleteByExample(example); } }