-- 罚息存储过程 CREATE PROCEDURE PROC_CALC_PENALTY(IN CALC_DATE VARCHAR(10)) BEGIN -- 注意:不要变动LC_PENALTY_INFO表的唯一性索引 -- 罚息存储过程 REPLACE INTO LC_PENALTY_INFO(ID, PROJECT_ID, PROJECT_PLAN_NUMBER, CONTRACT_ID, CONTRACT_PLAN_NUMBER, PAYMENT_NUMBER, PLAN_ID, PLAN_DATE, PLAN_LIST, RENT_PLAN_DATE, PLAN_PENALTY, INPUTTIME) SELECT TT.ID, TT.PROJECT_ID, TT.PROJECT_PLAN_NUMBER, TT.CONTRACT_ID, TT.CONTRACT_PLAN_NUMBER, TT.PAYMENT_NUMBER, TT.PLAN_ID, CALC_DATE, TT.PLAN_LIST, TT.PLAN_DATE, TT.PLAN_PENALTY, TT.INPUTTIME FROM ( SELECT IFNULL(LPI.ID, REPLACE(UUID(), '-', '')) ID, LRPT.PROJECT_ID, LRPT.PROJECT_PLAN_NUMBER, LRPT.CONTRACT_ID, LRPT.CONTRACT_PLAN_NUMBER, LRPT.PAYMENT_NUMBER, LRPT.ID AS PLAN_ID, LRPT.PLAN_LIST, LRPT.PLAN_DATE, IFNULL(LPI.PLAN_PENALTY, 0) AS OLD_PLAN_PENALTY, getRentPenalty(LRPT.PAYMENT_NUMBER, LRPT.PLAN_LIST, CALC_DATE) AS PLAN_PENALTY, DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s') AS INPUTTIME FROM LC_RENT_PLAN LRPT LEFT JOIN LB_CONTRACT_INFO LCI ON LCI.ID = LRPT.CONTRACT_ID LEFT JOIN LC_PENALTY_INFO LPI ON LRPT.PAYMENT_NUMBER = LPI.PAYMENT_NUMBER AND LRPT.PLAN_LIST = LPI.PLAN_LIST WHERE LCI.CONTRACT_STATUS = '31' ) TT WHERE TT.PLAN_PENALTY <> TT.OLD_PLAN_PENALTY AND TT.PLAN_PENALTY > 0; END;