|
@@ -58,12 +58,10 @@ import com.zhongzheng.modules.top.goods.mapper.TopOldOrderMapper;
|
|
|
import com.zhongzheng.modules.top.goods.service.*;
|
|
|
import com.zhongzheng.modules.top.goods.vo.*;
|
|
|
import com.zhongzheng.modules.top.order.bo.PayOrderCallBackBo;
|
|
|
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
|
|
|
import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
|
|
|
import com.zhongzheng.modules.top.order.service.ITopOrderBankPayService;
|
|
|
-import com.zhongzheng.modules.top.order.vo.TopOldOrderCommissionExportVo;
|
|
|
-import com.zhongzheng.modules.top.order.vo.TopOldOrderCompanyExportVo;
|
|
|
-import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
|
|
|
-import com.zhongzheng.modules.top.order.vo.TopOldOrderSellerExportVo;
|
|
|
+import com.zhongzheng.modules.top.order.vo.*;
|
|
|
import com.zhongzheng.modules.top.settle.domian.TopInstSettle;
|
|
|
import com.zhongzheng.modules.top.settle.domian.TopInstSettleRelaiton;
|
|
|
import com.zhongzheng.modules.top.settle.service.ITopInstSettleRelationService;
|
|
@@ -91,6 +89,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -1447,7 +1446,8 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
|
|
|
List<TopOldOrderGoods> list = topOrderGoodsService.listByIds(bo.getOrderGoodsIds());
|
|
|
list.forEach(x -> x.setCheckStatus(bo.getCheckStatus()));
|
|
|
- List<String> signIds = Arrays.stream(oldOrder.getCheckRemark().split(",")).filter(x -> !bo.getOrderGoodsIds().contains(x)).collect(Collectors.toList());
|
|
|
+// List<String> signIds = Arrays.stream(oldOrder.getCheckRemark().split(",")).filter(x -> !bo.getOrderGoodsIds().contains(x)).collect(Collectors.toList());
|
|
|
+ List<Long> signIds = list.stream().filter(x -> ObjectUtils.isNotNull(x.getRelSignId())).map(TopOldOrderGoods::getRelSignId).collect(Collectors.toList());
|
|
|
List<TopOldOrderGoods> topOldOrderGoods = topOrderGoodsService.
|
|
|
list(new LambdaQueryWrapper<TopOldOrderGoods>()
|
|
|
.eq(TopOldOrderGoods::getCheckStatus, -1)
|
|
@@ -1528,8 +1528,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
if (bo.getCheckStatus() == 1 && StringUtils.isNotBlank(oldOrder.getCostJson())) {
|
|
|
recalculateCost(oldOrder.getCostJson(), oldOrder);
|
|
|
}
|
|
|
- //清除标识IDs
|
|
|
- oldOrder.setCheckRemark("");
|
|
|
+
|
|
|
updateById(oldOrder);
|
|
|
// 订单审核通知业务系统
|
|
|
List<CheckOrderStudentDetailBo> studentDetailBos = list.stream().map(item -> {
|
|
@@ -2071,7 +2070,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
//获取修改前的数据
|
|
|
List<TopOldOrderGoods> list = topOrderGoodsService.list(new LambdaQueryWrapper<TopOldOrderGoods>()
|
|
|
.eq(TopOldOrderGoods::getOrderSn, orderGoods.getOrderSn())
|
|
|
- .eq(TopOldOrderGoods::getSignId, orderGoods.getSignId())
|
|
|
+ .eq(TopOldOrderGoods::getSignId, orderGoods.getRelSignId())
|
|
|
.eq(TopOldOrderGoods::getCheckStatus, -1));
|
|
|
if (CollectionUtils.isNotEmpty(list)){
|
|
|
for (TopOldOrderGoods goods : list) {
|
|
@@ -2126,6 +2125,179 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
return resultList;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<TopOrderStatisticsMoneyVo> orderMoneyStatisticsList(TopOrderStatisticsBo bo) {
|
|
|
+ //筛选时间处理
|
|
|
+ if (ObjectUtils.isNull(bo.getTimeSign()) && ObjectUtils.isNull(bo.getStartTime()) && ObjectUtils.isNull(bo.getEndTime())){
|
|
|
+ //没有选择时间范围,默认为当前时间向前推30天
|
|
|
+ Long nowTime = DateUtils.getNowTime();
|
|
|
+ Long dayBefore = DateUtils.getDayBefore(nowTime, 30);
|
|
|
+ bo.setStartTime(dayBefore);
|
|
|
+ bo.setEndTime(nowTime);
|
|
|
+ }else if (ObjectUtils.isNotNull(bo.getTimeSign())){
|
|
|
+ switch (bo.getTimeSign()){
|
|
|
+ case 1://本周
|
|
|
+ Map<String, Long> timeInterval = DateUtils.getTimeInterval(new Date());
|
|
|
+ bo.setStartTime(timeInterval.get("start"));
|
|
|
+ bo.setEndTime(timeInterval.get("end"));
|
|
|
+ break;
|
|
|
+ case 2://本月
|
|
|
+ Long toMonthZeroTime = DateUtils.getToMonthZeroTime();
|
|
|
+ bo.setStartTime(toMonthZeroTime);
|
|
|
+ bo.setEndTime(DateUtils.getNowTime());
|
|
|
+ break;
|
|
|
+ case 3://本年
|
|
|
+ Long toYearZeroTime = DateUtils.getToYearZeroTime();
|
|
|
+ bo.setStartTime(toYearZeroTime);
|
|
|
+ bo.setEndTime(DateUtils.getNowTime());
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<TopOrderStatisticsMoneyVo> moneyVos = baseMapper.getMoneyStatistics(bo);
|
|
|
+ if (CollectionUtils.isEmpty(moneyVos)){
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ //订单总额
|
|
|
+ BigDecimal moneyTotal = baseMapper.getMoneyStatisticsTotal(bo.getStartTime(),bo.getEndTime());
|
|
|
+ moneyVos.forEach(item -> {
|
|
|
+ if (item.getMoney().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //环比
|
|
|
+ item.setWeekRate("100%");
|
|
|
+ Long startTime = bo.getStartTime();
|
|
|
+ Long endTime = bo.getEndTime();
|
|
|
+ Long time = endTime - startTime;
|
|
|
+ TopOrderStatisticsBo topOrderStatisticsBo = new TopOrderStatisticsBo();
|
|
|
+ topOrderStatisticsBo.setStartTime(startTime - time);
|
|
|
+ topOrderStatisticsBo.setEndTime(startTime);
|
|
|
+
|
|
|
+ topOrderStatisticsBo.setCustomerId(item.getCustomerId());
|
|
|
+ List<TopOrderStatisticsMoneyVo> moneyStatistics = baseMapper.getMoneyStatistics(topOrderStatisticsBo);
|
|
|
+ if (CollectionUtils.isNotEmpty(moneyStatistics)){
|
|
|
+ BigDecimal money = moneyStatistics.stream().findFirst().get().getMoney();
|
|
|
+ if (money.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ BigDecimal subtract = item.getMoney().subtract(money);
|
|
|
+ BigDecimal divide = subtract.divide(money,2, RoundingMode.HALF_UP);
|
|
|
+ String s = divide.multiply(new BigDecimal("100")).toString();
|
|
|
+ item.setWeekRate(s+"%");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //同比
|
|
|
+ item.setYearRate("100%");
|
|
|
+ Long startBefore = DateUtils.getDayBefore(bo.getStartTime(), 365);
|
|
|
+ Long endBefore = DateUtils.getDayBefore(bo.getEndTime(), 365);
|
|
|
+ topOrderStatisticsBo.setStartTime(startBefore);
|
|
|
+ topOrderStatisticsBo.setEndTime(endBefore);
|
|
|
+ List<TopOrderStatisticsMoneyVo> moneyStatistics2 = baseMapper.getMoneyStatistics(topOrderStatisticsBo);
|
|
|
+ if (CollectionUtils.isNotEmpty(moneyStatistics2)){
|
|
|
+ BigDecimal money = moneyStatistics2.stream().findFirst().get().getMoney();
|
|
|
+ if (money.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ BigDecimal subtract = item.getMoney().subtract(money);
|
|
|
+ BigDecimal divide = subtract.divide(money,2, RoundingMode.HALF_UP);
|
|
|
+ String s = divide.multiply(new BigDecimal("100")).toString();
|
|
|
+ item.setYearRate(s+"%");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //占比
|
|
|
+ BigDecimal divide = item.getMoney().divide(moneyTotal, 2, RoundingMode.HALF_UP);
|
|
|
+ String s = divide.multiply(new BigDecimal("100")).toString();
|
|
|
+ item.setOccupationRate(s+"%");
|
|
|
+ });
|
|
|
+ return moneyVos;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<TopOrderStatisticsNumVo> orderNumStatisticsList(TopOrderStatisticsBo bo) {
|
|
|
+ //筛选时间处理
|
|
|
+ if (ObjectUtils.isNull(bo.getTimeSign()) && ObjectUtils.isNull(bo.getStartTime()) && ObjectUtils.isNull(bo.getEndTime())){
|
|
|
+ //没有选择时间范围,默认为当前时间向前推30天
|
|
|
+ Long nowTime = DateUtils.getNowTime();
|
|
|
+ Long dayBefore = DateUtils.getDayBefore(nowTime, 30);
|
|
|
+ bo.setStartTime(dayBefore);
|
|
|
+ bo.setEndTime(nowTime);
|
|
|
+ }else if (ObjectUtils.isNotNull(bo.getTimeSign())){
|
|
|
+ switch (bo.getTimeSign()){
|
|
|
+ case 1://本周
|
|
|
+ Map<String, Long> timeInterval = DateUtils.getTimeInterval(new Date());
|
|
|
+ bo.setStartTime(timeInterval.get("start"));
|
|
|
+ bo.setEndTime(timeInterval.get("end"));
|
|
|
+ break;
|
|
|
+ case 2://本月
|
|
|
+ Long toMonthZeroTime = DateUtils.getToMonthZeroTime();
|
|
|
+ bo.setStartTime(toMonthZeroTime);
|
|
|
+ bo.setEndTime(DateUtils.getNowTime());
|
|
|
+ break;
|
|
|
+ case 3://本年
|
|
|
+ Long toYearZeroTime = DateUtils.getToYearZeroTime();
|
|
|
+ bo.setStartTime(toYearZeroTime);
|
|
|
+ bo.setEndTime(DateUtils.getNowTime());
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<TopOrderStatisticsNumVo> numVos = baseMapper.getNumStatistics(bo);
|
|
|
+ if (CollectionUtils.isEmpty(numVos)){
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ //订单总数量
|
|
|
+ Long numTotal = baseMapper.getNumStatisticsTotal(bo.getStartTime(),bo.getEndTime());
|
|
|
+ numVos.forEach(item -> {
|
|
|
+ if (ObjectUtils.isNull(item.getOrderNum()) || item.getOrderNum() == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //环比
|
|
|
+ item.setWeekRate("100%");
|
|
|
+ Long startTime = bo.getStartTime();
|
|
|
+ Long endTime = bo.getEndTime();
|
|
|
+ Long time = endTime - startTime;
|
|
|
+ TopOrderStatisticsBo topOrderStatisticsBo = new TopOrderStatisticsBo();
|
|
|
+ topOrderStatisticsBo.setStartTime(startTime - time);
|
|
|
+ topOrderStatisticsBo.setEndTime(startTime);
|
|
|
+
|
|
|
+ topOrderStatisticsBo.setCustomerId(item.getCustomerId());
|
|
|
+ List<TopOrderStatisticsNumVo> numStatistics = baseMapper.getNumStatistics(topOrderStatisticsBo);
|
|
|
+ if (CollectionUtils.isNotEmpty(numStatistics)){
|
|
|
+ Long num = numStatistics.stream().findFirst().get().getOrderNum();
|
|
|
+ if (num > 0){
|
|
|
+ Long subtract = item.getOrderNum() - num;
|
|
|
+ BigDecimal divide = new BigDecimal(subtract).divide(new BigDecimal(num),2, RoundingMode.HALF_UP);
|
|
|
+ String s = divide.multiply(new BigDecimal("100")).toString();
|
|
|
+ item.setWeekRate(s+"%");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //同比
|
|
|
+ item.setYearRate("100%");
|
|
|
+ Long startBefore = DateUtils.getDayBefore(bo.getStartTime(), 365);
|
|
|
+ Long endBefore = DateUtils.getDayBefore(bo.getEndTime(), 365);
|
|
|
+ topOrderStatisticsBo.setStartTime(startBefore);
|
|
|
+ topOrderStatisticsBo.setEndTime(endBefore);
|
|
|
+ List<TopOrderStatisticsNumVo> numStatistics2 = baseMapper.getNumStatistics(topOrderStatisticsBo);
|
|
|
+ if (CollectionUtils.isNotEmpty(numStatistics2)){
|
|
|
+ Long num = numStatistics2.stream().findFirst().get().getOrderNum();
|
|
|
+ if (num > 0){
|
|
|
+ Long subtract = item.getOrderNum() - num;
|
|
|
+ BigDecimal divide = new BigDecimal(subtract).divide(new BigDecimal(num),2, RoundingMode.HALF_UP);
|
|
|
+ String s = divide.multiply(new BigDecimal("100")).toString();
|
|
|
+ item.setWeekRate(s+"%");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //占比
|
|
|
+ BigDecimal divide = new BigDecimal(item.getOrderNum()).divide(new BigDecimal(numTotal), 2, RoundingMode.HALF_UP);
|
|
|
+ String s = divide.multiply(new BigDecimal("100")).toString();
|
|
|
+ item.setOccupationRate(s+"%");
|
|
|
+ });
|
|
|
+ return numVos;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private TopOrderGoodsUpVo getGoodsUp(TopOldOrderGoods orderGoods,List<TopOldOrderStudyVo> studyVos){
|
|
|
TopOrderGoodsUpVo vo = BeanUtil.toBean(orderGoods, TopOrderGoodsUpVo.class);
|
|
|
//学习状态
|
|
@@ -2144,6 +2316,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ vo.setUserCard(EncryptHandler.decrypt(vo.getUserCard()));
|
|
|
return vo;
|
|
|
}
|
|
|
|