|
@@ -13,6 +13,7 @@ import kd.bos.orm.query.QFilter;
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
import kd.bos.util.StringUtils;
|
|
import kd.bos.util.StringUtils;
|
|
|
|
+import nckd.jimin.jyyy.bd.common.oauth.FanWeiUtils;
|
|
import nckd.jimin.jyyy.bd.task.SynSapService;
|
|
import nckd.jimin.jyyy.bd.task.SynSapService;
|
|
import nckd.jimin.jyyy.bd.task.SyncSapUtils;
|
|
import nckd.jimin.jyyy.bd.task.SyncSapUtils;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -24,7 +25,8 @@ public class SynSapServiceImpl implements SynSapService {
|
|
private static final Log logger = LogFactory.getLog(SynSapServiceImpl.class);
|
|
private static final Log logger = LogFactory.getLog(SynSapServiceImpl.class);
|
|
|
|
|
|
/**
|
|
/**
|
|
- *同步成本中心
|
|
|
|
|
|
+ * 同步成本中心
|
|
|
|
+ *
|
|
* @param companyCode
|
|
* @param companyCode
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@@ -36,7 +38,7 @@ public class SynSapServiceImpl implements SynSapService {
|
|
String url = "costcenter";
|
|
String url = "costcenter";
|
|
logger.info("同步SAP主数据_成本,参数:" + data);
|
|
logger.info("同步SAP主数据_成本,参数:" + data);
|
|
String response = SyncSapUtils.postDataToSAP(url, data);
|
|
String response = SyncSapUtils.postDataToSAP(url, data);
|
|
- if(StringUtils.isEmpty(response)){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(response)) {
|
|
result.put("code", "300");
|
|
result.put("code", "300");
|
|
result.put("msg", "同步SAP主数据_成本,同步失败");
|
|
result.put("msg", "同步SAP主数据_成本,同步失败");
|
|
return result;
|
|
return result;
|
|
@@ -44,42 +46,42 @@ public class SynSapServiceImpl implements SynSapService {
|
|
JSONObject rData = JSONObject.parseObject(response);
|
|
JSONObject rData = JSONObject.parseObject(response);
|
|
String etype = rData.getString("E_TYPE");
|
|
String etype = rData.getString("E_TYPE");
|
|
|
|
|
|
- if(!"S".equals(etype)){
|
|
|
|
|
|
+ if (!"S".equals(etype)) {
|
|
result.put("code", "301");
|
|
result.put("code", "301");
|
|
- result.put("msg", "同步SAP主数据_成本,E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
|
|
|
|
|
|
+ result.put("msg", "同步SAP主数据_成本,E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
- if(rEtItem == null){
|
|
|
|
|
|
+ if (rEtItem == null) {
|
|
result.put("code", "302");
|
|
result.put("code", "302");
|
|
result.put("msg", "同步SAP主数据_成本,ET_ITEM参数为空");
|
|
result.put("msg", "同步SAP主数据_成本,ET_ITEM参数为空");
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
- if(rItemArray == null){
|
|
|
|
|
|
+ if (rItemArray == null) {
|
|
result.put("code", "303");
|
|
result.put("code", "303");
|
|
result.put("msg", "同步SAP主数据_成本,item参数为空");
|
|
result.put("msg", "同步SAP主数据_成本,item参数为空");
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
List<String> costNumList = new ArrayList<String>();
|
|
List<String> costNumList = new ArrayList<String>();
|
|
- for(int i = 0; i < rItemArray.size(); ++i) {
|
|
|
|
|
|
+ for (int i = 0; i < rItemArray.size(); ++i) {
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
String number = item.getString("KOSTL");
|
|
String number = item.getString("KOSTL");
|
|
costNumList.add(number);
|
|
costNumList.add(number);
|
|
}
|
|
}
|
|
//取组织对象
|
|
//取组织对象
|
|
QFilter qf = new QFilter("number", QCP.equals, companyCode);
|
|
QFilter qf = new QFilter("number", QCP.equals, companyCode);
|
|
- DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf});
|
|
|
|
|
|
+ DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf});
|
|
|
|
|
|
//取上级
|
|
//取上级
|
|
- DynamicObject parent = BusinessDataServiceHelper.loadSingle("bos_costcenter", new QFilter[]{new QFilter("number", QCP.equals, companyCode)});
|
|
|
|
|
|
+ DynamicObject parent = BusinessDataServiceHelper.loadSingle("bos_costcenter", new QFilter[]{new QFilter("number", QCP.equals, companyCode)});
|
|
|
|
|
|
QFilter qFilter = new QFilter("number", QCP.in, costNumList);
|
|
QFilter qFilter = new QFilter("number", QCP.in, costNumList);
|
|
- // QFilter qFilter1 = new QFilter("accountorg.number", QCP.equals, companyCode);
|
|
|
|
- DynamicObject[] costDyns = BusinessDataServiceHelper.load("bos_costcenter", "id,masterid,parent,number,name,accountorg,orgduty,status,enable", new QFilter[]{qFilter});
|
|
|
|
|
|
+ // QFilter qFilter1 = new QFilter("accountorg.number", QCP.equals, companyCode);
|
|
|
|
+ DynamicObject[] costDyns = BusinessDataServiceHelper.load("bos_costcenter", "id,masterid,parent,number,name,accountorg,orgduty,status,enable", new QFilter[]{qFilter});
|
|
Map<String, DynamicObject> costMap =
|
|
Map<String, DynamicObject> costMap =
|
|
Arrays.stream(costDyns)
|
|
Arrays.stream(costDyns)
|
|
.collect(Collectors.toMap(
|
|
.collect(Collectors.toMap(
|
|
@@ -90,33 +92,33 @@ public class SynSapServiceImpl implements SynSapService {
|
|
ArrayList<DynamicObject> costList = new ArrayList<>();
|
|
ArrayList<DynamicObject> costList = new ArrayList<>();
|
|
StringBuilder err = new StringBuilder();
|
|
StringBuilder err = new StringBuilder();
|
|
|
|
|
|
- for(int i = 0; i < rItemArray.size(); ++i) {
|
|
|
|
|
|
+ for (int i = 0; i < rItemArray.size(); ++i) {
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
String number = item.getString("KOSTL");
|
|
String number = item.getString("KOSTL");
|
|
|
|
|
|
String name = item.getString("KTEXT");
|
|
String name = item.getString("KTEXT");
|
|
- if(i == 0 && (StringUtils.isEmpty(number) || StringUtils.isEmpty(name))){
|
|
|
|
|
|
+ if (i == 0 && (StringUtils.isEmpty(number) || StringUtils.isEmpty(name))) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- if(StringUtils.isEmpty(number) || StringUtils.isEmpty(name)){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(number) || StringUtils.isEmpty(name)) {
|
|
err.append("/n 存在项目编号或名称为空, " + number + name);
|
|
err.append("/n 存在项目编号或名称为空, " + number + name);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- if(EmptyUtils.isNotEmpty(number)){
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(number)) {
|
|
DynamicObject dyn = costMap.get(number);
|
|
DynamicObject dyn = costMap.get(number);
|
|
- if(dyn == null){
|
|
|
|
|
|
+ if (dyn == null) {
|
|
dyn = BusinessDataServiceHelper.newDynamicObject("bos_costcenter");
|
|
dyn = BusinessDataServiceHelper.newDynamicObject("bos_costcenter");
|
|
long Id = DB.genLongId("t_bos_costcenter");
|
|
long Id = DB.genLongId("t_bos_costcenter");
|
|
dyn.set("id", Id);
|
|
dyn.set("id", Id);
|
|
dyn.set("number", number); // 编号
|
|
dyn.set("number", number); // 编号
|
|
dyn.set("accountorg", companyDyn);//核算组织
|
|
dyn.set("accountorg", companyDyn);//核算组织
|
|
- String orgduty=item.getString("KTEXT");
|
|
|
|
- if(EmptyUtils.isNotEmpty(orgduty)){
|
|
|
|
|
|
+ String orgduty = item.getString("KTEXT");
|
|
|
|
+ if (EmptyUtils.isNotEmpty(orgduty)) {
|
|
|
|
|
|
- String orgdutyValue=orgduty.substring(orgduty.length()-1);
|
|
|
|
|
|
+ String orgdutyValue = orgduty.substring(orgduty.length() - 1);
|
|
|
|
|
|
- switch (orgdutyValue){
|
|
|
|
|
|
+ switch (orgdutyValue) {
|
|
case "V"://销售
|
|
case "V"://销售
|
|
dyn.set("orgduty", "3");
|
|
dyn.set("orgduty", "3");
|
|
break;
|
|
break;
|
|
@@ -139,22 +141,22 @@ public class SynSapServiceImpl implements SynSapService {
|
|
dyn.set("name", item.getString("KTEXT"));////项目名称
|
|
dyn.set("name", item.getString("KTEXT"));////项目名称
|
|
dyn.set("status", "C"); ///单据状态
|
|
dyn.set("status", "C"); ///单据状态
|
|
dyn.set("enable", "1"); //使用状态
|
|
dyn.set("enable", "1"); //使用状态
|
|
- if(EmptyUtils.isNotEmpty(parent )){
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(parent)) {
|
|
dyn.set("parent", parent);
|
|
dyn.set("parent", parent);
|
|
}
|
|
}
|
|
- logger.info("同步SAP主数据_成本,id:"+dyn.getLong("id")+" -->"+Long.valueOf(dyn.getString("id")));
|
|
|
|
- dyn.set("masterid",Long.valueOf(dyn.getString("id")));
|
|
|
|
|
|
+ logger.info("同步SAP主数据_成本,id:" + dyn.getLong("id") + " -->" + Long.valueOf(dyn.getString("id")));
|
|
|
|
+ dyn.set("masterid", Long.valueOf(dyn.getString("id")));
|
|
costList.add(dyn);
|
|
costList.add(dyn);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if(costList.size()>0) {
|
|
|
|
|
|
+ if (costList.size() > 0) {
|
|
Object[] save = SaveServiceHelper.save(costList.toArray(new DynamicObject[0]));
|
|
Object[] save = SaveServiceHelper.save(costList.toArray(new DynamicObject[0]));
|
|
int length = save.length;
|
|
int length = save.length;
|
|
- logger.info("同步[成本]完成,本次新增数量:{},"+err, length);
|
|
|
|
|
|
+ logger.info("同步[成本]完成,本次新增数量:{}," + err, length);
|
|
result.put("code", "200");
|
|
result.put("code", "200");
|
|
- result.put("msg", "同步SAP主数据_成本,执行成功,本次同步数量"+length+err);
|
|
|
|
- }else{
|
|
|
|
|
|
+ result.put("msg", "同步SAP主数据_成本,执行成功,本次同步数量" + length + err);
|
|
|
|
+ } else {
|
|
result.put("code", "304");
|
|
result.put("code", "304");
|
|
result.put("msg", "同步SAP主数据_没有数据");
|
|
result.put("msg", "同步SAP主数据_没有数据");
|
|
}
|
|
}
|
|
@@ -164,11 +166,11 @@ public class SynSapServiceImpl implements SynSapService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 同步SAP主数据中的项目信息
|
|
* 同步SAP主数据中的项目信息
|
|
- *
|
|
|
|
|
|
+ * <p>
|
|
* 本方法负责从SAP系统同步项目相关的主数据,处理并保存到当前系统中
|
|
* 本方法负责从SAP系统同步项目相关的主数据,处理并保存到当前系统中
|
|
* 它首先从SAP获取项目数据,然后解析这些数据,并与系统中已存在的项目信息进行对比和更新
|
|
* 它首先从SAP获取项目数据,然后解析这些数据,并与系统中已存在的项目信息进行对比和更新
|
|
* 如果项目在系统中不存在,则会创建新的项目记录;如果存在,则更新项目信息
|
|
* 如果项目在系统中不存在,则会创建新的项目记录;如果存在,则更新项目信息
|
|
- *
|
|
|
|
|
|
+ * <p>
|
|
* 1、根据 SAP 项目编码判断层级
|
|
* 1、根据 SAP 项目编码判断层级
|
|
* 编码中的2010、2060 代表公司 1级项目(编码无点)按全局共享,2级项目阶段,按02、.03判断私分配隔(私有)
|
|
* 编码中的2010、2060 代表公司 1级项目(编码无点)按全局共享,2级项目阶段,按02、.03判断私分配隔(私有)
|
|
* 需要代码自动判断创建1级项目
|
|
* 需要代码自动判断创建1级项目
|
|
@@ -187,7 +189,7 @@ public class SynSapServiceImpl implements SynSapService {
|
|
logger.info("同步SAP主数据_项目,参数:" + data);
|
|
logger.info("同步SAP主数据_项目,参数:" + data);
|
|
String response = SyncSapUtils.postDataToSAP(url, data);
|
|
String response = SyncSapUtils.postDataToSAP(url, data);
|
|
|
|
|
|
- if(StringUtils.isEmpty(response)){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(response)) {
|
|
result.put("code", "300");
|
|
result.put("code", "300");
|
|
result.put("msg", "同步SAP主数据_项目,同步失败");
|
|
result.put("msg", "同步SAP主数据_项目,同步失败");
|
|
return result;
|
|
return result;
|
|
@@ -196,39 +198,39 @@ public class SynSapServiceImpl implements SynSapService {
|
|
|
|
|
|
String etype = rData.getString("E_TYPE");
|
|
String etype = rData.getString("E_TYPE");
|
|
|
|
|
|
- if(!"S".equals(etype)){
|
|
|
|
|
|
+ if (!"S".equals(etype)) {
|
|
result.put("code", "301");
|
|
result.put("code", "301");
|
|
- result.put("msg", "同步SAP主数据_项目,E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
|
|
|
|
|
|
+ result.put("msg", "同步SAP主数据_项目,E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
- if(rEtItem == null){
|
|
|
|
|
|
+ if (rEtItem == null) {
|
|
result.put("code", "302");
|
|
result.put("code", "302");
|
|
result.put("msg", "同步SAP主数据_项目,ET_ITEM参数为空");
|
|
result.put("msg", "同步SAP主数据_项目,ET_ITEM参数为空");
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
- if(rItemArray == null){
|
|
|
|
|
|
+ if (rItemArray == null) {
|
|
result.put("code", "303");
|
|
result.put("code", "303");
|
|
result.put("msg", "同步SAP主数据_项目,item参数为空");
|
|
result.put("msg", "同步SAP主数据_项目,item参数为空");
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
List<String> projectNumList = new ArrayList<String>();
|
|
List<String> projectNumList = new ArrayList<String>();
|
|
- for(int i = 0; i < rItemArray.size(); ++i) {
|
|
|
|
|
|
+ for (int i = 0; i < rItemArray.size(); ++i) {
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
String number = item.getString("POSID");
|
|
String number = item.getString("POSID");
|
|
projectNumList.add(number);
|
|
projectNumList.add(number);
|
|
}
|
|
}
|
|
//取组织对象
|
|
//取组织对象
|
|
QFilter qf = new QFilter("number", QCP.equals, companyCode);
|
|
QFilter qf = new QFilter("number", QCP.equals, companyCode);
|
|
- DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf});
|
|
|
|
|
|
+ DynamicObject companyDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf});
|
|
|
|
|
|
QFilter qFilter = new QFilter("number", QCP.in, projectNumList);
|
|
QFilter qFilter = new QFilter("number", QCP.in, projectNumList);
|
|
QFilter qFilter1 = new QFilter("org.number", QCP.equals, companyCode);
|
|
QFilter qFilter1 = new QFilter("org.number", QCP.equals, companyCode);
|
|
- DynamicObject[] dyns = BusinessDataServiceHelper.load("bd_project", "id,number,name,fullname,parent,masterid,proleader,org,useorg,createorg,group,status,ctrlstrategy,level,isleaf,department,prostatus,enable", new QFilter[]{qFilter,qFilter1});
|
|
|
|
|
|
+ DynamicObject[] dyns = BusinessDataServiceHelper.load("bd_project", "id,number,name,fullname,parent,masterid,proleader,org,useorg,createorg,group,status,ctrlstrategy,level,isleaf,department,prostatus,enable", new QFilter[]{qFilter, qFilter1});
|
|
|
|
|
|
Map<String, DynamicObject> projectMap =
|
|
Map<String, DynamicObject> projectMap =
|
|
Arrays.stream(dyns)
|
|
Arrays.stream(dyns)
|
|
@@ -242,11 +244,11 @@ public class SynSapServiceImpl implements SynSapService {
|
|
List<Object[]> useorgList = new ArrayList<>();
|
|
List<Object[]> useorgList = new ArrayList<>();
|
|
StringBuilder err = new StringBuilder();
|
|
StringBuilder err = new StringBuilder();
|
|
|
|
|
|
- for(int i = 0; i < rItemArray.size(); ++i) {
|
|
|
|
|
|
+ for (int i = 0; i < rItemArray.size(); ++i) {
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
JSONObject item = rItemArray.getJSONObject(i);
|
|
String number = item.getString("POSID");
|
|
String number = item.getString("POSID");
|
|
String name = item.getString("POST1");
|
|
String name = item.getString("POST1");
|
|
- if(StringUtils.isEmpty(number) || StringUtils.isEmpty(name)){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(number) || StringUtils.isEmpty(name)) {
|
|
err.append(" \n存在项目编号或名称为空, " + number + name);
|
|
err.append(" \n存在项目编号或名称为空, " + number + name);
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -254,49 +256,49 @@ public class SynSapServiceImpl implements SynSapService {
|
|
//if(!"CD20210404.2010.22".equals(number)) continue;
|
|
//if(!"CD20210404.2010.22".equals(number)) continue;
|
|
|
|
|
|
String proleader = item.getString("USR03");
|
|
String proleader = item.getString("USR03");
|
|
- String department = item.getString("DEPARTMENT");
|
|
|
|
|
|
+ String department = item.getString("DEPARTMENT");
|
|
String type = item.getString("ZBY2");
|
|
String type = item.getString("ZBY2");
|
|
String billstatus = item.getString("STATUS");
|
|
String billstatus = item.getString("STATUS");
|
|
DynamicObject proleaderDyn = null;
|
|
DynamicObject proleaderDyn = null;
|
|
DynamicObject departmentDyn = null;
|
|
DynamicObject departmentDyn = null;
|
|
DynamicObject typeDyn = null;
|
|
DynamicObject typeDyn = null;
|
|
DynamicObject projectStatusDyn = null;
|
|
DynamicObject projectStatusDyn = null;
|
|
- if(StringUtils.isNotEmpty(proleader)){
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(proleader)) {
|
|
QFilter qf1 = new QFilter("number", QCP.equals, proleader);
|
|
QFilter qf1 = new QFilter("number", QCP.equals, proleader);
|
|
- proleaderDyn = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{qf1});
|
|
|
|
|
|
+ proleaderDyn = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{qf1});
|
|
}
|
|
}
|
|
- if(StringUtils.isNotEmpty(department)){
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(department)) {
|
|
QFilter qf1 = new QFilter("number", QCP.equals, department);
|
|
QFilter qf1 = new QFilter("number", QCP.equals, department);
|
|
- departmentDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf1});
|
|
|
|
|
|
+ departmentDyn = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qf1});
|
|
}
|
|
}
|
|
- if(StringUtils.isNotEmpty(type)){
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(type)) {
|
|
QFilter qf1 = new QFilter("number", QCP.equals, type);
|
|
QFilter qf1 = new QFilter("number", QCP.equals, type);
|
|
- typeDyn = BusinessDataServiceHelper.loadSingle("bd_projectkind", new QFilter[]{qf1});
|
|
|
|
|
|
+ typeDyn = BusinessDataServiceHelper.loadSingle("bd_projectkind", new QFilter[]{qf1});
|
|
}
|
|
}
|
|
- if(StringUtils.isNotEmpty(billstatus)){
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(billstatus)) {
|
|
QFilter qf1 = new QFilter("nckd_sapprojstatus", QCP.equals, billstatus);
|
|
QFilter qf1 = new QFilter("nckd_sapprojstatus", QCP.equals, billstatus);
|
|
- projectStatusDyn = BusinessDataServiceHelper.loadSingle("bd_projectstatus", new QFilter[]{qf1});
|
|
|
|
|
|
+ projectStatusDyn = BusinessDataServiceHelper.loadSingle("bd_projectstatus", new QFilter[]{qf1});
|
|
}
|
|
}
|
|
QFilter qf2 = new QFilter("number", QCP.equals, "SAP");
|
|
QFilter qf2 = new QFilter("number", QCP.equals, "SAP");
|
|
- DynamicObject srcSysDyn = BusinessDataServiceHelper.loadSingle("bos_devportal_bizcloud",new QFilter[]{qf2});
|
|
|
|
|
|
+ DynamicObject srcSysDyn = BusinessDataServiceHelper.loadSingle("bos_devportal_bizcloud", new QFilter[]{qf2});
|
|
|
|
|
|
DynamicObject dyn = projectMap.get(number);
|
|
DynamicObject dyn = projectMap.get(number);
|
|
- if(dyn == null){
|
|
|
|
|
|
+ if (dyn == null) {
|
|
/*
|
|
/*
|
|
* 处理一级项目,来自于项目编码前段编码 BD20200303.2010.07 ,BD20200303为一级项目编码
|
|
* 处理一级项目,来自于项目编码前段编码 BD20200303.2010.07 ,BD20200303为一级项目编码
|
|
* */
|
|
* */
|
|
DynamicObject parentDyn = null;
|
|
DynamicObject parentDyn = null;
|
|
String parent = SyncSapUtils.getProjectNumberForParent(number);
|
|
String parent = SyncSapUtils.getProjectNumberForParent(number);
|
|
- if(StringUtils.isNotEmpty(parent)) {
|
|
|
|
|
|
+ if (StringUtils.isNotEmpty(parent)) {
|
|
|
|
|
|
parentDyn = BusinessDataServiceHelper.newDynamicObject("bd_project");
|
|
parentDyn = BusinessDataServiceHelper.newDynamicObject("bd_project");
|
|
long Id = DB.genLongId("t_bd_project");
|
|
long Id = DB.genLongId("t_bd_project");
|
|
parentDyn.set("id", Id);
|
|
parentDyn.set("id", Id);
|
|
- parentDyn.set("masterid",Id);
|
|
|
|
|
|
+ parentDyn.set("masterid", Id);
|
|
parentDyn.set("number", parent); // 编号
|
|
parentDyn.set("number", parent); // 编号
|
|
parentDyn.set("org", DEFAULT_ORG_ID); //一级项目放在顶层组织下
|
|
parentDyn.set("org", DEFAULT_ORG_ID); //一级项目放在顶层组织下
|
|
parentDyn.set("createorg", DEFAULT_ORG_ID); //一级项目放在顶层组织下
|
|
parentDyn.set("createorg", DEFAULT_ORG_ID); //一级项目放在顶层组织下
|
|
- if(EmptyUtils.isNotEmpty(typeDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(typeDyn)) {
|
|
parentDyn.set("group", typeDyn); ///项目分类
|
|
parentDyn.set("group", typeDyn); ///项目分类
|
|
}
|
|
}
|
|
parentDyn.set("level", 1);
|
|
parentDyn.set("level", 1);
|
|
@@ -307,16 +309,16 @@ public class SynSapServiceImpl implements SynSapService {
|
|
// parentDyn.set("prostatus", "PASS_S"); //项目状态 PASS通过
|
|
// parentDyn.set("prostatus", "PASS_S"); //项目状态 PASS通过
|
|
parentDyn.set("name", parent);
|
|
parentDyn.set("name", parent);
|
|
parentDyn.set("fullname", parent);
|
|
parentDyn.set("fullname", parent);
|
|
- if(EmptyUtils.isNotEmpty(proleaderDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(proleaderDyn)) {
|
|
parentDyn.set("proleader", proleaderDyn);
|
|
parentDyn.set("proleader", proleaderDyn);
|
|
}
|
|
}
|
|
- if(EmptyUtils.isNotEmpty(departmentDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(departmentDyn)) {
|
|
parentDyn.set("department", departmentDyn);
|
|
parentDyn.set("department", departmentDyn);
|
|
}
|
|
}
|
|
- if(EmptyUtils.isNotEmpty(projectStatusDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(projectStatusDyn)) {
|
|
parentDyn.set("prostatus", projectStatusDyn);
|
|
parentDyn.set("prostatus", projectStatusDyn);
|
|
}
|
|
}
|
|
- if(EmptyUtils.isNotEmpty(srcSysDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(srcSysDyn)) {
|
|
parentDyn.set("systemtypebase", srcSysDyn);
|
|
parentDyn.set("systemtypebase", srcSysDyn);
|
|
}
|
|
}
|
|
projectList.add(parentDyn);
|
|
projectList.add(parentDyn);
|
|
@@ -328,8 +330,8 @@ public class SynSapServiceImpl implements SynSapService {
|
|
dyn = BusinessDataServiceHelper.newDynamicObject("bd_project");
|
|
dyn = BusinessDataServiceHelper.newDynamicObject("bd_project");
|
|
long Id = DB.genLongId("t_bd_project");
|
|
long Id = DB.genLongId("t_bd_project");
|
|
dyn.set("id", Id);
|
|
dyn.set("id", Id);
|
|
- dyn.set("masterid",Id);
|
|
|
|
- if(EmptyUtils.isNotEmpty(parentDyn)){
|
|
|
|
|
|
+ dyn.set("masterid", Id);
|
|
|
|
+ if (EmptyUtils.isNotEmpty(parentDyn)) {
|
|
dyn.set("parent", parentDyn);
|
|
dyn.set("parent", parentDyn);
|
|
}
|
|
}
|
|
dyn.set("number", number); // 编号
|
|
dyn.set("number", number); // 编号
|
|
@@ -338,7 +340,7 @@ public class SynSapServiceImpl implements SynSapService {
|
|
dyn.set("isleaf", 1);
|
|
dyn.set("isleaf", 1);
|
|
dyn.set("createorg", companyDyn.getPkValue());
|
|
dyn.set("createorg", companyDyn.getPkValue());
|
|
dyn.set("useorg", companyDyn.getPkValue());
|
|
dyn.set("useorg", companyDyn.getPkValue());
|
|
- if(EmptyUtils.isNotEmpty(typeDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(typeDyn)) {
|
|
dyn.set("group", typeDyn); ///项目分类
|
|
dyn.set("group", typeDyn); ///项目分类
|
|
}
|
|
}
|
|
dyn.set("status", "C"); ///单据状态
|
|
dyn.set("status", "C"); ///单据状态
|
|
@@ -357,35 +359,35 @@ public class SynSapServiceImpl implements SynSapService {
|
|
}
|
|
}
|
|
dyn.set("name", item.getString("POST1"));
|
|
dyn.set("name", item.getString("POST1"));
|
|
dyn.set("fullname", item.getString("POST1"));
|
|
dyn.set("fullname", item.getString("POST1"));
|
|
- if(EmptyUtils.isNotEmpty(proleaderDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(proleaderDyn)) {
|
|
dyn.set("proleader", proleaderDyn);
|
|
dyn.set("proleader", proleaderDyn);
|
|
}
|
|
}
|
|
- if(EmptyUtils.isNotEmpty(departmentDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(departmentDyn)) {
|
|
dyn.set("department", departmentDyn);
|
|
dyn.set("department", departmentDyn);
|
|
}
|
|
}
|
|
- if(EmptyUtils.isNotEmpty(projectStatusDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(projectStatusDyn)) {
|
|
dyn.set("prostatus", projectStatusDyn);
|
|
dyn.set("prostatus", projectStatusDyn);
|
|
}
|
|
}
|
|
- if(EmptyUtils.isNotEmpty(srcSysDyn)) {
|
|
|
|
|
|
+ if (EmptyUtils.isNotEmpty(srcSysDyn)) {
|
|
dyn.set("systemtypebase", srcSysDyn);
|
|
dyn.set("systemtypebase", srcSysDyn);
|
|
}
|
|
}
|
|
projectList.add(dyn);
|
|
projectList.add(dyn);
|
|
}
|
|
}
|
|
|
|
|
|
- if(projectList.size()>0) {
|
|
|
|
|
|
+ if (projectList.size() > 0) {
|
|
Object[] save = SaveServiceHelper.save(projectList.toArray(new DynamicObject[0]));
|
|
Object[] save = SaveServiceHelper.save(projectList.toArray(new DynamicObject[0]));
|
|
int length = save.length;
|
|
int length = save.length;
|
|
- logger.info("同步[项目]完成,本次新增数量:{},"+err, length);
|
|
|
|
|
|
+ logger.info("同步[项目]完成,本次新增数量:{}," + err, length);
|
|
result.put("code", "200");
|
|
result.put("code", "200");
|
|
- result.put("msg", "同步SAP主数据_项目,执行成功,本次同步数量"+length+err);
|
|
|
|
- }else{
|
|
|
|
|
|
+ result.put("msg", "同步SAP主数据_项目,执行成功,本次同步数量" + length + err);
|
|
|
|
+ } else {
|
|
result.put("code", "304");
|
|
result.put("code", "304");
|
|
- result.put("msg", "同步SAP主数据_错误,"+err);
|
|
|
|
|
|
+ result.put("msg", "同步SAP主数据_错误," + err);
|
|
}
|
|
}
|
|
/***
|
|
/***
|
|
* 需要单独处理项目t_bd_project_u表数据,否则不能在界面查询出来
|
|
* 需要单独处理项目t_bd_project_u表数据,否则不能在界面查询出来
|
|
*/
|
|
*/
|
|
- if (useorgList.size()>0) {
|
|
|
|
|
|
+ if (useorgList.size() > 0) {
|
|
baseDataService.savePrivateBaseDataUseRange("bd_project", useorgList);
|
|
baseDataService.savePrivateBaseDataUseRange("bd_project", useorgList);
|
|
logger.info("同步[项目]完成,t_bd_project_u表");
|
|
logger.info("同步[项目]完成,t_bd_project_u表");
|
|
}
|
|
}
|
|
@@ -400,7 +402,7 @@ public class SynSapServiceImpl implements SynSapService {
|
|
String url = "account";
|
|
String url = "account";
|
|
String response = SyncSapUtils.postDataToSAP(url, data);
|
|
String response = SyncSapUtils.postDataToSAP(url, data);
|
|
|
|
|
|
- if(StringUtils.isEmpty(response)){
|
|
|
|
|
|
+ if (StringUtils.isEmpty(response)) {
|
|
result.put("code", "300");
|
|
result.put("code", "300");
|
|
result.put("msg", "同步失败");
|
|
result.put("msg", "同步失败");
|
|
return result;
|
|
return result;
|
|
@@ -409,21 +411,21 @@ public class SynSapServiceImpl implements SynSapService {
|
|
|
|
|
|
String etype = rData.getString("E_TYPE");
|
|
String etype = rData.getString("E_TYPE");
|
|
|
|
|
|
- if(!"S".equals(etype)){
|
|
|
|
|
|
+ if (!"S".equals(etype)) {
|
|
result.put("code", "301");
|
|
result.put("code", "301");
|
|
- result.put("msg", "E_TYPE:"+etype+",错误信息:"+rData.getString("E_MESSGE"));
|
|
|
|
|
|
+ result.put("msg", "E_TYPE:" + etype + ",错误信息:" + rData.getString("E_MESSGE"));
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
JSONObject rEtItem = rData.getJSONObject("ET_ITEM");
|
|
- if(rEtItem == null){
|
|
|
|
|
|
+ if (rEtItem == null) {
|
|
result.put("code", "302");
|
|
result.put("code", "302");
|
|
result.put("msg", "ET_ITEM参数为空");
|
|
result.put("msg", "ET_ITEM参数为空");
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
JSONArray rItemArray = rEtItem.getJSONArray("item");
|
|
- if(rItemArray == null){
|
|
|
|
|
|
+ if (rItemArray == null) {
|
|
result.put("code", "303");
|
|
result.put("code", "303");
|
|
result.put("msg", "item参数为空");
|
|
result.put("msg", "item参数为空");
|
|
return result;
|
|
return result;
|
|
@@ -435,6 +437,131 @@ public class SynSapServiceImpl implements SynSapService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Map<String, String> synSpeakerForOA() {
|
|
public Map<String, String> synSpeakerForOA() {
|
|
- return null;
|
|
|
|
|
|
+ Map<String, String> result = new HashMap<>();
|
|
|
|
+ logger.info("同步OA主数据_讲者");
|
|
|
|
+ String response = FanWeiUtils.getFanWeiToken("speaker");
|
|
|
|
+ //logger.info("返回的数据:"+response);
|
|
|
|
+ if(StringUtils.isEmpty(response)){
|
|
|
|
+ result.put("code", "300");
|
|
|
|
+ result.put("msg", "同步OA主数据_讲者失败");
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ JSONObject rData = JSONObject.parseObject(response);
|
|
|
|
+ JSONObject datajson=rData.getJSONObject("datajson");
|
|
|
|
+ if(datajson==null){
|
|
|
|
+ result.put("code", "301");
|
|
|
|
+ result.put("msg", "同步OA主数据_讲者,datajson参数为空");
|
|
|
|
+ }
|
|
|
|
+ Boolean status = datajson.getBoolean("status");
|
|
|
|
+ if(status){
|
|
|
|
+ result.put("code", "302");
|
|
|
|
+ result.put("msg", "同步OA主数据_讲者,数据无效");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ JSONArray datas=datajson.getJSONArray("datas");
|
|
|
|
+ if(datas==null){
|
|
|
|
+ result.put("code", "303");
|
|
|
|
+ result.put("msg", "同步OA主数据_讲者,datas参数为空");
|
|
|
|
+ }
|
|
|
|
+ //获取所有讲者身份证号
|
|
|
|
+ List<String> speakerIdList=new ArrayList<>();
|
|
|
|
+ for(int i=0;i<datas.size();i++){
|
|
|
|
+ JSONObject item=datas.getJSONObject(i);
|
|
|
|
+ JSONObject mainTable=item.getJSONObject("mainTable");
|
|
|
|
+ String sfzh=mainTable.getString("sfzh");
|
|
|
|
+ speakerIdList.add(sfzh);
|
|
|
|
+ }
|
|
|
|
+ QFilter qFilter = new QFilter("number", QCP.in, speakerIdList);
|
|
|
|
+ DynamicObject[] speakerDyns = BusinessDataServiceHelper.load("nckd_speaker", "number", new QFilter[]{qFilter});
|
|
|
|
+ Map<String, DynamicObject> speakerMap =
|
|
|
|
+ Arrays.stream(speakerDyns)
|
|
|
|
+ .collect(Collectors.toMap(
|
|
|
|
+ detail -> detail.getString("number"),
|
|
|
|
+ detail -> detail, // 整个 DynamicObject 作为 value
|
|
|
|
+ (existing, replacement) -> existing // 保留前面的值
|
|
|
|
+ ));
|
|
|
|
+ ArrayList<DynamicObject> speakerDynList = new ArrayList<>();
|
|
|
|
+ StringBuilder err = new StringBuilder();
|
|
|
|
+
|
|
|
|
+ for(int i=0;i<datas.size();i++){
|
|
|
|
+ JSONObject item=datas.getJSONObject(i);
|
|
|
|
+ JSONObject mainTable=item.getJSONObject("mainTable");
|
|
|
|
+ //身份证号
|
|
|
|
+ String sfzh=mainTable.getString("sfzh");
|
|
|
|
+ if(EmptyUtils.isEmpty(sfzh)){
|
|
|
|
+ err.append("第"+i+"条数据身份证号为空,");
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ //姓名
|
|
|
|
+ String zjxm=mainTable.getString("zjxm");
|
|
|
|
+ if(EmptyUtils.isEmpty(zjxm)){
|
|
|
|
+ err.append("第"+i+"条数据姓名为空,");
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ //任职医院
|
|
|
|
+ String rzyy=mainTable.getString("rzyy");
|
|
|
|
+ //社会单位
|
|
|
|
+ String shdw=mainTable.getString("shdw");
|
|
|
|
+ //治疗领域
|
|
|
|
+ String zlly=mainTable.getString("zlly");
|
|
|
|
+ //专家评定级别 0:院士级 1:国家级 2:区域/省级 3:城市级 4:普通级
|
|
|
|
+ String zjpdjb=mainTable.getString("zjpdjb");
|
|
|
|
+ //数据状态 1表示正常 单据
|
|
|
|
+ String data_status=mainTable.getString("data_status");
|
|
|
|
+ //创建人
|
|
|
|
+ String creator=mainTable.getString("creator");
|
|
|
|
+ //创建时间
|
|
|
|
+ //主数据内码
|
|
|
|
+ if(EmptyUtils.isNotEmpty(sfzh)){
|
|
|
|
+ DynamicObject dyn=speakerMap.get(sfzh);
|
|
|
|
+ if(dyn==null){
|
|
|
|
+ dyn=BusinessDataServiceHelper.newDynamicObject("nckd_speaker");
|
|
|
|
+ dyn.set("number", sfzh);
|
|
|
|
+ dyn.set("name",zjxm);
|
|
|
|
+ dyn.set("nckd_rzyy",rzyy);
|
|
|
|
+ dyn.set("nckd_shdw",shdw);
|
|
|
|
+ dyn.set("nckd_zlly",zlly);
|
|
|
|
+ if(EmptyUtils.isNotEmpty(zjpdjb)){
|
|
|
|
+ switch (zjpdjb){
|
|
|
|
+ case "0":
|
|
|
|
+ dyn.set("nckd_pdjb","院士级");
|
|
|
|
+ break;
|
|
|
|
+ case "1":
|
|
|
|
+ dyn.set("nckd_pdjb","国家级");
|
|
|
|
+ break;
|
|
|
|
+ case "2":
|
|
|
|
+ dyn.set("nckd_pdjb","区域/省级");
|
|
|
|
+ break;
|
|
|
|
+ case "3":
|
|
|
|
+ dyn.set("nckd_pdjb","城市级");
|
|
|
|
+ break;
|
|
|
|
+ case "4":
|
|
|
|
+ dyn.set("nckd_pdjb","普通级");
|
|
|
|
+ break;
|
|
|
|
+ default:break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //数据状态
|
|
|
|
+ dyn.set("status",data_status);
|
|
|
|
+ //creator创建人
|
|
|
|
+ dyn.set("creator",creator);
|
|
|
|
+ //使用状态
|
|
|
|
+ dyn.set("enable", "1");
|
|
|
|
+ }
|
|
|
|
+ speakerDynList.add(dyn);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ if(speakerDynList.size()>0) {
|
|
|
|
+ Object[] save = SaveServiceHelper.save(speakerDynList.toArray(new DynamicObject[0]));
|
|
|
|
+ int length = save.length;
|
|
|
|
+ logger.info("同步[讲者]完成,本次新增数量:{},"+err, length);
|
|
|
|
+ result.put("code", "200");
|
|
|
|
+ result.put("msg", "同步OA主数据_讲者,执行成功,本次同步数量"+length+err);
|
|
|
|
+ }else{
|
|
|
|
+ result.put("code", "304");
|
|
|
|
+ result.put("msg", "同步OA主数据_没有数据");
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
}
|
|
}
|