Переглянути джерело

Merge remote-tracking branch 'origin/master'

turborao 2 тижнів тому
батько
коміт
5710e35b1b

+ 4 - 2
code/base/nckd-jimin-base-helper/src/main/java/nckd/base/helper/FileSECUtils.java

@@ -297,19 +297,21 @@ public class FileSECUtils {
             InputStream tmpInputStream = new FileInputStream(tempFile);
 
             // 2. 调用是否加密接口方法
+            filepath = System.getProperty("java.io.tmpdir") + "/" + tempFile.getName();
+
             int isEncrypted = checkFileIsEncryptionRest(new FileInputStream(tempFile));
             if (isEncrypted == -1) {
                 logger.info("--------------SEC附件检查,文件加密状态检查失败----------------");
 
                 String tempPath = FileUtils.checkFileUrl(filepath);
-                FileTimeoutUtil.removeFile(tempPath, null, 10 * 1000); //  定时 120 秒后删除文件
+                FileTimeoutUtil.removeFile(tempPath, tmpInputStream, 120 * 1000); //  定时 120 秒后删除文件
 
                 return tmpInputStream;
             } else if (isEncrypted == 0) {
                 logger.info("--------------SEC附件检查,是明文无需解密----------------");
 
                 String tempPath = FileUtils.checkFileUrl(filepath);
-                FileTimeoutUtil.removeFile(tempPath, null, 10 * 1000); //  定时 120 秒后删除文件
+                FileTimeoutUtil.removeFile(tempPath, tmpInputStream, 120 * 1000); //  定时 120 秒后删除文件
 
                 return tmpInputStream;
             }

+ 14 - 2
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/plugin/workflow/HRWorkflowUtils.java

@@ -1,6 +1,7 @@
 package nckd.jimin.jyyy.hr.plugin.workflow;
 
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.IDataModel;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
@@ -67,7 +68,6 @@ public class HRWorkflowUtils {
         return position.getLong("adminorg.id");
     }
 
-
     public static List<Long> transPersonIdToUserId(List<Long> personIds) {
         log.info(" HRWorkflowUtils transPersonIdToUserId {}", personIds);
         List<Long> userIds = new ArrayList(personIds.size());
@@ -84,8 +84,20 @@ public class HRWorkflowUtils {
 
             });
         }
-
         return userIds;
     }
 
+    public static String getPositionByUserId(Long uid) {
+        Map<String, Object> map = PersonServiceImpl.getInstance().getPersonModelIdByUserId(uid);
+        if(Boolean.valueOf(map.get("success").toString())) {
+            Long personId = Long.valueOf(((Map) map.get("data")).get("person").toString());
+            Map personMap = PersonServiceImpl.getInstance().getPersonInfo(personId);
+            return null;
+        }
+        return null;
+    }
+
+
+
+
 }

+ 127 - 0
code/jyyy/nckd-jimin-jyyy-hr/src/main/java/nckd/jimin/jyyy/hr/plugin/workflow/engine/PositionParseImpl.java

@@ -0,0 +1,127 @@
+package nckd.jimin.jyyy.hr.plugin.workflow.engine;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.resource.ResManager;
+import kd.bos.exception.KDException;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.servicehelper.user.UserServiceHelper;
+import kd.bos.workflow.api.AgentExecution;
+import kd.bos.workflow.engine.WfUtils;
+import kd.bos.workflow.engine.rule.ext.IExtExpressionParse;
+import kd.bos.workflow.exception.WFErrorCode;
+import kd.sdk.plugin.Plugin;
+import nckd.jimin.jyyy.hr.plugin.workflow.HRWorkflowUtils;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * 动态表单插件
+ */
+public class PositionParseImpl implements IExtExpressionParse {
+
+    @Override
+    public Object parseExpression(AgentExecution agentExecution, Object param) {
+        Object result = null;
+        if (param == null) {
+            return null;
+        } else {
+            Long uid;
+            if (param instanceof Long) {
+                uid = (Long)param;
+                result = HRWorkflowUtils.getPositionByUserId(uid);
+            } else if (param instanceof DynamicObject) {
+                DynamicObject dynObj = (DynamicObject)param;
+                uid = dynObj.getLong("id");
+                result = HRWorkflowUtils.getPositionByUserId(uid);
+            } else {
+                String roleIds;
+                if (param instanceof DynamicObjectCollection) {
+                    DynamicObjectCollection users = (DynamicObjectCollection)param;
+                    StringBuilder sb = new StringBuilder();
+                    for(int i = 0; i < users.size(); ++i) {
+                        roleIds = HRWorkflowUtils.getPositionByUserId(((DynamicObject)users.get(i)).getLong("id"));
+                        if (WfUtils.isNotEmpty(roleIds)) {
+                            sb.append(',').append(roleIds);
+                        }
+                    }
+
+                    if (sb.length() > 1) {
+                        result = sb.substring(1);
+                    }
+                } else if (param instanceof String) {
+                    if (WfUtils.isNotEmptyString(param)) {
+                        try {
+                            if (param.toString().contains(",")) {
+                                String[] uidArr = param.toString().split(",");
+
+                                for(int i = 0; i < uidArr.length; ++i) {
+                                    if (WfUtils.isNotEmpty(uidArr[i])) {
+                                        String t = HRWorkflowUtils.getPositionByUserId(Long.parseLong(uidArr[i]));
+                                        if (WfUtils.isNotEmptyString(result) && WfUtils.isNotEmpty(t)) {
+                                            result = result + "," + t;
+                                        } else {
+                                            result = t;
+                                        }
+                                    }
+                                }
+                            } else {
+                                uid = Long.parseLong(param.toString());
+                                result = HRWorkflowUtils.getPositionByUserId(uid);
+                            }
+                        } catch (Exception var10) {
+                            throw new KDException(WFErrorCode.conditionParseError(), new Object[]{String.format(ResManager.loadKDString("工作流条件解析错误,传入的用户ID无法转换为正确的Long类型,请检查参数:%s。", "UPositionParseImpl_1", "bos-wf-engine", new Object[0]), param.toString())});
+                        }
+                    }
+                } else {
+                    if (!(param instanceof List)) {
+                        throw new KDException(WFErrorCode.conditionParseError(), new Object[]{ResManager.loadKDString("工作流条件解析错误。参数类型错误,请检查。", "UPositionParseImpl_2", "bos-wf-engine", new Object[0])});
+                    }
+
+                    if (((List)param).isEmpty()) {
+                        return null;
+                    }
+                    StringBuilder sb;
+                    Iterator var17;
+                    if (((List)param).get(0) instanceof DynamicObject) {
+                        sb = new StringBuilder();
+                        var17 = ((List)param).iterator();
+
+                        while(var17.hasNext()) {
+                            DynamicObject d = (DynamicObject)var17.next();
+                            roleIds = HRWorkflowUtils.getPositionByUserId(d.getLong("id"));
+                            if (WfUtils.isNotEmpty(roleIds)) {
+                                sb.append(',').append(roleIds);
+                            }
+                        }
+
+                        if (sb.length() > 1) {
+                            result = sb.substring(1);
+                        }
+                    } else if (((List)param).get(0) instanceof DynamicObjectCollection) {
+                        sb = new StringBuilder();
+                        var17 = ((List)param).iterator();
+
+                        while(var17.hasNext()) {
+                            DynamicObjectCollection collection = (DynamicObjectCollection)var17.next();
+                            Iterator var21 = collection.iterator();
+
+                            while(var21.hasNext()) {
+                                DynamicObject d = (DynamicObject)var21.next();
+                                roleIds = HRWorkflowUtils.getPositionByUserId(d.getLong("id"));
+                                if (WfUtils.isNotEmpty(roleIds)) {
+                                    sb.append(',').append(roleIds);
+                                }
+                            }
+                        }
+                        if (sb.length() > 1) {
+                            result = sb.substring(1);
+                        }
+                    }
+                }
+            }
+            return result;
+        }
+    }
+}