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 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.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 principal.name LIKE CONCAT('%',#{dto.keyWord},'%') OR major.business_object_type LIKE CONCAT('%',#{dto.keyWord},'%') OR major.allot_type LIKE CONCAT('%',#{dto.keyWord},'%') OR customer.name LIKE CONCAT('%',#{dto.keyWord},'%') OR customer_sub.name LIKE CONCAT('%',#{dto.keyWord},'%') ) AND major.client_manager_id = #{dto.clientManagerId} AND major.principal_id = #{dto.principalId} AND major.department_id = #{dto.departmentId} AND JSON_CONTAINS(major.members, CAST(#{dto.memberId} AS JSON)) AND nodeInfo.node = #{dto.nodeCode} AND (major.created BETWEEN #{dto.startTime} AND #{dto.endTime}) GROUP BY reportNo,major.id ORDER BY major.created DESC 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} AND check_loop = '初审' AND check_loop != '初审' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%',#{dto.reason},'%') 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, (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, (CASE #{dto.mistakeType} WHEN 'normal' THEN performance.normal_mistake * 3 WHEN 'hard' THEN performance.hard_mistake * 8 WHEN 'fatal' THEN performance.fatal_mistake * 41 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 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.department_id = #{dto.departmentId} AND performance.check_loop = #{dto.checkLoop} AND (performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime}) AND major.principal_id = #{dto.principalId} AND performance.normal_mistake > 0 AND performance.hard_mistake > 0 AND performance.fatal_mistake > 0 SELECT major.order_id AS orderId, financial, major.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 = major.clientele_contact_id) AS linkmanName, major.owner, report.report_no AS reportNo, (SELECT name FROM user WHERE id = major.principal_id) AS principalName, members, (SELECT name FROM user WHERE id = major.client_manager_id) AS clientManagerName, (SELECT SUM(check_value) FROM major_target WHERE report_no = report.report_no AND deleted = 0) AS checkValueSum, (SELECT SUM(build_acreage) FROM major_target WHERE report_no = report.report_no AND deleted = 0) AS buildAcreageSum, evaluate_aim, statement.production_time AS writeStatementDate, report.production_time AS writeReportDate, order_fund.should_amount AS shouldAmount, order_fund.real_amount AS realAmount, IF(state = 'CLOSED', '流程终止', nodeInfo.currentNodeName) AS currentNodeName, IF(state = 'CLOSED', '-', nodeInfo.handlerName) AS handlerName FROM major LEFT JOIN user ON user.id = major.principal_id LEFT JOIN customer_company AS customer ON customer.id = major.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' ) OR state = 'CLOSED') 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 = 'MAJOR_BUSINESS' AND nodeInstance.business_min_id IS NOT NULL AND nodeInstance.business_sub_id IS NOT NULL ) AS nodeInfo ON nodeInfo.businessId = major.id LEFT JOIN major_production AS statement ON statement.major_id =nodeInfo.businessId AND statement.report_no = nodeInfo.business_sub_id AND statement.deleted = 0 AND statement.production = 'STATEMENT' LEFT JOIN major_production AS report ON report.major_id =nodeInfo.businessId AND report.report_no = nodeInfo.business_min_id AND report.deleted = 0 AND report.production != 'STATEMENT' LEFT JOIN order_fund ON order_fund.business_id = major.id AND business_type = 'MAJOR_BUSINESS' AND order_fund.deleted = 0 WHERE major.deleted = 0 # 看了现场才算接单,评估对象大于0 AND (SELECT COUNT(major_target.major_id) FROM major_target WHERE major_target.deleted = 0 AND major_target.major_id = major.id) > 0 AND major.clientele_id = #{dto.customerId} AND major.clientele_contact_id = #{dto.clienteleContactId} AND major.department_id = #{dto.departmentId} AND major.evaluate_aim = #{dto.evaluateAim} AND major.financial = #{dto.financial} AND major.informal_evaluate = #{dto.informalEvaluate} AND major.market_department_id = #{dto.marketDepartmentId} AND (major.principal_id = #{dto.principalId} OR JSON_CONTAINS(major.members, CAST(#{dto.memberId} AS JSON)) ) AND major.client_manager_id = #{dto.clientManagerId} AND (SELECT major_target.created FROM major_target WHERE major_target.major_id = major.id AND deleted = 0 LIMIT 1) BETWEEN #{dto.startTime} AND #{dto.endTime} # 市场筛选条件不一样 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND statement.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND report.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND order_fund.should_amount IS NOT NULL AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND order_fund.real_amount IS NOT NULL AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} # unSite是未看现场数,评估对象为0则没看现场 AND (SELECT COUNT(major_target.major_id) FROM major_target WHERE major_target.deleted = 0 AND major_target.major_id = major.id) = 0 ORDER BY major.created DESC