Browse Source

<feat>:修改
1、修改供应商接口逻辑

wanghaiwu 4 days ago
parent
commit
f0682a8c69

+ 100 - 36
code/jyyy/nckd-jimin-jyyy-bd/src/main/java/nckd/jimin/jyyy/bd/webapi/SynSupplierApiPlugin.java

@@ -24,6 +24,7 @@ import kd.bos.util.StringUtils;
 import javax.validation.Valid;
 import java.io.Serializable;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 插件说明:API接口插件,提供给MDM下发,新增或更新客户至星瀚系统
@@ -35,9 +36,25 @@ import java.util.*;
 public class SynSupplierApiPlugin implements Serializable {
     private static final long serialVersionUID = -3085981137362495579L;
     private static final Log logger = LogFactory.getLog(SynSupplierApiPlugin.class);
+    //默认组织ID
     protected static final Long DEFAULT_ORG_ID = 100000L;
     private static final String ENTITY_SUPPLIER = "bd_supplier";
 
+    //所有核算组织map
+    private static Map<String, String> allKdOrgName = null;
+    private static Map<String, Long> allKdOrgId = null;
+
+    //默认组织
+    private static DynamicObject defaultOrg = null;
+    //默认供应商状态
+    private static DynamicObject supplierStatus = null;
+    //默认创建人
+    private static DynamicObject createUser = null;
+    //供应商分组
+    private static DynamicObject supplierGroup = null;
+    //默认币别
+    private static DynamicObject defaultCurrency = null;
+
     /**
      *
      * @param bp
@@ -53,6 +70,9 @@ public class SynSupplierApiPlugin implements Serializable {
             return returnResult("E", "分发失败,参数不是JSONArray格式", null);
         }
 
+        //设置全局默认值
+        setDefaultValue();
+
         JSONArray responseData = new JSONArray();
 
         for(int i = 0; i < bp.size(); i++){
@@ -74,7 +94,7 @@ public class SynSupplierApiPlugin implements Serializable {
                 response.put("message", "分发成功");
             } else {
                 response.put("status", "E");
-                response.put("message", "分发失败");
+                response.put("message", "分发失败" + (returnMsg.get("msg") == null ? "异常" : returnMsg.get("msg").toString()));
             }
 
             responseData.add(response);
@@ -83,6 +103,42 @@ public class SynSupplierApiPlugin implements Serializable {
         return returnResult("S", "分发成功", responseData);
     }
 
+    //全局变量设置默认值
+    private void setDefaultValue(){
+        //默认创建组织
+        defaultOrg = BusinessDataServiceHelper.loadSingle(DEFAULT_ORG_ID, "bos_org");
+
+        QFilter orgFilter = new QFilter("fisaccounting", QCP.equals, "1");
+        orgFilter.and(new QFilter("enable", QCP.equals, "1"));
+        orgFilter.and(new QFilter("status", QCP.equals, "C"));
+
+        allKdOrgId = new HashMap<>();
+        allKdOrgName = new HashMap<>();
+
+        DynamicObject[] orgList = BusinessDataServiceHelper.load("bos_org", "id, number, name", orgFilter.toArray());
+        for(DynamicObject org : orgList){
+            allKdOrgId.put(org.getString("number"), org.getLong("id"));
+            allKdOrgName.put(org.getString("number"), org.getString("name"));
+        }
+
+        //供应商状态:
+        QFilter qFilter  = new QFilter("number", QCP.equals, "ZCGYS");
+        supplierStatus = BusinessDataServiceHelper.loadSingleFromCache("bd_supplierstatus", "id, number, name", qFilter.toArray());
+
+        //默认创建人
+        createUser = BusinessDataServiceHelper.loadSingle(RequestContext.get().getCurrUserId(), "bos_user");
+
+        //供应商分组
+        qFilter = new QFilter("number", QCP.equals, "001");
+        qFilter.and(new QFilter("enable", QCP.equals, "1"));
+        qFilter.and(new QFilter("status", QCP.equals, "C"));
+        supplierGroup = BusinessDataServiceHelper.loadSingleFromCache("bd_suppliergroup", "id, number, name, standard", qFilter.toArray());
+
+        //币别
+        qFilter = new QFilter("number", QCP.equals, "CNY");
+        defaultCurrency = BusinessDataServiceHelper.loadSingle("bd_currency", qFilter.toArray());
+    }
+
     /**
      * 同步供应商
      * @param jsonData
@@ -104,9 +160,6 @@ public class SynSupplierApiPlugin implements Serializable {
         Long supplierId = 0L;
         Date curDate = new Date();
 
-        //默认创建组织
-        DynamicObject defaultOrg = BusinessDataServiceHelper.loadSingle(DEFAULT_ORG_ID, "bos_org");
-
         QFilter qFilter = new QFilter("createorg", QCP.equals, DEFAULT_ORG_ID);
         qFilter.and(new QFilter("societycreditcode", QCP.equals, uniqueCode));
 
@@ -123,7 +176,6 @@ public class SynSupplierApiPlugin implements Serializable {
         supplier.set("number", supplierNumber);
         supplier.set("name", supplierName);
 
-
         //管控策略:1、逐级分配;2、自由分配;5、全局共享;6、管控范围内共享;7、私有
         supplier.set("ctrlstrategy", 2);
 
@@ -133,33 +185,25 @@ public class SynSupplierApiPlugin implements Serializable {
         //业务职能:1、采购;2、结算;3、付款;4、收货
         supplier.set("bizfunction", ",1,2,3,4,");
 
-        //供应商状态:
-        qFilter  = new QFilter("number", QCP.equals, "ZCGYS");
-        DynamicObject supplierStatus = BusinessDataServiceHelper.loadSingleFromCache("bd_supplierstatus", "id, number, name", qFilter.toArray());
+
         if(supplierStatus != null) {
             supplier.set("supplier_status", supplierStatus);
         }
 
-        RequestContext rc = RequestContext.get();
-        DynamicObject user = BusinessDataServiceHelper.loadSingle(rc.getCurrUserId(), "bos_user");
-        supplier.set("creator", user);
+        supplier.set("creator", createUser);
         supplier.set("createorg", defaultOrg);
         supplier.set("org", defaultOrg);
         supplier.set("createtime", curDate);
 
-        qFilter = new QFilter("number", QCP.equals, "001");
-        qFilter.and(new QFilter("enable", QCP.equals, "1"));
-        qFilter.and(new QFilter("status", QCP.equals, "C"));
-        DynamicObject suppliergroup = BusinessDataServiceHelper.loadSingleFromCache("bd_suppliergroup", "id, number, name, standard", qFilter.toArray());
-        supplier.set("group", suppliergroup);
 
-//        DynamicObject groupstandard = BusinessDataServiceHelper.loadSingleFromCache("bd_suppliergroupstandard", "id, number, name", qFilter.toArray());
+        supplier.set("group", supplierGroup);
+
         //子分录--默认分类(支持多分类)
         DynamicObjectCollection groupstandardCol = supplier.getDynamicObjectCollection("entry_groupstandard");
         DynamicObjectType billtype = groupstandardCol.getDynamicObjectType();
         DynamicObject groupdetail = new DynamicObject(billtype);
-        groupdetail.set("standardid", suppliergroup.getDynamicObject("standard"));
-        groupdetail.set("groupid", suppliergroup);
+        groupdetail.set("standardid", supplierGroup.getDynamicObject("standard"));
+        groupdetail.set("groupid", supplierGroup);
         groupstandardCol.add(groupdetail);
         supplier.set("entry_groupstandard", groupstandardCol);
 
@@ -180,12 +224,10 @@ public class SynSupplierApiPlugin implements Serializable {
             bankEntry.clear();
             StringBuilder sb = new StringBuilder();
 
-            //币别
-            QFilter filtercurrency = new QFilter("number", QCP.equals, "CNY");
-            DynamicObject currencyEntity = BusinessDataServiceHelper.loadSingle("bd_currency", filtercurrency.toArray());
-            if (currencyEntity == null) {
+
+            if (defaultCurrency == null) {
                 returnMap.put("code", "500");
-                returnMap.put("msg", "币别不存在,请核对币别是否正确!");
+                returnMap.put("msg", "默认币别CNY不存在,请核对币别是否正确!");
 
                 return returnMap;
             }
@@ -212,6 +254,10 @@ public class SynSupplierApiPlugin implements Serializable {
                     sb.append("第" + (index + 1) + "行的开户银行编号、名称不能为空");
                 }
 
+                if(iscontinue){
+                    continue;
+                }
+
                 //开户银行
                 QFilter filterbebank = new QFilter("number", QCP.equals, bankCode);
                 filterbebank.and(new QFilter("status", QCP.equals, "C"));
@@ -235,7 +281,7 @@ public class SynSupplierApiPlugin implements Serializable {
                 bank.set("iban", "");
                 bank.set("isdefault_bank", isDefault);
                 bank.set("bank", bebankEntity);
-                bank.set("currency", currencyEntity);
+                bank.set("currency", defaultCurrency);
 
                 bankEntry.add(bank);
 
@@ -296,8 +342,9 @@ public class SynSupplierApiPlugin implements Serializable {
 
         List<Long> assignOrgIds = new ArrayList<>();
         List<String> orgCodeList = new ArrayList<>();
+        List<String> orgCodeKdList = new ArrayList<>();
 
-        //银行账号分录信息
+        //分配公司信息
         JSONArray assignOrgArray = jsonData.getJSONArray("venBukrsE");
         if(assignOrgArray != null && assignOrgArray.size() > 0){
             for(int index = 0; index < assignOrgArray.size(); index++){
@@ -307,19 +354,24 @@ public class SynSupplierApiPlugin implements Serializable {
 
                 if(!orgCodeList.contains(orgCode)) {
                     orgCodeList.add(orgCode);
-                }
-            }
-
-            QFilter orgFilter = new QFilter("number", QCP.in, orgCodeList);
-            orgFilter.and(new QFilter("enable", QCP.equals, "1"));
-            orgFilter.and(new QFilter("status", QCP.equals, "C"));
-
-            DynamicObject[] orgList = BusinessDataServiceHelper.load("bos_org", "id, number", orgFilter.toArray());
 
-            for(DynamicObject org : orgList){
-                assignOrgIds.add(org.getLong("id"));
+                    if(allKdOrgId.containsKey(orgCode)){
+                        assignOrgIds.add(allKdOrgId.get(orgCode));
+                        orgCodeKdList.add(allKdOrgName.get(orgCode));
+                    }
+                }
             }
 
+//            QFilter orgFilter = new QFilter("number", QCP.in, orgCodeList);
+//            orgFilter.and(new QFilter("enable", QCP.equals, "1"));
+//            orgFilter.and(new QFilter("status", QCP.equals, "C"));
+//
+//            DynamicObject[] orgList = BusinessDataServiceHelper.load("bos_org", "id, number", orgFilter.toArray());
+//
+//            for(DynamicObject org : orgList){
+//                assignOrgIds.add(org.getLong("id"));
+//                orgCodeKdList.add(org.getString("number"));
+//            }
 
             if(assignOrgIds.size() > 0) {
                 String assignResult = assignOrg2Supplier(supplierId, assignOrgIds);
@@ -336,6 +388,18 @@ public class SynSupplierApiPlugin implements Serializable {
                     return returnMap;
                 }
             }
+
+            if(orgCodeKdList.size() != orgCodeList.size()){
+                List<String> differenceList = orgCodeKdList.stream().filter(item -> !orgCodeKdList.contains(item)).collect(Collectors.toList());
+                if(differenceList.size() > 0){
+                    String unAssignOrgString = String.join(",", differenceList);
+
+                    returnMap.put("code", "500");
+                    returnMap.put("msg", "部分组织分配失败:" + unAssignOrgString + ", 这些组织在星瀚中未匹配到或不是CU!");
+
+                    return returnMap;
+                }
+            }
         }
 
         returnMap.put("code", "0000");