|
|
@@ -1,5 +1,5 @@
|
|
|
package com.awspaas.user.apps.donenow_crm.event;
|
|
|
-
|
|
|
+
|
|
|
import com.actionsoft.bpms.bo.engine.BO;
|
|
|
import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
|
|
|
import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
|
|
|
@@ -19,100 +19,105 @@ import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
|
|
|
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
|
|
|
|
|
|
import java.util.List;
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
public class ContactFormAfterSaveEvent
|
|
|
- extends ExecuteListener
|
|
|
+ extends ExecuteListener
|
|
|
{
|
|
|
- public String getDescription() {
|
|
|
- return "表单保存后事件";
|
|
|
- }
|
|
|
-
|
|
|
- public String getProvider() {
|
|
|
- return "上海声联";
|
|
|
- }
|
|
|
-
|
|
|
- public String getVersion() {
|
|
|
- return "1.0";
|
|
|
- }
|
|
|
-
|
|
|
- public void execute(ProcessExecutionContext process) throws Exception {
|
|
|
- UserContext uc = process.getUserContext();
|
|
|
- String boName = process.getParameterOfString("$BONAME");
|
|
|
- System.out.println("单位boName:" + boName);
|
|
|
- BO contactBo = process.getFormData();
|
|
|
- saveContactData(uc,contactBo,boName,true);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- public String saveContactData(UserContext uc,BO contactBo,String boName,boolean type) {
|
|
|
- String roleNO = "roledn_customer";
|
|
|
- String deptId = DBSql.getString("SELECT ID FROM ORGDEPARTMENT WHERE EXT1=?", new Object[] { contactBo.getString("ACCOUNT_ID")});
|
|
|
-
|
|
|
- if (contactBo != null&&CrmConstant.BO_EU_DNCRM_CONTACT.equals(boName)&&StringUtils.isNotBlank(deptId)) {
|
|
|
- String roleId = DBSql.getString("SELECT ID from orgrole where roleno='"+roleNO+"'");
|
|
|
- if (StringUtils.isBlank(roleId)) {
|
|
|
- System.out.println("roleModel为空:");
|
|
|
- return "";
|
|
|
- }
|
|
|
- RowMap map = DBSql.getMap("SELECT * FROM ORGUSER WHERE EXT5=? or (USERNAME=? AND MOBILE=?)", new Object[] { contactBo.getId(),contactBo.get("NAME"),contactBo.get("MOBILE_PHONE") });
|
|
|
- System.out.println("userMap:" +JSON.toJSONString(map));
|
|
|
- System.out.println("userMap:" + (map == null));
|
|
|
-
|
|
|
- //用户表中是否已经存在该人
|
|
|
- if (map != null) {
|
|
|
- System.out.println("用户更新:");
|
|
|
- //说明联系人姓名没有修改过
|
|
|
- if(contactBo.getString("NAME").equals(map.getString("USERNAME"))) {
|
|
|
- SDK.getORGAPI().updateUser(map.getString("USERID"), contactBo.getString("NAME"), "", contactBo.getString("EMAIL"), contactBo.getString("MOBILE_PHONE"), "", "", "", "", contactBo.getId());
|
|
|
- }
|
|
|
- //联系人姓名修改过了,要修改USERID
|
|
|
- else {
|
|
|
- String userId=getPinYinUserId(contactBo.getString("NAME"));
|
|
|
- DBSql.update("UPDATE ORGUSER SET USERID='"+userId+"' WHERE EXT5='"+contactBo.getId()+"'");
|
|
|
- UserCache.getCache().reload();
|
|
|
- SDK.getORGAPI().updateUser(userId, contactBo.getString("NAME"), "", contactBo.getString("EMAIL"), contactBo.getString("MOBILE_PHONE"), "", "", "", "", contactBo.getId());
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- System.out.println("用户新增");
|
|
|
- String pinYinUserId = getPinYinUserId(contactBo.getString("NAME"));
|
|
|
- SDK.getORGAPI().createUser(deptId, pinYinUserId, contactBo.getString("NAME"), roleId, "", "", false, contactBo.getString("EMAIL"), contactBo.getString("MOBILE_PHONE"), "", "", "", "", contactBo.getId());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- //主联系人保存需要往客户表同步联系人数据
|
|
|
- if(type&&"1".equals(contactBo.getString("IS_PRIMARY_CONTACT"))) {
|
|
|
- BO accoutnBo = SDK.getBOAPI().query(CrmConstant.BO_EU_DNCRM_ACCOUNT).detailById(contactBo.getString("ACCOUNT_ID"));
|
|
|
- if(null!=accoutnBo) {
|
|
|
- accoutnBo.set("CONTACT_NAME", contactBo.get("NAME"));
|
|
|
- accoutnBo.set("CONTACT_SUFFIX_ID", contactBo.get("SUFFIX_ID"));
|
|
|
- accoutnBo.set("CONTACT_TITLE", contactBo.get("TITLE"));
|
|
|
- accoutnBo.set("CONTACT_EMAIL", contactBo.get("EMAIL"));
|
|
|
- accoutnBo.set("PHONE", contactBo.get("MOBILE_PHONE"));
|
|
|
- accoutnBo.set("ALTERNATE_PHONE1", contactBo.get("PHONE"));
|
|
|
+ public String getDescription() {
|
|
|
+ return "琛ㄥ崟淇濆瓨鍚庝簨浠�";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getProvider() {
|
|
|
+ return "涓婃捣澹拌仈";
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getVersion() {
|
|
|
+ return "1.0";
|
|
|
+ }
|
|
|
+
|
|
|
+ public void execute(ProcessExecutionContext process) throws Exception {
|
|
|
+ UserContext uc = process.getUserContext();
|
|
|
+ String boName = process.getParameterOfString("$BONAME");
|
|
|
+ System.out.println("鍗曚綅boName:" + boName);
|
|
|
+ BO contactBo = process.getFormData();
|
|
|
+ saveContactData(uc,contactBo,boName,true);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public String saveContactData(UserContext uc,BO contactBo,String boName,boolean type) {
|
|
|
+ String roleNO = "roledn_customer";
|
|
|
+ String deptId = DBSql.getString("SELECT ID FROM ORGDEPARTMENT WHERE EXT1=?", new Object[] { contactBo.getString("ACCOUNT_ID")});
|
|
|
+
|
|
|
+ if (contactBo != null&&CrmConstant.BO_EU_DNCRM_CONTACT.equals(boName)&&StringUtils.isNotBlank(deptId)) {
|
|
|
+ String roleId = DBSql.getString("SELECT ID from orgrole where roleno='"+roleNO+"'");
|
|
|
+ if (StringUtils.isBlank(roleId)) {
|
|
|
+ System.out.println("roleModel涓虹┖:");
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ RowMap map = DBSql.getMap("SELECT * FROM ORGUSER WHERE EXT5=? or (USERNAME=? AND MOBILE=?)", new Object[] { contactBo.getId(),contactBo.get("NAME"),contactBo.get("MOBILE_PHONE") });
|
|
|
+ System.out.println("userMap:" +JSON.toJSONString(map));
|
|
|
+ System.out.println("userMap:" + (map == null));
|
|
|
+
|
|
|
+ //鐢ㄦ埛琛ㄤ腑鏄�惁宸茬粡瀛樺湪璇ヤ汉
|
|
|
+ if (map != null) {
|
|
|
+ System.out.println("鐢ㄦ埛鏇存柊:");
|
|
|
+ //璇存槑鑱旂郴浜哄�鍚嶆病鏈変慨鏀硅繃
|
|
|
+ if(contactBo.getString("NAME").equals(map.getString("USERNAME"))) {
|
|
|
+ SDK.getORGAPI().updateUser(map.getString("USERID"), contactBo.getString("NAME"), "", contactBo.getString("EMAIL"), contactBo.getString("MOBILE_PHONE"), "", "", "", "", contactBo.getId());
|
|
|
+ }
|
|
|
+ //鑱旂郴浜哄�鍚嶄慨鏀硅繃浜嗭紝瑕佷慨鏀筓SERID
|
|
|
+ else {
|
|
|
+ String userId=getPinYinUserId(contactBo.getString("NAME"));
|
|
|
+ DBSql.update("UPDATE ORGUSER SET USERID='"+userId+"' WHERE EXT5='"+contactBo.getId()+"'");
|
|
|
+ UserCache.getCache().reload();
|
|
|
+ SDK.getORGAPI().updateUser(userId, contactBo.getString("NAME"), "", contactBo.getString("EMAIL"), contactBo.getString("MOBILE_PHONE"), "", "", "", "", contactBo.getId());
|
|
|
+ contactBo.set("USERID", userId);
|
|
|
+ SDK.getBOAPI().update(CrmConstant.BO_EU_DNCRM_CONTACT, contactBo);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ System.out.println("鐢ㄦ埛鏂板�");
|
|
|
+ String pinYinUserId = getPinYinUserId(contactBo.getString("NAME"));
|
|
|
+ SDK.getORGAPI().createUser(deptId, pinYinUserId, contactBo.getString("NAME"), roleId, "", "", false, contactBo.getString("EMAIL"), contactBo.getString("MOBILE_PHONE"), "", "", "", "", contactBo.getId());
|
|
|
+ contactBo.set("USERID", pinYinUserId);
|
|
|
+ SDK.getBOAPI().update(CrmConstant.BO_EU_DNCRM_CONTACT, contactBo);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //涓昏仈绯讳汉淇濆瓨闇€瑕佸線瀹㈡埛琛ㄥ悓姝ヨ仈绯讳汉鏁版嵁
|
|
|
+ if(type&&"1".equals(contactBo.getString("IS_PRIMARY_CONTACT"))) {
|
|
|
+ BO accoutnBo = SDK.getBOAPI().query(CrmConstant.BO_EU_DNCRM_ACCOUNT).detailById(contactBo.getString("ACCOUNT_ID"));
|
|
|
+ if(null!=accoutnBo) {
|
|
|
+ accoutnBo.set("CONTACT_NAME", contactBo.get("NAME"));
|
|
|
+ accoutnBo.set("CONTACT_SUFFIX_ID", contactBo.get("SUFFIX_ID"));
|
|
|
+ accoutnBo.set("CONTACT_TITLE", contactBo.get("TITLE"));
|
|
|
+ accoutnBo.set("CONTACT_EMAIL", contactBo.get("EMAIL"));
|
|
|
+ accoutnBo.set("PHONE", contactBo.get("MOBILE_PHONE"));
|
|
|
+ accoutnBo.set("ALTERNATE_PHONE1", contactBo.get("PHONE"));
|
|
|
SDK.getBOAPI().update(CrmConstant.BO_EU_DNCRM_ACCOUNT, accoutnBo);
|
|
|
- }
|
|
|
- }
|
|
|
- return "";
|
|
|
- }
|
|
|
- public String getPinYinUserId(String userName) {
|
|
|
-
|
|
|
- HanyuPinyinOutputFormat hanyuPinyinOutputFormat=new HanyuPinyinOutputFormat();
|
|
|
- String tempStr=StringUtils.EMPTY;
|
|
|
- try {
|
|
|
- tempStr = PinyinHelper.toHanyuPinyinString(userName, hanyuPinyinOutputFormat, "").replaceAll("\\d+", "");
|
|
|
- } catch (BadHanyuPinyinOutputFormatCombination e) {
|
|
|
- // TODO Auto-generated catch block
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- Integer count = DBSql.getInt("SELECT COUNT(1) FROM ORGUSER WHERE USERID LIKE CONCAT(?,'%')", new Object[] {tempStr});
|
|
|
- if(count>0) {
|
|
|
- return tempStr+(count+1);
|
|
|
- }else {
|
|
|
- return tempStr;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ public String getPinYinUserId(String userName) {
|
|
|
+
|
|
|
+ HanyuPinyinOutputFormat hanyuPinyinOutputFormat=new HanyuPinyinOutputFormat();
|
|
|
+ String tempStr=StringUtils.EMPTY;
|
|
|
+ try {
|
|
|
+ tempStr = PinyinHelper.toHanyuPinyinString(userName, hanyuPinyinOutputFormat, "").replaceAll("\\d+", "");
|
|
|
+ } catch (BadHanyuPinyinOutputFormatCombination e) {
|
|
|
+ // TODO Auto-generated catch block
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ Integer count = DBSql.getInt("SELECT COUNT(1) FROM ORGUSER WHERE USERID LIKE CONCAT(?,'%')", new Object[] {tempStr});
|
|
|
+ if(count>0) {
|
|
|
+ return tempStr+(count+1);
|
|
|
+ }else {
|
|
|
+ return tempStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|