From 1c20c8231980a8d4b91688ff8641a06d3b2f68ab Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期二, 14 十月 2025 16:34:22 +0800 Subject: [PATCH] 改bug --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java | 513 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 443 insertions(+), 70 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java index 6179758..7426367 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/InoutRecordServiceImpl.java @@ -1,8 +1,19 @@ package com.doumee.service.business.impl; +import com.doumee.core.annotation.excel.ExcelExporter; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.CategoryMapper; import com.doumee.dao.business.InoutRecordMapper; +import com.doumee.dao.business.dto.InParkDataDTO; +import com.doumee.dao.business.model.Category; import com.doumee.dao.business.model.InoutRecord; +import com.doumee.dao.business.model.Member; +import com.doumee.dao.business.vo.GeneralDataVO; +import com.doumee.dao.business.vo.InParkUserDataVO; import com.doumee.service.business.InoutRecordService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -10,11 +21,26 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import org.apache.commons.lang.StringUtils; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.nio.charset.Charset; +import java.text.DecimalFormat; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; +import java.util.*; +import java.util.stream.Collectors; /** * 鍑哄叆鍦轰汉娆¤溅娆℃瘡鏃ョ粺璁¤〃Service瀹炵幇 @@ -26,6 +52,9 @@ @Autowired private InoutRecordMapper inoutRecordMapper; + + @Autowired + private CategoryMapper categoryMapper; @Override public Integer create(InoutRecord inoutRecord) { @@ -87,76 +116,27 @@ @Override public PageData<InoutRecord> findPage(PageWrap<InoutRecord> pageWrap) { IPage<InoutRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); - QueryWrapper<InoutRecord> queryWrapper = new QueryWrapper<>(); + MPJLambdaWrapper<InoutRecord> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); - if (pageWrap.getModel().getId() != null) { - queryWrapper.lambda().eq(InoutRecord::getId, pageWrap.getModel().getId()); - } - if (pageWrap.getModel().getCreator() != null) { - queryWrapper.lambda().eq(InoutRecord::getCreator, pageWrap.getModel().getCreator()); - } - if (pageWrap.getModel().getCreateDate() != null) { - queryWrapper.lambda().ge(InoutRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); - queryWrapper.lambda().le(InoutRecord::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); - } - if (pageWrap.getModel().getEditor() != null) { - queryWrapper.lambda().eq(InoutRecord::getEditor, pageWrap.getModel().getEditor()); - } - if (pageWrap.getModel().getEditDate() != null) { - queryWrapper.lambda().ge(InoutRecord::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); - queryWrapper.lambda().le(InoutRecord::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); - } - if (pageWrap.getModel().getIsdeleted() != null) { - queryWrapper.lambda().eq(InoutRecord::getIsdeleted, pageWrap.getModel().getIsdeleted()); - } - if (pageWrap.getModel().getRemark() != null) { - queryWrapper.lambda().eq(InoutRecord::getRemark, pageWrap.getModel().getRemark()); - } - if (pageWrap.getModel().getType() != null) { - queryWrapper.lambda().eq(InoutRecord::getType, pageWrap.getModel().getType()); - } - if (pageWrap.getModel().getHkEventId() != null) { - queryWrapper.lambda().eq(InoutRecord::getHkEventId, pageWrap.getModel().getHkEventId()); - } - if (pageWrap.getModel().getHkId() != null) { - queryWrapper.lambda().eq(InoutRecord::getHkId, pageWrap.getModel().getHkId()); - } - if (pageWrap.getModel().getMemberId() != null) { - queryWrapper.lambda().eq(InoutRecord::getMemberId, pageWrap.getModel().getMemberId()); - } - if (pageWrap.getModel().getCarId() != null) { - queryWrapper.lambda().eq(InoutRecord::getCarId, pageWrap.getModel().getCarId()); - } - if (pageWrap.getModel().getCategoryId() != null) { - queryWrapper.lambda().eq(InoutRecord::getCategoryId, pageWrap.getModel().getCategoryId()); - } - if (pageWrap.getModel().getCategoryName() != null) { - queryWrapper.lambda().eq(InoutRecord::getCategoryName, pageWrap.getModel().getCategoryName()); - } - if (pageWrap.getModel().getCarBizType() != null) { - queryWrapper.lambda().eq(InoutRecord::getCarBizType, pageWrap.getModel().getCarBizType()); - } - if (pageWrap.getModel().getMemberType() != null) { - queryWrapper.lambda().eq(InoutRecord::getMemberType, pageWrap.getModel().getMemberType()); - } - if (pageWrap.getModel().getMemberName() != null) { - queryWrapper.lambda().eq(InoutRecord::getMemberName, pageWrap.getModel().getMemberName()); - } - if (pageWrap.getModel().getCarCode() != null) { - queryWrapper.lambda().eq(InoutRecord::getCarCode, pageWrap.getModel().getCarCode()); - } - if (pageWrap.getModel().getObjType() != null) { - queryWrapper.lambda().eq(InoutRecord::getObjType, pageWrap.getModel().getObjType()); - } - if (pageWrap.getModel().getObjId() != null) { - queryWrapper.lambda().eq(InoutRecord::getObjId, pageWrap.getModel().getObjId()); - } - if (pageWrap.getModel().getInOrOut() != null) { - queryWrapper.lambda().eq(InoutRecord::getInOrOut, pageWrap.getModel().getInOrOut()); - } - if (pageWrap.getModel().getDeviceName() != null) { - queryWrapper.lambda().eq(InoutRecord::getDeviceName, pageWrap.getModel().getDeviceName()); - } + InoutRecord model = pageWrap.getModel(); + queryWrapper.selectAll(InoutRecord.class) + .eq(InoutRecord::getIsdeleted,Constants.ZERO) +// .eq(Objects.nonNull(model.getType()),InoutRecord::getType, model.getType()) + .isNotNull(Objects.nonNull(model.getType())&&Constants.equalsInteger(model.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Objects.nonNull(model.getType())&&Constants.equalsInteger(model.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .eq(Objects.nonNull(model.getInOrOut()),InoutRecord::getInOrOut, model.getInOrOut()) + .eq(Objects.nonNull(model.getObjType()),InoutRecord::getObjType, model.getObjType()) + .eq(Objects.nonNull(model.getCarBizType()),InoutRecord::getCarBizType, model.getCarBizType()) + .eq(Objects.nonNull(model.getMemberType()),InoutRecord::getMemberType, model.getMemberType()) + .ge(Objects.nonNull(model.getStartDate()),InoutRecord::getCreateDate, Utils.Date.getStart(model.getStartDate())) + .le(Objects.nonNull(model.getEndDate()),InoutRecord::getCreateDate, Utils.Date.getEnd(model.getEndDate())) + .and(StringUtils.isNotBlank(model.getCategoryName()),i->i.like(InoutRecord::getCategoryName,model.getCategoryName()).or().like(InoutRecord::getCategoryParentName,model.getCategoryName())) + .and(StringUtils.isNotBlank(model.getMemberName()),i->i.like(InoutRecord::getMemberName,model.getMemberName()).or().like(InoutRecord::getMemberPhone,model.getMemberName())) + .and(StringUtils.isNotBlank(model.getCarCode()),i->i.like(InoutRecord::getCarCode,model.getCarCode()).or().like(InoutRecord::getRemark,model.getCarCode())) + .like(StringUtils.isNotBlank(model.getCompanyName()),InoutRecord::getCompanyName,model.getCompanyName()) + .like(StringUtils.isNotBlank(model.getDeviceName()),InoutRecord::getDeviceName,model.getDeviceName()) + .orderByDesc(InoutRecord::getId) + ; for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); @@ -172,4 +152,397 @@ QueryWrapper<InoutRecord> wrapper = new QueryWrapper<>(inoutRecord); return inoutRecordMapper.selectCount(wrapper); } + + + //浜哄憳鍒嗙被 鍗曠嫭澶勭悊浜哄憳鏁版嵁 0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴鍛樺伐 3杞﹁締淇℃伅 4鐩稿叧鏂逛汉鍛� 5璐ц繍鍙告満 + private static String[] userTypeList = new String[]{"","鏅�氳瀹�","鍐呴儴浜哄憳","","鐩稿叧鏂逛汉鍛�","璐ц繍鍙告満"}; + + + /** + * 鏌ヨ鍩虹鏁版嵁 + * @return + */ + @Override + public InParkUserDataVO getInParkUserData(InParkDataDTO inParkDataDTO){ + if(Objects.isNull(inParkDataDTO) + || Objects.isNull(inParkDataDTO.getType()) + || Objects.isNull(inParkDataDTO.getIsGroupBy()) + || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) )) + || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) )) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + //鏌ヨ鏈懆鐨勫紑濮嬫棩鏈熷拰缁撴潫鏃ユ湡 + Long weekStart = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); + InParkUserDataVO inParkUserDataVO = new InParkUserDataVO(); + List<InoutRecord> yearList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>() + .selectAll(InoutRecord.class) + .eq(InoutRecord::getIsdeleted,Constants.ZERO) + .eq(InoutRecord::getInOrOut,Constants.ZERO) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .apply(" ( DATE_FORMAT(CREATE_DATE, '%Y') = DATE_FORMAT(now(), '%Y') ) ") + .orderByAsc(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarBizType) + .orderByAsc(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberType) + ); + List<InoutRecord> monthList = yearList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(DateUtil.formatDate(new Date(),"yyyy-MM"))).collect(Collectors.toList()); + List<InoutRecord> weekList = yearList.stream().filter(i->i.getCreateDate().getTime()>=weekStart).collect(Collectors.toList()); + List<InoutRecord> todayList = weekList.stream().filter(i-> DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.formatDate(new Date(),"yyyy-MM-dd"))).collect(Collectors.toList()); + List<InoutRecord> yesterdayList = yearList.stream().filter(i-> DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(DateUtil.getBeforDay(new Date(),1))).collect(Collectors.toList()); + + if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO)){ + inParkUserDataVO.setYearTotal(yearList.size()); + inParkUserDataVO.setMonthTotal(monthList.size()); + inParkUserDataVO.setTodayTotal(todayList.size()); + inParkUserDataVO.setWeekTotal(weekList.size()); + inParkUserDataVO.setYesterdayTotal(yesterdayList.size()); + }else{ + yearList = this.getListByType(yearList,inParkDataDTO.getType()); + monthList = this.getListByType(monthList,inParkDataDTO.getType()); + weekList = this.getListByType(weekList,inParkDataDTO.getType()); + todayList = this.getListByType(todayList,inParkDataDTO.getType()); + yesterdayList = this.getListByType(yesterdayList,inParkDataDTO.getType()); + inParkUserDataVO.setYearTotal(yearList.size()); + inParkUserDataVO.setMonthTotal(monthList.size()); + inParkUserDataVO.setTodayTotal(todayList.size()); + inParkUserDataVO.setWeekTotal(weekList.size()); + inParkUserDataVO.setYesterdayTotal(yesterdayList.size()); + } + //澶勭悊骞村害鎶樼嚎鍥炬暟鎹� + List<GeneralDataVO> cumulativeDataList = new ArrayList<>(); + for (int i = 1; i <=12 ; i++) { + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(Integer.toString(i)); + generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(Integer.valueOf(generalDataVO.getName()),Integer.valueOf(DateUtil.formatDate(j.getCreateDate(),"MM")))).collect(Collectors.toList()).size()); + generalDataVO.setName(generalDataVO.getName()+"鏈�"); + cumulativeDataList.add(generalDataVO); + } + inParkUserDataVO.setCumulativeDataList(cumulativeDataList); + //澶勭悊鍒嗙被鏁版嵁 + List<GeneralDataVO> yearSortList = new ArrayList<>(); + if(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){ + for (int i = 0; i < userTypeList.length; i++) { + if(StringUtils.isBlank(userTypeList[i])){ + continue; + } + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(userTypeList[i]); + int index = i; + generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(j.getMemberType(), index)).collect(Collectors.toList()).size()); + yearSortList.add(generalDataVO); + } + }else{ + List<String> categoryNameList = yearList.stream().filter(i-> StringUtils.isNotBlank(i.getCategoryName())).map(i->i.getCategoryName()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryNameList)){ + Set<String> setList = new HashSet<>(categoryNameList); + for (String categoryName:setList) { + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(categoryName); + generalDataVO.setTotal(yearList.stream().filter(j->StringUtils.isNotBlank(j.getCategoryName())&&j.getCategoryName().equals(categoryName)).collect(Collectors.toList()).size()); + yearSortList.add(generalDataVO); + } + } + } + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(yearSortList)){ + Collections.sort(yearSortList, new Comparator<GeneralDataVO>() { + @Override + public int compare(GeneralDataVO o1, GeneralDataVO o2) { + // 杩斿洖鍊间负int绫诲瀷锛屽ぇ浜�0琛ㄧず姝e簭锛屽皬浜�0琛ㄧず閫嗗簭 + return o2.getTotal() - o1.getTotal(); + } + }); + inParkUserDataVO.setYearSortList(yearSortList); + } + return inParkUserDataVO; + } + + + /** + * 鏌ヨ鍗犳瘮鏁版嵁 + * @return + */ + @Override + public List<GeneralDataVO> getRataList(InParkDataDTO inParkDataDTO){ + if(Objects.isNull(inParkDataDTO) + || Objects.isNull(inParkDataDTO.getType()) + || Objects.isNull(inParkDataDTO.getIsGroupBy()) + || StringUtils.isBlank(inParkDataDTO.getDateStr()) + || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) )) + || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) )) + || !( Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4) || Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7) ) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<GeneralDataVO> rataList = new ArrayList<>(); + List<InoutRecord> yearList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>() + .selectAll(InoutRecord.class) + .eq(InoutRecord::getIsdeleted,Constants.ZERO) + .eq(InoutRecord::getInOrOut,Constants.ZERO) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') = '"+inParkDataDTO.getDateStr()+"' ) ") + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') = '"+inParkDataDTO.getDateStr()+"' ) ") + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(yearList)){ + return rataList; + } + if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){ + yearList = this.getListByType(yearList,inParkDataDTO.getType()); + } + + if(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){ + for (int i = 0; i < userTypeList.length; i++) { + if(StringUtils.isBlank(userTypeList[i])){ + continue; + } + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(userTypeList[i]); + int index = i; + generalDataVO.setTotal(yearList.stream().filter(j->Constants.equalsInteger(j.getMemberType(), index)).collect(Collectors.toList()).size()); + generalDataVO.setRata(new BigDecimal(generalDataVO.getTotal().toString()).divide(new BigDecimal(yearList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))); + rataList.add(generalDataVO); + } + }else{ + List<String> categoryNameList = yearList.stream().filter(i-> StringUtils.isNotBlank(i.getCategoryParentName())) + .map(i->i.getCategoryParentName()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryNameList)){ + Set<String> setList = new HashSet<>(categoryNameList); + for (String categoryName:setList) { + GeneralDataVO generalDataVO = new GeneralDataVO(); + generalDataVO.setName(categoryName); + generalDataVO.setTotal(yearList.stream().filter(j->StringUtils.isNotBlank(j.getCategoryParentName())&&j.getCategoryName().equals(categoryName)).collect(Collectors.toList()).size()); + generalDataVO.setRata(new BigDecimal(generalDataVO.getTotal().toString()).divide(new BigDecimal(yearList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))); + rataList.add(generalDataVO); + } + } + } + return rataList; + } + + @Override + public List<List<String>> getReportList(InParkDataDTO inParkDataDTO){ + if(Objects.isNull(inParkDataDTO) + || Objects.isNull(inParkDataDTO.getType()) + || Objects.isNull(inParkDataDTO.getIsGroupBy()) + || StringUtils.isBlank(inParkDataDTO.getDateStr()) + || (Objects.nonNull(inParkDataDTO.getType())&& !(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE) )) + || (Objects.nonNull(inParkDataDTO.getIsGroupBy())&& !(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ZERO) || Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE) )) + || !( Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4) || Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7) ) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<InoutRecord> allList = new ArrayList<>(); + MPJLambdaWrapper mpjLambdaWrapper = new MPJLambdaWrapper<InoutRecord>().eq(InoutRecord::getIsdeleted,Constants.ZERO) + .eq(InoutRecord::getInOrOut,Constants.ZERO) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) + .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') = '"+inParkDataDTO.getDateStr()+"' ) ") + .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') = '"+inParkDataDTO.getDateStr()+"' ) "); + if(Constants.equalsInteger(inParkDataDTO.getIsGroupBy(),Constants.ONE)){ + mpjLambdaWrapper.groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO), + "car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m')") + .groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO), + "car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d')") + .groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE), + "member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m')") + .groupBy(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE), + "member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d')"); + if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){ + mpjLambdaWrapper.select("car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr "); + }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){ + mpjLambdaWrapper.select("car_code,category_name,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr "); + }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){ + + mpjLambdaWrapper.select("member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr"); + }else{ + mpjLambdaWrapper.select("member_phone,MEMBER_TYPE,DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr "); + } + + }else{ + mpjLambdaWrapper.selectAll(InoutRecord.class); + if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){ + mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr "); + }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)){ + mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr "); + }else if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)&&Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE)){ + + mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m') as createDateStr"); + }else{ + mpjLambdaWrapper.select("DATE_FORMAT(CREATE_DATE, '%Y-%m-%d') as createDateStr "); + } +// allList = inoutRecordMapper.selectJoinList(InoutRecord.class,new MPJLambdaWrapper<InoutRecord>() +// .selectAll(InoutRecord.class) +// .eq(InoutRecord::getIsdeleted,Constants.ZERO) +// .eq(InoutRecord::getInOrOut,Constants.ZERO) +// .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO),InoutRecord::getCarCode) +// .isNotNull(Constants.equalsInteger(inParkDataDTO.getType(),Constants.ONE),InoutRecord::getMemberPhone) +// .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)," ( DATE_FORMAT(CREATE_DATE, '%Y') = '"+inParkDataDTO.getDateStr()+"' ) ") +// .apply(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),7)," ( DATE_FORMAT(CREATE_DATE, '%Y-%m') = '"+inParkDataDTO.getDateStr()+"' ) ") +// ); + } + allList = inoutRecordMapper.selectJoinList(InoutRecord.class,mpjLambdaWrapper); + + List<List<String>> resultList = new ArrayList<>(); + if(CollectionUtils.isEmpty(allList)){ + return resultList; + } + + List<String> dateList = new ArrayList<>(); + //骞翠唤 + if(Constants.equalsInteger(inParkDataDTO.getDateStr().length(),4)){ + Integer maxMonth = 12; + if(Constants.equalsInteger(DateUtil.getNowYearNum(),Integer.valueOf(inParkDataDTO.getDateStr()))){ + maxMonth = DateUtil.getNowMonthNum(); + } + for (int i = maxMonth; i >0 ; i--) { + dateList.add(DateUtil.getNowYearNum()+"-"+ StringUtils.leftPad(i+"",2,"0")); + } + }else { + //鏃ユ湡 + Integer year = Integer.valueOf(inParkDataDTO.getDateStr().substring(0,4)); + Integer month = Integer.valueOf(inParkDataDTO.getDateStr().substring(5,7)); + Integer today = DateUtil.getNowDayNum(); + YearMonth yearMonth = YearMonth.of(year, month); + // 鑾峰彇璇ユ湀鐨勬渶鍚庝竴澶� + LocalDate lastDayDate = yearMonth.atEndOfMonth(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd"); + Integer lastDay = Integer.valueOf(lastDayDate.format(formatter)); + if(Constants.equalsInteger(year,DateUtil.getNowYearNum()) && Constants.equalsInteger(month,DateUtil.getNowMonthNum())){ + if(today < lastDay){ + lastDay = today; + } + } + for (int i = lastDay; i > 0 ; i--) { + dateList.add(year + "-" + StringUtils.leftPad(month.toString(),2,"0") + "-" + StringUtils.leftPad(Integer.toString(i),2,"0")); + } + } + return this.dealResultData(allList,dateList,inParkDataDTO.getType(),inParkDataDTO.getDateStr()); + } + + + public List<List<String>> dealResultData(List<InoutRecord> allList,List<String> dataList ,Integer type,String dateStr){ + List<List<String>> resultList = new ArrayList<>(); + List<String> totalString = new ArrayList<>(); + totalString.add("鏁版嵁鏃ユ湡"); + if(Constants.equalsInteger(type,Constants.ZERO)){ + List<String> categoryNameList = allList.stream().filter(j-> StringUtils.isNotBlank(j.getCategoryName())).map(j->j.getCategoryName()).collect(Collectors.toList()); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(categoryNameList)){ + return resultList; + } + Set<String> setList = new HashSet<>(categoryNameList); + for (String categoryName:setList) { + totalString.add(categoryName); + } + totalString.add("鍚堣"); + resultList.add(totalString); + for (String str:dataList) { + Integer total = 0; + List<String> dataChildList = new ArrayList<>(); + dataChildList.add(str); + for (String categoryName:setList) { + if(Constants.equalsInteger(dateStr.length(),4)){ + Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName()) + && i.getCreateDateStr().equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + }else if(Constants.equalsInteger(dateStr.length(),7)){ + Integer childNum = allList.stream().filter(i->categoryName.equals(i.getCategoryName()) + &&i.getCreateDateStr().equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + } + } + dataChildList.add(Integer.toString(total)); + resultList.add(dataChildList); + } + }else{ + for (int j = 0; j < userTypeList.length; j++) { + if(StringUtils.isBlank(userTypeList[j])){ + continue; + } + totalString.add(userTypeList[j]); + } + totalString.add("鍚堣"); + resultList.add(totalString); + for (String str:dataList) { + Integer total = 0; + List<String> dataChildList = new ArrayList<>(); + dataChildList.add(str); + for (int i = 0; i < userTypeList.length; i++) { + String typeName = userTypeList[i]; + if(StringUtils.isBlank(typeName)){ + continue; + } + int finalI = i; + if(Constants.equalsInteger(dateStr.length(),4)){ + Integer childNum = allList.stream().filter(j->Constants.equalsInteger(j.getMemberType(), finalI) + && j.getCreateDateStr().equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + }else if(Constants.equalsInteger(dateStr.length(),7)){ + Integer childNum = allList.stream().filter(j->Constants.equalsInteger(j.getMemberType(), finalI) + &&j.getCreateDateStr().equals(str)).collect(Collectors.toList()).size(); + dataChildList.add( + Integer.toString(childNum) + ); + total = total + childNum; + } + } + dataChildList.add(Integer.toString(total)); + resultList.add(dataChildList); + } + } + return resultList; + } + + + public List<InoutRecord> getListByType(List<InoutRecord> list,Integer type){ + return Constants.equalsInteger(type,Constants.ONE)?this.getDataByMemberPhoneSize(list):this.getDataByCarCodeSize(list); + } + + + public List<InoutRecord> getDataByMemberPhoneSize(List<InoutRecord> list){ + Map<String, InoutRecord> uniqueByMemberPhone = list.stream() + .collect(Collectors.toMap( + InoutRecord::getMemberPhone, + person -> person, + (existing, replacement) -> existing + )); + List<InoutRecord> uniqueList = new ArrayList<>(uniqueByMemberPhone.values()); + return uniqueList; + } + + public List<InoutRecord> getDataByCarCodeSize(List<InoutRecord> list){ + Map<String, InoutRecord> uniqueByCarCode = list.stream() + .collect(Collectors.toMap( + InoutRecord::getCarCode, + person -> person, + (existing, replacement) -> existing + )); + List<InoutRecord> uniqueList = new ArrayList<>(uniqueByCarCode.values()); + return uniqueList; + } + + + @Override + public void excel(InParkDataDTO inParkDataDTO, HttpServletResponse response){ + List<List<String>> data = this.getReportList(inParkDataDTO); + try { + String fileName = Constants.equalsInteger(inParkDataDTO.getType(),Constants.ZERO)?"鍏ュ洯杞﹁締缁熻琛╛":"鍏ュ洯浜哄憳缁熻琛╛"+System.currentTimeMillis(); + String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx"; + response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); + response.setContentType("application/octet-stream"); + response.setHeader("eva-opera-type", "download"); + response.setHeader("eva-download-filename", encodeFileName); + ExcelExporter.exportList(data, fileName, response.getOutputStream()); + } catch (IOException e) { + throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); + } + } } -- Gitblit v1.9.3