提交内容:API映射公共单据

备注:整理代码,优化代码,删除冗余
提交人:邹江涛
This commit is contained in:
zoujiangtao 2024-12-06 09:25:52 +08:00
parent 395a62cf90
commit a2507e8a6d
1 changed files with 137 additions and 111 deletions

View File

@ -118,113 +118,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
JSONArray jsonArray = new JSONArray(); JSONArray jsonArray = new JSONArray();
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
for (DynamicObject dynamicObject : dynamicObjectCollection) { for (DynamicObject dynamicObject : dynamicObjectCollection) {
String key = dynamicObject.getString("shkd_tarfield"); valueAssignment(dynamicObject, billObject, json, floors);
// 将映射字段塞入对应JSON中
Object shkd_soufield = dynamicObject.get("shkd_soufield");
logger.info("shkd_soufield: {}", shkd_soufield);
Object value = null;
if (shkd_soufield != null && !"".equals(shkd_soufield)) {
String[] parts = shkd_soufield.toString().split("\\.");
logger.info("billObject{}\nparts: {}", billObject, Arrays.toString(parts));
if (parts.length == 1) {
if ("payeetype".equals(parts[0]) || "payertype".equals(parts[0])) {
String objectType = billObject.getString(parts[0]);
switch (objectType) {
case "bos_org":
value = "4";
break;
case "bd_supplier":
value = "2";
break;
case "bd_customer":
value = "1";
break;
case "bos_user":
value = "3";
break;
case "other":
value = "4";
break;
}
} else if ("debitamount".equals(parts[0])) {
// 付款金额
BigDecimal debitamount = billObject.getBigDecimal("debitamount");
// 收款金额
BigDecimal creditamount = billObject.getBigDecimal("creditamount");
if (debitamount.compareTo(BigDecimal.ZERO) != 0) {
value = billObject.get("debitamount");
} else {
value = billObject.get("creditamount");
}
} else if ("direction".equals(parts[0])) {
// 付款金额
BigDecimal debitamount = billObject.getBigDecimal("debitamount");
// 收款金额
BigDecimal creditamount = billObject.getBigDecimal("creditamount");
if (debitamount.compareTo(BigDecimal.ZERO) != 0) {
value = "1";//支出
} else {
value = "2";//收入
}
} else {
value = billObject.get(parts[0]);
}
} else if (parts.length == 2) {
if ("entry".equals(parts[0])) {
DynamicObjectCollection dynamicObjectCollection1 = billObject.getDynamicObjectCollection(parts[0]);
value = dynamicObjectCollection1.get(0).get(parts[1]);
} else {
DynamicObject object = billObject.getDynamicObject(parts[0]);
if (object != null) {
value = object.get(parts[1]);
}
}
} else if (parts.length == 3) {
if ("entry".equals(parts[0])) {
DynamicObjectCollection dynamicObjectCollection1 = billObject.getDynamicObjectCollection(parts[0]);
DynamicObject object = dynamicObjectCollection1.get(0).getDynamicObject(parts[1]);
if (object != null) {
value = object.get(parts[2]);
}
} else {
DynamicObject object = billObject.getDynamicObject(parts[0]);
if (object != null) {
DynamicObject object1 = object.getDynamicObject(parts[1]);
if (object1 != null) {
value = object1.get(parts[2]);
}
}
}
}
} else {
value = dynamicObject.get("shkd_defaultdata");
}
String tartype = dynamicObject.getString("shkd_tartype");
if ("String".equals(tartype) || "Date".equals(tartype)) {
json.put(key, value);
} else if ("Integer".equals(tartype)) {
json.put(key, Integer.parseInt(value.toString()));
} else if ("BigDecimal".equals(tartype)) {
json.put(key, new BigDecimal(value.toString()));
} else if ("对象".equals(tartype)) {
JSONObject childJson = new JSONObject();
processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, billObject);
json.put(key, childJson);
} else if ("数组".equals(tartype)) {
JSONArray childJsonArray = new JSONArray();
for (DynamicObject childDynamicObject : getChildren(floors, dynamicObject.getString("shkd_tarfield"))) {
JSONObject childJson = new JSONObject();
processFloor(childJson, key, Collections.singletonList(childDynamicObject), floors, billObject);
childJsonArray.add(childJson);
}
json.put(key, childJsonArray);
}
} }
jsonArray.add(json); jsonArray.add(json);
codeEdit.setText(format(jsonArray.toJSONString())); codeEdit.setText(format(jsonArray.toJSONString()));
@ -291,7 +185,7 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
//目前JSONArray都是一层 //目前JSONArray都是一层
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
for (DynamicObject dynamicObject : currentFloor) { for (DynamicObject dynamicObject : currentFloor) {
String key = dynamicObject.getString("shkd_tarfield"); /*String key = dynamicObject.getString("shkd_tarfield");
Object shkd_soufield = dynamicObject.get("shkd_soufield"); Object shkd_soufield = dynamicObject.get("shkd_soufield");
logger.info("shkd_soufield: {}", shkd_soufield); logger.info("shkd_soufield: {}", shkd_soufield);
Object value = null; Object value = null;
@ -392,14 +286,15 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
childJsonArray.add(childJson); childJsonArray.add(childJson);
} }
json.put(key, childJsonArray); json.put(key, childJsonArray);
} }*/
valueAssignment(dynamicObject, dynamic, json, floors);
} }
jsonArray.add(json); jsonArray.add(json);
parentJson.put(parentKey, jsonArray); parentJson.put(parentKey, jsonArray);
} else { } else {
logger.info("进入对象"); logger.info("进入对象");
for (DynamicObject dynamicObject : currentFloor) { for (DynamicObject dynamicObject : currentFloor) {
String key = dynamicObject.getString("shkd_tarfield"); /*String key = dynamicObject.getString("shkd_tarfield");
Object shkd_soufield = dynamicObject.get("shkd_soufield"); Object shkd_soufield = dynamicObject.get("shkd_soufield");
logger.info("shkd_soufield: {}", shkd_soufield); logger.info("shkd_soufield: {}", shkd_soufield);
Object value = null; Object value = null;
@ -498,7 +393,8 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, dynamic); processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, dynamic);
childJsonArray.add(childJson); childJsonArray.add(childJson);
parentJson.put(key, childJsonArray); parentJson.put(key, childJsonArray);
} }*/
valueAssignment(dynamicObject, dynamic, parentJson, floors);
} }
} }
} }
@ -548,6 +444,130 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
this.getModel().setValue("shkd_parentfield", pKey, dynamicObjectCollection.size() - 1); this.getModel().setValue("shkd_parentfield", pKey, dynamicObjectCollection.size() - 1);
} }
/**
* 给value赋值
* @param dynamicObject 映射分录的单行数据
* @param billObject 源单数据
* @param jsonObject JSON对象
* @param floors 层集合
*/
private void valueAssignment(DynamicObject dynamicObject, DynamicObject billObject, JSONObject jsonObject, List<List<DynamicObject>> floors) {
String key = dynamicObject.getString("shkd_tarfield");
Object value = null;
// 将映射字段塞入对应JSON中
Object shkd_soufield = dynamicObject.get("shkd_soufield");
logger.info("shkd_soufield: {}", shkd_soufield);
if (shkd_soufield != null && !"".equals(shkd_soufield)) {
String[] parts = shkd_soufield.toString().split("\\.");
logger.info("billObject{}\nparts: {}", billObject, Arrays.toString(parts));
if (parts.length == 1) {
if ("payeetype".equals(parts[0]) || "payertype".equals(parts[0])) {
String objectType = billObject.getString(parts[0]);
switch (objectType) {
case "bos_org":
value = "4";
break;
case "bd_supplier":
value = "2";
break;
case "bd_customer":
value = "1";
break;
case "bos_user":
value = "3";
break;
case "other":
value = "4";
break;
}
} else if ("debitamount".equals(parts[0])) {
// 付款金额
BigDecimal debitamount = billObject.getBigDecimal("debitamount");
// 收款金额
BigDecimal creditamount = billObject.getBigDecimal("creditamount");
if (debitamount.compareTo(BigDecimal.ZERO) != 0) {
value = billObject.get("debitamount");
} else {
value = billObject.get("creditamount");
}
} else if ("direction".equals(parts[0])) {
// 付款金额
BigDecimal debitamount = billObject.getBigDecimal("debitamount");
// 收款金额
BigDecimal creditamount = billObject.getBigDecimal("creditamount");
if (debitamount.compareTo(BigDecimal.ZERO) != 0) {
value = "1";//支出
} else {
value = "2";//收入
}
} else {
value = billObject.get(parts[0]);
}
} else if (parts.length == 2) {
if ("entry".equals(parts[0])) {
DynamicObjectCollection dynamicObjectCollection1 = billObject.getDynamicObjectCollection(parts[0]);
value = dynamicObjectCollection1.get(0).get(parts[1]);
} else {
DynamicObject object = billObject.getDynamicObject(parts[0]);
if (object != null) {
value = object.get(parts[1]);
}
}
} else if (parts.length == 3) {
if ("entry".equals(parts[0])) {
DynamicObjectCollection dynamicObjectCollection1 = billObject.getDynamicObjectCollection(parts[0]);
DynamicObject object = dynamicObjectCollection1.get(0).getDynamicObject(parts[1]);
if (object != null) {
value = object.get(parts[2]);
}
} else {
DynamicObject object = billObject.getDynamicObject(parts[0]);
if (object != null) {
DynamicObject object1 = object.getDynamicObject(parts[1]);
if (object1 != null) {
value = object1.get(parts[2]);
}
}
}
}
} else {
value = dynamicObject.get("shkd_defaultdata");
}
String tartype = dynamicObject.getString("shkd_tartype");
if ("String".equals(tartype) || "Date".equals(tartype)) {
jsonObject.put(key, value);
} else if ("Integer".equals(tartype)) {
jsonObject.put(key, Integer.parseInt(value.toString()));
} else if ("BigDecimal".equals(tartype)) {
jsonObject.put(key, new BigDecimal(value.toString()));
} else if ("对象".equals(tartype)) {
JSONObject childJson = new JSONObject();
processFloor(childJson, key, getChildren(floors, dynamicObject.getString("shkd_tarfield")), floors, billObject);
jsonObject.put(key, childJson);
} else if ("数组".equals(tartype)) {
JSONArray childJsonArray = new JSONArray();
for (DynamicObject childDynamicObject : getChildren(floors, dynamicObject.getString("shkd_tarfield"))) {
JSONObject childJson = new JSONObject();
processFloor(childJson, key, Collections.singletonList(childDynamicObject), floors, billObject);
childJsonArray.add(childJson);
}
jsonObject.put(key, childJsonArray);
}
}
/**
* 格式化JSON字符串
*
* @param jsonString 需要格式化的JSON字符串
* @return 已经添加好缩进和换行的JSON字符串
*/
public String format(String jsonString) { public String format(String jsonString) {
StringBuilder prettyJson = new StringBuilder(); StringBuilder prettyJson = new StringBuilder();
char[] chars = jsonString.toCharArray(); char[] chars = jsonString.toCharArray();
@ -583,6 +603,12 @@ public class ApiMappingBillPlugin extends AbstractFormPlugin implements Plugin {
return prettyJson.toString(); return prettyJson.toString();
} }
/**
* 格式化JSON字符串 -> 添加缩进
*
* @param sb
* @param indentLevel
*/
private void addIndent(StringBuilder sb, int indentLevel) { private void addIndent(StringBuilder sb, int indentLevel) {
for (int i = 0; i < indentLevel; i++) { for (int i = 0; i < indentLevel; i++) {
sb.append(" "); // 使用4个空格作为缩进 sb.append(" "); // 使用4个空格作为缩进