Эх сурвалжийг харах

实物卡片清单新增接口保存前参数校验

wanwei 8 сар өмнө
parent
commit
fca307c563

+ 70 - 0
src/main/java/fi/fa/webService/ApisaveDemoPlugin.java

@@ -0,0 +1,70 @@
+package fi.fa.webService;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.openapi.api.plugin.ApiSavePlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public class ApisaveDemoPlugin implements ApiSavePlugin {
+    @Override
+    public List<Map<String, Object>> preHandleRequestData(List<Map<String, Object>> reqData) {
+        for (Map<String, Object> data : reqData) {
+            // 获取组织和部门的数据
+            Map<String, Object> org = (Map<String, Object>) data.get("nckd_orgfield");
+            Map<String, Object> dept = (Map<String, Object>) data.get("nckd_dept");
+
+            // 获取组织和部门的 ID
+            String orgId = String.valueOf(org.get("id"));
+            String deptId = String.valueOf(dept.get("id"));
+
+            // 创建包含组织和部门 ID 的列表
+            List<String> idList = Arrays.asList(orgId, deptId);
+
+            // 构建查询过滤器以查找相关的组织信息
+            QFilter filter = new QFilter("nckd_e_org", QCP.in, idList);
+
+            // 加载与过滤器匹配的组织数据
+            DynamicObject[] orgControl = BusinessDataServiceHelper.load("nckd_base_org_ext", "id", new QFilter[]{filter});
+
+            // 检查是否有返回的组织控制数据
+            if (orgControl.length > 0) {
+                // 处理每个组织控制信息
+                for (int i = 0; i < orgControl.length; i++) {
+                    DynamicObject orgControlInfo = BusinessDataServiceHelper.loadSingle(orgControl[i].getPkValue(), orgControl[i].getDynamicObjectType().getName());
+                    updateOrgAndDeptIds(org, dept, orgId, deptId, orgControlInfo);
+                }
+            }
+        }
+        return reqData;
+    }
+
+    /**
+     * 更新组织和部门的 ID
+     *
+     * @param org             组织 Map
+     * @param dept            部门 Map
+     * @param orgId          组织 ID
+     * @param orgControlInfo  组织控制信息
+     */
+    private void updateOrgAndDeptIds(Map<String, Object> org, Map<String, Object> dept, String orgId, String deptId, DynamicObject orgControlInfo) {
+        String orgNumber = orgControlInfo.getString("nckd_org_number");
+
+        if (orgId.equals(deptId)) {
+            // 如果组织 ID 和部门 ID 相同,则都设置为组织编号
+            org.put("id", Long.valueOf(orgNumber));
+            dept.put("id", Long.valueOf(orgNumber));
+        } else if (orgControlInfo.getString("nckd_e_org").equals(orgId)) {
+            // 如果当前控制信息的组织 ID 等于 orgId,更新组织 ID
+            org.put("id", Long.valueOf(orgNumber));
+        } else {
+            // 否则更新部门 ID
+            dept.put("id", Long.valueOf(orgNumber));
+        }
+    }
+}