| | |
| | | } |
| | | } |
| | | |
| | | sumGeneratorClient.setGeneratorTime(DateUtils.stringToLocalDate(query.getStartTime()) + " ~ " + DateUtils.stringToLocalDate(query.getEndTime())); |
| | | sumGeneratorClient = orderMealService.sumExport(query); |
| | | sumGeneratorClient.setGeneratorTime(DateUtils.stringToLocalDateTime(query.getStartTime()).toLocalDate() + " ~ " + DateUtils.stringToLocalDateTime(query.getEndTime()).toLocalDate()); |
| | | TShop shop = shopService.getById(objectId); |
| | | if(Objects.nonNull(shop)){ |
| | | sumGeneratorClient.setShopName(shop.getShopName()); |
| | | } |
| | | sumGeneratorClient = orderSaleService.sumExport(query); |
| | | result.put("sumGeneratorClient",sumGeneratorClient); |
| | | //1.获取excel模板 |
| | | ClassPathResource classPathResource = new ClassPathResource("template/营业统计报表.xls"); |
| | |
| | | // 过滤请求 |
| | | .authorizeRequests() |
| | | // 对于登录login 注册register 验证码captchaImage 允许匿名访问 |
| | | .antMatchers("/getPrivacyAgreement/{agreementType}","/applet/queryProtocolConfigByType","/applet/login","/reLogin","/platformLogin","/login","/applet/queryProtocolConfigByType", "/register","/applet/getCode","/applet/loginCode","/applet/changepwd", "/captchaImage","/getCode","/loginCode","/operations/getBySingleNum/**", |
| | | .antMatchers("/getPrivacyAgreement/{agreementType}","/applet/queryProtocolConfigByType","/applet/login","/reLogin", |
| | | "/platformLogin","/login","/applet/queryProtocolConfigByType", "/register","/applet/getCode","/applet/loginCode","/applet/changepwd", |
| | | "/captchaImage","/getCode","/loginCode","/operations/getBySingleNum/**", |
| | | "/user/getUserInfoByNumber/**").permitAll() |
| | | // 静态资源,可匿名访问 |
| | | .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() |
| | |
| | | @Excel(name = "日期") |
| | | private String dayTime; |
| | | @Excel(name = "实收金额") |
| | | private BigDecimal actualAmount; |
| | | private BigDecimal actualAmount = BigDecimal.ZERO; |
| | | @Excel(name = "帐单数") |
| | | private Integer orderCount; |
| | | private Integer orderCount = 0; |
| | | @Excel(name = "单均消费") |
| | | private BigDecimal singleAmount; |
| | | private BigDecimal singleAmount = BigDecimal.ZERO; |
| | | @Excel(name = "消费人数") |
| | | private Integer perCount; |
| | | private Integer perCount = 0; |
| | | @Excel(name = "人均消费") |
| | | private BigDecimal perAmount; |
| | | private BigDecimal perAmount = BigDecimal.ZERO; |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | | import com.ruoyi.system.domain.TOrderMeal; |
| | | import com.ruoyi.system.export.SumGeneratorDetailClient; |
| | | import com.ruoyi.system.query.*; |
| | | import com.ruoyi.system.vo.*; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | |
| | | Map<String, Double> getDataGeneratorMealDetailOrderMoney(@Param("query")TDataGeneratorMealQuery query); |
| | | |
| | | /** |
| | | * 导出汇总 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | List<SumGeneratorDetailClient> sumExport(@Param("query") ProfitDetailsQuery query); |
| | | } |
| | |
| | | import com.ruoyi.system.dto.CheckoutDTO; |
| | | import com.ruoyi.system.dto.OrderMealGeneratorDTO; |
| | | import com.ruoyi.system.dto.TOrderMealDTO; |
| | | import com.ruoyi.system.export.SumGeneratorClient; |
| | | import com.ruoyi.system.query.*; |
| | | import com.ruoyi.system.vo.*; |
| | | |
| | |
| | | void deleteByShopId(Long shopId); |
| | | |
| | | Map<String, Double> getDataGeneratorMealDetailOrderMoney(TDataGeneratorMealQuery query); |
| | | |
| | | /** |
| | | * 汇总导出 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | SumGeneratorClient sumExport(ProfitDetailsQuery query); |
| | | } |
| | |
| | | |
| | | Map<String, Double> getDataGeneratorSaleDetailOrderMoney(TDataGeneratorSaleQuery query); |
| | | |
| | | /** |
| | | * 汇总导出 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | SumGeneratorClient sumExport(ProfitDetailsQuery query); |
| | | } |
| | |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.system.domain.*; |
| | | import com.ruoyi.system.dto.*; |
| | | import com.ruoyi.system.export.SumGeneratorClient; |
| | | import com.ruoyi.system.export.SumGeneratorDetailClient; |
| | | import com.ruoyi.system.mapper.TOrderMealGoodsMapper; |
| | | import com.ruoyi.system.mapper.TOrderMealMapper; |
| | | import com.ruoyi.system.query.*; |
| | |
| | | return this.baseMapper.getDataGeneratorMealDetailOrderMoney(query); |
| | | } |
| | | |
| | | @Override |
| | | public SumGeneratorClient sumExport(ProfitDetailsQuery query) { |
| | | List<SumGeneratorDetailClient> sumGeneratorDetailClient = this.baseMapper.sumExport(query); |
| | | |
| | | for (SumGeneratorDetailClient generatorDetailClient : sumGeneratorDetailClient) { |
| | | generatorDetailClient.setSingleAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getOrderCount()),2,BigDecimal.ROUND_DOWN)); |
| | | generatorDetailClient.setPerAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getPerCount()),2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | |
| | | SumGeneratorClient sumGeneratorClient = new SumGeneratorClient(); |
| | | if(!CollectionUtils.isEmpty(sumGeneratorDetailClient)){ |
| | | sumGeneratorClient.setActualAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setOrderCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getOrderCount).reduce(Integer::sum).get()); |
| | | sumGeneratorClient.setSingleAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getSingleAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setPerCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerCount).reduce(Integer::sum).get()); |
| | | sumGeneratorClient.setPerAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerAmount).reduce(BigDecimal::add).get()); |
| | | |
| | | sumGeneratorClient.setAllMoney(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setSingleAvgAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getPerCountSum()),2,BigDecimal.ROUND_DOWN)); |
| | | sumGeneratorClient.setPerCapitaAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getOrderCountSum()),2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | sumGeneratorClient.setOrderStatistics(sumGeneratorDetailClient); |
| | | |
| | | |
| | | return sumGeneratorClient; |
| | | } |
| | | |
| | | } |
| | |
| | | return this.baseMapper.getDataGeneratorSaleDetailOrderMoney(query); |
| | | } |
| | | |
| | | @Override |
| | | public SumGeneratorClient sumExport(ProfitDetailsQuery query) { |
| | | List<SumGeneratorDetailClient> sumGeneratorDetailClient = this.baseMapper.sumExport(query); |
| | | |
| | | for (SumGeneratorDetailClient generatorDetailClient : sumGeneratorDetailClient) { |
| | | generatorDetailClient.setSingleAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getOrderCount()),2,BigDecimal.ROUND_DOWN)); |
| | | generatorDetailClient.setPerAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getPerCount()),2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | |
| | | SumGeneratorClient sumGeneratorClient = new SumGeneratorClient(); |
| | | sumGeneratorClient.setActualAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setOrderCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getOrderCount).reduce(Integer::sum).get()); |
| | | sumGeneratorClient.setSingleAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getSingleAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setPerCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerCount).reduce(Integer::sum).get()); |
| | | sumGeneratorClient.setPerAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerAmount).reduce(BigDecimal::add).get()); |
| | | |
| | | sumGeneratorClient.setAllMoney(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setSingleAvgAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getPerCountSum()))); |
| | | sumGeneratorClient.setPerCapitaAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getOrderCountSum()))); |
| | | |
| | | sumGeneratorClient.setOrderStatistics(sumGeneratorDetailClient); |
| | | |
| | | return sumGeneratorClient; |
| | | } |
| | | } |
| | |
| | | AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | </where> |
| | | </select> |
| | | |
| | | <select id="sumExport" resultType="com.ruoyi.system.export.SumGeneratorDetailClient"> |
| | | select |
| | | DATE_FORMAT(mealTime, '%Y-%m-%d') AS dayTime, |
| | | IFNULL(SUM(payMoney),0) AS actualAmount, |
| | | IFNULL(COUNT(id),0) AS orderCount, |
| | | IFNULL(SUM(mealPerson),0) AS perCount |
| | | from t_order_meal |
| | | <where> |
| | | <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> |
| | | AND (mealTime BETWEEN #{query.startTime} AND #{query.endTime}) |
| | | </if> |
| | | AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | </where> |
| | | GROUP BY DATE_FORMAT(mealTime, '%Y-%m-%d') |
| | | </select> |
| | | </mapper> |
| | |
| | | AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | </where> |
| | | </select> |
| | | <select id="sumExport" resultType="com.ruoyi.system.export.SumGeneratorDetailClient"> |
| | | select |
| | | DATE_FORMAT(mealTime, '%Y-%m-%d') AS dayTime, |
| | | IFNULL(SUM(payMoney),0) AS actualAmount, |
| | | IFNULL(COUNT(id),0) AS orderCount, |
| | | IFNULL(SUM(mealPerson),0) AS perCount |
| | | from t_order_sale |
| | | <where> |
| | | <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> |
| | | AND (orderTime BETWEEN #{query.startTime} AND #{query.endTime}) |
| | | </if> |
| | | AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} |
| | | </where> |
| | | GROUP BY DATE_FORMAT(mealTime, '%Y-%m-%d') |
| | | </select> |
| | | |
| | | </mapper> |