lc/lc123/cloud/app/plugin/operate/sys/WmsScspostApi.java

179 lines
8.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tqq9.lc123.cloud.app.plugin.operate.sys;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.AttachmentServiceHelper;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 动态表单插件
*/
public class WmsScspostApi extends AbstractFormPlugin implements Plugin {
private final static Log logger = LogFactory.getLog(ScsPostApi.class);
DynamicObject BJURL = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name",
new QFilter[]{new QFilter("number", QCP.equals, "BJ_POSTURL")});
String BJ_URL = (String) BJURL.getString("name");
DynamicObject GZURL = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name",
new QFilter[]{new QFilter("number", QCP.equals, "GZ_POSTURL")});
String GZ_URL = GZURL.getString("name");
DynamicObject WMSURL = BusinessDataServiceHelper.loadSingle("tqq9_thirdconfig", "name",
new QFilter[]{new QFilter("number", QCP.equals, "Ttx_MainURL")});
String WMS_URL = WMSURL.getString("name");
@Override
public void afterDoOperation(AfterDoOperationEventArgs e) {
super.afterDoOperation(e);
String operateKey = e.getOperateKey();
IDataModel model = this.getModel();
DynamicObject dataEntity = model.getDataEntity();
String number = dataEntity.getString("number");
if ("audit".equals(operateKey)){
DynamicObject file = BusinessDataServiceHelper.loadSingle("tqq9_proxyandfactory", "id",
new QFilter[]{new QFilter("number", QFilter.equals, number)});
//获取url路径信息
List<Map<String, String>> urlPathsArray = new ArrayList<>();
List<Map<String, Object>> wms_atts = AttachmentServiceHelper.getAttachments("tqq9_proxyandfactory", file.getPkValue().toString(), "tqq9_attachmentpanelap");
for (Map<String, Object> att : wms_atts) {
HashMap<String, String> map = new HashMap<>();
String url = (String) att.get("url");
map.put("urlPath", url);
urlPathsArray.add(map);
}
Map<String, Object> urlPathList = new HashMap<>();
urlPathList.put("urlPaths", urlPathsArray);
//其他入参:
String number1 = dataEntity.getString("number");//生产厂商编码
String name = dataEntity.getString("name");//生产厂商名称
String tqq9_address = dataEntity.getString("tqq9_address");//地址1string(50)
String tqq9_proaddress = dataEntity.getString("tqq9_proaddress");//地址2string(50)
// <actionType>add|update, 必填</actionType>
// <manufactoryCode>生产厂商编码, string (50) , 必填</ manufactoryCode>
// <manufactoryName>生产厂商名称, string (200) </ manufactoryName>
//<manufactoryLicense>生产企业许可证/备案凭证号, string (50) </ manufactoryLicense >
//<permitType>准证类型, string (50) </ permitType >
//<urlPath>url链接地址, string200, 必填</ urlPath>
//<status>是否有效Y/N(默认为Y)</status>
//<address1>地址1string(50)</address1>
//<address2>地址2string(50)</address2>
//<state>省份string(50)</state>
//<city>城市string(50)</city>
//<district>区县string(50)</district>
//<town>镇string(50)</town>
//<country>国家string(50)</country>
//<countryCode>国家编码string(50)</countryCode>
//<stateCode>省份编码string(50)</stateCode>
//<cityCode>城市编码string(50)</cityCode>
//<districtCode>区/县编码string(50)</districtCode>
//<townCode>镇编码string(50)</townCode>
//<postalCode>邮编string(50)</postalCode>
//<attentionTo>联系人string(50)</attentionTo>
//<phoneNum>电话string(50)</phoneNum>
//<mobile>手机string(50)</mobile>
//<faxNum>传真string(50)</faxNum>
//<email>E-mailstring(200)</email>
//<remark>备注string(500)</remark>
//开始封装
Map<String, Object> request = new HashMap<>();
request.put("actionType","update");
request.put("manufactoryCode",number1);
request.put("manufactoryName",name);
request.put("address1",tqq9_address);
request.put("address2",tqq9_proaddress);
request.put("urlPathList",urlPathList);
request.put("status","Y");
// 最终的外层Map
Map<String, Object> finalMap = new HashMap<>();
finalMap.put("request", request);
StringBuilder xmlBuilder = new StringBuilder();
xmlBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
buildXml(xmlBuilder, finalMap, 0);
System.out.println("xmlBuilder:"+xmlBuilder);
HashMap<String, String> headMap = new HashMap<>();
try {
String s = HttpRequestUtils.postXml(WMS_URL+ "?method=manufacturer.create&v=2.0&format=xml&customerId=123", xmlBuilder.toString(), headMap);
logger.info("wms生产商同步接口"+s);
System.out.println(s);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
private static void buildXml(StringBuilder xmlBuilder, Map<String, Object> map, int indent) {
String indentStr = createIndent(indent);
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
if (value instanceof Map) {
// 处理嵌套Map
xmlBuilder.append(indentStr).append("<").append(key).append(">\n");
buildXml(xmlBuilder, (Map<String, Object>) value, indent + 1);
xmlBuilder.append(indentStr).append("</").append(key).append(">\n");
} else if (value instanceof List) {
// 处理List
List<?> list = (List<?>) value;
for (Object item : list) {
if (item instanceof Map) {
xmlBuilder.append(indentStr).append("<").append(key).append(">\n");
buildXml(xmlBuilder, (Map<String, Object>) item, indent + 1);
xmlBuilder.append(indentStr).append("</").append(key).append(">\n");
} else {
xmlBuilder.append(indentStr).append("<").append(key).append(">")
.append(escapeXml(item.toString()))
.append("</").append(key).append(">\n");
}
}
} else {
// 处理普通值
if (value == null) {
xmlBuilder.append(indentStr).append("<").append(key).append("/>\n");
} else {
xmlBuilder.append(indentStr).append("<").append(key).append(">")
.append(escapeXml(value.toString()))
.append("</").append(key).append(">\n");
}
}
}
}
/**
* XML特殊字符转义
*/
private static String escapeXml(String text) {
if (text == null) return "";
return text.replace("&", "&amp;")
.replace("<", "&lt;")
.replace(">", "&gt;")
.replace("\"", "&quot;")
.replace("'", "&apos;");
}
// 自定义缩进方法
private static String createIndent(int indent) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < indent; i++) {
sb.append(" "); // 4个空格
}
return sb.toString();
}
}