id,
deleted,
modified,
created,
fine_id, refund_amount, refund_reason, statue, user_id, refund_date
SELECT refund.id AS id,
refund.fine_id AS fineId,
oFund.order_id AS orderId,
oFund.order_name AS orderName,
pFund.production_no AS productionNo,
`order`.bailor AS bailor,
`order`.order_id AS productionNo,
CONCAT(`order`.bailorA, IF(`order`.bailorB IS NOT NULL AND `order`.bailorB != '', ',', ''), `order`.bailorB) AS bailor,
CASE pFund.production_type WHEN 'LETTER' THEN '意见函' WHEN 'CONSULT' THEN '咨询报告' WHEN 'REPORT' THEN '评估报告' ELSE '-' END AS productionType,
CASE pFund.production_type WHEN 'LETTER' THEN '复评函' WHEN 'REPORT' THEN '报告' WHEN 'STATEMENT' THEN '价值意见书' ELSE '-' END AS productionType,
CASE pro.production WHEN 'FINAL' THEN '结果报告' WHEN 'TECHNIC' THEN '技术报告' ELSE '-' END AS productionType,
user.name AS clientManagerName,
customer.name AS customerName,
subCustomer.name AS customerSubName,
fine.real_fine_amount AS finedAmount,
fine.created AS punishDate,
refund.refund_amount AS refundAmount,
refund.refund_date AS refundDate,
refund.refund_amount AS refundAmount,
refund.refund_reason AS refundReason,
refund.status AS status,
operator.name AS operator,
refund.refund_date AS refundDate
FROM finance_fine_refund AS refund
LEFT JOIN finance_fine AS fine ON fine.deleted = 0 AND fine.id = refund.fine_id
LEFT JOIN order_fund AS oFund ON oFund.deleted = 0 AND oFund.id = fine.order_fund_id
LEFT JOIN production_fund AS pFund ON pFund.deleted = 0 AND pFund.id = fine.production_fund_id AND pFund.order_fund_id = fine.order_fund_id
LEFT JOIN ( SELECT business_id, production_no, repertory_out_time FROM assets_production WHERE deleted = 0 AND repertory_out_time IS NOT NULL AND production_type != 'STATEMENT') AS pro
ON pFund.business_id = pro.business_id AND pFund.production_no = pro.production_no
LEFT JOIN assets AS `order` ON `order`.deleted = 0 AND `order`.id = pFund.business_id
LEFT JOIN production_fund AS pFund ON pFund.deleted = 0 AND pFund.id = fine.production_fund_id AND pFund.order_fund_id = fine.order_fund_id
LEFT JOIN ( SELECT major_id AS business_id, report_no AS production_no, repertory_out_time, production FROM major_production WHERE deleted = 0 AND repertory_out_time IS NOT NULL) AS pro
ON pFund.business_id = pro.business_id AND pFund.production_no = pro.production_no AND production = pFund.production_type
LEFT JOIN major AS `order` ON `order`.deleted = 0 AND `order`.id = pFund.business_id
LEFT JOIN personal_target pt ON pt.personal_id = oFund.business_id
LEFT JOIN ( SELECT target_id,repertory_out_time, production FROM personal_production WHERE repertory_out_time IS NOT NULL GROUP BY target_id ) AS pro ON pro.target_id = pt.id
LEFT JOIN personal AS `order` ON `order`.deleted = 0 AND `order`.id = oFund.business_id
LEFT JOIN customer_company AS customer ON customer.id = `order`.clientele_id
LEFT JOIN customer_company AS subCustomer ON subCustomer.id = `order`.clientele_sub_id
LEFT JOIN user ON `order`.client_manager_id = user.id AND user.deleted = 0
LEFT JOIN user AS operator ON user.deleted = 0 AND user.id = refund.user_id
WHERE oFund.business_type = #{dto.businessType}
AND (`order`.order_id LIKE CONCAT('%', #{dto.keyWord},'%')
OR pFund.production_no LIKE CONCAT('%', #{dto.keyWord},'%')
)
AND fine.real_fine_amount = #{dto.finedAmount}
AND refund.refund_amount = #{dto.refundAmount}
AND user.name = #{dto.clientManagerName}
AND fine.status = #{dto.status}
AND fine.created BETWEEN #{dto.startPunishDate} AND #{dto.endPunishDate}
AND refund.refund_date BETWEEN #{dto.startRefundDate} AND #{dto.startRefundDate}
AND `order`.client_manager_id = #{dto.clientManagerId}