|  | @@ -25,6 +25,7 @@ import com.fs.company.domain.Company;
 | 
	
		
			
				|  |  |  import com.fs.company.domain.CompanyDept;
 | 
	
		
			
				|  |  |  import com.fs.company.domain.CompanyMoneyLogs;
 | 
	
		
			
				|  |  |  import com.fs.company.domain.CompanyUser;
 | 
	
		
			
				|  |  | +import com.fs.company.mapper.CompanyDeptMapper;
 | 
	
		
			
				|  |  |  import com.fs.company.mapper.CompanyMapper;
 | 
	
		
			
				|  |  |  import com.fs.company.mapper.CompanyMoneyLogsMapper;
 | 
	
		
			
				|  |  |  import com.fs.company.service.ICompanyDeptService;
 | 
	
	
		
			
				|  | @@ -219,6 +220,8 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 | 
	
		
			
				|  |  |      private IFsStoreOrderAuditLogService orderAuditLogService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private CompanyMapper companyMapper;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private CompanyDeptMapper companyDeptMapper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 查询订单
 | 
	
	
		
			
				|  | @@ -618,8 +621,15 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 | 
	
		
			
				|  |  |              if (storeOrder.getCustomerId() == null){
 | 
	
		
			
				|  |  |                  storeOrder.setCustomerId(param.getCustomerId());//6.13 添加客户id
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            storeOrder.setOrderType(param.getOrderType());
 | 
	
		
			
				|  |  | -            storeOrder.setOrderMedium(param.getOrderMedium());
 | 
	
		
			
				|  |  | +            FsStoreOrder tempOrder = redisCache.getCacheObject("orderInfo:" + param.getCreateOrderKey());
 | 
	
		
			
				|  |  | +            if (tempOrder != null){
 | 
	
		
			
				|  |  | +                storeOrder.setOrderType(tempOrder.getOrderType());
 | 
	
		
			
				|  |  | +                storeOrder.setOrderMedium(tempOrder.getOrderMedium());
 | 
	
		
			
				|  |  | +                redisCache.deleteObject("orderInfo:" + param.getCreateOrderKey());
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                storeOrder.setOrderType(param.getOrderType());
 | 
	
		
			
				|  |  | +                storeOrder.setOrderMedium(param.getOrderMedium());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              Integer flag=fsStoreOrderMapper.insertFsStoreOrder(storeOrder);
 | 
	
		
			
				|  |  |              if (flag==0) {
 | 
	
		
			
				|  |  |                  return R.error("订单创建失败");
 | 
	
	
		
			
				|  | @@ -1979,11 +1989,20 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public R createSalesOrder(CompanyUser companyUser, String cateIds) {
 | 
	
		
			
				|  |  | +    public R createSalesOrder(CompanyUser companyUser, String cateIds,Integer orderType,Integer orderMedium) {
 | 
	
		
			
				|  |  |          List<FsStoreCartQueryVO>  carts=cartMapper.selectFsStoreCartListByIds(cateIds);
 | 
	
		
			
				|  |  |          String uuid = IdUtil.randomUUID();
 | 
	
		
			
				|  |  |          redisCache.setCacheObject("createOrderKey:"+uuid, companyUser.getCompanyId()+"-"+companyUser.getUserId(), 24, TimeUnit.HOURS);
 | 
	
		
			
				|  |  |          redisCache.setCacheObject("orderCarts:"+uuid, carts, 24, TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //2025.7.23 倍力优需求 制单添加订单类型,媒体来源(非必填)
 | 
	
		
			
				|  |  | +        if (orderType != null || orderMedium != null) {
 | 
	
		
			
				|  |  | +            FsStoreOrder fsStoreOrder = new FsStoreOrder();
 | 
	
		
			
				|  |  | +            fsStoreOrder.setOrderMedium(orderMedium);
 | 
	
		
			
				|  |  | +            fsStoreOrder.setOrderType(orderType);
 | 
	
		
			
				|  |  | +            redisCache.setCacheObject("orderInfo:"+uuid, fsStoreOrder, 24, TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //计算总价
 | 
	
		
			
				|  |  |          BigDecimal totalMoney= BigDecimal.ZERO;
 | 
	
		
			
				|  |  |          for(FsStoreCartQueryVO vo:carts){
 | 
	
	
		
			
				|  | @@ -2684,4 +2703,108 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 | 
	
		
			
				|  |  |  //            return fsStoreOrderMapper.selectOrderDimensionStatisticsList(param);
 | 
	
		
			
				|  |  |  //        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public List<FsStoreOrderCountsVO> selectFsStoreOrderCountsByDept(Map<String, Object> map,Long deptId) {
 | 
	
		
			
				|  |  | +        List<FsStoreOrderCountsVO> vos = fsStoreOrderMapper.selectFsStoreOrderCountsByDept(map);
 | 
	
		
			
				|  |  | +        if (!vos.isEmpty()){
 | 
	
		
			
				|  |  | +            List<FsStoreOrderCountsVO> totalVos = new ArrayList<>();
 | 
	
		
			
				|  |  | +            //查询组名
 | 
	
		
			
				|  |  | +            List<CompanyDept> companyDeptList = companyDeptMapper.selectChildrenDeptById(deptId);
 | 
	
		
			
				|  |  | +            if (companyDeptList.isEmpty()) {
 | 
	
		
			
				|  |  | +                CompanyDept companyDept = companyDeptMapper.selectCompanyDeptById(deptId);
 | 
	
		
			
				|  |  | +                FsStoreOrderCountsVO vo = addTotal(companyDept, vos,true);
 | 
	
		
			
				|  |  | +                totalVos.add(vo);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                for (CompanyDept companyDept : companyDeptList) {
 | 
	
		
			
				|  |  | +                    FsStoreOrderCountsVO vo = addTotal(companyDept, vos,false);
 | 
	
		
			
				|  |  | +                    totalVos.add(vo);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            vos.addAll(totalVos);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return vos;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private FsStoreOrderCountsVO addTotal(CompanyDept companyDept, List<FsStoreOrderCountsVO> vos,boolean isEmpty) {
 | 
	
		
			
				|  |  | +        FsStoreOrderCountsVO vo = new FsStoreOrderCountsVO();
 | 
	
		
			
				|  |  | +        Long totalCalls = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal totalAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        BigDecimal validAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long waitingOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal waitingAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long unPassedOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal unPassedAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long cancelOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal cancelAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long unshippedOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal unshippedAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long shippedOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal shippedAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long transitOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal transitAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long receivedOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal receivedAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long returnOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal returnAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        Long paybackOrders = 0L;
 | 
	
		
			
				|  |  | +        BigDecimal paybackAmount = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        vo.setName("组名:"+ companyDept.getDeptName());
 | 
	
		
			
				|  |  | +        Long deptId = companyDept.getDeptId();
 | 
	
		
			
				|  |  | +        vo.setDeptId(deptId);
 | 
	
		
			
				|  |  | +        for (FsStoreOrderCountsVO orderCountsVO : vos) {
 | 
	
		
			
				|  |  | +            if (!isEmpty){
 | 
	
		
			
				|  |  | +                if (!Objects.equals(deptId, orderCountsVO.getDeptId())) {
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            orderCountsVO.setIsGroup(false);
 | 
	
		
			
				|  |  | +            orderCountsVO.setGroupName(companyDept.getDeptName());
 | 
	
		
			
				|  |  | +            totalCalls = totalCalls + orderCountsVO.getTotalCalls();
 | 
	
		
			
				|  |  | +            totalAmount = totalAmount.add(orderCountsVO.getTotalAmount());
 | 
	
		
			
				|  |  | +            validAmount = validAmount.add(orderCountsVO.getValidAmount());
 | 
	
		
			
				|  |  | +            waitingOrders = waitingOrders + orderCountsVO.getWaitingOrders();
 | 
	
		
			
				|  |  | +            waitingAmount = waitingAmount.add(orderCountsVO.getWaitingAmount());
 | 
	
		
			
				|  |  | +            unPassedOrders = unPassedOrders + orderCountsVO.getUnPassedOrders();
 | 
	
		
			
				|  |  | +            unPassedAmount = unPassedAmount.add(orderCountsVO.getUnPassedAmount());
 | 
	
		
			
				|  |  | +            cancelOrders = cancelOrders + orderCountsVO.getCancelOrders();
 | 
	
		
			
				|  |  | +            cancelAmount = cancelAmount.add(orderCountsVO.getCancelAmount());
 | 
	
		
			
				|  |  | +            unshippedOrders = unshippedOrders + orderCountsVO.getUnshippedOrders();
 | 
	
		
			
				|  |  | +            unshippedAmount = unshippedAmount.add(orderCountsVO.getUnshippedAmount());
 | 
	
		
			
				|  |  | +            shippedOrders = shippedOrders + orderCountsVO.getShippedOrders();
 | 
	
		
			
				|  |  | +            shippedAmount = shippedAmount.add(orderCountsVO.getShippedAmount());
 | 
	
		
			
				|  |  | +            transitOrders = transitOrders + orderCountsVO.getTransitOrders();
 | 
	
		
			
				|  |  | +            transitAmount = transitAmount.add(orderCountsVO.getTransitAmount());
 | 
	
		
			
				|  |  | +            receivedOrders = receivedOrders + orderCountsVO.getReceivedOrders();
 | 
	
		
			
				|  |  | +            receivedAmount = receivedAmount.add(orderCountsVO.getReceivedAmount());
 | 
	
		
			
				|  |  | +            returnOrders = returnOrders + orderCountsVO.getReturnOrders();
 | 
	
		
			
				|  |  | +            returnAmount = returnAmount.add(orderCountsVO.getReturnAmount());
 | 
	
		
			
				|  |  | +            paybackOrders = paybackOrders + orderCountsVO.getPaybackOrders();
 | 
	
		
			
				|  |  | +            paybackAmount = paybackAmount.add(orderCountsVO.getPaybackAmount());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        vo.setTotalCalls(totalCalls);
 | 
	
		
			
				|  |  | +        vo.setTotalAmount(totalAmount);
 | 
	
		
			
				|  |  | +        vo.setValidAmount(validAmount);
 | 
	
		
			
				|  |  | +        vo.setWaitingOrders(waitingOrders);
 | 
	
		
			
				|  |  | +        vo.setWaitingAmount(waitingAmount);
 | 
	
		
			
				|  |  | +        vo.setUnPassedOrders(unPassedOrders);
 | 
	
		
			
				|  |  | +        vo.setUnPassedAmount(unPassedAmount);
 | 
	
		
			
				|  |  | +        vo.setCancelOrders(cancelOrders);
 | 
	
		
			
				|  |  | +        vo.setCancelAmount(cancelAmount);
 | 
	
		
			
				|  |  | +        vo.setUnshippedOrders(unshippedOrders);
 | 
	
		
			
				|  |  | +        vo.setUnshippedAmount(unshippedAmount);
 | 
	
		
			
				|  |  | +        vo.setShippedOrders(shippedOrders);
 | 
	
		
			
				|  |  | +        vo.setShippedAmount(shippedAmount);
 | 
	
		
			
				|  |  | +        vo.setTransitOrders(transitOrders);
 | 
	
		
			
				|  |  | +        vo.setTransitAmount(transitAmount);
 | 
	
		
			
				|  |  | +        vo.setReceivedOrders(receivedOrders);
 | 
	
		
			
				|  |  | +        vo.setReceivedAmount(receivedAmount);
 | 
	
		
			
				|  |  | +        vo.setReturnOrders(returnOrders);
 | 
	
		
			
				|  |  | +        vo.setReturnAmount(returnAmount);
 | 
	
		
			
				|  |  | +        vo.setPaybackOrders(paybackOrders);
 | 
	
		
			
				|  |  | +        vo.setPaybackAmount(paybackAmount);
 | 
	
		
			
				|  |  | +        vo.setIsGroup(true);
 | 
	
		
			
				|  |  | +        vo.setGroupName(companyDept.getDeptName());
 | 
	
		
			
				|  |  | +        return vo;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |