package weaver.interfaces.htsc.yfkqrlc;

import org.apache.commons.lang.time.DateUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.schedule.BaseCronJob;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @tableName uf_PrepayMageAccRep
 * @Describe 定时刷新建模表，修改其中的是否逾期和逾期天数字段
 */
public class SetYqtsSfyqJob extends BaseCronJob {
    /**
     * @Describe 具体逻辑：
     * 是否逾期：判断“待核销金额＞0”时每日更新，更新结果为“当前日期-付款流程办结日期”，小于等于30天为“否”；大于30天为“是”；
     * 逾期天数：判断“待核销金额＞0”时每日更新，更新结果为“当前日期-付款流程办结日期-30天”；
     */
    @Override
    public void execute() {
        // 是否逾期：0是1否
        BaseBean bb = new BaseBean();
        RecordSet rs = new RecordSet();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sql;
        try {
            // 获取当前时间
            String before30 = sdf.format(DateUtils.addDays(new Date(), -30));
            bb.writeLog("=========当前时间的前30天的时间是：" + before30);
            // 获取需要更新字段的数据ID
            sql = "select wm_concat_old(id) ids from uf_PrepayMageAccRep where lcbjsj < ? and DHXJE != 0";
            rs.executeQuery(sql, before30);
            if (rs.next()) {
                String ids = Util.null2String(rs.getString("ids"));
                if (!"".equals(ids)) {
                    for (String id : ids.split(",")) {
                        sql = "update uf_PrepayMageAccRep set sfyq = 0,yqts = (" +
                                "select round(to_date('" + before30 + "','yyyy-MM-dd HH24:mi:ss')-" +
                                "to_date(LCBJSJ,'yyyy-MM-dd HH24:mi:ss'),0) from uf_PrepayMageAccRep" +
                                " where id = " + id + ") where id = " + id + "";
                        bb.writeLog("========即将执行的update语句是：" + sql);
                        rs.executeUpdate(sql);
                    }
                }
            }
        } catch (Exception e) {
            e.getMessage();
            bb.writeLog("是否逾期和逾期天数定时修改逻辑错误，错误是：");
            bb.writeLog(e.getMessage());
        }
    }
}
