📄 tickethandler.java
字号:
} else if(RES_BVERSION_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
FieldData productData = context.getFieldData(formIndex,
PRODUCT_ID_FIELD_NAME);
FieldData cloned = productData.cloneData();
cloned.setFieldID(BVERSION_FILTER_FIELD_NAME);
theRequest.setAdditionalFilterForRequestingEntity(cloned);
} else if(REP_ENV_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
theRequest.clearAdditionalFilter();//clear previous filters, because it might be singleton-event-object.
FieldData productData = context.getFieldData(formIndex,
PRODUCT_ID_FIELD_NAME);
if(!productData.isEmpty()) {
FieldData cloned = productData.cloneData();
cloned.setFieldID(ENV_FILTER_FIELD_NAME);
theRequest.addAdditionalFilterForRequestingEntity(cloned);
}
EntityReferenceData customerIdData = (EntityReferenceData) context.getFieldData(
formIndex, CUSTOMER_ID_FIELD_NAME);
if(customerIdData.getSelectedRowID() != null) {
FieldData data = new TextboxFieldData(CUSTOMER_TICKET_ENTITY_PKEYFIELD_NAME, customerIdData.getSelectedRowID().toString());
theRequest.addAdditionalFilter(data, CUSTOMER_TICKET_ENTITY_NAME);
}
} else if(TEST_ENV_ID_FIELD_NAME.equalsIgnoreCase(elementID)) {
EntityReferenceDataRequest theRequest = (EntityReferenceDataRequest) request;
FieldData productData = context.getFieldData(formIndex,
PRODUCT_ID_FIELD_NAME);
//FieldData customerData = form.getModel().getElementData(CUSTOMER_ID_FIELD_NAME);
FieldData cloned = productData.cloneData();
//FieldData cloned_cust = (FieldData) customerData.cloneData();
cloned.setFieldID(ENV_FILTER_FIELD_NAME);
//cloned_cust.setFieldID(ENVCUST_FILTER_FIELD_NAME);
theRequest.setAdditionalFilterForRequestingEntity(cloned);
//theRequest.setAdditionalFilter(cloned_cust);
} else if(SUB_CATEGORY_FIELD_NAME.equalsIgnoreCase(elementID)) {
ListboxDataRequest listBoxReq = (ListboxDataRequest) request;
ListboxFieldData categoryData = (ListboxFieldData) context.getFieldData(
formIndex, CATEGORY_FIELD_NAME);
boolean isChange = compareFieldData(oldCategoryData, categoryData);
if(!isChange) {
return;
}
//if(!categoryData.isEmpty()) {
FieldData cloned = categoryData.cloneData();
cloned.setFieldID(CATEGORY_FIELD_IN_SUBCATEGORY_ENTITY);
listBoxReq.setAdditionalFilter(cloned);
//}
oldCategoryData = (ListboxFieldData) categoryData.cloneData();
}
super.handleControlDataRequest(request);
}
public void setInitialFieldsData(FieldData[] fieldsData){
initialFieldsData = fieldsData;
}
protected void lockAndEditResponse(boolean success,
EntityData[] entitiesList,
EntityData[] externalFieldsList,
Collection gridData) {
super.lockAndEditResponse(success, entitiesList, externalFieldsList,
gridData);
if(!success || eventId == null) return;
FamgMeta.Index formIndex = getFormIndex();
FormOperations context = getOperationContext().getFormOperations();
EntityReferenceData ownerField = new EntityReferenceData(OWNER);
ownerField.setSelectedRowID(new Long(getUserId()));
ownerField.setSelectedFilter(getUserFullname());
context.setFieldData(formIndex, ownerField);
ListboxFieldData statusField = new ListboxFieldData(STATUS, new SubsetData(new long[]{STATUS_OWNED}));
context.setFieldData(formIndex, statusField);
//EntityReferenceData ownerField = (EntityReferenceData) context.getFieldData(OWNER, index);
//ListboxFieldData statusField = (ListboxFieldData) context.getFieldData(STATUS, index);
//statusField.setItemsSelected(new SubsetData(new long[]{STATUS_OWNED}));
//ownerField.setSelectedRowID(new Long(getUserId()));
//ownerField.setSelectedFilter(getUserFullname());
eventId = null;
}
protected void createRecordProtorypeResponse(boolean success,
FieldData[] fields,
Long rowId) {
super.createRecordProtorypeResponse(success, fields, rowId);
if(!success) {
return;
}
FamgMeta.Index formIndex = getFormIndex();
if(initialFieldsData != null && initialFieldsData.length > 0) {
FormOperations formContext = getOperationContext().getFormOperations();
for(int i = 0; i < initialFieldsData.length; i++) {
if(initialFieldsData[i] != null) {
formContext.setFieldData(formIndex, initialFieldsData[i]);
}
}
String originInterId = ((TextboxFieldData) formContext.getFieldData(
formIndex, CUR_INTERACTION_ID_FIELD)).getText();
curOriginInteractionId = (originInterId != null) ? originInterId : "0";
initialFieldsData = null;
} else {
curOriginInteractionId = "0";
}
}
protected void insertRecordResponse(boolean success,
EntityData[] entitiesList,
EntityData[] externalFieldsList,
Collection gridData,
RowData updatedRow) {
super.insertRecordResponse(success, entitiesList, externalFieldsList, gridData, updatedRow);
FormOperations formContext = getOperationContext().getFormOperations();
if(!success) return;
if(!curOriginInteractionId.equals("0")){
FamgMeta.Index formIndex = getFormIndex();
long ticketId = formContext.getSelectedRecordId(formIndex).longValue();
String interId = ((TextboxFieldData) formContext.getFieldData(
formIndex, INTERACTION_ID_FIELD)).getText();
if( FormState.NEW_STATE == getOperationContext().getFormOperations().getFormState(formIndex) &&
curOriginInteractionId.equals(interId) ){
linkToTicketDataset(formIndex, ticketId);
}
curOriginInteractionId = "0";
}
}
private void linkToTicketDataset(FamgMeta.Index interationIndex, long ticketId){
FormOperations formContext = getOperationContext().getFormOperations();
MultiselectFieldData linksData = (MultiselectFieldData) formContext.getFieldData(
interationIndex, LINKET_TICKETS_FIELD);
long[] selLinks = linksData.getItemsSelected().getSelectedIDs();
long[] newSelLinks = {ticketId};
if(selLinks != null){
newSelLinks = new long[selLinks.length+1];
for(int i=0;i<selLinks.length;i++)
if(selLinks[i] != ticketId)
newSelLinks[i] = selLinks[i];
else{
DialogHelper.showModalMessageDialog("The link to Ticket # "+ticketId+" already exists.");
return;
}
newSelLinks[newSelLinks.length-1]= ticketId;
}
MultiselectFieldData newLinksData = new MultiselectFieldData(LINKET_TICKETS_FIELD, new SubsetData(newSelLinks));
formContext.setFieldData(interationIndex, newLinksData);
}
public void handleCustomButtonEvent(String buttonId) {
FamgMeta.Index formIndex = getFormIndex();
FormOperations formContext = getOperationContext().getFormOperations();
int state = formContext.getFormState(formIndex);
if( buttonId.equalsIgnoreCase(LINK_TO_INTERACTION_BUTTON) ){
switch(state){
case FormState.SELECTED_STATE:
case FormState.EDIT_STATE:
//DialogHelper.showModalMessageDialog("Under construction...");
linkTicketToInteraction(formIndex);
break;
default:
DialogHelper.showModalMessageDialog("This button is available only in EDIT or SELECTED state.");
}
} else if(buttonId.equalsIgnoreCase(NEW_SOLUTION_BUTTON)) {
switch(state) {
case FormState.SELECTED_STATE:
createSolutionFromNewState(formIndex);
break;
default:
DialogHelper.showModalMessageDialog(
"This button is available only in SELECTED state.");
break;
}
} else if(buttonId.equals(ATTACH_FILE)) {
switch (state) {
case FormState.SELECTED_STATE:
createNewAttachment(formIndex);
break;
default:
DialogHelper.showModalMessageDialog("This button is available only in SELECTED state.");
}
} else if(buttonId.equals(SEND_EMAIL_BUTTON)) {
switch (state) {
case FormState.SELECTED_STATE:
sendReplyEmail(formIndex);
break;
default:
DialogHelper.showModalMessageDialog("This button is available only in SELECTED state.");
}
}
}
private void sendReplyEmail(FamgMeta.Index formIndex) {
replyInitVals = new HashMap();
FormOperations context = getOperationContext().getFormOperations();
FieldData ticketIdFld = context.getFieldData(formIndex,
TICKET_ID_FIELD_NAME);
FieldData custIdFld = context.getFieldData(formIndex,
CUSTOMER_ID_FIELD_NAME);
FieldData empIdFld = context.getFieldData(formIndex,
EMPLOYEE_ID_FIELD_NAME);
FieldData subjectFld = context.getFieldData(formIndex,
SUBJECT_FIELD_NAME);
FieldData messageFld = context.getFieldData(formIndex,
DESCRIPTION_FIELD_NAME);
int objectType = OperationsHelper.TICKET_OBJECT_TYPE;
long objectId = Long.parseLong( ((TextboxFieldData)ticketIdFld).getText() );
String oldSubject = "";
if(!subjectFld.isEmpty()){
oldSubject = ((TextboxFieldData)subjectFld).getText();
}
String newSubject = ("QueWeb "+ TICKET_ID_CAPTION + objectId+" : "+oldSubject).substring(0,255);
replyInitVals.put(EmailComposeHelper.SUBJECT_MAP_FIELD, newSubject);
//DialogHelper.showModalMessageDialog("newSubject "+newSubject);
Long initCustomerId = null; boolean isCustomer = false;
if(!custIdFld.isEmpty()){
initCustomerId = ((EntityReferenceData)custIdFld).getSelectedRowID();
isCustomer = true;
} else if(!empIdFld.isEmpty()){
initCustomerId = ((EntityReferenceData)empIdFld).getSelectedRowID();
isCustomer = false;
}
//DialogHelper.showModalMessageDialog("initCustomerId "+initCustomerId);
//DialogHelper.showModalMessageDialog("oldSubject "+oldSubject);
String oldMessage = "";
if(!messageFld.isEmpty()){
oldMessage = ((TextareaFieldData)messageFld).getText();
}
//DialogHelper.showModalMessageDialog("oldMessage "+oldMessage);
if(initCustomerId != null ){
FromAndToEmailAsyncCallback callback = new FromAndToEmailAsyncCallback(objectType, objectId, oldSubject, oldMessage);
CustomRPC.getCustomRPC().getFromAndToEmail(objectType, objectId, isCustomer, initCustomerId, callback);
} else {
DialogHelper.showModalMessageDialog("Can't get customer or internal custore to determine recipient address.");
}
}
private void linkTicketToInteraction(FamgMeta.Index formIndex){
FormOperations context = getOperationContext().getFormOperations();
Long ticketId = context.getSelectedRecordId(formIndex);
FamgMeta.Index interactionIndex = (FamgMeta.Index) getOperationContext().getMetaData().getIndexByID(interFormId);
Long interId = context.getSelectedRecordId(interactionIndex);
if(interId == null){
DialogHelper.showModalMessageDialog("Interaction Record must be selected on the Interaction Tab.\nPlease navigate to it, select desired Interaction and click Link again.");
} else {
int answer = DialogHelper.showModalQuestionDialog(
"The link between ticket # " + ticketId
+ " and interaction # " + interId
+ " is going to be created.");
if(DialogHelper.YES == answer) {
if(FormState.NEW_STATE == context.getFormState(interactionIndex)) {
linkToTicketDataset(interactionIndex, ticketId.longValue());
} else {
RPC.QAsyncCallback callback = new CreateLinkAsyncCallback();
CustomRPC.getCustomRPC().createTicketInteractionLink(
ticketId, interId, callback);
}
}
}
}
private void createNewAttachment(FamgMeta.Index formIndex) {
FormOperations formContext = getOperationContext().getFormOperations();
FieldData ticketId = formContext.getFieldData(formIndex,
TICKET_ID_FIELD_NAME);
FieldData clonedTicketId = ticketId.cloneData();
FieldData[] initData = new FieldData[6];
initData[0] = clonedTicketId;
attachHandler.setInitialFieldsData(initData);
OperationsHelper.createNewRecord(attachTicketFormId, getOperationContext());
}
public void handleLinkEvent(String fromLinkFieldId) {
FamgMeta.Index formIndex = getFormIndex();
OperationContext context = getOperationContext();
FormOperations formContext = context.getFormOperations();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -