package com.zfire.jiasm.syncdata.download.worker;


import com.zfire.jiasm.syncdata.constant.TaskConfigEnum;
import com.zfire.jiasm.syncdata.service.GLPPWXGQueryAddService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 格力品牌网点维修工 证件照，服务类目，新增同步 初始化进来
 *     后期不做新增同步，只做修改同步
 * 扫描下载表
 * 1：平台本地无格力总部的师傅数据不处理
 * 2：师傅已有证件信息不处理-这里无论是什么证件都不再新增证件数据
 *
 * 网点服务类目信息同步
 * 1：平台无师傅信息不处理
 * 2：师傅在平台 师傅网点对应品牌网点信息表中不存在不处理（不存在找不到对应的平台网点信息） worker_brand_account：
 */
@Slf4j
@Component
public class GLPPWXGQueryAdd {
    @Value("${wxgwzc}")
    private String wxgwzc = "";
    @Value("${lmxxc}")
    private String lmxxc = "";
    @Value("${zjzxxc}")
    private String zjzxxc = "";
    @Value("${wxgwztc}")
    private String wxgwztc = "";
    @Value("${zjzbxc}")
    private String zjzbxc = "";
    @Value("${sfzjxxc}")
    private String sfzjxxc = "";
    @Value("${zjzoc}")
    private String zjzoc = "";
    @Resource
    GLPPWXGQueryAddService glppwxgQueryAddService;




    /**
     * 从格力总部同步师傅的证件照
     * 只做新增(王总的要求)
     * 这里只同步证件照数据，不生成平台图片信息
     *
     * 师傅所在网点无效状态不同步
     * 师傅在平台中不存在不同步
     * 已同步过的不再同步
     */
    @Scheduled(fixedDelayString = "${zjzxx}")
    public void process() throws Exception {
        if (zjzxxc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始同步获取网点师傅证件信息: \uF0B7{}",sdf.format(new Date()));
        try {
            glppwxgQueryAddService.extractedCertInfo();
            log.info("同步获取网点师傅证件信息结束: \uF0B7{}",sdf.format(new Date()));
        } catch (Exception ex) {
            ex.printStackTrace();
            log.info("同步获取网点师傅证件信息失败: \uF0B7{}",sdf.format(new Date()));
        }
    }

    // 格力总部同步师傅的证件数据生成平台的证件图信息
    @Scheduled(fixedDelayString = "${zjzxx}")
    public void processCert(){
        if (zjzoc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始生成网点师傅平台证件信息: \uF0B7{}",sdf.format(new Date()));

        glppwxgQueryAddService.extractedCert();

        log.info("生成网点师傅平台证件信息结束: \uF0B7{}",sdf.format(new Date()));
    }


    // 从格力总部同步师傅的保险证件数据生成平台的证件信息
    @Scheduled(fixedDelayString = "${zjzbx}")
    public void processBX(){
        if (zjzbxc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始生成网点师傅保险证件信息: \uF0B7{}",sdf.format(new Date()));

        glppwxgQueryAddService.extractedBx();

        log.info("生成网点师傅保险证件信息结束: \uF0B7{}",sdf.format(new Date()));
    }

    // 新增 师傅服务类目信息
    // 新增 师傅服务类目信息 这里只做新增(只新增从格力总部过来的师傅服务的类目信息)
    // 师傅所在商户网点与平台网点必须有对应关系
    @Scheduled(fixedDelayString = "${lmxx}")
    public void processLM() throws Exception {
        if (lmxxc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始同步网点师傅服务类目信息: \uF0B7{}",sdf.format(new Date()));
        try {
            glppwxgQueryAddService.extractedAddCategory();
            log.info("同步网点师傅服务类目信息结束: \uF0B7{}",sdf.format(new Date()));
        } catch (Exception ex) {
            ex.printStackTrace();
            log.info("同步网点师傅服务类目信息失败: \uF0B7{}",sdf.format(new Date()));
        }
    }

    // 新增格力网点维修工数据
    // 放在了 ItfTblWangdianPositionDownload 表 向上同步使用
    @Scheduled(fixedDelayString = "${wdwxgt}")
    public void processWxgT(){
        if (wxgwztc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始同步网点维修工数据信息: \uF0B7{}",sdf.format(new Date()));

        try {
            glppwxgQueryAddService.extracteWxgQueryAddWXGInfo();
            log.info("同步网点维修工数据信息结束: \uF0B7{}",sdf.format(new Date()));
        } catch (Exception ex) {
            ex.printStackTrace();
            log.info("同步网点维修工数据信息失败: \uF0B7{}",sdf.format(new Date()));
        }
    }



    // 从总部生成平台网点师傅证件数据 方便入驻网点
    @Scheduled(fixedDelayString = "${sfzjxx}")
    public void processsfzj() throws Exception {
        if (sfzjxxc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始同步获取总部网点师傅证件信息: \uF0B7{}",sdf.format(new Date()));
        try {
            glppwxgQueryAddService.extractedCertGreeInfo();
            log.info("同步获取总部网点师傅证件信息结束: \uF0B7{}",sdf.format(new Date()));
        } catch (Exception ex) {
            ex.printStackTrace();
            log.info("同步获取总部网点师傅证件信息失败: \uF0B7{}",sdf.format(new Date()));
        }
    }











    /**
     * 新增师傅地理位置  不再执行 由 wxgQueryAddWXGInfo 来完成
     */
    public void wxgQueryAdd() throws Exception {
        if (wxgwzc.equals(TaskConfigEnum.FALSE.getCode())){
            return;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        log.info("开始同步网点师傅地理位置信息: \uF0B7{}",sdf.format(new Date()));

        glppwxgQueryAddService.extractedwxgQueryAdd();

        log.info("同步网点师傅地理位置信息结束: \uF0B7{}",sdf.format(new Date()));
    }


}
