提交 93a0bc5c authored 作者: 李炎's avatar 李炎

testLog

上级 d2edf695
......@@ -35,16 +35,15 @@ public class KingDeeCommonPushApi {
@Autowired
private KingDeeCommonConfigMapper kingDeeCommonConfigMapper;
public String kingDeeUpdateThirdData(Map<String, String> config, String queueId, String name, List<Map<String, Object>> dataList, List<Map<String, String>> fieldList, Map<String, Object> data,HashSet<String> attachments) {
public String kingDeeUpdateThirdData(Map<String, String> config, String queueId, String name, List<Map<String, Object>> dataList, List<Map<String, String>> fieldList, Map<String, Object> data, HashSet<String> attachments) {
data.put("Model", thirdPartyFieldToKingDee(dataList, fieldList, config.get("entryName"), attachments));
return kingDeeApi.kingDeeDataPush(config, queueId, name, data);
}
public String uploadAttachment(String attachment, long Id)
{
return kingDeeApi.uploadAttachment(attachment, Id);
public String uploadAttachment(String attachment, long Id) {
return kingDeeApi.uploadAttachment(attachment, Id);
}
/**
......@@ -53,19 +52,18 @@ public class KingDeeCommonPushApi {
public Map<String, Object> thirdPartyFieldToKingDee(List<Map<String, Object>> dataList, List<Map<String, String>> fieldList, String entryName, HashSet<String> attachments) {
Map<String, Object> modelMap = new LinkedHashMap<>(2);
List<Map<String, Object>> list = new ArrayList<>();
System.out.println("======thirdPartyFieldToKingDee===dataList"+dataList);
System.out.println("======thirdPartyFieldToKingDee===dataList" + dataList);
for (Map<String, Object> map : dataList) {
Map<String, Object> entityMap = new HashMap();
Map<String, Map<String, Object>> mapBillDatas = new HashMap();
for (Map<String, String> field : fieldList) {
String fieldType = field.get("fieldType");
if(fieldType.equals("附件"))
{
attachments.add((String) map.get(field.get("thirdPartyField")));
continue;
}
String fieldType = field.get("fieldType");
if (fieldType.equals("附件")) {
attachments.add((String) map.get(field.get("thirdPartyField")));
continue;
}
if (Constants.TRUE.equals(field.get("isEntryField"))) {
this.populateThirdPartyData(entityMap, map, field, mapBillDatas);
if (map.containsKey("ERP_SIC")) {
......@@ -78,58 +76,53 @@ public class KingDeeCommonPushApi {
this.populateThirdPartyData(modelMap, map, field, mapBillDatas);
}
}
SetMapFields(mapBillDatas);
list.add(entityMap);
}
modelMap.put(entryName, list);
System.out.println("======thirdPartyFieldToKingDee===modelMap"+modelMap);
System.out.println("======thirdPartyFieldToKingDee===modelMap" + modelMap);
return modelMap;
}
/**
* 设置Map字段
*
* @param mapBillDatas
*/
private void SetMapFields(Map<String, Map<String, Object>> mapBillDatas)
{
for(Entry<String, Map<String, Object>> mapBillData:mapBillDatas.entrySet())
{
String kingDeeField = mapBillData.getKey();
Map<String, Object> mapValue = mapBillData.getValue();
Map<String, Object> mapEntity = (Map<String, Object>)mapValue.get("mapEntity");
String mapBill = (String)mapValue.get("mapBill");
Map<String, Object> fieldValues = (Map<String, Object>)mapValue.get("fieldValues");
List<KingDeeCommonConfigListOutVoRecords> records = kingDeeCommonConfigMapper.getKingDeeCommonConfigByDocType(mapBill);
if(records.size() > 0)
{
KingDeeCommonConfigListOutVoRecords kingDeeCommonConfig = records.get(0);
String primaryKeyField = kingDeeCommonConfig.getPrimaryKeyField();//需要获取的字段
List<String> wheres = new ArrayList<String>();
for(Entry<String, Object> fieldValue:fieldValues.entrySet())
{
wheres.add("" + fieldValue.getKey() + "=" + "'" + fieldValue.getValue() + "'");
}
List<String> fields = new ArrayList<String>();
fields.add(primaryKeyField);
TableStructureListOutVoRecords tableStructureListOutVoRecords = databaseTableMapper.tableStructureOne(mapBill);
if(!Constants.NULL.equals(tableStructureListOutVoRecords))
{
String dbTableName = tableStructureListOutVoRecords.getDbTableName();
List<Object> datas = databaseTableMapper.getDynamicTableDatas(dbTableName, fields, wheres);
if(datas.size() > 0)
{
SetKingdeeValue(mapEntity, kingDeeField, primaryKeyField, datas.get(0));
}
}
}
}
private void SetMapFields(Map<String, Map<String, Object>> mapBillDatas) {
for (Entry<String, Map<String, Object>> mapBillData : mapBillDatas.entrySet()) {
String kingDeeField = mapBillData.getKey();
Map<String, Object> mapValue = mapBillData.getValue();
Map<String, Object> mapEntity = (Map<String, Object>) mapValue.get("mapEntity");
String mapBill = (String) mapValue.get("mapBill");
Map<String, Object> fieldValues = (Map<String, Object>) mapValue.get("fieldValues");
List<KingDeeCommonConfigListOutVoRecords> records = kingDeeCommonConfigMapper.getKingDeeCommonConfigByDocType(mapBill);
if (records.size() > 0) {
KingDeeCommonConfigListOutVoRecords kingDeeCommonConfig = records.get(0);
String primaryKeyField = kingDeeCommonConfig.getPrimaryKeyField();//需要获取的字段
List<String> wheres = new ArrayList<String>();
for (Entry<String, Object> fieldValue : fieldValues.entrySet()) {
wheres.add("" + fieldValue.getKey() + "=" + "'" + fieldValue.getValue() + "'");
}
List<String> fields = new ArrayList<String>();
fields.add(primaryKeyField);
TableStructureListOutVoRecords tableStructureListOutVoRecords = databaseTableMapper.tableStructureOne(mapBill);
if (!Constants.NULL.equals(tableStructureListOutVoRecords)) {
String dbTableName = tableStructureListOutVoRecords.getDbTableName();
List<Object> datas = databaseTableMapper.getDynamicTableDatas(dbTableName, fields, wheres);
if (datas.size() > 0) {
SetKingdeeValue(mapEntity, kingDeeField, primaryKeyField, datas.get(0));
}
}
}
}
}
private void populateThirdPartyData(Map<String, Object> temp, Map<String, Object> map, Map<String, String> field, Map<String, Map<String, Object>> mapBillDatas) {
......@@ -137,55 +130,47 @@ public class KingDeeCommonPushApi {
String thirdPartyField = field.get("thirdPartyField");
String retrievalField = field.get("retrievalField");
String mapBill = field.get("mapBill");
String defaultValue = field.get("defaultValue");
if(StringUtil.isBlank(thirdPartyField))
{
SetDefaultValue(temp, defaultValue, retrievalField, kingDeeField);
return;
if (StringUtil.isBlank(thirdPartyField)) {
SetDefaultValue(temp, defaultValue, retrievalField, kingDeeField);
return;
}
Object curValue = ExcuteScript(thirdPartyField, map);
if (thirdPartyField.equals("pay")) {
System.out.println("===============pay"+curValue);
System.out.println("=======pay" + curValue);
}
if(Constants.NULL.equals(curValue))
{
SetDefaultValue(temp, defaultValue, retrievalField, kingDeeField);
return;
if (Constants.NULL.equals(curValue)) {
SetDefaultValue(temp, defaultValue, retrievalField, kingDeeField);
return;
}
if(StringUtil.isNotBlank(mapBill))
{
Map<String, Object> fieldValues;
if(!mapBillDatas.containsKey(kingDeeField))
{
Map<String, Object> mapBillData = new HashMap<String, Object>();
mapBillDatas.put(kingDeeField, mapBillData);
mapBillData.put("mapBill", mapBill);
mapBillData.put("mapEntity", temp);
fieldValues = new HashMap();
mapBillData.put("fieldValues", fieldValues);
}
else
{
Map<String, Object> mapBillData = mapBillDatas.get(kingDeeField);
fieldValues = (Map<String, Object>)mapBillData.get("fieldValues");
}
fieldValues.put(retrievalField, curValue);
if (StringUtil.isNotBlank(mapBill)) {
Map<String, Object> fieldValues;
if (!mapBillDatas.containsKey(kingDeeField)) {
Map<String, Object> mapBillData = new HashMap<String, Object>();
mapBillDatas.put(kingDeeField, mapBillData);
mapBillData.put("mapBill", mapBill);
mapBillData.put("mapEntity", temp);
fieldValues = new HashMap();
mapBillData.put("fieldValues", fieldValues);
} else {
Map<String, Object> mapBillData = mapBillDatas.get(kingDeeField);
fieldValues = (Map<String, Object>) mapBillData.get("fieldValues");
}
fieldValues.put(retrievalField, curValue);
SetKingdeeValue(temp, kingDeeField, retrievalField, "");
return;
return;
}
SetKingdeeValue(temp, kingDeeField, retrievalField, curValue);
}
private void SetDefaultValue(Map<String, Object> temp, String defaultValue, String retrievalField, String kingDeeField)
{
if(StringUtil.isNotBlank(defaultValue))
{
private void SetDefaultValue(Map<String, Object> temp, String defaultValue, String retrievalField, String kingDeeField) {
if (StringUtil.isNotBlank(defaultValue)) {
if (StringUtil.isNotBlank(retrievalField)) {
temp.put(kingDeeField, new HashMap<String, Object>(1) {{
put(retrievalField, defaultValue);
......@@ -195,60 +180,62 @@ public class KingDeeCommonPushApi {
}
}
}
private void SetKingdeeValue(Map<String, Object> temp, String kingDeeField, String retrievalField, Object curValue)
{
private void SetKingdeeValue(Map<String, Object> temp, String kingDeeField, String retrievalField, Object curValue) {
if (!Constants.NULL.equals(curValue)) {
if (StringUtil.isNotBlank(retrievalField)) {
if (kingDeeField.equals("F_LQKJ_RecConditionId")) {
System.out.println("===============F_LQKJ_RecConditionId:" + curValue);
}
temp.put(kingDeeField, new HashMap<String, Object>(1) {{
put(retrievalField, curValue);
}});
if (kingDeeField.equals("F_LQKJ_RecConditionId")) {
System.out.println("===============temp:" + temp);
}
} else {
temp.put(kingDeeField, curValue);
}
}
}
private Object ExcuteScript(String thirdPartyField, Object value)
{
private Object ExcuteScript(String thirdPartyField, Object value) {
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = engineManager.getEngineByName("JavaScript");
try {
List<Object> valuesList = new ArrayList<Object>();
Map<String,Object> curValue = (Map<String,Object>)value;
List<String> keys = new ArrayList();
List<Object> values = new ArrayList();
Boolean isContained = false;
for(Map.Entry<String, Object> curEntry :curValue.entrySet())
{
if(thirdPartyField.contains(curEntry.getKey()))
{
keys.add(curEntry.getKey());
values.add(curEntry.getValue());
isContained = true;
}
}
if(!isContained) return "";
String Script =
"function getfieldValue("+ String.join(",", keys) + "){ return " + thirdPartyField + "}"
+ "";
try {
List<Object> valuesList = new ArrayList<Object>();
Map<String, Object> curValue = (Map<String, Object>) value;
List<String> keys = new ArrayList();
List<Object> values = new ArrayList();
Boolean isContained = false;
for (Map.Entry<String, Object> curEntry : curValue.entrySet()) {
if (thirdPartyField.contains(curEntry.getKey())) {
keys.add(curEntry.getKey());
values.add(curEntry.getValue());
isContained = true;
}
}
if (!isContained) return "";
String Script =
"function getfieldValue(" + String.join(",", keys) + "){ return " + thirdPartyField + "}"
+ "";
Object result = scriptEngine.eval(Script);
Invocable in = (Invocable) scriptEngine;
result = in.invokeFunction("getfieldValue", values.toArray());
return result;
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
return result;
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
public String kingDeeUpdateBySql(Map<String, String> config, String queueId, String name, String request) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论