SELECT (@i := @i + 1) AS id, assets.id AS assetsId, assets.order_id AS orderId, statement.production_no AS statementNo, report.production_no AS reportNo, CASE report.production_type WHEN 'LETTER' THEN '意见函' WHEN 'CONSULT' THEN '咨询报告' WHEN 'REPORT' THEN '评估报告' ELSE '-' END AS productionType, report.valuation_basis_date AS valuationBasisDate, report.create_production_date AS createReportDate, COALESCE(report.assets_name, statement.assets_name, assets.name) AS projectName, IF(nodeInfo.state = 'CLOSED','项目终止',IF(nodeInfo.name IS NULL,IF(statement.production_no IS NULL, '撰写意见书', '撰写报告'),nodeInfo.name)) AS currentNodeName, assets.security AS security, assets.significant_assets_reorganization AS significantAssetsReorganization, assets.state_assets AS stateAssets, assets.foreign_assets_involved AS foreignAssetsInvolved, assets.dispense_benefit AS dispenseBenefit, manager.name AS clientManagerName, principal.name AS principalName, (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_id) AS customerName, (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName, assets.bailor AS bailor, assets.bailor_contact_tel AS bailorContactTel, GROUP_CONCAT(target.id SEPARATOR '; ') AS targetId, GROUP_CONCAT(target.purpose_name SEPARATOR '; ') AS purposeName, GROUP_CONCAT(target.type_name SEPARATOR '; ') AS valueTypeName, GROUP_CONCAT(target.targetTypename SEPARATOR '; ') AS targetTypename, GROUP_CONCAT(target.secTargetTypaName SEPARATOR '; ') AS secTargetTypaName, GROUP_CONCAT(target.evaluation_method_id SEPARATOR ', ') AS evaluationMethods, GROUP_CONCAT(target.defined_evaluation_method SEPARATOR '; ') AS definedEvaluationMethod, GROUP_CONCAT(target.choice_evaluation_method_id SEPARATOR ', ') AS choiceEvaluationMethods, GROUP_CONCAT(target.choice_defined_evaluation_method SEPARATOR '; ') AS choiceDefinedEvaluationMethod, GROUP_CONCAT(target.estimated_value SEPARATOR '; ') AS estimatedValue, fund.should_amount AS shouldAmount, fund.real_amount AS realAmount, report.signatory AS signatory, report.repertory_out_time AS repertoryOutTime, ( 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 = assets.id AND instance.business_sub_id = statement.production_no AND node.code = 'REVIEW_STATEMENT' AND instance.deleted = 0 ) AS statementCheckerName, ( 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 = assets.id AND instance.business_sub_id = statement.production_no AND node.code = 'REEXAMINE_STATEMENT' AND instance.deleted = 0 ) AS statementReCheckerName, ( 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 = assets.id AND instance.business_min_id = report.production_no AND node.code = 'CHECK_REPORT' AND instance.deleted = 0 ) AS reportCheckerName, ( 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 = assets.id AND instance.business_min_id = report.production_no AND node.code = 'RECHECK_REPORT' AND instance.deleted = 0 ) AS reportReCheckerName, ( 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 = assets.id AND instance.business_min_id = report.production_no AND node.code = 'FOURTH_CHECK_REPORT' AND instance.deleted = 0 ) AS reportFourthCheckerName FROM (SELECT @i := 0) AS sort,assets LEFT JOIN ( SELECT target.id, target.assets_id, purpose_name, vType.type_name, evaluation_method_id, defined_evaluation_method, choice_evaluation_method_id, choice_defined_evaluation_method, type.type_name AS targetTypename, secType.type_name AS secTargetTypaName, estimated_value, statement_no, report_no FROM assets_evaluation_target AS target LEFT JOIN assets_evaluation_target_purpose AS purpose ON evaluation_purpose_id = purpose.id LEFT JOIN assets_evaluation_target_type AS type ON evaluation_type_id = type.id LEFT JOIN assets_evaluation_target_type AS secType ON evaluation_type_sec_id = type.id LEFT JOIN assets_value_type AS vType ON assets_value_id = vType.id ) AS target ON assets.id = target.assets_id LEFT JOIN assets_production AS report ON report_no = report.production_no LEFT JOIN assets_production AS statement ON statement_no = statement.production_no LEFT JOIN user AS manager ON manager.id = assets.client_manager_id LEFT JOIN user AS principal ON principal.id = assets.principal_id LEFT JOIN order_fund AS fund ON fund.business_id = assets.id AND fund.business_type = 'ASSET_BUSINESS' 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 = assets.id AND (IF(statement.production_no IS NULL, nodeInfo.business_sub_id IS NULL, statement.production_no = nodeInfo.business_sub_id)) AND (IF(report.production_no IS NULL, nodeInfo.business_min_id IS NULL, report.production_no = nodeInfo.business_min_id)) WHERE assets.deleted = 0 AND ( assets.order_id LIKE CONCAT('%',#{dto.keyWord},'%') OR statement.assets_name LIKE CONCAT('%',#{dto.keyWord},'%') OR report.assets_name LIKE CONCAT('%',#{dto.keyWord},'%') ) AND assets.client_manager_id = #{dto.clientManagerId} AND assets.principal_id = #{dto.principalId} AND assets.department_id = #{dto.departmentId} AND (assets.created BETWEEN #{dto.startTime} AND #{dto.endTime}) AND assets.assets_business_gener = #{dto.assetsBusinessGener} GROUP BY statementNo,reportNo,assets.id ORDER BY assets.created DESC SELECT department.id AS departmentId, department.name AS departmentName, COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore, COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore, COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore, 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 ( SUM( fourthCheckPer.normal_mistake ), 0 ) AS fourthCheckNormalMistakeScore, COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) AS fourthCheckHardMistakeScore, COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ) AS fourthCheckFatalMistakeScore, COALESCE ( COALESCE ( SUM( checkPer.normal_mistake ), 0 ) + COALESCE ( SUM( checkPer.hard_mistake ), 0 ) + COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ), 0 ) AS allMistakeScore FROM ( SELECT department.id, department.name FROM department, sorted_department WHERE department.id = sorted_department.department_id AND department.deleted = 0 AND sorted_department.business_type = 'ASSET_BUSINESS' ) AS department LEFT JOIN ( SELECT department_id, assets.created, assets_production.id AS production_id FROM assets LEFT JOIN assets_production ON assets_production.business_id = assets.id AND assets_production.deleted = 0 ) AS orderInfo ON department.id = orderInfo.department_id LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '初审' AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) ) AS checkPer ON checkPer.production_id = orderInfo.production_id LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '复审' AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) ) 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 = 'ASSET_BUSINESS' AND check_loop = '四审' AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) ) AS fourthCheckPer ON fourthCheckPer.production_id = orderInfo.production_id AND department.id = #{dto.departmentId} GROUP BY department.id SELECT performance.id, assets.order_id AS orderId, assets.members AS members, production.assets_name AS projectName, customer.name AS customerName, production.production_no AS productionNo, (CASE production.production_type WHEN 'STATEMENT' THEN '意见书' WHEN 'LETTER' THEN '意见函' WHEN 'CONSULT' THEN '咨询报告' WHEN 'REPORT' THEN '评估报告' END) AS productionType, principal.name AS principalName, checker.name AS checkerName, (CASE #{dto.mistakeType} WHEN 'normal' THEN performance.normal_mistake WHEN 'hard' THEN performance.hard_mistake WHEN 'fatal' THEN performance.fatal_mistake ELSE '-' END) AS mistakeCount, production.evaluate_amount AS evaluateAmount, performance.modified AS checkTime, performance.reason AS reason FROM assets LEFT JOIN assets_production AS production ON assets.id = production.business_id LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id LEFT JOIN user AS principal ON principal.id = assets.principal_id LEFT JOIN user AS checker ON checker.id = performance.check_id WHERE assets.department_id = #{dto.departmentId} AND performance.check_loop = #{dto.checkLoop} AND (performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) AND assets.principal_id = #{dto.principalId} AND performance.normal_mistake > 0 AND performance.hard_mistake > 0 AND performance.fatal_mistake > 0 SELECT user.id AS userId, user.userName, user.departmentId, user.departmentName, COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore, COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore, COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore, 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 ( SUM( fourthCheckPer.normal_mistake ), 0 ) AS fourthCheckNormalMistakeScore, COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) AS fourthCheckHardMistakeScore, COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ) AS fourthCheckFatalMistakeScore, COALESCE ( COALESCE ( SUM( checkPer.normal_mistake ), 0 ) + COALESCE ( SUM( checkPer.hard_mistake ), 0 ) + COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ), 0 ) AS allMistakeScore FROM (SELECT user.id AS id, user.`name` AS userName, department.name AS departmentName, 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 = 'ASSET_BUSINESS' GROUP BY user.id ) AS user LEFT JOIN ( SELECT principal_id, assets.created, assets_production.id AS production_id FROM assets LEFT JOIN assets_production ON assets_production.business_id = assets.id AND assets_production.deleted = 0 ) AS orderInfo ON user.id = orderInfo.principal_id LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '初审' AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) ) AS checkPer ON checkPer.production_id = orderInfo.production_id LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '复审' AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) ) 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 = 'ASSET_BUSINESS' AND check_loop = '四审' AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) ) AS fourthCheckPer ON fourthCheckPer.production_id = orderInfo.production_id AND user.departmentId = #{dto.departmentId} AND user.userName LIKE CONCAT('%',#{dto.userName},'%') GROUP BY user.id SELECT assets.order_id AS orderId, assets.name AS projectName, customer.name AS customerName, (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName, (SELECT name FROM customer_linkman WHERE id = assets.clientele_contact_id) AS linkmanName, bailor, report.production_no AS reportNo, (SELECT name FROM user WHERE id = assets.principal_id) AS principalName, members, (SELECT name FROM user WHERE id = assets.client_manager_id) AS clientManagerName, (SELECT SUM(check_value) FROM assets_evaluation_target WHERE report_no = report.production_no AND deleted = 0) AS checkValueSum, statement.created AS writeStatementDate, report.created AS writeReportDate, order_fund.should_amount AS shouldAmount, order_fund.real_amount AS realAmount, nodeInfo.currentNodeName, nodeInfo.handlerName FROM assets LEFT JOIN user ON user.id = assets.principal_id LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id LEFT JOIN (SELECT nodeInstance.id AS currentNodeId, user.name AS handlerName, node.name AS currentNodeName, nodeInstance.business_id AS businessId, nodeInstance.business_sub_id, nodeInstance.business_min_id, nodeInstance.state FROM work_flow_node_instance AS nodeInstance, work_task_record AS record, user, work_node AS node WHERE (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' )) AND nodeInstance.node_id = node.id AND record.handler_id = user.id AND nodeInstance.deleted = 0 AND record.instance_id = nodeInstance.id AND nodeInstance.business_type = 'ASSET_BUSINESS' AND nodeInstance.business_min_id IS NOT NULL AND nodeInstance.business_sub_id IS NOT NULL ) AS nodeInfo ON nodeInfo.businessId = assets.id LEFT JOIN assets_production AS statement ON statement.business_id =nodeInfo.businessId AND statement.production_no = nodeInfo.business_sub_id AND statement.deleted = 0 AND statement.production_type = 'STATEMENT' LEFT JOIN assets_production AS report ON report.business_id =nodeInfo.businessId AND report.production_no = nodeInfo.business_min_id AND report.deleted = 0 AND report.production_type != 'STATEMENT' LEFT JOIN order_fund ON order_fund.business_id = assets.id AND business_type = 'ASSET_BUSINESS' AND order_fund.deleted = 0 WHERE assets.deleted = 0 AND assets.clientele_id = #{dto.customerId} AND assets.clientele_contact_id = #{dto.clienteleContactId} AND assets.department_id = #{dto.departmentId} AND assets.market_department_id = #{dto.marketDepartmentId} AND assets.principal_id = #{dto.principalId} AND assets.client_manager_id = #{dto.clientManagerId} AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND statement.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND report.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND order_fund.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND order_fund.should_amount IS NOT NULL AND order_fund.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND order_fund.real_amount IS NOT NULL ORDER BY assets.created DESC