Quellcode durchsuchen

1.大中型统计报表-查询错误类型时分为三大类查询
2.新增查询错误类型详情列表与导出功能

GouGengquan vor 5 Monaten
Ursprung
Commit
71ef2a00bc

+ 27 - 0
biz-base/src/main/java/com/dayou/controller/MajorStatisticalStatementController.java

@@ -103,6 +103,33 @@ public class MajorStatisticalStatementController extends BaseController{
     }
 
     /**
+     * 查询错误类型详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorPerformanceDeductionDetailVO>
+     */
+    @GetMapping("/errorType/getMajorErrorTypeCountVO/detail")
+    public RestResponse<Page<MajorPerformanceDeductionDetailVO>> getMajorErrorTypeDetailVO(Page page, MajorStatisticalSelectDTO dto) {
+        return RestResponse.data(majorStatisticalStatementService.getMajorErrorTypeDetailVO(page, dto));
+    }
+
+    /**
+     * 导出错误类型详情列表
+     * @param dto 查询dto
+     */
+    @GetMapping("/errorType/getMajorErrorTypeCountVO/detail/export")
+    public void exportMajorErrorTypeDetailVO(MajorStatisticalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<MajorPerformanceDeductionDetailVO> result = majorStatisticalStatementService.exportMajorErrorTypeDetailVO(dto);
+        String name = null;
+        if (dto.getCheckType().equals("com")) {
+            name = "公司审核错误统计列表详情";
+        }else {
+            name = "部门内部错误统计列表详情";
+        }
+        exportPlus(response,name,result, MajorPerformanceDeductionDetailVO.class);
+    }
+
+    /**
      * 根据部门id获取部门绩效扣分
      * @param dto 查询dto
      * @return List<MajorPerformanceDeductionVO>

+ 15 - 0
dao/src/main/java/com/dayou/mapper/MajorStatisticalStatementMapper.java

@@ -53,6 +53,21 @@ public interface MajorStatisticalStatementMapper {
     List<MajorErrorTypeCountVO> getMajorErrorTypeCountVO(@Param("dto") MajorStatisticalSelectDTO dto, @Param("self") Boolean self, @Param("dep") Boolean dep);
 
     /**
+     * 查询错误类型详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorPerformanceDeductionDetailVO>
+     */
+    Page<MajorPerformanceDeductionDetailVO> getMajorErrorTypeDetailVO(@Param("page") Page page, @Param("dto") MajorStatisticalSelectDTO dto);
+
+    /**
+     * 导出错误类型详情列表
+     * @param dto 查询dto
+     * @return List<MajorPerformanceDeductionDetailVO>
+     */
+    List<MajorPerformanceDeductionDetailVO> exportMajorErrorTypeDetailVO(@Param("dto") MajorStatisticalSelectDTO dto);
+
+    /**
      * 查询错误详情列表
      * @param page 分页
      * @param dto 查询dto

+ 433 - 317
dao/src/main/resources/mapper/MajorStatisticalStatementMapper.xml

@@ -317,325 +317,394 @@
         SELECT user.id AS userId,
         user.departmentId,
         user.userName,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','委托书界定事项和报告描述不符','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount01,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','方位图有误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount02,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','实景图有误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount03,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','测算参数取值不充分','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount04,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','估价结果确定方式不恰当','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount05,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','估价方法表述不完整','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount06,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','实物、权益、区位描述缺项','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount07,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','价值定义表述不完整','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount08,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','非重要文字和数据录入错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount09,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','估价结果价格有误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount10,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','大小写不一致','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount11,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','面积错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount12,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','委托方函重要数据出错','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount13,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','委托人名称出错','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount14,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','假设限制条件错漏','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount15,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','价值定义表述错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount16,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','报告章节缺漏','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount17,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','报告出具日期错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount18,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','报告有效期错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount19,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','重要文字和数据录入错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount20,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','估价对象错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount21,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','估价目的错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount22,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','价值时点设定出错','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount23,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','登记状况错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount24,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','权利状况错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount25,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','利用状况错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount26,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','技术路线错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount27,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','关键参数取值错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount28,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','编造虚假案例','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount29,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','编造虚假照片','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount30,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','估价依据资料严重不全','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount31,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','评估结果严重失真超30%以上','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
-        </if>
-        ) AS errorTypeCount32,
-        (SELECT COUNT(id) FROM business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND production_id
-        = orderInfo.production_id AND reason LIKE CONCAT('%','关键文字和数据错误','%') AND deleted = 0
-        <if test="dto.checkType == 'dep'">
-            AND check_loop = '初审'
-        </if>
-        <if test="dto.checkType == 'com'">
-            AND check_loop != '初审'
+        <if test="dto.mistakeType == 'normal'">
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','委托书界定事项和报告描述不符','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount01,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','方位图有误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount02,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','实景图有误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount03,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','测算参数取值不充分','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount04,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价结果确定方式不恰当','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount05,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价方法表述不完整','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount06,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','实物、权益、区位描述缺项','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount07,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','价值定义表述不完整','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount08,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','非重要文字和数据录入错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount09
+        </if>
+        <if test="dto.mistakeType == 'hard'">
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价结果价格有误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount10,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','大小写不一致','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount11,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','面积错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount12,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','委托方函重要数据出错','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount13,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','委托人名称出错','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount14,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','假设限制条件错漏','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount15,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','价值定义表述错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount16,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','报告章节缺漏','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount17,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','报告出具日期错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount18,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','报告有效期错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount19,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','重要文字和数据录入错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount20
+        </if>
+        <if test="dto.mistakeType == 'fatal'">
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价对象错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount21,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价目的错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount22,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','价值时点设定出错','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount23,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','登记状况错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount24,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','权利状况错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount25,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','利用状况错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount26,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','技术路线错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount27,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','关键参数取值错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount28,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','编造虚假案例','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount29,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','编造虚假照片','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount30,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价依据资料严重不全','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount31,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','评估结果严重失真超30%以上','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount32,
+            (SELECT COUNT(per.id) FROM major
+            INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
+            INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
+            WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','关键文字和数据错误','%')
+            <if test="dto.checkType == 'dep'">
+                AND check_loop = '初审'
+            </if>
+            <if test="dto.checkType == 'com'">
+                AND check_loop != '初审'
+            </if>
+            ) AS errorTypeCount33
         </if>
-        ) AS errorTypeCount33
-        FROM (SELECT DISTINCT user.id AS id,
-        user.`name` AS userName,
-        department.id AS departmentId
-        FROM user,post,user_post,sorted_department,department
-        WHERE `user`.id = user_post.user_id
-        AND user_post.post_id = post.id
-        AND post.department_id = sorted_department.department_id
-        AND sorted_department.department_id = department.id
-        AND sorted_department.deleted = 0
-        AND user_post.deleted = 0
-        AND sorted_department.business_type = 'MAJOR_BUSINESS'
+        FROM (
+            SELECT DISTINCT `user`.id AS id,
+            `user`.`name` AS userName,
+            department.id AS departmentId
+            FROM
+            `user`,
+            post,
+            user_post,
+            sorted_department,
+            department
+            WHERE
+            `user`.id = user_post.user_id
+            AND user_post.post_id = post.id
+            AND post.department_id = sorted_department.department_id
+            AND sorted_department.department_id = department.id
+            AND sorted_department.deleted = 0
+            AND user_post.deleted = 0
+            AND sorted_department.business_type = 'MAJOR_BUSINESS'
         ) AS user
-        LEFT JOIN (
-        SELECT
-        principal_id,
-        major.created,
-        major_production.id AS production_id
-        FROM
-        major
-        LEFT JOIN major_production ON major_production.major_id = major.id
-        AND major_production.deleted = 0
-        ) AS orderInfo ON user.id = orderInfo.principal_id
         <where>
             <if test="self == true">
                 AND user.id = #{dto.userId}
@@ -650,6 +719,53 @@
         GROUP BY user.id
     </select>
 
+    <sql id="majorErrorTypeDetailVOQuery">
+        SELECT performance.id,
+        major.order_id            AS orderId,
+        major.financial AS financial,
+        major.members             AS members,
+        major.evaluate_aim AS evaluateAim,
+        production.name     AS projectName,
+        customer.name              AS customerName,
+        production.report_no   AS productionNo,
+        (CASE production.production
+        WHEN 'STATEMENT' THEN '意见书'
+        WHEN 'LETTER' THEN '意见函'
+        WHEN 'REPORT' THEN '评估报告'
+        END)                  AS productionType,
+        principal.name             AS principalName,
+        checker.name               AS checkerName,
+        (performance.normal_mistake + performance.hard_mistake + performance.fatal_mistake) AS mistakeCount,
+        (performance.normal_mistake * 3 + performance.hard_mistake * 8 + performance.fatal_mistake * 41) AS mistakeScore,
+        production.evaluate_amount AS evaluateAmount,
+        performance.modified       AS checkTime,
+        performance.reason         AS reason
+        FROM major
+        LEFT JOIN major_production AS production ON major.id = production.major_id
+        LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id
+        LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
+        LEFT JOIN user AS principal ON principal.id = major.principal_id
+        LEFT JOIN user AS checker ON checker.id = performance.check_id
+        WHERE major.principal_id = #{dto.principalId}
+        <if test="dto.checkType == 'dep'">
+            AND check_loop = '初审'
+        </if>
+        <if test="dto.checkType == 'com'">
+            AND check_loop != '初审'
+        </if>
+        AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
+        AND reason LIKE CONCAT('%',#{dto.reason},'%')
+    </sql>
+
+    <!--查询错误类型详情列表-->
+    <select id="getMajorErrorTypeDetailVO" resultType="com.dayou.vo.MajorPerformanceDeductionDetailVO">
+        <include refid="majorErrorTypeDetailVOQuery" />
+    </select>
+
+    <select id="exportMajorErrorTypeDetailVO" resultType="com.dayou.vo.MajorPerformanceDeductionDetailVO">
+        <include refid="majorErrorTypeDetailVOQuery" />
+    </select>
+
     <!--查询错误详情SQL-->
     <sql id="majorPerformanceDeductionDetailQuery">
         SELECT performance.id,

+ 5 - 0
domain/src/main/java/com/dayou/dto/MajorStatisticalSelectDTO.java

@@ -104,6 +104,11 @@ public class MajorStatisticalSelectDTO {
     private String efficiencyType;
 
     /**
+     * 扣分原因(大中型错误类型也是在这个字段里面)
+     */
+    private String reason;
+
+    /**
      * 筛选开始时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

+ 15 - 0
service/src/main/java/com/dayou/service/IMajorStatisticalStatementService.java

@@ -52,6 +52,21 @@ public interface IMajorStatisticalStatementService {
     List<MajorErrorTypeCountVO> getMajorErrorTypeCountVO(MajorStatisticalSelectDTO dto);
 
     /**
+     * 查询错误类型详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorPerformanceDeductionDetailVO>
+     */
+    Page<MajorPerformanceDeductionDetailVO> getMajorErrorTypeDetailVO(Page page, MajorStatisticalSelectDTO dto);
+
+    /**
+     * 导出错误类型详情列表
+     * @param dto 查询dto
+     * @return List<MajorPerformanceDeductionDetailVO>
+     */
+    List<MajorPerformanceDeductionDetailVO> exportMajorErrorTypeDetailVO(MajorStatisticalSelectDTO dto);
+
+    /**
      * 查询错误详情列表
      * @param page 分页
      * @param dto 查询dto

+ 25 - 0
service/src/main/java/com/dayou/service/impl/MajorStatisticalStatementServiceImpl.java

@@ -123,6 +123,31 @@ public class MajorStatisticalStatementServiceImpl implements IMajorStatisticalSt
     }
 
     /**
+     * 查询错误类型详情列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<MajorPerformanceDeductionDetailVO>
+     */
+    @Override
+    public Page<MajorPerformanceDeductionDetailVO> getMajorErrorTypeDetailVO(Page page, MajorStatisticalSelectDTO dto) {
+        Page<MajorPerformanceDeductionDetailVO> detailVOPage = majorStatisticalStatementMapper.getMajorErrorTypeDetailVO(page, dto);
+        detailVOPage.setRecords(setDetailVOJSONInfo(detailVOPage.getRecords()));
+        return detailVOPage;
+    }
+
+    /**
+     * 导出错误类型详情列表
+     * @param dto 查询dto
+     * @return List<MajorPerformanceDeductionDetailVO>
+     */
+    @Override
+    public List<MajorPerformanceDeductionDetailVO> exportMajorErrorTypeDetailVO(MajorStatisticalSelectDTO dto) {
+        List<MajorPerformanceDeductionDetailVO> detailVOList = majorStatisticalStatementMapper.exportMajorErrorTypeDetailVO(dto);
+        detailVOList = setDetailVOJSONInfo(detailVOList);
+        return detailVOList;
+    }
+
+    /**
      * 查询错误详情列表
      * @param page 分页
      * @param dto 查询dto