allen 10 mēneši atpakaļ
vecāks
revīzija
d69f48c6df

+ 15 - 0
fms-admin/src/main/java/com/fms/system/domain/Brand.java

@@ -1,5 +1,6 @@
 package com.fms.system.domain;
 
+import java.util.List;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.fms.common.annotation.Excel;
@@ -22,6 +23,9 @@ public class Brand extends BaseEntity
     @Excel(name = "机型系列名称")
     private String brandName;
 
+    /** 机型信息 */
+    private List<AircraftType> aircraftTypeList;
+
     public void setBrandId(Long brandId) 
     {
         this.brandId = brandId;
@@ -41,6 +45,16 @@ public class Brand extends BaseEntity
         return brandName;
     }
 
+    public List<AircraftType> getAircraftTypeList()
+    {
+        return aircraftTypeList;
+    }
+
+    public void setAircraftTypeList(List<AircraftType> aircraftTypeList)
+    {
+        this.aircraftTypeList = aircraftTypeList;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -50,6 +64,7 @@ public class Brand extends BaseEntity
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
+            .append("aircraftTypeList", getAircraftTypeList())
             .toString();
     }
 }

+ 26 - 0
fms-admin/src/main/java/com/fms/system/mapper/BrandMapper.java

@@ -2,6 +2,7 @@ package com.fms.system.mapper;
 
 import java.util.List;
 import com.fms.system.domain.Brand;
+import com.fms.system.domain.AircraftType;
 
 /**
  * 机型系列Mapper接口
@@ -58,4 +59,29 @@ public interface BrandMapper
      * @return 结果
      */
     public int deleteBrandByBrandIds(Long[] brandIds);
+
+    /**
+     * 批量删除机型
+     * 
+     * @param brandIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteAircraftTypeByBrandIds(Long[] brandIds);
+    
+    /**
+     * 批量新增机型
+     * 
+     * @param aircraftTypeList 机型列表
+     * @return 结果
+     */
+    public int batchAircraftType(List<AircraftType> aircraftTypeList);
+    
+
+    /**
+     * 通过机型系列主键删除机型信息
+     * 
+     * @param brandId 机型系列ID
+     * @return 结果
+     */
+    public int deleteAircraftTypeByBrandId(Long brandId);
 }

+ 39 - 1
fms-admin/src/main/java/com/fms/system/service/impl/BrandServiceImpl.java

@@ -4,6 +4,10 @@ import java.util.List;
 import com.fms.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import com.fms.common.utils.StringUtils;
+import org.springframework.transaction.annotation.Transactional;
+import com.fms.system.domain.AircraftType;
 import com.fms.system.mapper.BrandMapper;
 import com.fms.system.domain.Brand;
 import com.fms.system.service.IBrandService;
@@ -50,11 +54,14 @@ public class BrandServiceImpl implements IBrandService
      * @param brand 机型系列
      * @return 结果
      */
+    @Transactional
     @Override
     public int insertBrand(Brand brand)
     {
         brand.setCreateTime(DateUtils.getNowDate());
-        return brandMapper.insertBrand(brand);
+        int rows = brandMapper.insertBrand(brand);
+        insertAircraftType(brand);
+        return rows;
     }
 
     /**
@@ -63,10 +70,13 @@ public class BrandServiceImpl implements IBrandService
      * @param brand 机型系列
      * @return 结果
      */
+    @Transactional
     @Override
     public int updateBrand(Brand brand)
     {
         brand.setUpdateTime(DateUtils.getNowDate());
+        brandMapper.deleteAircraftTypeByBrandId(brand.getBrandId());
+        insertAircraftType(brand);
         return brandMapper.updateBrand(brand);
     }
 
@@ -76,9 +86,11 @@ public class BrandServiceImpl implements IBrandService
      * @param brandIds 需要删除的机型系列主键
      * @return 结果
      */
+    @Transactional
     @Override
     public int deleteBrandByBrandIds(Long[] brandIds)
     {
+        brandMapper.deleteAircraftTypeByBrandIds(brandIds);
         return brandMapper.deleteBrandByBrandIds(brandIds);
     }
 
@@ -88,9 +100,35 @@ public class BrandServiceImpl implements IBrandService
      * @param brandId 机型系列主键
      * @return 结果
      */
+    @Transactional
     @Override
     public int deleteBrandByBrandId(Long brandId)
     {
+        brandMapper.deleteAircraftTypeByBrandId(brandId);
         return brandMapper.deleteBrandByBrandId(brandId);
     }
+
+    /**
+     * 新增机型信息
+     * 
+     * @param brand 机型系列对象
+     */
+    public void insertAircraftType(Brand brand)
+    {
+        List<AircraftType> aircraftTypeList = brand.getAircraftTypeList();
+        Long brandId = brand.getBrandId();
+        if (StringUtils.isNotNull(aircraftTypeList))
+        {
+            List<AircraftType> list = new ArrayList<AircraftType>();
+            for (AircraftType aircraftType : aircraftTypeList)
+            {
+                aircraftType.setBrandId(brandId);
+                list.add(aircraftType);
+            }
+            if (list.size() > 0)
+            {
+                brandMapper.batchAircraftType(list);
+            }
+        }
+    }
 }

+ 38 - 3
fms-admin/src/main/resources/mapper/system/BrandMapper.xml

@@ -13,6 +13,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
     </resultMap>
 
+    <resultMap id="BrandAircraftTypeResult" type="Brand" extends="BrandResult">
+        <collection property="aircraftTypeList" notNullColumn="sub_aircraft_type_id" javaType="java.util.List" resultMap="AircraftTypeResult" />
+    </resultMap>
+
+    <resultMap type="AircraftType" id="AircraftTypeResult">
+        <result property="aircraftTypeId"    column="sub_aircraft_type_id"    />
+        <result property="brandId"    column="sub_brand_id"    />
+        <result property="aircraftTypeName"    column="sub_aircraft_type_name"    />
+        <result property="createBy"    column="sub_create_by"    />
+        <result property="createTime"    column="sub_create_time"    />
+        <result property="updateBy"    column="sub_update_by"    />
+        <result property="updateTime"    column="sub_update_time"    />
+    </resultMap>
+
     <sql id="selectBrandVo">
         select brand_id, brand_name, create_by, create_time, update_by, update_time from brand_t
     </sql>
@@ -24,9 +38,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
     
-    <select id="selectBrandByBrandId" parameterType="Long" resultMap="BrandResult">
-        <include refid="selectBrandVo"/>
-        where brand_id = #{brandId}
+    <select id="selectBrandByBrandId" parameterType="Long" resultMap="BrandAircraftTypeResult">
+        select a.brand_id, a.brand_name, a.create_by, a.create_time, a.update_by, a.update_time,
+ b.aircraft_type_id as sub_aircraft_type_id, b.brand_id as sub_brand_id, b.aircraft_type_name as sub_aircraft_type_name, b.create_by as sub_create_by, b.create_time as sub_create_time, b.update_by as sub_update_by, b.update_time as sub_update_time
+        from brand_t a
+        left join aircraft_type_t b on b.brand_id = a.brand_id
+        where a.brand_id = #{brandId}
     </select>
         
     <insert id="insertBrand" parameterType="Brand" useGeneratedKeys="true" keyProperty="brandId">
@@ -69,4 +86,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{brandId}
         </foreach>
     </delete>
+    
+    <delete id="deleteAircraftTypeByBrandIds" parameterType="String">
+        delete from aircraft_type_t where brand_id in 
+        <foreach item="brandId" collection="array" open="(" separator="," close=")">
+            #{brandId}
+        </foreach>
+    </delete>
+
+    <delete id="deleteAircraftTypeByBrandId" parameterType="Long">
+        delete from aircraft_type_t where brand_id = #{brandId}
+    </delete>
+
+    <insert id="batchAircraftType">
+        insert into aircraft_type_t( aircraft_type_id, brand_id, aircraft_type_name, create_by, create_time, update_by, update_time) values
+		<foreach item="item" index="index" collection="list" separator=",">
+            ( #{item.aircraftTypeId}, #{item.brandId}, #{item.aircraftTypeName}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime})
+        </foreach>
+    </insert>
 </mapper>

+ 160 - 39
fms-ui/src/views/system/brand/index.vue

@@ -1,6 +1,13 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="120px"
+    >
       <el-form-item label="机型系列名称" prop="brandName">
         <el-input
           v-model="queryParams.brandName"
@@ -10,8 +17,16 @@
         />
       </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>
+        <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>
 
@@ -24,7 +39,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['system:brand:add']"
-        >新增</el-button>
+          >新增</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -35,7 +51,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['system:brand:edit']"
-        >修改</el-button>
+          >修改</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -46,7 +63,8 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['system:brand:remove']"
-        >删除</el-button>
+          >删除</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -56,16 +74,28 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['system:brand:export']"
-        >导出</el-button>
+          >导出</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="brandList" @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="brandList"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="序号" align="center" prop="brandId" />
       <el-table-column label="机型系列名称" align="center" prop="brandName" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -73,20 +103,22 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['system:brand:edit']"
-          >修改</el-button>
+            >修改</el-button
+          >
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['system:brand:remove']"
-          >删除</el-button>
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -95,10 +127,53 @@
 
     <!-- 添加或修改机型系列对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="机型系列名称" prop="brandName">
           <el-input v-model="form.brandName" placeholder="请输入机型系列名称" />
         </el-form-item>
+        <el-divider content-position="center">机型信息</el-divider>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAddAircraftType"
+              >添加</el-button
+            >
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              icon="el-icon-delete"
+              size="mini"
+              @click="handleDeleteAircraftType"
+              >删除</el-button
+            >
+          </el-col>
+        </el-row>
+        <el-table
+          :data="aircraftTypeList"
+          :row-class-name="rowAircraftTypeIndex"
+          @selection-change="handleAircraftTypeSelectionChange"
+          ref="aircraftType"
+        >
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column
+            label="序号"
+            align="center"
+            prop="index"
+            width="50"
+          />
+          <el-table-column label="机型" prop="aircraftTypeName" width="350">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.aircraftTypeName"
+                placeholder="请输入机型"
+              />
+            </template>
+          </el-table-column>
+        </el-table>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -109,7 +184,13 @@
 </template>
 
 <script>
-import { listBrand, getBrand, delBrand, addBrand, updateBrand } from "@/api/system/brand";
+import {
+  listBrand,
+  getBrand,
+  delBrand,
+  addBrand,
+  updateBrand,
+} from "@/api/system/brand";
 
 export default {
   name: "Brand",
@@ -119,6 +200,8 @@ export default {
       loading: true,
       // 选中数组
       ids: [],
+      // 子表选中数据
+      checkedAircraftType: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -129,6 +212,8 @@ export default {
       total: 0,
       // 机型系列表格数据
       brandList: [],
+      // 机型表格数据
+      aircraftTypeList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -142,8 +227,7 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {},
     };
   },
   created() {
@@ -153,7 +237,7 @@ export default {
     /** 查询机型系列列表 */
     getList() {
       this.loading = true;
-      listBrand(this.queryParams).then(response => {
+      listBrand(this.queryParams).then((response) => {
         this.brandList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -172,8 +256,9 @@ export default {
         createBy: null,
         createTime: null,
         updateBy: null,
-        updateTime: null
+        updateTime: null,
       };
+      this.aircraftTypeList = [];
       this.resetForm("form");
     },
     /** 搜索按钮操作 */
@@ -188,9 +273,9 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.brandId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.brandId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
     handleAdd() {
@@ -201,25 +286,27 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const brandId = row.brandId || this.ids
-      getBrand(brandId).then(response => {
+      const brandId = row.brandId || this.ids;
+      getBrand(brandId).then((response) => {
         this.form = response.data;
+        this.aircraftTypeList = response.data.aircraftTypeList;
         this.open = true;
         this.title = "修改机型系列";
       });
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
+          this.form.aircraftTypeList = this.aircraftTypeList;
           if (this.form.brandId != null) {
-            updateBrand(this.form).then(response => {
+            updateBrand(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addBrand(this.form).then(response => {
+            addBrand(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -231,19 +318,53 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const brandIds = row.brandId || this.ids;
-      this.$modal.confirm('是否确认删除机型系列编号为"' + brandIds + '"的数据项?').then(function() {
-        return delBrand(brandIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认删除机型系列编号为"' + brandIds + '"的数据项?')
+        .then(function () {
+          return delBrand(brandIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 机型序号 */
+    rowAircraftTypeIndex({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    /** 机型添加按钮操作 */
+    handleAddAircraftType() {
+      let obj = {};
+      obj.aircraftTypeName = "";
+      this.aircraftTypeList.push(obj);
+    },
+    /** 机型删除按钮操作 */
+    handleDeleteAircraftType() {
+      if (this.checkedAircraftType.length == 0) {
+        this.$modal.msgError("请先选择要删除的机型数据");
+      } else {
+        const aircraftTypeList = this.aircraftTypeList;
+        const checkedAircraftType = this.checkedAircraftType;
+        this.aircraftTypeList = aircraftTypeList.filter(function (item) {
+          return checkedAircraftType.indexOf(item.index) == -1;
+        });
+      }
+    },
+    /** 复选框选中数据 */
+    handleAircraftTypeSelectionChange(selection) {
+      this.checkedAircraftType = selection.map((item) => item.index);
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('system/brand/export', {
-        ...this.queryParams
-      }, `brand_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "system/brand/export",
+        {
+          ...this.queryParams,
+        },
+        `brand_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>