From b02beccf4567068cb47a3f1181a00039456c872d Mon Sep 17 00:00:00 2001 From: zqy <2522236926@qq.com> Date: 星期三, 06 八月 2025 15:37:20 +0800 Subject: [PATCH] 用户修改姓名和电话同步修改uaid --- zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java | 374 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 373 insertions(+), 1 deletions(-) diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java index 58c7334..2cda4f0 100644 --- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java +++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZTravelPriceServiceImpl.java @@ -1,15 +1,33 @@ 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.core.domain.entity.SysUser; +import com.ruoyi.common.utils.MapUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.domain.ZTravelBase; import com.ruoyi.domain.ZTravelPrice; +import com.ruoyi.domain.ZTravelPriceDetail; +import com.ruoyi.domain.dto.PriceDto; import com.ruoyi.mapper.ZTravelPriceMapper; +import com.ruoyi.service.ZTravelBaseService; +import com.ruoyi.service.ZTravelPriceDetailService; import com.ruoyi.service.ZTravelPriceService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; /** * <p> - * 鏈嶅姟瀹炵幇绫� + * 鏈嶅姟瀹炵幇绫� * </p> * * @author ojq @@ -18,4 +36,358 @@ @Service public class ZTravelPriceServiceImpl extends ServiceImpl<ZTravelPriceMapper, ZTravelPrice> implements ZTravelPriceService { + @Autowired + ZTravelPriceServiceImpl zTravelPriceService; + + @Autowired + ZTravelPriceDetailService zTravelPriceDetailService; + + @Autowired + ZTravelBaseService zTravelBaseService; + +// private LambdaQueryWrapper<ZTravelPrice> uniqueCondition(ZTravelPrice zTravelPrice){ +// LambdaQueryWrapper<ZTravelPrice> lqw = new LambdaQueryWrapper<>(); +// lqw.eq(zTravelPrice.getMyId()!=null,ZTravelPrice::getMyId,zTravelPrice.getMyId()) +// .eq(zTravelPrice.getStartTime()!=null,ZTravelPrice::getStartTime,zTravelPrice.getStartTime()) +// .eq(zTravelPrice.getEndTime()!=null,ZTravelPrice::getEndTime,zTravelPrice.getEndTime()) +// .eq(zTravelPrice.getTotalDay()!=null,ZTravelPrice::getTotalDay,zTravelPrice.getTotalDay()) +// .eq(StringUtils.isNotEmpty(zTravelPrice.getTitle()),ZTravelPrice::getTitle,zTravelPrice.getTitle()); +//// .eq(zTravelPrice.getEat()!=null,ZTravelPrice::getEat,zTravelPrice.getEat()) +//// .eq(zTravelPrice.getStay()!=null,ZTravelPrice::getStay,zTravelPrice.getStay()) +//// .eq(zTravelPrice.getTraffic()!=null,ZTravelPrice::getTraffic,zTravelPrice.getTraffic()) +//// .eq(zTravelPrice.getShopping()!=null,ZTravelPrice::getShopping,zTravelPrice.getShopping()); +// return lqw; +// } + + private LambdaQueryWrapper<ZTravelPrice> buildCondition(ZTravelPrice zTravelPrice, Long userId) { + LambdaQueryWrapper<ZTravelPrice> lqw = new LambdaQueryWrapper<>(); + lqw.eq(ZTravelPrice::getMyId, userId) + .eq(zTravelPrice.getTotalDay() != null, ZTravelPrice::getTotalDay, zTravelPrice.getTotalDay()) + .like(StringUtils.isNotEmpty(zTravelPrice.getTitle()),ZTravelPrice::getTitle,zTravelPrice.getTitle()) + .eq(zTravelPrice.getTotalCost()!=null,ZTravelPrice::getTotalCost,zTravelPrice.getTotalCost()) + .le(zTravelPrice.getEnd() != null, ZTravelPrice::getEndTime, zTravelPrice.getEnd()) + .ge(zTravelPrice.getStart() != null, ZTravelPrice::getStartTime, zTravelPrice.getStart()) + .eq(zTravelPrice.getEat()!=null,ZTravelPrice::getEat,zTravelPrice.getEat()) + .eq(zTravelPrice.getStay()!=null,ZTravelPrice::getStay,zTravelPrice.getStay()) + .eq(zTravelPrice.getTraffic()!=null,ZTravelPrice::getTraffic,zTravelPrice.getTraffic()) + .eq(zTravelPrice.getShopping()!=null,ZTravelPrice::getShopping,zTravelPrice.getShopping()); + + lqw.orderBy(true, true, ZTravelPrice::getStartTime); + return lqw; + } + + /** + * 鍒嗛〉鏌ユ壘 + */ + @Override + public AjaxResult selectDataList(ZTravelPrice zTravelPrice, Integer pageNum, Integer pageSize) { + SysUser user = SecurityUtils.getLoginUser().getUser(); + Long userId = user.getUserId(); + LambdaQueryWrapper<ZTravelPrice> lqw = buildCondition(zTravelPrice, userId); + + Page<ZTravelPrice> pageBean = new Page<>(pageNum, pageSize); + Page<ZTravelPrice> pageResult = page(pageBean, lqw); + + List<ZTravelPrice> priceList = pageResult.getRecords();//寰楀埌鏌ヨ鍑烘潵鐨勬暟鎹� + + //鏌ヨ璐圭敤璇︽儏 + for (ZTravelPrice price : priceList) { + LambdaQueryWrapper<ZTravelPriceDetail> detailLqw = new LambdaQueryWrapper<>(); + detailLqw.eq(ZTravelPriceDetail::getFeeId,price.getId()); + List<ZTravelPriceDetail> detailList = zTravelPriceDetailService.list(detailLqw); + price.setDetailList(detailList); + } + + HashMap<String, Object> data = MapUtils.getResult(pageResult, priceList); + return AjaxResult.success(data); + + } + + @Override + public List<ZTravelPrice> selectCondition(ZTravelPrice zTravelPrice) { + SysUser user = SecurityUtils.getLoginUser().getUser(); + Long userId = user.getUserId(); + LambdaQueryWrapper<ZTravelPrice> lqw = buildCondition(zTravelPrice, userId); + return list(lqw); + } + + @Override + public List<ZTravelPrice> selectByIds(Long[] ids) { + List<ZTravelPrice> list = new ArrayList<>(); + if (ids.length != 0) + list = listByIds(Arrays.asList(ids)); + else + list = list(); + return list; + } + + + @Override + @Transactional + public AjaxResult mySave(PriceDto priceDto) { + SysUser user = SecurityUtils.getLoginUser().getUser(); + Long userId = user.getUserId(); + + List<ZTravelPriceDetail> detailList = priceDto.getDetailList(); + + //鐢熸垚璐圭敤琛╥d + String priceId = IdUtils.fastSimpleUUID(); + + //寰楀埌鎬诲ぉ鏁� + long count = detailList.stream().map(ZTravelPriceDetail::getHappenTime).distinct().count(); + Integer totalDay = Math.toIntExact(count); + + + //鍏堟彃鍏ユ槑缁嗚〃 + + //collectList杩樻病鏈夋坊鍔犳瘡鏃ラ噾棰濆瓧娈� + List<ZTravelPriceDetail> collectList = detailList.stream().peek((priceDetail) -> + { + priceDetail.setFeeId(priceId); + if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) { + throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵"); + } + Double totalCost = priceDetail.getEat() + priceDetail.getStay() + priceDetail.getTraffic() + priceDetail.getEntrance() + priceDetail.getShopping(); + priceDetail.setTotalCost(totalCost); + }).collect(Collectors.toList()); + + + //鎸夋棩鏈熷垎缁� + Map<String, List<ZTravelPriceDetail>> groupByTimeMap = collectList.stream().collect(Collectors.groupingBy(ZTravelPriceDetail::getHappenTime)); + + //灏嗘瘡鏃ラ噾棰濆瓧娈电殑鍊间篃娣诲姞涓� + for (String key : groupByTimeMap.keySet()) { + List<ZTravelPriceDetail> groupByTimeList = groupByTimeMap.get(key); + Double dayTotalCost = 0d; + for (ZTravelPriceDetail detail : groupByTimeList) { + dayTotalCost += detail.getTotalCost(); + } + + for (ZTravelPriceDetail detail : groupByTimeList){ + detail.setDayCost(dayTotalCost); + } + } + + //寮�濮嬫彃鍏ヨ垂鐢ㄨ鎯呮暟鎹� + for (String key : groupByTimeMap.keySet()) { + List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key); + for (ZTravelPriceDetail detail : dataList) { + zTravelPriceDetailService.save(detail); + } + } + + + //鍐嶆彃鍏ヨ垂鐢ㄨ褰曠粺璁¤〃 + + //鍏堝緱鍒板悇涓鎯呰垂鐢ㄧ殑鎬诲拰 + Double eatTotal = 0d; + Double stayTotal = 0d; + Double trafficTotal = 0d; + Double entranceTotal = 0d; + Double shoppingTotal = 0d; + Double totalFee = 0d; + + for (String key : groupByTimeMap.keySet()) { + List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key); + for (ZTravelPriceDetail priceDetail : dataList) { + if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) { + throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵"); + } + eatTotal+=priceDetail.getEat(); + stayTotal+=priceDetail.getStay(); + trafficTotal+=priceDetail.getTraffic(); + entranceTotal+=priceDetail.getEntrance(); + shoppingTotal+=priceDetail.getShopping(); + totalFee+=priceDetail.getTotalCost(); + } + } + + ZTravelPrice zTravelPrice = new ZTravelPrice(); + zTravelPrice.setId(priceId); + zTravelPrice.setStartTime(priceDto.getStartTime()); + zTravelPrice.setEndTime(priceDto.getEndTime()); + zTravelPrice.setTotalDay(totalDay); + zTravelPrice.setTitle(priceDto.getTitle()); + zTravelPrice.setTableName(priceDto.getTableName()); + zTravelPrice.setProperty(priceDto.getProperty()); + zTravelPrice.setType(priceDto.getType()); + zTravelPrice.setDestination(priceDto.getDestination()); + zTravelPrice.setEat(eatTotal); + zTravelPrice.setStay(stayTotal); + zTravelPrice.setTraffic(trafficTotal); + zTravelPrice.setEntrance(entranceTotal); + zTravelPrice.setShopping(shoppingTotal); + zTravelPrice.setTotalCost(totalFee); + zTravelPrice.setMyId(userId); + + //鎻掑叆璐圭敤璁板綍缁熻 + zTravelPriceService.save(zTravelPrice); + + return AjaxResult.success(); + + } + + @Override + @Transactional + public AjaxResult myUpdate(PriceDto priceDto) { + + SysUser user = SecurityUtils.getLoginUser().getUser(); + Long userId = user.getUserId(); + + List<ZTravelPriceDetail> detailList = priceDto.getDetailList(); + + //鍏堟煡鏁版嵁搴撻噷闈㈣繖涓�娆¤垂鐢ㄦ墍鏈夌殑鏁版嵁 + LambdaQueryWrapper<ZTravelPriceDetail> lqw = new LambdaQueryWrapper<>(); + lqw.eq(ZTravelPriceDetail::getFeeId,priceDto.getId()); + List<ZTravelPriceDetail> selectDetailList = zTravelPriceDetailService.list(lqw); + + //鎶婁紶杩囨潵鐨勬暟鎹腑娌℃湁鐨刬d锛屽湪鏁版嵁搴撲腑鍒犳帀 + List<Long> detailIdList = detailList.stream().filter(priceDetail -> priceDetail.getId() != null).map(ZTravelPriceDetail::getId).collect(Collectors.toList()); + List<Long> deleteIdList = selectDetailList.stream().filter(priceDetail -> !detailIdList.contains(priceDetail.getId())).map(ZTravelPriceDetail::getId).collect(Collectors.toList()); + zTravelPriceDetailService.removeBatchByIds(deleteIdList); + + + //濡傛灉浼犺繃鏉ョ殑鍒楄〃鐨勬暟鎹噷闈㈡病鏈塱d + List<ZTravelPriceDetail> addPriceDetail = detailList.stream().filter(priceDetail -> priceDetail.getId() == null || priceDetail.getId() == 0 ).collect(Collectors.toList()); + addPriceDetail.forEach(priceDetail -> { + priceDetail.setFeeId(priceDto.getId()); + }); + + //閭e氨鍏堝鍔犲埌鏁版嵁搴撲腑 + zTravelPriceDetailService.saveBatch(addPriceDetail); + + //寰楀埌鎬诲ぉ鏁� + long count = detailList.stream().map(ZTravelPriceDetail::getHappenTime).distinct().count(); + Integer totalDay = Math.toIntExact(count); + + List<ZTravelPriceDetail> collectList = detailList.stream().peek((priceDetail) -> + { + if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) { + throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵"); + } + Double totalCost = priceDetail.getEat() + priceDetail.getStay() + priceDetail.getTraffic() + priceDetail.getEntrance() + priceDetail.getShopping(); + priceDetail.setTotalCost(totalCost); + }).collect(Collectors.toList()); + + //鎸夋棩鏈熷垎缁� + Map<String, List<ZTravelPriceDetail>> groupByTimeMap = collectList.stream().collect(Collectors.groupingBy(ZTravelPriceDetail::getHappenTime)); + + //灏嗘瘡鏃ラ噾棰濆瓧娈电殑鍊间篃娣诲姞涓� + for (String key : groupByTimeMap.keySet()) { + List<ZTravelPriceDetail> groupByTimeList = groupByTimeMap.get(key); + Double dayTotalCost = 0d; + for (ZTravelPriceDetail detail : groupByTimeList) { + dayTotalCost += detail.getTotalCost(); + } + + for (ZTravelPriceDetail detail : groupByTimeList){ + detail.setDayCost(dayTotalCost); + } + } + + //寮�濮嬩慨鏀硅垂鐢ㄨ鎯呮暟鎹� + for (String key : groupByTimeMap.keySet()) { + List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key); + for (ZTravelPriceDetail detail : dataList) { + zTravelPriceDetailService.updateById(detail); + } + } + + //鍐嶄慨鏀硅垂鐢ㄨ褰曠粺璁¤〃 + + //鍏堝緱鍒板悇涓鎯呰垂鐢ㄧ殑鎬诲拰 + Double eatTotal = 0d; + Double stayTotal = 0d; + Double trafficTotal = 0d; + Double entranceTotal = 0d; + Double shoppingTotal = 0d; + Double totalFee = 0d; + + for (String key : groupByTimeMap.keySet()) { + List<ZTravelPriceDetail> dataList = groupByTimeMap.get(key); + for (ZTravelPriceDetail priceDetail : dataList) { + if (priceDetail.getEat() == null || priceDetail.getStay() == null || priceDetail.getTraffic() == null || priceDetail.getEntrance() == null || priceDetail.getShopping() == null) { + throw new RuntimeException("濡傛灉娌℃湁瀵瑰簲鐨勮垂鐢紝鍓嶇瑕佷紶涓�0杩囨潵"); + } + eatTotal+=priceDetail.getEat(); + stayTotal+=priceDetail.getStay(); + trafficTotal+=priceDetail.getTraffic(); + entranceTotal+=priceDetail.getEntrance(); + shoppingTotal+=priceDetail.getShopping(); + totalFee+=priceDetail.getTotalCost(); + } + } + + ZTravelPrice zTravelPrice = new ZTravelPrice(); + zTravelPrice.setId(priceDto.getId()); + zTravelPrice.setStartTime(priceDto.getStartTime()); + zTravelPrice.setEndTime(priceDto.getEndTime()); + zTravelPrice.setTotalDay(totalDay); + zTravelPrice.setTitle(priceDto.getTitle()); + zTravelPrice.setTableName(priceDto.getTableName()); + zTravelPrice.setProperty(priceDto.getProperty()); + zTravelPrice.setType(priceDto.getType()); + zTravelPrice.setDestination(priceDto.getDestination()); + zTravelPrice.setEat(eatTotal); + zTravelPrice.setStay(stayTotal); + zTravelPrice.setTraffic(trafficTotal); + zTravelPrice.setEntrance(entranceTotal); + zTravelPrice.setShopping(shoppingTotal); + zTravelPrice.setTotalCost(totalFee); + zTravelPrice.setMyId(userId); + + //淇敼缁熻琛� + zTravelPriceService.updateById(zTravelPrice); + + return AjaxResult.success(); + + + } + + @Override + @Transactional + public AjaxResult myRemove(String[] ids) { + + for (String feeId : ids) { + //鍒犻櫎鏃呮父缁忓巻 + zTravelBaseService.remove(new LambdaQueryWrapper<ZTravelBase>().eq(ZTravelBase::getFeeId,feeId)); + + //鍒犻櫎璐圭敤璇︽儏 + zTravelPriceDetailService.remove(new LambdaQueryWrapper<ZTravelPriceDetail>().eq(ZTravelPriceDetail::getFeeId,feeId)); + + //鍒犻櫎璐圭敤璁板綍 + zTravelPriceService.remove(new LambdaQueryWrapper<ZTravelPrice>().eq(ZTravelPrice::getId,feeId)); + } + + return AjaxResult.success(); + + } + +// @Override +// public AjaxResult importExcel(MultipartFile file) { +// +// } + + +// @Override +// @Transactional +// public AjaxResult importExcel(MultipartFile file) { +// +// ExcelUtil<ZTravelPrice> util = new ExcelUtil<>(ZTravelPrice.class); +// List<ZTravelPrice> dataList = null; +// try { +// dataList = util.importExcel(file.getInputStream()); +// } catch (Exception e) { +// throw new RuntimeException("娌℃湁鎸夌収瑙勫垯瀵煎叆鏁版嵁"); +// } +// +// assert dataList != null; +// +// for (ZTravelPrice zTravelPrice : dataList) { +// zTravelPriceService.mySave(zTravelPrice); +// } +// +// return AjaxResult.success(); +// +// } } -- Gitblit v1.9.1