diff --git a/lc123/cloud/app/plugin/operate/sys/ScsPostApi.java b/lc123/cloud/app/plugin/operate/sys/ScsPostApi.java index cb3b5d5..f054d18 100644 --- a/lc123/cloud/app/plugin/operate/sys/ScsPostApi.java +++ b/lc123/cloud/app/plugin/operate/sys/ScsPostApi.java @@ -61,7 +61,6 @@ public class ScsPostApi extends AbstractBillPlugIn implements Plugin { } catch (IOException e) { throw new RuntimeException(e); } - } } diff --git a/lc123/cloud/app/plugin/operate/sys/WmsScspostApi.java b/lc123/cloud/app/plugin/operate/sys/WmsScspostApi.java new file mode 100644 index 0000000..36e07ca --- /dev/null +++ b/lc123/cloud/app/plugin/operate/sys/WmsScspostApi.java @@ -0,0 +1,173 @@ +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> urlPathsArray = new ArrayList<>(); + List> wms_atts = AttachmentServiceHelper.getAttachments("tqq9_proxyandfactory", file.getPkValue().toString(), "tqq9_attachmentpanelap"); + for (Map att : wms_atts) { + HashMap map = new HashMap<>(); + String url = (String) att.get("url"); + map.put("urlPath", url); + urlPathsArray.add(map); + } + Map 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) + // add|update, 必填 + // 生产厂商编码, string (50) , 必填 + // 生产厂商名称, string (200) + //生产企业许可证/备案凭证号, string (50) + //准证类型, string (50) + //url链接地址, string(200), 必填 + //是否有效,Y/N(默认为Y) + //地址1,string(50) + //地址2,string(50) + //省份,string(50) + //城市,string(50) + //区县,string(50) + //镇,string(50) + //国家,string(50) + //国家编码,string(50) + //省份编码,string(50) + //城市编码,string(50) + //区/县编码,string(50) + //镇编码,string(50) + //邮编,string(50) + //联系人,string(50) + //电话,string(50) + //手机,string(50) + //传真,string(50) + //E-mail,string(200) + //备注,string(500) + + //开始封装 + Map 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 finalMap = new HashMap<>(); + finalMap.put("request", request); + StringBuilder xmlBuilder = new StringBuilder(); + xmlBuilder.append("\n"); + buildXml(xmlBuilder, finalMap, 0); + System.out.println("xmlBuilder:"+xmlBuilder); + + HashMap 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 map, int indent) { + String indentStr = createIndent(indent); + + for (Map.Entry 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) value, indent + 1); + xmlBuilder.append(indentStr).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) item, indent + 1); + xmlBuilder.append(indentStr).append("\n"); + } else { + xmlBuilder.append(indentStr).append("<").append(key).append(">") + .append(escapeXml(item.toString())) + .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("\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(); + } +} \ No newline at end of file diff --git a/lc123/cloud/app/plugin/operate/sys/ZczPostApi.java b/lc123/cloud/app/plugin/operate/sys/ZczPostApi.java index 300fb70..a3a1b49 100644 --- a/lc123/cloud/app/plugin/operate/sys/ZczPostApi.java +++ b/lc123/cloud/app/plugin/operate/sys/ZczPostApi.java @@ -55,7 +55,6 @@ public class ZczPostApi extends AbstractBillPlugIn implements Plugin { DynamicObjectCollection tqq9_entry = file.getDynamicObjectCollection("tqq9_entry"); //分录 ArrayList> bglist = new ArrayList<>(); - ArrayList> wmslist = new ArrayList<>(); for (DynamicObject entry : tqq9_entry) { DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier"); if (tqq9_e_supplier != null) { diff --git a/lc123/cloud/app/plugin/operate/sys/wmsZczPostApi.java b/lc123/cloud/app/plugin/operate/sys/wmsZczPostApi.java index 0b4aa0d..8a5250c 100644 --- a/lc123/cloud/app/plugin/operate/sys/wmsZczPostApi.java +++ b/lc123/cloud/app/plugin/operate/sys/wmsZczPostApi.java @@ -86,8 +86,16 @@ public class wmsZczPostApi extends AbstractBillPlugIn implements Plugin { // 有效期至, string (10) , YYYY-MM-DD , 必填 // 三级分类, string(50) // 是否有效, Y/N (默认为Y) - String tqq9_startdate = sdf.format(dataEntity.getDate("tqq9_startdate"));//有效期至 + String yxqs = ""; + Date tqq9_startdate = dataEntity.getDate("tqq9_startdate"); + if (tqq9_startdate !=null){ + yxqs = sdf.format(dataEntity.getDate("tqq9_startdate"));//有效期至 + } + String yxqz = ""; String tqq9_enddate = sdf.format(dataEntity.getDate("tqq9_enddate"));//有效期至 + if (tqq9_enddate != null) { + yxqs = sdf.format(dataEntity.getDate("tqq9_enddate"));//有效期至 + } String cRemark = dataEntity.getString("tqq9_remark");//备注 String modifytime = sdf.format(dataEntity.getDate("modifytime"));//修改时间 String IsImportation = dataEntity.getString("tqq9_type").equals("A") ? "Y" : "N";//是否进口 @@ -95,8 +103,8 @@ public class wmsZczPostApi extends AbstractBillPlugIn implements Plugin { request.put("actionType", "update"); request.put("regNo", number); request.put("imported", IsImportation); - request.put("productDate", tqq9_startdate); - request.put("expireDate", tqq9_enddate); + request.put("productDate", yxqs); + request.put("expireDate", yxqz); //request.put("threeLevelClass", "【三类】口腔科器械(17)"); request.put("status", "Y"); request.put("updateTime", modifytime);