|
@@ -2,15 +2,23 @@ package nckd.jimin.jyyy.hr.hom.formplugin;
|
|
|
|
|
|
import kd.bos.algo.DataSet;
|
|
|
import kd.bos.algo.Row;
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.OrmLocaleValue;
|
|
|
import kd.bos.dataentity.utils.ObjectUtils;
|
|
|
import kd.bos.db.DB;
|
|
|
import kd.bos.db.DBRoute;
|
|
|
+import kd.bos.entity.datamodel.IDataModel;
|
|
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
|
|
import kd.bos.form.plugin.AbstractFormPlugin;
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
+import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
+import kd.fi.v2.fah.utils.StringUtils;
|
|
|
import kd.hr.hom.common.util.PinyinUtil;
|
|
|
import kd.sdk.plugin.Plugin;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
@@ -24,7 +32,7 @@ import java.util.regex.Pattern;
|
|
|
public class OnbrdInfoEditEx extends AbstractFormPlugin implements Plugin {
|
|
|
|
|
|
private static String email_ex = "@jeyoupharma.com";
|
|
|
-
|
|
|
+ private static String homoPhone_entity = "nckd_homophone";
|
|
|
|
|
|
* 值改变事件
|
|
|
* @param e
|
|
@@ -32,41 +40,60 @@ public class OnbrdInfoEditEx extends AbstractFormPlugin implements Plugin {
|
|
|
@Override
|
|
|
public void propertyChanged(PropertyChangedArgs e) {
|
|
|
super.propertyChanged(e);
|
|
|
+ String key = e.getProperty().getName();
|
|
|
+ IDataModel model = this.getModel();
|
|
|
|
|
|
- if(e.getProperty().getName().equals("name")){
|
|
|
- Object newValue = e.getChangeSet()[0].getNewValue();
|
|
|
- if(ObjectUtils.isEmpty(newValue)) {
|
|
|
- this.getModel().setValue("nckd_companyemail.zh_CN", null);
|
|
|
+
|
|
|
+ if(key.equals("name") || key.equals("nckd_personproperty") || key.equals("ajoblevel")) {
|
|
|
+ Object oriName = model.getValue("name");
|
|
|
+ Object property = model.getValue("nckd_personproperty");
|
|
|
+ Object jobLevel = model.getValue("ajoblevel");
|
|
|
+ if (ObjectUtils.isEmpty(oriName) || ObjectUtils.isEmpty(property) || ObjectUtils.isEmpty(jobLevel)) {
|
|
|
+ this.getModel().setValue("nckd_companyemail", null);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ OrmLocaleValue orm = (OrmLocaleValue) this.getModel().getValue("name");
|
|
|
+ String name = orm.getLocaleValue_zh_CN().trim();
|
|
|
+ String propertyNo = ((DynamicObject) property).getString("number");
|
|
|
+ String jobLevelNo = ((DynamicObject) jobLevel).getString("name");
|
|
|
+ List propertyCon = Arrays.asList(new String[]{"A1","A2"});
|
|
|
+ List jobLevelCon = Arrays.asList(new String[]{"O1","O2","O3","O4"});
|
|
|
+ if(!propertyCon.contains(propertyNo) || jobLevelCon.contains(jobLevelNo)) {
|
|
|
+ this.getModel().setValue("nckd_companyemail", null);
|
|
|
+ return;
|
|
|
}
|
|
|
else {
|
|
|
- OrmLocaleValue orm = (OrmLocaleValue) this.getModel().getValue("name");
|
|
|
- String name = orm.getLocaleValue_zh_CN().trim();
|
|
|
try {
|
|
|
|
|
|
- String py = PinyinUtil.converterToSpell(name).replaceAll("\\s", "");
|
|
|
+
|
|
|
+ String surName = name.substring(0,1);
|
|
|
+
|
|
|
+ String py1 = getHomoPhoneChar(surName);
|
|
|
+ String py2 = PinyinUtil.converterToSpell(name.substring(1, name.length())).replaceAll("\\s", "");
|
|
|
+ String py = py1.concat(py2);
|
|
|
py = py.toLowerCase();
|
|
|
|
|
|
- String sql = " /*dialect*/ select distinct fbusemail from t_hrpi_percontact where fbusemail like '"+py+"%"+email_ex+"'";
|
|
|
+ String sql = " /*dialect*/ select distinct fbusemail from t_hrpi_percontact where fbusemail like '" + py + "%" + email_ex + "'";
|
|
|
DataSet dataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("hr"), sql);
|
|
|
String email = "";
|
|
|
int maxSerial = 0;
|
|
|
- while(dataSet.hasNext()) {
|
|
|
+ while (dataSet.hasNext()) {
|
|
|
Row rowData = dataSet.next();
|
|
|
email = rowData.getString("fbusemail");
|
|
|
- Pattern pat = Pattern.compile(py + "([0-9]+)"+email_ex);
|
|
|
+ Pattern pat = Pattern.compile(py + "([0-9]+)" + email_ex);
|
|
|
Matcher matcher = pat.matcher(email);
|
|
|
- while(matcher.find()) {
|
|
|
+ while (matcher.find()) {
|
|
|
String serial = email.substring(matcher.start(1), matcher.end(1));
|
|
|
- if(maxSerial < java.lang.Integer.valueOf(serial)){
|
|
|
+ if (maxSerial < java.lang.Integer.valueOf(serial)) {
|
|
|
maxSerial = java.lang.Integer.valueOf(serial);
|
|
|
}
|
|
|
}
|
|
|
- if(maxSerial == 0){
|
|
|
+ if (maxSerial == 0) {
|
|
|
|
|
|
- maxSerial ++;
|
|
|
+ maxSerial++;
|
|
|
}
|
|
|
}
|
|
|
- if(maxSerial > 0){
|
|
|
+ if (maxSerial > 0) {
|
|
|
maxSerial++;
|
|
|
py = py + maxSerial;
|
|
|
}
|
|
@@ -77,4 +104,23 @@ public class OnbrdInfoEditEx extends AbstractFormPlugin implements Plugin {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * 获取多音字拼音
|
|
|
+ * @param surName
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String getHomoPhoneChar(String surName) throws Exception {
|
|
|
+ QFilter filter = new QFilter("name", QCP.equals, surName);
|
|
|
+ boolean isExists = QueryServiceHelper.exists(homoPhone_entity, new QFilter[]{filter});
|
|
|
+ if(isExists) {
|
|
|
+ DynamicObject dyn = QueryServiceHelper.queryOne(homoPhone_entity,"nckd_pinyin",new QFilter[]{filter});
|
|
|
+ return dyn.getString("nckd_pinyin");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return PinyinUtil.converterToSpell(surName).replaceAll("\\s", "");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|