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

📄 leadhelper.java

📁 国外的一套开源CRM
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			List accountList = SecurityWrapper.findByAnd("Account", UtilMisc.toList(new EntityExpr("accountName", EntityComparisonOperator.LIKE, leadCompany)), 
					UtilMisc.toList("companyName"), userInfo, new SecurityLinkInfo("Account", "accountId", true), delegator);
					
			if ( accountList.size() < 1)
			{
			    String companyNameCanon = StringHelper.replaceAll(leadCompany, ",", "");
			    companyNameCanon = StringHelper.replaceAll(companyNameCanon, ".", "");
			    companyNameCanon = companyNameCanon.toUpperCase();
			    
			    String removeStrings[] = { " CORP", " INC" };
			    for ( int i=0; i < removeStrings.length; i++ )
			    {
			        int pos = companyNameCanon.lastIndexOf(removeStrings[i]);
			        if ( pos > 0 )
			            companyNameCanon = companyNameCanon.substring(0, pos);
			    }
			    companyNameCanon += "%";
			    
			    accountList = SecurityWrapper.findByAnd("Account", UtilMisc.toList(new EntityExpr("accountName", EntityComparisonOperator.LIKE, companyNameCanon)), 
						UtilMisc.toList("companyName"), userInfo, new SecurityLinkInfo("Account", "accountId", true), delegator);
			}
					
			return accountList;
		}
		catch ( Exception e)
		{
			Debug.logError("Error in findMatchingAccounts: " + e.getMessage(), module);
			return null;	
		}
	}

	public List findMatchingContacts(String leadFirstName, String leadLastName, UserInfo userInfo)
	{

		try {
			List contactList = delegator.findByCondition("Contact", new EntityConditionList(
					UtilMisc.toList(new EntityExpr("lastName", EntityComparisonOperator.LIKE, leadLastName),
					                new EntityExpr("firstName", EntityComparisonOperator.LIKE, leadFirstName + "%")),
					                EntityOperator.AND), null, UtilMisc.toList("lastName"));
					
			return contactList;
		}
		catch ( Exception e)
		{
			Debug.logError("Error in findMatchingAccounts: " + e.getMessage(), module);
			return null;	
		}
	}
	
	public List findMatchingContacts(String accountId, String leadFirstName, String leadLastName, UserInfo userInfo)
	{

		try {
			List contactList = delegator.findByCondition("Contact", new EntityConditionList(
					UtilMisc.toList(new EntityExpr("accountId", EntityComparisonOperator.EQUALS, accountId),
					                new EntityExpr("lastName", EntityComparisonOperator.LIKE, leadLastName),
					                new EntityExpr("firstName", EntityComparisonOperator.LIKE, leadFirstName)),
					                EntityOperator.AND), null, UtilMisc.toList("lastName"));
					
			return contactList;
		}
		catch ( Exception e)
		{
			Debug.logError("Error in findMatchingAccounts: " + e.getMessage(), module);
			return null;	
		}
	}
	
    /**
     * DOCUMENT ME!
     *
     * @param dataVector 
     * @param userInfo 
     *
     * @return 
     */
    public String getLeadAssignment(Vector dataVector, UserInfo userInfo) {
        String assignmentPartyId = null;

        ArrayList leadRules = getAssignmentRules(userInfo.getAccountId());

        if ((leadRules == null) || leadRules.isEmpty()) {
            return null;
        }

        Iterator ruleIterator = leadRules.iterator();

        while (ruleIterator.hasNext()) {
            LeadAssignmentRule rule = (LeadAssignmentRule) ruleIterator.next();

            List ruleCriteriaList = rule.getAssignmentCriteria();
            GenericValue ruleInfo = rule.getAssignmentRule();

            if ((ruleCriteriaList == null) || (ruleCriteriaList.isEmpty())) {
                continue;
            }

            Debug.logVerbose("checking rule: " + ruleInfo.getString("name"), module);

            String assignTo = null;

            if (ruleInfo != null) {
                assignTo = ruleInfo.getString("assignToPartyId");
            }

            Iterator criteriaIterator = ruleCriteriaList.iterator();

            boolean mismatch = false;

            while (criteriaIterator.hasNext()) {
                GenericValue criteria = (GenericValue) criteriaIterator.next();

                String criteriaName = criteria.getString("name");
                String fieldName = criteria.getString("fieldName");
                String operator = criteria.getString("operator");
                String value = criteria.getString("value");

                Debug.logVerbose("checking criteria: " + criteriaName +
                        " -> " + fieldName + " " + operator + " " + value, module);

                for (int i = 0; i < dataVector.size(); i++) {
                    GenericValue gv = (GenericValue) dataVector.get(i);

                    if (gv.getModelEntity().getField(fieldName) != null) {
                        String fieldValue = gv.getString(fieldName);

                        Debug.logVerbose("fieldValue = " + fieldValue, module);

                        if (!SimpleExpression.compare(fieldValue, operator,
                                    value)) {

                            Debug.logVerbose("criteria match failed", module);

                            mismatch = true;
                        }

                        break;
                    }
                }

                if (mismatch) {
                    break;
                }
            }

            if (!mismatch) {
                assignmentPartyId = assignTo;

                break;
            }
        }

        return assignmentPartyId;
    }

    /**
     * DOCUMENT ME!
     *
     * @param partyId 
     *
     * @return 
     */
    public ArrayList getAssignmentRules(String partyId) {
        Debug.logVerbose("[getAssignmentRules] partyId: " + partyId, module);
        Debug.logVerbose("[getAssignmentRules] delegator.getDelegatorName(): " +
                delegator.getDelegatorName(), module);

        GenericPK partyPK = delegator.makePK("Party",
                UtilMisc.toMap("partyId", partyId));
        ArrayList leadRules = (ArrayList) leadAssignemtRuleCache.get(partyPK);

        if (leadRules == null) {
            try {
                List ruleList = delegator.findByAndCache("LeadAssignmentRule",
                        UtilMisc.toMap("accountId", partyId),
                        UtilMisc.toList("priority"));

                if ((ruleList != null) && (!ruleList.isEmpty())) {
                    leadRules = new ArrayList();

                    Iterator i = ruleList.iterator();

                    while (i.hasNext()) {
                        GenericValue leadAssignmentRule = (GenericValue) i.next();
                        List assignmentCriteria = getAssignmentCriteria(leadAssignmentRule.getString(
                                    "leadAssignmentRuleId"));
                        leadRules.add(new LeadAssignmentRule(
                                leadAssignmentRule, assignmentCriteria));
                    }

                    leadAssignemtRuleCache.put(partyPK, leadRules);
                } else {
                        Debug.logVerbose(
                            "[getAssignmentRules] Did not find Assignment rules for party." +
                            partyId, module);
                }
            } catch (GenericEntityException e) {
                Debug.logError(e, module);
            }
        }

        return leadRules;
    }

    /**
     * DOCUMENT ME!
     *
     * @param ruleId 
     *
     * @return 
     */
    public List getAssignmentCriteria(String ruleId) {
        Debug.logVerbose("[getAssignmentCriteria] ruleId: " + ruleId, module);

        List criteriaList = null;

        try {
            criteriaList = delegator.findByAndCache("LeadAssignmentCriteria",
                    UtilMisc.toMap("leadAssignmentRuleId", ruleId),
                    UtilMisc.toList("criteriaSequence"));
        } catch (GenericEntityException e) {
            Debug.logError(e, module);
        }

        return criteriaList;
    }

    /**
     * DOCUMENT ME!
     */
    public void clearCache() {
        leadAssignemtRuleCache.clear();
    }

    /**
     * DOCUMENT ME!
     *
     */
    public class LeadAssignmentRule {
        GenericValue assignmentRule_ = null;
        List assignmentCriteria_ = null;

        public LeadAssignmentRule(GenericValue assignmentRule,
            List assignmentCriteria) {
            assignmentRule_ = assignmentRule;
            assignmentCriteria_ = assignmentCriteria;
        }

        /**
         * DOCUMENT ME!
         *
         * @return 
         */
        public List getAssignmentCriteria() {
            return assignmentCriteria_;
        }

        /**
         * DOCUMENT ME!
         *
         * @return 
         */
        public GenericValue getAssignmentRule() {
            return assignmentRule_;
        }

        /**
         * DOCUMENT ME!
         *
         * @param assignmentCriteria 
         */
        public void setAssignmentCriteria(List assignmentCriteria) {
            assignmentCriteria_ = assignmentCriteria;
        }

        /**
         * DOCUMENT ME!
         *
         * @param assignmentRule 
         */
        public void setAssginmentRule(GenericValue assignmentRule) {
            assignmentRule_ = assignmentRule;
        }
    }
}

⌨️ 快捷键说明

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