Browse Source

订单导出排除商城

zouxuan 2 years ago
parent
commit
19c2fbc3da

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -183,6 +183,8 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     List<StudentPaymentOrderExportDto> ExportQueryPage(Map<String, Object> params);
 
+    List<StudentPaymentOrderMallExportDto> exportMallQueryPage(Map<String, Object> params);
+
     /**
      * 获取零星收费订单列表
      *

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.FeeFlagNumDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderMallExportDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
@@ -49,6 +50,7 @@ public interface StudentPaymentRouteOrderDao extends BaseDAO<Long, StudentPaymen
     List<StudentPaymentOrderExportDto> ExportQueryPage(Map<String, Object> params);
 
     List<StudentPaymentOrderExportDto> ExportQueryPage1(Map<String, Object> params);
+    List<StudentPaymentOrderMallExportDto> exportMallQueryPage(Map<String, Object> params);
 
     /**
      * 根据订单号删除

+ 169 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderMallExportDto.java

@@ -0,0 +1,169 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+public class StudentPaymentOrderMallExportDto extends StudentPaymentOrder {
+    @ApiModelProperty(value = "分部",required = true)
+    private String organName;
+
+    @ApiModelProperty(value = "业务分部",required = true)
+    private String userOrganName;
+
+    //汇付手续费
+    @ApiModelProperty(value = "汇付手续费",required = true)
+    private BigDecimal transferFee = BigDecimal.ZERO;
+
+    //平台手续费
+    @ApiModelProperty(value = "平台手续费",required = true)
+    private BigDecimal platformFee = BigDecimal.ZERO;
+
+    //收款账户
+    @ApiModelProperty(value = "收款账户",required = true)
+    private String routeMerNo;
+
+    //分润金额
+    @ApiModelProperty(value = "分润金额",required = true)
+    private BigDecimal routeAmount;
+
+    //分润余额
+    @ApiModelProperty(value = "分润余额",required = true)
+    private BigDecimal routeBalance;
+
+    //分润中的销售费用
+    @ApiModelProperty(value = "分润中的销售费用",required = true)
+    private BigDecimal saleAmount = BigDecimal.ZERO;
+
+    //分润中的服务费用
+    @ApiModelProperty(value = "分润中的服务费用",required = true)
+    private BigDecimal serviceAmount = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "服务费",required = true)
+    private BigDecimal serviceFee = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "支付状态",required = true)
+    private Integer payingStatus;
+
+    @ApiModelProperty(value = "订单金额",required = true)
+    private BigDecimal orderAmount = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "购买商品名称列表",required = true)
+    private String goodsNames;
+
+    @ApiModelProperty(value = "购买商品列表",required = true)
+    private String goodsJson;
+
+    public String getGoodsJson() {
+        return goodsJson;
+    }
+
+    public void setGoodsJson(String goodsJson) {
+        this.goodsJson = goodsJson;
+    }
+
+    public String getGoodsNames() {
+        return goodsNames;
+    }
+
+    public void setGoodsNames(String goodsNames) {
+        this.goodsNames = goodsNames;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getUserOrganName() {
+        return userOrganName;
+    }
+
+    public void setUserOrganName(String userOrganName) {
+        this.userOrganName = userOrganName;
+    }
+
+    public BigDecimal getTransferFee() {
+        return transferFee;
+    }
+
+    public void setTransferFee(BigDecimal transferFee) {
+        this.transferFee = transferFee;
+    }
+
+    public BigDecimal getPlatformFee() {
+        return platformFee;
+    }
+
+    public void setPlatformFee(BigDecimal platformFee) {
+        this.platformFee = platformFee;
+    }
+
+    public String getRouteMerNo() {
+        return routeMerNo;
+    }
+
+    public void setRouteMerNo(String routeMerNo) {
+        this.routeMerNo = routeMerNo;
+    }
+
+    public BigDecimal getRouteAmount() {
+        return routeAmount;
+    }
+
+    public void setRouteAmount(BigDecimal routeAmount) {
+        this.routeAmount = routeAmount;
+    }
+
+    public BigDecimal getRouteBalance() {
+        return routeBalance;
+    }
+
+    public void setRouteBalance(BigDecimal routeBalance) {
+        this.routeBalance = routeBalance;
+    }
+
+    public BigDecimal getSaleAmount() {
+        return saleAmount;
+    }
+
+    public void setSaleAmount(BigDecimal saleAmount) {
+        this.saleAmount = saleAmount;
+    }
+
+    public BigDecimal getServiceAmount() {
+        return serviceAmount;
+    }
+
+    public void setServiceAmount(BigDecimal serviceAmount) {
+        this.serviceAmount = serviceAmount;
+    }
+
+    public BigDecimal getServiceFee() {
+        return serviceFee;
+    }
+
+    public void setServiceFee(BigDecimal serviceFee) {
+        this.serviceFee = serviceFee;
+    }
+
+    public Integer getPayingStatus() {
+        return payingStatus;
+    }
+
+    public void setPayingStatus(Integer payingStatus) {
+        this.payingStatus = payingStatus;
+    }
+
+    public BigDecimal getOrderAmount() {
+        return orderAmount;
+    }
+
+    public void setOrderAmount(BigDecimal orderAmount) {
+        this.orderAmount = orderAmount;
+    }
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java

@@ -31,6 +31,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     MUSICAL_LIST_DETAIL_EXPORT("MUSICAL_LIST_DETAIL_EXPORT", "导出学员采购清单明细"),
     QUERY_STUDENT_APPLY_DETAIL_EXPORT("QUERY_STUDENT_APPLY_DETAIL_EXPORT", "学生详情列表导出"),
     COURSE_SCHEDULE_TEACHER_SALARY("COURSE_SCHEDULE_TEACHER_SALARY", "分页导出教师薪酬列表"),
+    MALL_ORDER_LIST("ORDER_LIST", "商城订单列表导出"),
     ORDER_LIST1("ORDER_LIST1", "订单列表导出1"),
     ORDER_LIST2("ORDER_LIST2", "订单列表导出2"),
     ORDER_LIST_SUM("ORDER_LIST_SUM", "订单列表汇总导出"),
@@ -46,6 +47,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     VIP_COURSE_REVIEWS("VIP_COURSE_REVIEWS", "VIP评论列表导出"),
     DEGREE_REGISTRATION("DEGREE_REGISTRATION", "考级报名导出"),
     COOPERATION_ORGAN("COOPERATION_ORGAN", "合作单位导出"),
+    MALL_ROUTE_ORDER_LIST("ROUTE_ORDER_LIST", "商城财务管理导出"),
     ROUTE_ORDER_LIST1("ROUTE_ORDER_LIST1", "财务管理导出1"),
     ROUTE_ORDER_LIST2("ROUTE_ORDER_LIST2", "财务管理导出2"),
     TEACHER_DEFAULT_SALARY("TEACHER_DEFAULT_SALARY", "老师默认课酬导出"),

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportTypeEnum.java

@@ -15,7 +15,9 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	MUSIC_GROUP_COURSE_LIST(9, "乐团课表详情导出"),
 	MUSIC_GROUP_DATA_EXPORT(10, "乐团数据导出"),
 	EXPORT_STUDENT_SUBCOURSE(11, "活动资格导出"),
-	EXPORT_TRAINING_STATISTICS(12, "训练统计导出");
+	EXPORT_TRAINING_STATISTICS(12, "训练统计导出"),
+	MALL_ORDER(13, "商城订单列表"),
+	MALL_ROUTE_ORDER(14, "商城财务管理");
 	;
 
 	private Integer code;

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ExportService.java

@@ -256,6 +256,7 @@ public interface ExportService {
 
     //财务管理导出
     HttpResponseResult routeOrderList(Map<String, Object> info);
+    HttpResponseResult routeMallOrderList(Map<String, Object> info);
 
     //学员小课记录导出
     HttpResponseResult exportStudentVipPractice(Map<String, Object> info);
@@ -275,17 +276,22 @@ public interface ExportService {
     //订单列表导出
     HttpResponseResult orderList(Map<String, Object> info);
 
+    HttpResponseResult mallOrderList(Map<String, Object> info);
+
     //订单列表汇总导出
     HttpResponseResult orderListSum(Map<String, Object> info);
 
     //保存下载记录
     ManagerDownload saveManagerDownload(ExportTypeEnum exportTypeEnum, Integer userId);
 
+    void mallOrderList(Map<String, Object> params, ManagerDownload managerDownload);
+
     void orderList(Map<String, Object> params, ManagerDownload managerDownload);
 
     void orderListSum(Map<String, Object> params, ManagerDownload managerDownload);
 
     void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload);
+    void mallRouteOrderList(Map<String, Object> params, ManagerDownload managerDownload);
 
     void superFindCourseSchedules(EndCourseScheduleQueryInfo queryInfo, ManagerDownload managerDownload);
 

+ 1 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -1,10 +1,7 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dto.PageInfoOrder;
-import com.ym.mec.biz.dal.dto.SporadicChargeInfoDto;
-import com.ym.mec.biz.dal.dto.StudentPaymentOrderDto;
-import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;

+ 208 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -354,8 +354,10 @@ public class ExportServiceImpl implements ExportService {
         //导出到报表中心
 //        exportManageFuncMap.put(ExportEnum.SUPER_FIND_COURSE_SCHEDULES, (info,headColumns) -> this.superFindCourseSchedules(info,headColumns));
         //针对不同的用户有不同的模板
+        exportManageFuncMap.put(ExportEnum.MALL_ROUTE_ORDER_LIST, (info) -> routeOrderList(info));
         exportManageFuncMap.put(ExportEnum.ROUTE_ORDER_LIST1, (info) -> routeOrderList(info));
         exportManageFuncMap.put(ExportEnum.ROUTE_ORDER_LIST2, (info) -> routeOrderList(info));
+        exportManageFuncMap.put(ExportEnum.MALL_ORDER_LIST, (info) -> mallOrderList(info));
         exportManageFuncMap.put(ExportEnum.ORDER_LIST1, (info) -> orderList(info));
         exportManageFuncMap.put(ExportEnum.ORDER_LIST2, (info) -> orderList(info));
         exportManageFuncMap.put(ExportEnum.ORDER_LIST_SUM, (info) -> orderListSum(info));
@@ -1425,6 +1427,7 @@ public class ExportServiceImpl implements ExportService {
         queryInfo.setOrderType("3");
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
+        params.put("noGroupType","MALL_SELL");
         int count = studentPaymentRouteOrderDao.queryCount(params);
         if (count <= 0) {
             return BaseController.failed("没有可导出的数据");
@@ -1437,6 +1440,36 @@ public class ExportServiceImpl implements ExportService {
                 managerDownload.getName());
     }
 
+    //财务管理导出
+    @Override
+    public HttpResponseResult routeMallOrderList(Map<String, Object> info) {
+        StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), StudentPaymentOrderQueryInfo.class);
+        SysUser sysUser = sysUserService.getUser();
+        queryInfo.setRoutingOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getRoutingOrganId(), sysUser.getIsSuperAdmin()));
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
+        queryInfo.setOrderType("3");
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        params.put("paymentType","MALL_BUY");
+        int count = studentPaymentRouteOrderDao.queryCount(params);
+        if (count <= 0) {
+            return BaseController.failed("没有可导出的数据");
+        }
+        if (count > 50000) {
+            return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
+        }
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.MALL_ROUTE_ORDER, sysUser.getId());
+        return this.asyncExport(() -> this.routeOrderList(params, managerDownload),
+                managerDownload.getName());
+    }
+
     //学员小课记录导出
     @Override
     public HttpResponseResult exportStudentVipPractice(Map<String, Object> info) {
@@ -1567,6 +1600,34 @@ public class ExportServiceImpl implements ExportService {
         return this.asyncExport(() -> this.orderList(params, managerDownload),
                 managerDownload.getName());
     }
+    //订单列表导出
+    @Override
+    public HttpResponseResult mallOrderList(Map<String, Object> info) {
+        StudentPaymentOrderQueryInfo queryInfo = JSONObject.parseObject(JSONObject.toJSONString(info), StudentPaymentOrderQueryInfo.class);
+        SysUser sysUser = sysUserService.getUser();
+        queryInfo.setOrganId(organizationService.getEmployeeOrgan(sysUser.getId(), queryInfo.getOrganId(), sysUser.getIsSuperAdmin()));
+        if (StringUtils.isNotBlank(queryInfo.getSearch())) {
+            List<BasicUserDto> users = studentPaymentOrderDao.getUsers(queryInfo.getSearch());
+            List<Integer> userIds = users.stream().map(BasicUserDto::getUserId).collect(Collectors.toList());
+            if (userIds.size() <= 0) {
+                userIds.add(0);
+            }
+            queryInfo.setUserIds(userIds);
+        }
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+        params.put("paymentType","MALL_BUY");
+        int count = studentPaymentOrderDao.queryCount(params);
+        if (count <= 0) {
+            return BaseController.failed("没有可导出的数据");
+        }
+        if (count > 50000) {
+            return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
+        }
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.MALL_ORDER, sysUser.getId());
+        return this.asyncExport(() -> this.mallOrderList(params, managerDownload),
+                managerDownload.getName());
+    }
 
     //订单列表导出
     @Override
@@ -1626,6 +1687,49 @@ public class ExportServiceImpl implements ExportService {
 
 
     @Override
+    public void mallOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
+        List<StudentPaymentOrderMallExportDto> studentPaymentOrderExportDtos = studentPaymentOrderDao.exportMallQueryPage(params);
+        long i = 1;
+        //获取机构费率
+        Integer tenantId = (Integer) params.get("tenantId");
+        TenantConfig tenantConfig = tenantConfigService.queryByTenantId(tenantId);
+        for (StudentPaymentOrderMallExportDto row : studentPaymentOrderExportDtos) {
+            if (row.getActualAmount() == null) {
+                row.setActualAmount(BigDecimal.ZERO);
+            }
+            if (row.getBalancePaymentAmount() == null) {
+                row.setBalancePaymentAmount(BigDecimal.ZERO);
+            }
+            BigDecimal transferFee = BigDecimal.ZERO;
+            if (row.getPaymentChannel() != null && row.getPaymentChannel().equals("ADAPAY")) {
+                transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+            }
+            row.setTransferFee(transferFee);
+            row.setPlatformFee(row.getActualAmount().multiply(tenantConfig.getChargeRate()).divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP));
+            if(StringUtils.isNotEmpty(row.getGoodsJson())){
+                List<JSONObject> orderItemList = JSONObject.parseArray(JSONObject.parseObject(row.getGoodsJson()).getString("orderItemList"), JSONObject.class);
+                String productName = orderItemList.stream().map(e -> e.get("productName").toString()).collect(Collectors.joining(","));
+                row.setGoodsNames(productName);
+            }
+            //活动购买的商品列表
+            String paymentChannel = "";
+            if (row.getPaymentChannel() == null) {
+            } else if (row.getPaymentChannel().equals("YQPAY")) {
+                paymentChannel = "双乾";
+            } else if (row.getPaymentChannel().equals("ADAPAY")) {
+                paymentChannel = "汇付";
+            } else if (row.getPaymentChannel().equals("BALANCE")) {
+                paymentChannel = "余额";
+            }
+            row.setPaymentChannel(paymentChannel);
+            row.setId(i);
+            row.setOrderAmount(row.getExpectAmount().add(row.getCouponRemitFee()));
+            i++;
+        }
+        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos, ExportEnum.MALL_ORDER_LIST);
+        exportManagerDownload(workbook, managerDownload);
+    }
+    @Override
     public void orderList(Map<String, Object> params, ManagerDownload managerDownload) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
         long i = 1;
@@ -2321,6 +2425,110 @@ public class ExportServiceImpl implements ExportService {
         return subtract;
     }
 
+    public void mallRouteOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
+        //获取分润订单(不包含订单详情)(纯余额支付不处理)
+        List<StudentPaymentOrderMallExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.exportMallQueryPage(params);
+        if (CollectionUtils.isEmpty(studentPaymentOrderExportDtos)) {
+            return;
+        }
+        Set<Long> paymentOrderIds = studentPaymentOrderExportDtos.stream().map(e -> e.getId()).collect(Collectors.toSet());
+
+        //计算手续费
+        Map<String, BigDecimal> serviceChargeMap = new HashMap<>();
+        Map<String, Integer> orderCountMap = new HashMap<>();
+        Integer tenantId = (Integer) params.get("tenantId");
+        TenantConfig tenantConfig = tenantConfigService.queryByTenantId(tenantId);
+        Map<Integer, String> studentNameMap = new HashMap<>();
+        List<Integer> organIds = studentPaymentOrderExportDtos.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
+        Map<Integer, String> userOrganNameMap = organizationService.getMap("organization","id_","name_",organIds,tenantId,Integer.class,String.class);
+        if (studentPaymentOrderExportDtos.stream().anyMatch(e -> e.getUserId() != null)) {
+            List<Integer> studentIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getUserId() != null).map(e -> e.getUserId()).distinct().collect(Collectors.toList());
+            //获取学员名称
+            studentNameMap = studentService.getMap("sys_user", "id_", "username_", studentIds, tenantId, Integer.class, String.class);
+        }
+
+        //用于计算手续费
+        Map<String, FeeFlagNumDto> feeFlagMap = new HashMap<>();
+        if (studentPaymentOrderExportDtos.stream().anyMatch(e -> Objects.equals(e.getPaymentChannel(), "ADAPAY"))) {
+            List<String> orderNoList = studentPaymentOrderExportDtos.stream().filter(e -> Objects.equals(e.getPaymentChannel(), "ADAPAY")).map(e -> e.getOrderNo()).distinct().collect(Collectors.toList());
+            List<FeeFlagNumDto> feeFlagNumDtos = studentPaymentRouteOrderDao.queryCountFeeFlagNum(orderNoList);
+            feeFlagMap = feeFlagNumDtos.stream().collect(Collectors.toMap(FeeFlagNumDto::getOrderNo, Function.identity()));
+        }
+        for (StudentPaymentOrderMallExportDto basicOrder : studentPaymentOrderExportDtos) {
+            basicOrder.getUser().setUsername(studentNameMap.get(basicOrder.getUserId()));
+            basicOrder.setUserOrganName(userOrganNameMap.get(basicOrder.getOrganId()));
+            //填充业务数据
+            //计算手续费
+            this.calcPlatformFee(basicOrder, serviceChargeMap, orderCountMap, tenantConfig, feeFlagMap);
+            //获取乐团信息
+            this.initMusicGroupInfo(basicOrder, musicGroupNameMap, firstMusicMap, userLastMusicIdMap, userLastMusicNameMap, calenderCooperationMap);
+            //填充备注信息
+            if (basicOrder.getGoodsList() != null) {
+                String goodsName = basicOrder.getGoodsList().stream().map(Goods::getName).collect(Collectors.joining("|"));
+                basicOrder.setMemo(goodsName);
+            }
+            if (basicOrder.getType() == OUTORDER && StringUtils.isNotEmpty(basicOrder.getMusicGroupId())) {
+                if (cooperationOrganMap.containsKey(Integer.valueOf(basicOrder.getMusicGroupId()))) {
+                    basicOrder.setCooperationOrganName(cooperationOrganMap.get(Integer.valueOf(basicOrder.getMusicGroupId())));
+                    CooperationOrgan cooperationOrganEduTeacher = musicGroupDao.findCooperationOrganEduTeacher(Integer.valueOf(basicOrder.getMusicGroupId()));
+                    if (cooperationOrganEduTeacher != null) {
+                        basicOrder.setEduTeacher(cooperationOrganEduTeacher.getLinkman());
+                    }
+                }
+            }
+            //根据订单类型初始化业务数据
+            Optional.ofNullable(groupTypeConsumerMap1.get(basicOrder.getGroupType())).ifPresent(consumer -> consumer.accept(basicOrder));
+            this.setSubTypeDesc(basicOrder, userFirstVipMap, userFirstPracticeMap);
+
+            String paymentChannel = "";
+            if (basicOrder.getPaymentChannel() == null) {
+            } else if (basicOrder.getPaymentChannel().equals("YQPAY")) {
+                paymentChannel = "双乾";
+            } else if (basicOrder.getPaymentChannel().equals("ADAPAY")) {
+                paymentChannel = "汇付";
+            } else if (basicOrder.getPaymentChannel().equals("BALANCE")) {
+                paymentChannel = "余额";
+            }
+            basicOrder.setPaymentChannel(paymentChannel);
+            if(StringUtils.isNotEmpty(basicOrder.getSporadicType()) && !basicOrder.getSporadicType().equals("其他")){
+                basicOrder.setTypeDesc(basicOrder.getSporadicType());
+            }
+            if (basicOrder.getRouteAmount().compareTo(BigDecimal.ZERO) == 0) {
+                continue;
+            }
+            //如果是零星收费的账户充值,不管销售还是服务,统一放在其他收费项目中
+            if (basicOrder.getType() == OrderTypeEnum.SPORADIC
+                    && basicOrder.getGroupType() == GroupType.SPORADIC
+                    && basicOrder.getServiceAmount().compareTo(BigDecimal.ZERO) == 0
+                    && basicOrder.getSaleAmount().compareTo(BigDecimal.ZERO) == 0) {
+                basicOrder.setOtherFee(basicOrder.getRouteAmount());
+                continue;
+            }
+            //如果有订单详情
+            List<StudentPaymentOrderDetail> detailList = orderDetailMap.get(basicOrder.getId());
+            if (!CollectionUtils.isEmpty(detailList)) {
+                this.calcOrderDetail(basicOrder, detailList, userFirstVipMap);
+                continue;
+            }
+            //如果没有订单详情,则计算商品收入
+            List<SellOrder> sellOrderList = sellOrderMap.get(basicOrder.getId());
+            if (!CollectionUtils.isEmpty(sellOrderList)) {
+                this.calcSellOrder(basicOrder, sellOrderList, goodsMap);
+                continue;
+            }
+            //如果只有订单,那么按分类统计
+            if (basicOrder.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) {
+                //计算服务收入
+                Optional.ofNullable(groupTypeConsumerMap.get(basicOrder.getGroupType())).ifPresent(c -> c.accept(basicOrder));
+            } else if (basicOrder.getSaleAmount().compareTo(BigDecimal.ZERO) > 0) {
+                //计算销售收入
+                this.setSaleFee(basicOrder);
+            }
+        }
+        HSSFWorkbook workbook = getHSSFWorkbook(studentPaymentOrderExportDtos, ExportEnum.ROUTE_ORDER_LIST1);
+        exportManagerDownload(workbook, managerDownload);
+    }
+
     public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
         //获取分润订单(不包含订单详情)(纯余额支付不处理)
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage1(params);

+ 103 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -334,6 +334,75 @@
         <include refid="queryPaymentOrder"/>
     </select>
 
+    <sql id="queryPaymentMallOrder">
+        <where>
+        	spo.tenant_id_ = #{tenantId}
+            <if test="userIds != null">
+                AND spo.user_id_ IN
+                <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                    #{userId}
+                </foreach>
+            </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(spo.organ_id_,#{organId})
+            </if>
+            <if test="orderStartDate != null">
+                AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &gt;= #{orderStartDate}
+            </if>
+            <if test="orderEndDate != null">
+                AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &lt;= #{orderEndDate}
+            </if>
+            <if test="notGroupType != null and notGroupType != ''">
+                AND spo.group_type_ != #{notGroupType}
+            </if>
+            <if test="paymentType != null">
+                AND spo.type_ = #{paymentType}
+            </if>
+            <if test="remark != null">
+                AND spo.memo_ LIKE CONCAT('%',#{remark},'%')
+            </if>
+            <if test="studentId != null">
+                AND spo.user_id_ = #{studentId}
+            </if>
+            <if test="paymentStatus != null">
+                AND spo.status_ = #{paymentStatus}
+            </if>
+            <if test="paymentChannel != null">
+                AND spo.payment_channel_ NOT IN (#{paymentChannel})
+            </if>
+            <if test='orderType != null and orderType.toString()=="1".toString()'>
+                AND spo.com_amount_ > 0
+            </if>
+            <if test='orderType != null and orderType.toString()=="2".toString()'>
+                AND spo.per_amount_ > 0
+            </if>
+            <if test="routingOrganId != null">
+                AND FIND_IN_SET(spo.routing_organ_id_,#{routingOrganId})
+            </if>
+            <if test="actualAmount != null">
+                AND spo.actual_amount_ >= #{actualAmount}
+            </if>
+
+            <if test="balancePaymentAmount != null">
+                AND spo.balance_payment_amount_ >= #{balancePaymentAmount}
+            </if>
+            <if test="lessActualAmount != null">
+                <![CDATA[ AND spo.actual_amount_ <= #{lessActualAmount}]]>
+            </if>
+            <if test="lessBalancePaymentAmount != null">
+                <![CDATA[AND spo.balance_payment_amount_ <= #{lessBalancePaymentAmount}]]>
+            </if>
+            <if test="orderNo != null">
+                AND (spo.id_ = #{orderNo} OR spo.order_no_ = #{orderNo})
+            </if>
+            <if test="merNos != null">
+                AND FIND_IN_SET(#{merNos},spo.mer_nos_)
+            </if>
+            <if test="transNo != null">
+                AND spo.trans_no_ = #{transNo}
+            </if>
+        </where>
+    </sql>
     <sql id="queryPaymentOrder">
         <where>
         	spo.tenant_id_ = #{tenantId}
@@ -582,6 +651,19 @@
         </foreach>
     </select>
 
+    <resultMap type="com.ym.mec.biz.dal.dto.StudentPaymentOrderMallExportDto" id="mallOrderAndDetail"
+               extends="StudentPaymentOrder">
+        <result column="organ_name" property="organName"/>
+        <result column="username_" property="user.username"/>
+        <result column="routeMerNo" property="routeMerNo"/>
+        <result column="routeAmount" property="routeAmount"/>
+        <result column="routeBalance" property="routeBalance"/>
+        <result column="sale_amount_" property="saleAmount"/>
+        <result column="service_amount_" property="serviceAmount"/>
+        <result column="service_fee_" property="serviceFee"/>
+        <result column="routeBalance" property="routeBalance"/>
+        <result column="orderAmount" property="orderAmount"/>
+    </resultMap>
     <resultMap type="com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto" id="orderAndDetail"
                extends="StudentPaymentOrder">
         <result column="organ_name" property="organName"/>
@@ -611,6 +693,27 @@
     </resultMap>
 
     <!-- 分页查询 -->
+    <select id="exportMallQueryPage" resultMap="mallOrderAndDetail" parameterType="map">
+        SELECT spo.*,u.username_,o.name_ organ_name,sgs.goods_json_
+        FROM student_payment_order spo
+        left join student_goods_sell sgs ON sgs.order_no_ = spo.order_no_
+        LEFT JOIN sys_user u on spo.user_id_ = u.id_
+        <if test='orderType != null and orderType.toString()=="0".toString()'>
+            LEFT JOIN organization o on spo.organ_id_ = o.id_
+        </if>
+        <if test='orderType != null and orderType.toString()=="1".toString()'>
+            LEFT JOIN organization o on spo.organ_id_ = o.id_
+        </if>
+        <if test='orderType != null and orderType.toString()=="2".toString()'>
+            LEFT JOIN organization o on spo.organ_id_ = o.id_
+        </if>
+        <if test='orderType != null and orderType.toString()=="3".toString()'>
+            LEFT JOIN organization o on spo.routing_organ_id_ = o.id_
+        </if>
+        <include refid="queryPaymentMallOrder"/>
+        ORDER BY spo.id_ ASC
+    </select>
+    <!-- 分页查询 -->
     <select id="ExportQueryPage" resultMap="orderAndDetail" parameterType="map">
         SELECT spo.*,u.username_,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
         detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -211,6 +211,9 @@ calender_id_,create_time_,create_by_,update_time_,update_by_,tenant_id_,type_
             <if test="orderEndDate != null">
                 AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &lt;= #{orderEndDate}
             </if>
+            <if test="noGroupType != null and noGroupType != ''">
+                AND spo.group_type_ != #{noGroupType}
+            </if>
             <if test="paymentType != null">
                 AND spo.type_ = #{paymentType}
             </if>
@@ -307,6 +310,27 @@ calender_id_,create_time_,create_by_,update_time_,update_by_,tenant_id_,type_
         GROUP BY spro.order_no_,spro.mer_no_
         ORDER BY spro.id_
     </select>
+    <select id="exportMallQueryPage" resultMap="com.ym.mec.biz.dal.dao.StudentPaymentOrderDao.mallOrderAndDetail"
+            parameterType="map">
+        SELECT spo.*,
+        SUM(spro.route_amount_) routeAmount,
+        SUM(spro.route_balance_amount_) routeBalance,
+        SUM(spro.sale_amount_) sale_amount_,
+        SUM(spro.service_amount_) service_amount_,
+        SUM(spro.service_fee_) service_fee_,
+        spro.mer_no_ routeMerNo,
+        spro.fee_flag_ feeFlag,
+        sci.charge_type_,
+        spo.expect_amount_ + spo.coupon_remit_fee_ orderAmount,
+        o.name_ organ_name
+        FROM student_payment_route_order spro
+        LEFT JOIN student_payment_order spo ON spo.order_no_ = spro.order_no_
+        LEFT JOIN sporadic_charge_info sci ON spo.music_group_id_ = sci.id_
+        LEFT JOIN organization o on spro.route_organ_id_ = o.id_
+        <include refid="queryPaymentOrder"/>
+        GROUP BY spro.order_no_,spro.mer_no_
+        ORDER BY spro.id_
+    </select>