package com.ruoyi.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.utils.MapUtils;
|
import com.ruoyi.domain.TravelCount;
|
import com.ruoyi.domain.TravelDetail;
|
import com.ruoyi.domain.ZInfoUser;
|
import com.ruoyi.domain.ZProperty;
|
import com.ruoyi.mapper.TravelCountMapper;
|
import com.ruoyi.service.TravelCountService;
|
import com.ruoyi.service.TravelDetailService;
|
import com.ruoyi.service.ZInfoUserService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.text.DecimalFormat;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author ojq
|
* @since 2023-10-06
|
*/
|
@Service
|
public class TravelCountServiceImpl extends ServiceImpl<TravelCountMapper, TravelCount> implements TravelCountService {
|
|
@Autowired
|
private TravelDetailService travelDetailService;
|
|
@Autowired
|
private TravelCountService travelCountService;
|
@Autowired
|
ZInfoUserService zInfoUserService;
|
@Override
|
public AjaxResult selectDataList(Long userId, Integer pageNum, Integer pageSize, TravelCount travelCount, String happenStartTime, String happenEndTime) {
|
//设置查询条件
|
LambdaQueryWrapper<TravelCount> lqw = new LambdaQueryWrapper<>();
|
// lqw.eq(TravelCount::getUid,userId);
|
if(travelCount!=null){
|
lqw.like(travelCount.getName()!=null,TravelCount::getName,travelCount.getName());
|
lqw.like(travelCount.getDestination()!=null,TravelCount::getDestination,travelCount.getDestination());
|
lqw.like(travelCount.getProperty()!=null,TravelCount::getProperty,travelCount.getProperty());
|
lqw.like(travelCount.getManner()!=null,TravelCount::getManner,travelCount.getManner());
|
lqw.like(travelCount.getName()!=null,TravelCount::getName,travelCount.getName());
|
lqw.like(travelCount.getName()!=null,TravelCount::getName,travelCount.getName());
|
lqw.like(travelCount.getName()!=null,TravelCount::getName,travelCount.getName());
|
}
|
if(happenStartTime!=null){
|
lqw.gt(TravelCount::getStartTime,happenStartTime);
|
}
|
|
if(happenEndTime!=null){
|
lqw.lt(TravelCount::getEndTime,happenEndTime);
|
}
|
lqw.orderByDesc(TravelCount::getCreateTime);
|
|
|
System.out.println("--sdfdsf000sfssssssssssssssssss");
|
//根据userId查询到infouser的uaid
|
ZInfoUser zInfoUser = zInfoUserService.getInfoBysysId(userId);
|
//拿到所有的sysid
|
List<Long> fms = zInfoUserService.findByUaidToFaid(zInfoUser.getUaid()).stream().map(ZInfoUser::getSysId).collect(Collectors.toList());
|
// LambdaQueryWrapper<TravelCount> lqw;
|
if(!fms.isEmpty())
|
lqw = lqw.in(TravelCount::getUid, fms);
|
else
|
lqw.eq(TravelCount::getUid,userId);
|
// else
|
// lqw = buildCondition(zProperty, userId);
|
|
|
Page<TravelCount> resultPage = page(new Page<>(pageNum, pageSize), lqw);
|
resultPage.getRecords().forEach(this::inputTotalData);
|
return AjaxResult.success(MapUtils.getResult(resultPage));
|
}
|
|
/**
|
* 批量删除统计表数据
|
*/
|
@Override
|
@Transactional
|
public void removeData(List<Long> list) {
|
|
//在删除统计表数据之前,要先删除明细表的数据
|
travelDetailService.removeBatchByCid(list);
|
|
//再删除自己表的数据
|
travelCountService.removeBatchByIds(list);
|
}
|
|
@Override
|
public TravelCount getDataById(Long id) {
|
TravelCount travelCount = getById(id);
|
inputTotalData(travelCount);
|
return travelCount;
|
}
|
|
private void inputTotalData(TravelCount travelCount){
|
//先找到对应一条统计数据的所有详细数据
|
List<TravelDetail> travelDetailList = travelDetailService.getDataByCid(travelCount.getId(),null);
|
double entranceTotal = 0;
|
double eatTotal = 0;
|
double stayTotal = 0;
|
double travelTotal = 0;
|
double shopTotal = 0;
|
//把所有详细数据的费用值累加起来
|
for (TravelDetail detail : travelDetailList) {
|
entranceTotal+=detail.getEntrance();
|
eatTotal+=detail.getEat();
|
stayTotal+=detail.getStay();
|
travelTotal+=detail.getTravel();
|
shopTotal += detail.getShop();
|
}
|
|
travelCount.setEntranceTotal(entranceTotal);
|
travelCount.setEatTotal(eatTotal);
|
travelCount.setStayTotal(stayTotal);
|
travelCount.setTravelTotal(travelTotal);
|
travelCount.setShopTotal(shopTotal);
|
DecimalFormat df = new DecimalFormat("0.00");
|
travelCount.setTotalPrice(Double.parseDouble(df.format(entranceTotal+eatTotal+travelCount.getGroupTotal()+stayTotal+travelTotal)));
|
}
|
}
|