173 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Java
		
	
	
	
		
		
			
		
	
	
			173 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Java
		
	
	
	
| 
								 | 
							
								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.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 {
							 | 
						|||
| 
								 | 
							
								    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 ("aduit".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");//地址1,string(50)
							 | 
						|||
| 
								 | 
							
								            String tqq9_proaddress = dataEntity.getString("tqq9_proaddress");//地址2,string(50)
							 | 
						|||
| 
								 | 
							
								            // <actionType>add|update, 必填</actionType>
							 | 
						|||
| 
								 | 
							
								            //  <manufactoryCode>生产厂商编码, string (50) , 必填</ manufactoryCode>
							 | 
						|||
| 
								 | 
							
								            //   <manufactoryName>生产厂商名称, string (200) </ manufactoryName>
							 | 
						|||
| 
								 | 
							
								            //<manufactoryLicense>生产企业许可证/备案凭证号, string (50) </ manufactoryLicense >
							 | 
						|||
| 
								 | 
							
								            //<permitType>准证类型, string (50) </ permitType >
							 | 
						|||
| 
								 | 
							
								            //<urlPath>url链接地址, string(200), 必填</ urlPath>
							 | 
						|||
| 
								 | 
							
								            //<status>是否有效,Y/N(默认为Y)</status>
							 | 
						|||
| 
								 | 
							
								            //<address1>地址1,string(50)</address1>
							 | 
						|||
| 
								 | 
							
								            //<address2>地址2,string(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-mail,string(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);
							 | 
						|||
| 
								 | 
							
								            // 最终的外层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);
							 | 
						|||
| 
								 | 
							
								                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("&", "&")
							 | 
						|||
| 
								 | 
							
								                .replace("<", "<")
							 | 
						|||
| 
								 | 
							
								                .replace(">", ">")
							 | 
						|||
| 
								 | 
							
								                .replace("\"", """)
							 | 
						|||
| 
								 | 
							
								                .replace("'", "'");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    // 自定义缩进方法
							 | 
						|||
| 
								 | 
							
								    private static String createIndent(int indent) {
							 | 
						|||
| 
								 | 
							
								        StringBuilder sb = new StringBuilder();
							 | 
						|||
| 
								 | 
							
								        for (int i = 0; i < indent; i++) {
							 | 
						|||
| 
								 | 
							
								            sb.append("    "); // 4个空格
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return sb.toString();
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |