|
@@ -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");
|