فهرست منبع

合同接口优化部门和职位取值

chengchaohua 1 ماه پیش
والد
کامیت
d0aa8d9ace
1فایلهای تغییر یافته به همراه57 افزوده شده و 10 حذف شده
  1. 57 10
      code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/webapi/ContractbillApiPlugin.java

+ 57 - 10
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/webapi/ContractbillApiPlugin.java

@@ -25,6 +25,7 @@ import kd.bos.servicehelper.AttachmentServiceHelper;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.QueryServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.bos.servicehelper.org.OrgUnitServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,7 +37,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
- * 提供给合同系统的新增/更新接口,对应星瀚合同台账单er_contractbill
+ * 提供给合同系统的新增/更新接口,对应星瀚合同台账单 er_contractbill
  * api编码:contract/uploadFileTemp (附件上传接口)
  * api编码:contract/saveContract (合同单据接口)
  *
@@ -98,7 +99,7 @@ public class ContractbillApiPlugin implements Serializable {
             return result;
         }
 
-        // fapplierid 经办人:员工编码_名称 ,由根据人员信息带出主职的公司、部门、职位、手机
+        // fapplierid 经办人:入参格式 员工编码_名称 ,由根据人员信息带出主职的公司、部门、职位、手机
         String fapplierid = (String)billData.get("applierid");
         if (StringUtils.isEmpty(fapplierid)) {
             result.setMessage("经办人fapplierid未传值");
@@ -106,12 +107,54 @@ public class ContractbillApiPlugin implements Serializable {
             return result;
         }
         String gonghao = fapplierid.split("_")[0]; // 提取员工工号
-        DynamicObject applicatuser = BusinessDataServiceHelper.loadSingle("bos_user","id,name,number,phone",new QFilter[]{new QFilter("number",QCP.equals,gonghao)});
+        // dpt 部门,ispartjob 兼职,position 职位
+        DynamicObject applicatuser = BusinessDataServiceHelper.loadSingle("bos_user","id,name,number,phone,entryentity,entryentity.dpt,entryentity.ispartjob,entryentity.position",new QFilter[]{new QFilter("number",QCP.equals,gonghao)});
         if (applicatuser == null) {
             result.setMessage("经办人工号未在星瀚系统出现");
             result.setStatus(false);
             return result;
         }
+
+        DynamicObjectCollection bumenlist = applicatuser.getDynamicObjectCollection("entryentity"); // 分录部门信息
+        if (bumenlist == null || bumenlist.size() == 0) {
+            result.setMessage("经办人未在星瀚系统人员中维护部门信息");
+            result.setStatus(false);
+            return result;
+        }
+        boolean haveZhuZhi = false; // 是否有主任职
+        DynamicObject bumen = null; // 部门
+        String zhiwei = " "; // 职位
+        for (DynamicObject dynamicObject : bumenlist) {
+            boolean ispartjob = dynamicObject.getBoolean("ispartjob");// 兼职: 字符串 1 是,0 否
+            if (!ispartjob) {
+                // 非兼职
+                haveZhuZhi = true;
+                bumen = dynamicObject.getDynamicObject("dpt");
+                zhiwei = dynamicObject.getString("position");
+            }
+        }
+        if (haveZhuZhi == false) {
+            result.setMessage("经办人未在星瀚系统人员部门信息无主任职记录");
+            result.setStatus(false);
+            return result;
+        }
+        if (bumen == null) {
+            result.setMessage("经办人在星瀚系统人员部门信息无部门值");
+            result.setStatus(false);
+            return result;
+        }
+
+        // 通过部门查公司
+        QFilter qFilterGs = new QFilter("number", "=", bumen.get("number"));
+        DynamicObject[] costdept = BusinessDataServiceHelper.load("bos_adminorg", "id,name,number", new QFilter[]{qFilterGs}); // bos_adminorg行政组织
+        Map<String, Object> companyInfoMap = OrgUnitServiceHelper.getCompanyfromOrg(costdept[0].get("id"));
+        DynamicObject org = BusinessDataServiceHelper.loadSingle(companyInfoMap.get("id"),"bos_org"); // 公司对象
+        if (org == null) {
+            result.setMessage("在星瀚系统未查询到经办人的公司信息");
+            result.setStatus(false);
+            return result;
+        }
+
         // 合同号(原始)
         String fcontractcode = (String)billData.get("contractcode");
         if (StringUtils.isEmpty(fapplierid)) {
@@ -237,7 +280,11 @@ public class ContractbillApiPlugin implements Serializable {
             result.setStatus(false);
             return result;
         }
-        dynamicObject.set("company",company); // 公司
+        dynamicObject.set("costcompany",company); // 核算组织
+        dynamicObject.set("company",org); // 公司,取经办人的公司(例如:上海济煜医药)
+        dynamicObject.set("org",bumen); // 经办人部门,取经办人的主岗部门
+        dynamicObject.set("costdept",bumen); // 费用承担部门,取经办人的主岗部门
+        dynamicObject.set("applierpositionstr",zhiwei); // 经办人职位
 
         DynamicObject stdbilltype = BusinessDataServiceHelper.loadSingle("bos_billtype","id,name",new QFilter[]{new QFilter("number",QCP.equals,"er_contractbill_BT_S")});
         dynamicObject.set("stdbilltype",stdbilltype); // 单据类型:基础资料 合同台账
@@ -248,7 +295,6 @@ public class ContractbillApiPlugin implements Serializable {
         dynamicObject.set("contractcode",fcontractcode); // 合同号
         dynamicObject.set("contractname",fcontractname); // 合同名称
 
-        dynamicObject.set("costcompany",company); // 核算组织
         try {
             dynamicObject.set("signdate",sdf.parse(fsigndate)); // 签订日期
 //            dynamicObject.set("changedate",sdf.parse(fstartdate)); // 变更日期
@@ -306,8 +352,6 @@ public class ContractbillApiPlugin implements Serializable {
         }
         dynamicObject.set("changerate",huilv); // 汇率(需根据币别查询最新汇率)
 
-        dynamicObject.set("org",company);// 经办人部门
-        dynamicObject.set("costdept",company);// 费用承担部门
         dynamicObject.set("applier",applicatuser); // 经办人
         dynamicObject.set("modifier",applicatuser); // 修改人
         dynamicObject.set("modifytime",new Date()); // 修改时间
@@ -451,9 +495,12 @@ public class ContractbillApiPlugin implements Serializable {
             newEntry3.set("expenseitem",feiyongproject); // 费用项目
 
             // 项目
-            String std_project = jsb.getString("projectid");
-            DynamicObject project = BusinessDataServiceHelper.loadSingle("bd_project","id,name",new QFilter[]{new QFilter("number",QCP.equals,std_project)});
-            newEntry3.set("std_project",project);
+            String std_project = jsb.getString("projectid"); // 项目编码
+            DynamicObject[] projectList = BusinessDataServiceHelper.load("bd_project", "id,name", new QFilter[]{new QFilter("number", QCP.equals, std_project)});
+            if (projectList != null && projectList.length > 0) {
+                newEntry3.set("std_project",projectList[0]);
+                dynamicObject.set("nckd_project", projectList[0]); // 头表项目字段
+            }
 
             newEntry3.set("entrycurrency",bizhong); // 分录币别(和头表一致)