|
@@ -3,119 +3,60 @@
|
|
|
<mapper namespace="com.dayou.mapper.MajorStatisticalStatementMapper">
|
|
|
|
|
|
<sql id="majorLedgerQuery">
|
|
|
- SELECT (@i := @i + 1) AS id,
|
|
|
- major.order_id AS orderId,
|
|
|
- report.report_no AS reportNo,
|
|
|
- department.name AS departmentName,
|
|
|
- major.name AS projectName,
|
|
|
- customer.name AS customerName,
|
|
|
- customer_sub.name AS customerSubName,
|
|
|
- manager.name AS clientManagerName,
|
|
|
- principal.name AS principalName,
|
|
|
- major.members AS members,
|
|
|
- major.owner AS owner,
|
|
|
- major.bailor AS bailor,
|
|
|
- major.bailor_contact_tel AS bailorContactTel,
|
|
|
- major.bailor_address AS bailorAddress,
|
|
|
- major.evaluate_aim AS evaluateAim,
|
|
|
- report.value_timing AS valueTiming,
|
|
|
- GROUP_CONCAT(target.located SEPARATOR ';') AS located,
|
|
|
- GROUP_CONCAT(target.land_use SEPARATOR ';') AS landUse,
|
|
|
- GROUP_CONCAT(target.build_acreage SEPARATOR ';') AS buildAcreage,
|
|
|
- GROUP_CONCAT(target.land_acreage SEPARATOR ';') AS landAcreage,
|
|
|
- GROUP_CONCAT(DATE(target.created) SEPARATOR ';') AS reconnaissanceDate,
|
|
|
- report.evaluate_price AS evaluatePrice,
|
|
|
- report.evaluate_amount AS evaluateAmount,
|
|
|
- fund.real_amount AS productionRealAmount,
|
|
|
- report.repertory_out_time AS repertoryOutTime,
|
|
|
- report.main_worker AS firstReporter,
|
|
|
- report.minor_worker AS secReporter,
|
|
|
- (
|
|
|
- SELECT user.name
|
|
|
- FROM work_flow_node_instance AS instance,
|
|
|
- work_task_record AS record,
|
|
|
- work_node AS node,
|
|
|
- user
|
|
|
- WHERE instance.id = record.instance_id
|
|
|
- AND record.handler_id = user.id
|
|
|
- AND node.id = instance.node_id
|
|
|
- AND instance.business_id = major.id
|
|
|
- AND instance.business_sub_id = statement.report_no
|
|
|
- AND node.code = 'RECHECK_STATEMENT'
|
|
|
- AND instance.deleted = 0
|
|
|
- ) AS secStatementChecker,
|
|
|
- (
|
|
|
- SELECT user.name
|
|
|
- FROM work_flow_node_instance AS instance,
|
|
|
- work_task_record AS record,
|
|
|
- work_node AS node,
|
|
|
- user
|
|
|
- WHERE instance.id = record.instance_id
|
|
|
- AND record.handler_id = user.id
|
|
|
- AND node.id = instance.node_id
|
|
|
- AND instance.business_id = major.id
|
|
|
- AND instance.business_sub_id = statement.report_no
|
|
|
- AND node.code = 'THIRD_CHECK_STATEMENT'
|
|
|
- AND instance.deleted = 0
|
|
|
- ) AS thirdStatementChecker,
|
|
|
- (
|
|
|
- SELECT user.name
|
|
|
- FROM work_flow_node_instance AS instance,
|
|
|
- work_task_record AS record,
|
|
|
- work_node AS node,
|
|
|
- user
|
|
|
- WHERE instance.id = record.instance_id
|
|
|
- AND record.handler_id = user.id
|
|
|
- AND node.id = instance.node_id
|
|
|
- AND instance.business_id = major.id
|
|
|
- AND instance.business_min_id = report.report_no
|
|
|
- AND node.code = 'RECHECK_REPORT'
|
|
|
- AND instance.deleted = 0
|
|
|
- ) AS secReportChecker,
|
|
|
- (
|
|
|
- SELECT user.name
|
|
|
- FROM work_flow_node_instance AS instance,
|
|
|
- work_task_record AS record,
|
|
|
- work_node AS node,
|
|
|
- user
|
|
|
- WHERE instance.id = record.instance_id
|
|
|
- AND record.handler_id = user.id
|
|
|
- AND node.id = instance.node_id
|
|
|
- AND instance.business_id = major.id
|
|
|
- AND instance.business_min_id = report.report_no
|
|
|
- AND node.code = 'THIRD_CHECK_REPORT'
|
|
|
- AND instance.deleted = 0
|
|
|
- ) AS thirdReportReChecker,
|
|
|
- major.remark AS comments
|
|
|
- FROM (SELECT @i := 0) AS sort,major
|
|
|
- LEFT JOIN major_target AS target ON target.major_id = major.id
|
|
|
- LEFT JOIN major_production AS statement ON statement.report_no = target.statement_no AND statement.production = 'STATEMENT'
|
|
|
- LEFT JOIN major_production AS report ON report.report_no = target.report_no AND report.production != 'STATEMENT'
|
|
|
- LEFT JOIN production_fund AS fund ON fund.production_no = report.report_no
|
|
|
+ SELECT (@i := @i + 1) AS id,
|
|
|
+ major.order_id AS orderId,
|
|
|
+ pro.id AS productionId,
|
|
|
+ pro.report_no AS reportNo,
|
|
|
+ (CASE WHEN pro.production = 'LETTER' THEN '复评函' WHEN pro.production = 'REPORT' THEN '报告' WHEN pro.production = 'STATEMENT' THEN '意见书' ELSE '-' END) AS productionType,
|
|
|
+ department.name AS departmentName,
|
|
|
+ major.name AS projectName,
|
|
|
+ customer.name AS customerName,
|
|
|
+ customer_sub.name AS customerSubName,
|
|
|
+ manager.name AS clientManagerName,
|
|
|
+ principal.name AS principalName,
|
|
|
+ major.members AS members,
|
|
|
+ major.owner AS owner,
|
|
|
+ major.bailor AS bailor,
|
|
|
+ major.bailor_contact_tel AS bailorContactTel,
|
|
|
+ major.bailor_address AS bailorAddress,
|
|
|
+ major.evaluate_aim AS evaluateAim,
|
|
|
+ pro.value_timing AS valueTiming,
|
|
|
+ GROUP_CONCAT(target.located SEPARATOR ';') AS located,
|
|
|
+ GROUP_CONCAT(target.land_use SEPARATOR ';') AS landUse,
|
|
|
+ GROUP_CONCAT(target.build_acreage SEPARATOR ';') AS buildAcreage,
|
|
|
+ GROUP_CONCAT(target.land_acreage SEPARATOR ';') AS landAcreage,
|
|
|
+ GROUP_CONCAT(DATE(target.created) SEPARATOR ';') AS reconnaissanceDate,
|
|
|
+ pro.evaluate_price AS evaluatePrice,
|
|
|
+ pro.evaluate_amount AS evaluateAmount,
|
|
|
+ fund.real_amount AS productionRealAmount,
|
|
|
+ pro.repertory_out_time AS repertoryOutTime,
|
|
|
+ pro.main_worker AS firstReporter,
|
|
|
+ pro.minor_worker AS secReporter,
|
|
|
+ major.remark AS comments
|
|
|
+ FROM (SELECT @i := 0) AS sort,
|
|
|
+ major
|
|
|
+ LEFT JOIN major_production AS pro
|
|
|
+ ON pro.major_id = major.id AND pro.deleted = 0
|
|
|
+ # 连接查询产品对应的评估对象, 不同产品类型连接字段不一样
|
|
|
+ LEFT JOIN major_target AS target ON CASE
|
|
|
+ WHEN pro.production = 'LETTER' THEN pro.report_no = target.letter_no
|
|
|
+ WHEN pro.production = 'REPORT' THEN pro.report_no = target.report_no
|
|
|
+ WHEN pro.production = 'STATEMENT' THEN pro.report_no = target.statement_no
|
|
|
+ ELSE FALSE
|
|
|
+ END
|
|
|
+ LEFT JOIN production_fund AS fund ON fund.production_no = pro.report_no
|
|
|
LEFT JOIN user AS manager ON manager.id = major.client_manager_id
|
|
|
LEFT JOIN user AS principal ON principal.id = major.principal_id
|
|
|
LEFT JOIN department ON department.id = major.department_id
|
|
|
LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
|
|
|
LEFT JOIN customer_company AS customer_sub ON customer_sub.id = major.clientele_sub_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT node.`name`,instance.business_id,instance.business_sub_id,instance.business_min_id,instance.state
|
|
|
- FROM work_flow_node_instance AS instance,
|
|
|
- work_node AS node
|
|
|
- WHERE instance.node_id = node.id
|
|
|
- AND node.deleted = 0
|
|
|
- AND instance.deleted = 0
|
|
|
- AND (instance.state = 'PENDING' OR instance.state = 'CLOSED' OR
|
|
|
- (instance.state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING'))
|
|
|
- ) AS nodeInfo ON nodeInfo.business_id = major.id
|
|
|
- AND (IF(report.report_no IS NULL, nodeInfo.business_min_id IS NULL,
|
|
|
- report.report_no = nodeInfo.business_min_id))
|
|
|
- WHERE major.deleted = 0 and major.financial is not null
|
|
|
+ WHERE major.deleted = 0
|
|
|
<if test="dto != null and dto.keyWord != null and dto.keyWord != '' ">
|
|
|
AND (
|
|
|
major.order_id LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
major.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
- report.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
- report.report_no LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
+ pro.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
+ pro.report_no LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
principal.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
major.business_object_type LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
|
major.allot_type LIKE CONCAT('%',#{dto.keyWord},'%') OR
|
|
@@ -135,13 +76,13 @@
|
|
|
<if test="dto != null and dto.memberId != null">
|
|
|
AND JSON_CONTAINS(major.members, CAST(#{dto.memberId} AS JSON))
|
|
|
</if>
|
|
|
- <if test="dto != null and dto.nodeCode != null">
|
|
|
- AND nodeInfo.node = #{dto.nodeCode}
|
|
|
- </if>
|
|
|
<if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
AND (major.created BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
</if>
|
|
|
- GROUP BY reportNo,major.id
|
|
|
+ <if test="dto != null and dto.productionType != null and dto.productionType != '' ">
|
|
|
+ AND pro.production = #{dto.productionType}
|
|
|
+ </if>
|
|
|
+ GROUP BY pro.report_no,major.id
|
|
|
ORDER BY major.created DESC
|
|
|
</sql>
|
|
|
|
|
@@ -163,7 +104,38 @@
|
|
|
COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 AS reCheckNormalMistakeScore,
|
|
|
COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 AS reCheckHardMistakeScore,
|
|
|
COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 AS reCheckFatalMistakeScore,
|
|
|
- COALESCE ( (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) *3 ) + (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41) , 0) AS allMistakeScore
|
|
|
+ COALESCE ( SUM( spotCheckPer.normal_mistake ), 0 ) * 3 AS spotCheckNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( spotCheckPer.hard_mistake ), 0 ) * 8 AS spotCheckHardMistakeScore,
|
|
|
+ COALESCE ( SUM( spotCheckPer.fatal_mistake ), 0 ) * 41 AS spotCheckFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.normal_mistake ), 0 ) * 3 AS internalComplaintNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.hard_mistake ), 0 ) * 8 AS internalComplaintHardMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.fatal_mistake ), 0 ) * 41 AS internalComplaintFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.service_attitude ), 0 ) * 8 AS internalComplaintBadServiceAttitude,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.normal_mistake ), 0 ) * 3 AS externalComplaintNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.hard_mistake ), 0 ) * 8 AS externalComplaintHardMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.fatal_mistake ), 0 ) * 41 AS externalComplaintFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.service_attitude ), 0 ) * 8 AS externalComplaintBadServiceAttitude,
|
|
|
+ (COALESCE ( SUM( difficult.score ), 0 )) AS difficultScore,
|
|
|
+ (COALESCE ( SUM( generalManager.score ), 0 )) AS generalManagerScore,
|
|
|
+ (COALESCE ( SUM( integrated.score ), 0 )) AS integratedScore,
|
|
|
+ COALESCE ( (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.service_attitude ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.service_attitude ), 0 ) * 8 ) -
|
|
|
+ (COALESCE ( SUM( difficult.score ), 0 )) -
|
|
|
+ (COALESCE ( SUM( generalManager.score ), 0 )) -
|
|
|
+ (COALESCE ( SUM( integrated.score ), 0 ))
|
|
|
+ , 0) AS allMistakeScore
|
|
|
FROM
|
|
|
(
|
|
|
SELECT
|
|
@@ -193,6 +165,42 @@
|
|
|
AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
</if>
|
|
|
) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '抽检'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS spotCheckPer ON spotCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake, service_attitude FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '内部'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS insideCheckPer ON insideCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake, service_attitude FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '外部'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS outsideCheckPer ON outsideCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, score FROM
|
|
|
+ business_production_bonus_points WHERE business_type = 'MAJOR_BUSINESS' AND type = '疑难项目'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_bonus_points.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS difficult ON difficult.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, score FROM
|
|
|
+ business_production_bonus_points WHERE business_type = 'MAJOR_BUSINESS' AND type = '总经理'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_bonus_points.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS generalManager ON generalManager.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, score FROM
|
|
|
+ business_production_bonus_points WHERE business_type = 'MAJOR_BUSINESS' AND type = '部门综合'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_bonus_points.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS integrated ON integrated.production_id = orderInfo.production_id
|
|
|
<where>
|
|
|
<if test="dto != null and dto.departmentId != null">
|
|
|
AND department.id = #{dto.departmentId}
|
|
@@ -210,7 +218,32 @@
|
|
|
COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 AS reCheckNormalMistakeScore,
|
|
|
COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 AS reCheckHardMistakeScore,
|
|
|
COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 AS reCheckFatalMistakeScore,
|
|
|
- COALESCE ( (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) *3 ) + (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41) , 0) AS allMistakeScore
|
|
|
+ COALESCE ( SUM( spotCheckPer.normal_mistake ), 0 ) * 3 AS spotCheckNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( spotCheckPer.hard_mistake ), 0 ) * 8 AS spotCheckHardMistakeScore,
|
|
|
+ COALESCE ( SUM( spotCheckPer.fatal_mistake ), 0 ) * 41 AS spotCheckFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.normal_mistake ), 0 ) * 3 AS internalComplaintNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.hard_mistake ), 0 ) * 8 AS internalComplaintHardMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.fatal_mistake ), 0 ) * 41 AS internalComplaintFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.service_attitude ), 0 ) * 8 AS internalComplaintBadServiceAttitude,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.normal_mistake ), 0 ) * 3 AS externalComplaintNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.hard_mistake ), 0 ) * 8 AS externalComplaintHardMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.fatal_mistake ), 0 ) * 41 AS externalComplaintFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.service_attitude ), 0 ) * 8 AS externalComplaintBadServiceAttitude,
|
|
|
+ COALESCE ( (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.service_attitude ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.service_attitude ), 0 ) * 8 )
|
|
|
+ , 0) AS allMistakeScore
|
|
|
FROM (SELECT user.id AS id,
|
|
|
user.`name` AS userName,
|
|
|
department.name AS departmentName,
|
|
@@ -241,6 +274,24 @@
|
|
|
AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
</if>
|
|
|
) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '抽检'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS spotCheckPer ON spotCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake, service_attitude FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '内部'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS insideCheckPer ON insideCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake, service_attitude FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '外部'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS outsideCheckPer ON outsideCheckPer.production_id = orderInfo.production_id
|
|
|
<where>
|
|
|
<if test="dto != null and dto.departmentId != null">
|
|
|
AND user.departmentId = #{dto.departmentId}
|
|
@@ -264,7 +315,35 @@
|
|
|
COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeScore,
|
|
|
COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeScore,
|
|
|
COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeScore,
|
|
|
- COALESCE ( (COALESCE ( SUM( checkPer.normal_mistake ), 0 ) * 3) + (COALESCE ( SUM( checkPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) * 41) + (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) *3 ) + (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41) , 0) AS allMistakeScore
|
|
|
+ COALESCE ( SUM( spotCheckPer.normal_mistake ), 0 ) AS spotCheckNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( spotCheckPer.hard_mistake ), 0 ) AS spotCheckHardMistakeScore,
|
|
|
+ COALESCE ( SUM( spotCheckPer.fatal_mistake ), 0 ) AS spotCheckFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.normal_mistake ), 0 ) AS internalComplaintNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.hard_mistake ), 0 ) AS internalComplaintHardMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.fatal_mistake ), 0 ) AS internalComplaintFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( insideCheckPer.service_attitude ), 0 ) AS internalComplaintBadServiceAttitude,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.normal_mistake ), 0 ) AS externalComplaintNormalMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.hard_mistake ), 0 ) AS externalComplaintHardMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.fatal_mistake ), 0 ) AS externalComplaintFatalMistakeScore,
|
|
|
+ COALESCE ( SUM( outsideCheckPer.service_attitude ), 0 ) AS externalComplaintBadServiceAttitude,
|
|
|
+ COALESCE ( (COALESCE ( SUM( checkPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( checkPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( spotCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( insideCheckPer.service_attitude ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.normal_mistake ), 0 ) * 3 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.hard_mistake ), 0 ) * 8 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.fatal_mistake ), 0 ) * 41 ) +
|
|
|
+ (COALESCE ( SUM( outsideCheckPer.service_attitude ), 0 ) * 8 )
|
|
|
+ , 0) AS allMistakeScore
|
|
|
FROM (SELECT user.id AS id,
|
|
|
user.`name` AS userName,
|
|
|
department.name AS departmentName,
|
|
@@ -301,6 +380,24 @@
|
|
|
AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
</if>
|
|
|
) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '抽检'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS spotCheckPer ON spotCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake, service_attitude FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '内部'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS insideCheckPer ON insideCheckPer.production_id = orderInfo.production_id
|
|
|
+ LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake, service_attitude FROM
|
|
|
+ business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '外部'
|
|
|
+ <if test="dto != null and dto.startTime != null and dto.endTime!= null">
|
|
|
+ AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ </if>
|
|
|
+ ) AS outsideCheckPer ON outsideCheckPer.production_id = orderInfo.production_id
|
|
|
<where>
|
|
|
<if test="dto != null and dto.departmentId != null">
|
|
|
AND user.departmentId = #{dto.departmentId}
|
|
@@ -787,20 +884,22 @@
|
|
|
WHEN 'normal' THEN performance.normal_mistake
|
|
|
WHEN 'hard' THEN performance.hard_mistake
|
|
|
WHEN 'fatal' THEN performance.fatal_mistake
|
|
|
+ WHEN 'service' THEN performance.service_attitude
|
|
|
ELSE '-'
|
|
|
END) AS mistakeCount,
|
|
|
(CASE #{dto.mistakeType}
|
|
|
WHEN 'normal' THEN performance.normal_mistake * 3
|
|
|
WHEN 'hard' THEN performance.hard_mistake * 8
|
|
|
WHEN 'fatal' THEN performance.fatal_mistake * 41
|
|
|
+ WHEN 'service' THEN performance.service_attitude * 8
|
|
|
ELSE '-'
|
|
|
END) 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 major_production AS production ON major.id = production.major_id AND production.deleted = 0
|
|
|
+ LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id AND business_type = 'MAJOR_BUSINESS'
|
|
|
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
|
|
@@ -819,6 +918,9 @@
|
|
|
<if test="dto.mistakeType == 'fatal' ">
|
|
|
AND performance.fatal_mistake > 0
|
|
|
</if>
|
|
|
+ <if test="dto.mistakeType == 'service' ">
|
|
|
+ AND performance.service_attitude > 0
|
|
|
+ </if>
|
|
|
</sql>
|
|
|
|
|
|
<!--查询错误详情列表-->
|
|
@@ -831,6 +933,51 @@
|
|
|
<include refid="majorPerformanceDeductionDetailQuery" />
|
|
|
</select>
|
|
|
|
|
|
+ <!--查询额外加减分详情SQL-->
|
|
|
+ <sql id="majorBonusPointsDetailQuery">
|
|
|
+ SELECT bonus.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,
|
|
|
+ bonus.score AS score,
|
|
|
+ operator.name AS operatorName,
|
|
|
+ production.evaluate_amount AS evaluateAmount,
|
|
|
+ bonus.modified AS operationDate,
|
|
|
+ bonus.reason AS reason
|
|
|
+ FROM major
|
|
|
+ LEFT JOIN major_production AS production ON major.id = production.major_id AND production.deleted = 0
|
|
|
+ LEFT JOIN business_production_bonus_points AS bonus ON production.id = bonus.production_id AND business_type = 'MAJOR_BUSINESS'
|
|
|
+ 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 operator ON operator.id = bonus.operator_id
|
|
|
+ WHERE major.department_id = #{dto.departmentId}
|
|
|
+ AND bonus.type = #{dto.checkLoop}
|
|
|
+ AND (bonus.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
|
|
|
+ <if test="dto.principalId != null">
|
|
|
+ AND major.principal_id = #{dto.principalId}
|
|
|
+ </if>
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <!--查询额外加减分详情列表-->
|
|
|
+ <select id="getMajorBonusPointsDetailVO" resultType="com.dayou.vo.MajorBonusPointsDetailVO">
|
|
|
+ <include refid="majorBonusPointsDetailQuery" />
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <!--导出额外加减分详情列表-->
|
|
|
+ <select id="exportMajorBonusPointsDetailVO" resultType="com.dayou.vo.MajorBonusPointsDetailVO">
|
|
|
+ <include refid="majorBonusPointsDetailQuery" />
|
|
|
+ </select>
|
|
|
+
|
|
|
<!--评估部效率查询-->
|
|
|
<!--大中型指定需要看了现场才算有效的接单数-->
|
|
|
<select id="getMajorEvaluateDepEfficiencyVO" resultType="com.dayou.vo.MajorEvaluateEfficiencyVO">
|