package cn.exrick.xboot.your.serviceimpl; import cn.exrick.xboot.your.entity.OrderStatusCount; import cn.exrick.xboot.your.entity.QueryRequest; import cn.exrick.xboot.your.mapper.SignCountMapper; import cn.exrick.xboot.your.entity.SignCount; import cn.exrick.xboot.your.service.ISignCountService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; 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.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 状态统计表接口实现 * @author whj */ @Slf4j @Service @Transactional public class ISignCountServiceImpl extends ServiceImpl implements ISignCountService { @Autowired private SignCountMapper signCountMapper; @Override public IPage signCounts(OrderStatusCount orderStatusCount,QueryRequest queryRequest) { Page page = new Page<>(); if (org.apache.commons.lang3.StringUtils.isNotBlank(queryRequest.getPageSize() + "") && (queryRequest.getPageSize() != 0)) { page.setCurrent(queryRequest.getPageNum()); page.setSize(queryRequest.getPageSize()); } else { page.setCurrent(0); page.setSize(-1); } if(StringUtil.isNotBlank(orderStatusCount.getStatisticalType())){ IPage orderStatusCountIPage = this.signCountMapper.signCount(orderStatusCount, page); List records = orderStatusCountIPage.getRecords(); List recordsLast = new ArrayList<>(); Map> collect = records.stream().collect(Collectors.groupingBy(OrderStatusCount::getCarName)); for (Map.Entry> stringListEntry : collect.entrySet()) { List recordsNew = new ArrayList<>(); for (OrderStatusCount statusCount : stringListEntry.getValue()) { statusCount.setSendDate(statusCount.getSendMonth()); recordsNew.add(statusCount); } for (Map.Entry> listEntry : recordsNew.stream().collect(Collectors.groupingBy(OrderStatusCount::getBatch)).entrySet()) { for (Map.Entry> listEntry1 : listEntry.getValue().stream().collect(Collectors.groupingBy(OrderStatusCount::getSendMonth)).entrySet()) { if(listEntry1.getValue().size() > 0){ List value = listEntry1.getValue(); Integer amount = 0; Integer notSignCount = 0; Integer abnormalSign = 0; Integer signCount= 0; OrderStatusCount orderStatusCount1 = value.get(0); for (OrderStatusCount statusCount : value) { amount += Integer.parseInt(statusCount.getAmount()); notSignCount += Integer.parseInt(statusCount.getNotSignCount()); if(statusCount.getAbnormalSign() != null){ abnormalSign += Integer.parseInt(statusCount.getAbnormalSign()); }else { abnormalSign = 0; } signCount += Integer.parseInt(statusCount.getSignCount()); } DecimalFormat df = new DecimalFormat("0.00"); String maerialRatio = df.format((float)signCount/amount); double v = Double.parseDouble(maerialRatio)*100; orderStatusCount1.setProportion(v+"%"); orderStatusCount1.setAmount(amount+""); orderStatusCount1.setNotSignCount(notSignCount+""); orderStatusCount1.setAbnormalSign(abnormalSign+""); orderStatusCount1.setSignCount(signCount+""); value.clear(); value.add(orderStatusCount1); listEntry1.setValue(value); recordsLast.add(orderStatusCount1); } } } stringListEntry.setValue(recordsNew); } orderStatusCountIPage.setRecords(recordsLast); return orderStatusCountIPage; } return this.signCountMapper.signCount(orderStatusCount,page); } @Override public IPage signCountsNew(OrderStatusCount orderStatusCount, QueryRequest queryRequest) { Page page = new Page<>(); if (org.apache.commons.lang3.StringUtils.isNotBlank(queryRequest.getPageSize() + "") && (queryRequest.getPageSize() != 0)) { page.setCurrent(queryRequest.getPageNum()); page.setSize(queryRequest.getPageSize()); } else { page.setCurrent(0); page.setSize(-1); } IPage orderStatusCountIPage = this.signCountMapper.signCountNew(orderStatusCount, page); List recordsAll = this.signCountMapper.signCountNewTotal(orderStatusCount); List records = orderStatusCountIPage.getRecords(); for (int i=0;i recordsLast = new ArrayList<>(); orderStatusCountIPage.setRecords(records); return orderStatusCountIPage; } }