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