Эх сурвалжийг харах

指令配置 XML格式查看

wanggaokun 1 жил өмнө
parent
commit
74768cac25

+ 12 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/controller/OrderConfigController.java

@@ -1,5 +1,6 @@
 package com.phm.manage.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.phm.common.annotation.Log;
 import com.phm.common.core.controller.BaseController;
 import com.phm.common.core.domain.AjaxResult;
@@ -8,7 +9,9 @@ import com.phm.common.enums.BusinessType;
 import com.phm.common.utils.poi.ExcelUtil;
 import com.phm.manage.domain.OrderConfig;
 import com.phm.manage.domain.common.CommonResult;
+import com.phm.manage.domain.common.OrderXmlVO;
 import com.phm.manage.service.IOrderConfigService;
+import com.phm.manage.util.JaxbUtil;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -68,6 +71,15 @@ public class OrderConfigController extends BaseController {
         return success(orderConfigService.selectOrderConfigById(id));
     }
 
+    @PreAuthorize("@ss.hasPermi('manage:orderConfig:query')")
+    @GetMapping(value = "/xml/{id}")
+    public CommonResult<String> getInfoXml(@PathVariable("id") Long id) throws Exception {
+        OrderConfig orderConfig = orderConfigService.selectOrderConfigById(id);
+        OrderXmlVO xmlVO = new OrderXmlVO();
+        BeanUtil.copyProperties(orderConfig, xmlVO);
+        return CommonResult.success(JaxbUtil.convertToXml(xmlVO));
+    }
+
     /**
      * 新增指令配置
      */

+ 31 - 26
PHM-admin/phm-manage/src/main/java/com/phm/manage/domain/common/OrderXmlVO.java

@@ -1,50 +1,55 @@
 package com.phm.manage.domain.common;
 
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
-import lombok.Data;
+import com.phm.manage.util.JaxbUtil;
 import lombok.Getter;
+import lombok.Setter;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
+
+
 /**
  * @author wgk
  */
 @Getter
+@Setter
+@XmlAccessorType(XmlAccessType.FIELD)
 @XmlRootElement(name = "root")
 public class OrderXmlVO {
+    /**
+     * 指令编码
+     */
+    private String orderCode;
+
+    /**
+     * 指令名称
+     */
+    private String name;
     /**
      * 指令类型
      */
-    private String orderType;
+    private String type;
 
-    // 指令名称
-    private String orderName;
 
-    // 架次号
-    private String sortieNo;
+    /**
+     * 架次
+     */
+    private String sortie;
 
-    // 步长
+    /**
+     * 步长
+     */
     private String step;
 
-    @XmlElement(name = "orderType")
-    public void setOrderType(String orderType) {
-        this.orderType = orderType;
-    }
-
-    @XmlElement(name = "orderName")
-    public void setOrderName(String orderName) {
-        this.orderName = orderName;
-    }
-
-    @XmlElement(name = "sortieNo")
-    public void setSortieNo(String sortieNo) {
-        this.sortieNo = sortieNo;
-    }
+    /**
+     * 指令描述
+     */
+    private String description;
 
-    @XmlElement(name = "step")
-    public void setStep(String step) {
-        this.step = step;
+    public static void main(String[] args) throws Exception {
+        System.out.println(JaxbUtil.convertToXml(new OrderXmlVO()));
     }
 }

+ 1 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/impl/AircraftServiceImpl.java

@@ -54,6 +54,7 @@ public class AircraftServiceImpl implements IAircraftService {
     @Override
     public int insertAircraft(Aircraft aircraft) {
         aircraft.setId(snowFlakeIdGenerator.nextId());
+        aircraft.initCreatInfo();
         return aircraftMapper.insertAircraft(aircraft);
     }
 

+ 49 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/util/JaxbUtil.java

@@ -0,0 +1,49 @@
+package com.phm.manage.util;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import java.io.StringWriter;
+import java.lang.reflect.Field;
+
+/**
+ * @Description JaxbUtil
+ * @Author WGK
+ * @Date 2023/10/11 21:35
+ */
+public class JaxbUtil {
+    public static final String DEFAULT_ENCODING = "UTF-8";
+    private static final Marshaller.Listener MAR_LISTENER = new Marshaller.Listener() {
+        @Override
+        public void beforeMarshal(Object source) {
+            Field[] fields = source.getClass().getDeclaredFields();
+            for (Field f : fields) {
+                f.setAccessible(true);
+                try {
+                    // 对象为空且类型为String时候设置空值
+                    if (f.getType() == String.class && f.get(source) == null) {
+                        f.set(source, "");
+                    }
+                } catch (IllegalAccessException exception) {
+                    exception.printStackTrace();
+                }
+            }
+        }
+    };
+
+    public static String convertToXml(Object obj) throws Exception {
+        return convertToXml(obj, DEFAULT_ENCODING);
+    }
+
+    public static String convertToXml(Object obj, String encoding) throws Exception {
+        JAXBContext context = JAXBContext.newInstance(obj.getClass());
+        Marshaller marshaller = context.createMarshaller();
+        // 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+        marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
+        marshaller.setListener(MAR_LISTENER);
+        StringWriter writer = new StringWriter();
+        marshaller.marshal(obj, writer);
+        return writer.toString();
+    }
+
+}

+ 2 - 2
PHM-admin/phm-manage/src/main/java/com/phm/manage/util/XMLParserWithJAXB.java

@@ -27,8 +27,8 @@ public class XMLParserWithJAXB {
             xmlVO = (OrderXmlVO) unmarshaller.unmarshal(new StringReader(xmlString));
 
             // 现在您可以使用yourObject对象
-            System.out.println("Type: " + xmlVO.getOrderType());
-            System.out.println("Name: " + xmlVO.getOrderName());
+            System.out.println("Type: " + xmlVO.getType());
+            System.out.println("Name: " + xmlVO.getName());
         } catch (JAXBException exception) {
             log.error(exception.getMessage());
         }

+ 1 - 8
PHM-admin/phm-netty/src/main/java/com/phm/netty/server/handler/ByteArrayMessageHandler.java

@@ -145,7 +145,7 @@ public class ByteArrayMessageHandler extends SimpleChannelInboundHandler<byte[]>
             return true;
         }
         ChannelMap.getChannelMap().put(idStr, ctx.channel());
-        // 将客户端ID作为自定义属性加入到channel中,方便随时channel中获取用户ID
+        // 将客户端ID作为自定义属性加入到channel中,方便随时channel中获取ID
         AttributeKey<String> key = AttributeKey.valueOf("id");
         ctx.channel().attr(key).setIfAbsent(idStr);
         return true;
@@ -189,11 +189,4 @@ public class ByteArrayMessageHandler extends SimpleChannelInboundHandler<byte[]>
             ChannelMap.getChannelMap().remove(id);
         }
     }
-
-    public void channelWrite(Channel channel, Message message) throws Exception {
-        if (null == channel) {
-            throw new RuntimeException("客户端已离线");
-        }
-        channel.writeAndFlush(message);
-    }
 }