diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java index 92f32a6b..395b4899 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopUserController.java @@ -1,37 +1,19 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ package cn.ysk.cashier.controller.shop; +import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; import cn.ysk.cashier.pojo.shop.TbShopUser; import cn.ysk.cashier.service.shop.TbShopUserService; -import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; -import cn.ysk.cashier.vo.ShopUserInfoVo; -import com.alipay.api.domain.PageInfo; -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.springframework.data.domain.Pageable; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.*; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; + import javax.servlet.http.HttpServletResponse; +import java.io.IOException; /** * @website https://eladmin.vip diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index 039ea857..bdb1eef2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -99,6 +99,10 @@ public class TbOrderDetail implements Serializable { @ApiModelProperty(value = "打包费") private BigDecimal packAmount; + @Transient + @ApiModelProperty(value = "退单数量") + private Integer refundNumber; + public void copy(TbOrderDetail source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java index dc641c4e..9a8b7401 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java @@ -31,9 +31,12 @@ public interface TbOrderDetailRepository extends JpaRepository searchDetailByOrderId(@Param("orderId")Integer orderId); + @Query("SELECT cart FROM TbOrderDetail cart WHERE cart.orderId in :ids") + List searchDetailByOrderIds(@Param("ids")List ids); + @Query("SELECT new cn.ysk.cashier.vo.TbOrderSalesCountByDayVo(" + - "info.productName, info.productSkuName, cate.name, unit.name," + + "info.productName, info.productSkuName, cate.name, unit.name,info.price," + "SUM(CASE WHEN orders.orderType!='return' THEN info.num ELSE 0 END) as salesNum, " + "SUM(CASE WHEN orders.orderType='return' THEN info.num ELSE 0 END), " + "SUM(info.num), " + @@ -56,7 +59,7 @@ public interface TbOrderDetailRepository extends JpaRepository'return' GROUP BY pay_type" ,nativeQuery = true) List countByShopId(@Param("shopId") String shopId, @Param("startTime") Long startTime, @Param("endTime") Long endTime); + @Query("SELECT info FROM TbOrderInfo info WHERE info.source = :source AND info.shopId=:shopId") + List selTbOrdersBysource(@Param("source")Integer source,@Param("shopId") String shopId); + + @Query("SELECT count(1) FROM TbOrderInfo WHERE source = :source AND shopId=:shopId") int isRefund(@Param("source")Integer source,@Param("shopId") String shopId); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java index a543671f..d84f51c6 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java @@ -428,11 +428,12 @@ public class SummaryServiceImpl implements SummaryService { map.put("商品名称", all.getProductName()); map.put("单 位", all.getUnitName()); map.put("商品规格", StringUtils.isBlank(all.getProductSkuName()) ? "" : all.getProductSkuName()); + map.put("销 售 额", all.getSalesAmount()); map.put("销 量", all.getSalesNum()); - map.put("退单量", all.getRefNum()); - map.put("销售额", all.getSalesAmount()); - map.put("退单额", all.getRefAmount()); - map.put("总 量", all.getNum()); + map.put("单 价", all.getPrice()); + map.put("退 单 量", all.getRefNum()); + map.put("退 单 额", all.getRefAmount().compareTo(BigDecimal.ZERO)==0?all.getRefAmount():"-"+all.getRefAmount()); + map.put("总 量", all.getNum()-all.getRefNum()); list.add(map); } } @@ -464,8 +465,8 @@ public class SummaryServiceImpl implements SummaryService { list.add(refCount); TbOrderSalesCountByDayVo numCount = detailRepository.queryTbOrderSalesCount(Integer.valueOf(shopId), startTime, endTime); - TbOrderPayCountVo salesNum =new TbOrderPayCountVo("el-icon-goods","销售量","0",numCount.getSalesNum()); - TbOrderPayCountVo refNum =new TbOrderPayCountVo("el-icon-goods","销售量","0",numCount.getRefNum()); + TbOrderPayCountVo salesNum =new TbOrderPayCountVo("el-icon-goods","销售量","0",numCount.getSalesNum()-numCount.getRefNum()); + TbOrderPayCountVo refNum =new TbOrderPayCountVo("el-icon-goods","退单量","0",numCount.getRefNum()); list.add(salesNum); list.add(refNum); return list; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index aaa76e2e..74b45a39 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -78,7 +78,6 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { criteria.setOrderType(null); } } -// Page page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); Page page = tbOrderInfoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> { Predicate predicate = QueryHelp.getPredicate(root, criteria, criteriaBuilder); // 追加校验参数 status不为空 且 source不为空 不查询状态为 "refund" 的 @@ -91,16 +90,29 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { List orderInfoVoList = new ArrayList<>(); for (TbOrderInfo tbOrderInfo : page.getContent()) { TbOrderInfoVo orderInfoVo = new TbOrderInfoVo(); - List details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); BigDecimal refundAmount = BigDecimal.ZERO; - for (TbOrderDetail detail : details) { - if (tbOrderInfo.getStatus().equals("refund")) { - refundAmount = refundAmount.add(detail.getPriceAmount()); + List details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); + if (!tbOrderInfo.getOrderType().equals("return")) { + List tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId()); + Map map; + if (!CollectionUtils.isEmpty(tbOrderInfos)) { + List ids = tbOrderInfos.stream().map(TbOrderInfo::getId).collect(Collectors.toList()); + List refundOrderDetail = tbOrderDetailRepository.searchDetailByOrderIds(ids); + map = refundOrderDetail.stream().collect(Collectors.groupingBy(TbOrderDetail::getProductSkuId, Collectors.summingInt(TbOrderDetail::getNum))); + refundAmount = tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); } else { - if (detail.getStatus().equals("refund")) { - refundAmount = refundAmount.add(detail.getPriceAmount()); - } + map = new HashMap<>(); } + details.parallelStream().forEach(detail -> { + Integer refundNumber = map.get(detail.getProductSkuId()); + if (refundNumber != null) { + detail.setRefundNumber(refundNumber); + } + }); + }else { + details.parallelStream().forEach(detail -> { + detail.setRefundNumber(detail.getNum()); + }); } orderInfoVo.setDetailList(details); BeanUtils.copyProperties(tbOrderInfo, orderInfoVo); @@ -127,7 +139,9 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { } } List payCountVoList = tbOrderInfoRepository.queryTbOrderPayCount(criteria.getShopId(), start, end); + BigDecimal totalPayAmount = BigDecimal.ZERO; for (TbOrderPayCountVo payCount : payCountVoList) { + totalPayAmount = totalPayAmount.add(new BigDecimal(payCount.getPayAmount().toString())); if (StringUtils.isNotBlank(payCount.getPayType())) { TbShopPayType byPayType = payTypeRepository.findByPayType(payCount.getPayType(), criteria.getShopId()); if (byPayType != null) { @@ -143,10 +157,12 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { } TbOrderPayCountVo payRufund = tbOrderInfoRepository.queryTbOrderRefund(criteria.getShopId(), start, end); if (payRufund != null) { + totalPayAmount = totalPayAmount.subtract(new BigDecimal(payRufund.getPayAmount().toString())); payRufund.setPayType("退单"); payRufund.setIcon("https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240319/5741608662244b878762c61bb37c95c9.png"); result.add(payRufund); } + result.add(0, new TbOrderPayCountVo("https://cashier-oss.oss-cn-beijing.aliyuncs.com/upload/20240625/fa0e5b24884d4ac2a18973b3855e5309.png", "总金额", null, totalPayAmount)); return result; } @@ -189,28 +205,19 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { dto.setPayType(tbOrderInfo.getSendType()); break; } - }else { + } else { if (dto.getStatus().equals("refund")) { dto.setPayType("退单"); } } List details = tbOrderDetailRepository.searchDetailByOrderId(tbOrderInfo.getId()); dto.setIsRefund(0); - BigDecimal refundAmount = BigDecimal.ZERO; - for (TbOrderDetail detail : details) { - if (tbOrderInfo.getStatus().equals("refund")) { - refundAmount = refundAmount.add(detail.getPriceAmount()); - } else { - if (detail.getStatus().equals("refund")) { - refundAmount = refundAmount.add(detail.getPriceAmount()); - } - } - } - int refund = tbOrderInfoRepository.isRefund(id, tbOrderInfo.getShopId()); - if (refund > 0) { + dto.setRefundAmount(BigDecimal.ZERO); + List tbOrderInfos = tbOrderInfoRepository.selTbOrdersBysource(tbOrderInfo.getId(), tbOrderInfo.getShopId()); + if(!CollectionUtils.isEmpty(tbOrderInfos)){ dto.setIsRefund(1); + dto.setRefundAmount(tbOrderInfos.stream().map(TbOrderInfo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); } - dto.setRefundAmount(refundAmount); dto.setDetailList(details); return dto; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java index 15e41626..7480a530 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopUserServiceImpl.java @@ -1,26 +1,9 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ package cn.ysk.cashier.service.impl.shopimpl; import cn.ysk.cashier.dto.shop.TbShopUserDto; import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; import cn.ysk.cashier.mapper.shop.TbShopUserMapper; -import cn.ysk.cashier.mybatis.entity.TbUserStorage; import cn.ysk.cashier.mybatis.mapper.ShopUserMapper; -import cn.ysk.cashier.mybatis.mapper.TagProductDeptsMapper; import cn.ysk.cashier.pojo.shop.TbShopUser; import cn.ysk.cashier.repository.shop.TbShopUserRepository; import cn.ysk.cashier.service.shop.TbShopUserService; @@ -29,7 +12,6 @@ import cn.ysk.cashier.utils.PageUtil; import cn.ysk.cashier.utils.QueryHelp; import cn.ysk.cashier.utils.ValidationUtil; import cn.ysk.cashier.vo.ShopUserInfoVo; -import com.alipay.api.domain.PageInfo; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java index ab2fd2bd..efba8dd5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopUserService.java @@ -1,26 +1,8 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ package cn.ysk.cashier.service.shop; import cn.ysk.cashier.pojo.shop.TbShopUser; import cn.ysk.cashier.dto.shop.TbShopUserDto; import cn.ysk.cashier.dto.shop.TbShopUserQueryCriteria; -import cn.ysk.cashier.vo.ShopUserInfoVo; -import com.alipay.api.domain.PageInfo; -import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.data.domain.Pageable; import java.util.Map; import java.util.List; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java index 776b14c1..f2644496 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java @@ -8,6 +8,7 @@ public class TbOrderSalesCountByDayVo { private String productSkuName; private String cateName; private String unitName; + private BigDecimal price; private Long salesNum; private Long refNum; private BigDecimal salesAmount; @@ -86,20 +87,37 @@ public class TbOrderSalesCountByDayVo { this.unitName = unitName; } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + public TbOrderSalesCountByDayVo(Long salesNum, Long refNum) { this.salesNum = salesNum; this.refNum = refNum; } - public TbOrderSalesCountByDayVo(String productName, String productSkuName, String cateName,String unitName, Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount) { + public TbOrderSalesCountByDayVo(String productName, String productSkuName, String cateName,String unitName,BigDecimal price, + Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount) { this.productName = productName; this.productSkuName = productSkuName; this.cateName = cateName; this.unitName = unitName; + this.price = price; this.salesNum = salesNum; this.refNum = refNum; this.salesAmount = salesAmount; this.refAmount = refAmount; this.num = num; + count(); + } + + public void count(){ + salesNum=salesNum-refNum; + salesAmount=salesAmount.subtract(refAmount); } } diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 2954817d..e139fcf7 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -7,9 +7,6 @@ spring: url: jdbc:mysql://101.37.12.135:3306/fycashier?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true username: fycashier password: Twc6MrzzjBiWSsjh -# url: jdbc:mysql://127.0.0.1:3306/fycashier?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useJDBCCompliantTimezoneShift=true&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true -# username: root -# password: gongyijieqp002 driver-class-name: com.mysql.cj.jdbc.Driver # 初始连接数 initial-size: 5 diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index b0b30b71..b8878c3f 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -38,23 +38,16 @@ spring: # port: ${REDIS_PORT:6379} # password: ${REDIS_PWD:111111} -# redis: -# #数据库索引 -# database: ${REDIS_DB:0} -# host: ${REDIS_HOST:127.0.0.1} -# port: ${REDIS_PORT:6379} -# password: ${REDIS_PWD:111111} -# #连接超时时间 -# timeout: 5000 redis: #数据库索引 - database: 0 - host: 127.0.0.1 - port: 6379 - password: + database: ${REDIS_DB:0} + host: ${REDIS_HOST:127.0.0.1} + port: ${REDIS_PORT:6379} + password: ${REDIS_PWD:111111} #连接超时时间 timeout: 5000 + task: pool: # 核心线程池大小 diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml index 9dd6f39f..f3ac66ff 100644 --- a/eladmin-tools/pom.xml +++ b/eladmin-tools/pom.xml @@ -37,6 +37,7 @@ cn.ysk.cashier oss-service 2.6 + compile @@ -44,11 +45,5 @@ alipay-sdk-java ${alipay.version} - - cn.ysk.cashier - oss-service - 2.6 - compile -