package shkd.repc.repmd.template;


import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.form.CloseCallBack;
import kd.bos.form.FormShowParameter;
import kd.bos.form.ShowType;
import kd.bos.form.StyleCss;
import kd.bos.form.control.Control;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.list.ListShowParameter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import shkd.repc.repmd.template.util.ExportTemplateUtil;

import java.util.EventObject;
import java.util.HashMap;
import java.util.List;


public class AreaDataImportPlugin extends AbstractFormPlugin implements Plugin {

    @Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        this.addItemClickListeners("qeug_advcontoolbarap");
    }

    @Override
    public void itemClick(ItemClickEvent evt) {
        super.itemClick(evt);
        if (StringUtils.equals("qeug_templatedownload", evt.getItemKey())) {
            FormShowParameter showParameter = createFormParameter();
            this.getView().showForm(showParameter);
        }
    }

    private FormShowParameter createFormParameter() {
        HashMap<String, Object> map = new HashMap<>(2);
        map.put("logotype", "areaTemplate");
        FormShowParameter showParameter = new FormShowParameter();
        showParameter.setFormId("qeug_dynamicbill");
        showParameter.setCaption("面积数据模板列表");
        StyleCss inlineStyleCss = new StyleCss();
        inlineStyleCss.setHeight("580");
        inlineStyleCss.setWidth("960");
        showParameter.getOpenStyle().setInlineStyleCss(inlineStyleCss);
        showParameter.getOpenStyle().setShowType(ShowType.Modal);
        showParameter.setCustomParams(map);
        showParameter.setCloseCallBack(new CloseCallBack(this, "template"));
        return showParameter;
    }

    @Override
    public void closedCallBack(ClosedCallBackEvent e) {
        super.closedCallBack(e);
        String callBackId = e.getActionId();
        if ("template".equals(callBackId)) {
            DynamicObjectCollection returnData = (DynamicObjectCollection) e.getReturnData();
            if (null != returnData && returnData.size() != 0) {
                for (int i = 0; i < returnData.size(); i++) {
                    Long id = Long.parseLong(returnData.get(i).getString("qeug_id"));
                    DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(id, "qeug_areatemplate");
                    if (null!=dynamicObject){
                        String templateName = dynamicObject.getString("qeug_remark");
                        DynamicObjectCollection areaEntry = dynamicObject.getDynamicObjectCollection("qeug_entryentity");
                        Control productView= this.getView().getControl("productentry");
                        Control areaView= this.getView().getControl("qeug_subentryentity");
                        StringBuilder message =new StringBuilder();
                        String url=null;
                        if (areaEntry.size()!=0){
                            //导出自定义模板
                            url = ExportTemplateUtil.exportTemplate(areaEntry, message, productView, areaView,templateName);
                        }else {
                            //导出默认模板
                            url = ExportTemplateUtil.exportTemplate(message, productView, areaView,templateName);
                        }
                        // 展示消息
                        if (message.length() > 0) {
                            this.getView().showMessage(message.toString());
                        }
                        if (null!=url){
                            this.getView().openUrl(url);
                        }
                    }
                }
            }
        }
    }

}