瀏覽代碼

Merge branch 'develop' of http://47.108.150.237:10000/allen/gphm into develop-rmd

Rmengdi 1 年之前
父節點
當前提交
2b9fdb7605

+ 25 - 0
PHM-admin/phm-common/src/main/java/com/phm/common/core/domain/BaseEntity.java

@@ -8,6 +8,9 @@ import java.util.Map;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.phm.common.core.domain.model.LoginUser;
+import com.phm.common.utils.DateUtils;
+import com.phm.common.utils.SecurityUtils;
 
 /**
  * Entity基类
@@ -127,4 +130,26 @@ public class BaseEntity implements Serializable {
     public void setParams(Map<String, Object> params) {
         this.params = params;
     }
+
+    /**
+     * 新增数据SET创建和更新信息
+     */
+    public void initCreatInfo() {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        Date nowDate = DateUtils.getNowDate();
+        this.createBy = loginUser.getUsername();
+        this.createTime =nowDate;
+        this.updateBy = loginUser.getUsername();
+        this.updateTime =nowDate;
+    }
+
+    /**
+     * 更新数据时,SET更新信息
+     */
+    public void initUpdateInfo() {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        Date nowDate = DateUtils.getNowDate();
+        this.updateBy = loginUser.getUsername();
+        this.updateTime =nowDate;
+    }
 }

+ 104 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/controller/DataDownResultController.java

@@ -0,0 +1,104 @@
+package com.phm.manage.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.phm.common.annotation.Log;
+import com.phm.common.core.controller.BaseController;
+import com.phm.common.core.domain.AjaxResult;
+import com.phm.common.enums.BusinessType;
+import com.phm.manage.domain.DataDownResult;
+import com.phm.manage.service.IDataDownResultService;
+import com.phm.common.utils.poi.ExcelUtil;
+import com.phm.common.core.page.TableDataInfo;
+
+/**
+ * 数据下载Controller
+ * 
+ * @author phm
+ * @date 2023-08-24
+ */
+@RestController
+@RequestMapping("/manage/dataDown")
+public class DataDownResultController extends BaseController
+{
+    @Autowired
+    private IDataDownResultService dataDownResultService;
+
+    /**
+     * 查询数据下载列表
+     */
+    @PreAuthorize("@ss.hasPermi('manage:dataDown:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DataDownResult dataDownResult)
+    {
+        startPage();
+        List<DataDownResult> list = dataDownResultService.selectDataDownResultList(dataDownResult);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出数据下载列表
+     */
+    @PreAuthorize("@ss.hasPermi('manage:dataDown:export')")
+    @Log(title = "数据下载", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DataDownResult dataDownResult)
+    {
+        List<DataDownResult> list = dataDownResultService.selectDataDownResultList(dataDownResult);
+        ExcelUtil<DataDownResult> util = new ExcelUtil<DataDownResult>(DataDownResult.class);
+        util.exportExcel(response, list, "数据下载数据");
+    }
+
+    /**
+     * 获取数据下载详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('manage:dataDown:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(dataDownResultService.selectDataDownResultById(id));
+    }
+
+    /**
+     * 新增数据下载
+     */
+    @PreAuthorize("@ss.hasPermi('manage:dataDown:add')")
+    @Log(title = "数据下载", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DataDownResult dataDownResult)
+    {
+        return toAjax(dataDownResultService.insertDataDownResult(dataDownResult));
+    }
+
+    /**
+     * 修改数据下载
+     */
+    @PreAuthorize("@ss.hasPermi('manage:dataDown:edit')")
+    @Log(title = "数据下载", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody DataDownResult dataDownResult)
+    {
+        return toAjax(dataDownResultService.updateDataDownResult(dataDownResult));
+    }
+
+    /**
+     * 删除数据下载
+     */
+    @PreAuthorize("@ss.hasPermi('manage:dataDown:remove')")
+    @Log(title = "数据下载", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(dataDownResultService.deleteDataDownResultByIds(ids));
+    }
+}

+ 16 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/controller/SortieController.java

@@ -3,6 +3,7 @@ package com.phm.manage.controller;
 import com.phm.common.annotation.Log;
 import com.phm.common.core.controller.BaseController;
 import com.phm.common.core.domain.AjaxResult;
+import com.phm.common.core.domain.entity.SysUser;
 import com.phm.common.core.page.TableDataInfo;
 import com.phm.common.enums.BusinessType;
 import com.phm.common.utils.poi.ExcelUtil;
@@ -11,6 +12,7 @@ import com.phm.manage.service.ISortieService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -49,6 +51,20 @@ public class SortieController extends BaseController {
         ExcelUtil<Sortie> util = new ExcelUtil<Sortie>(Sortie.class);
         util.exportExcel(response, list, "架次信息数据");
     }
+    @Log(title = "架次信息", businessType = BusinessType.IMPORT)
+//    @PreAuthorize("@ss.hasPermi('manage:sortie:import')")
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
+        ExcelUtil<Sortie> util = new ExcelUtil<Sortie>(Sortie.class);
+        List<Sortie> sortieList = util.importExcel(file.getInputStream());
+        return success("导入成功");
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil<Sortie> util = new ExcelUtil<Sortie>(Sortie.class);
+        util.importTemplateExcel(response, "架次数据");
+    }
 
     /**
      * 获取架次信息详细信息

+ 97 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/domain/DataDownResult.java

@@ -0,0 +1,97 @@
+package com.phm.manage.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.phm.common.annotation.Excel;
+import com.phm.common.core.domain.BaseEntity;
+
+/**
+ * 数据下载对象 phm_data_down_result
+ * 
+ * @author phm
+ * @date 2023-08-24
+ */
+public class DataDownResult extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一ID */
+    private Long id;
+
+    /** 指令 */
+    @Excel(name = "指令")
+    private String order;
+
+    /** 下载的数据名称 */
+    @Excel(name = "下载的数据名称")
+    private String name;
+
+    /** 保存路径 */
+    @Excel(name = "保存路径")
+    private String path;
+
+    /** 数据是否删除(1:删除,0有效) */
+    private Long isDelete;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setOrder(String order) 
+    {
+        this.order = order;
+    }
+
+    public String getOrder() 
+    {
+        return order;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setPath(String path) 
+    {
+        this.path = path;
+    }
+
+    public String getPath() 
+    {
+        return path;
+    }
+    public void setIsDelete(Long isDelete) 
+    {
+        this.isDelete = isDelete;
+    }
+
+    public Long getIsDelete() 
+    {
+        return isDelete;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("order", getOrder())
+            .append("name", getName())
+            .append("path", getPath())
+            .append("remark", getRemark())
+            .append("isDelete", getIsDelete())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 13 - 83
PHM-admin/phm-manage/src/main/java/com/phm/manage/domain/Sortie.java

@@ -12,7 +12,7 @@ import java.util.Date;
  * 架次信息对象 phm_sortie
  *
  * @author phm
- * @date 2023-08-22
+ * @date 2023-08-25
  */
 public class Sortie extends BaseEntity {
     private static final long serialVersionUID = 1L;
@@ -38,13 +38,15 @@ public class Sortie extends BaseEntity {
      * 开始时间
      */
     @Excel(name = "开始时间")
-    private String startTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
 
     /**
      * 结束时间
      */
     @Excel(name = "结束时间")
-    private String endTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
 
     /**
      * 飞行时长
@@ -52,38 +54,6 @@ public class Sortie extends BaseEntity {
     @Excel(name = "飞行时长")
     private String duration;
 
-    /**
-     * 数据是否删除(1:删除,0有效)
-     */
-    @Excel(name = "数据是否删除", readConverterExp = "1=:删除,0有效")
-    private Long isDelete;
-
-    /**
-     * 创建人
-     */
-    @Excel(name = "创建人")
-    private String createdBy;
-
-    /**
-     * 创建时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date createdTime;
-
-    /**
-     * 更新人
-     */
-    @Excel(name = "更新人")
-    private String updatedBy;
-
-    /**
-     * 更新时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
-    private Date updatedTime;
-
     public void setId(Long id) {
         this.id = id;
     }
@@ -108,19 +78,19 @@ public class Sortie extends BaseEntity {
         return sortieNumber;
     }
 
-    public void setStartTime(String startTime) {
+    public void setStartTime(Date startTime) {
         this.startTime = startTime;
     }
 
-    public String getStartTime() {
+    public Date getStartTime() {
         return startTime;
     }
 
-    public void setEndTime(String endTime) {
+    public void setEndTime(Date endTime) {
         this.endTime = endTime;
     }
 
-    public String getEndTime() {
+    public Date getEndTime() {
         return endTime;
     }
 
@@ -132,46 +102,6 @@ public class Sortie extends BaseEntity {
         return duration;
     }
 
-    public void setIsDelete(Long isDelete) {
-        this.isDelete = isDelete;
-    }
-
-    public Long getIsDelete() {
-        return isDelete;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedTime(Date createdTime) {
-        this.createdTime = createdTime;
-    }
-
-    public Date getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setUpdatedBy(String updatedBy) {
-        this.updatedBy = updatedBy;
-    }
-
-    public String getUpdatedBy() {
-        return updatedBy;
-    }
-
-    public void setUpdatedTime(Date updatedTime) {
-        this.updatedTime = updatedTime;
-    }
-
-    public Date getUpdatedTime() {
-        return updatedTime;
-    }
-
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
@@ -182,10 +112,10 @@ public class Sortie extends BaseEntity {
                 .append("endTime", getEndTime())
                 .append("duration", getDuration())
                 .append("isDelete", getIsDelete())
-                .append("createdBy", getCreatedBy())
-                .append("createdTime", getCreatedTime())
-                .append("updatedBy", getUpdatedBy())
-                .append("updatedTime", getUpdatedTime())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
                 .toString();
     }
 }

+ 61 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/mapper/DataDownResultMapper.java

@@ -0,0 +1,61 @@
+package com.phm.manage.mapper;
+
+import java.util.List;
+import com.phm.manage.domain.DataDownResult;
+
+/**
+ * 数据下载Mapper接口
+ * 
+ * @author phm
+ * @date 2023-08-24
+ */
+public interface DataDownResultMapper 
+{
+    /**
+     * 查询数据下载
+     * 
+     * @param id 数据下载主键
+     * @return 数据下载
+     */
+    public DataDownResult selectDataDownResultById(Long id);
+
+    /**
+     * 查询数据下载列表
+     * 
+     * @param dataDownResult 数据下载
+     * @return 数据下载集合
+     */
+    public List<DataDownResult> selectDataDownResultList(DataDownResult dataDownResult);
+
+    /**
+     * 新增数据下载
+     * 
+     * @param dataDownResult 数据下载
+     * @return 结果
+     */
+    public int insertDataDownResult(DataDownResult dataDownResult);
+
+    /**
+     * 修改数据下载
+     * 
+     * @param dataDownResult 数据下载
+     * @return 结果
+     */
+    public int updateDataDownResult(DataDownResult dataDownResult);
+
+    /**
+     * 删除数据下载
+     * 
+     * @param id 数据下载主键
+     * @return 结果
+     */
+    public int deleteDataDownResultById(Long id);
+
+    /**
+     * 批量删除数据下载
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDataDownResultByIds(Long[] ids);
+}

+ 61 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/IDataDownResultService.java

@@ -0,0 +1,61 @@
+package com.phm.manage.service;
+
+import java.util.List;
+import com.phm.manage.domain.DataDownResult;
+
+/**
+ * 数据下载Service接口
+ * 
+ * @author phm
+ * @date 2023-08-24
+ */
+public interface IDataDownResultService 
+{
+    /**
+     * 查询数据下载
+     * 
+     * @param id 数据下载主键
+     * @return 数据下载
+     */
+    public DataDownResult selectDataDownResultById(Long id);
+
+    /**
+     * 查询数据下载列表
+     * 
+     * @param dataDownResult 数据下载
+     * @return 数据下载集合
+     */
+    public List<DataDownResult> selectDataDownResultList(DataDownResult dataDownResult);
+
+    /**
+     * 新增数据下载
+     * 
+     * @param dataDownResult 数据下载
+     * @return 结果
+     */
+    public int insertDataDownResult(DataDownResult dataDownResult);
+
+    /**
+     * 修改数据下载
+     * 
+     * @param dataDownResult 数据下载
+     * @return 结果
+     */
+    public int updateDataDownResult(DataDownResult dataDownResult);
+
+    /**
+     * 批量删除数据下载
+     * 
+     * @param ids 需要删除的数据下载主键集合
+     * @return 结果
+     */
+    public int deleteDataDownResultByIds(Long[] ids);
+
+    /**
+     * 删除数据下载信息
+     * 
+     * @param id 数据下载主键
+     * @return 结果
+     */
+    public int deleteDataDownResultById(Long id);
+}

+ 96 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/impl/DataDownResultServiceImpl.java

@@ -0,0 +1,96 @@
+package com.phm.manage.service.impl;
+
+import java.util.List;
+import com.phm.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.phm.manage.mapper.DataDownResultMapper;
+import com.phm.manage.domain.DataDownResult;
+import com.phm.manage.service.IDataDownResultService;
+
+/**
+ * 数据下载Service业务层处理
+ * 
+ * @author phm
+ * @date 2023-08-24
+ */
+@Service
+public class DataDownResultServiceImpl implements IDataDownResultService 
+{
+    @Autowired
+    private DataDownResultMapper dataDownResultMapper;
+
+    /**
+     * 查询数据下载
+     * 
+     * @param id 数据下载主键
+     * @return 数据下载
+     */
+    @Override
+    public DataDownResult selectDataDownResultById(Long id)
+    {
+        return dataDownResultMapper.selectDataDownResultById(id);
+    }
+
+    /**
+     * 查询数据下载列表
+     * 
+     * @param dataDownResult 数据下载
+     * @return 数据下载
+     */
+    @Override
+    public List<DataDownResult> selectDataDownResultList(DataDownResult dataDownResult)
+    {
+        return dataDownResultMapper.selectDataDownResultList(dataDownResult);
+    }
+
+    /**
+     * 新增数据下载
+     * 
+     * @param dataDownResult 数据下载
+     * @return 结果
+     */
+    @Override
+    public int insertDataDownResult(DataDownResult dataDownResult)
+    {
+        dataDownResult.setCreateTime(DateUtils.getNowDate());
+        return dataDownResultMapper.insertDataDownResult(dataDownResult);
+    }
+
+    /**
+     * 修改数据下载
+     * 
+     * @param dataDownResult 数据下载
+     * @return 结果
+     */
+    @Override
+    public int updateDataDownResult(DataDownResult dataDownResult)
+    {
+        dataDownResult.setUpdateTime(DateUtils.getNowDate());
+        return dataDownResultMapper.updateDataDownResult(dataDownResult);
+    }
+
+    /**
+     * 批量删除数据下载
+     * 
+     * @param ids 需要删除的数据下载主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataDownResultByIds(Long[] ids)
+    {
+        return dataDownResultMapper.deleteDataDownResultByIds(ids);
+    }
+
+    /**
+     * 删除数据下载信息
+     * 
+     * @param id 数据下载主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataDownResultById(Long id)
+    {
+        return dataDownResultMapper.deleteDataDownResultById(id);
+    }
+}

+ 2 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/impl/SortieServiceImpl.java

@@ -49,6 +49,7 @@ public class SortieServiceImpl implements ISortieService {
      */
     @Override
     public int insertSortie(Sortie sortie) {
+        sortie.initCreatInfo();
         return sortieMapper.insertSortie(sortie);
     }
 
@@ -60,6 +61,7 @@ public class SortieServiceImpl implements ISortieService {
      */
     @Override
     public int updateSortie(Sortie sortie) {
+        sortie.initUpdateInfo();
         return sortieMapper.updateSortie(sortie);
     }
 

+ 2 - 0
PHM-admin/phm-manage/src/main/resources/mapper/manage/AfterAnalysisResultMapper.xml

@@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <resultMap type="AfterAnalysisResult" id="AfterAnalysisResultResult">
         <result property="id"    column="id"    />
+        <result property="remark"    column="remark"    />
         <result property="isDelete"    column="is_delete"    />
         <result property="createdBy"    column="created_by"    />
         <result property="createdTime"    column="created_time"    />
@@ -20,6 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectAfterAnalysisResultList" parameterType="AfterAnalysisResult" resultMap="AfterAnalysisResultResult">
         <include refid="selectAfterAnalysisResultVo"/>
         <where>  
+            <if test="remark != null "> and remark = #{remark}</if>
             <if test="isDelete != null "> and is_delete = #{isDelete}</if>
             <if test="createdBy != null  and createdBy != ''"> and created_by = #{createdBy}</if>
             <if test="createdTime != null "> and created_time = #{createdTime}</if>

+ 95 - 0
PHM-admin/phm-manage/src/main/resources/mapper/manage/DataDownResultMapper.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.phm.manage.mapper.DataDownResultMapper">
+    
+    <resultMap type="DataDownResult" id="DataDownResultResult">
+        <result property="id"    column="id"    />
+        <result property="order"    column="order"    />
+        <result property="name"    column="name"    />
+        <result property="path"    column="path"    />
+        <result property="remark"    column="remark"    />
+        <result property="isDelete"    column="is_delete"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectDataDownResultVo">
+        select id, order, name, path, remark, is_delete, create_by, create_time, update_by, update_time from phm_data_down_result
+    </sql>
+
+    <select id="selectDataDownResultList" parameterType="DataDownResult" resultMap="DataDownResultResult">
+        <include refid="selectDataDownResultVo"/>
+        <where>  
+            <if test="order != null  and order != ''"> and order = #{order}</if>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="path != null  and path != ''"> and path = #{path}</if>
+            <if test="remark != null  and remark != ''"> and remark = #{remark}</if>
+            <if test="createBy != null  and createBy != ''"> and create_by = #{createBy}</if>
+            <if test="createTime != null "> and create_time = #{createTime}</if>
+            <if test="updateBy != null  and updateBy != ''"> and update_by = #{updateBy}</if>
+            <if test="updateTime != null "> and update_time = #{updateTime}</if>
+        </where>
+    </select>
+    
+    <select id="selectDataDownResultById" parameterType="Long" resultMap="DataDownResultResult">
+        <include refid="selectDataDownResultVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertDataDownResult" parameterType="DataDownResult" useGeneratedKeys="true" keyProperty="id">
+        insert into phm_data_down_result
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="order != null">order,</if>
+            <if test="name != null">name,</if>
+            <if test="path != null">path,</if>
+            <if test="remark != null">remark,</if>
+            <if test="isDelete != null">is_delete,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="order != null">#{order},</if>
+            <if test="name != null">#{name},</if>
+            <if test="path != null">#{path},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="isDelete != null">#{isDelete},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDataDownResult" parameterType="DataDownResult">
+        update phm_data_down_result
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="order != null">order = #{order},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="path != null">path = #{path},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="isDelete != null">is_delete = #{isDelete},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteDataDownResultById" parameterType="Long">
+        delete from phm_data_down_result where id = #{id}
+    </delete>
+
+    <delete id="deleteDataDownResultByIds" parameterType="String">
+        delete from phm_data_down_result where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 9 - 14
PHM-admin/phm-manage/src/main/resources/mapper/manage/SortieMapper.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.phm.manage.mapper.SortieMapper">
-    
+
     <resultMap type="Sortie" id="SortieResult">
         <result property="id"    column="id"    />
         <result property="aircraftNumber"    column="aircraft_number"    />
@@ -24,25 +24,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectSortieList" parameterType="Sortie" resultMap="SortieResult">
         <include refid="selectSortieVo"/>
-        <where>  
+        <where>
             <if test="aircraftNumber != null  and aircraftNumber != ''"> and aircraft_number = #{aircraftNumber}</if>
             <if test="sortieNumber != null  and sortieNumber != ''"> and sortie_number = #{sortieNumber}</if>
             <if test="startTime != null  and startTime != ''"> and start_time = #{startTime}</if>
             <if test="endTime != null  and endTime != ''"> and end_time = #{endTime}</if>
             <if test="duration != null  and duration != ''"> and duration = #{duration}</if>
-            <if test="isDelete != null "> and is_delete = #{isDelete}</if>
-            <if test="createBy != null  and createBy != ''"> and create_by = #{createBy}</if>
-            <if test="createTime != null "> and create_time = #{createTime}</if>
-            <if test="updateBy != null  and updateBy != ''"> and update_by = #{updateBy}</if>
-            <if test="updateTime != null "> and update_time = #{updateTime}</if>
         </where>
     </select>
-    
+
     <select id="selectSortieById" parameterType="Long" resultMap="SortieResult">
         <include refid="selectSortieVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertSortie" parameterType="Sortie" useGeneratedKeys="true" keyProperty="id">
         insert into phm_sortie
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -56,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="aircraftNumber != null">#{aircraftNumber},</if>
             <if test="sortieNumber != null">#{sortieNumber},</if>
@@ -68,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateSortie" parameterType="Sortie">
@@ -93,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteSortieByIds" parameterType="String">
-        delete from phm_sortie where id in 
+        delete from phm_sortie where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 44 - 0
PHM-web/src/api/manage/dataDown.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询数据下载列表
+export function listDataDown(query) {
+  return request({
+    url: '/manage/dataDown/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询数据下载详细
+export function getDataDown(id) {
+  return request({
+    url: '/manage/dataDown/' + id,
+    method: 'get'
+  })
+}
+
+// 新增数据下载
+export function addDataDown(data) {
+  return request({
+    url: '/manage/dataDown',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改数据下载
+export function updateDataDown(data) {
+  return request({
+    url: '/manage/dataDown',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除数据下载
+export function delDataDown(id) {
+  return request({
+    url: '/manage/dataDown/' + id,
+    method: 'delete'
+  })
+}

+ 89 - 71
PHM-web/src/views/manage/analyzeResult/index.vue

@@ -1,7 +1,14 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      
+      <el-form-item label="名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -12,34 +19,10 @@
       <el-col :span="1.5">
         <el-button
           type="primary"
-          plain
-          icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
           v-hasPermi="['manage:analyzeResult:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['manage:analyzeResult:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['manage:analyzeResult:remove']"
-        >删除</el-button>
+        >选择解析文件</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -56,25 +39,10 @@
 
     <el-table v-loading="loading" :data="analyzeResultList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="唯一ID" align="center" prop="id" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['manage:afterAnalysisResult:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:afterAnalysisResult:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
+      <el-table-column label="源数据文件名称" align="center" prop="sourceName" />
+      <el-table-column label="解析后文件名称" align="center" prop="name" />
+      <el-table-column label="备注" align="center" prop="remark"/>
+      <el-table-column label="解析后结果列表" align="center" />
     </el-table>
     
     <pagination
@@ -88,10 +56,22 @@
     <!-- 添加或修改数据解析结果对话框 -->
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        
+        <el-form-item label="文件名" prop="name">
+          <el-select v-model="form.name" placeholder="请选择要解析的数据" style="width:100%">
+            <el-option
+              v-for="item in sourceDataList"
+              :key="item.name"
+              :label="item.name"
+              :value="item.name">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button type="primary" @click="submitForm" :loading="butLoading">{{butText}}</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
@@ -100,11 +80,19 @@
 
 <script>
 import { listAnalyzeResult, getAnalyzeResult, delAnalyzeResult, addAnalyzeResult, updateAnalyzeResult } from "@/api/manage/analyzeResult";
-
+import {
+  listDataDown
+} from "@/api/manage/dataDown";
 export default {
   name: "AnalyzeResult",
   data() {
     return {
+      // 按钮加载
+      butLoading: false,
+      // 按钮显示文本
+      butText: "开始解析",
+      // 源数据文件列表
+      sourceDataList: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -141,16 +129,26 @@ export default {
   },
   created() {
     this.getList();
+    this.getSourceDataList();
   },
   methods: {
+    getSourceDataList() {
+      // listDataDown(this.queryParams).then(response => {
+      //   this.sourceDataList = response.rows;
+      // });
+      this.sourceDataList = JSON.parse(localStorage.getItem("data-down")) || [];
+    },
     /** 查询数据解析结果列表 */
     getList() {
       this.loading = true;
-      listAnalyzeResult(this.queryParams).then(response => {
-        this.analyzeResultList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
+      // listAnalyzeResult(this.queryParams).then(response => {
+      //   this.analyzeResultList = response.rows;
+      //   this.total = response.total;
+      //   this.loading = false;
+      // });
+      this.analyzeResultList = JSON.parse(localStorage.getItem("data-analyze")) || [];
+      this.total = this.dataDownList?.length || 0;
+      this.loading = false;
     },
     // 取消按钮
     cancel() {
@@ -160,7 +158,8 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        id: null,
+        name: null,
+        remark: null
          
       };
       this.resetForm("form");
@@ -199,23 +198,42 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateAnalyzeResult(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addAnalyzeResult(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
+      this.butLoading = true;
+      this.butText = "解析中...";
+      setTimeout(() => {
+        // 服务获取文件
+        let dataObj = {
+          name: `解析后固定格式_${new Date().getTime()}.xlsx`,
+          sourceName: this.form.name,
+          remark: this.form.remark,
+        };
+        let data = JSON.parse(localStorage.getItem("data-analyze")) || [];
+        data.push(dataObj);
+        localStorage.setItem("data-analyze", JSON.stringify(data));
+        this.getList();
+        // 保存指定路径
+        this.butLoading = false;
+        this.butText = "开始解析";
+        this.$modal.msgSuccess("解析成功");
+        this.open = false;
+      }, 1000);
+      // this.$refs["form"].validate(valid => {
+      //   if (valid) {
+      //     if (this.form.id != null) {
+      //       updateAnalyzeResult(this.form).then(response => {
+      //         this.$modal.msgSuccess("修改成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     } else {
+      //       addAnalyzeResult(this.form).then(response => {
+      //         this.$modal.msgSuccess("新增成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     }
+      //   }
+      // });
     },
     /** 删除按钮操作 */
     handleDelete(row) {

+ 264 - 0
PHM-web/src/views/manage/dataDown/index.vue

@@ -0,0 +1,264 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <!-- <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item> -->
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button type="primary" size="mini" @click="handleAdd" v-hasPermi="['manage:dataDown:add']">数据下载</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="dataDownList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="指令" align="center" prop="order" />
+      <el-table-column label="下载的数据名称" align="center" prop="name" />
+      <el-table-column label="保存路径" align="center" prop="path" />
+      <el-table-column label="备注" align="center" prop="remark" />
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+
+    <!-- 添加或修改数据下载对话框 -->
+    <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="指令" prop="order">
+          <el-select v-model="form.order" placeholder="请选择指令" style="width:100%">
+            <el-option
+              v-for="item in instructionInfoList"
+              :key="item.attribute"
+              :label="item.attribute"
+              :value="item.attribute">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" :loading="butLoading">{{
+          butText
+        }}</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listDataDown,
+  getDataDown,
+  delDataDown,
+  addDataDown,
+  updateDataDown,
+} from "@/api/manage/dataDown";
+import { listInstructionInfo } from "@/api/manage/instructionInfo";
+
+export default {
+  name: "DataDown",
+  data() {
+    return {
+      index: 1,
+      // 遮罩层
+      loading: true,
+      // 按钮加载
+      butLoading: false,
+      // 按钮显示文本
+      butText: "点击下载",
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 数据下载表格数据
+      dataDownList: [],
+      // 弹出层标题
+      title: "",
+      // 指令西信息
+      instructionInfoList: [],
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        order: null,
+        name: null,
+        path: null,
+        remark: null,
+        type: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+      },
+      // 表单参数
+      form: {
+        type: ".xlsx",
+        path: "/phm/uploadPath",
+      },
+      // 表单校验
+      rules: {},
+    };
+  },
+  created() {
+    this.getList();
+    this.getListInstructionInfo();
+  },
+  methods: {
+    // 获取指令
+    getListInstructionInfo() {
+      let queryParams = {
+        pageNum: 1,
+        pageSize: 1000,
+        attribute: null,
+        content: null,
+      }
+      listInstructionInfo(queryParams).then(response => {
+        this.instructionInfoList = response.rows;
+      });
+    },
+    /** 查询数据下载列表 */
+    getList() {
+      this.loading = true;
+      // listDataDown(this.queryParams).then(response => {
+      //   this.dataDownList = response.rows;
+      //   this.total = response.total;
+      //   this.loading = false;
+      // });
+      this.dataDownList = JSON.parse(localStorage.getItem("data-down")) || [];
+      this.total = this.dataDownList?.length || 0;
+      this.loading = false;
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        order: null,
+        remark: null
+      }
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "下载指令信息确定";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getDataDown(id).then((response) => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改数据下载";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.butLoading = true;
+      this.butText = "下载中";
+      setTimeout(() => {
+        // 方法区
+        if (this.form.order === "error") {
+          this.$modal.msgError("下载异常");
+          this.butLoading = false;
+          this.butText = "点击下载";
+          return;
+        }
+        // 服务获取文件
+        let dataObj = {
+          order: this.form.order,
+          name: `固定格式_${new Date().getTime()}.xlsx`,
+          path: "/phm/uploadPath",
+          remark: this.form.remark,
+        };
+        let data = JSON.parse(localStorage.getItem("data-down")) || [];
+        data.push(dataObj);
+        localStorage.setItem("data-down", JSON.stringify(data));
+        this.getList();
+        // 保存指定路径
+        this.butLoading = false;
+        this.butText = "点击下载";
+        this.$modal.msgSuccess("下载成功");
+        this.open = false;
+      }, 1000);
+      // this.$refs["form"].validate(valid => {
+      //   if (valid) {
+      //     if (this.form.id != null) {
+      //       updateDataDown(this.form).then(response => {
+      //         this.$modal.msgSuccess("修改成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     } else {
+      //       addDataDown(this.form).then(response => {
+      //         this.$modal.msgSuccess("新增成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     }
+      //   }
+      // });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm('是否确认删除数据下载编号为"' + ids + '"的数据项?')
+        .then(function () {
+          return delDataDown(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => { });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "manage/dataDown/export",
+        {
+          ...this.queryParams,
+        },
+        `dataDown_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 154 - 74
PHM-web/src/views/manage/preHandleResult/index.vue

@@ -1,7 +1,14 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-       
+      <el-form-item label="名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -12,34 +19,19 @@
       <el-col :span="1.5">
         <el-button
           type="primary"
-          plain
-          icon="el-icon-plus"
           size="mini"
           @click="handleAdd"
           v-hasPermi="['manage:preHandleResult:add']"
-        >新增</el-button>
+        >选择预处理数据</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
           type="success"
-          plain
-          icon="el-icon-edit"
           size="mini"
           :disabled="single"
           @click="handleUpdate"
-          v-hasPermi="['manage:preHandleResult:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['manage:preHandleResult:remove']"
-        >删除</el-button>
+          v-hasPermi="['manage:performanceMonitorModel:edit']"
+        >处理数据</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -56,26 +48,11 @@
 
     <el-table v-loading="loading" :data="preHandleResultList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="唯一ID" align="center" prop="id" />
-       
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['manage:preHandleResult:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['manage:preHandleResult:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
+      <el-table-column label="源数据文件名称" align="center" prop="sourceName" />
+      <el-table-column label="处理后文件名称" align="center" prop="name" />
+      <el-table-column label="处理方式" align="center" prop="type" />
+      <el-table-column label="备注" align="center" prop="remark"/>
+      <el-table-column label="处理后结果列表" align="center" />
     </el-table>
     
     <pagination
@@ -89,23 +66,81 @@
     <!-- 添加或修改数据预处理结果对话框 -->
     <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-          
+        <el-form-item label="文件名" prop="name">
+          <el-select v-model="form.name" placeholder="请选择要处理的数据" style="width:100%">
+            <el-option
+              v-for="item in sourceDataList"
+              :key="item.name"
+              :label="item.name"
+              :value="item.name">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="预处理模式" prop="name">
+          <el-select v-model="form.type" placeholder="请选择要执行的模式" style="width:100%">
+            <el-option
+              v-for="item in handleList"
+              :key="item.name"
+              :label="item.name"
+              :value="item.name">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button type="primary" @click="submitForm" :loading="butLoading">{{butText}}</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 手动处理数据的弹框 -->
+    <el-dialog :title="title" :visible.sync="handOpen" :close-on-click-modal="false" :fullscreen="true" append-to-body>
+      <el-input
+        type="textarea"
+        :rows="12"
+        placeholder="请输入内容"
+        v-model="textarea">
+      </el-input>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="handOpen = !handOpen">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listPreHandleResult, getPreHandleResult, delPreHandleResult, addPreHandleResult, updatePreHandleResult } from "@/api/manage/preHandleResult";
+import { listAnalyzeResult } from "@/api/manage/analyzeResult";
 
 export default {
   name: "PreHandleResult",
   data() {
     return {
+      // 按钮加载
+      butLoading: false,
+      // 按钮显示文本
+      butText: "开始分析",
+      // 需要预处理的源数据列表
+      sourceDataList:[],
+      // 当前选择的数据
+      currentSelection: [],
+      textarea: '0101010101010111010',
+      handleList: [
+        {name: '异常值剔除', value: 1},
+        {name: '确实值补全', value: 2}
+      ],
+      handleList2: [
+        {name: '手动处理', value: 1},
+        {name: '调用异常模型', value: 2}
+      ],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -124,6 +159,8 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      // 是否显示弹出层
+      handOpen: false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -142,16 +179,27 @@ export default {
   },
   created() {
     this.getList();
+    this.getSourceDataList();
   },
   methods: {
+    getSourceDataList() {
+      // listAnalyzeResult(this.queryParams).then(response => {
+      //   this.sourceDataList = response.rows;
+      // });
+      this.sourceDataList = JSON.parse(localStorage.getItem("data-analyze")) || [];
+    },
     /** 查询数据预处理结果列表 */
     getList() {
       this.loading = true;
-      listPreHandleResult(this.queryParams).then(response => {
-        this.preHandleResultList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
+      // listPreHandleResult(this.queryParams).then(response => {
+      //   this.preHandleResultList = response.rows;
+      //   this.total = response.total;
+      //   this.loading = false;
+      // });
+      this.preHandleResultList = JSON.parse(localStorage.getItem("pro-data-analyze")) || [];
+      console.log(this.preHandleResultLists);
+      this.total = this.preHandleResultList?.length || 0;
+      this.loading = false;
     },
     // 取消按钮
     cancel() {
@@ -161,8 +209,9 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        id: null,
-         
+        name: null,
+        type: null,
+        remark: null
       };
       this.resetForm("form");
     },
@@ -181,42 +230,73 @@ export default {
       this.ids = selection.map(item => item.id)
       this.single = selection.length!==1
       this.multiple = !selection.length
+      this.currentSelection = selection
     },
     /** 新增按钮操作 */
     handleAdd() {
+      this.handleList = this.handleList
       this.reset();
       this.open = true;
-      this.title = "添加数据处理结果";
+      this.title = "数据处理";
     },
     /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getPreHandleResult(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改数据预处理结果";
-      });
+    handleUpdate() {
+      console.log(this.currentSelection[0]);
+      this.form.name = this.currentSelection[0].sourceName;
+      this.form.remark = null;
+      this.form.type = null;
+      this.handleList = this.handleList2
+      // this.form = this.currentSelection[0] || {}
+      // getPreHandleResult(id).then(response => {
+      //   this.form = response.data;
+      this.open = true;
+      this.title = "处理数据";
+      // });
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updatePreHandleResult(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addPreHandleResult(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
+      if (this.form.type == '手动处理') {
+        this.handOpen = true
+        this.open = false;
+        return
+      }
+      this.butLoading = true;
+      this.butText = "分析中...";
+      setTimeout(() => {
+        // 服务获取文件
+        let dataObj = {
+          name: `处理后数据_${new Date().getTime()}.xlsx`,
+          sourceName: this.form.name,
+          type: this.form.type,
+          remark: this.form.remark,
+        };
+        let data = JSON.parse(localStorage.getItem("pro-data-analyze")) || [];
+        data.push(dataObj);
+        localStorage.setItem("pro-data-analyze", JSON.stringify(data));
+        this.getList();
+        // 保存指定路径
+        this.butLoading = false;
+        this.butText = "开始解析";
+        this.$modal.msgSuccess("解析成功");
+        this.open = false;
+      }, 1000);
+      // this.$refs["form"].validate(valid => {
+      //   if (valid) {
+      //     if (this.form.id != null) {
+      //       updatePreHandleResult(this.form).then(response => {
+      //         this.$modal.msgSuccess("修改成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     } else {
+      //       addPreHandleResult(this.form).then(response => {
+      //         this.$modal.msgSuccess("新增成功");
+      //         this.open = false;
+      //         this.getList();
+      //       });
+      //     }
+      //   }
+      // });
     },
     /** 删除按钮操作 */
     handleDelete(row) {

+ 142 - 21
PHM-web/src/views/manage/sortie/index.vue

@@ -20,27 +20,19 @@
       <el-form-item label="开始时间" prop="startTime">
         <el-date-picker clearable
           v-model="queryParams.startTime"
-          type="date"
-          value-format="yyyy-MM-dd"
+          type="datetime"
+          value-format="yyyy-MM-dd HH:mm:ss"
           placeholder="请选择开始时间">
         </el-date-picker>
       </el-form-item>
       <el-form-item label="结束时间" prop="endTime">
         <el-date-picker clearable
           v-model="queryParams.endTime"
-          type="date"
-          value-format="yyyy-MM-dd"
+          type="datetime"
+          value-format="yyyy-MM-dd HH:mm:ss"
           placeholder="请选择结束时间">
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="飞行时长" prop="duration">
-        <el-input
-          v-model="queryParams.duration"
-          placeholder="请输入飞行时长"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -90,17 +82,45 @@
           v-hasPermi="['manage:sortie:export']"
         >导出</el-button>
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['manage:sortie:export']"
+        >导入</el-button>
+      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="sortieList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="唯一ID" align="center" prop="id" />
       <el-table-column label="机号" align="center" prop="aircraftNumber" />
       <el-table-column label="架次号" align="center" prop="sortieNumber" />
-      <el-table-column label="开始时间" align="center" prop="startTime" />
-      <el-table-column label="结束时间" align="center" prop="endTime" />
+      <el-table-column label="开始时间" align="center" prop="startTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="结束时间" align="center" prop="endTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="飞行时长" align="center" prop="duration" />
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -139,10 +159,22 @@
           <el-input v-model="form.sortieNumber" placeholder="请输入架次号" />
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
-          <el-input v-model="form.startTime" placeholder="请输入开始时间" />
+          <el-date-picker clearable
+            v-model="form.startTime"
+            type="datetime"
+            style="width: 100%"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择开始时间">
+          </el-date-picker>
         </el-form-item>
         <el-form-item label="结束时间" prop="endTime">
-          <el-input v-model="form.endTime" placeholder="请输入结束时间" />
+          <el-date-picker clearable
+            v-model="form.endTime"
+            type="datetime"
+            style="width: 100%"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="请选择结束时间">
+          </el-date-picker>
         </el-form-item>
         <el-form-item label="飞行时长" prop="duration">
           <el-input v-model="form.duration" placeholder="请输入飞行时长" />
@@ -153,12 +185,41 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <div class="el-upload__tip" slot="tip">
+            <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的架次数据
+          </div>
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listSortie, getSortie, delSortie, addSortie, updateSortie } from "@/api/manage/sortie";
-
+import { getToken } from "@/utils/auth";
 export default {
   name: "Sortie",
   data() {
@@ -191,13 +252,23 @@ export default {
         endTime: null,
         duration: null,
       },
+      upload: {
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 是否更新已存在数据
+        updateSupport: 0,
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API  + "/manage/sortie/import"
+      },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-        isDelete: [
-          { required: true, message: "数据是否删除不能为空", trigger: "blur" }
-        ],
       }
     };
   },
@@ -228,9 +299,19 @@ export default {
         startTime: null,
         endTime: null,
         duration: null,
+        isDelete: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null
       };
       this.resetForm("form");
     },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download('/manage/sortie/importTemplate', {
+      }, `sortie_template_${new Date().getTime()}.xlsx`)
+    },
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageNum = 1;
@@ -253,6 +334,11 @@ export default {
       this.open = true;
       this.title = "添加架次信息";
     },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = '架次导入';
+      this.upload.open = true;
+    },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
@@ -263,6 +349,41 @@ export default {
         this.title = "修改架次信息";
       });
     },
+    submitFileForm() {
+      // this.$refs["uploadForm"].validate(valid => {
+      //   if (!valid) {
+      //     return;
+      //   }
+      //   this.$refs.upload.submit();
+      // })
+      this.$refs.upload.submit();
+    },
+    uploadClose() {
+      // 关闭弹窗
+      this.upload.open = false;
+      // 重置上传状态和文件
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      // 重置表单
+      this.upload.form = {};
+      // this.resetForm("uploadForm");
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      if (response.code !== 200) {
+        this.$modal.msgError(response.msg)
+        return;
+      }
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
+      this.getList();
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {