yangdamao 1 year ago
parent
commit
42d620a7fb
100 changed files with 4699 additions and 344 deletions
  1. 33 0
      run-prod.sh
  2. 19 4
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java
  3. 150 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java
  4. 167 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderStatisticsController.java
  5. 97 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopSharedCustomerController.java
  6. 11 0
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  7. 10 0
      zhongzheng-admin-saas/src/main/resources/application-prod.yml
  8. 8 9
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  9. 3 6
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  10. 10 0
      zhongzheng-admin/src/main/resources/application-dev.yml
  11. 10 0
      zhongzheng-admin/src/main/resources/application-prod.yml
  12. 11 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java
  13. 10 0
      zhongzheng-api/src/main/resources/application-dev.yml
  14. 10 0
      zhongzheng-api/src/main/resources/application-prod.yml
  15. 109 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java
  16. BIN
      zhongzheng-common/src/main/resources/static/0020.jpg
  17. BIN
      zhongzheng-common/src/main/resources/static/0024.jpg
  18. BIN
      zhongzheng-common/src/main/resources/static/0030.jpg
  19. BIN
      zhongzheng-common/src/main/resources/static/0033.jpg
  20. 25 1
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  21. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/ActivityAdvertisingServiceImpl.java
  22. 20 48
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java
  23. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseAddBo.java
  24. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseEditBo.java
  25. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java
  26. 8 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java
  27. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Course.java
  28. 4 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java
  29. 3 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java
  30. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java
  31. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseMenuServiceImpl.java
  32. 51 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  33. 5 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java
  34. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseVo.java
  35. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/UserGoodsListBo.java
  36. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  37. 58 46
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  38. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/UserNewGoodsVo.java
  39. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java
  40. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java
  41. 8 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  42. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  43. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentVo.java
  44. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  45. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java
  46. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  47. 4 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  48. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  49. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  50. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/TopNuoMplatformLogServiceImpl.java
  51. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysWebServiceImpl.java
  52. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideLogMapper.java
  53. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideOrderMapper.java
  54. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideLogService.java
  55. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideOrderService.java
  56. 18 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideLogServiceImpl.java
  57. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideOrderServiceImpl.java
  58. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java
  59. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java
  60. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java
  61. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderGoods.java
  62. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java
  63. 62 8
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java
  64. 2093 190
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  65. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderGoodsListVo.java
  66. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderInvoiceVo.java
  67. 32 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderUpVo.java
  68. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java
  69. 59 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOrderGoodsUpVo.java
  70. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOrderStatisticsVo.java
  71. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundOrderDetailVo.java
  72. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundUserVo.java
  73. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopAcceptanceOrderBo.java
  74. 73 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceAddBo.java
  75. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceBo.java
  76. 58 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceExportBo.java
  77. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceRelBo.java
  78. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderGoodsAcceptanceBo.java
  79. 49 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsBo.java
  80. 42 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsViewBo.java
  81. 71 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptance.java
  82. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptanceRel.java
  83. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceMapper.java
  84. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceRelMapper.java
  85. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceRelService.java
  86. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceService.java
  87. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceRelServiceImpl.java
  88. 222 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceServiceImpl.java
  89. 28 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopCertStatsVo.java
  90. 60 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateDataVo.java
  91. 30 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateTrendVo.java
  92. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateVo.java
  93. 34 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopCustomerStatsVo.java
  94. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceStatisticsVo.java
  95. 80 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceVo.java
  96. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAreaDataVo.java
  97. 37 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAreaVo.java
  98. 20 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderCustomerVo.java
  99. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsDetailTotalVo.java
  100. 64 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsDetailVo.java

+ 33 - 0
run-prod.sh

@@ -1,3 +1,36 @@
+#!/usr/bin/env bash
+# 定义应用组名
+group_name='zhongzheng'
+# 定义应用名称
+app_name='zhongzheng-saas-api'
+# 定义应用版本
+app_version='1.0-SNAPSHOT'
+# 定义应用环境
+profile_active='prod'
+echo '----copy jar----'
+docker stop ${app_name}
+echo '----stop container----'
+docker rm ${app_name}
+echo '----rm container----'
+docker rmi ${group_name}/${app_name}:${app_version}
+echo '----rm image----'
+# 打包编译docker镜像
+docker build -f /mydata/maven/build/Dockerfile -t ${group_name}/${app_name}:${app_version} .
+echo '----build image----'
+docker run -p 5055:5055 --name ${app_name} \
+--restart=always \
+-e 'spring.profiles.active'=${profile_active} \
+-e TZ="Asia/Shanghai" \
+-m 10240m \
+--cpus=3 \
+--log-opt max-size=50m \
+--log-opt max-file=3 \
+-v /etc/localtime:/etc/localtime \
+-v /usr/share/fonts:/usr/share/fonts \
+-v /data/logs/prod_api:/logs \
+-v /mydata/app/${app_name}/logs:/var/logs \
+-d ${group_name}/${app_name}:${app_version}
+echo '----start container----'
 
 echo "开始等待20秒..."
 # 1-10秒内随机

+ 19 - 4
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java

@@ -15,10 +15,7 @@ import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
 import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
 import com.zhongzheng.modules.top.goods.bo.*;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
-import com.zhongzheng.modules.top.goods.vo.TopOrderStatisticsVo;
-import com.zhongzheng.modules.top.goods.vo.TopRefundOrderDetailVo;
+import com.zhongzheng.modules.top.goods.vo.*;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderCommissionExportVo;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderCompanyExportVo;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderSellerExportVo;
@@ -92,6 +89,24 @@ public class TopOldOrderController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 订单学员审核列表
+     */
+    @ApiOperation("订单学员审核列表")
+    @GetMapping("/goods/apply/list/{orderSn}")
+    public AjaxResult<TopOldOrderUpVo> getOrderGoodsApplyList(@PathVariable("orderSn" ) String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.getOrderGoodsApplyList(orderSn));
+    }
+
+    /**
+     * 订单发票信息
+     */
+    @ApiOperation("订单发票信息")
+    @GetMapping("/invoice/list/{orderSn}")
+    public AjaxResult<List<TopOldOrderInvoiceVo>> getOrderInvoiceList(@PathVariable("orderSn" ) String orderSn) {
+        return AjaxResult.success(iTopOldOrderService.getOrderInvoiceList(orderSn));
+    }
+
     /**
      * 订单学员信息导出
      */

+ 150 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java

@@ -0,0 +1,150 @@
+package com.zhongzheng.controller.order;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.poi.EasyPoiUtil;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.course.bo.CourseSectionBusinessAddBo;
+import com.zhongzheng.modules.course.vo.CourseChapterSectionImport;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
+import com.zhongzheng.modules.distribution.vo.DistributionActivityPosterVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+import com.zhongzheng.modules.user.bo.UserImportAddBo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 订单认款Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单认款", tags = {"订单认款"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/acceptance")
+public class TopOrderAcceptanceController extends BaseController {
+
+    private final ITopOrderAcceptanceService iTopOrderAcceptanceService;
+
+    /**
+     * 查询认款列表
+     */
+    @ApiOperation("查询认款列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopOrderAcceptanceVo> list(TopOrderAcceptanceBo bo) {
+        startPage();
+        List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询认款统计
+     */
+    @ApiOperation("查询认款统计")
+    @GetMapping("/statistics")
+    public AjaxResult<TopOrderAcceptanceStatisticsVo> statistics() {
+        TopOrderAcceptanceStatisticsVo vo = iTopOrderAcceptanceService.statistics();
+        return AjaxResult.success(vo);
+    }
+
+    /**
+     * 认款订单列表
+     */
+    @ApiOperation("认款订单列表")
+    @GetMapping("/order/list")
+    public TableDataInfo<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo) {
+        startPage();
+        List<TopOldOrderVo> list = iTopOrderAcceptanceService.getAcceptanceOrderList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 认款关联订单列表
+     */
+    @ApiOperation("认款关联订单列表")
+    @GetMapping("/order/rel/{acceptanceId}")
+    public AjaxResult<List<TopOldOrderVo>> getAcceptanceOrderRelList(@PathVariable("acceptanceId")Long acceptanceId) {
+        List<TopOldOrderVo> list = iTopOrderAcceptanceService.getAcceptanceOrderRelList(acceptanceId);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 订单认款
+     */
+    @ApiOperation("订单认款")
+    @PostMapping("/rel")
+    public AjaxResult<Void> addOrderAcceptanceRel(@RequestBody TopOrderAcceptanceRelBo bo) {
+        return toAjax(iTopOrderAcceptanceService.addOrderAcceptanceRel(bo) ? 1 : 0);
+    }
+
+
+    /**
+     * 新增认款记录
+     */
+    @ApiOperation("新增认款记录")
+    @PostMapping("/save")
+    public AjaxResult<Void> add(@RequestBody TopOrderAcceptanceAddBo bo) {
+        return toAjax(iTopOrderAcceptanceService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除认款记录
+     */
+    @ApiOperation("删除认款记录")
+    @PostMapping("/delete")
+    public AjaxResult<Void> add(@RequestBody TopOrderAcceptanceBo bo) {
+        return toAjax(iTopOrderAcceptanceService.deleteByAddBo(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("认款记录导入")
+    @PostMapping("/importData")
+    public AjaxResult<Void> importData(MultipartFile file) {
+        ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
+        List<TopOrderAcceptanceExportBo> acceptanceExportBos;
+        try {
+            acceptanceExportBos = util.importExcel(file.getInputStream());
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+        }
+        return toAjax(iTopOrderAcceptanceService.importData(acceptanceExportBos)? 1 : 0);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @ApiOperation("认款记录导出")
+    @GetMapping("/export")
+    public AjaxResult<DistributionActivityPosterVo> export(TopOrderAcceptanceBo bo) {
+        List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
+        List<TopOrderAcceptanceExportBo> collect = list.stream().map(item -> {
+            TopOrderAcceptanceExportBo exportBo = BeanUtil.toBean(item, TopOrderAcceptanceExportBo.class);
+            return exportBo;
+        }).collect(Collectors.toList());
+        ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
+        return util.exportExcel(collect, "认款记录表");
+    }
+}

+ 167 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderStatisticsController.java

@@ -0,0 +1,167 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 订单Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单统计控制器", tags = {"订单统计控制器"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/order/statistics")
+public class TopOrderStatisticsController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    private final TopTokenService tokenService;
+
+    /**
+     * 下单客户订单金额统计
+     */
+    @ApiOperation("下单客户订单金额统计")
+    @GetMapping("/money")
+    public TableDataInfo<TopOrderStatisticsMoneyVo> orderMoneyStatisticsList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsMoneyVo> list = iTopOldOrderService.orderMoneyStatisticsList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单数量统计
+     */
+    @ApiOperation("下单客户订单数量统计")
+    @GetMapping("/num")
+    public TableDataInfo<TopOrderStatisticsNumVo> orderNumStatisticsList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsNumVo> list = iTopOldOrderService.orderNumStatisticsList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单走势图
+     */
+    @ApiOperation("下单客户订单走势图")
+    @GetMapping("/view")
+    public AjaxResult<TopOrderStatisticsViewVo> orderStatisticsView(TopOrderStatisticsViewBo bo) {
+        return AjaxResult.success(iTopOldOrderService.orderStatisticsView(bo));
+    }
+
+    /**
+     * 下单客户订单详情
+     */
+    @ApiOperation("下单客户订单详情")
+    @GetMapping("/detail")
+    public TableDataInfo<TopOrderStatisticsDetailVo> orderStatisticsDetail(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsDetailVo> list = iTopOldOrderService.orderStatisticsDetail(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单金额统计
+     */
+    @ApiOperation("机构订单金额统计")
+    @GetMapping("/moneyByTenant")
+    public TableDataInfo<TopOrderStatisticsMoneyVo> orderMoneyTenantStatistics(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsMoneyVo> list = iTopOldOrderService.orderMoneyTenantStatistics(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 下单客户订单数量统计
+     */
+    @ApiOperation("机构订单数量统计")
+    @GetMapping("/numByTenant")
+    public TableDataInfo<TopOrderStatisticsNumVo> orderNumTenantStatistics(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsNumVo> list = iTopOldOrderService.orderNumTenantStatistics(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("业务层次订单金额统计")
+    @GetMapping("/moneyByBusiness")
+    public TableDataInfo<TopOrderStatisticsMoneyVo> businessOrderMoney(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsMoneyVo> list = iTopOldOrderService.getBusinessOrderMoney(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("业务层次订单数量统计")
+    @GetMapping("/numByBusiness")
+    public TableDataInfo<TopOrderStatisticsNumVo> businessOrderNum(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsNumVo> list = iTopOldOrderService.getBusinessOrderNum(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("数据分析业务层次列表")
+    @GetMapping("/businessList")
+    public AjaxResult<List<String>> businessList(TopOrderStatisticsBo bo) {
+        List<String> list = iTopOldOrderService.getBusinessList(bo);
+        return AjaxResult.success(list);
+    }
+
+    @ApiOperation("下单客户")
+    @GetMapping("/customer")
+    public AjaxResult<List<TopOrderCustomerVo>> getCustomerList() {
+        return AjaxResult.success(iTopOldOrderService.getCustomerList());
+    }
+
+    @ApiOperation("订单总计")
+    @GetMapping("/total")
+    public AjaxResult<TopOrderTotalVo> getOrderTotal(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getOrderTotal(bo));
+    }
+
+    @ApiOperation("下单机构订单详情列表")
+    @GetMapping("/tenantDetailList")
+    public TableDataInfo<TopOrderStatisticsDetailVo> getTenantDetailList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsDetailVo> list = iTopOldOrderService.getTenantDetailList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("下单业务层次详情列表")
+    @GetMapping("/businessDetailList")
+    public TableDataInfo<TopOrderStatisticsDetailVo> getBusinessDetailList(TopOrderStatisticsBo bo) {
+        startPage();
+        List<TopOrderStatisticsDetailVo> list = iTopOldOrderService.getBusinessDetailList(bo);
+        return getDataTable(list);
+    }
+
+    @ApiOperation("机构走势图")
+    @GetMapping("/tenantView")
+    public AjaxResult<TopOrderStatisticsViewVo> getStatisticsTenantView(TopOrderStatisticsViewBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getStatisticsTenantView(bo));
+    }
+
+    @ApiOperation("业务层次走势图")
+    @GetMapping("/businessView")
+    public AjaxResult<TopOrderStatisticsViewVo> getStatisticsBusinessView(TopOrderStatisticsViewBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getStatisticsBusinessView(bo));
+    }
+
+    @ApiOperation("机构业务员列表")
+    @GetMapping("/tenantCreateList")
+    public AjaxResult<List<TopOrderStatisticsTwoVo>> getTenantCreateList(TopOrderStatisticsViewBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getTenantCreateList(bo));
+    }
+}

+ 97 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopSharedCustomerController.java

@@ -0,0 +1,97 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 订单Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "公海控制器", tags = {"公海控制器"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/order/shared")
+public class TopSharedCustomerController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    /**
+     * 公海客户统计
+     */
+    @ApiOperation("公海客户统计")
+    @GetMapping("/statistics")
+    public AjaxResult<TopSharedCustomerTotalVo> getSharedStatistics(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getSharedStatistics(bo));
+    }
+
+    /**
+     * 公海总客户
+     */
+    @ApiOperation("公海总客户")
+    @GetMapping("/customer/stats")
+    public AjaxResult<TopCustomerStatsVo> getCustomerStatsData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getCustomerStatsData(bo));
+    }
+
+    /**
+     * 公海过期预警
+     */
+    @ApiOperation("公海过期预警")
+    @GetMapping("/cert/stats")
+    public AjaxResult<TopCertStatsVo> getCertStatsData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getCertStatsData(bo));
+    }
+
+    /**
+     * 城市转化排行
+     */
+    @ApiOperation("城市转化排行")
+    @GetMapping("/order/area")
+    public TableDataInfo<TopOrderAreaDataVo> getOrderAreaData(TopOrderStatisticsBo bo) {
+        return iTopOldOrderService.getOrderAreaData(bo);
+    }
+
+    /**
+     * 客户转化排名
+     */
+    @ApiOperation("客户转化排名")
+    @GetMapping("/conversion/rate")
+    public TableDataInfo<TopConversionRateDataVo> getConversionRateData(TopOrderStatisticsBo bo) {
+        return iTopOldOrderService.getConversionRateData(bo);
+    }
+
+    /**
+     * 公海客户走势图
+     */
+    @ApiOperation("公海客户走势图")
+    @GetMapping("/customer/list")
+    public AjaxResult<List<TopConversionRateTrendVo>> getCustomerListData(TopOrderStatisticsBo bo) {
+        return AjaxResult.success(iTopOldOrderService.getCustomerListData(bo));
+    }
+
+    /**
+     * 公海客户详情
+     */
+    @ApiOperation("公海客户详情")
+    @GetMapping("/customer/order")
+    public TableDataInfo<TopConversionRateDataVo> getCustomerOrderData(TopOrderStatisticsBo bo) {
+        return iTopOldOrderService.getCustomerOrderData(bo);
+    }
+}

+ 11 - 0
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -170,6 +170,7 @@ oldOrder:
 
 oldSys:
     host: http://gdxypx.xy.com
+    goods: http://gdxypx.xy.com/WitSystem/BussinessApi/NewYxtLogin
 
 invoice:
     host: http://192.168.1.222:7077/sys/common/openMplatform/log
@@ -186,3 +187,13 @@ exam:
     subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
+    customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData
+

+ 10 - 0
zhongzheng-admin-saas/src/main/resources/application-prod.yml

@@ -170,6 +170,7 @@ oldOrder:
 
 oldSys:
     host: https://www.xyyxt.net
+    goods: http://www.xyyxt.net/WitSystem/BussinessApi/NewYxtLogin
 
 invoice:
     host: https://ptapi.gdzzkj.net/sys/common/openMplatform/log
@@ -186,3 +187,12 @@ exam:
     subscribeSaveExam: http://39.108.7.155:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://39.108.7.155:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://39.108.7.155:9099/cd/subscribe/add/num
+
+shared:
+    statistics: http://www.xyyxt.net/WitSystem/BussinessApi/HighSeasData
+    customer: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://www.xyyxt.net/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://www.xyyxt.net/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
+    customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData

+ 8 - 9
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -35,6 +35,7 @@ import com.zhongzheng.modules.base.bo.ConfigQueryBo;
 import com.zhongzheng.modules.base.service.ICertificateTpService;
 import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 import com.zhongzheng.modules.course.bo.ReplenishExamBo;
+import com.zhongzheng.modules.course.vo.CourseChapterVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 import com.zhongzheng.modules.course.vo.ReplenishExamVo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
@@ -51,10 +52,7 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsStudyUrlBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListBo;
 import com.zhongzheng.modules.goods.service.IGoodsService;
-import com.zhongzheng.modules.goods.vo.GoodsJzsVo;
-import com.zhongzheng.modules.goods.vo.GoodsVo;
-import com.zhongzheng.modules.goods.vo.UserGoodsListVo;
-import com.zhongzheng.modules.goods.vo.UserOrderGoodsListVo;
+import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.service.IClassGradeService;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
@@ -292,9 +290,8 @@ public class CommonController extends BaseController {
         if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
             return AjaxResult.error("签名错误");
         }
-        List<UserOrderGoodsListVo> voList = iGoodsService.getUserOrderGoods(bo);
-
-        return AjaxResult.success(voList);
+        UserNewGoodsVo goodsVo = iGoodsService.getUserOrderGoods(bo);
+        return AjaxResult.success(goodsVo);
     }
 
     @ApiOperation("校验用户是否有账号")
@@ -329,14 +326,14 @@ public class CommonController extends BaseController {
                 e.printStackTrace();
             }
         });
-        return AjaxResult.success();
+        return AjaxResult.success("操作成功",null);
     }
 
     @ApiOperation("七大员新考证书")
     @PostMapping("common/apply/result/certificate")
     public AjaxResult examApplyResultCertificate(List<MultipartFile> files) {
         String msg = iExamApplyService.examApplyResultCertificate(files);
-        return AjaxResult.success(msg);
+        return AjaxResult.success("操作成功",msg);
     }
 
     @ApiOperation("七大员考试结果回执")
@@ -783,6 +780,8 @@ public class CommonController extends BaseController {
         return AjaxResult.success(iClassGradeUserService.pushOfficialPeriodMore(list));
     }
 
+   
+
     @ApiOperation("测试获取山东题库")
     @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
     @Log(title = "测试获取山东题库", businessType = BusinessType.INSERT)

+ 3 - 6
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -196,12 +196,9 @@ public class ClassGradeController extends BaseController {
     @PreAuthorize("@ss.hasPermi('grade:grade:list')")
     @GetMapping("/listGrade")
     public TableDataInfo<ClassGradeStudentVo> listGrade(ClassGradeUserQueryBo bo) {
-        if (ObjectUtils.isNotNull(bo.getSevenCodeSign()) && bo.getSevenCodeSign() == 1
-                && ObjectUtils.isNotNull(bo.getGradeId())){
-            ClassGrade gradeGrade = iClassGradeService.getById(bo.getGradeId());
-            if (StringUtils.isNotBlank(gradeGrade.getSevenCode())){
-                bo.setSevenCode(gradeGrade.getSevenCode());
-            }
+        ClassGrade gradeGrade = iClassGradeService.getById(bo.getGradeId());
+        if (StringUtils.isNotBlank(gradeGrade.getSevenCode())){
+            bo.setSevenCode(gradeGrade.getSevenCode());
         }
         startPage();
         List<ClassGradeStudentVo> list = iClassGradeService.listGrade(bo);

+ 10 - 0
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -171,6 +171,7 @@ oldOrder:
 
 oldSys:
     host: http://gdxypx.xy.com
+    goods: http://gdxypx.xy.com/WitSystem/BussinessApi/NewYxtLogin
 
 invoice:
     host: http://192.168.1.222:7077/sys/common/openMplatform/log
@@ -187,3 +188,12 @@ exam:
     subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
+    customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData

+ 10 - 0
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -170,6 +170,7 @@ oldOrder:
 
 oldSys:
     host: http://test.jqbao.net
+    goods: http://www.xyyxt.net/WitSystem/BussinessApi/NewYxtLogin
 
 invoice:
     host: https://ptapi.gdzzkj.net/sys/common/openMplatform/log
@@ -186,3 +187,12 @@ exam:
     subscribeSaveExam: http://39.108.7.155:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://39.108.7.155:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://39.108.7.155:9099/cd/subscribe/add/num
+
+shared:
+    statistics: http://www.xyyxt.net/WitSystem/BussinessApi/HighSeasData
+    customer: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://www.xyyxt.net/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://www.xyyxt.net/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
+    customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData

+ 11 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -9,6 +9,7 @@ import com.zhongzheng.modules.course.bo.*;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.*;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
+import com.zhongzheng.modules.goods.vo.UserNewGoodsVo;
 import com.zhongzheng.modules.order.bo.SpecialQuestionBo;
 import com.zhongzheng.modules.order.vo.SpecialQuestionVo;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -206,4 +207,14 @@ public class CourseController extends BaseController {
         return AjaxResult.success(vo);
     }
 
+    /**
+     * 旧系统学员商品信息
+     */
+    @ApiOperation("旧系统学员商品信息")
+    @GetMapping("/old/goods/list")
+    public AjaxResult<UserNewGoodsVo> getOldGoodsList() {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        return AjaxResult.success(iCourseService.getOldGoodsList(loginUser.getUser().getUserId()));
+    }
+
 }

+ 10 - 0
zhongzheng-api/src/main/resources/application-dev.yml

@@ -173,6 +173,7 @@ oldOrder:
 
 oldSys:
     host: http://gdxypx.xy.com
+    goods: http://gdxypx.xy.com/System/BussinessApi/NewYxtLogin
 
 invoice:
     host: http://192.168.1.222:7077/sys/common/openMplatform/log
@@ -189,3 +190,12 @@ exam:
     subscribeSaveExam: http://192.168.1.7:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://192.168.1.7:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://192.168.1.7:9099/cd/subscribe/add/num
+
+shared:
+    statistics: http://gdxypx.xy.com/WitSystem/BussinessApi/HighSeasData
+    customer: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://gdxypx.xy.com/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://gdxypx.xy.com/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://gdxypx.xy.com//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerConversionRateTrendData
+    customerOrder: http://gdxypx.xy.com/WitSystem/BussinessApi/CustomerOrderData

+ 10 - 0
zhongzheng-api/src/main/resources/application-prod.yml

@@ -182,6 +182,7 @@ oldOrder:
 
 oldSys:
     host: http://test.jqbao.net
+    goods: http://www.xyyxt.net/WitSystem/BussinessApi/NewYxtLogin
 
 invoice:
     host: https://ptapi.gdzzkj.net/sys/common/openMplatform/log
@@ -199,3 +200,12 @@ exam:
     subscribeSaveExam: http://39.108.7.155:9099/cd/subscribe/save/exam
     subscribeUpdateExam: http://39.108.7.155:9099/cd/subscribe/update/exam
     subscribeAddExamNum: http://39.108.7.155:9099/cd/subscribe/add/num
+
+shared:
+    statistics: http://www.xyyxt.net/WitSystem/BussinessApi/HighSeasData
+    customer: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerStatsData
+    cert: http://www.xyyxt.net/WitSystem/BussinessApi/CertStatsData
+    orderArea: http://www.xyyxt.net/WitSystem/BussinessApi/OrderAreaData
+    rateData: http://www.xyyxt.net//WitSystem/BussinessApi/CustomerConversionRateData
+    rateTrend: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerConversionRateTrendData
+    customerOrder: http://www.xyyxt.net/WitSystem/BussinessApi/CustomerOrderData

+ 109 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java

@@ -275,6 +275,29 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return cal.getTimeInMillis() / 1000;  //今天凌晨
     }
 
+    /**
+     * 获取指定时间的凌晨时间戳
+     */
+    public static Long getScheduleTimeStrZeroTime(String timeStr,String patternStr)
+    {
+        Long time = dateTimeSec(patternStr,timeStr);
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(timeToDate(time));
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        return cal.getTimeInMillis() / 1000;  //今天凌晨
+    }
+
+    /**
+     * 获取指定时间的凌晨时间戳
+     */
+    public static Long getScheduleTimeZeroTime(Long scheduleTime)
+    {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(timeToDate(scheduleTime));
+        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
+        return cal.getTimeInMillis() / 1000;  //今天凌晨
+    }
+
     public static String formatDate(Date time,String str)
     {
        SimpleDateFormat sdf = new SimpleDateFormat(str);
@@ -304,6 +327,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return cal.getTime().getTime()/1000;
     }
 
+    /**
+     * 获取本年第一天的凌晨时间戳
+     */
+    public static Long getToYearZeroTime()
+    {
+        Calendar calendar = Calendar.getInstance();
+        // 设置当前时间为年初的第一天
+        calendar.set(Calendar.DAY_OF_YEAR, 1);
+        Date startOfCurrentYear = calendar.getTime();
+        return startOfCurrentYear.getTime()/1000;
+    }
+
     /**
      * 根据当前日期获得所在周的日期区间(周一和周日日期)
      */
@@ -598,4 +633,78 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return c.getTime().getTime()/1000;
     }
 
+
+    public static List<Long> getWeekData(Long dataTime){
+        List<Long> week = new ArrayList();
+        Calendar calendar = Calendar.getInstance();
+        Long zeroTime = DateUtils.getScheduleTimeZeroTime(dataTime);
+        calendar.setTime(timeToDate(zeroTime));
+        // 如果是周日
+        if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
+            calendar.add(Calendar.DAY_OF_YEAR,-1);
+        }
+        // 获取当前日期是当周的第i天
+        int i = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+         // 获取当前日期所在周的第一天
+        calendar.add(Calendar.DATE , -i);
+
+        for (int j = 0; j < 7; j++) {
+            if(j >0){
+                calendar.add(Calendar.DATE , 1);
+            }
+            Long time = calendar.getTime().getTime()/1000;
+            if (j == 6){
+                time = time + 86400L;
+            }
+            week.add(time);
+        }
+        return week;
+    }
+
+
+    public static Map<Long,Long> getWeekTime(Long startTime,Long endTime){
+        Map<Long,Long> mapList = new HashMap<>();
+        Long zeroTime = DateUtils.getScheduleTimeZeroTime(startTime);
+        //一天的时间戳
+        Long time = 86400L;
+        for (Long i = zeroTime; i <= endTime; i = i+time) {
+            List<Long> weekData = DateUtils.getWeekData(i);
+            mapList.put(weekData.get(0),weekData.get(weekData.size()-1));
+        }
+        return mapList;
+    }
+
+    public static Map<Long,Long> getMonthTime(Long startTime,Long endTime){
+        //一天的时间戳
+        Long time = 86400L;
+        Map<Long,Long> map = new HashMap<>();
+        try{
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
+            Date d1 = DateUtils.timeToDate(startTime);
+            Date d2 = DateUtils.timeToDate(endTime);
+            Calendar dd = Calendar.getInstance();//定义日期实例
+            dd.setTime(d1);//设置日期起始时间
+            while (dd.getTime().before(d2)) {//判断是否到结束日期
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+                String str = sdf.format(dd.getTime());
+                Calendar c = Calendar.getInstance();
+                c.setTime(format.parse(str));
+                c.add(Calendar.MONTH, 0);
+                c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
+                Long start = c.getTime().getTime()/1000;
+                dd.setTime(DateUtils.timeToDate(start));
+                //获取当前月最后一天
+                Calendar ca = Calendar.getInstance();
+                ca.setTime(format.parse(str));
+                ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
+                Long end = ca.getTime().getTime()/1000 + time;
+                map.put(start,end);
+                dd.add(Calendar.MONTH, 1);//进行当前日期月份加1
+            }
+        }catch (Exception e){
+            System.out.println("异常"+e.getMessage());
+        }
+        return map;
+    }
+
 }

BIN
zhongzheng-common/src/main/resources/static/0020.jpg


BIN
zhongzheng-common/src/main/resources/static/0024.jpg


BIN
zhongzheng-common/src/main/resources/static/0030.jpg


BIN
zhongzheng-common/src/main/resources/static/0033.jpg


+ 25 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -42,6 +43,7 @@ import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.service.IClassGradeUserService;
+import com.zhongzheng.modules.grade.service.impl.ClassGradeServiceImpl;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysConfigService;
@@ -54,6 +56,8 @@ import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.mapper.UserMapper;
 import com.zhongzheng.modules.user.service.*;
 import com.zhongzheng.modules.user.vo.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -78,6 +82,8 @@ import java.util.stream.Collectors;
 @Service
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
 
+    private static Logger log = LoggerFactory.getLogger(UserServiceImpl.class);
+
     @Autowired
     private CollectCourseMapper collectCourseMapper;
 
@@ -264,7 +270,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Override
     public List<UserExportVo> selectListExport(UserQueryBo bo) {
         bo.setGetOrderNum(1L);
-        List<UserVo> list = entity2UserVo(userMapper.selectList(bo));
+        List<UserVo> list = entity2UserVo(userMapper.selectListByBo(bo));
         List<UserExportVo> listExport = new ArrayList<>();
         for (UserVo userVo : list) {
             userVo.setStudentCode(userVo.getUserAccount());
@@ -690,6 +696,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         SnowflakeIdUtils idWorker = new SnowflakeIdUtils(3, 1);
         inertData.setUserAccount(String.valueOf(idWorker.nextId()));
         inertData.setSex(1);
+        if (ObjectUtils.isNotNull(bo.getEduLevel())){
+            inertData.setEduLevel(bo.getEduLevel());
+        }
+        if (ObjectUtils.isNotNull(bo.getSexNum())){
+            inertData.setSex(bo.getSexNum());
+        }
         if (ObjectUtils.isNotNull(bo.getIdcard())){
             inertData.setIdCard(bo.getIdcard());
         }
@@ -956,6 +968,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             if(Validator.isEmpty(bo.getTelphone())){
                 throw new CustomException("用户手机号码缺失");
             }
+            log.info("批量获取用户ID" + JSON.toJSONString(bo));
 //            if(Validator.isEmpty(bo.getIdCard())){
 //                throw new CustomException("用户身份证号码缺失");
 //            }
@@ -1008,6 +1021,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 }else {
                     registerBo.setTel(bo.getTelphone());
                 }
+                if(Validator.isNotEmpty(bo.getSex())){
+                    if(bo.getSex().equals("男")){
+                        registerBo.setSexNum(1);
+                    }
+                    else if(bo.getSex().equals("女")){
+                        registerBo.setSexNum(2);
+                    }
+                }
+                if(Validator.isNotEmpty(bo.getEducation())){
+                    registerBo.setEduLevel(bo.getEducation());
+                }
                 registerBo.setIdcard(bo.getIdCard());
                 registerBo.setRegisterPlat("4");
                 Long userId = systemRegisterUser(registerBo);

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/ActivityAdvertisingServiceImpl.java

@@ -9,10 +9,14 @@ import com.zhongzheng.modules.base.bo.ActivityAdvertisingAddBo;
 import com.zhongzheng.modules.base.bo.ActivityAdvertisingEditBo;
 import com.zhongzheng.modules.base.bo.ActivityAdvertisingQueryBo;
 import com.zhongzheng.modules.base.domain.ActivityAdvertising;
+import com.zhongzheng.modules.base.domain.ActivityAdvertisingLocation;
 import com.zhongzheng.modules.base.domain.Certificate;
 import com.zhongzheng.modules.base.mapper.ActivityAdvertisingMapper;
+import com.zhongzheng.modules.base.service.IActivityAdvertisingLocationService;
 import com.zhongzheng.modules.base.service.IActivityAdvertisingService;
+import com.zhongzheng.modules.base.service.IApplyAreasService;
 import com.zhongzheng.modules.base.vo.ActivityAdvertisingVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -33,6 +37,9 @@ import java.util.stream.Collectors;
 @Service
 public class ActivityAdvertisingServiceImpl extends ServiceImpl<ActivityAdvertisingMapper, ActivityAdvertising> implements IActivityAdvertisingService {
 
+    @Autowired
+    private  IActivityAdvertisingLocationService iActivityAdvertisingLocationService;
+
     @Override
     public ActivityAdvertisingVo queryById(Long id){
         ActivityAdvertising db = this.baseMapper.selectById(id);
@@ -115,6 +122,12 @@ public class ActivityAdvertisingServiceImpl extends ServiceImpl<ActivityAdvertis
                 .eq(ActivityAdvertising::getAdvName,entity.getAdvName()).ne(ActivityAdvertising::getStatus,-1)
                 .last("limit 1"));
         if (Validator.isNotNull(info)) {
+            ActivityAdvertisingLocation location = iActivityAdvertisingLocationService.getOne(new LambdaQueryWrapper<ActivityAdvertisingLocation>()
+                    .eq(ActivityAdvertisingLocation::getLocationId,info.getLocationId()).ne(ActivityAdvertisingLocation::getStatus,-1)
+                    .last("limit 1"));
+            if(Validator.isEmpty(location)){
+                return false;
+            }
             if(Validator.isNotEmpty(entity.getId())){
                 if(entity.getId().longValue() != info.getId().longValue()){
                     return true;

+ 20 - 48
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -30,6 +30,10 @@ import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
 import com.zhongzheng.modules.course.mapper.CourseMenuMapper;
 import com.zhongzheng.modules.course.service.ICourseMenuService;
 import com.zhongzheng.modules.course.service.ICourseModuleService;
+import com.zhongzheng.modules.course.vo.CourseChapterVo;
+import com.zhongzheng.modules.course.vo.CourseMenuVo;
+import com.zhongzheng.modules.course.vo.CourseModuleVo;
+import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.course.service.IMajorService;
 import com.zhongzheng.modules.course.vo.*;
 import com.zhongzheng.modules.goods.bo.GoodsCourseQueryBo;
@@ -99,14 +103,11 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
 
     @Autowired
     private ICourseModuleService iCourseModuleService;
-
     @Autowired
     private IMajorService iMajorService;
-
     @Value("${certificate.host}")
     private String CERTIFICATE_HOST;
 
-
     @Override
     public CertificateTpVo queryById(Long tpId){
         CertificateTp db = this.baseMapper.selectById(tpId);
@@ -193,31 +194,21 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
                 .eq(ObjectUtils.isNotNull(bo.getOrderGoodsId()),ClassGradeUser::getOrderGoodsId, bo.getOrderGoodsId())
                 .eq(ClassGradeUser::getGradeId,bo.getGradeId()).last("limit 1"));
         UserVo userVo = iUserService.queryById(bo.getUserId());
-        if(Validator.isEmpty(userVo.getRealname())){
-            throw new CustomException("生成证书姓名缺失");
-        }
         if(Validator.isNotEmpty(goodsVo.getMoreCertificateStatus())&&goodsVo.getMoreCertificateStatus()==1){
             //获取章列表
             List<CourseChapterVo> chapterList =  iClassGradeUserService.findChapterList(bo);
             BigDecimal totalTime = new BigDecimal(0);
-            BigDecimal totalClassHour = new BigDecimal(0);
             BigDecimal publicTotalTime = new BigDecimal(0);
-            BigDecimal publicClassHour = new BigDecimal(0);
             for(CourseChapterVo chapterVo : chapterList){
-                BigDecimal cTime = new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId()));
                 if(Validator.isEmpty(chapterVo.getCommonSign())||chapterVo.getCommonSign()==0){
-                    totalTime=totalTime.add(cTime);
-                    totalClassHour = totalClassHour.add(cTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP).setScale( 0, BigDecimal.ROUND_HALF_UP ));
+                    totalTime=totalTime.add(new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId())));
                 }else if(chapterVo.getCommonSign()==1){
-                    publicTotalTime=publicTotalTime.add(cTime);
-                    publicClassHour = publicClassHour.add(cTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP).setScale( 0, BigDecimal.ROUND_HALF_UP ));
+                    publicTotalTime=publicTotalTime.add(new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId())));
                 }
 
             }
-            goodsVo.setClassHours(totalClassHour);
-            goodsVo.setPublicClassHours(publicClassHour);
-           /* goodsVo.setClassHours(totalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));
-            goodsVo.setPublicClassHours(publicTotalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));*/
+            goodsVo.setClassHours(totalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));
+            goodsVo.setPublicClassHours(publicTotalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));
             if(Validator.isNotEmpty(goodsVo.getCertificateTpId())){
                 //        String[] s = goodsVo.getCertificateIds().split(",");
                 List<Long> tpIds = new ArrayList<>();
@@ -251,13 +242,10 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
                     //获取章列表
                     List<CourseChapterVo> chapterList =  iClassGradeUserService.findChapterList(bo);
                     BigDecimal totalTime = new BigDecimal(0);
-                    BigDecimal totalClassHour = new BigDecimal(0);
                     for(CourseChapterVo chapterVo : chapterList){
-                        BigDecimal cTime = new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId()));
-                        totalTime=totalTime.add(cTime);
-                        totalClassHour = totalClassHour.add(cTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP).setScale( 0, BigDecimal.ROUND_HALF_UP ));
+                        totalTime=totalTime.add(new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId())));
                     }
-                    goodsVo.setClassHours(totalClassHour);
+                    goodsVo.setClassHours(totalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));
                     List<Long> tpIds = new ArrayList<>();
                     if(Validator.isNotEmpty(moduleVo.getCertificateTpId())){
                         tpIds.add(moduleVo.getCertificateTpId());
@@ -625,11 +613,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         addBo.setChapterStr(ArrayUtils.toString(vo.getChapterList(), ","));
         addBo.setMoreCertificateStatus(goodsVo.getMoreCertificateStatus());
         addBo.setModuleId(moduleId);
-        if(Validator.isEmpty(goodsVo.getPublicClassHours())){
-            addBo.setPublicClassHours(BigDecimal.ZERO);
-        }else{
-            addBo.setPublicClassHours(goodsVo.getPublicClassHours().setScale( 0, BigDecimal.ROUND_HALF_UP ));
-        }
+        addBo.setPublicClassHours(goodsVo.getPublicClassHours().setScale( 0, BigDecimal.ROUND_HALF_UP ));
         return addBo;
     }
     private String getCertificateCode(){
@@ -719,9 +703,6 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             else if(i==13){
                 numTag = "14. ";
             }
-            else if(i==14){
-                numTag = "15. ";
-            }
             chapterListTxt.add(numTag+chapterList.get(i).getName());
         }
         return chapterListTxt;
@@ -824,9 +805,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             g.drawString(entity.getRemark1(), 1035, 408);
             g.drawString(entity.getRemark2(), 728, 460);
 
-          /*  g.drawString(entity.getDateY(), 707, 677);
-            g.drawString(entity.getDateM(), 783, 677);
-            g.drawString(entity.getDateD(), 835, 677);*/
+
 
             g.drawString(entity.getDateY(), 945, 677);
             g.drawString(entity.getDateM(), 1019, 677);
@@ -945,7 +924,6 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
     private  String drawPicErZao(CertificatePhotoVo entity){
         Font font = new Font("微软雅黑", Font.PLAIN, 31);// 添加字体的属性设置 微软雅黑
         Font font2 = new Font("微软雅黑", Font.BOLD, 38);
-        Font font3 = new Font("微软雅黑", Font.PLAIN, 28);
         String imgName = null;
         try {
             // 加载本地图片
@@ -973,9 +951,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             if("必修".equals(entity.getMajor())){
                 g.drawString(entity.getMajor(), 768, 718);
             }else{
-                g.setFont(font3);
-                g.drawString("选修("+entity.getMajor()+")", 670, 718);
-                g.setFont(font);
+                g.drawString("选修("+entity.getMajor()+")", 677, 718);
             }
 
 
@@ -989,7 +965,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             Integer startY = 810;
             Integer j = 0;
             for(String name : entity.getChapterList()){
-                if(j<15){
+                if(j<6){
                     g.drawString(name, 300, startY);
                     startY+=50;
                 }else{
@@ -1015,10 +991,10 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             //二维码
             String qrTxt = CERTIFICATE_HOST+"pages/certificate/index?code="+entity.getCode();
             QRCodeWriter qrCodeWriter = new QRCodeWriter();
-            BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, 180, 180);
+            BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, 150, 150);
             BufferedImage qrImage = toBufferedImage(bitMatrix);
             // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
-            g.drawImage(qrImage, 1209, 145, 180, 180, null);
+            g.drawImage(qrImage, 1233, 175, 150, 150, null);
             // 完成模板修改
             g.dispose();
             // 获取新文件的地址
@@ -1043,7 +1019,6 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
     private  String drawPicErJian(CertificatePhotoVo entity){
         Font font = new Font("微软雅黑", Font.PLAIN, 31);// 添加字体的属性设置 微软雅黑
         Font font2 = new Font("微软雅黑", Font.BOLD, 38);
-        Font font3 = new Font("微软雅黑", Font.PLAIN, 28);
         String imgName = null;
         try {
             // 加载本地图片
@@ -1071,10 +1046,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             if("必修".equals(entity.getMajor())){
                 g.drawString(entity.getMajor(), 768, 718);
             }else{
-                g.setFont(font3);
-                g.drawString("选修("+entity.getMajor()+")", 670, 718);
-                g.setFont(font);
-
+                g.drawString("选修("+entity.getMajor()+")", 677, 718);
             }
 
 
@@ -1088,7 +1060,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             Integer startY = 810;
             Integer j = 0;
             for(String name : entity.getChapterList()){
-                if(j<15){
+                if(j<14){
                     g.drawString(name, 300, startY);
                     startY+=50;
                 }else{
@@ -1114,10 +1086,10 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             //二维码
             String qrTxt = CERTIFICATE_HOST+"pages/certificate/index?code="+entity.getCode();
             QRCodeWriter qrCodeWriter = new QRCodeWriter();
-            BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, 180, 180);
+            BitMatrix bitMatrix = qrCodeWriter.encode(qrTxt, BarcodeFormat.QR_CODE, 150, 150);
             BufferedImage qrImage = toBufferedImage(bitMatrix);
             // 在模板上添加用户二维码(地址,左边距,上边距,图片宽度,图片高度,未知)
-            g.drawImage(qrImage, 1209, 145, 180, 180, null);
+            g.drawImage(qrImage, 1233, 175, 150, 150, null);
             // 完成模板修改
             g.dispose();
             // 获取新文件的地址

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseAddBo.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.course.bo;
 
+import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -81,4 +82,5 @@ public class CourseAddBo {
     /** 优选生成 0否 1是 */
     @ApiModelProperty("优选生成 0否 1是")
     private Integer firstChoice;
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseEditBo.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.course.bo;
 
+import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -99,4 +100,5 @@ public class CourseEditBo {
     /** 优选生成 0否 1是 */
     @ApiModelProperty("优选生成 0否 1是")
     private Integer firstChoice;
+
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.course.bo;
 
+import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -53,6 +54,7 @@ public class CourseModuleAddBo {
     /** 赠送卷ID */
     @ApiModelProperty("赠送卷ID")
     private Long freeExamId;
+
     @ApiModelProperty("公共标识:1公共章 0非公共章")
     private Integer commonSign;
     /** 证书类型ID */
@@ -64,4 +66,5 @@ public class CourseModuleAddBo {
     /** 证书模板ID */
     @ApiModelProperty("证书模板ID")
     private Long certificateTpId;
+
 }

+ 8 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.course.bo;
 
+import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -62,15 +63,20 @@ public class CourseModuleEditBo {
     /** 赠送卷ID */
     @ApiModelProperty("赠送卷ID")
     private Long freeExamId;
-    @ApiModelProperty("公共标识:1公共章 0非公共章")
-    private Integer commonSign;
+
     /** 证书类型ID */
+    @Excel(name = "证书类型ID")
     @ApiModelProperty("证书类型ID")
     private Long certificateTypeId;
     /** 证书ID */
+    @Excel(name = "证书ID")
     @ApiModelProperty("证书ID")
     private Long certificateId;
     /** 证书模板ID */
+    @Excel(name = "证书模板ID")
     @ApiModelProperty("证书模板ID")
     private Long certificateTpId;
+    @ApiModelProperty("公共标识:1公共章 0非公共章")
+    private Integer commonSign;
+
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Course.java

@@ -75,4 +75,5 @@ private static final long serialVersionUID=1L;
     /** 优选生成 0否 1是 */
     private Integer firstChoice;
 
+
 }

+ 4 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java

@@ -51,8 +51,7 @@ private static final long serialVersionUID=1L;
     private Long tenantId;
     @TableField(exist = false)
     private Long oId;
-    /** 公共标识:1公共章 0非公共章 */
-    private String commonSign;
+
     /** 证书类型ID */
     @TableField(updateStrategy=FieldStrategy.IGNORED)
     private Long certificateTypeId;
@@ -62,4 +61,7 @@ private static final long serialVersionUID=1L;
     /** 证书模板ID */
     @TableField(updateStrategy=FieldStrategy.IGNORED)
     private Long certificateTpId;
+    /** 公共标识:1公共章 0非公共章 */
+    private String commonSign;
+
 }

+ 3 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java

@@ -8,10 +8,7 @@ import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.course.vo.CourseUserVo;
 import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
-import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
-import com.zhongzheng.modules.goods.vo.GoodsPeriodVo;
-import com.zhongzheng.modules.goods.vo.GoodsUserVo;
-import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.order.bo.SpecialQuestionBo;
@@ -110,4 +107,6 @@ public interface ICourseService extends IService<Course> {
     Long getSpecialQuestionCount(SpecialQuestionBo bo);
 
 	Map<String,String> getSpecialQuestionSkipCode(Long userId);
+
+	UserNewGoodsVo getOldGoodsList(Long userId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java

@@ -215,7 +215,7 @@ public class CourseBusinessServiceImpl extends ServiceImpl<CourseBusinessMapper,
     }
 
     @Override
-    public boolean editPeriodUserIds(CourseBusinessEditBo bo) {
+    public boolean  editPeriodUserIds(CourseBusinessEditBo bo) {
         LambdaUpdateWrapper<CourseBusiness> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
         objectLambdaUpdateWrapper.eq(CourseBusiness::getId, bo.getId());
         objectLambdaUpdateWrapper.set(CourseBusiness::getPeriodUserIds, bo.getPeriodUserIds());

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseMenuServiceImpl.java

@@ -181,7 +181,7 @@ public class CourseMenuServiceImpl extends ServiceImpl<CourseMenuMapper, CourseM
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean updateByEditBo(CourseMenuListAddBo bo) {
-        boolean result = false;
+        boolean result = true;
         remove(new LambdaQueryWrapper<CourseMenu>().eq(CourseMenu::getCourseId, bo.getCourseId()));
         for(int i=0;i<bo.getMenuList().size();i++){
             CourseMenu add = BeanUtil.toBean(bo.getMenuList().get(i), CourseMenu.class);

+ 51 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -24,6 +24,8 @@ import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.ToolsUtils;
+import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.base.domain.UserProfile;
 import com.zhongzheng.modules.base.service.IUserProfileService;
 import com.zhongzheng.modules.course.bo.CourseAddBo;
@@ -49,10 +51,7 @@ import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.service.IGoodsQuestionRelService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.service.IQuestionMerchantService;
-import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
-import com.zhongzheng.modules.goods.vo.GoodsPeriodVo;
-import com.zhongzheng.modules.goods.vo.GoodsSectionNumVo;
-import com.zhongzheng.modules.goods.vo.GoodsUserVo;
+import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.bo.UserPeriodQueryBo;
 import com.zhongzheng.modules.grade.bo.UserPeriodStatusAddBo;
@@ -69,6 +68,7 @@ import com.zhongzheng.modules.order.vo.SpecialQuestionVo;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.top.order.vo.TopConversionRateTrendVo;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserPhoneBo;
 import com.zhongzheng.modules.user.bo.UserPlanQueryBo;
@@ -162,6 +162,8 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
     private RedisCache redisCache;
     @Value("${liveGotoURL}")
     private String URL_PREFIX;
+    @Value("${oldSys.goods}")
+    private String OLD_GOODS;
     @Autowired
     private ClassGradeUserMapper classGradeUserMapper;
 
@@ -561,7 +563,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             }
             goodsUserVo.setSecAllNum(secLong);
             goodsUserVo.setStuAllNum(studyLong);
-            goodsUserVo.setSubscribeSign(2);
+            goodsUserVo.setSubscribeSign(0);
 
 
             //查询对应考试安排
@@ -579,9 +581,14 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                             .last("limit 1"));
                     if (ObjectUtils.isNull(userSubscribe)){
                         goodsUserVo.setSubscribeSign(1);
-                    }else if (userSubscribe.getSubscribeStatus() == 1 && userSubscribe.getExamStatus() == 0){
+                    }else if (userSubscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(userSubscribe.getExamStatus())
+                            && userSubscribe.getExamStatus() == 1
+                            && ObjectUtils.isNull(userSubscribe.getResult())){
+                        goodsUserVo.setSubscribeSign(2);
+                    }else if (userSubscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(userSubscribe.getExamStatus())
+                            && userSubscribe.getExamStatus() == 0){
                         goodsUserVo.setSubscribeSign(4);
-                    } else if (ObjectUtils.isNotNull(userSubscribe.getResult()) && userSubscribe.getResult() == 0){
+                    }else if (ObjectUtils.isNotNull(userSubscribe.getResult()) && userSubscribe.getResult() == 0){
                         goodsUserVo.setSubscribeSign(3);
                     }
                 }
@@ -1106,6 +1113,43 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         return map;
     }
 
+    @Override
+    public UserNewGoodsVo getOldGoodsList(Long userId) {
+        UserNewGoodsVo vo = new UserNewGoodsVo();
+        User user = iUserService.getById(userId);
+        if (ObjectUtils.isNull(user)){
+            return null;
+        }
+        String idCard = EncryptHandler.decrypt(user.getIdCard());
+        String telPhone = EncryptHandler.decrypt(user.getTelphone());
+        Map<String, String> params = new HashMap<>();
+        Long nowTime = DateUtils.getNowTime();
+        String sign = ToolsUtils.EncoderByMd5(idCard+telPhone+nowTime + "pubilc2022");
+        params.put("stamp", nowTime.toString());
+        params.put("sign", sign);
+        params.put("idNum", idCard);
+        params.put("passwordSign", "2");
+        params.put("telphone",telPhone);
+        String respone = "";
+        try {
+            respone = HttpUtils.postFormBody(OLD_GOODS, params);
+            if (!respone.contains("\"code\":200")) {
+                throw new CustomException("旧系统用户商品接口错误");
+            }
+            JSONObject jsonObject = JSONObject.parseObject(respone);
+            Object data = jsonObject.get("data");
+            if (ObjectUtils.isNotNull(data)){
+                vo = JSONObject.parseObject(JSONObject.toJSONString(data), UserNewGoodsVo.class);
+            }else {
+                return null;
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new CustomException("旧系统用户商品接口错误");
+        }
+        return vo;
+    }
+
     private Long liveTime(Long nowTime, Integer day) {
         for (Integer i = 0; i < day; i++) {
             Long dayAfter = DateUtils.getDayAfter(nowTime, 1);

+ 5 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java

@@ -82,8 +82,7 @@ public class CourseModuleVo {
 	private Long freeExamId;
 	@ApiModelProperty("赠送卷名称")
 	private String freeExamName;
-	@ApiModelProperty("公共标识:1公共章 0非公共章")
-	private Integer commonSign;
+
 	/** 证书类型ID */
 	@Excel(name = "证书类型ID")
 	@ApiModelProperty("证书类型ID")
@@ -96,4 +95,8 @@ public class CourseModuleVo {
 	@Excel(name = "证书模板ID")
 	@ApiModelProperty("证书模板ID")
 	private Long certificateTpId;
+
+	@ApiModelProperty("公共标识:1公共章 0非公共章")
+	private Integer commonSign;
+
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseVo.java

@@ -121,4 +121,5 @@ public class CourseVo {
 	@Excel(name = "优选生成 0否 1是")
 	@ApiModelProperty("优选生成 0否 1是")
 	private Integer firstChoice;
+
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/UserGoodsListBo.java

@@ -23,6 +23,9 @@ public class UserGoodsListBo implements Serializable {
     @ApiModelProperty("密码")
     private String password;
 
+    @ApiModelProperty("密码检测标签:1检测 2不检测")
+    private Integer passwordSign;
+
     @ApiModelProperty("当前时间戳")
     @NotBlank(message = "当前时间戳不能为空")
     private Long stamp;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -151,7 +151,7 @@ public interface IGoodsService extends IService<Goods> {
 
 	String getBusinessName(Long goodsId);
 
-	List<UserOrderGoodsListVo> getUserOrderGoods(UserGoodsListBo bo);
+	UserNewGoodsVo getUserOrderGoods(UserGoodsListBo bo);
 
 	Map<String,String> checkUserAccount(UserGoodsListBo bo);
 

+ 58 - 46
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -1856,6 +1856,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
 
             redisCache.deleteObject(key);
         } catch (Exception e) {
+            e.printStackTrace();
             //释放
             e.printStackTrace();
             redisCache.deleteObject(key);
@@ -5081,7 +5082,10 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     }
 
     @Override
-    public List<UserOrderGoodsListVo> getUserOrderGoods(UserGoodsListBo bo) {
+    public UserNewGoodsVo getUserOrderGoods(UserGoodsListBo bo) {
+        UserNewGoodsVo vo = new UserNewGoodsVo();
+        //祥粤
+        Long tenantId = 867735392558919680L;
         List<User> users = null;
         if (StringUtils.isNotBlank(bo.getIdNum())) {
             users = iUserService.getUserByIdNumNotTenant(bo.getIdNum());
@@ -5093,52 +5097,56 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
             throw new CustomException("用户信息获取有误:" + JSONObject.toJSONString(bo));
         }
         //获取用户订单商品信息
-        List<UserOrderGoodsListVo> voList = new ArrayList<>();
-        users.forEach(item -> {
-            List<UserOrderGoodsListVo> orderGoodsListByUser = baseMapper.getUserOrderGoodsList(item.getUserId());
-            voList.addAll(orderGoodsListByUser);
-        });
-
-        if (CollectionUtils.isEmpty(voList)) {
-            return new ArrayList<>();
+        User user = users.stream().filter(x -> x.getTenantId().equals(tenantId)).findFirst().orElse(null);
+        if (ObjectUtils.isNull(user)){
+            return null;
         }
 
-        for (UserOrderGoodsListVo goodsVo : voList) {
-            User user = users.stream().filter(x -> x.getTenantId().equals(goodsVo.getTenantId())).findFirst().orElse(null);
-            Long tenantId = goodsVo.getTenantId();
-            //缓存用户信息key
-            String key = String.format("KQTZ%s", user.getUserId());
-            SysTenant sysTenant = iSysTenantService.getById(tenantId);
-            //课程
-            String h5Url = "";
-            String pcUrl = "";
-            switch (goodsVo.getCourseType()) {
-                case 1://视频
-                    h5Url = String.format("%s%s/pages/learn/index?skipPort=%s", URL_PREFIX, sysTenant.getHostH5(), key);
-                    pcUrl = String.format("%s%s/person-center/my-course?skipPort=%s", URL_PREFIX, sysTenant.getHostPc(), key);
-                    break;
-                case 2://题库
-                    h5Url = String.format("%s%s/pages/questionBank/index?skipPort=%s", URL_PREFIX, sysTenant.getHostH5(), key);
-                    pcUrl = String.format("%s%s/person-center/my-bank/index?skipPort=%s", URL_PREFIX, sysTenant.getHostPc(), key);
-                    break;
-                case 6://直播
-                    h5Url = String.format("%s%s/pages/learn/index?skipPort=%s", URL_PREFIX, sysTenant.getHostH5(), key);
-                    pcUrl = String.format("%s%s/person-center/my-live?skipPort=%s", URL_PREFIX, sysTenant.getHostPc(), key);
-                    break;
+        //是否校验密码
+        if (ObjectUtils.isNotNull(bo.getPasswordSign()) && bo.getPasswordSign() == 1){
+            String password = null;
+            if(bo.getPassword().length()>20){
+                String rsaPrivate = null;
+                try {
+                    InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config/pri.key");
+                    rsaPrivate = AES.getStringByInputStream_1(certStream);
+                    certStream.close();
+                    password = AES.decrypt(bo.getPassword(),rsaPrivate);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }else{
+                password = bo.getPassword();
+            }
+            if (!SecurityUtils.matchesPassword(password,user.getPassword()))
+            {
+                throw new BaseException("登录信息密码错误");
             }
 
-            goodsVo.setH5Url(h5Url);
-            goodsVo.setPcUrl(pcUrl);
-            UserPhoneBo phoneBo = new UserPhoneBo();
-            phoneBo.setTelphone(bo.getTelphone());
-            phoneBo.setTenantId(tenantId);
-            phoneBo.setIdNum(bo.getIdNum());
-
-            //缓存用户信息
-            redisCache.setCacheObjectTenant(tenantId + ":" + key, JSONObject.toJSONString(phoneBo), 12, TimeUnit.HOURS);
+        }
 
+        List<UserOrderGoodsListVo> goodsList = baseMapper.getUserOrderGoodsList(user.getUserId());
+        if (CollectionUtils.isNotEmpty(goodsList)) {
+            vo.setGoodsNames(goodsList.stream().limit(3).map(UserOrderGoodsListVo::getCategoryName).collect(Collectors.toList()));
         }
-        return voList;
+
+        //缓存用户信息key
+        String key = String.format("KQTZ%s", user.getUserId());
+        SysTenant sysTenant = iSysTenantService.getById(tenantId);
+
+        //视频
+        String h5Url = String.format("%s%s/pages/learn/index?skipPort=%s", URL_PREFIX, sysTenant.getHostH5(), key);
+        String pcUrl = String.format("%s%s/person-center/my-course?skipPort=%s", URL_PREFIX, sysTenant.getHostPc(), key);
+        vo.setH5Url(h5Url);
+        vo.setPcUrl(pcUrl);
+        UserPhoneBo phoneBo = new UserPhoneBo();
+        phoneBo.setTelphone(bo.getTelphone());
+        phoneBo.setTenantId(tenantId);
+        phoneBo.setIdNum(bo.getIdNum());
+
+        //缓存用户信息
+        redisCache.setCacheObjectTenant(tenantId + ":" + key, JSONObject.toJSONString(phoneBo), 12, TimeUnit.HOURS);
+        return vo;
     }
 
     @Override
@@ -5153,12 +5161,16 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         if (CollectionUtils.isEmpty(users)) {
             return null;
         }
-        User user = users.stream().filter(x ->
-                SecurityUtils.matchesPassword(bo.getPassword(), x.getPassword())
-        ).findFirst().orElse(null);
-        if (ObjectUtils.isNull(user)) {
-            return null;
+        User user = null;
+        if (ObjectUtils.isNotNull(bo.getPasswordSign()) && bo.getPasswordSign() == 1){
+             user = users.stream().filter(x ->
+                    SecurityUtils.matchesPassword(bo.getPassword(), x.getPassword())
+            ).findFirst().orElse(null);
+            if (ObjectUtils.isNull(user)) {
+                return null;
+            }
         }
+
         //新系统有账号
         Long tenantId = user.getTenantId();
         //缓存用户信息key

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/UserNewGoodsVo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.goods.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月08日 9:04
+ */
+@Data
+public class UserNewGoodsVo implements Serializable {
+
+    @ApiModelProperty("课程名称")
+    private List<String> goodsNames;
+
+    @ApiModelProperty("H5跳转路径")
+    private String h5Url;
+
+    @ApiModelProperty("pc跳转路径")
+    private String pcUrl;
+
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java

@@ -26,7 +26,7 @@ public interface ClassGradeMapper extends BaseMapper<ClassGrade> {
 
     List<GoodsVo> queryGoodsList(Long classId);
 
-    @InterceptorIgnore(tenantLine = "true")
+//    @InterceptorIgnore(tenantLine = "true")
     List<ClassGradeStudentVo> listGrade(ClassGradeUserQueryBo bo);
 
     List<ClassGradeUserListVo> listGradeInform(ClassGradeQueryBo bo);

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -1633,6 +1633,18 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
             return new ArrayList<>();
         }
         classGradeVos.forEach(item -> {
+            //班级人数
+            if (ObjectUtils.isNotNull(item.getSevenCode())){
+                List<ClassGrade> list = list(new LambdaQueryWrapper<ClassGrade>()
+                        .eq(ClassGrade::getSevenCode, item.getSevenCode())
+                        .eq(ClassGrade::getStatus, 1));
+                if (CollectionUtils.isNotEmpty(list)){
+                    Integer count = iClassGradeUserService.count(new LambdaQueryWrapper<ClassGradeUser>()
+                            .in(ClassGradeUser::getGradeId, list.stream().map(ClassGrade::getGradeId).collect(Collectors.toList()))
+                            .eq(ClassGradeUser::getStatus, 1));
+                    item.setStudentNum(count);
+                }
+            }
             //获取班级总人数
             item.setStudentNumAll(getClassUserNumAll(item.getGradeId()));
         });

+ 8 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -186,10 +186,11 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     private IUserPeriodService iUserPeriodService;
 
     @Autowired
-    private ISysOldOrgService sysOldOrgService;
+    private ICourseModuleService iCourseModuleService;
 
     @Autowired
-    private ICourseModuleService iCourseModuleService;
+    private ISysOldOrgService sysOldOrgService;
+
 
     private String SEVEN_OFFICIALPUSH_INFOACCOUNT;
     private String SEVEN_OFFICIALPUSH_TOKEN;
@@ -475,6 +476,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         ClassPeriodUserVo classPeriodUserVos = classPeriodUserVos1.get(0);
         classPeriodUserVos.setPending(classPeriodStudentVo.getSecAllNum() - classPeriodUserVos.getPass() - classPeriodUserVos.getCheat());
         classPeriodUserVos.setExamPending(classPeriodUserVos.getExamNum() - classPeriodUserVos.getExamPass() - classPeriodUserVos.getExamCheat());
+        classPeriodStudentVo.setPending(classPeriodUserVos.getPending());
+        classPeriodStudentVo.setExamPending(classPeriodUserVos.getExamPending());
+        classPeriodStudentVo.setCheat(classPeriodUserVos.getCheat());
+        classPeriodStudentVo.setExamCheat(classPeriodUserVos.getExamCheat());
         //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过 3审核中
         Integer gradePeriodStatus = 0; //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核 3审核中
         if (Validator.isEmpty(classPeriodStudentVo.getSecAllNum()) || classPeriodStudentVo.getSecAllNum() == 0) {
@@ -2985,7 +2990,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                                 startTotalTime = classPeriodSectionVo.getStudyStartTime();
                             }
                         }
-                        if (endTotalTime == 0L || (Validator.isNotEmpty(classPeriodSectionVo.getStudyEndTime()) && endTotalTime.longValue() < classPeriodSectionVo.getStudyEndTime().longValue())) {
+                        if ((endTotalTime == 0L&&Validator.isNotEmpty(classPeriodSectionVo.getStudyEndTime())) || (Validator.isNotEmpty(classPeriodSectionVo.getStudyEndTime()) && endTotalTime.longValue() < classPeriodSectionVo.getStudyEndTime().longValue())) {
                             endTotalTime = classPeriodSectionVo.getStudyEndTime();
                         }
                         classPeriodSectionVo.setPeriodStatus(userPeriodStatusVo.getPeriodStatus());

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -477,6 +477,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
 
     //学时审核确定通过
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean confirmPeriod(UserPeriodEditBo bo) {
         ClassGradeUser classGradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>()
                 .eq(ClassGradeUser::getUserId, bo.getUserId())

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentVo.java

@@ -231,4 +231,12 @@ public class ClassPeriodStudentVo {
 	private String token;
 	private Long orderGoodsId;
 	private String sevenYear;
+	@ApiModelProperty("視頻待审")
+	private Long pending;
+	@ApiModelProperty("試卷待审")
+	private Long examPending;
+	@ApiModelProperty("視頻作弊节")
+	private Long cheat;
+	@ApiModelProperty("試卷作弊节")
+	private Long examCheat;
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -92,6 +92,10 @@ private static final long serialVersionUID=1L;
     private String distributionLinkCode;
     @ApiModelProperty("分成模式 1机构分成 2业务员分成")
     private Integer divideModel;
+    @ApiModelProperty("分成类型1百分比 2固定成本")
+    private Integer divideType;
+    @ApiModelProperty("分成比率(固定成本为固定值)")
+    private BigDecimal divideRate;
     @ApiModelProperty("分成钱")
     private BigDecimal divideMoney;
     /** 七大员商品年份 */

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java

@@ -9,6 +9,7 @@ import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderInvoiceVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -61,4 +62,6 @@ public interface OrderMapper extends BaseMapper<Order> {
 
     @InterceptorIgnore(tenantLine = "true")
     Integer getStudeCountByCodeNoTenant(String sevenCode);
+
+    List<TopOldOrderInvoiceVo> getOrderInvoiceList(String orderSn);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -10,6 +10,7 @@ import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
 import com.zhongzheng.modules.order.vo.OrderVo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderInvoiceVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -122,4 +123,5 @@ public interface IOrderService extends IService<Order> {
 
 	QuestionOpenImportVo questionGoodsOpenImport(List<QuestionOpenImportBo> importBoList,Long userId,String userName);
 
+    List<TopOldOrderInvoiceVo> getOrderInvoiceList(String orderSn);
 }

+ 4 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -190,7 +190,8 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
     private IUserExamGoodsSupplementService iUserExamGoodsSupplementService;
 
     @Autowired
-    private IProfileTpService iProfileTpService;
+    private  IProfileTpService iProfileTpService;
+
 
 
     @Override
@@ -683,9 +684,9 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                                 .last("limit 1"));
                         if (ObjectUtils.isNull(subscribe)){
                             goodsVo.setSubscribeSign(1);
-                        }else if (subscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(subscribe.getExamStatus())
+                        }else if (subscribe.getSubscribeStatus() == 1  && ObjectUtils.isNotNull(subscribe.getExamStatus())
                                 && subscribe.getExamStatus() == 1
-                                && ObjectUtils.isNull(subscribe.getResult())){
+                                && ObjectUtils.isNull(userSubscribe.getResult())){
                             goodsVo.setSubscribeSign(2);
                         }else if (subscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(subscribe.getExamStatus())
                                 && subscribe.getExamStatus() == 0){

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -77,6 +77,7 @@ import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheckLog;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckService;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderInvoiceVo;
 import com.zhongzheng.modules.top.settle.domian.TopInstSettle;
 import com.zhongzheng.modules.top.settle.service.ITopInstSettleService;
 import com.zhongzheng.modules.user.domain.User;
@@ -1342,6 +1343,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     BigDecimal goodsDecimal = goodsPrice;
                     //换算订单成本和盈亏
                     TopCostTpItem topCostTpItem = tpItem;
+                    orderGoods.setDivideType(topCostTpItem.getDockType());
+                    orderGoods.setDivideRate(topCostTpItem.getDockValue());
                     if (ObjectUtil.isNotNull(topCostTpItem.getDockStatus()) && topCostTpItem.getDockStatus() == 1){
                         //启用成本扣除项
                         switch (topCostTpItem.getDockType()){
@@ -2951,6 +2954,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return importVo;
     }
 
+    @Override
+    public List<TopOldOrderInvoiceVo> getOrderInvoiceList(String orderSn) {
+        return baseMapper.getOrderInvoiceList(orderSn);
+    }
+
     private void questionOpen(User user, QuestionMerchant merchant,UserSubscribe userSubscribe,Long loginId,String loginName) {
         //商家商品
         Goods merGoods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>()

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -1441,6 +1441,9 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
                             divideLog.setRealBadMoney(badPrice);
                         }
                     }
+                    if (divideLog.getPayMoney().compareTo(BigDecimal.ZERO) == 0) {
+                        divideLog.setPayStatus(6);
+                    }
                     iTopDivideLogService.updateById(divideLog);
                 }
 
@@ -1569,6 +1572,9 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
                     divideLog.setUnDeductMoney(new BigDecimal(0));
                     divideLog.setPayMoney(divideLog.getTotalPayMoney().subtract(divideLog.getDeductMoney()));
                 }
+                if (divideLog.getPayMoney().compareTo(BigDecimal.ZERO) == 0) {
+                    divideLog.setPayStatus(6);
+                }
                 iTopDivideLogService.updateById(divideLog);
             }
         }

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/sdk/service/impl/TopNuoMplatformLogServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -26,6 +27,7 @@ import com.zhongzheng.modules.sdk.mapper.TopNuoMplatformLogMapper;
 import com.zhongzheng.modules.sdk.service.ITopNuoMplatformLogService;
 import com.zhongzheng.modules.sdk.service.NuonuoService;
 import com.zhongzheng.modules.sdk.vo.TopNuoMplatformLogVo;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -242,6 +244,13 @@ public class TopNuoMplatformLogServiceImpl extends ServiceImpl<TopNuoMplatformLo
                             iTopOldOrderService.orderInvoice(orderNo);
                         }
                         else if(mplatformLog.getFromPlat()==2){
+                            //B端同步发票状态
+                            TopOldOrder oldOrder = iTopOldOrderService.getOne(new LambdaQueryWrapper<TopOldOrder>()
+                                    .eq(TopOldOrder::getOrderSn, orderNo));
+                            if (ObjectUtils.isNotNull(oldOrder)){
+                                oldOrder.setInvoiceStatus(1);//已开票
+                                iTopOldOrderService.updateById(oldOrder);
+                            }
                             //旧系统
                             Map<String, String> params = new HashMap<>();
                             Long nowTime = DateUtils.getNowTime();

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysWebServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.system.service.impl;
 
+import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.zhongzheng.common.exception.CustomException;
@@ -35,6 +36,12 @@ public class SysWebServiceImpl implements ISysWebService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean createTenantConfig(TopSysTenantRegisterAddBo bo) {
+        if(Validator.isNotEmpty(bo.getHostPc())){
+            bo.setHostPc(bo.getHostPc().trim());
+        }
+        if(Validator.isNotEmpty(bo.getHostH5())){
+            bo.setHostH5(bo.getHostH5().trim());
+        }
         Collection<SysConfig> coll = new HashSet<>();
         SysConfig config1 = new SysConfig();
         config1.setTenantId(bo.getTenantId());

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideLogMapper.java

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo;
 import com.zhongzheng.modules.top.financial.domain.TopDivideLog;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 
 import java.util.List;
 
@@ -18,11 +19,15 @@ import java.util.List;
 public interface TopDivideLogMapper extends BaseMapper<TopDivideLog> {
     List<TopDivideLogVo> getCompanyList(TopDivideLogQueryBo bo);
 
+    Long getCompanyWaitCount(TopOldOrderQueryBo bo);
+
     List<TopDivideLogVo> getCheckList(TopDivideLogQueryBo bo);
 
     TopDivideLogVo getSumMoney(TopDivideLogQueryBo bo);
 
     List<TopDivideLogVo> getSellerList(TopDivideLogQueryBo bo);
 
+    Long getSellerListWaitCount(TopOldOrderQueryBo bo);
+
     List<TopDivideLogVo> getCommissionList(TopDivideLogQueryBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideOrderMapper.java

@@ -8,6 +8,7 @@ import com.zhongzheng.modules.top.financial.domain.TopDivideOrder;
 import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 
 import java.math.BigDecimal;
@@ -34,6 +35,8 @@ public interface TopDivideOrderMapper extends BaseMapper<TopDivideOrder> {
 
     List<TopDivideOrderVo> getMonthCreditList(TopDivideOrderQueryBo bo);
 
+    Long getMonthCreditWaitCount(TopDivideOrderQueryBo bo);
+
     List<String> getMonthFinishAllTenant(TopDivideOrderQueryBo bo);
 
     List<TopDivideOrderVo> getMonthRefundList(TopDivideOrderQueryBo bo);

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideLogService.java

@@ -11,6 +11,7 @@ import com.zhongzheng.modules.top.financial.domain.TopDivideLog;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderEditBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 
 import java.util.Collection;
 import java.util.List;
@@ -68,8 +69,12 @@ public interface ITopDivideLogService extends IService<TopDivideLog> {
 
 	TopDivideLogVo getSumMoney(TopDivideLogQueryBo bo);
 
+	Long getCompanyWaitCount(TopOldOrderQueryBo bo);
+
 	List<TopDivideLogVo> getSellerList(TopDivideLogQueryBo bo);
 
+	Long getSellerListWaitCount(TopOldOrderQueryBo bo);
+
 	List<TopDivideOrderVo> getCommissionList(TopDivideOrderQueryBo bo);
 
 	TopDivideOrderVo getCommissionDetail(TopDivideOrderQueryBo bo);

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideOrderService.java

@@ -9,6 +9,7 @@ import com.zhongzheng.modules.top.financial.domain.TopDivideOrder;
 import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 
 import java.math.BigDecimal;
@@ -68,6 +69,8 @@ public interface ITopDivideOrderService extends IService<TopDivideOrder> {
 
 	List<TopDivideOrderVo> getMonthCreditList(TopDivideOrderQueryBo bo);
 
+	Long getMonthCreditWaitCount(TopDivideOrderQueryBo bo);
+
 	List<String> getMonthFinishAllTenant(TopDivideOrderQueryBo bo);
 
 	List<TopDivideOrderVo> getMonthRefundList(TopDivideOrderQueryBo bo);

+ 18 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideLogServiceImpl.java

@@ -22,6 +22,7 @@ import com.zhongzheng.modules.top.financial.service.ITopDivideLogService;
 import com.zhongzheng.modules.top.financial.service.ITopDivideOrderService;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 import com.zhongzheng.modules.top.order.service.ITopOrderBankPayService;
@@ -159,7 +160,7 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
 
     @Override
     public List<TopDivideLogVo> getCompanyList(TopDivideLogQueryBo bo) {
-        if(Validator.isNotEmpty(bo.getPayStatus())){
+        if(Validator.isNotEmpty(bo.getPayStatus())&&bo.getPayStatus().size()>0){
             List<Integer> payStatus = new ArrayList<>();
             for(Integer status : bo.getPayStatus()){
                 if(status==2){
@@ -174,7 +175,7 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
             }
             bo.setPayStatus(payStatus);
         }
-        if(Validator.isNotEmpty(bo.getOverPayDay())){
+        if(Validator.isNotEmpty(bo.getOverPayDay())&&bo.getOverPayDay()>0){
             bo.setNotPayStatus(1);
             if(bo.getOverPayDay()==1){
                 bo.setOverPayDayTime(DateUtils.getNowTime()-(7*24*3600));
@@ -285,9 +286,14 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
         return baseMapper.getSumMoney(bo);
     }
 
+    @Override
+    public Long getCompanyWaitCount(TopOldOrderQueryBo bo) {
+        return baseMapper.getCompanyWaitCount(bo);
+    }
+
     @Override
     public List<TopDivideLogVo> getSellerList(TopDivideLogQueryBo bo) {
-        if(Validator.isNotEmpty(bo.getPayStatus())){
+        if(Validator.isNotEmpty(bo.getPayStatus())&&bo.getPayStatus().size()>0){
             List<Integer> payStatus = new ArrayList<>();
             for(Integer status : bo.getPayStatus()){
                 if(status==2){
@@ -302,7 +308,7 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
             }
             bo.setPayStatus(payStatus);
         }
-        if(Validator.isNotEmpty(bo.getOverPayDay())){
+        if(Validator.isNotEmpty(bo.getOverPayDay())&&bo.getOverPayDay()>0){
             bo.setNotPayStatus(1);
             if(bo.getOverPayDay()==1){
                 bo.setOverPayDayTime(DateUtils.getNowTime()-(7*24*3600));
@@ -332,9 +338,14 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
         return list;
     }
 
+    @Override
+    public Long getSellerListWaitCount(TopOldOrderQueryBo bo) {
+        return baseMapper.getSellerListWaitCount(bo);
+    }
+
     @Override
     public List<TopDivideOrderVo> getCommissionList(TopDivideOrderQueryBo bo) {
-        if(Validator.isNotEmpty(bo.getCheckStatus())){
+        if(Validator.isNotEmpty(bo.getCheckStatus())&&bo.getCheckStatus().size()>0){
             List<Integer> payStatus = new ArrayList<>();
             for(Integer status : bo.getCheckStatus()){
                 if(status==0){
@@ -374,6 +385,8 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
             orderTotalPrice = orderTotalPrice.add(vo.getOrderPrice());
             pretaxTotalBrokerage = pretaxTotalBrokerage.add(vo.getPretaxBrokerage());
         }
+        Long result =iTopDivideOrderService.getMonthCreditWaitCount(bo);
+        map.put("waitAuditTotal", Validator.isNotEmpty(result)?result:0);
         map.put("orderTotalPrice",orderTotalPrice);  //订单金额
         map.put("BrokerageTotalMoney",brokerageTotalMoney); //结算佣金
         map.put("pretaxTotalBrokerage",pretaxTotalBrokerage);//税前佣金

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideOrderServiceImpl.java

@@ -15,6 +15,7 @@ import com.zhongzheng.modules.top.financial.service.ITopDivideOrderService;
 import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -240,6 +241,11 @@ public class TopDivideOrderServiceImpl extends ServiceImpl<TopDivideOrderMapper,
         return baseMapper.getMonthCreditList(bo);
     }
 
+    @Override
+    public Long getMonthCreditWaitCount(TopDivideOrderQueryBo bo) {
+        return baseMapper.getMonthCreditWaitCount(bo);
+    }
+
     @Override
     public List<String> getMonthFinishAllTenant(TopDivideOrderQueryBo bo) {
         return baseMapper.getMonthFinishAllTenant(bo);

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java

@@ -84,6 +84,8 @@ public class TopOldOrderGoodsAddBo {
     private Integer checkStatus;
     @ApiModelProperty("旧系统自增ID")
     private Long signId;
+    @ApiModelProperty("关联的旧系统自增ID(修改学员时使用)")
+    private Long relSignId;
     @ApiModelProperty("学员名称")
     private String userName;
     @ApiModelProperty("学员身份证")
@@ -92,6 +94,14 @@ public class TopOldOrderGoodsAddBo {
     private String userPhone;
     @ApiModelProperty("分成模式 1机构分成 2业务员分成")
     private Integer divideModel;
+    @ApiModelProperty("分成类型1百分比 2固定成本")
+    private Integer divideType;
+    @ApiModelProperty("分成比率(固定成本为固定值)")
+    private BigDecimal divideRate;
     @ApiModelProperty("分成钱")
     private BigDecimal divideMoney;
+    @ApiModelProperty("补款金额")
+    private BigDecimal repairMoney;
+    @ApiModelProperty("补款证明")
+    private String repairProve;
 }

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java

@@ -145,6 +145,22 @@ public class TopOldOrderQueryBo extends BaseEntity {
 	private Integer billOverType;
 	@ApiModelProperty("运营类型:1代运营 2独立运营")
 	private Integer operationType;
+	@ApiModelProperty("角色ID列表")
+	private List<Long> roleIds;
 
+	@ApiModelProperty("机构ID")
+	private List<String> tenantIds;
+
+
+	@ApiModelProperty("1已打款 0待支付 2待审核 3打款中 4打款失败 5审核中")
+	private List<Integer> payStatus;
+
+	@ApiModelProperty("非支付状态")
+	private Integer notPayStatus;
+
+	@ApiModelProperty("预付超期 1:7天 2:30 3:半年 4:1年")
+	private Integer overPayDay;
 
+	@ApiModelProperty("预付超期时间戳")
+	private Long overPayDayTime;
 }

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.top.goods.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
@@ -159,4 +160,12 @@ private static final long serialVersionUID=1L;
     private BigDecimal instCost;
     /** 运营类型:1代运营 2独立运营 */
     private Integer operationType;
+    @ApiModelProperty("补款金额")
+    private BigDecimal repairMoneyTotal;
+    /** 对应客户Id */
+    private Integer oldCompanyId;
+    /** 客户ID */
+    private Integer oldCustomerId;
+    /** 订单所属机构 */
+    private Integer oldInstitutionId;
 }

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderGoods.java

@@ -75,8 +75,14 @@ private static final long serialVersionUID=1L;
     private String businessFullName;
     /** 学习状态:0未开始,1学习中,2已结束 */
     private Integer checkStatus;
+    /** 学申请修改时间 */
+    private Long applyUpTime;
+    /** 申请修改原因 */
+    private String applyUpReason;
     @ApiModelProperty("旧系统自增ID")
     private Long signId;
+    @ApiModelProperty("关联的旧系统自增ID(修改学员时使用)")
+    private Long relSignId;
     @ApiModelProperty("学员名称")
     private String userName;
     @ApiModelProperty("学员身份证")
@@ -86,7 +92,18 @@ private static final long serialVersionUID=1L;
     private Long tenantId;
     @ApiModelProperty("分成模式 1机构分成 2业务员分成")
     private Integer divideModel;
+    @ApiModelProperty("分成类型1百分比 2固定成本")
+    private Integer divideType;
+    @ApiModelProperty("分成比率(固定成本为固定值)")
+    private BigDecimal divideRate;
     @ApiModelProperty("分成钱")
     private BigDecimal divideMoney;
+    @ApiModelProperty("补款金额")
+    private BigDecimal repairMoney;
+    @ApiModelProperty("补款证明")
+    private String repairProve;
+    @ApiModelProperty("订单课程所属机构")
+    private String ownInstitutionId;
+
 
 }

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java

@@ -6,8 +6,12 @@ import com.zhongzheng.modules.top.financial.bo.RefundOrderBo;
 import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderInvoiceVo;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderRefundVo;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -55,4 +59,54 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     List<String> getOrderSnByBusiness(@Param("businessName")String businessName);
 
+    List<TopOldOrderInvoiceVo> getOrderInvoiceList(String orderSn);
+
+    List<TopOrderStatisticsMoneyVo> getMoneyStatistics(TopOrderStatisticsBo bo);
+
+    BigDecimal getMoneyStatisticsTotal(@Param("startTime")Long startTime,@Param("endTime")Long endTime);
+
+    List<TopOrderStatisticsNumVo> getNumStatistics(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsMoneyVo> getTenantStatistics(TopOrderStatisticsBo bo);
+
+    BigDecimal getSingleTenantStatistics(TopOrderStatisticsBo bo);
+
+    Long getNumStatisticsTotal(@Param("startTime")Long startTime,@Param("endTime")Long endTime);
+
+    List<TopOrderStatisticsNumVo> getTenantStatisticsOrderNum(TopOrderStatisticsBo bo);
+
+    Long getSingleTenantStatisticsOrderNum(TopOrderStatisticsBo bo);
+
+    Long getNumStatisticsTotalWithBo(TopOrderStatisticsBo bo);
+
+    BigDecimal getMoneyStatisticsWithBo(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsMoneyVo> getBusinessOrderMoney(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsNumVo> getBusinessOrderNum(TopOrderStatisticsBo bo);
+
+    Long getOrderGoodsNumStatisticsTotalWithBo(TopOrderStatisticsBo bo);
+
+    List<String> getBusinessList(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsTwoVo> getStatisticsView(TopOrderStatisticsViewBo bo);
+
+    List<TopOrderStatisticsDetailVo> getDetailStatistics(TopOrderStatisticsBo bo);
+
+    TopOrderStatisticsDetailTotalVo getDetailStatisticsTotal(@Param("startTime")Long startTime,@Param("endTime")Long endTime);
+
+    Long getOrderTenant(Long customerId);
+
+    List<TopOrderCustomerVo> getCustomerList();
+
+    List<TopOrderStatisticsDetailVo> getTenantDetailList(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsDetailVo> getBusinessDetailList(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsTwoVo> getStatisticsTenantView(TopOrderStatisticsViewBo bo);
+
+    List<TopOrderStatisticsTwoVo> getStatisticsBusinessView(TopOrderStatisticsViewBo bo);
+
+    List<TopOrderStatisticsTwoVo> getTenantCreateList(TopOrderStatisticsViewBo bo);
+
 }

+ 62 - 8
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java

@@ -2,19 +2,16 @@ package com.zhongzheng.modules.top.goods.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.modules.top.financial.bo.*;
 import com.zhongzheng.modules.top.financial.vo.*;
 import com.zhongzheng.modules.top.goods.bo.*;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
-import com.zhongzheng.modules.top.goods.vo.TopOrderStatisticsVo;
-import com.zhongzheng.modules.top.goods.vo.TopRefundOrderDetailVo;
+import com.zhongzheng.modules.top.goods.vo.*;
 import com.zhongzheng.modules.top.order.bo.PayOrderCallBackBo;
-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.bo.TopOrderStatisticsBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.vo.*;
 
 import java.util.Collection;
 import java.util.List;
@@ -33,6 +30,12 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	 */
 	TopOldOrderVo queryById(String orderSn);
 
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	List<String> queryOrderBusinessName(String orderSn);
+
 	/**
 	 * 查询列表
 	 */
@@ -134,4 +137,55 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	void informRemindOrderCheck(String result);
 
 	boolean updateFinanceRemark(TopUpdateRemarkBo bo);
+
+	TopOldOrderUpVo getOrderGoodsApplyList(String orderSn);
+
+	List<TopOldOrderInvoiceVo> getOrderInvoiceList(String orderSn);
+
+    List<TopOrderStatisticsMoneyVo> orderMoneyStatisticsList(TopOrderStatisticsBo bo);
+
+    List<TopOrderStatisticsNumVo> orderNumStatisticsList(TopOrderStatisticsBo bo);
+
+	List<TopOrderStatisticsMoneyVo> orderMoneyTenantStatistics(TopOrderStatisticsBo bo);
+
+	List<TopOrderStatisticsNumVo> orderNumTenantStatistics(TopOrderStatisticsBo bo);
+
+
+	List<TopOrderStatisticsMoneyVo> getBusinessOrderMoney(TopOrderStatisticsBo bo);
+
+	List<TopOrderStatisticsNumVo> getBusinessOrderNum(TopOrderStatisticsBo bo);
+
+	List<String> getBusinessList(TopOrderStatisticsBo bo);
+
+	TopOrderStatisticsViewVo orderStatisticsView(TopOrderStatisticsViewBo bo);
+
+	List<TopOrderStatisticsDetailVo> orderStatisticsDetail(TopOrderStatisticsBo bo);
+
+	TopSharedCustomerTotalVo getSharedStatistics(TopOrderStatisticsBo bo);
+
+	TopCustomerStatsVo getCustomerStatsData(TopOrderStatisticsBo bo);
+
+	TopCertStatsVo getCertStatsData(TopOrderStatisticsBo bo);
+
+	TableDataInfo<TopOrderAreaDataVo> getOrderAreaData(TopOrderStatisticsBo bo);
+
+	TableDataInfo<TopConversionRateDataVo> getConversionRateData(TopOrderStatisticsBo bo);
+
+	List<TopOrderCustomerVo> getCustomerList();
+
+	TopOrderTotalVo getOrderTotal(TopOrderStatisticsBo bo);
+
+	List<TopOrderStatisticsDetailVo> getTenantDetailList(TopOrderStatisticsBo bo);
+
+	List<TopOrderStatisticsDetailVo> getBusinessDetailList(TopOrderStatisticsBo bo);
+
+	List<TopConversionRateTrendVo> getCustomerListData(TopOrderStatisticsBo bo);
+
+	TopOrderStatisticsViewVo getStatisticsTenantView(TopOrderStatisticsViewBo bo);
+
+	TopOrderStatisticsViewVo getStatisticsBusinessView(TopOrderStatisticsViewBo bo);
+
+	List<TopOrderStatisticsTwoVo> getTenantCreateList(TopOrderStatisticsViewBo bo);
+
+    TableDataInfo<TopConversionRateDataVo> getCustomerOrderData(TopOrderStatisticsBo bo);
 }

File diff suppressed because it is too large
+ 2093 - 190
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java


+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderGoodsListVo.java

@@ -82,6 +82,16 @@ public class TopOldOrderGoodsListVo {
 	private String refundReason;
 	@ApiModelProperty("审核意见")
 	private String checkReason;
+	@ApiModelProperty("分成类型1百分比 2固定成本")
+	private Integer divideType;
+	@ApiModelProperty("分成比率(固定成本为固定值)")
+	private BigDecimal divideRate;
+	@ApiModelProperty("分成比率(固定成本为固定值)")
+	private String divideRateStr;
+	@ApiModelProperty("分成钱")
+	private BigDecimal divideMoney;
+	@ApiModelProperty("税前奖金")
+	private BigDecimal pretaxBrokerage;
 
 	private Long signId;
 

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderInvoiceVo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.top.goods.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月18日 10:31
+ */
+@Data
+public class TopOldOrderInvoiceVo implements Serializable {
+
+    @ApiModelProperty("申请时间")
+    private Long applyUpTime;
+
+    @ApiModelProperty("发票类型")
+    private String invoiceType;
+
+    @ApiModelProperty("1开票中 0关闭  2开票完成 -1失效 -2推送失败")
+    private Integer invoiceStatus;
+
+    @ApiModelProperty("抬头")
+    private String buyerName;
+
+    @ApiModelProperty("信用代码")
+    private String buyerTaxNum;
+
+    @ApiModelProperty("收票信息")
+    private String email;
+
+    @ApiModelProperty("申请金额")
+    private BigDecimal applyPrice;
+
+    @ApiModelProperty("开票金额")
+    private BigDecimal price;
+
+    @ApiModelProperty("开票时间")
+    private Long invoiceTime;
+
+    @ApiModelProperty("发票PDF路径")
+    private String ossPdfUrl;
+
+    @ApiModelProperty("发票备注")
+    private String remark;
+
+    private String content;
+
+}

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderUpVo.java

@@ -0,0 +1,32 @@
+package com.zhongzheng.modules.top.goods.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月18日 10:31
+ */
+@Data
+public class TopOldOrderUpVo implements Serializable {
+
+    @ApiModelProperty("申请时间")
+    private Long applyUpTime;
+
+    @ApiModelProperty("申请人")
+    private String applyUpName;
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+    @ApiModelProperty("订单学员修改信息")
+    private List<TopOrderGoodsUpVo> orderGoodsList;
+
+}

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java

@@ -95,6 +95,9 @@ public class TopOldOrderVo {
 	/** 审核状态:0待审核,1已通过,2未通过,3已撤销 */
 	@ApiModelProperty("审核状态:0待审核,1已通过,2未通过,3已撤销")
 	private Integer checkStatus;
+	/** 学员审核:0待审核,1已通过,2未通过,3已撤销 */
+	@ApiModelProperty("审核状态:0待审核,1已通过")
+	private Integer userCheckStatus;
 	/** 审核意见 */
 	@ApiModelProperty("审核意见")
 	private String checkReason;
@@ -289,4 +292,7 @@ public class TopOldOrderVo {
 	/** 超收预期 1:7天,2:30天,3半年, 4:1年   */
 	@ApiModelProperty("超收预期 1:7天,2:30天,3半年, 4:1年")
 	private Long exceedType;
+
+	@ApiModelProperty("认款金额")
+	private BigDecimal acceptanceMoney;
 }

+ 59 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOrderGoodsUpVo.java

@@ -0,0 +1,59 @@
+package com.zhongzheng.modules.top.goods.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月18日 10:31
+ */
+@Data
+public class TopOrderGoodsUpVo implements Serializable {
+
+    private Long orderGoodsId;
+
+    @ApiModelProperty("修改状态:0改后 -1改前")
+    private Integer checkStatus;
+
+    @ApiModelProperty("学员姓名")
+    private String userName;
+
+    @ApiModelProperty("学员身份证")
+    private String userCard;
+
+    @ApiModelProperty("学员手机号")
+    private String userPhone;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("商品年份")
+    private String goodsYear;
+
+    @ApiModelProperty("商品标准价格")
+    private BigDecimal goodsPrice;
+
+    @ApiModelProperty("商品成交价格")
+    private BigDecimal goodsRealPrice;
+
+    @ApiModelProperty("学习状态:0未开始,1学习中,2已结束")
+    private String studyStatus;
+
+    @ApiModelProperty("补款金额")
+    private BigDecimal repairMoney;
+    @ApiModelProperty("补款证明")
+    private String repairProve;
+    @ApiModelProperty("申请修改原因")
+    private String applyUpReason;
+    @ApiModelProperty("申请修改时间")
+    private Long applyUpTime;
+
+    @ApiModelProperty("数据ID")
+    private Integer signId;
+
+
+
+}

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOrderStatisticsVo.java

@@ -44,4 +44,16 @@ public class TopOrderStatisticsVo {
     @ApiModelProperty("订单数")
     private Integer orderNum;
 
+    @ApiModelProperty("待审订单数量")
+    private Integer checkOrderNum;
+
+    @ApiModelProperty("待审退款")
+    private Integer checkRefundNum;
+
+    @ApiModelProperty("待审学员")
+    private Integer checkUserNum;
+
+    @ApiModelProperty("待审完单")
+    private Integer checkFinishNum;
+
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundOrderDetailVo.java

@@ -26,6 +26,9 @@ public class TopRefundOrderDetailVo {
     @ApiModelProperty("退款金额")
     private BigDecimal refundFee;
 
+    @ApiModelProperty("发票状态:0未开票,1已开票")
+    private Integer invoiceStatus;
+
     @ApiModelProperty("退款理由")
     private String refundReason;
 

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundUserVo.java

@@ -23,6 +23,9 @@ public class TopRefundUserVo {
     @ApiModelProperty("业务类型")
     private String businessName;
 
+    @ApiModelProperty("商品年份")
+    private String goodsYear;
+
     @ApiModelProperty("课程名称")
     private String goodsName;
 

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopAcceptanceOrderBo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月20日 8:58
+ */
+@Data
+public class TopAcceptanceOrderBo implements Serializable {
+
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("订单号集合")
+    private List<String> orderSnList;
+
+    @ApiModelProperty("业务号")
+    private String createNo;
+
+    @ApiModelProperty("下单客户")
+    private String purchaseOrg;
+
+    @ApiModelProperty("姓名/身份证号")
+    private String userKey;
+
+    @ApiModelProperty("订单列表查询标识:1认款订单列表")
+    private Integer orderSign;
+}

+ 73 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceAddBo.java

@@ -0,0 +1,73 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceAddBo implements Serializable {
+
+    /** 收款账号所属 */
+    @ApiModelProperty("收款账号所属")
+    private String incomeDepartment;
+    /** 收款类型:1对公 */
+    @ApiModelProperty("收款类型:1对公")
+    private Integer incomeType;
+    /** 收款账户名 */
+    @ApiModelProperty("收款账户名")
+    private String incomeName;
+    /** 收款账户行 */
+    @ApiModelProperty("收款账户行")
+    private String incomeBank;
+    /** 收款账户号 */
+    @ApiModelProperty("收款账户号")
+    private String incomeAccount;
+    /** 收款金额 */
+    @ApiModelProperty("收款金额")
+    private BigDecimal incomeMoney;
+    /** 到账时间 */
+    @ApiModelProperty("到账时间")
+    private Long incomeTime;
+    /** 付款账户名 */
+    @ApiModelProperty("付款账户名")
+    private String payName;
+    /** 付款账户行 */
+    @ApiModelProperty("付款账户行")
+    private String payBank;
+    /** 付款账户号 */
+    @ApiModelProperty("付款账户号")
+    private String payAccount;
+    /** 下单客户 */
+    @ApiModelProperty("下单客户")
+    private String orderClient;
+    /** 认款类型:1手动 2自动 */
+    @ApiModelProperty("认款类型:1手动 2自动")
+    private Integer acceptanceType;
+    /** 认款状态:1待认款 2已认款 3已撤销*/
+    @ApiModelProperty("认款状态:1待认款 2已认款 3已撤销")
+    private Integer acceptanceStatus;
+    /** 业务归属 */
+    @ApiModelProperty("业务归属")
+    private String businessAffiliation;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+
+
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceBo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceBo implements Serializable {
+
+    private Long acceptanceId;
+
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("业务归属")
+    private String businessAffiliation;
+
+    @ApiModelProperty("收款账户:1对公 2其他")
+    private Integer incomeType;
+
+    @ApiModelProperty("认款类型:1手动 2自动")
+    private Integer acceptanceType;
+
+    @ApiModelProperty("认款状态:1待认款 2已认款 3已撤销")
+    private Integer acceptanceStatus;
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("下单企业")
+    private String orderClient;
+
+    @ApiModelProperty("到账开始时间")
+    private Long incomeStartTime;
+
+    @ApiModelProperty("到账结束时间")
+    private Long incomeEndTime;
+
+
+}

+ 58 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceExportBo.java

@@ -0,0 +1,58 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceExportBo implements Serializable {
+
+    /** 收款账户名 */
+    @ApiModelProperty("收款账户名")
+    @Excel(name = "*收款账户名")
+    private String incomeName;
+    /** 收款账户行 */
+    @ApiModelProperty("收款账户行")
+    @Excel(name = "*收款账户名")
+    private String incomeBank;
+    /** 收款账户号 */
+    @ApiModelProperty("收款账户号")
+    @Excel(name = "*收款账户号")
+    private String incomeAccount;
+    /** 收款金额 */
+    @ApiModelProperty("收款金额")
+    @Excel(name = "*收款金额")
+    private String incomeMoney;
+    /** 到账时间 */
+    @ApiModelProperty("到账时间")
+    @Excel(name = "*到账时间 yyyy/MM/dd")
+    private String incomeTime;
+    /** 付款账户名 */
+    @ApiModelProperty("付款账户名")
+    @Excel(name = "*到账时间")
+    private String payName;
+    /** 付款账户行 */
+    @ApiModelProperty("付款账户行")
+    @Excel(name = "*付款账户行")
+    private String payBank;
+    /** 付款账户号 */
+    @ApiModelProperty("付款账户号")
+    @Excel(name = "*付款账户号")
+    private String payAccount;
+    /** 下单客户 */
+    @ApiModelProperty("下单客户")
+    @Excel(name = "下单企业")
+    private String orderClient;
+
+}

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceRelBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月20日 9:24
+ */
+@Data
+public class TopOrderAcceptanceRelBo implements Serializable {
+
+    @ApiModelProperty("认款记录ID")
+    private Long acceptanceId;
+
+    @ApiModelProperty("订单号集合")
+    private List<TopOrderGoodsAcceptanceBo> goodsAcceptanceList;
+}

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderGoodsAcceptanceBo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月20日 9:24
+ */
+@Data
+public class TopOrderGoodsAcceptanceBo implements Serializable {
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("认款金额")
+    private BigDecimal money;
+}

+ 49 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsBo.java

@@ -0,0 +1,49 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月24日 16:03
+ */
+@Data
+public class TopOrderStatisticsBo implements Serializable {
+
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("时间标识:1本周 2本月 3本年")
+    private Integer timeSign;
+
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
+    private Long customerId;
+
+    private String customerName;
+
+    @ApiModelProperty("业务号")
+    private String createNo;
+
+    @ApiModelProperty("企业ID")
+    private String tenantId;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+    @ApiModelProperty("类型:0数量 1金额")
+    private Integer type;
+
+    private Integer sort;
+}

+ 42 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderStatisticsViewBo.java

@@ -0,0 +1,42 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月24日 16:03
+ */
+@Data
+public class TopOrderStatisticsViewBo implements Serializable {
+
+    @ApiModelProperty("时间标识:1本周 2本月 3本年")
+    private Integer timeSign;
+
+    @ApiModelProperty("时间标识:1天 2周 3月")
+    private Integer viewSign;
+
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+
+    private Long customerId;
+
+    @ApiModelProperty("客户名称")
+    private String customerName;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+    @ApiModelProperty("企业ID")
+    private String tenantId;
+
+    @ApiModelProperty("业务号")
+    private String createNo;
+
+
+}

+ 71 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptance.java

@@ -0,0 +1,71 @@
+package com.zhongzheng.modules.top.order.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_order_acceptance")
+public class TopOrderAcceptance implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "acceptance_id")
+    private Long acceptanceId;
+    /** 收款账号所属 */
+    private String incomeDepartment;
+    /** 收款类型:1对公 */
+    private Integer incomeType;
+    /** 收款账户名 */
+    private String incomeName;
+    /** 收款账户行 */
+    private String incomeBank;
+    /** 收款账户号 */
+    private String incomeAccount;
+    /** 收款金额 */
+    private BigDecimal incomeMoney;
+    /** 认款金额 */
+    private BigDecimal acceptanceMoney;
+    /** 待认款金额 */
+    private BigDecimal unacceptanceMoney;
+    /** 到账时间 */
+    private Long incomeTime;
+    /** 付款账户名 */
+    private String payName;
+    /** 付款账户行 */
+    private String payBank;
+    /** 付款账户号 */
+    private String payAccount;
+    /** 下单客户 */
+    private String orderClient;
+    /** 认款类型:1手动 2自动 */
+    private Integer acceptanceType;
+    /** 认款状态:1待认款 2已认款 */
+    private Integer acceptanceStatus;
+    /** 业务归属 */
+    private String businessAffiliation;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+    /** 1有效 0无效 */
+    private Integer status;
+
+
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptanceRel.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.modules.top.order.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_order_acceptance_rel")
+public class TopOrderAcceptanceRel implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 认款ID */
+    private Long acceptanceId;
+    /** 订单号 */
+    private String orderSn;
+    /** 认款金额 */
+    private BigDecimal acceptanceMoney;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+    /** 1有效 0无效 */
+    private Integer status;
+
+
+}

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceMapper.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.top.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.TopAcceptanceOrderBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderAcceptanceBo;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+
+import java.util.List;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface TopOrderAcceptanceMapper extends BaseMapper<TopOrderAcceptance> {
+
+    List<TopOrderAcceptanceVo> queryAcceptanceList(TopOrderAcceptanceBo bo);
+
+    List<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo);
+}

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceRelMapper.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.top.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface TopOrderAcceptanceRelMapper extends BaseMapper<TopOrderAcceptanceRel> {
+
+}

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceRelService.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.top.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+
+/**
+ * 订单网银打款Service接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface ITopOrderAcceptanceRelService extends IService<TopOrderAcceptanceRel> {
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceService.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.top.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+
+import java.util.List;
+
+/**
+ * 订单网银打款Service接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface ITopOrderAcceptanceService extends IService<TopOrderAcceptance> {
+
+    List<TopOrderAcceptanceVo> queryAcceptanceList(TopOrderAcceptanceBo bo);
+
+    boolean insertByAddBo(TopOrderAcceptanceAddBo bo);
+
+    boolean deleteByAddBo(TopOrderAcceptanceBo bo);
+
+    TopOrderAcceptanceStatisticsVo statistics();
+
+    boolean importData(List<TopOrderAcceptanceExportBo> acceptanceExportBos);
+
+    List<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo);
+
+    boolean addOrderAcceptanceRel(TopOrderAcceptanceRelBo bo);
+
+    List<TopOldOrderVo> getAcceptanceOrderRelList(Long acceptanceId);
+}

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceRelServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.top.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceMapper;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceRelMapper;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceRelService;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 订单网银打款Service业务层处理
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Service
+public class TopOrderAcceptanceRelServiceImpl extends ServiceImpl<TopOrderAcceptanceRelMapper, TopOrderAcceptanceRel> implements ITopOrderAcceptanceRelService {
+
+
+}

+ 222 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceServiceImpl.java

@@ -0,0 +1,222 @@
+package com.zhongzheng.modules.top.order.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.top.financial.bo.TopOrderProceedsBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceMapper;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceRelService;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 订单网银打款Service业务层处理
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Service
+public class TopOrderAcceptanceServiceImpl extends ServiceImpl<TopOrderAcceptanceMapper, TopOrderAcceptance> implements ITopOrderAcceptanceService {
+
+    @Autowired
+    private ITopOrderAcceptanceRelService iTopOrderAcceptanceRelService;
+    @Autowired
+    private ITopOldOrderService iTopOldOrderService;
+
+    @Override
+    public List<TopOrderAcceptanceVo> queryAcceptanceList(TopOrderAcceptanceBo bo) {
+        return baseMapper.queryAcceptanceList(bo);
+    }
+
+    @Override
+    public boolean insertByAddBo(TopOrderAcceptanceAddBo bo) {
+        bo.setAcceptanceType(1);
+        bo.setIncomeType(1);
+        bo.setIncomeDepartment("祥粤学校");
+        bo.setBusinessAffiliation("学校");
+        bo.setAcceptanceStatus(1);
+        bo.setCreateTime(DateUtils.getNowTime());
+        bo.setUpdateTime(DateUtils.getNowTime());
+        TopOrderAcceptance acceptance = BeanUtil.toBean(bo, TopOrderAcceptance.class);
+        //待认款金额
+        acceptance.setUnacceptanceMoney(bo.getIncomeMoney());
+        return save(acceptance);
+    }
+
+    @Override
+    public boolean deleteByAddBo(TopOrderAcceptanceBo bo) {
+        TopOrderAcceptance acceptance = getById(bo.getAcceptanceId());
+        if (ObjectUtils.isNull(acceptance)){
+            throw new CustomException("信息获取有误");
+        }
+        if (acceptance.getAcceptanceStatus() == 2){
+            throw new CustomException("已认款记录不能删除");
+        }
+        int count = iTopOrderAcceptanceRelService.count(new LambdaQueryWrapper<TopOrderAcceptanceRel>()
+                .eq(TopOrderAcceptanceRel::getAcceptanceId, bo.getAcceptanceId())
+                .eq(TopOrderAcceptanceRel::getStatus, 1));
+        if (count > 0){
+            throw new CustomException("已有认款记录不能删除");
+        }
+        acceptance.setStatus(-1);
+        return updateById(acceptance);
+    }
+
+    @Override
+    public TopOrderAcceptanceStatisticsVo statistics() {
+        List<TopOrderAcceptance> list = list(new LambdaQueryWrapper<TopOrderAcceptance>().eq(TopOrderAcceptance::getStatus, 1));
+        if (CollectionUtils.isEmpty(list)){
+            return new TopOrderAcceptanceStatisticsVo();
+        }
+        BigDecimal reduce = list.stream().map(TopOrderAcceptance::getIncomeMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal reduce2 = list.stream().map(TopOrderAcceptance::getAcceptanceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal reduce3 = list.stream().map(TopOrderAcceptance::getUnacceptanceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        TopOrderAcceptanceStatisticsVo vo = new TopOrderAcceptanceStatisticsVo();
+        vo.setIncomeMoney(reduce);
+        vo.setAcceptanceMoney(reduce2);
+        vo.setUnacceptanceMoney(reduce3);
+        return vo;
+    }
+
+    @Override
+    public boolean importData(List<TopOrderAcceptanceExportBo> acceptanceExportBos) {
+        if (CollectionUtils.isEmpty(acceptanceExportBos)){
+            throw new CustomException("请勿导入空表");
+        }
+        List<TopOrderAcceptance> collect = acceptanceExportBos.stream().map(item -> {
+            TopOrderAcceptance bo = BeanUtil.toBean(item, TopOrderAcceptance.class);
+            bo.setIncomeMoney(new BigDecimal(item.getIncomeMoney()));
+            bo.setIncomeTime(DateUtils.dateTimeSec(item.getIncomeTime(),"yyyy/MM/dd"));
+            bo.setAcceptanceType(1);
+            bo.setIncomeType(1);
+            bo.setIncomeDepartment("祥粤学校");
+            bo.setBusinessAffiliation("学校");
+            bo.setAcceptanceStatus(1);
+            bo.setCreateTime(DateUtils.getNowTime());
+            bo.setUpdateTime(DateUtils.getNowTime());
+            return bo;
+        }).collect(Collectors.toList());
+
+        return updateBatchById(collect);
+    }
+
+    @Override
+    public List<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo) {
+        bo.setOrderSign(1);
+        List<TopOldOrderVo> acceptanceOrderList = baseMapper.getAcceptanceOrderList(bo);
+        if (CollectionUtils.isEmpty(acceptanceOrderList)){
+            return new ArrayList<>();
+        }
+        acceptanceOrderList.forEach(item -> {
+            List<String> businessNames = iTopOldOrderService.queryOrderBusinessName(item.getOrderSn());
+            item.setBusinessNames(businessNames);
+            if (ObjectUtils.isNotNull(item.getOrderReceived()) && ObjectUtils.isNotNull(item.getOrderRefunded())) {
+                item.setOrderPractical(item.getOrderReceived().subtract(item.getOrderRefunded()));
+            }
+        });
+        return acceptanceOrderList;
+    }
+
+    @Override
+    public boolean addOrderAcceptanceRel(TopOrderAcceptanceRelBo bo) {
+        TopOrderAcceptance acceptance = getById(bo.getAcceptanceId());
+        if (ObjectUtils.isNull(acceptance)){
+            throw new CustomException("认款记录数据错误!");
+        }
+        if (acceptance.getIncomeMoney().compareTo(BigDecimal.ZERO) <= 0){
+            throw new CustomException("认款记录没有到账金额!");
+        }
+        BigDecimal reduce = bo.getGoodsAcceptanceList().stream().map(TopOrderGoodsAcceptanceBo::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        if (acceptance.getIncomeMoney().compareTo(reduce) < 0){
+            throw new CustomException("认款到账金额小于本次认款订单金额,不能认款,请重新选择!");
+        }
+        //到账金额
+        BigDecimal incomeMoney = acceptance.getIncomeMoney();
+        //认款金额
+        BigDecimal acceptanceMoney = BigDecimal.ZERO;
+        List<TopOrderAcceptanceRel> acceptanceRels = new ArrayList<>();
+        for (TopOrderGoodsAcceptanceBo acceptanceBo : bo.getGoodsAcceptanceList()) {
+            TopOldOrder item = iTopOldOrderService
+                    .getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, acceptanceBo.getOrderSn()));
+            //本次认款金额
+            BigDecimal money = acceptanceBo.getMoney();
+            //认款
+            if (money.compareTo(BigDecimal.ZERO) > 0){
+                TopOrderProceedsBo proceedsBo = new TopOrderProceedsBo();
+                proceedsBo.setOrderSn(item.getOrderSn());
+                proceedsBo.setOrderReceived(money);
+                iTopOldOrderService.orderProceeds(proceedsBo);
+                acceptanceMoney = acceptanceMoney.add(money);
+                incomeMoney = incomeMoney.subtract(money);
+            }
+
+            TopOrderAcceptanceRel acceptanceRel = new TopOrderAcceptanceRel();
+            acceptanceRel.setOrderSn(item.getOrderSn());
+            acceptanceRel.setAcceptanceId(bo.getAcceptanceId());
+            acceptanceRel.setAcceptanceMoney(money);
+            acceptanceRel.setCreateTime(DateUtils.getNowTime());
+            acceptanceRel.setUpdateTime(DateUtils.getNowTime());
+            acceptanceRels.add(acceptanceRel);
+        }
+
+        //已认款金额
+        acceptance.setAcceptanceMoney(acceptance.getAcceptanceMoney().add(acceptanceMoney));
+        acceptance.setUnacceptanceMoney(acceptance.getIncomeMoney().subtract(acceptance.getAcceptanceMoney()));
+        if (acceptance.getUnacceptanceMoney().compareTo(BigDecimal.ZERO) <= 0){
+            acceptance.setAcceptanceStatus(1);//已认款
+        }
+        //保存关联关系
+        iTopOrderAcceptanceRelService.saveBatch(acceptanceRels);
+        return updateById(acceptance);
+    }
+
+    @Override
+    public List<TopOldOrderVo> getAcceptanceOrderRelList(Long acceptanceId) {
+        TopOrderAcceptance acceptance = getById(acceptanceId);
+        if (ObjectUtils.isNull(acceptance)){
+            throw new CustomException("认款记录数据错误!");
+        }
+        List<TopOrderAcceptanceRel> list = iTopOrderAcceptanceRelService
+                .list(new LambdaQueryWrapper<TopOrderAcceptanceRel>()
+                .eq(TopOrderAcceptanceRel::getAcceptanceId, acceptanceId)
+                .eq(TopOrderAcceptanceRel::getStatus, 1));
+        if (CollectionUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        TopAcceptanceOrderBo orderBo = new TopAcceptanceOrderBo();
+        orderBo.setOrderSnList(list.stream().map(TopOrderAcceptanceRel::getOrderSn).collect(Collectors.toList()));
+        List<TopOldOrderVo> acceptanceOrderList = baseMapper.getAcceptanceOrderList(orderBo);
+        acceptanceOrderList.forEach(item -> {
+            List<String> businessNames = iTopOldOrderService.queryOrderBusinessName(item.getOrderSn());
+            item.setBusinessNames(businessNames);
+            if (ObjectUtils.isNotNull(item.getOrderReceived()) && ObjectUtils.isNotNull(item.getOrderRefunded())) {
+                item.setOrderPractical(item.getOrderReceived().subtract(item.getOrderRefunded()));
+            }
+            for (TopOrderAcceptanceRel acceptanceRel : list) {
+                if (item.getOrderSn().equals(acceptanceRel.getOrderSn())){
+                    item.setAcceptanceMoney(acceptanceRel.getAcceptanceMoney());
+                }
+            }
+        });
+        return acceptanceOrderList;
+    }
+}

+ 28 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopCertStatsVo.java

@@ -0,0 +1,28 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopCertStatsVo implements Serializable {
+
+    @ApiModelProperty("安管三类人员")
+    private Long abcCount;
+
+    @ApiModelProperty("二建")
+    private Long ejCount;
+
+    @ApiModelProperty("企业资质")
+    private Long zzCount;
+
+    @ApiModelProperty("企业安证")
+    private Long azCount;
+
+}

+ 60 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateDataVo.java

@@ -0,0 +1,60 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月01日 9:39
+ */
+@Data
+public class TopConversionRateDataVo implements Serializable {
+
+    @ApiModelProperty("领取数量")
+    private Long receiveCount;
+
+    @ApiModelProperty("转化量")
+    private Long dealCount;
+
+    @ApiModelProperty("转化金额")
+    private BigDecimal dealAmount;
+
+    @ApiModelProperty("转化率")
+    private BigDecimal converDealRate;
+
+    @ApiModelProperty("同比转化量")
+    private BigDecimal tbDealRate;
+
+    @ApiModelProperty("环比转化量")
+    private BigDecimal hbDealRate;
+
+    @ApiModelProperty("占比转化量")
+    private BigDecimal zbDealRate;
+
+    @ApiModelProperty("占比转化量字符")
+    private String zbDealRateStr;
+
+    @ApiModelProperty("同比转化金额")
+    private BigDecimal tbPriceRate;
+
+    @ApiModelProperty("环比转化金额")
+    private BigDecimal hbPriceRate;
+
+    @ApiModelProperty("占比转化金额 ")
+    private BigDecimal zbPriceRate;
+
+    @ApiModelProperty("占比转化金额字符 ")
+    private String zbPriceRateStr;
+
+    @ApiModelProperty("机构名称")
+    private String orgName;
+
+    @ApiModelProperty("业务员名称")
+    private String saleMan;
+
+    @ApiModelProperty("公司名称")
+    private String CompanyName;
+}

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateTrendVo.java

@@ -0,0 +1,30 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopConversionRateTrendVo implements Serializable {
+
+    @ApiModelProperty("")
+    private Long dealCount;
+
+    @ApiModelProperty("")
+    private String date;
+
+    @ApiModelProperty("")
+    private String saleName;
+
+    @ApiModelProperty("")
+    private Long dealAmount;
+
+    @ApiModelProperty("")
+    private String orgName;
+
+}

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopConversionRateVo.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopConversionRateVo implements Serializable {
+
+    @ApiModelProperty("数据")
+    private List<TopConversionRateDataVo> _Data;
+
+    private Long CurrentPageIndex;
+
+    private Long PageSize;
+
+    private Long TotalItemCount;
+
+    private Long TotalPageCount;
+
+    private Long StartRecordIndex;
+
+    private Long EndRecordIndex;
+
+    private Long PageNumber;
+
+    private Long TotalCount;
+
+    private Long TotalPage;
+
+}

+ 34 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopCustomerStatsVo.java

@@ -0,0 +1,34 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopCustomerStatsVo implements Serializable {
+
+    @ApiModelProperty("转化金额")
+    private BigDecimal orderTotalPrice;
+
+    @ApiModelProperty("转化量")
+    private Long dealCount;
+
+    @ApiModelProperty("已领取")
+    private Long receiveCount;
+
+    @ApiModelProperty("总客户量")
+    private Long totalCount;
+
+    @ApiModelProperty("转化率")
+    private BigDecimal dealRate;
+
+    @ApiModelProperty("待领取")
+    private Long unclaimedCount;
+
+}

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceStatisticsVo.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月19日 16:09
+ */
+@Data
+public class TopOrderAcceptanceStatisticsVo implements Serializable {
+
+    @ApiModelProperty("到账金额")
+    private BigDecimal incomeMoney;
+
+    @ApiModelProperty("认款金额")
+    private BigDecimal acceptanceMoney;
+
+    @ApiModelProperty("待认款金额")
+    private BigDecimal unacceptanceMoney;
+}

+ 80 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceVo.java

@@ -0,0 +1,80 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceVo implements Serializable {
+
+    private Long acceptanceId;
+    /** 收款账号所属 */
+    @ApiModelProperty("收款账号所属")
+    private String incomeDepartment;
+    /** 收款类型:1对公 */
+    @ApiModelProperty("收款类型:1对公")
+    private Integer incomeType;
+    /** 收款账户名 */
+    @ApiModelProperty("收款账户名")
+    private String incomeName;
+    /** 收款账户行 */
+    @ApiModelProperty("收款账户行")
+    private String incomeBank;
+    /** 收款账户号 */
+    @ApiModelProperty("收款账户号")
+    private String incomeAccount;
+    /** 收款金额 */
+    @ApiModelProperty("收款金额")
+    private BigDecimal incomeMoney;
+    /** 认款金额 */
+    @ApiModelProperty("认款金额")
+    private BigDecimal acceptanceMoney;
+    /** 待认款金额 */
+    @ApiModelProperty("待认款金额")
+    private BigDecimal unacceptanceMoney;
+    /** 到账时间 */
+    @ApiModelProperty("到账时间")
+    private Long incomeTime;
+    /** 付款账户名 */
+    @ApiModelProperty("付款账户名")
+    private String payName;
+    /** 付款账户行 */
+    @ApiModelProperty("付款账户行")
+    private String payBank;
+    /** 付款账户号 */
+    @ApiModelProperty("付款账户号")
+    private String payAccount;
+    /** 下单客户 */
+    @ApiModelProperty("下单客户")
+    private String orderClient;
+    /** 认款类型:1手动 2自动 */
+    @ApiModelProperty("认款类型:1手动 2自动")
+    private Integer acceptanceType;
+    /** 认款状态:1待认款 2已认款 3已撤销*/
+    @ApiModelProperty("认款状态:1待认款 2已认款 3已撤销")
+    private Integer acceptanceStatus;
+    /** 业务归属 */
+    @ApiModelProperty("业务归属")
+    private String businessAffiliation;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+
+
+}

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAreaDataVo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopOrderAreaDataVo implements Serializable {
+
+    @ApiModelProperty("城市")
+    private String area;
+
+    @ApiModelProperty("转化金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty("转化数量")
+    private Long num;
+
+}

+ 37 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAreaVo.java

@@ -0,0 +1,37 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月31日 14:50
+ */
+@Data
+public class TopOrderAreaVo implements Serializable {
+
+    @ApiModelProperty("数据")
+    private List<TopOrderAreaDataVo> _Data;
+
+    private Long CurrentPageIndex;
+
+    private Long PageSize;
+
+    private Long TotalItemCount;
+
+    private Long TotalPageCount;
+
+    private Long StartRecordIndex;
+
+    private Long EndRecordIndex;
+
+    private Long PageNumber;
+
+    private Long TotalCount;
+
+    private Long TotalPage;
+
+}

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderCustomerVo.java

@@ -0,0 +1,20 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年11月02日 8:50
+ */
+@Data
+public class TopOrderCustomerVo implements Serializable {
+
+    @ApiModelProperty("客户ID")
+    private Long customerId;
+
+    @ApiModelProperty("客户名称")
+    private String customerName;
+}

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsDetailTotalVo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月24日 16:12
+ */
+@Data
+public class TopOrderStatisticsDetailTotalVo implements Serializable {
+
+    @ApiModelProperty("金额总数")
+    private BigDecimal moneyTotal;
+
+    @ApiModelProperty("订单总数")
+    private Long orderNumTotal;
+
+}

+ 64 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderStatisticsDetailVo.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月24日 16:12
+ */
+@Data
+public class TopOrderStatisticsDetailVo implements Serializable {
+
+    @ApiModelProperty("客户ID")
+    private Long customerId;
+
+    @ApiModelProperty("机构ID")
+    private Long tenantId;
+
+    @ApiModelProperty("客户名称")
+    private String customerName;
+
+    @ApiModelProperty("订单数量")
+    private Long orderNum;
+
+    @ApiModelProperty("订单类型:1旧系统 2新系统")
+    private Integer orderType;
+
+    @ApiModelProperty("环比")
+    private BigDecimal weekRate;
+
+    @ApiModelProperty("同比")
+    private BigDecimal yearRate;
+
+    @ApiModelProperty("占比")
+    private String occupationRate;
+
+    @ApiModelProperty("金额")
+    private BigDecimal money;
+
+    @ApiModelProperty("环比")
+    private BigDecimal moneyWeekRate;
+
+    @ApiModelProperty("同比")
+    private BigDecimal moneyYearRate;
+
+    @ApiModelProperty("占比")
+    private String moneyOccupationRate;
+
+    @ApiModelProperty("机构名称")
+    private String tenantName;
+
+    @ApiModelProperty("业务号")
+    private String createNo;
+
+    @ApiModelProperty("业务员名称")
+    private String createUsername;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+}

Some files were not shown because too many files changed in this diff