⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tickethandler.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        MetaData metadata = context.getMetaData();
        FamgMeta formMeta = metadata.getFamgMeta(formIndex);
        FieldMeta fieldMeta = formMeta.getForm().getEntityMeta().getField(fromLinkFieldId);
        FamgMeta.Index toFormIndex = fieldMeta.getLinkedForm();
        String linkedForm = metadata.getFormID(toFormIndex);

        int state = formContext.getFormState(formIndex);
        switch (state){
            case FormState.SELECTED_STATE:
                ArrayList linkFilter = new ArrayList();
                if (linkedForm.equalsIgnoreCase(interFormId)){ // the link for ticket form is pressed
                    linkFilter.add(
                            new EntityData(INTER_TICKET_ENTITY, new Long(-1), 
                            new FieldData[] {
                                new TextboxFieldData( INTER_TICKET_FILTER_FIELD, 
                                    formContext.getSelectedRecordId(formIndex).toString()
                                )
                            }));
                    interHandler.setExternalEntityFilters(linkFilter);                  
                } else if (linkedForm.equalsIgnoreCase(attachTicketFormId)) {
                    linkFilter.add(
                            new EntityData(ATTACHMENT_OBJECTS_ENTITY, new Long(-1), 
                            new FieldData[] {
                                new TextboxFieldData( OBJECT_ID, 
                                    formContext.getSelectedRecordId(formIndex).toString()
                                )
                            }));
                    attachHandler.setExternalEntityFilters(linkFilter);                  
                } else if (linkedForm.equalsIgnoreCase(eventFormId)) {
                    EntityReferenceData erd = new EntityReferenceData(TICKETEVENT_FILTER_FIELD);
                    erd.setSelectedRowID(formContext.getSelectedRecordId(formIndex));
                    //formContext.setFieldData(erd, toFormIndex);
                    linkFilter.add(
                            new EntityData(TICKETEVENT_ENTITY, new Long(-1), 
                            new FieldData[] { erd } ));
                    eventHandler.setExternalEntityFilters(linkFilter);                  
                }
                else
                    break;
                //clear form
                context.getGridOperations().activateGrid(toFormIndex);
                context.getFormOperations().activateForm(toFormIndex);
                formContext.clearForm(toFormIndex, true);
                //perform search
                getOperationContext().performOperation(OperationTypes.SEARCH_RECORDS, toFormIndex);
                return;
        }
        //surfe to form
        super.handleLinkEvent(fromLinkFieldId);
    }

    protected void createSolutionFromNewState(FamgMeta.Index formIndex){
        FormOperations context = getOperationContext().getFormOperations();

        FieldData ticketStatus = context.getFieldData(formIndex, STATUS);
        boolean wrongStatus = false;
        if(!ticketStatus.isEmpty()) {
            long selId = ((ListboxFieldData) ticketStatus).getItemsSelected()
                    .getSelectedIDs()[0];
            switch((int) selId) {
                case TicketHelper.RELEASE_CANDIDATE_STATUS:
                case TicketHelper.DELIVERED_STATUS:
                case TicketHelper.CLOSED_STATUS:
                    break;
                default:
                    wrongStatus = true;
            }
        } else {
            wrongStatus = true;
        }
        if(wrongStatus){
            DialogHelper.showModalMessageDialog("This button is available only if ticket status is release candidate, delivered or closed.");
            return;
        }
        
        FieldData ticketId =        context.getFieldData(formIndex,
                TICKET_ID_FIELD_NAME);
        FieldData ticketProduct =   context.getFieldData(formIndex,
                PRODUCT_ID_FIELD_NAME);
        FieldData ticketComponent = context.getFieldData(formIndex,
                COMPONENT_ID_FIELD_NAME);
        FieldData ticketSubject =   context.getFieldData(formIndex,
                SUBJECT_FIELD_NAME);
        FieldData ticketDesc =      context.getFieldData(formIndex,
                DESCRIPTION_FIELD_NAME);
        FieldData ticketDescText =  context.getFieldData(formIndex,
                DESCRIPTION_TEXT_FIELD_NAME);
        FieldData ticketResp =      context.getFieldData(formIndex,
                RESPONSE_FIELD_NAME);
        FieldData ticketRespText =  context.getFieldData(formIndex,
                RESPONSE_TEXT_FIELD_NAME);
        
        FieldData clonedTicketId = ticketId.cloneData();
        clonedTicketId.setFieldID(SOLUTION_CUR_TICKET_ID_FIELD);
        
        FieldData clonedProduct = null;
        FieldData clonedComponent = null;
        FieldData clonedSubject = null;
        FieldData clonedDesc = null;
        FieldData clonedDescText = null;
        FieldData clonedResp = null;
        FieldData clonedRespText = null;
        
        if(!ticketProduct.isEmpty()){ 
            clonedProduct = ticketProduct.cloneData();
            clonedProduct.setFieldID(SOLUTION_PRODUCT_FIELD);
        }
        if(!ticketComponent.isEmpty()){ 
            clonedComponent = ticketComponent.cloneData();
            clonedComponent.setFieldID(SOLUTION_COMPONENT_FIELD);
        }    
        if(!ticketSubject.isEmpty()){ 
            clonedSubject = ticketSubject.cloneData();
            clonedSubject.setFieldID(SOLUTION_SUMMARY_FIELD);
        }    
        if(!ticketDesc.isEmpty()){ 
            clonedDesc = ticketDesc.cloneData();
            clonedDesc.setFieldID(SOLUTION_PROBLEM_FIELD);
        }
        if(!ticketDescText.isEmpty()){ 
            clonedDescText = ticketDescText.cloneData();
            clonedDescText.setFieldID(SOLUTION_PROBLEM_TEXT_FIELD);
        }
        if(!ticketResp.isEmpty()){ 
            clonedResp = ticketResp.cloneData();
            clonedResp.setFieldID(SOLUTION_SOL_FIELD);
        }
        if(!ticketRespText.isEmpty()){ 
            clonedRespText = ticketRespText.cloneData();
            clonedRespText.setFieldID(SOLUTION_SOL_TEXT_FIELD);
        }

        FieldData[] initData = new FieldData[8];
        initData[0] = clonedTicketId;
        initData[1] = clonedProduct;
        initData[2] = clonedComponent;
        initData[3] = clonedSubject;
        initData[4] = clonedDesc;
        initData[5] = clonedDescText;
        initData[6] = clonedResp;
        initData[7] = clonedRespText;
        
        initializeHandler(initData);
    }    

    public static boolean compareFieldData(ListboxFieldData data1, ListboxFieldData data2) {
        if(data1 == null && data2 != null) {
            return true;
        }
        if(data1 != null && data2 == null) {
            return true;
        }
        long[] ids1 = data1.getItemsSelected().getSelectedIDs();
        long[] ids2 = data2.getItemsSelected().getSelectedIDs();
        if(ids1.length != ids2.length) {
            return true;
        } else {
            for(int i = 0; i < ids1.length; i++) {
                if(ids1[i] != ids2[i]) {
                    return true;
                }
            }
        }
        return false;
    }

    protected void initializeHandler(FieldData[] initData){
        solutionHandler.setInitialFieldsData(initData);
        OperationsHelper.createNewRecord(solutionFormId, getOperationContext());
    }

    public void setSolutionHandler(SolutionHandler solutionHandler) {
        this.solutionHandler = solutionHandler;
    }

    public void setAttachHandler(AttachmentTicketHandler attachHandler) {
        this.attachHandler = attachHandler;
    }

    public void setInterHandler(InteractionHandler interHandler) {
        this.interHandler = interHandler;
    }

    public void setInterFormId(String interFormId) {
        this.interFormId = interFormId;
    }

    public void setTicketEventHandler(TicketEventHandler eventHandler) {
        this.eventHandler = eventHandler;
    }

    public void setTicketEventFormId(String eventFormId) {
        this.eventFormId = eventFormId;
    }
    
    public void setAttachTicketFormId(String attachTicketFormId) {
        this.attachTicketFormId = attachTicketFormId;
    }

    public void setSolutionFormId(String solutionFormId) {
        this.solutionFormId = solutionFormId;
    }

    private class FromAndToEmailAsyncCallback extends RPC.QAsyncCallback {
        int objectType;
        long objectId;
        String oldMessage;
        String oldSubject;
        public FromAndToEmailAsyncCallback(int objType, long objId, String subject, String text) {
            objectType = objType;
            objectId = objId;
            oldSubject = subject;
            oldMessage = text;
        }
        public void onRequestEnded(boolean success, Object result) {
            if(success) {
                boolean isOk = true;
                String fromAdr = "";
                String toAdr = "";
                if(result == null) {
                    isOk = false;
                } else if(!(result instanceof String[])) {
                    isOk = false;
                } else {
                    String[] retEmails = (String[]) result;
                    if(retEmails.length != 2) {
                        isOk = false;
                    } else {
                        fromAdr = retEmails[0];
                        toAdr = retEmails[1];
                        if(StringUtil.isStringEmpty(fromAdr) || StringUtil
                                .isStringEmpty(toAdr))
                            isOk = false;
                    }
                }
                if(!isOk) {
                    DialogHelper.showModalMessageDialog(
                            "Can't get email adresses. Reply can't be sent.");
                    return;
                }

                String newBody = "\n----------------------------------------" +
                        "\nFrom: " + toAdr +
                        "\nSubject: " + oldSubject +
                        "\nDescription:\n" + oldMessage;

                replyInitVals.put(EmailComposeHelper.FROM_MAP_FIELD, fromAdr);
                replyInitVals.put(EmailComposeHelper.TO_MAP_FIELD, toAdr);
                replyInitVals.put(EmailComposeHelper.BODY_MAP_FIELD, newBody);

                if(replyDialog == null) {
                    replyDialog = new ReplyComposeDialog("Send Email Form");
                }
                replyDialog.setInitialDataMap(replyInitVals);
                replyDialog.setObjectType(objectType);
                replyDialog.setObjectId(objectId);
                replyDialog.show(true);
            } else {
                DialogHelper.showModalMessageDialog(
                        "RPC call failed. Reply can't be sent.");
            }
        }
    }

    private class CreateLinkAsyncCallback extends RPC.QAsyncCallback {
        public CreateLinkAsyncCallback() {
        }

        public void onRequestEnded(boolean success, Object result) {
            if(success) {
                Boolean rv = (Boolean) result;
                if(rv != null) {
                    if(rv == Boolean.FALSE) {
                        DialogHelper.showModalMessageDialog(
                                "The link already exists.");
                    } else {
                        DialogHelper.showModalMessageDialog(
                                "The link is created.");
                    }
                }
            } else {
                DialogHelper.showModalMessageDialog("RPC call failed.");
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -