wms厂商、注册证改用操作插件同步
This commit is contained in:
		
							parent
							
								
									e30994095f
								
							
						
					
					
						commit
						13ceea7b4a
					
				|  | @ -0,0 +1,181 @@ | |||
| package tqq9.lc123.cloud.app.plugin.operate.sys; | ||||
| 
 | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.entity.plugin.AbstractOperationServicePlugIn; | ||||
| import kd.bos.entity.plugin.PreparePropertysEventArgs; | ||||
| import kd.bos.entity.plugin.args.AfterOperationArgs; | ||||
| 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 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; | ||||
| 
 | ||||
| //wms生产商同步 | ||||
| public class WmsScsSyncOpPlugin extends AbstractOperationServicePlugIn { | ||||
|     private final static Log logger = LogFactory.getLog(WmsScsSyncOpPlugin.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 onPreparePropertys(PreparePropertysEventArgs e) { | ||||
|         super.onPreparePropertys(e); | ||||
|         e.getFieldKeys().add("number"); | ||||
|         e.getFieldKeys().add("name"); | ||||
|         e.getFieldKeys().add("tqq9_address"); | ||||
|         e.getFieldKeys().add("tqq9_proaddress"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void afterExecuteOperationTransaction(AfterOperationArgs e) { | ||||
|         super.afterExecuteOperationTransaction(e); | ||||
|         DynamicObject[] dataEntities1 = e.getDataEntities(); | ||||
|         if (null != dataEntities1 && dataEntities1.length > 0) { | ||||
|             for (DynamicObject dataEntity : dataEntities1) { | ||||
|                 //获取附件url路径信息 | ||||
|                 List<Map<String, String>> urlPathsArray = new ArrayList<>(); | ||||
|                 List<Map<String, Object>> wms_atts = AttachmentServiceHelper.getAttachments("tqq9_proxyandfactory", dataEntity.getPkValue(), "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); | ||||
|                 request.put("status", "Y"); | ||||
|                 // 最终的外层Map | ||||
|                 Map<String, Object> finalMap = new HashMap<>(); | ||||
|                 finalMap.put("request", request); | ||||
|                 logger.info("wms生产商同步——request:" + request); | ||||
|                 StringBuilder xmlBuilder = new StringBuilder(); | ||||
|                 xmlBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); | ||||
|                 buildXml(xmlBuilder, finalMap, 0); | ||||
|                 logger.info("wms生产商同步——xml:" + 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); | ||||
|                 } 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(); | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,216 @@ | |||
| package tqq9.lc123.cloud.app.plugin.operate.sys; | ||||
| 
 | ||||
| import kd.bos.dataentity.entity.DynamicObject; | ||||
| import kd.bos.dataentity.entity.DynamicObjectCollection; | ||||
| import kd.bos.entity.plugin.AbstractOperationServicePlugIn; | ||||
| import kd.bos.entity.plugin.PreparePropertysEventArgs; | ||||
| import kd.bos.entity.plugin.args.AfterOperationArgs; | ||||
| 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.bos.util.StringUtils; | ||||
| import tqq9.lc123.cloud.app.plugin.utils.HttpRequestUtils; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.*; | ||||
| 
 | ||||
| //wms注册证同步 | ||||
| public class WmsZczSyncOpPlugin extends AbstractOperationServicePlugIn { | ||||
|     private final static Log logger = LogFactory.getLog(WmsZczSyncOpPlugin.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 onPreparePropertys(PreparePropertysEventArgs e) { | ||||
|         super.onPreparePropertys(e); | ||||
|         e.getFieldKeys().add("number"); | ||||
|         e.getFieldKeys().add("tqq9_startdate"); | ||||
|         e.getFieldKeys().add("tqq9_enddate"); | ||||
|         e.getFieldKeys().add("modifytime"); | ||||
|         e.getFieldKeys().add("tqq9_type"); | ||||
|         e.getFieldKeys().add("tqq9_typethree"); | ||||
|         e.getFieldKeys().add("tqq9_remark"); | ||||
|         e.getFieldKeys().add("tqq9_entry.tqq9_e_supplier"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void afterExecuteOperationTransaction(AfterOperationArgs e) { | ||||
|         super.afterExecuteOperationTransaction(e); | ||||
|         DynamicObject[] dataEntities1 = e.getDataEntities(); | ||||
|         if (null != dataEntities1 && dataEntities1.length > 0) { | ||||
|             for (DynamicObject dataEntity : dataEntities1) { | ||||
|                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||||
|                 String number = dataEntity.getString("number"); | ||||
|                 //厂商分录 | ||||
|                 DynamicObjectCollection tqq9_entry = dataEntity.getDynamicObjectCollection("tqq9_entry"); | ||||
|                 //获取厂商分录的信息 | ||||
|                 Map<String, Object> manufactoryList = new HashMap<>(); | ||||
|                 List<Map<String, String>> manufactoryArray = new ArrayList<>(); | ||||
|                 for (DynamicObject entry : tqq9_entry) { | ||||
|                     DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产厂商 | ||||
|                     if (tqq9_e_supplier != null) { | ||||
|                         HashMap<String, String> map = new HashMap<>(); | ||||
|                         String number2 = tqq9_e_supplier.getString("number"); | ||||
|                         //生产商 | ||||
|                         DynamicObject file2 = BusinessDataServiceHelper.loadSingle("tqq9_proxyandfactory", "id,number,name,tqq9_prolicense,tqq9_type", | ||||
|                                 new QFilter[]{new QFilter("number", QFilter.equals, number2)}); | ||||
|                         String MFCode = file2.getString("number"); | ||||
|                         String name = file2.getString("name"); | ||||
|                         String ProLicenceCode = file2.getString("tqq9_prolicense"); | ||||
|                         String tqq9_type = file2.getString("tqq9_type");//厂商类型 | ||||
|                         if (StringUtils.isNotEmpty(tqq9_type) && tqq9_type.contains("B")) { | ||||
|                             map.put("isAgent", "Y");//代理商 | ||||
|                         } else { | ||||
|                             map.put("isAgent", "N"); | ||||
|                         } | ||||
|                         map.put("manufactoryCode", MFCode); | ||||
|                         map.put("manufactoryName", name); | ||||
|                         map.put("proLicenceCode", ProLicenceCode); | ||||
|                         manufactoryArray.add(map); | ||||
|                     } | ||||
|                 } | ||||
|                 manufactoryList.put("manufactory", manufactoryArray); | ||||
|                 //获取url路径信息 | ||||
|                 List<Map<String, String>> urlPathsArray = new ArrayList<>(); | ||||
|                 //上海盖章注册证附件 | ||||
|                 List<Map<String, Object>> wms_atts = AttachmentServiceHelper.getAttachments("tqq9_registration", dataEntity.getPkValue().toString(), "tqq9_attachmentpanelsh"); | ||||
|                 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); | ||||
| 
 | ||||
| 
 | ||||
|                 //开始封装body | ||||
|                 //<actionType>add|update, 必填</actionType> | ||||
|                 //	<regNo>注册证号, string (250) , 必填</regNo> | ||||
|                 //	<imported>是否进口,必填,Y/N (默认为N) </imported > | ||||
|                 //<productDate>有效期始, string (10) , YYYY-MM-DD</productDate> | ||||
|                 //	<expireDate>有效期至, string (10) , YYYY-MM-DD , 必填</expireDate> | ||||
|                 //	<threeLevelClass >三级分类, string(50)</threeLevelClass > | ||||
|                 //	<status>是否有效, Y/N (默认为Y) </ status> | ||||
|                 String yxqs = ""; | ||||
|                 Date tqq9_startdate = dataEntity.getDate("tqq9_startdate"); | ||||
|                 if (tqq9_startdate != null) { | ||||
|                     yxqs = sdf.format(tqq9_startdate);//有效期至 | ||||
|                 } | ||||
|                 String yxqz = ""; | ||||
|                 Date tqq9_enddate = dataEntity.getDate("tqq9_enddate");//有效期至 | ||||
|                 if (tqq9_enddate != null) { | ||||
|                     yxqz = sdf.format(tqq9_enddate);//有效期至 | ||||
|                 } | ||||
|                 String modifytime = sdf.format(dataEntity.getDate("modifytime"));//修改时间 | ||||
|                 String IsImportation = dataEntity.getString("tqq9_type").equals("A") ? "Y" : "N";//是否进口 | ||||
|                 Map<String, Object> request = new HashMap<>(); | ||||
|                 request.put("actionType", "update"); | ||||
|                 request.put("regNo", number); | ||||
|                 request.put("imported", IsImportation); | ||||
|                 request.put("productDate", yxqs); | ||||
|                 request.put("expireDate", yxqz); | ||||
|                 DynamicObject tqq9_typethree = dataEntity.getDynamicObject("tqq9_typethree");//三类产品分类 | ||||
|                 if (null != tqq9_typethree) { | ||||
|                     request.put("threeLevelClass", tqq9_typethree.getString("name")); | ||||
|                 } | ||||
|                 Map<String, Object> extendProps = new HashMap<>(); | ||||
|                 extendProps.put("key1", dataEntity.getString("tqq9_remark"));//备注 | ||||
|                 request.put("extendProps", extendProps); | ||||
|                 //request.put("threeLevelClass", "【三类】口腔科器械(17)"); | ||||
|                 request.put("status", "Y"); | ||||
|                 request.put("updateTime", modifytime); | ||||
|                 request.put("urlPathList", urlPathList); | ||||
|                 request.put("manufactoryList", manufactoryList); | ||||
|                 // 最终的外层Map | ||||
|                 Map<String, Object> finalMap = new HashMap<>(); | ||||
|                 finalMap.put("request", request); | ||||
|                 logger.info("wms注册证同步request:" + request); | ||||
|                 StringBuilder xmlBuilder = new StringBuilder(); | ||||
|                 xmlBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); | ||||
|                 buildXml(xmlBuilder, finalMap, 0); | ||||
|                 logger.info("wms注册证同步xml:" + xmlBuilder); | ||||
|                 HashMap<String, String> headMap = new HashMap<>(); | ||||
|                 try { | ||||
|                     String s = HttpRequestUtils.postXml(WMS_URL + "?method=registrationcertificate.create&v=2.0&format=xml&customerId=123", xmlBuilder.toString(), headMap); | ||||
|                     logger.info("wms注册证接口结果:" + 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(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue