Selaa lähdekoodia

修改材料清单

FinalYu 10 kuukautta sitten
vanhempi
commit
f55eb0970b

+ 13 - 25
nasc-system/src/main/java/com/nasc/custom/domain/NascMaterial.java

@@ -4,6 +4,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 import javax.validation.constraints.NotBlank;
+import java.util.List;
 
 /**
  * @Author: Yujianq
@@ -11,29 +12,25 @@ import javax.validation.constraints.NotBlank;
  * @Description: 材料内容表
  * @return:
  */
-public class NascMaterial
-{
+public class NascMaterial {
     /** 材料表主键ID */
     private Long id;
 
-    /** 材料内容或清单 */
-    private String material;
-
     /** 前置问题选项ID */
     private Long optionId;
 
     /** 事项ID(无前置问题时出现) */
     private Long matterId;
 
-    /** 材料描述 */
-    private String desc;
-
     /** 申请条件 **/
     private String conditions;
 
     /** 办理方式 **/
     private String dealWith;
 
+    /** 材料清单 **/
+    public List<NascMaterialList> materialList;
+
     public Long getId() {
         return id;
     }
@@ -42,15 +39,6 @@ public class NascMaterial
         this.id = id;
     }
 
-    @NotBlank(message = "材料内容不能为空")
-    public String getMaterial() {
-        return material;
-    }
-
-    public void setMaterial(String material) {
-        this.material = material;
-    }
-
     public Long getOptionId() {
         return optionId;
     }
@@ -67,14 +55,6 @@ public class NascMaterial
         this.matterId = matterId;
     }
 
-    public String getDesc() {
-        return desc;
-    }
-
-    public void setDesc(String desc) {
-        this.desc = desc;
-    }
-
     public String getConditions() {
         return conditions;
     }
@@ -90,4 +70,12 @@ public class NascMaterial
     public void setDealWith(String dealWith) {
         this.dealWith = dealWith;
     }
+
+    public List<NascMaterialList> getMaterialList() {
+        return materialList;
+    }
+
+    public void setMaterialList(List<NascMaterialList> materialList) {
+        this.materialList = materialList;
+    }
 }

+ 57 - 0
nasc-system/src/main/java/com/nasc/custom/domain/NascMaterialList.java

@@ -0,0 +1,57 @@
+package com.nasc.custom.domain;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Author: Yujianq
+ * @Date: 2024/6/4 16:03
+ * @Description: 材料内容清单列表表
+ * @return:
+ */
+public class NascMaterialList {
+
+    /** 材料表主键ID */
+    private Long id;
+
+    /** 材料清单主表ID */
+    private Long materialId;
+
+    /** 材料清单名称 */
+    private String listName;
+
+    /** 材料清单说明 **/
+    private String memo;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(Long materialId) {
+        this.materialId = materialId;
+    }
+
+    @NotBlank(message = "材料清单名称不能为空")
+    public String getListName() {
+        return listName;
+    }
+
+    public void setListName(String listName) {
+        this.listName = listName;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+}

+ 43 - 0
nasc-system/src/main/java/com/nasc/custom/mapper/NascMaterialListMapper.java

@@ -0,0 +1,43 @@
+package com.nasc.custom.mapper;
+
+import com.nasc.custom.domain.NascMaterial;
+import com.nasc.custom.domain.NascMaterialList;
+
+import java.util.List;
+
+/**
+ * @Author: Yujianq
+ * @Date: 2024/6/4 16:38
+ * @Description: 材料内容清单列表表
+ * @return:
+ */
+public interface NascMaterialListMapper {
+
+    /**
+     * @Author: Yujianq
+     * @Date: 2024/6/5 11:03
+     * @Description: 新增材料中材料清单信息
+     * @param materialList
+     * @return: int
+     */
+    public int insertMaterialList(NascMaterialList materialList);
+
+    /**
+     * @Author: Yujianq
+     * @Date: 2024/6/5 16:38
+     * @Description: 根据材料ID删除材料清单信息
+     * @param materialId
+     * @return: int
+     */
+    public int deleteMaterialListByMaterialId(Long materialId);
+    
+    /** 
+     * @Author: Yujianq
+     * @Date: 2024/6/13 15:52
+     * @Description: 根据材料ID查询材料清单信息
+     * @param materialId 
+     * @return: java.util.List<com.nasc.custom.domain.NascMaterialList>
+     */
+    public List<NascMaterialList> getMaterialListByMaterialId(Long materialId);
+
+}

+ 35 - 2
nasc-system/src/main/java/com/nasc/custom/service/impl/NascMatterServiceImpl.java

@@ -38,6 +38,9 @@ public class NascMatterServiceImpl implements INascMatterService {
     @Autowired
     private NascPreQuestionOptionMapper preQuestionOptionMapper;
 
+    @Autowired
+    private NascMaterialListMapper materialListMapper;
+
     @Override
     public List<NascMatter> selectMatterList(NascMatter matter) {
         return matterMapper.selectMatterList(matter);
@@ -74,7 +77,12 @@ public class NascMatterServiceImpl implements INascMatterService {
         // 判断是否有前置问题
         if ("N".equals(matter.getPrefixQuestion())) {
             // 修改材料信息
-            materialMapper.updateMaterial(matter.getMaterial());
+            NascMaterial material = matter.getMaterial();
+            materialMapper.updateMaterial(material);
+            // 删除材料清单列表
+            materialListMapper.deleteMaterialListByMaterialId(material.getId());
+            // 重新存储材料清单列表
+            saveMaterialList(material.getMaterialList(), material.getId());
             // 修改一次性告知单打印模板信息
             updatePrintTemplate(matter);
             return matterMapper.updateMatter(matter);
@@ -108,12 +116,20 @@ public class NascMatterServiceImpl implements INascMatterService {
                 // 查询问题选项和选项对应的材料信息
                 List<NascPreQuestionOption> optionList = preQuestionOptionMapper.getPreQuestionOptionListByQuestionId(question.getId());
                 question.setPreQuestionOptionList(optionList);
+                for (NascPreQuestionOption option : optionList) {
+                    if (option.getJumpToMatterId() == 0) {
+                        NascMaterial material = option.getMaterial();
+                        material.setMaterialList(materialListMapper.getMaterialListByMaterialId(material.getId()));
+                    }
+                }
             }
             // 问题赋值
             matter.setPreQuestionList(questionList);
         } else {
             // 根据事项ID查询材料信息
-            matter.setMaterial(materialMapper.getMaterialByMatterId(id));
+            NascMaterial material = materialMapper.getMaterialByMatterId(id);
+            material.setMaterialList(materialListMapper.getMaterialListByMaterialId(material.getId()));
+            matter.setMaterial(material);
         }
         return matter;
     }
@@ -177,6 +193,23 @@ public class NascMatterServiceImpl implements INascMatterService {
         material.setOptionId(optionId);
         // 存储材料信息
         materialMapper.insertMaterial(material);
+        // 保存材料清单
+        saveMaterialList(material.getMaterialList(), material.getId());
+    }
+
+    /**
+     * @Author: Yujianq
+     * @Date: 2024/6/13 15:40
+     * @Description: 保存材料清单列表
+     * @param materialLists
+     * @param materialId
+     * @return: void
+     */
+    public void saveMaterialList(List<NascMaterialList> materialLists, Long materialId) {
+        for (NascMaterialList materialList: materialLists) {
+            materialList.setMaterialId(materialId);
+            materialListMapper.insertMaterialList(materialList);
+        }
     }
 
     /**

+ 34 - 0
nasc-system/src/main/java/com/nasc/custom/service/impl/NascQuestionServiceImpl.java

@@ -31,6 +31,9 @@ public class NascQuestionServiceImpl implements INascQuestionService {
     @Autowired
     private NascMaterialMapper materialMapper;
 
+    @Autowired
+    private NascMaterialListMapper materialListMapper;
+
     @Override
     public List<NascPreQuestion> selectQuestionList(NascPreQuestion question) {
         return preQuestionMapper.getQuestionByMatterId(question.getMatterId());
@@ -57,6 +60,10 @@ public class NascQuestionServiceImpl implements INascQuestionService {
         /** 先删除选项和材料信息 **/
         List<NascPreQuestionOption> preQuestionOptionList = question.getPreQuestionOptionList();
         long[] optionIds = preQuestionOptionList.stream().mapToLong(NascPreQuestionOption::getId).toArray();
+        // 删除材料清单列表
+        for (NascPreQuestionOption option : preQuestionOptionList) {
+            materialListMapper.deleteMaterialListByMaterialId(option.getMaterial().getId());
+        }
         // 删除选项相关的材料信息
         materialMapper.deleteMaterialByOptionIds(optionIds);
         // 删除问题相关的选项
@@ -73,6 +80,10 @@ public class NascQuestionServiceImpl implements INascQuestionService {
         // 根据问题ID查询所有选项信息
         List<NascPreQuestionOption> optionList = preQuestionOptionMapper.getPreQuestionOptionListByQuestionId(id);
         long[] optionIds = optionList.stream().mapToLong(NascPreQuestionOption::getId).toArray();
+        // 删除材料清单信息
+        for (NascPreQuestionOption option: optionList) {
+            materialListMapper.deleteMaterialListByMaterialId(option.getMaterial().getId());
+        }
         // 删除选项相关的材料信息
         materialMapper.deleteMaterialByOptionIds(optionIds);
         // 删除选项信息
@@ -86,6 +97,12 @@ public class NascQuestionServiceImpl implements INascQuestionService {
         NascPreQuestion question = preQuestionMapper.getQuestionById(id);
         // 查询问题选项和选项对应的材料信息
         List<NascPreQuestionOption> optionList = preQuestionOptionMapper.getPreQuestionOptionListByQuestionId(id);
+        for (NascPreQuestionOption option : optionList) {
+            if (option.getJumpToMatterId() == 0) {
+                NascMaterial material = option.getMaterial();
+                material.setMaterialList(materialListMapper.getMaterialListByMaterialId(material.getId()));
+            }
+        }
         question.setPreQuestionOptionList(optionList);
         return question;
     }
@@ -109,8 +126,25 @@ public class NascQuestionServiceImpl implements INascQuestionService {
                 material.setOptionId(option.getId());
                 // 存储材料信息
                 materialMapper.insertMaterial(material);
+                // 保存材料清单
+                saveMaterialList(material.getMaterialList(), material.getId());
             }
         }
     }
 
+    /**
+     * @Author: Yujianq
+     * @Date: 2024/6/13 15:40
+     * @Description: 保存材料清单列表
+     * @param materialLists
+     * @param materialId
+     * @return: void
+     */
+    public void saveMaterialList(List<NascMaterialList> materialLists, Long materialId) {
+        for (NascMaterialList materialList: materialLists) {
+            materialList.setMaterialId(materialId);
+            materialListMapper.insertMaterialList(materialList);
+        }
+    }
+
 }

+ 30 - 0
nasc-system/src/main/resources/mapper/custom/NascMaterialListMapper.xml

@@ -0,0 +1,30 @@
+<?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.nasc.custom.mapper.NascMaterialListMapper">
+
+    <resultMap id="materialListResult" type="NascMaterialList">
+        <id     property="id"          column="id"         />
+        <result property="materialId"    column="material_id"  />
+        <result property="listName"  column="list_name" />
+        <result property="memo"    column="memo"  />
+    </resultMap>
+
+    <insert id="insertMaterialList" parameterType="NascMaterialList" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO nasc_material_list (material_id, list_name, memo)
+        VALUES (#{materialId}, #{listName}, #{memo})
+    </insert>
+
+    <delete id="deleteMaterialListByMaterialId" parameterType="Long">
+        DELETE FROM nasc_material_list
+        WHERE material_id =#{materialId}
+    </delete>
+
+    <select id="getMaterialListByMaterialId" parameterType="Long" resultMap="materialListResult">
+        SELECT nml.id, nml.material_id, nml.list_name, nml.memo
+        FROM nasc_material_list nml
+        WHERE nml.material_id = #{materialId}
+    </select>
+
+</mapper> 

+ 4 - 6
nasc-system/src/main/resources/mapper/custom/NascMaterialMapper.xml

@@ -6,22 +6,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <resultMap id="materialResult" type="NascMaterial">
         <id     property="id"          column="id"         />
-        <result property="material"    column="material"   />
         <result property="optionId"    column="option_id"  />
         <result property="matterId"    column="matter_id"  />
-        <result property="desc"        column="desc"       />
         <result property="conditions"  column="conditions" />
         <result property="dealWith"    column="deal_with"  />
     </resultMap>
 
     <insert id="insertMaterial" parameterType="NascMaterial" useGeneratedKeys="true" keyProperty="id">
-        INSERT INTO nasc_material (material, option_id, matter_id, `desc`, conditions, deal_with)
-        VALUES (#{material}, #{optionId}, #{matterId}, #{desc}, #{conditions}, #{dealWith})
+        INSERT INTO nasc_material (option_id, matter_id, conditions, deal_with)
+        VALUES (#{optionId}, #{matterId}, #{conditions}, #{dealWith})
     </insert>
 
     <update id="updateMaterial" parameterType="NascMaterial">
         UPDATE nasc_material
-        SET material = #{material}, `desc` = #{desc}, conditions = #{conditions}, deal_with = #{dealWith}
+        SET conditions = #{conditions}, deal_with = #{dealWith}
         WHERE id = #{id}
     </update>
 
@@ -34,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <select id="getMaterialByMatterId" parameterType="Long" resultMap="materialResult">
-        SELECT nm.id, nm.material, nm.matter_id, nm.`desc`, nm.conditions, nm.deal_with
+        SELECT nm.id, nm.matter_id, nm.conditions, nm.deal_with
         FROM nasc_material nm
         WHERE nm.matter_id = #{matterId}
     </select>

+ 1 - 3
nasc-system/src/main/resources/mapper/custom/NascPreQuestionOptionMapper.xml

@@ -15,10 +15,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <resultMap id="materialResult" type="NascMaterial">
         <id     property="id"          column="materialId"         />
-        <result property="material"    column="material"   />
         <result property="optionId"    column="option_id"  />
         <result property="matterId"    column="matter_id"  />
-        <result property="desc"        column="materialDesc"       />
         <result property="conditions"  column="conditions" />
         <result property="dealWith"    column="deal_with"  />
     </resultMap>
@@ -35,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getPreQuestionOptionListByQuestionId" parameterType="Long" resultMap="preQuestionOptionResult">
         SELECT npqo.id, npqo.question_id, npqo.`desc`, npqo.jump_to_matter_id, npqo.sort_num,
-               nm.id AS materialId, nm.material, nm.option_id, nm.`desc` AS materialDesc, nm.conditions, nm.deal_with
+               nm.id AS materialId, nm.option_id, nm.conditions, nm.deal_with
         FROM nasc_pre_question_option npqo
         LEFT JOIN nasc_material nm ON nm.option_id = npqo.id
         WHERE npqo.question_id = #{questionId}

+ 40 - 7
nasc-ui/src/views/matter/index/index.vue

@@ -96,13 +96,25 @@
                 <div class="matter-material" v-html="currMaterial.dealWith"></div>
               </el-row>
               <el-row style="margin-top: 20px;">
-                <label style="color: #00afff;">三、材料清单</label>
-                <div class="matter-material" v-html="currMaterial.material"></div>
-              </el-row>
-              <el-row style="margin-top: 20px;">
-                <label style="color: #00afff;">四、材料说明</label>
-                <div class="matter-material" v-html="currMaterial.desc"></div>
+                <label style="color: #00afff;">三、材料说明</label>
+                <div class="matter-material" style="display: flex; align-items: center;">
+                  <div style="width: 49%;">
+                    <ul>
+                      <li v-for="item in currMaterial.materialList" @click="handleMaterialItem(item)" style="padding: 5px; cursor: pointer; color: #4285f4;">
+                        {{ item.listName }}
+                      </li>
+                    </ul>
+                  </div>
+                  <div class="material-line"></div>
+                  <div style="width: 49%; padding: 10px;">
+                    <div v-html="currMaterialMemo"></div>
+                  </div>
+                </div>
               </el-row>
+<!--              <el-row style="margin-top: 20px;">-->
+<!--                <label style="color: #00afff;">四、材料说明</label>-->
+<!--                <div class="matter-material" v-html="currMaterial.desc"></div>-->
+<!--              </el-row>-->
               <el-row style="margin-top: 20px;">
                 <label>所属部门:<span style="font-weight: 400;">{{ currMatter.dept.deptName }}</span></label>
               </el-row>
@@ -152,6 +164,8 @@ export default {
       currMatterPrintInfo: {},
       // 当前选中的审查事项问题选项情况
       currMaterial: {},
+      // 材料清单对应的材料介绍
+      currMaterialMemo: undefined,
       // 搜索事项数据
       searchMatterList: [],
       defaultProps: {
@@ -240,7 +254,13 @@ export default {
       pintContent = pintContent.replace(/{\$month}/g, nMonth < 10 ? ('0' + nMonth) : nMonth)
       pintContent = pintContent.replace(/{\$day}/g, nDay < 10 ? ('0' + nDay) : nDay)
       pintContent = pintContent.replace(/{\$matter}/g, this.currMatter.itemName)
-      pintContent = pintContent.replace(/{\$material}/g, this.currMaterial.material)
+      let materialList = this.currMaterial.materialList
+      let html = '<ul>'
+      materialList.forEach(item => {
+        html += '<li style="padding: 5px;">' + item.listName + '</li>'
+      })
+      html += '</ul>'
+      pintContent = pintContent.replace(/{\$material}/g, html)
       this.currMatterPrintInfo = pintContent
     },
     /** 问题选项单击事件 **/
@@ -312,6 +332,12 @@ export default {
       }
       return deptItem
     },
+    /** 材料清单点击事件 **/
+    handleMaterialItem(item) {
+      if (item) {
+        this.currMaterialMemo = item.memo
+      }
+    },
     /** 打印材料事件 **/
     handleMaterialPrint() {
       let printContent = document.getElementById('print_material').innerHTML;
@@ -373,6 +399,13 @@ export default {
   .is-matter .el-icon {
     color: green;
   }
+  .material-line {
+      width: 4px;
+      border-radius: 2px;
+      background: #c0c4cc;
+      height: 100%;
+      min-height: 50px;
+  }
 </style>
 
 <style>