瀏覽代碼

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

Rmengdi 1 年之前
父節點
當前提交
db2a03d7fd

+ 2 - 1
PHM-admin/phm-manage/src/main/java/com/phm/manage/controller/SortieController.java

@@ -57,7 +57,8 @@ public class SortieController extends BaseController {
     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("导入成功");
+        String message = sortieService.importSortie(sortieList, updateSupport);
+        return success(message);
     }
 
     @PostMapping("/importTemplate")

+ 15 - 1
PHM-admin/phm-manage/src/main/java/com/phm/manage/domain/FaultCase.java

@@ -25,7 +25,13 @@ public class FaultCase extends BaseEntity {
     /**
      * 案例案例名称
      */
-    @Excel(name = "案例案例名称")
+    @Excel(name = "案例文件名称")
+    private String caseFileName;
+
+    /**
+     * 案例案例名称
+     */
+    @Excel(name = "案例名称")
     private String caseName;
 
     /**
@@ -98,6 +104,14 @@ public class FaultCase extends BaseEntity {
         return id;
     }
 
+    public String getCaseFileName() {
+        return caseFileName;
+    }
+
+    public void setCaseFileName(String caseFileName) {
+        this.caseFileName = caseFileName;
+    }
+
     public void setCaseName(String caseName) {
         this.caseName = caseName;
     }

+ 8 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/mapper/SortieMapper.java

@@ -19,6 +19,14 @@ public interface SortieMapper {
      */
     public Sortie selectSortieById(Long id);
 
+    /**
+     * 查询架次信息
+     *
+     * @param sortieNumber 架次号
+     * @return 架次信息
+     */
+    public Sortie selectSortieByNumber(String sortieNumber);
+
     /**
      * 查询架次信息列表
      *

+ 3 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/ISortieService.java

@@ -1,5 +1,6 @@
 package com.phm.manage.service;
 
+import com.phm.common.core.domain.entity.SysUser;
 import com.phm.manage.domain.Sortie;
 
 import java.util.List;
@@ -58,4 +59,6 @@ public interface ISortieService {
      * @return 结果
      */
     public int deleteSortieById(Long id);
+
+    public String importSortie(List<Sortie> sortieList, Boolean isUpdateSupport);
 }

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

@@ -1,11 +1,19 @@
 package com.phm.manage.service.impl;
 
+import com.phm.common.core.domain.entity.SysUser;
+import com.phm.common.exception.ServiceException;
+import com.phm.common.utils.SecurityUtils;
+import com.phm.common.utils.StringUtils;
+import com.phm.common.utils.bean.BeanValidators;
 import com.phm.manage.domain.Sortie;
 import com.phm.manage.mapper.SortieMapper;
 import com.phm.manage.service.ISortieService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.validation.Validator;
 import java.util.List;
 
 /**
@@ -16,9 +24,14 @@ import java.util.List;
  */
 @Service
 public class SortieServiceImpl implements ISortieService {
+    private static final Logger LOG = LoggerFactory.getLogger(SortieServiceImpl.class);
+
     @Autowired
     private SortieMapper sortieMapper;
 
+    @Autowired
+    protected Validator validator;
+
     /**
      * 查询架次信息
      *
@@ -86,4 +99,57 @@ public class SortieServiceImpl implements ISortieService {
     public int deleteSortieById(Long id) {
         return sortieMapper.deleteSortieById(id);
     }
+
+    /**
+     * 导入架次数据
+     *
+     * @param sortieList        架次数据列表
+     * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
+     * @return 结果
+     */
+    @Override
+    public String importSortie(List<Sortie> sortieList, Boolean isUpdateSupport) {
+        if (StringUtils.isNull(sortieList) || sortieList.isEmpty()) {
+            throw new ServiceException("导入架次数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        for (Sortie sortie : sortieList) {
+            try {
+                // 验证是否存在这个架次
+                Sortie sor = sortieMapper.selectSortieByNumber(sortie.getSortieNumber());
+                if (StringUtils.isNull(sor)) {
+                    BeanValidators.validateWithException(validator, sortie);
+                    sortie.initCreatInfo();
+                    sortieMapper.insertSortie(sortie);
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、架次号 ").append(sortie.getSortieNumber()).append(" 导入成功");
+                } else if (isUpdateSupport) {
+                    BeanValidators.validateWithException(validator, sortie);
+                    sortie.setId(sor.getId());
+                    sortie.initUpdateInfo();
+                    sortieMapper.updateSortie(sortie);
+                    successNum++;
+                    successMsg.append("<br/>").append(successNum).append("、架次号 ").append(sortie.getSortieNumber()).append(" 更新成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>").append(failureNum).append("、架次号 ").append(sortie.getSortieNumber()).append(" 已存在");
+                }
+            } catch (Exception e) {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、架次号 " + sortie.getSortieNumber() + " 导入失败:";
+                failureMsg.append(msg).append(e.getMessage());
+                LOG.error(msg, e);
+            }
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
 }

+ 5 - 1
PHM-admin/phm-manage/src/main/resources/mapper/manage/FaultCaseMapper.xml

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="FaultCase" id="FaultCaseResult">
         <result property="id"    column="id"    />
         <result property="caseName"    column="case_name"    />
+        <result property="caseFileName"    column="case_file_name"    />
         <result property="description"    column="description"    />
         <result property="caseNumber"    column="case_number"    />
         <result property="isDelete"    column="is_delete"    />
@@ -20,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectFaultCaseVo">
-        select id, case_name, description, case_number, is_delete, create_by, create_time, update_by, update_time, parameter, location, solution from phm_fault_case
+        select id, case_file_name, case_name, description, case_number, is_delete, create_by, create_time, update_by, update_time, parameter, location, solution from phm_fault_case
     </sql>
 
     <select id="selectFaultCaseList" parameterType="FaultCase" resultMap="FaultCaseResult">
@@ -48,6 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <insert id="insertFaultCase" parameterType="FaultCase" useGeneratedKeys="true" keyProperty="id">
         insert into phm_fault_case
         <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="caseFileName != null">case_file_name,</if>
             <if test="caseName != null">case_name,</if>
             <if test="description != null">description,</if>
             <if test="caseNumber != null">case_number,</if>
@@ -61,6 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="solution != null">solution,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="caseFileName != null">#{caseFileName},</if>
             <if test="caseName != null">#{caseName},</if>
             <if test="description != null">#{description},</if>
             <if test="caseNumber != null">#{caseNumber},</if>
@@ -79,6 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update phm_fault_case
         <trim prefix="SET" suffixOverrides=",">
             <if test="caseName != null">case_name = #{caseName},</if>
+            <if test="caseFileName != null">case_file_name = #{caseFileName},</if>
             <if test="description != null">description = #{description},</if>
             <if test="caseNumber != null">case_number = #{caseNumber},</if>
             <if test="isDelete != null">is_delete = #{isDelete},</if>

+ 5 - 0
PHM-admin/phm-manage/src/main/resources/mapper/manage/SortieMapper.xml

@@ -38,6 +38,11 @@
         where id = #{id}
     </select>
 
+    <select id="selectSortieByNumber" parameterType="String" resultMap="SortieResult">
+        <include refid="selectSortieVo"/>
+        where sortie_number = #{sortieNumber}
+    </select>
+
     <insert id="insertSortie" parameterType="Sortie" useGeneratedKeys="true" keyProperty="id">
         insert into phm_sortie
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 3 - 2
PHM-web/src/components/FileUpload/index.vue

@@ -60,7 +60,7 @@ export default {
     // 文件类型, 例如['png', 'jpg', 'jpeg']
     fileType: {
       type: Array,
-      default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+      default: () => ["doc", "xls", "ppt", "txt", "pdf", "xlsx"],
     },
     // 是否显示提示
     isShowTip: {
@@ -72,7 +72,7 @@ export default {
     return {
       number: 0,
       uploadList: [],
-      baseUrl: process.env.VUE_APP_BASE_API,
+      baseUrl: process.env.VUE_APP_BASE_API, // 文件下载地址
       uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传文件服务器地址
       headers: {
         Authorization: "Bearer " + getToken(),
@@ -84,6 +84,7 @@ export default {
     value: {
       handler(val) {
         if (val) {
+          debugger
           let temp = 1;
           // 首先将值转为数组
           const list = Array.isArray(val) ? val : this.value.split(',');

+ 25 - 4
PHM-web/src/views/manage/faultCase/index.vue

@@ -104,6 +104,11 @@
     <el-table v-loading="loading" :data="faultCaseList" @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">
+        <template slot-scope="scope">
+          {{ getFileName(scope.row.caseFileName) }}
+        </template>
+      </el-table-column>
       <el-table-column label="案例名称" align="center" prop="caseName" />
       <el-table-column label="案例编号" align="center" prop="caseNumber" />
       <el-table-column label="故障描述" align="center" prop="description" />
@@ -138,8 +143,11 @@
     />
 
     <!-- 添加或修改故障案例信息对话框 -->
-    <el-dialog :title="title" :visible.sync="open"  :close-on-click-modal="false" width="500px" append-to-body>
+    <el-dialog :title="title" :visible.sync="open"  :close-on-click-modal="false" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px"  :label-position="left">
+        <el-form-item label="案例文件" prop="caseFileName">
+          <file-upload ref="fileUpload" v-model="form.caseFileName" :limit="1"></file-upload>
+        </el-form-item>
         <el-form-item label="案例名称" prop="caseName">
           <el-input v-model="form.caseName" placeholder="请输入案例案例名称" />
         </el-form-item>
@@ -169,9 +177,12 @@
 
 <script>
 import { listFaultCase, getFaultCase, delFaultCase, addFaultCase, updateFaultCase } from "@/api/manage/faultCase";
-
+import FileUpload from "@/components/FileUpload";
 export default {
   name: "FaultCase",
+  components: {
+    FileUpload
+  },
   data() {
     return {
       // 遮罩层
@@ -207,8 +218,8 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        isDelete: [
-          { required: true, message: "数据是否删除不能为空", trigger: "blur" }
+        caseFileName: [
+          { required: true, message: "案例文件不能为空", trigger: "blur" }
         ],
       }
     };
@@ -216,7 +227,16 @@ export default {
   created() {
     this.getList();
   },
+  watch: {
+  },
   methods: {
+    getFileName(path) {
+      if (path.lastIndexOf("/") > -1) {
+        return path.slice(path.lastIndexOf("/") + 1);
+      } else {
+        return path;
+      }
+    },
     /** 查询故障案例信息列表 */
     getList() {
       this.loading = true;
@@ -238,6 +258,7 @@ export default {
         caseName: null,
         description: null,
         caseNumber: null,
+        caseFileName: null,
        
         parameter: null,
         location: null,