package com.ruoyi.quartz.task;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.quartz.domain.c_rb_product_price;
import com.ruoyi.quartz.domain.c_rb_productbase_price;
import com.ruoyi.quartz.service.SapTjService;
import com.ruoyi.quartz.util.JDBCBatchInsert;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;

/**
 * 定时任务调度-同步红本数据库
 *
 * @author ruoyi
 */
@Component("rbTask")
public class RbTask
{
    @Resource
    private SapTjService sapTjService;

    public static RbTask testUtils;

    @PostConstruct
    public void init() {
        testUtils = this;
    }

    /**
     * 同步红本数据库
     */
    public void tongb() throws Exception {
        //判断是否已执行调价 （6.3 redbook rb_productVersion 是否有新增uid and sta='1'、sdmdm1 调价日期今日的数据是否存在）
        String rbVersionUid = testUtils.sapTjService.selRbVersionUid();//红本调价记录uid
        String locVersionUid = testUtils.sapTjService.selLocVersionUid();//本地红本调价记录uid

        String RbProductPriceCount = testUtils.sapTjService.selRbProductPriceVersionUid(rbVersionUid);//RbProductPrice表是否有更新
        String RbProductBasePriceCount = testUtils.sapTjService.selRbProductBasePriceVersionUid(rbVersionUid);//RbProductBasePrice表是否有更新

        try{
            if(!rbVersionUid.equals(locVersionUid) && Integer.valueOf(RbProductPriceCount)>0 && Integer.valueOf(RbProductBasePriceCount)>0) {//有新增调价版本并且有调价记录
                System.out.println("=======================开始同步!======================");
                testUtils.sapTjService.deleteLocProductPrice();//删除本地c_rb_product_price表数据
                List<c_rb_product_price> productPriceList = testUtils.sapTjService.getProductPriceList(rbVersionUid);
                JDBCBatchInsert.insertRbProductPrice(productPriceList);//批量插入

                testUtils.sapTjService.deleteLocProductBasePrice();//删除本地c_rb_productbase_price表数据
                List<c_rb_productbase_price> productBasePriceList = testUtils.sapTjService.getProductBasePriceList(rbVersionUid);
                JDBCBatchInsert.insertRbProductBasePrice(productBasePriceList);//批量插入

                testUtils.sapTjService.updateLocRbVersion(rbVersionUid);//更新本地c_rb_version表
            }
        }catch (Exception e) {
            throw new Exception(e.getMessage(), e);
        }
    }
}
