|
@@ -0,0 +1,80 @@
|
|
|
+package nckd.jimin.jyyy.hr.hom.formplugin;
|
|
|
+
|
|
|
+import kd.bos.algo.DataSet;
|
|
|
+import kd.bos.algo.Row;
|
|
|
+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.events.PropertyChangedArgs;
|
|
|
+import kd.bos.form.plugin.AbstractFormPlugin;
|
|
|
+import kd.hr.hom.common.util.PinyinUtil;
|
|
|
+import kd.sdk.plugin.Plugin;
|
|
|
+
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Module :核心人力云-入职管理-入职人员管理-入职申请
|
|
|
+ * Description :入职申请/办理表单插件
|
|
|
+ * @author Tyx
|
|
|
+ * @date 2025/5/13
|
|
|
+ * 标识 hom_onbrdinfo
|
|
|
+ */
|
|
|
+public class OnbrdInfoEditEx extends AbstractFormPlugin implements Plugin {
|
|
|
+
|
|
|
+ private static String email_ex = "@jeyoupharma.com"; //邮箱后缀
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 值改变事件
|
|
|
+ * @param e
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void propertyChanged(PropertyChangedArgs e) {
|
|
|
+ super.propertyChanged(e);
|
|
|
+ //姓名变化后,生成邮箱
|
|
|
+ if(e.getProperty().getName().equals("name")){
|
|
|
+ Object newValue = e.getChangeSet()[0].getNewValue();
|
|
|
+ if(ObjectUtils.isEmpty(newValue)) {
|
|
|
+ this.getModel().setValue("nckd_companyemail.zh_CN", null);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ OrmLocaleValue orm = (OrmLocaleValue) this.getModel().getValue("name");
|
|
|
+ String name = orm.getLocaleValue_zh_CN().trim();
|
|
|
+ try {
|
|
|
+ //转换成拼音
|
|
|
+ String py = PinyinUtil.converterToSpell(name).replaceAll("\\s", "");
|
|
|
+ py = py.toLowerCase();
|
|
|
+ //查询是否有重复
|
|
|
+ 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()) {
|
|
|
+ Row rowData = dataSet.next();
|
|
|
+ email = rowData.getString("fbusemail");
|
|
|
+ Pattern pat = Pattern.compile(py + "([0-9]+)"+email_ex);
|
|
|
+ Matcher matcher = pat.matcher(email);
|
|
|
+ while(matcher.find()) {
|
|
|
+ String serial = email.substring(matcher.start(1), matcher.end(1));
|
|
|
+ if(maxSerial < java.lang.Integer.valueOf(serial)){
|
|
|
+ maxSerial = java.lang.Integer.valueOf(serial);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(maxSerial == 0){
|
|
|
+ //找到了一个同名,但是没有序号的邮箱
|
|
|
+ maxSerial ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(maxSerial > 0){
|
|
|
+ maxSerial++;
|
|
|
+ py = py + maxSerial;
|
|
|
+ }
|
|
|
+ this.getModel().setValue("nckd_companyemail", py + email_ex);
|
|
|
+ } catch (Exception ex) {
|
|
|
+ throw new RuntimeException(ex);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|