瀏覽代碼

1.入职公司邮箱自动生成,姓名拼音+@jeyoupharma.com,重名情况加流水号区分

Tyx 1 天之前
父節點
當前提交
3287dc626c

+ 80 - 0
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/hom/formplugin/OnbrdInfoEditEx.java

@@ -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);
+                }
+            }
+        }
+    }
+}