allen 2 éve
szülő
commit
812a6b7ac9
32 módosított fájl, 2972 hozzáadás és 2 törlés
  1. 104 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/BreakdownController.java
  2. 104 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/CaseDocController.java
  3. 104 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/RandomDocController.java
  4. 104 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/TechnologyDocController.java
  5. 104 0
      kgraph-admin/src/main/java/com/kgraph/web/controller/TextbookDocController.java
  6. 268 0
      kgraph-admin/src/main/java/com/kgraph/web/domain/Breakdown.java
  7. 97 0
      kgraph-admin/src/main/java/com/kgraph/web/domain/CaseDoc.java
  8. 97 0
      kgraph-admin/src/main/java/com/kgraph/web/domain/RandomDoc.java
  9. 97 0
      kgraph-admin/src/main/java/com/kgraph/web/domain/TechnologyDoc.java
  10. 97 0
      kgraph-admin/src/main/java/com/kgraph/web/domain/TextbookDoc.java
  11. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/mapper/BreakdownMapper.java
  12. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/mapper/CaseDocMapper.java
  13. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/mapper/RandomDocMapper.java
  14. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/mapper/TechnologyDocMapper.java
  15. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/mapper/TextbookDocMapper.java
  16. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/service/IBreakdownService.java
  17. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/service/ICaseDocService.java
  18. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/service/IRandomDocService.java
  19. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/service/ITechnologyDocService.java
  20. 61 0
      kgraph-admin/src/main/java/com/kgraph/web/service/ITextbookDocService.java
  21. 96 0
      kgraph-admin/src/main/java/com/kgraph/web/service/impl/BreakdownServiceImpl.java
  22. 96 0
      kgraph-admin/src/main/java/com/kgraph/web/service/impl/CaseDocServiceImpl.java
  23. 96 0
      kgraph-admin/src/main/java/com/kgraph/web/service/impl/RandomDocServiceImpl.java
  24. 96 0
      kgraph-admin/src/main/java/com/kgraph/web/service/impl/TechnologyDocServiceImpl.java
  25. 96 0
      kgraph-admin/src/main/java/com/kgraph/web/service/impl/TextbookDocServiceImpl.java
  26. 87 0
      kgraph-admin/src/main/resources/mapper/doc/CaseDocMapper.xml
  27. 87 0
      kgraph-admin/src/main/resources/mapper/doc/RandomDocMapper.xml
  28. 87 0
      kgraph-admin/src/main/resources/mapper/doc/TechnologyDocMapper.xml
  29. 87 0
      kgraph-admin/src/main/resources/mapper/doc/TextbookDocMapper.xml
  30. 147 0
      kgraph-admin/src/main/resources/mapper/showInfo/BreakdownMapper.xml
  31. 6 1
      kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractKnowledgeSubTaskServiceImpl.java
  32. 205 1
      sql/system.sql

+ 104 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/BreakdownController.java

@@ -0,0 +1,104 @@
+package com.kgraph.web.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.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.web.domain.Breakdown;
+import com.kgraph.web.service.IBreakdownService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 故障信息Controller
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@RestController
+@RequestMapping("/showInfo/breakdown")
+public class BreakdownController extends BaseController
+{
+    @Autowired
+    private IBreakdownService breakdownService;
+
+    /**
+     * 查询故障信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('showInfo:breakdown:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(Breakdown breakdown)
+    {
+        startPage();
+        List<Breakdown> list = breakdownService.selectBreakdownList(breakdown);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出故障信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('showInfo:breakdown:export')")
+    @Log(title = "故障信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Breakdown breakdown)
+    {
+        List<Breakdown> list = breakdownService.selectBreakdownList(breakdown);
+        ExcelUtil<Breakdown> util = new ExcelUtil<Breakdown>(Breakdown.class);
+        util.exportExcel(response, list, "故障信息数据");
+    }
+
+    /**
+     * 获取故障信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('showInfo:breakdown:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(breakdownService.selectBreakdownById(id));
+    }
+
+    /**
+     * 新增故障信息
+     */
+    @PreAuthorize("@ss.hasPermi('showInfo:breakdown:add')")
+    @Log(title = "故障信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Breakdown breakdown)
+    {
+        return toAjax(breakdownService.insertBreakdown(breakdown));
+    }
+
+    /**
+     * 修改故障信息
+     */
+    @PreAuthorize("@ss.hasPermi('showInfo:breakdown:edit')")
+    @Log(title = "故障信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Breakdown breakdown)
+    {
+        return toAjax(breakdownService.updateBreakdown(breakdown));
+    }
+
+    /**
+     * 删除故障信息
+     */
+    @PreAuthorize("@ss.hasPermi('showInfo:breakdown:remove')")
+    @Log(title = "故障信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(breakdownService.deleteBreakdownByIds(ids));
+    }
+}

+ 104 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/CaseDocController.java

@@ -0,0 +1,104 @@
+package com.kgraph.web.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.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.web.domain.CaseDoc;
+import com.kgraph.web.service.ICaseDocService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 案例Controller
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@RestController
+@RequestMapping("/doc/case")
+public class CaseDocController extends BaseController
+{
+    @Autowired
+    private ICaseDocService caseDocService;
+
+    /**
+     * 查询案例列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:case:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(CaseDoc caseDoc)
+    {
+        startPage();
+        List<CaseDoc> list = caseDocService.selectCaseDocList(caseDoc);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出案例列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:case:export')")
+    @Log(title = "案例", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, CaseDoc caseDoc)
+    {
+        List<CaseDoc> list = caseDocService.selectCaseDocList(caseDoc);
+        ExcelUtil<CaseDoc> util = new ExcelUtil<CaseDoc>(CaseDoc.class);
+        util.exportExcel(response, list, "案例数据");
+    }
+
+    /**
+     * 获取案例详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('doc:case:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(caseDocService.selectCaseDocById(id));
+    }
+
+    /**
+     * 新增案例
+     */
+    @PreAuthorize("@ss.hasPermi('doc:case:add')")
+    @Log(title = "案例", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody CaseDoc caseDoc)
+    {
+        return toAjax(caseDocService.insertCaseDoc(caseDoc));
+    }
+
+    /**
+     * 修改案例
+     */
+    @PreAuthorize("@ss.hasPermi('doc:case:edit')")
+    @Log(title = "案例", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody CaseDoc caseDoc)
+    {
+        return toAjax(caseDocService.updateCaseDoc(caseDoc));
+    }
+
+    /**
+     * 删除案例
+     */
+    @PreAuthorize("@ss.hasPermi('doc:case:remove')")
+    @Log(title = "案例", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(caseDocService.deleteCaseDocByIds(ids));
+    }
+}

+ 104 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/RandomDocController.java

@@ -0,0 +1,104 @@
+package com.kgraph.web.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.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.web.domain.RandomDoc;
+import com.kgraph.web.service.IRandomDocService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 随机资料Controller
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@RestController
+@RequestMapping("/doc/radmon")
+public class RandomDocController extends BaseController
+{
+    @Autowired
+    private IRandomDocService randomDocService;
+
+    /**
+     * 查询随机资料列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:radmon:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(RandomDoc randomDoc)
+    {
+        startPage();
+        List<RandomDoc> list = randomDocService.selectRandomDocList(randomDoc);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出随机资料列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:radmon:export')")
+    @Log(title = "随机资料", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, RandomDoc randomDoc)
+    {
+        List<RandomDoc> list = randomDocService.selectRandomDocList(randomDoc);
+        ExcelUtil<RandomDoc> util = new ExcelUtil<RandomDoc>(RandomDoc.class);
+        util.exportExcel(response, list, "随机资料数据");
+    }
+
+    /**
+     * 获取随机资料详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('doc:radmon:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(randomDocService.selectRandomDocById(id));
+    }
+
+    /**
+     * 新增随机资料
+     */
+    @PreAuthorize("@ss.hasPermi('doc:radmon:add')")
+    @Log(title = "随机资料", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody RandomDoc randomDoc)
+    {
+        return toAjax(randomDocService.insertRandomDoc(randomDoc));
+    }
+
+    /**
+     * 修改随机资料
+     */
+    @PreAuthorize("@ss.hasPermi('doc:radmon:edit')")
+    @Log(title = "随机资料", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody RandomDoc randomDoc)
+    {
+        return toAjax(randomDocService.updateRandomDoc(randomDoc));
+    }
+
+    /**
+     * 删除随机资料
+     */
+    @PreAuthorize("@ss.hasPermi('doc:radmon:remove')")
+    @Log(title = "随机资料", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(randomDocService.deleteRandomDocByIds(ids));
+    }
+}

+ 104 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/TechnologyDocController.java

@@ -0,0 +1,104 @@
+package com.kgraph.web.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.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.web.domain.TechnologyDoc;
+import com.kgraph.web.service.ITechnologyDocService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 技术通报Controller
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@RestController
+@RequestMapping("/doc/tech")
+public class TechnologyDocController extends BaseController
+{
+    @Autowired
+    private ITechnologyDocService technologyDocService;
+
+    /**
+     * 查询技术通报列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:tech:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TechnologyDoc technologyDoc)
+    {
+        startPage();
+        List<TechnologyDoc> list = technologyDocService.selectTechnologyDocList(technologyDoc);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出技术通报列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:tech:export')")
+    @Log(title = "技术通报", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TechnologyDoc technologyDoc)
+    {
+        List<TechnologyDoc> list = technologyDocService.selectTechnologyDocList(technologyDoc);
+        ExcelUtil<TechnologyDoc> util = new ExcelUtil<TechnologyDoc>(TechnologyDoc.class);
+        util.exportExcel(response, list, "技术通报数据");
+    }
+
+    /**
+     * 获取技术通报详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('doc:tech:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(technologyDocService.selectTechnologyDocById(id));
+    }
+
+    /**
+     * 新增技术通报
+     */
+    @PreAuthorize("@ss.hasPermi('doc:tech:add')")
+    @Log(title = "技术通报", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TechnologyDoc technologyDoc)
+    {
+        return toAjax(technologyDocService.insertTechnologyDoc(technologyDoc));
+    }
+
+    /**
+     * 修改技术通报
+     */
+    @PreAuthorize("@ss.hasPermi('doc:tech:edit')")
+    @Log(title = "技术通报", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TechnologyDoc technologyDoc)
+    {
+        return toAjax(technologyDocService.updateTechnologyDoc(technologyDoc));
+    }
+
+    /**
+     * 删除技术通报
+     */
+    @PreAuthorize("@ss.hasPermi('doc:tech:remove')")
+    @Log(title = "技术通报", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(technologyDocService.deleteTechnologyDocByIds(ids));
+    }
+}

+ 104 - 0
kgraph-admin/src/main/java/com/kgraph/web/controller/TextbookDocController.java

@@ -0,0 +1,104 @@
+package com.kgraph.web.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.kgraph.common.annotation.Log;;
+import com.kgraph.common.core.controller.BaseController;;
+import com.kgraph.common.core.domain.AjaxResult;;
+import com.kgraph.common.enums.BusinessType;;
+import com.kgraph.web.domain.TextbookDoc;
+import com.kgraph.web.service.ITextbookDocService;
+import com.kgraph.common.utils.poi.ExcelUtil;;
+import com.kgraph.common.core.page.TableDataInfo;;
+
+/**
+ * 教材Controller
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@RestController
+@RequestMapping("/doc/textbook")
+public class TextbookDocController extends BaseController
+{
+    @Autowired
+    private ITextbookDocService textbookDocService;
+
+    /**
+     * 查询教材列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:textbook:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TextbookDoc textbookDoc)
+    {
+        startPage();
+        List<TextbookDoc> list = textbookDocService.selectTextbookDocList(textbookDoc);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出教材列表
+     */
+    @PreAuthorize("@ss.hasPermi('doc:textbook:export')")
+    @Log(title = "教材", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TextbookDoc textbookDoc)
+    {
+        List<TextbookDoc> list = textbookDocService.selectTextbookDocList(textbookDoc);
+        ExcelUtil<TextbookDoc> util = new ExcelUtil<TextbookDoc>(TextbookDoc.class);
+        util.exportExcel(response, list, "教材数据");
+    }
+
+    /**
+     * 获取教材详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('doc:textbook:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(textbookDocService.selectTextbookDocById(id));
+    }
+
+    /**
+     * 新增教材
+     */
+    @PreAuthorize("@ss.hasPermi('doc:textbook:add')")
+    @Log(title = "教材", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TextbookDoc textbookDoc)
+    {
+        return toAjax(textbookDocService.insertTextbookDoc(textbookDoc));
+    }
+
+    /**
+     * 修改教材
+     */
+    @PreAuthorize("@ss.hasPermi('doc:textbook:edit')")
+    @Log(title = "教材", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TextbookDoc textbookDoc)
+    {
+        return toAjax(textbookDocService.updateTextbookDoc(textbookDoc));
+    }
+
+    /**
+     * 删除教材
+     */
+    @PreAuthorize("@ss.hasPermi('doc:textbook:remove')")
+    @Log(title = "教材", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(textbookDocService.deleteTextbookDocByIds(ids));
+    }
+}

+ 268 - 0
kgraph-admin/src/main/java/com/kgraph/web/domain/Breakdown.java

@@ -0,0 +1,268 @@
+package com.kgraph.web.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 故障信息对象 t_breakdown
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public class Breakdown extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 战区 */
+    @Excel(name = "战区")
+    private String warZone;
+
+    /** 单位 */
+    @Excel(name = "单位")
+    private String organization;
+
+    /** 发现时机 */
+    @Excel(name = "发现时机")
+    private String discoveryTiming;
+
+    /** 专业 */
+    @Excel(name = "专业")
+    private String major;
+
+    /** 故障描述 */
+    @Excel(name = "故障描述")
+    private String describe;
+
+    /** 故障原因 */
+    @Excel(name = "故障原因")
+    private String reason;
+
+    /** 故障件名称 */
+    @Excel(name = "故障件名称")
+    private String unitName;
+
+    /** 故障件型别 */
+    @Excel(name = "故障件型别")
+    private String unitType;
+
+    /** 故障件所属系统 */
+    @Excel(name = "故障件所属系统")
+    private String unitSystem;
+
+    /** 故障后果 */
+    @Excel(name = "故障后果")
+    private String consequence;
+
+    /** 故障责任 */
+    @Excel(name = "故障责任")
+    private String duty;
+
+    /** 故障件名称 */
+    @Excel(name = "故障件名称")
+    private String name;
+
+    /** 故障件号码 */
+    @Excel(name = "故障件号码")
+    private String number;
+
+    /** 排除方法 */
+    @Excel(name = "排除方法")
+    private String method;
+
+    /** 故障修复时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "故障修复时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date repairTime;
+
+    /** 故障状态 */
+    @Excel(name = "故障状态")
+    private String status;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setWarZone(String warZone) 
+    {
+        this.warZone = warZone;
+    }
+
+    public String getWarZone() 
+    {
+        return warZone;
+    }
+    public void setOrganization(String organization) 
+    {
+        this.organization = organization;
+    }
+
+    public String getOrganization() 
+    {
+        return organization;
+    }
+    public void setDiscoveryTiming(String discoveryTiming) 
+    {
+        this.discoveryTiming = discoveryTiming;
+    }
+
+    public String getDiscoveryTiming() 
+    {
+        return discoveryTiming;
+    }
+    public void setMajor(String major) 
+    {
+        this.major = major;
+    }
+
+    public String getMajor() 
+    {
+        return major;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setReason(String reason) 
+    {
+        this.reason = reason;
+    }
+
+    public String getReason() 
+    {
+        return reason;
+    }
+    public void setUnitName(String unitName) 
+    {
+        this.unitName = unitName;
+    }
+
+    public String getUnitName() 
+    {
+        return unitName;
+    }
+    public void setUnitType(String unitType) 
+    {
+        this.unitType = unitType;
+    }
+
+    public String getUnitType() 
+    {
+        return unitType;
+    }
+    public void setUnitSystem(String unitSystem) 
+    {
+        this.unitSystem = unitSystem;
+    }
+
+    public String getUnitSystem() 
+    {
+        return unitSystem;
+    }
+    public void setConsequence(String consequence) 
+    {
+        this.consequence = consequence;
+    }
+
+    public String getConsequence() 
+    {
+        return consequence;
+    }
+    public void setDuty(String duty) 
+    {
+        this.duty = duty;
+    }
+
+    public String getDuty() 
+    {
+        return duty;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setNumber(String number) 
+    {
+        this.number = number;
+    }
+
+    public String getNumber() 
+    {
+        return number;
+    }
+    public void setMethod(String method) 
+    {
+        this.method = method;
+    }
+
+    public String getMethod() 
+    {
+        return method;
+    }
+    public void setRepairTime(Date repairTime) 
+    {
+        this.repairTime = repairTime;
+    }
+
+    public Date getRepairTime() 
+    {
+        return repairTime;
+    }
+    public void setStatus(String status) 
+    {
+        this.status = status;
+    }
+
+    public String getStatus() 
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("warZone", getWarZone())
+            .append("organization", getOrganization())
+            .append("discoveryTiming", getDiscoveryTiming())
+            .append("major", getMajor())
+            .append("describe", getDescribe())
+            .append("reason", getReason())
+            .append("unitName", getUnitName())
+            .append("unitType", getUnitType())
+            .append("unitSystem", getUnitSystem())
+            .append("consequence", getConsequence())
+            .append("duty", getDuty())
+            .append("name", getName())
+            .append("number", getNumber())
+            .append("method", getMethod())
+            .append("repairTime", getRepairTime())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 97 - 0
kgraph-admin/src/main/java/com/kgraph/web/domain/CaseDoc.java

@@ -0,0 +1,97 @@
+package com.kgraph.web.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 案例对象 t_case_doc
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public class CaseDoc extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String describe;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 文件 */
+    @Excel(name = "文件")
+    private String filePath;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setFilePath(String filePath) 
+    {
+        this.filePath = filePath;
+    }
+
+    public String getFilePath() 
+    {
+        return filePath;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("describe", getDescribe())
+            .append("type", getType())
+            .append("filePath", getFilePath())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 97 - 0
kgraph-admin/src/main/java/com/kgraph/web/domain/RandomDoc.java

@@ -0,0 +1,97 @@
+package com.kgraph.web.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 随机资料对象 t_random_doc
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public class RandomDoc extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String describe;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 文件 */
+    @Excel(name = "文件")
+    private String filePath;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setFilePath(String filePath) 
+    {
+        this.filePath = filePath;
+    }
+
+    public String getFilePath() 
+    {
+        return filePath;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("describe", getDescribe())
+            .append("type", getType())
+            .append("filePath", getFilePath())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 97 - 0
kgraph-admin/src/main/java/com/kgraph/web/domain/TechnologyDoc.java

@@ -0,0 +1,97 @@
+package com.kgraph.web.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 技术通报对象 t_technology_doc
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public class TechnologyDoc extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String describe;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 文件 */
+    @Excel(name = "文件")
+    private String filePath;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setFilePath(String filePath) 
+    {
+        this.filePath = filePath;
+    }
+
+    public String getFilePath() 
+    {
+        return filePath;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("describe", getDescribe())
+            .append("type", getType())
+            .append("filePath", getFilePath())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 97 - 0
kgraph-admin/src/main/java/com/kgraph/web/domain/TextbookDoc.java

@@ -0,0 +1,97 @@
+package com.kgraph.web.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.kgraph.common.annotation.Excel;
+import com.kgraph.common.core.domain.BaseEntity;;
+
+/**
+ * 教材对象 t_textbook_doc
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public class TextbookDoc extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 名称 */
+    @Excel(name = "名称")
+    private String name;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String describe;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 文件 */
+    @Excel(name = "文件")
+    private String filePath;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setName(String name) 
+    {
+        this.name = name;
+    }
+
+    public String getName() 
+    {
+        return name;
+    }
+    public void setDescribe(String describe) 
+    {
+        this.describe = describe;
+    }
+
+    public String getDescribe() 
+    {
+        return describe;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setFilePath(String filePath) 
+    {
+        this.filePath = filePath;
+    }
+
+    public String getFilePath() 
+    {
+        return filePath;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("name", getName())
+            .append("describe", getDescribe())
+            .append("type", getType())
+            .append("filePath", getFilePath())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/mapper/BreakdownMapper.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.mapper;
+
+import java.util.List;
+import com.kgraph.web.domain.Breakdown;
+
+/**
+ * 故障信息Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface BreakdownMapper 
+{
+    /**
+     * 查询故障信息
+     * 
+     * @param id 故障信息主键
+     * @return 故障信息
+     */
+    public Breakdown selectBreakdownById(Long id);
+
+    /**
+     * 查询故障信息列表
+     * 
+     * @param breakdown 故障信息
+     * @return 故障信息集合
+     */
+    public List<Breakdown> selectBreakdownList(Breakdown breakdown);
+
+    /**
+     * 新增故障信息
+     * 
+     * @param breakdown 故障信息
+     * @return 结果
+     */
+    public int insertBreakdown(Breakdown breakdown);
+
+    /**
+     * 修改故障信息
+     * 
+     * @param breakdown 故障信息
+     * @return 结果
+     */
+    public int updateBreakdown(Breakdown breakdown);
+
+    /**
+     * 删除故障信息
+     * 
+     * @param id 故障信息主键
+     * @return 结果
+     */
+    public int deleteBreakdownById(Long id);
+
+    /**
+     * 批量删除故障信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteBreakdownByIds(Long[] ids);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/mapper/CaseDocMapper.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.mapper;
+
+import java.util.List;
+import com.kgraph.web.domain.CaseDoc;
+
+/**
+ * 案例Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface CaseDocMapper 
+{
+    /**
+     * 查询案例
+     * 
+     * @param id 案例主键
+     * @return 案例
+     */
+    public CaseDoc selectCaseDocById(Long id);
+
+    /**
+     * 查询案例列表
+     * 
+     * @param caseDoc 案例
+     * @return 案例集合
+     */
+    public List<CaseDoc> selectCaseDocList(CaseDoc caseDoc);
+
+    /**
+     * 新增案例
+     * 
+     * @param caseDoc 案例
+     * @return 结果
+     */
+    public int insertCaseDoc(CaseDoc caseDoc);
+
+    /**
+     * 修改案例
+     * 
+     * @param caseDoc 案例
+     * @return 结果
+     */
+    public int updateCaseDoc(CaseDoc caseDoc);
+
+    /**
+     * 删除案例
+     * 
+     * @param id 案例主键
+     * @return 结果
+     */
+    public int deleteCaseDocById(Long id);
+
+    /**
+     * 批量删除案例
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCaseDocByIds(Long[] ids);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/mapper/RandomDocMapper.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.mapper;
+
+import java.util.List;
+import com.kgraph.web.domain.RandomDoc;
+
+/**
+ * 随机资料Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface RandomDocMapper 
+{
+    /**
+     * 查询随机资料
+     * 
+     * @param id 随机资料主键
+     * @return 随机资料
+     */
+    public RandomDoc selectRandomDocById(Long id);
+
+    /**
+     * 查询随机资料列表
+     * 
+     * @param randomDoc 随机资料
+     * @return 随机资料集合
+     */
+    public List<RandomDoc> selectRandomDocList(RandomDoc randomDoc);
+
+    /**
+     * 新增随机资料
+     * 
+     * @param randomDoc 随机资料
+     * @return 结果
+     */
+    public int insertRandomDoc(RandomDoc randomDoc);
+
+    /**
+     * 修改随机资料
+     * 
+     * @param randomDoc 随机资料
+     * @return 结果
+     */
+    public int updateRandomDoc(RandomDoc randomDoc);
+
+    /**
+     * 删除随机资料
+     * 
+     * @param id 随机资料主键
+     * @return 结果
+     */
+    public int deleteRandomDocById(Long id);
+
+    /**
+     * 批量删除随机资料
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteRandomDocByIds(Long[] ids);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/mapper/TechnologyDocMapper.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.mapper;
+
+import java.util.List;
+import com.kgraph.web.domain.TechnologyDoc;
+
+/**
+ * 技术通报Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface TechnologyDocMapper 
+{
+    /**
+     * 查询技术通报
+     * 
+     * @param id 技术通报主键
+     * @return 技术通报
+     */
+    public TechnologyDoc selectTechnologyDocById(Long id);
+
+    /**
+     * 查询技术通报列表
+     * 
+     * @param technologyDoc 技术通报
+     * @return 技术通报集合
+     */
+    public List<TechnologyDoc> selectTechnologyDocList(TechnologyDoc technologyDoc);
+
+    /**
+     * 新增技术通报
+     * 
+     * @param technologyDoc 技术通报
+     * @return 结果
+     */
+    public int insertTechnologyDoc(TechnologyDoc technologyDoc);
+
+    /**
+     * 修改技术通报
+     * 
+     * @param technologyDoc 技术通报
+     * @return 结果
+     */
+    public int updateTechnologyDoc(TechnologyDoc technologyDoc);
+
+    /**
+     * 删除技术通报
+     * 
+     * @param id 技术通报主键
+     * @return 结果
+     */
+    public int deleteTechnologyDocById(Long id);
+
+    /**
+     * 批量删除技术通报
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTechnologyDocByIds(Long[] ids);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/mapper/TextbookDocMapper.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.mapper;
+
+import java.util.List;
+import com.kgraph.web.domain.TextbookDoc;
+
+/**
+ * 教材Mapper接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface TextbookDocMapper 
+{
+    /**
+     * 查询教材
+     * 
+     * @param id 教材主键
+     * @return 教材
+     */
+    public TextbookDoc selectTextbookDocById(Long id);
+
+    /**
+     * 查询教材列表
+     * 
+     * @param textbookDoc 教材
+     * @return 教材集合
+     */
+    public List<TextbookDoc> selectTextbookDocList(TextbookDoc textbookDoc);
+
+    /**
+     * 新增教材
+     * 
+     * @param textbookDoc 教材
+     * @return 结果
+     */
+    public int insertTextbookDoc(TextbookDoc textbookDoc);
+
+    /**
+     * 修改教材
+     * 
+     * @param textbookDoc 教材
+     * @return 结果
+     */
+    public int updateTextbookDoc(TextbookDoc textbookDoc);
+
+    /**
+     * 删除教材
+     * 
+     * @param id 教材主键
+     * @return 结果
+     */
+    public int deleteTextbookDocById(Long id);
+
+    /**
+     * 批量删除教材
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTextbookDocByIds(Long[] ids);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/IBreakdownService.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.service;
+
+import java.util.List;
+import com.kgraph.web.domain.Breakdown;
+
+/**
+ * 故障信息Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface IBreakdownService 
+{
+    /**
+     * 查询故障信息
+     * 
+     * @param id 故障信息主键
+     * @return 故障信息
+     */
+    public Breakdown selectBreakdownById(Long id);
+
+    /**
+     * 查询故障信息列表
+     * 
+     * @param breakdown 故障信息
+     * @return 故障信息集合
+     */
+    public List<Breakdown> selectBreakdownList(Breakdown breakdown);
+
+    /**
+     * 新增故障信息
+     * 
+     * @param breakdown 故障信息
+     * @return 结果
+     */
+    public int insertBreakdown(Breakdown breakdown);
+
+    /**
+     * 修改故障信息
+     * 
+     * @param breakdown 故障信息
+     * @return 结果
+     */
+    public int updateBreakdown(Breakdown breakdown);
+
+    /**
+     * 批量删除故障信息
+     * 
+     * @param ids 需要删除的故障信息主键集合
+     * @return 结果
+     */
+    public int deleteBreakdownByIds(Long[] ids);
+
+    /**
+     * 删除故障信息信息
+     * 
+     * @param id 故障信息主键
+     * @return 结果
+     */
+    public int deleteBreakdownById(Long id);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/ICaseDocService.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.service;
+
+import java.util.List;
+import com.kgraph.web.domain.CaseDoc;
+
+/**
+ * 案例Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface ICaseDocService 
+{
+    /**
+     * 查询案例
+     * 
+     * @param id 案例主键
+     * @return 案例
+     */
+    public CaseDoc selectCaseDocById(Long id);
+
+    /**
+     * 查询案例列表
+     * 
+     * @param caseDoc 案例
+     * @return 案例集合
+     */
+    public List<CaseDoc> selectCaseDocList(CaseDoc caseDoc);
+
+    /**
+     * 新增案例
+     * 
+     * @param caseDoc 案例
+     * @return 结果
+     */
+    public int insertCaseDoc(CaseDoc caseDoc);
+
+    /**
+     * 修改案例
+     * 
+     * @param caseDoc 案例
+     * @return 结果
+     */
+    public int updateCaseDoc(CaseDoc caseDoc);
+
+    /**
+     * 批量删除案例
+     * 
+     * @param ids 需要删除的案例主键集合
+     * @return 结果
+     */
+    public int deleteCaseDocByIds(Long[] ids);
+
+    /**
+     * 删除案例信息
+     * 
+     * @param id 案例主键
+     * @return 结果
+     */
+    public int deleteCaseDocById(Long id);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/IRandomDocService.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.service;
+
+import java.util.List;
+import com.kgraph.web.domain.RandomDoc;
+
+/**
+ * 随机资料Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface IRandomDocService 
+{
+    /**
+     * 查询随机资料
+     * 
+     * @param id 随机资料主键
+     * @return 随机资料
+     */
+    public RandomDoc selectRandomDocById(Long id);
+
+    /**
+     * 查询随机资料列表
+     * 
+     * @param randomDoc 随机资料
+     * @return 随机资料集合
+     */
+    public List<RandomDoc> selectRandomDocList(RandomDoc randomDoc);
+
+    /**
+     * 新增随机资料
+     * 
+     * @param randomDoc 随机资料
+     * @return 结果
+     */
+    public int insertRandomDoc(RandomDoc randomDoc);
+
+    /**
+     * 修改随机资料
+     * 
+     * @param randomDoc 随机资料
+     * @return 结果
+     */
+    public int updateRandomDoc(RandomDoc randomDoc);
+
+    /**
+     * 批量删除随机资料
+     * 
+     * @param ids 需要删除的随机资料主键集合
+     * @return 结果
+     */
+    public int deleteRandomDocByIds(Long[] ids);
+
+    /**
+     * 删除随机资料信息
+     * 
+     * @param id 随机资料主键
+     * @return 结果
+     */
+    public int deleteRandomDocById(Long id);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/ITechnologyDocService.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.service;
+
+import java.util.List;
+import com.kgraph.web.domain.TechnologyDoc;
+
+/**
+ * 技术通报Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface ITechnologyDocService 
+{
+    /**
+     * 查询技术通报
+     * 
+     * @param id 技术通报主键
+     * @return 技术通报
+     */
+    public TechnologyDoc selectTechnologyDocById(Long id);
+
+    /**
+     * 查询技术通报列表
+     * 
+     * @param technologyDoc 技术通报
+     * @return 技术通报集合
+     */
+    public List<TechnologyDoc> selectTechnologyDocList(TechnologyDoc technologyDoc);
+
+    /**
+     * 新增技术通报
+     * 
+     * @param technologyDoc 技术通报
+     * @return 结果
+     */
+    public int insertTechnologyDoc(TechnologyDoc technologyDoc);
+
+    /**
+     * 修改技术通报
+     * 
+     * @param technologyDoc 技术通报
+     * @return 结果
+     */
+    public int updateTechnologyDoc(TechnologyDoc technologyDoc);
+
+    /**
+     * 批量删除技术通报
+     * 
+     * @param ids 需要删除的技术通报主键集合
+     * @return 结果
+     */
+    public int deleteTechnologyDocByIds(Long[] ids);
+
+    /**
+     * 删除技术通报信息
+     * 
+     * @param id 技术通报主键
+     * @return 结果
+     */
+    public int deleteTechnologyDocById(Long id);
+}

+ 61 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/ITextbookDocService.java

@@ -0,0 +1,61 @@
+package com.kgraph.web.service;
+
+import java.util.List;
+import com.kgraph.web.domain.TextbookDoc;
+
+/**
+ * 教材Service接口
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+public interface ITextbookDocService 
+{
+    /**
+     * 查询教材
+     * 
+     * @param id 教材主键
+     * @return 教材
+     */
+    public TextbookDoc selectTextbookDocById(Long id);
+
+    /**
+     * 查询教材列表
+     * 
+     * @param textbookDoc 教材
+     * @return 教材集合
+     */
+    public List<TextbookDoc> selectTextbookDocList(TextbookDoc textbookDoc);
+
+    /**
+     * 新增教材
+     * 
+     * @param textbookDoc 教材
+     * @return 结果
+     */
+    public int insertTextbookDoc(TextbookDoc textbookDoc);
+
+    /**
+     * 修改教材
+     * 
+     * @param textbookDoc 教材
+     * @return 结果
+     */
+    public int updateTextbookDoc(TextbookDoc textbookDoc);
+
+    /**
+     * 批量删除教材
+     * 
+     * @param ids 需要删除的教材主键集合
+     * @return 结果
+     */
+    public int deleteTextbookDocByIds(Long[] ids);
+
+    /**
+     * 删除教材信息
+     * 
+     * @param id 教材主键
+     * @return 结果
+     */
+    public int deleteTextbookDocById(Long id);
+}

+ 96 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/impl/BreakdownServiceImpl.java

@@ -0,0 +1,96 @@
+package com.kgraph.web.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.web.mapper.BreakdownMapper;
+import com.kgraph.web.domain.Breakdown;
+import com.kgraph.web.service.IBreakdownService;
+
+/**
+ * 故障信息Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@Service
+public class BreakdownServiceImpl implements IBreakdownService 
+{
+    @Autowired
+    private BreakdownMapper breakdownMapper;
+
+    /**
+     * 查询故障信息
+     * 
+     * @param id 故障信息主键
+     * @return 故障信息
+     */
+    @Override
+    public Breakdown selectBreakdownById(Long id)
+    {
+        return breakdownMapper.selectBreakdownById(id);
+    }
+
+    /**
+     * 查询故障信息列表
+     * 
+     * @param breakdown 故障信息
+     * @return 故障信息
+     */
+    @Override
+    public List<Breakdown> selectBreakdownList(Breakdown breakdown)
+    {
+        return breakdownMapper.selectBreakdownList(breakdown);
+    }
+
+    /**
+     * 新增故障信息
+     * 
+     * @param breakdown 故障信息
+     * @return 结果
+     */
+    @Override
+    public int insertBreakdown(Breakdown breakdown)
+    {
+        breakdown.setCreateTime(DateUtils.getNowDate());
+        return breakdownMapper.insertBreakdown(breakdown);
+    }
+
+    /**
+     * 修改故障信息
+     * 
+     * @param breakdown 故障信息
+     * @return 结果
+     */
+    @Override
+    public int updateBreakdown(Breakdown breakdown)
+    {
+        breakdown.setUpdateTime(DateUtils.getNowDate());
+        return breakdownMapper.updateBreakdown(breakdown);
+    }
+
+    /**
+     * 批量删除故障信息
+     * 
+     * @param ids 需要删除的故障信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBreakdownByIds(Long[] ids)
+    {
+        return breakdownMapper.deleteBreakdownByIds(ids);
+    }
+
+    /**
+     * 删除故障信息信息
+     * 
+     * @param id 故障信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBreakdownById(Long id)
+    {
+        return breakdownMapper.deleteBreakdownById(id);
+    }
+}

+ 96 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/impl/CaseDocServiceImpl.java

@@ -0,0 +1,96 @@
+package com.kgraph.web.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.web.mapper.CaseDocMapper;
+import com.kgraph.web.domain.CaseDoc;
+import com.kgraph.web.service.ICaseDocService;
+
+/**
+ * 案例Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@Service
+public class CaseDocServiceImpl implements ICaseDocService 
+{
+    @Autowired
+    private CaseDocMapper caseDocMapper;
+
+    /**
+     * 查询案例
+     * 
+     * @param id 案例主键
+     * @return 案例
+     */
+    @Override
+    public CaseDoc selectCaseDocById(Long id)
+    {
+        return caseDocMapper.selectCaseDocById(id);
+    }
+
+    /**
+     * 查询案例列表
+     * 
+     * @param caseDoc 案例
+     * @return 案例
+     */
+    @Override
+    public List<CaseDoc> selectCaseDocList(CaseDoc caseDoc)
+    {
+        return caseDocMapper.selectCaseDocList(caseDoc);
+    }
+
+    /**
+     * 新增案例
+     * 
+     * @param caseDoc 案例
+     * @return 结果
+     */
+    @Override
+    public int insertCaseDoc(CaseDoc caseDoc)
+    {
+        caseDoc.setCreateTime(DateUtils.getNowDate());
+        return caseDocMapper.insertCaseDoc(caseDoc);
+    }
+
+    /**
+     * 修改案例
+     * 
+     * @param caseDoc 案例
+     * @return 结果
+     */
+    @Override
+    public int updateCaseDoc(CaseDoc caseDoc)
+    {
+        caseDoc.setUpdateTime(DateUtils.getNowDate());
+        return caseDocMapper.updateCaseDoc(caseDoc);
+    }
+
+    /**
+     * 批量删除案例
+     * 
+     * @param ids 需要删除的案例主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCaseDocByIds(Long[] ids)
+    {
+        return caseDocMapper.deleteCaseDocByIds(ids);
+    }
+
+    /**
+     * 删除案例信息
+     * 
+     * @param id 案例主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCaseDocById(Long id)
+    {
+        return caseDocMapper.deleteCaseDocById(id);
+    }
+}

+ 96 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/impl/RandomDocServiceImpl.java

@@ -0,0 +1,96 @@
+package com.kgraph.web.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.web.mapper.RandomDocMapper;
+import com.kgraph.web.domain.RandomDoc;
+import com.kgraph.web.service.IRandomDocService;
+
+/**
+ * 随机资料Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@Service
+public class RandomDocServiceImpl implements IRandomDocService 
+{
+    @Autowired
+    private RandomDocMapper randomDocMapper;
+
+    /**
+     * 查询随机资料
+     * 
+     * @param id 随机资料主键
+     * @return 随机资料
+     */
+    @Override
+    public RandomDoc selectRandomDocById(Long id)
+    {
+        return randomDocMapper.selectRandomDocById(id);
+    }
+
+    /**
+     * 查询随机资料列表
+     * 
+     * @param randomDoc 随机资料
+     * @return 随机资料
+     */
+    @Override
+    public List<RandomDoc> selectRandomDocList(RandomDoc randomDoc)
+    {
+        return randomDocMapper.selectRandomDocList(randomDoc);
+    }
+
+    /**
+     * 新增随机资料
+     * 
+     * @param randomDoc 随机资料
+     * @return 结果
+     */
+    @Override
+    public int insertRandomDoc(RandomDoc randomDoc)
+    {
+        randomDoc.setCreateTime(DateUtils.getNowDate());
+        return randomDocMapper.insertRandomDoc(randomDoc);
+    }
+
+    /**
+     * 修改随机资料
+     * 
+     * @param randomDoc 随机资料
+     * @return 结果
+     */
+    @Override
+    public int updateRandomDoc(RandomDoc randomDoc)
+    {
+        randomDoc.setUpdateTime(DateUtils.getNowDate());
+        return randomDocMapper.updateRandomDoc(randomDoc);
+    }
+
+    /**
+     * 批量删除随机资料
+     * 
+     * @param ids 需要删除的随机资料主键
+     * @return 结果
+     */
+    @Override
+    public int deleteRandomDocByIds(Long[] ids)
+    {
+        return randomDocMapper.deleteRandomDocByIds(ids);
+    }
+
+    /**
+     * 删除随机资料信息
+     * 
+     * @param id 随机资料主键
+     * @return 结果
+     */
+    @Override
+    public int deleteRandomDocById(Long id)
+    {
+        return randomDocMapper.deleteRandomDocById(id);
+    }
+}

+ 96 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/impl/TechnologyDocServiceImpl.java

@@ -0,0 +1,96 @@
+package com.kgraph.web.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.web.mapper.TechnologyDocMapper;
+import com.kgraph.web.domain.TechnologyDoc;
+import com.kgraph.web.service.ITechnologyDocService;
+
+/**
+ * 技术通报Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@Service
+public class TechnologyDocServiceImpl implements ITechnologyDocService 
+{
+    @Autowired
+    private TechnologyDocMapper technologyDocMapper;
+
+    /**
+     * 查询技术通报
+     * 
+     * @param id 技术通报主键
+     * @return 技术通报
+     */
+    @Override
+    public TechnologyDoc selectTechnologyDocById(Long id)
+    {
+        return technologyDocMapper.selectTechnologyDocById(id);
+    }
+
+    /**
+     * 查询技术通报列表
+     * 
+     * @param technologyDoc 技术通报
+     * @return 技术通报
+     */
+    @Override
+    public List<TechnologyDoc> selectTechnologyDocList(TechnologyDoc technologyDoc)
+    {
+        return technologyDocMapper.selectTechnologyDocList(technologyDoc);
+    }
+
+    /**
+     * 新增技术通报
+     * 
+     * @param technologyDoc 技术通报
+     * @return 结果
+     */
+    @Override
+    public int insertTechnologyDoc(TechnologyDoc technologyDoc)
+    {
+        technologyDoc.setCreateTime(DateUtils.getNowDate());
+        return technologyDocMapper.insertTechnologyDoc(technologyDoc);
+    }
+
+    /**
+     * 修改技术通报
+     * 
+     * @param technologyDoc 技术通报
+     * @return 结果
+     */
+    @Override
+    public int updateTechnologyDoc(TechnologyDoc technologyDoc)
+    {
+        technologyDoc.setUpdateTime(DateUtils.getNowDate());
+        return technologyDocMapper.updateTechnologyDoc(technologyDoc);
+    }
+
+    /**
+     * 批量删除技术通报
+     * 
+     * @param ids 需要删除的技术通报主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTechnologyDocByIds(Long[] ids)
+    {
+        return technologyDocMapper.deleteTechnologyDocByIds(ids);
+    }
+
+    /**
+     * 删除技术通报信息
+     * 
+     * @param id 技术通报主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTechnologyDocById(Long id)
+    {
+        return technologyDocMapper.deleteTechnologyDocById(id);
+    }
+}

+ 96 - 0
kgraph-admin/src/main/java/com/kgraph/web/service/impl/TextbookDocServiceImpl.java

@@ -0,0 +1,96 @@
+package com.kgraph.web.service.impl;
+
+import java.util.List;
+import com.kgraph.common.utils.DateUtils;;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.kgraph.web.mapper.TextbookDocMapper;
+import com.kgraph.web.domain.TextbookDoc;
+import com.kgraph.web.service.ITextbookDocService;
+
+/**
+ * 教材Service业务层处理
+ * 
+ * @author Allen
+ * @date 2023-04-13
+ */
+@Service
+public class TextbookDocServiceImpl implements ITextbookDocService 
+{
+    @Autowired
+    private TextbookDocMapper textbookDocMapper;
+
+    /**
+     * 查询教材
+     * 
+     * @param id 教材主键
+     * @return 教材
+     */
+    @Override
+    public TextbookDoc selectTextbookDocById(Long id)
+    {
+        return textbookDocMapper.selectTextbookDocById(id);
+    }
+
+    /**
+     * 查询教材列表
+     * 
+     * @param textbookDoc 教材
+     * @return 教材
+     */
+    @Override
+    public List<TextbookDoc> selectTextbookDocList(TextbookDoc textbookDoc)
+    {
+        return textbookDocMapper.selectTextbookDocList(textbookDoc);
+    }
+
+    /**
+     * 新增教材
+     * 
+     * @param textbookDoc 教材
+     * @return 结果
+     */
+    @Override
+    public int insertTextbookDoc(TextbookDoc textbookDoc)
+    {
+        textbookDoc.setCreateTime(DateUtils.getNowDate());
+        return textbookDocMapper.insertTextbookDoc(textbookDoc);
+    }
+
+    /**
+     * 修改教材
+     * 
+     * @param textbookDoc 教材
+     * @return 结果
+     */
+    @Override
+    public int updateTextbookDoc(TextbookDoc textbookDoc)
+    {
+        textbookDoc.setUpdateTime(DateUtils.getNowDate());
+        return textbookDocMapper.updateTextbookDoc(textbookDoc);
+    }
+
+    /**
+     * 批量删除教材
+     * 
+     * @param ids 需要删除的教材主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTextbookDocByIds(Long[] ids)
+    {
+        return textbookDocMapper.deleteTextbookDocByIds(ids);
+    }
+
+    /**
+     * 删除教材信息
+     * 
+     * @param id 教材主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTextbookDocById(Long id)
+    {
+        return textbookDocMapper.deleteTextbookDocById(id);
+    }
+}

+ 87 - 0
kgraph-admin/src/main/resources/mapper/doc/CaseDocMapper.xml

@@ -0,0 +1,87 @@
+<?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.kgraph.web.mapper.CaseDocMapper">
+    
+    <resultMap type="CaseDoc" id="CaseDocResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="describe"    column="describe"    />
+        <result property="type"    column="type"    />
+        <result property="filePath"    column="file_path"    />
+        <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="selectCaseDocVo">
+        select id, `name`, `describe`, type, file_path, create_by, create_time, update_by, update_time from t_case_doc
+    </sql>
+
+    <select id="selectCaseDocList" parameterType="CaseDoc" resultMap="CaseDocResult">
+        <include refid="selectCaseDocVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and `name` like concat('%', #{name}, '%')</if>
+            <if test="describe != null  and describe != ''"> and `describe` = #{describe}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="filePath != null  and filePath != ''"> and file_path = #{filePath}</if>
+        </where>
+    </select>
+    
+    <select id="selectCaseDocById" parameterType="Long" resultMap="CaseDocResult">
+        <include refid="selectCaseDocVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertCaseDoc" parameterType="CaseDoc" useGeneratedKeys="true" keyProperty="id">
+        insert into t_case_doc
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">`name`,</if>
+            <if test="describe != null">`describe`,</if>
+            <if test="type != null">type,</if>
+            <if test="filePath != null">file_path,</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="name != null">#{name},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="type != null">#{type},</if>
+            <if test="filePath != null">#{filePath},</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="updateCaseDoc" parameterType="CaseDoc">
+        update t_case_doc
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="describe != null">`describe` = #{describe},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="filePath != null">file_path = #{filePath},</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="deleteCaseDocById" parameterType="Long">
+        delete from t_case_doc where id = #{id}
+    </delete>
+
+    <delete id="deleteCaseDocByIds" parameterType="String">
+        delete from t_case_doc where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 87 - 0
kgraph-admin/src/main/resources/mapper/doc/RandomDocMapper.xml

@@ -0,0 +1,87 @@
+<?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.kgraph.web.mapper.RandomDocMapper">
+    
+    <resultMap type="RandomDoc" id="RandomDocResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="describe"    column="describe"    />
+        <result property="type"    column="type"    />
+        <result property="filePath"    column="file_path"    />
+        <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="selectRandomDocVo">
+        select id, `name`, `describe`, type, file_path, create_by, create_time, update_by, update_time from t_random_doc
+    </sql>
+
+    <select id="selectRandomDocList" parameterType="RandomDoc" resultMap="RandomDocResult">
+        <include refid="selectRandomDocVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and `name` like concat('%', #{name}, '%')</if>
+            <if test="describe != null  and describe != ''"> and `describe` = #{describe}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="filePath != null  and filePath != ''"> and file_path = #{filePath}</if>
+        </where>
+    </select>
+    
+    <select id="selectRandomDocById" parameterType="Long" resultMap="RandomDocResult">
+        <include refid="selectRandomDocVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertRandomDoc" parameterType="RandomDoc" useGeneratedKeys="true" keyProperty="id">
+        insert into t_random_doc
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">`name`,</if>
+            <if test="describe != null">`describe`,</if>
+            <if test="type != null">type,</if>
+            <if test="filePath != null">file_path,</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="name != null">#{name},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="type != null">#{type},</if>
+            <if test="filePath != null">#{filePath},</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="updateRandomDoc" parameterType="RandomDoc">
+        update t_random_doc
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="describe != null">`describe` = #{describe},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="filePath != null">file_path = #{filePath},</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="deleteRandomDocById" parameterType="Long">
+        delete from t_random_doc where id = #{id}
+    </delete>
+
+    <delete id="deleteRandomDocByIds" parameterType="String">
+        delete from t_random_doc where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 87 - 0
kgraph-admin/src/main/resources/mapper/doc/TechnologyDocMapper.xml

@@ -0,0 +1,87 @@
+<?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.kgraph.web.mapper.TechnologyDocMapper">
+    
+    <resultMap type="TechnologyDoc" id="TechnologyDocResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="describe"    column="describe"    />
+        <result property="type"    column="type"    />
+        <result property="filePath"    column="file_path"    />
+        <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="selectTechnologyDocVo">
+        select id, `name`, `describe`, type, file_path, create_by, create_time, update_by, update_time from t_technology_doc
+    </sql>
+
+    <select id="selectTechnologyDocList" parameterType="TechnologyDoc" resultMap="TechnologyDocResult">
+        <include refid="selectTechnologyDocVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and `name` like concat('%', #{name}, '%')</if>
+            <if test="describe != null  and describe != ''"> and `describe` = #{describe}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="filePath != null  and filePath != ''"> and file_path = #{filePath}</if>
+        </where>
+    </select>
+    
+    <select id="selectTechnologyDocById" parameterType="Long" resultMap="TechnologyDocResult">
+        <include refid="selectTechnologyDocVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTechnologyDoc" parameterType="TechnologyDoc" useGeneratedKeys="true" keyProperty="id">
+        insert into t_technology_doc
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">`name`,</if>
+            <if test="describe != null">`describe`,</if>
+            <if test="type != null">type,</if>
+            <if test="filePath != null">file_path,</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="name != null">#{name},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="type != null">#{type},</if>
+            <if test="filePath != null">#{filePath},</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="updateTechnologyDoc" parameterType="TechnologyDoc">
+        update t_technology_doc
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">`name` = #{name},</if>
+            <if test="describe != null">`describe` = #{describe},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="filePath != null">file_path = #{filePath},</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="deleteTechnologyDocById" parameterType="Long">
+        delete from t_technology_doc where id = #{id}
+    </delete>
+
+    <delete id="deleteTechnologyDocByIds" parameterType="String">
+        delete from t_technology_doc where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 87 - 0
kgraph-admin/src/main/resources/mapper/doc/TextbookDocMapper.xml

@@ -0,0 +1,87 @@
+<?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.kgraph.web.mapper.TextbookDocMapper">
+    
+    <resultMap type="TextbookDoc" id="TextbookDocResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="describe"    column="describe"    />
+        <result property="type"    column="type"    />
+        <result property="filePath"    column="file_path"    />
+        <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="selectTextbookDocVo">
+        select id, `name`, `describe`, type, file_path, create_by, create_time, update_by, update_time from t_textbook_doc
+    </sql>
+
+    <select id="selectTextbookDocList" parameterType="TextbookDoc" resultMap="TextbookDocResult">
+        <include refid="selectTextbookDocVo"/>
+        <where>  
+            <if test="name != null  and name != ''"> and `name` like concat('%', #{name}, '%')</if>
+            <if test="describe != null  and describe != ''"> and `describe` = #{describe}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="filePath != null  and filePath != ''"> and file_path = #{filePath}</if>
+        </where>
+    </select>
+    
+    <select id="selectTextbookDocById" parameterType="Long" resultMap="TextbookDocResult">
+        <include refid="selectTextbookDocVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTextbookDoc" parameterType="TextbookDoc" useGeneratedKeys="true" keyProperty="id">
+        insert into t_textbook_doc
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">`name`,</if>
+            <if test="describe != null">`describe`,</if>
+            <if test="type != null">type,</if>
+            <if test="filePath != null">file_path,</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="name != null">#{name},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="type != null">#{type},</if>
+            <if test="filePath != null">#{filePath},</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="updateTextbookDoc" parameterType="TextbookDoc">
+        update t_textbook_doc
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">`name` = #{name},</if>
+            <if test="describe != null">`describe` = #{describe},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="filePath != null">file_path = #{filePath},</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="deleteTextbookDocById" parameterType="Long">
+        delete from t_textbook_doc where id = #{id}
+    </delete>
+
+    <delete id="deleteTextbookDocByIds" parameterType="String">
+        delete from t_textbook_doc where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 147 - 0
kgraph-admin/src/main/resources/mapper/showInfo/BreakdownMapper.xml

@@ -0,0 +1,147 @@
+<?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.kgraph.web.mapper.BreakdownMapper">
+    
+    <resultMap type="Breakdown" id="BreakdownResult">
+        <result property="id"    column="id"    />
+        <result property="warZone"    column="war_zone"    />
+        <result property="organization"    column="organization"    />
+        <result property="discoveryTiming"    column="discovery_timing"    />
+        <result property="major"    column="major"    />
+        <result property="describe"    column="describe"    />
+        <result property="reason"    column="reason"    />
+        <result property="unitName"    column="unit_name"    />
+        <result property="unitType"    column="unit_type"    />
+        <result property="unitSystem"    column="unit_system"    />
+        <result property="consequence"    column="consequence"    />
+        <result property="duty"    column="duty"    />
+        <result property="name"    column="name"    />
+        <result property="number"    column="number"    />
+        <result property="method"    column="method"    />
+        <result property="repairTime"    column="repair_time"    />
+        <result property="status"    column="status"    />
+        <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="selectBreakdownVo">
+        select id, war_zone, organization, discovery_timing, major, describe, reason, unit_name, unit_type, unit_system, consequence, duty, name, number, method, repair_time, status, create_by, create_time, update_by, update_time from t_breakdown
+    </sql>
+
+    <select id="selectBreakdownList" parameterType="Breakdown" resultMap="BreakdownResult">
+        <include refid="selectBreakdownVo"/>
+        <where>  
+            <if test="warZone != null  and warZone != ''"> and war_zone = #{warZone}</if>
+            <if test="organization != null  and organization != ''"> and organization = #{organization}</if>
+            <if test="discoveryTiming != null  and discoveryTiming != ''"> and discovery_timing = #{discoveryTiming}</if>
+            <if test="major != null  and major != ''"> and major = #{major}</if>
+            <if test="describe != null  and describe != ''"> and describe = #{describe}</if>
+            <if test="reason != null  and reason != ''"> and reason = #{reason}</if>
+            <if test="unitName != null  and unitName != ''"> and unit_name like concat('%', #{unitName}, '%')</if>
+            <if test="unitType != null  and unitType != ''"> and unit_type = #{unitType}</if>
+            <if test="unitSystem != null  and unitSystem != ''"> and unit_system = #{unitSystem}</if>
+            <if test="consequence != null  and consequence != ''"> and consequence = #{consequence}</if>
+            <if test="duty != null  and duty != ''"> and duty = #{duty}</if>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="number != null  and number != ''"> and number = #{number}</if>
+            <if test="method != null  and method != ''"> and method = #{method}</if>
+            <if test="repairTime != null "> and repair_time = #{repairTime}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+        </where>
+    </select>
+    
+    <select id="selectBreakdownById" parameterType="Long" resultMap="BreakdownResult">
+        <include refid="selectBreakdownVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertBreakdown" parameterType="Breakdown" useGeneratedKeys="true" keyProperty="id">
+        insert into t_breakdown
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="warZone != null">war_zone,</if>
+            <if test="organization != null">organization,</if>
+            <if test="discoveryTiming != null">discovery_timing,</if>
+            <if test="major != null">major,</if>
+            <if test="describe != null">describe,</if>
+            <if test="reason != null">reason,</if>
+            <if test="unitName != null">unit_name,</if>
+            <if test="unitType != null">unit_type,</if>
+            <if test="unitSystem != null">unit_system,</if>
+            <if test="consequence != null">consequence,</if>
+            <if test="duty != null">duty,</if>
+            <if test="name != null">name,</if>
+            <if test="number != null">number,</if>
+            <if test="method != null">method,</if>
+            <if test="repairTime != null">repair_time,</if>
+            <if test="status != null">status,</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="warZone != null">#{warZone},</if>
+            <if test="organization != null">#{organization},</if>
+            <if test="discoveryTiming != null">#{discoveryTiming},</if>
+            <if test="major != null">#{major},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="reason != null">#{reason},</if>
+            <if test="unitName != null">#{unitName},</if>
+            <if test="unitType != null">#{unitType},</if>
+            <if test="unitSystem != null">#{unitSystem},</if>
+            <if test="consequence != null">#{consequence},</if>
+            <if test="duty != null">#{duty},</if>
+            <if test="name != null">#{name},</if>
+            <if test="number != null">#{number},</if>
+            <if test="method != null">#{method},</if>
+            <if test="repairTime != null">#{repairTime},</if>
+            <if test="status != null">#{status},</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="updateBreakdown" parameterType="Breakdown">
+        update t_breakdown
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="warZone != null">war_zone = #{warZone},</if>
+            <if test="organization != null">organization = #{organization},</if>
+            <if test="discoveryTiming != null">discovery_timing = #{discoveryTiming},</if>
+            <if test="major != null">major = #{major},</if>
+            <if test="describe != null">describe = #{describe},</if>
+            <if test="reason != null">reason = #{reason},</if>
+            <if test="unitName != null">unit_name = #{unitName},</if>
+            <if test="unitType != null">unit_type = #{unitType},</if>
+            <if test="unitSystem != null">unit_system = #{unitSystem},</if>
+            <if test="consequence != null">consequence = #{consequence},</if>
+            <if test="duty != null">duty = #{duty},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="number != null">number = #{number},</if>
+            <if test="method != null">method = #{method},</if>
+            <if test="repairTime != null">repair_time = #{repairTime},</if>
+            <if test="status != null">status = #{status},</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="deleteBreakdownById" parameterType="Long">
+        delete from t_breakdown where id = #{id}
+    </delete>
+
+    <delete id="deleteBreakdownByIds" parameterType="String">
+        delete from t_breakdown where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 6 - 1
kgraph-graph/src/main/java/com/kgraph/graph/suport/service/impl/ExtractKnowledgeSubTaskServiceImpl.java

@@ -18,6 +18,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -141,7 +142,11 @@ public class ExtractKnowledgeSubTaskServiceImpl implements IExtractKnowledgeSubT
     }
 
     private void processSubTask(List<ExtractKnowledgeSubTask> extractKnowledgeSubTaskList) {
-        RestTemplate restTemplate = new RestTemplate();
+        HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
+        httpRequestFactory.setConnectionRequestTimeout(3000);
+        httpRequestFactory.setConnectTimeout(3000);
+        httpRequestFactory.setReadTimeout(3000);
+        RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
         String url = "http://localhost:9999/extractKnowledge";
         SysDictData remoteData = sysDictDataService.getDictDataByTypeAndValue("kg_algorithm", "url");
         if (remoteData != null && StringUtils.isNotBlank(remoteData.getRemark())) {

+ 205 - 1
sql/system.sql

@@ -1320,4 +1320,208 @@ values('事故信息导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'upl
 
 -- 添加数据字典  kg_upload_type  kg_upload_template file_upload_status kg_extract_status extract_sub_task_list extract_sub_task_status graph_search_length
 
--- 目录 /graphdata/search
+-- 目录 /graphdata/search
+
+DROP TABLE
+IF
+	EXISTS t_breakdown;
+CREATE TABLE t_breakdown (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	war_zone VARCHAR ( 64 ) COMMENT '战区',
+	organization VARCHAR ( 64 ) COMMENT '单位',
+	discovery_timing VARCHAR ( 64 ) COMMENT '发现时机',
+	major VARCHAR ( 64 ) COMMENT '专业',
+	`describe` VARCHAR ( 255 ) COMMENT '故障描述',
+	reason VARCHAR ( 255 ) COMMENT '故障原因',
+	unit_name VARCHAR ( 64 ) COMMENT '故障件名称',
+	unit_type VARCHAR ( 64 ) COMMENT '故障件型别',
+	unit_system VARCHAR ( 64 ) COMMENT '故障件所属系统',
+	consequence VARCHAR ( 255 ) COMMENT '故障后果',
+	duty VARCHAR ( 64 ) COMMENT '故障责任',
+	`name` VARCHAR ( 64 ) COMMENT '故障件名称',
+	number VARCHAR ( 64 ) COMMENT '故障件号码',
+	method VARCHAR ( 64 ) COMMENT '排除方法',
+	repair_time datetime COMMENT '故障修复时间',
+	`status` VARCHAR ( 64 ) COMMENT '故障状态',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '故障信息表';
+
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('故障信息', '2264', '1', 'breakdown', 'showInfo/breakdown/index', 1, 0, 'C', '0', '0', 'showInfo:breakdown:list', '#', 'admin', sysdate(), '', null, '故障信息菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('故障信息查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'showInfo:breakdown:query',        '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('故障信息新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'showInfo:breakdown:add',          '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('故障信息修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'showInfo:breakdown:edit',         '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('故障信息删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'showInfo:breakdown:remove',       '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('故障信息导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'showInfo:breakdown:export',       '#', 'admin', sysdate(), '', null, '');
+
+DROP TABLE
+IF
+	EXISTS t_case_doc;
+CREATE TABLE t_case_doc (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	`name` VARCHAR ( 64 ) COMMENT '名称',
+	`describe` VARCHAR ( 255 ) COMMENT '描述',
+	type VARCHAR ( 64 ) COMMENT '类型',
+	file_path VARCHAR ( 255 ) COMMENT '文件',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+	PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '案例表';
+DROP TABLE
+IF
+	EXISTS t_random_doc;
+CREATE TABLE t_random_doc (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	`name` VARCHAR ( 64 ) COMMENT '名称',
+	`describe` VARCHAR ( 255 ) COMMENT '描述',
+	type VARCHAR ( 64 ) COMMENT '类型',
+	file_path VARCHAR ( 255 ) COMMENT '文件',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+	PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '随机资料表';
+DROP TABLE
+IF
+	EXISTS t_textbook_doc;
+CREATE TABLE t_textbook_doc (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	`name` VARCHAR ( 64 ) COMMENT '名称',
+	`describe` VARCHAR ( 255 ) COMMENT '描述',
+	type VARCHAR ( 64 ) COMMENT '类型',
+	file_path VARCHAR ( 255 ) COMMENT '文件',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+	PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '教材表';
+DROP TABLE
+IF
+	EXISTS t_technology_doc;
+CREATE TABLE t_technology_doc (
+	id BIGINT ( 20 ) NOT NULL auto_increment COMMENT '序号',
+	`name` VARCHAR ( 64 ) COMMENT '名称',
+	`describe` VARCHAR ( 255 ) COMMENT '描述',
+	type VARCHAR ( 64 ) COMMENT '类型',
+	file_path VARCHAR ( 255 ) COMMENT '文件',
+	create_by VARCHAR ( 64 ) DEFAULT '' COMMENT '创建者',
+	create_time datetime COMMENT '创建时间',
+	update_by VARCHAR ( 64 ) DEFAULT '' COMMENT '更新者',
+	update_time datetime COMMENT '更新时间',
+PRIMARY KEY ( id )
+) ENGINE = INNODB COMMENT = '技术通报表';
+
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('教材', '2258', '1', 'textbook', 'doc/textbook/index', 1, 0, 'C', '0', '0', 'doc:textbook:list', '#', 'admin', sysdate(), '', null, '教材菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('教材查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'doc:textbook:query',        '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('教材新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'doc:textbook:add',          '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('教材修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'doc:textbook:edit',         '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('教材删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'doc:textbook:remove',       '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('教材导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'doc:textbook:export',       '#', 'admin', sysdate(), '', null, '');
+
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('技术通报', '2258', '1', 'tech', 'doc/tech/index', 1, 0, 'C', '0', '0', 'doc:tech:list', '#', 'admin', sysdate(), '', null, '技术通报菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('技术通报查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'doc:tech:query',        '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('技术通报新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'doc:tech:add',          '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('技术通报修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'doc:tech:edit',         '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('技术通报删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'doc:tech:remove',       '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('技术通报导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'doc:tech:export',       '#', 'admin', sysdate(), '', null, '');
+
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('随机资料', '2258', '1', 'radmon', 'doc/radmon/index', 1, 0, 'C', '0', '0', 'doc:radmon:list', '#', 'admin', sysdate(), '', null, '随机资料菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('随机资料查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'doc:radmon:query',        '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('随机资料新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'doc:radmon:add',          '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('随机资料修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'doc:radmon:edit',         '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('随机资料删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'doc:radmon:remove',       '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('随机资料导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'doc:radmon:export',       '#', 'admin', sysdate(), '', null, '');
+
+-- 菜单 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('案例', '2258', '1', 'case', 'doc/case/index', 1, 0, 'C', '0', '0', 'doc:case:list', '#', 'admin', sysdate(), '', null, '案例菜单');
+
+-- 按钮父菜单ID
+SELECT @parentId := LAST_INSERT_ID();
+
+-- 按钮 SQL
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('案例查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'doc:case:query',        '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('案例新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'doc:case:add',          '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('案例修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'doc:case:edit',         '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('案例删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'doc:case:remove',       '#', 'admin', sysdate(), '', null, '');
+
+insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
+values('案例导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'doc:case:export',       '#', 'admin', sysdate(), '', null, '');