package com.bcxin.risk.util;

import com.alibaba.fastjson.JSON;
import com.bcxin.risk.activity.Activity;
import com.bcxin.risk.common.domain.Region;
import com.bcxin.risk.common.domain.SyncTask;
import com.bcxin.risk.common.dto.data.SBDataDTO;
import com.bcxin.risk.common.service.CommonService;
import com.bcxin.risk.communicate.main.MainReqService;
import com.bcxin.risk.constant.DictConst;
import com.bcxin.risk.spring.SpringContextHolder;
import com.google.common.collect.Maps;

import java.util.List;
import java.util.Map;

public class ChangeLogUtil {


    public static MainReqService getMainReqService(){
       return SpringContextHolder.getBean(MainReqService.class);
    }

    public static CommonService getCommonService(){
        return SpringContextHolder.getBean(CommonService.class);
    }

    /**
     * 活动差异信息
     * @param activityNo
     * @param oldMap
     * @param newMap
     */
    public static void sendActLog(String activityNo,Map<String,String> oldMap,Map<String,String> newMap){
        SBDataDTO sbDataDTO=new SBDataDTO();
        sbDataDTO.setActivityNo(activityNo);
        sbDataDTO.setOldMap(JSON.toJSONString(oldMap));
        sbDataDTO.setNewMap(JSON.toJSONString(newMap));
        sbDataDTO.setSyncTaskType(DictConst.SYNCTASKTYPE_ACTLOG);
        SyncTask task = getCommonService().instance(DictConst.SYNCTASKTYPE_ACTLOG, JSON.toJSONString(sbDataDTO));
        task.setActivityNo(activityNo);
        sbDataDTO.setTask(task);
        getMainReqService().mainAsync(sbDataDTO);
    }

    /**
     * 主体信息修改
     * @param activityNo
     */
    public static void sendActModuleLog(String activityNo,String changeContent){
        SBDataDTO sbDataDTO=new SBDataDTO();
        sbDataDTO.setActivityNo(activityNo);
        sbDataDTO.setContent(changeContent);
        sbDataDTO.setSyncTaskType(DictConst.SYNCTASKTYPE_MODULE_ACTLOG);
        SyncTask task = getCommonService().instance(DictConst.SYNCTASKTYPE_MODULE_ACTLOG, JSON.toJSONString(sbDataDTO));
        task.setActivityNo(activityNo);
        sbDataDTO.setTask(task);
        getMainReqService().mainAsync(sbDataDTO);
    }

    /**
     * 材料差异信息
     * @param activityNo
     * @param oldMapList
     * @param newMapList
     */
    public static void sendMaterialLog(String activityNo,String menuCode, List<Map<String,Object>> oldMapList, List<Map<String,Object>> newMapList){
        SBDataDTO sbDataDTO=new SBDataDTO();
        sbDataDTO.setActivityNo(activityNo);
        sbDataDTO.setContent(menuCode);
        sbDataDTO.setOldMap(JSON.toJSONString(oldMapList));
        sbDataDTO.setNewMap(JSON.toJSONString(newMapList));
        sbDataDTO.setSyncTaskType(DictConst.SYNCTASKTYPE_MATERAILLOG);
        SyncTask task = getCommonService().instance(DictConst.SYNCTASKTYPE_MATERAILLOG, JSON.toJSONString(sbDataDTO));
        task.setActivityNo(activityNo);
        sbDataDTO.setTask(task);
        getMainReqService().mainAsync(sbDataDTO);
    }

    /**
     * 获取需要比对的map
     * @param activity
     * @return
     */
    public static Map<String,String> getCompareMap(Activity activity){
        Region province=activity.getProvince();
        Region city=activity.getCity();
        Region area=activity.getArea();
        Region unit=activity.getUnit();
        String actAddr="";
        String provinceStr=province!=null ? province.getProvince() :"";
        actAddr+=provinceStr;
        actAddr+=city!=null ? "-"+city.getCity() :"";
        actAddr+=area!=null ? "-"+area.getArea() :"";
        actAddr+=unit!=null ? "-"+unit.getArea() :"";

        Map<String,String> map=Maps.newHashMap();
        map.put("activityName",activity.getName());
        map.put("activityType",activity.getActivityType());
        map.put("address",activity.getAddress());
        map.put("actAddr",actAddr);
        map.put("addressType",activity.getAddressType());
        map.put("number",activity.getNumber());
        map.put("activityDate",activity.getStartDate()+"~"+activity.getEndDate());
        map.put("sponsor",activity.getSponsor());
        return map;
    }
}
