浏览代码

导师带徒 修改培训内容 添加培训内容表

jiangbiao 1 年之前
父节点
当前提交
8dc97d1766
共有 94 个文件被更改,包括 6577 次插入1127 次删除
  1. 3 5
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFirstplanController.java
  2. 13 8
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFirstplanTmplController.java
  3. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanContentController.java
  4. 3 5
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanController.java
  5. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanTmplContentController.java
  6. 33 16
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanTmplController.java
  7. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanContentController.java
  8. 4 5
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanController.java
  9. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanTmplContentController.java
  10. 32 16
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanTmplController.java
  11. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanContentController.java
  12. 3 5
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanController.java
  13. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanTmplContentController.java
  14. 32 16
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanTmplController.java
  15. 86 21
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsNewController.java
  16. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanContentController.java
  17. 3 5
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanController.java
  18. 103 0
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanTmplContentController.java
  19. 32 16
      master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanTmplController.java
  20. 12 12
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFirstplan.java
  21. 12 12
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFirstplanTmpl.java
  22. 17 17
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplan.java
  23. 209 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplanContent.java
  24. 12 12
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplanTmpl.java
  25. 194 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplanTmplContent.java
  26. 17 17
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplan.java
  27. 209 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplanContent.java
  28. 12 12
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplanTmpl.java
  29. 194 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplanTmplContent.java
  30. 17 17
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplan.java
  31. 209 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplanContent.java
  32. 12 12
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplanTmpl.java
  33. 194 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplanTmplContent.java
  34. 17 17
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplan.java
  35. 209 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplanContent.java
  36. 12 12
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplanTmpl.java
  37. 194 0
      master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplanTmplContent.java
  38. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFlplanContentMapper.java
  39. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFlplanTmplContentMapper.java
  40. 1 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFlplanTmplMapper.java
  41. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFtplanContentMapper.java
  42. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFtplanTmplContentMapper.java
  43. 1 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFtplanTmplMapper.java
  44. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsLjplanContentMapper.java
  45. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsLjplanTmplContentMapper.java
  46. 1 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsLjplanTmplMapper.java
  47. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsYsplanContentMapper.java
  48. 63 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsYsplanTmplContentMapper.java
  49. 1 0
      master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsYsplanTmplMapper.java
  50. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFlplanContentService.java
  51. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFlplanTmplContentService.java
  52. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFtplanContentService.java
  53. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFtplanTmplContentService.java
  54. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsLjplanContentService.java
  55. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsLjplanTmplContentService.java
  56. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsYsplanContentService.java
  57. 61 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsYsplanTmplContentService.java
  58. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFlplanContentServiceImpl.java
  59. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFlplanTmplContentServiceImpl.java
  60. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFtplanContentServiceImpl.java
  61. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFtplanTmplContentServiceImpl.java
  62. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsLjplanContentServiceImpl.java
  63. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsLjplanTmplContentServiceImpl.java
  64. 68 32
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsNewServiceImpl.java
  65. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsYsplanContentServiceImpl.java
  66. 93 0
      master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsYsplanTmplContentServiceImpl.java
  67. 1 1
      master/src/main/resources/mybatis/training/bccnew/TTsApproveMapper.xml
  68. 121 0
      master/src/main/resources/mybatis/training/bccnew/TTsFlplanContentMapper.xml
  69. 12 12
      master/src/main/resources/mybatis/training/bccnew/TTsFlplanMapper.xml
  70. 116 0
      master/src/main/resources/mybatis/training/bccnew/TTsFlplanTmplContentMapper.xml
  71. 34 3
      master/src/main/resources/mybatis/training/bccnew/TTsFlplanTmplMapper.xml
  72. 121 0
      master/src/main/resources/mybatis/training/bccnew/TTsFtplanContentMapper.xml
  73. 12 12
      master/src/main/resources/mybatis/training/bccnew/TTsFtplanMapper.xml
  74. 116 0
      master/src/main/resources/mybatis/training/bccnew/TTsFtplanTmplContentMapper.xml
  75. 35 4
      master/src/main/resources/mybatis/training/bccnew/TTsFtplanTmplMapper.xml
  76. 121 0
      master/src/main/resources/mybatis/training/bccnew/TTsLjplanContentMapper.xml
  77. 11 12
      master/src/main/resources/mybatis/training/bccnew/TTsLjplanMapper.xml
  78. 116 0
      master/src/main/resources/mybatis/training/bccnew/TTsLjplanTmplContentMapper.xml
  79. 35 4
      master/src/main/resources/mybatis/training/bccnew/TTsLjplanTmplMapper.xml
  80. 121 0
      master/src/main/resources/mybatis/training/bccnew/TTsYsplanContentMapper.xml
  81. 11 12
      master/src/main/resources/mybatis/training/bccnew/TTsYsplanMapper.xml
  82. 116 0
      master/src/main/resources/mybatis/training/bccnew/TTsYsplanTmplContentMapper.xml
  83. 35 4
      master/src/main/resources/mybatis/training/bccnew/TTsYsplanTmplMapper.xml
  84. 二进制
      master/src/main/resources/static/template/training/bccnewDsdt.xlsx
  85. 13 13
      ui/src/views/training/bccnew/firstPlanTmpl/index.vue
  86. 3 3
      ui/src/views/training/bccnew/firstplan/index.vue
  87. 2 2
      ui/src/views/training/bccnew/firstplan/index_student.vue
  88. 199 205
      ui/src/views/training/bccnew/flPlan/index.vue
  89. 201 205
      ui/src/views/training/bccnew/ftPlan/index.vue
  90. 62 72
      ui/src/views/training/bccnew/ljPlan/index.vue
  91. 78 33
      ui/src/views/training/bccnew/tsnew/index.vue
  92. 61 100
      ui/src/views/training/bccnew/tsnew/score.vue
  93. 134 65
      ui/src/views/training/bccnew/tsnew/score_student.vue
  94. 62 75
      ui/src/views/training/bccnew/ysPlan/index.vue

+ 3 - 5
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFirstplanController.java

@@ -53,10 +53,8 @@ public class TTsFirstplanController extends BaseController {
      */
 //    @PreAuthorize("@ss.hasPermi('bccnew:firstplan:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsFirstplan tTsFirstplan) {
-        startPage();
-        List<TTsFirstplan> list = tTsFirstplanService.selectTTsFirstplanList(tTsFirstplan);
-        return getDataTable(list);
+    public AjaxResult list(TTsFirstplan tTsFirstplan) {
+        return AjaxResult.success(tTsFirstplanService.selectTTsFirstplanList(tTsFirstplan));
     }
 
     /**
@@ -106,7 +104,7 @@ public class TTsFirstplanController extends BaseController {
             if (timer < need.getTimerNeed()) {
                 need.setTimer(timer + 1);
                 if (need.getTimerNeed() == null)
-                    need.setTimerNeed(0L);
+                    need.setTimerNeed(0.0);
                 if (need.getTimerNeed() != null && need.getTimerNeed() <= timer + 1) {
                     need.setPlanStatus(2L);
                 }

+ 13 - 8
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFirstplanTmplController.java

@@ -12,6 +12,7 @@ import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
 import com.ruoyi.project.training.bccnew.domain.TTsFirstplanTmpl;
 import com.ruoyi.project.training.bccnew.service.ITTsFirstplanTmplService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -43,10 +44,8 @@ public class TTsFirstplanTmplController extends BaseController {
      */
     @PreAuthorize("@ss.hasPermi('bccnew:firstPlanTmpl:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsFirstplanTmpl tTsFirstplanTmpl) {
-        startPage();
-        List<TTsFirstplanTmpl> list = tTsFirstplanTmplService.selectTTsFirstplanTmplList(tTsFirstplanTmpl);
-        return getDataTable(list);
+    public AjaxResult list(TTsFirstplanTmpl tTsFirstplanTmpl) {
+        return AjaxResult.success(tTsFirstplanTmplService.selectTTsFirstplanTmplList(tTsFirstplanTmpl));
     }
 
     /**
@@ -77,7 +76,12 @@ public class TTsFirstplanTmplController extends BaseController {
     @Log(title = "进组培训模版", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TTsFirstplanTmpl tTsFirstplanTmpl) {
-        return toAjax(tTsFirstplanTmplService.insertTTsFirstplanTmpl(tTsFirstplanTmpl));
+        TTsFirstplanTmpl tmpl = new TTsFirstplanTmpl();
+        tmpl.setTopic(tTsFirstplanTmpl.getTopic());
+        if (CollectionUtils.isEmpty(tTsFirstplanTmplService.selectTTsFirstplanTmplList(tmpl))){
+            tTsFirstplanTmplService.insertTTsFirstplanTmpl(tTsFirstplanTmpl);
+        }
+        return toAjax(tTsFirstplanTmplService.updateTTsFirstplanTmpl(tTsFirstplanTmpl));
     }
 
     /**
@@ -147,7 +151,7 @@ public class TTsFirstplanTmplController extends BaseController {
                     String cellValue = ExcelUtils.getCellValue(cell);
                     logger.info("cellValue:" + cellValue);
                     if (j == 0) {
-                        entity.setSortTmpl(cellValue);
+                        entity.setSortTmpl(Long.valueOf(cellValue));
                     } else if (j == 1) {
                         entity.setCourseCode(cellValue);
                     } else if (j == 2) {
@@ -155,13 +159,13 @@ public class TTsFirstplanTmplController extends BaseController {
                     } else if (j == 3) {
                         entity.setMaterialVer(cellValue);
                     } else if (j == 4) {
-                        entity.setCourseHour(Long.valueOf(cellValue));
+                        entity.setCourseHour(Double.valueOf(cellValue));
                     } else if (j == 5) {
                         entity.setTrainer(cellValue);
                     } else if (j == 6) {
                         entity.setExamType(cellValue);
                     } else if (j == 7) {
-                        entity.setTimerNeed(Long.valueOf(cellValue));
+                        entity.setTimerNeed(Double.valueOf(cellValue));
                     } else if (j == 8) {
                         entity.setRemarks(cellValue);
                     }
@@ -185,6 +189,7 @@ public class TTsFirstplanTmplController extends BaseController {
             } catch (Exception e) {
                 failNumber++;
                 failRow.add(failNum + 1);
+                logger.info("e=============:{}",e.getMessage());
             }
         }
         logger.info("list:" + JSON.toJSONString(list));

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFlplanContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 分离培训内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/flContent")
+public class TTsFlplanContentController extends BaseController
+{
+    @Autowired
+    private ITTsFlplanContentService tTsFlplanContentService;
+
+    /**
+     * 查询分离培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsFlplanContent tTsFlplanContent)
+    {
+        startPage();
+        List<TTsFlplanContent> list = tTsFlplanContentService.selectTTsFlplanContentList(tTsFlplanContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出分离培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flContent:export')")
+    @Log(title = "分离培训内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsFlplanContent tTsFlplanContent)
+    {
+        List<TTsFlplanContent> list = tTsFlplanContentService.selectTTsFlplanContentList(tTsFlplanContent);
+        ExcelUtil<TTsFlplanContent> util = new ExcelUtil<TTsFlplanContent>(TTsFlplanContent.class);
+        return util.exportExcel(list, "flContent");
+    }
+
+    /**
+     * 获取分离培训内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsFlplanContentService.selectTTsFlplanContentById(id));
+    }
+
+    /**
+     * 新增分离培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flContent:add')")
+    @Log(title = "分离培训内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsFlplanContent tTsFlplanContent)
+    {
+        return toAjax(tTsFlplanContentService.insertTTsFlplanContent(tTsFlplanContent));
+    }
+
+    /**
+     * 修改分离培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flContent:edit')")
+    @Log(title = "分离培训内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsFlplanContent tTsFlplanContent)
+    {
+        return toAjax(tTsFlplanContentService.updateTTsFlplanContent(tTsFlplanContent));
+    }
+
+    /**
+     * 删除分离培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flContent:remove')")
+    @Log(title = "分离培训内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsFlplanContentService.deleteTTsFlplanContentByIds(ids));
+    }
+}

+ 3 - 5
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanController.java

@@ -45,10 +45,8 @@ public class TTsFlplanController extends BaseController {
      * 查询分离培训列表
      */
     @GetMapping("/list")
-    public TableDataInfo list(TTsFlplan tTsFlplan) {
-        startPage();
-        List<TTsFlplan> list = tTsFlplanService.selectTTsFlplanList(tTsFlplan);
-        return getDataTable(list);
+    public AjaxResult list(TTsFlplan tTsFlplan) {
+        return AjaxResult.success(tTsFlplanService.selectTTsFlplanList(tTsFlplan));
     }
 
     /**
@@ -92,7 +90,7 @@ public class TTsFlplanController extends BaseController {
             if (timer < need.getTimerNeed()) {
                 need.setTimer(timer + 1);
                 if (need.getTimerNeed() == null)
-                    need.setTimerNeed(0L);
+                    need.setTimerNeed(0.0);
                 if (need.getTimerNeed() != null && need.getTimerNeed() <= timer + 1) {
                     need.setPlanStatus(2L);
                 }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanTmplContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFlplanTmplContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 分离培训模版内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/flTmplContent")
+public class TTsFlplanTmplContentController extends BaseController
+{
+    @Autowired
+    private ITTsFlplanTmplContentService tTsFlplanTmplContentService;
+
+    /**
+     * 查询分离培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flTmplContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        startPage();
+        List<TTsFlplanTmplContent> list = tTsFlplanTmplContentService.selectTTsFlplanTmplContentList(tTsFlplanTmplContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出分离培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flTmplContent:export')")
+    @Log(title = "分离培训模版内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        List<TTsFlplanTmplContent> list = tTsFlplanTmplContentService.selectTTsFlplanTmplContentList(tTsFlplanTmplContent);
+        ExcelUtil<TTsFlplanTmplContent> util = new ExcelUtil<TTsFlplanTmplContent>(TTsFlplanTmplContent.class);
+        return util.exportExcel(list, "flTmplContent");
+    }
+
+    /**
+     * 获取分离培训模版内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flTmplContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsFlplanTmplContentService.selectTTsFlplanTmplContentById(id));
+    }
+
+    /**
+     * 新增分离培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flTmplContent:add')")
+    @Log(title = "分离培训模版内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        return toAjax(tTsFlplanTmplContentService.insertTTsFlplanTmplContent(tTsFlplanTmplContent));
+    }
+
+    /**
+     * 修改分离培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flTmplContent:edit')")
+    @Log(title = "分离培训模版内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        return toAjax(tTsFlplanTmplContentService.updateTTsFlplanTmplContent(tTsFlplanTmplContent));
+    }
+
+    /**
+     * 删除分离培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:flTmplContent:remove')")
+    @Log(title = "分离培训模版内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsFlplanTmplContentService.deleteTTsFlplanTmplContentByIds(ids));
+    }
+}

+ 33 - 16
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFlplanTmplController.java

@@ -11,7 +11,10 @@ import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
 import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFlplanTmplContentService;
 import com.ruoyi.project.training.bccnew.service.ITTsFlplanTmplService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -37,16 +40,16 @@ import java.util.List;
 public class TTsFlplanTmplController extends BaseController {
     @Autowired
     private ITTsFlplanTmplService tTsFlplanTmplService;
+    @Autowired
+    private ITTsFlplanTmplContentService tTsFlplanTmplContentService;
 
     /**
      * 查询分离培训模版列表
      */
     @PreAuthorize("@ss.hasPermi('training:flPlan:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsFlplanTmpl tTsFlplanTmpl) {
-        startPage();
-        List<TTsFlplanTmpl> list = tTsFlplanTmplService.selectTTsFlplanTmplList(tTsFlplanTmpl);
-        return getDataTable(list);
+    public AjaxResult list(TTsFlplanTmpl tTsFlplanTmpl) {
+        return AjaxResult.success(tTsFlplanTmplService.selectTTsFlplanTmplList(tTsFlplanTmpl));
     }
 
     /**
@@ -77,7 +80,23 @@ public class TTsFlplanTmplController extends BaseController {
     @Log(title = "分离培训模版", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TTsFlplanTmpl tTsFlplanTmpl) {
-        return toAjax(tTsFlplanTmplService.insertTTsFlplanTmpl(tTsFlplanTmpl));
+        TTsFlplanTmpl tmpl = new TTsFlplanTmpl();
+        tmpl.setTopic(tTsFlplanTmpl.getTopic());
+        List<TTsFlplanTmpl> tTsFlplanTmpls = tTsFlplanTmplService.selectTTsFlplanTmplList(tmpl);
+        TTsFlplanTmplContent content = new TTsFlplanTmplContent();
+        content.setCourseDay(tTsFlplanTmpl.getCourseDay());
+        content.setContent(tTsFlplanTmpl.getContent());
+        content.setSortTmpl(tTsFlplanTmpl.getSortTmpl());
+        tTsFlplanTmpl.setCourseDay(null);
+        if (CollectionUtils.isEmpty(tTsFlplanTmpls)) {
+            tTsFlplanTmplService.insertTTsFlplanTmpl(tTsFlplanTmpl);
+            content.setPid(tTsFlplanTmpl.getId());
+            return toAjax(tTsFlplanTmplContentService.insertTTsFlplanTmplContent(content));
+        } else {
+            TTsFlplanTmpl item = tTsFlplanTmpls.get(0);
+            content.setPid(item.getId());
+            return toAjax(tTsFlplanTmplContentService.insertTTsFlplanTmplContent(content));
+        }
     }
 
     /**
@@ -125,8 +144,11 @@ public class TTsFlplanTmplController extends BaseController {
         Workbook workbook = ExcelUtils.getWorkBook(file);
         Sheet sheet = workbook.getSheetAt(0);
         List<TTsFlplanTmpl> list = new ArrayList<>();
+        List<TTsFlplanTmplContent> contents = new ArrayList<>();
         int rowNum = sheet.getLastRowNum();
         int failNumber = 0;
+        String topic = "";
+        boolean flag = false;
         for (int i = 1; i <= rowNum; i++) {
             try {
                 logger.info("读取行数:" + i);
@@ -146,24 +168,18 @@ public class TTsFlplanTmplController extends BaseController {
                     String cellValue = ExcelUtils.getCellValue(cell);
                     logger.info("cellValue:" + cellValue);
                     if (j == 0) {
-                        entity.setSortTmpl(cellValue);
+                        entity.setSortTmpl(Long.valueOf(cellValue));
                     } else if (j == 1) {
-                        entity.setCourseCode(cellValue);
+                        entity.setDetailPlan(cellValue);
                     } else if (j == 2) {
                         entity.setTopic(cellValue);
                     } else if (j == 3) {
-                        entity.setContent(cellValue);
+                        entity.setCourseDay(cellValue);
                     } else if (j == 4) {
-                        entity.setCourseDay(Long.valueOf(cellValue));
+                        entity.setContent(cellValue);
                     } else if (j == 5) {
-                        entity.setCourseHour(Long.valueOf(cellValue));
+                        entity.setTimerNeed(Double.valueOf(cellValue));
                     } else if (j == 6) {
-                        entity.setDetailPlan(cellValue);
-                    } else if (j == 7) {
-                        entity.setTrainer(cellValue);
-                    } else if (j == 8) {
-                        entity.setTimerNeed(Long.valueOf(cellValue));
-                    } else if (j == 9) {
                         entity.setRemarks(cellValue);
                     }
                 }
@@ -184,6 +200,7 @@ public class TTsFlplanTmplController extends BaseController {
                 add(t);
                 successNumber++;
             } catch (Exception e) {
+                e.printStackTrace();
                 failNumber++;
                 failRow.add(failNum + 1);
             }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFtplanContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 芳烃培训内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/ftContent")
+public class TTsFtplanContentController extends BaseController
+{
+    @Autowired
+    private ITTsFtplanContentService tTsFtplanContentService;
+
+    /**
+     * 查询芳烃培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsFtplanContent tTsFtplanContent)
+    {
+        startPage();
+        List<TTsFtplanContent> list = tTsFtplanContentService.selectTTsFtplanContentList(tTsFtplanContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出芳烃培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftContent:export')")
+    @Log(title = "芳烃培训内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsFtplanContent tTsFtplanContent)
+    {
+        List<TTsFtplanContent> list = tTsFtplanContentService.selectTTsFtplanContentList(tTsFtplanContent);
+        ExcelUtil<TTsFtplanContent> util = new ExcelUtil<TTsFtplanContent>(TTsFtplanContent.class);
+        return util.exportExcel(list, "ftContent");
+    }
+
+    /**
+     * 获取芳烃培训内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsFtplanContentService.selectTTsFtplanContentById(id));
+    }
+
+    /**
+     * 新增芳烃培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftContent:add')")
+    @Log(title = "芳烃培训内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsFtplanContent tTsFtplanContent)
+    {
+        return toAjax(tTsFtplanContentService.insertTTsFtplanContent(tTsFtplanContent));
+    }
+
+    /**
+     * 修改芳烃培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftContent:edit')")
+    @Log(title = "芳烃培训内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsFtplanContent tTsFtplanContent)
+    {
+        return toAjax(tTsFtplanContentService.updateTTsFtplanContent(tTsFtplanContent));
+    }
+
+    /**
+     * 删除芳烃培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftContent:remove')")
+    @Log(title = "芳烃培训内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsFtplanContentService.deleteTTsFtplanContentByIds(ids));
+    }
+}

+ 4 - 5
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanController.java

@@ -8,6 +8,7 @@ import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.service.ISysUserService;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplan;
 import com.ruoyi.project.training.bccnew.domain.TTsFtplan;
 import com.ruoyi.project.training.bccnew.domain.TTsNew;
 import com.ruoyi.project.training.bccnew.service.ITTsApproveService;
@@ -45,10 +46,8 @@ public class TTsFtplanController extends BaseController {
      * 查询芳烃培训列表
      */
     @GetMapping("/list")
-    public TableDataInfo list(TTsFtplan tTsFtplan) {
-        startPage();
-        List<TTsFtplan> list = tTsFtplanService.selectTTsFtplanList(tTsFtplan);
-        return getDataTable(list);
+    public AjaxResult list(TTsFtplan tTsFtplan) {
+        return AjaxResult.success(tTsFtplanService.selectTTsFtplanList(tTsFtplan));
     }
 
     /**
@@ -91,7 +90,7 @@ public class TTsFtplanController extends BaseController {
             if (timer < need.getTimerNeed()) {
                 need.setTimer(timer + 1);
                 if (need.getTimerNeed() == null)
-                    need.setTimerNeed(0L);
+                    need.setTimerNeed(0.0);
                 if (need.getTimerNeed() != null && need.getTimerNeed() <= timer + 1) {
                     need.setPlanStatus(2L);
                 }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanTmplContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFtplanTmplContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 芳烃培训模版内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/ftTmplContent")
+public class TTsFtplanTmplContentController extends BaseController
+{
+    @Autowired
+    private ITTsFtplanTmplContentService tTsFtplanTmplContentService;
+
+    /**
+     * 查询芳烃培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftTmplContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        startPage();
+        List<TTsFtplanTmplContent> list = tTsFtplanTmplContentService.selectTTsFtplanTmplContentList(tTsFtplanTmplContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出芳烃培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftTmplContent:export')")
+    @Log(title = "芳烃培训模版内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        List<TTsFtplanTmplContent> list = tTsFtplanTmplContentService.selectTTsFtplanTmplContentList(tTsFtplanTmplContent);
+        ExcelUtil<TTsFtplanTmplContent> util = new ExcelUtil<TTsFtplanTmplContent>(TTsFtplanTmplContent.class);
+        return util.exportExcel(list, "ftTmplContent");
+    }
+
+    /**
+     * 获取芳烃培训模版内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftTmplContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsFtplanTmplContentService.selectTTsFtplanTmplContentById(id));
+    }
+
+    /**
+     * 新增芳烃培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftTmplContent:add')")
+    @Log(title = "芳烃培训模版内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        return toAjax(tTsFtplanTmplContentService.insertTTsFtplanTmplContent(tTsFtplanTmplContent));
+    }
+
+    /**
+     * 修改芳烃培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftTmplContent:edit')")
+    @Log(title = "芳烃培训模版内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        return toAjax(tTsFtplanTmplContentService.updateTTsFtplanTmplContent(tTsFtplanTmplContent));
+    }
+
+    /**
+     * 删除芳烃培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ftTmplContent:remove')")
+    @Log(title = "芳烃培训模版内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsFtplanTmplContentService.deleteTTsFtplanTmplContentByIds(ids));
+    }
+}

+ 32 - 16
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsFtplanTmplController.java

@@ -10,8 +10,13 @@ import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
 import com.ruoyi.project.training.bccnew.domain.TTsFtplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFtplanTmplContentService;
 import com.ruoyi.project.training.bccnew.service.ITTsFtplanTmplService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -37,16 +42,16 @@ import java.util.List;
 public class TTsFtplanTmplController extends BaseController {
     @Autowired
     private ITTsFtplanTmplService tTsFtplanTmplService;
+    @Autowired
+    private ITTsFtplanTmplContentService tTsFtplanTmplContentService;
 
     /**
      * 查询芳烃培训模版列表
      */
     @PreAuthorize("@ss.hasPermi('bccnew:ftPlan:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsFtplanTmpl tTsFtplanTmpl) {
-        startPage();
-        List<TTsFtplanTmpl> list = tTsFtplanTmplService.selectTTsFtplanTmplList(tTsFtplanTmpl);
-        return getDataTable(list);
+    public AjaxResult list(TTsFtplanTmpl tTsFtplanTmpl) {
+        return AjaxResult.success(tTsFtplanTmplService.selectTTsFtplanTmplList(tTsFtplanTmpl));
     }
 
     /**
@@ -77,7 +82,23 @@ public class TTsFtplanTmplController extends BaseController {
     @Log(title = "芳烃培训模版", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TTsFtplanTmpl tTsFtplanTmpl) {
-        return toAjax(tTsFtplanTmplService.insertTTsFtplanTmpl(tTsFtplanTmpl));
+        TTsFtplanTmpl tmpl = new TTsFtplanTmpl();
+        tmpl.setTopic(tTsFtplanTmpl.getTopic());
+        List<TTsFtplanTmpl> tTsFtplanTmpls = tTsFtplanTmplService.selectTTsFtplanTmplList(tmpl);
+        TTsFtplanTmplContent content = new TTsFtplanTmplContent();
+        content.setCourseDay(tTsFtplanTmpl.getCourseDay());
+        content.setContent(tTsFtplanTmpl.getContent());
+        content.setSortTmpl(tTsFtplanTmpl.getSortTmpl());
+        tTsFtplanTmpl.setCourseDay(null);
+        if (CollectionUtils.isEmpty(tTsFtplanTmpls)) {
+            tTsFtplanTmplService.insertTTsFtplanTmpl(tTsFtplanTmpl);
+            content.setPid(tTsFtplanTmpl.getId());
+            return toAjax(tTsFtplanTmplContentService.insertTTsFtplanTmplContent(content));
+        } else {
+            TTsFtplanTmpl item = tTsFtplanTmpls.get(0);
+            content.setPid(item.getId());
+            return toAjax(tTsFtplanTmplContentService.insertTTsFtplanTmplContent(content));
+        }
     }
 
     /**
@@ -147,24 +168,18 @@ public class TTsFtplanTmplController extends BaseController {
                     String cellValue = ExcelUtils.getCellValue(cell);
                     logger.info("cellValue:" + cellValue);
                     if (j == 0) {
-                        entity.setSortTmpl(cellValue);
+                        entity.setSortTmpl(Long.valueOf(cellValue));
                     } else if (j == 1) {
-                        entity.setCourseCode(cellValue);
+                        entity.setDetailPlan(cellValue);
                     } else if (j == 2) {
                         entity.setTopic(cellValue);
                     } else if (j == 3) {
-                        entity.setContent(cellValue);
+                        entity.setCourseDay(cellValue);
                     } else if (j == 4) {
-                        entity.setCourseDay(Long.valueOf(cellValue));
+                        entity.setContent(cellValue);
                     } else if (j == 5) {
-                        entity.setCourseHour(Long.valueOf(cellValue));
+                        entity.setTimerNeed(Double.valueOf(cellValue));
                     } else if (j == 6) {
-                        entity.setDetailPlan(cellValue);
-                    } else if (j == 7) {
-                        entity.setTrainer(cellValue);
-                    } else if (j == 8) {
-                        entity.setTimerNeed(Long.valueOf(cellValue));
-                    } else if (j == 9) {
                         entity.setRemarks(cellValue);
                     }
                 }
@@ -185,6 +200,7 @@ public class TTsFtplanTmplController extends BaseController {
                 add(t);
                 successNumber++;
             } catch (Exception e) {
+                e.printStackTrace();
                 failNumber++;
                 failRow.add(failNum + 1);
             }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsLjplanContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 裂解培训内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/ljContent")
+public class TTsLjplanContentController extends BaseController
+{
+    @Autowired
+    private ITTsLjplanContentService tTsLjplanContentService;
+
+    /**
+     * 查询裂解培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsLjplanContent tTsLjplanContent)
+    {
+        startPage();
+        List<TTsLjplanContent> list = tTsLjplanContentService.selectTTsLjplanContentList(tTsLjplanContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出裂解培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljContent:export')")
+    @Log(title = "裂解培训内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsLjplanContent tTsLjplanContent)
+    {
+        List<TTsLjplanContent> list = tTsLjplanContentService.selectTTsLjplanContentList(tTsLjplanContent);
+        ExcelUtil<TTsLjplanContent> util = new ExcelUtil<TTsLjplanContent>(TTsLjplanContent.class);
+        return util.exportExcel(list, "ljContent");
+    }
+
+    /**
+     * 获取裂解培训内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsLjplanContentService.selectTTsLjplanContentById(id));
+    }
+
+    /**
+     * 新增裂解培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljContent:add')")
+    @Log(title = "裂解培训内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsLjplanContent tTsLjplanContent)
+    {
+        return toAjax(tTsLjplanContentService.insertTTsLjplanContent(tTsLjplanContent));
+    }
+
+    /**
+     * 修改裂解培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljContent:edit')")
+    @Log(title = "裂解培训内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsLjplanContent tTsLjplanContent)
+    {
+        return toAjax(tTsLjplanContentService.updateTTsLjplanContent(tTsLjplanContent));
+    }
+
+    /**
+     * 删除裂解培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljContent:remove')")
+    @Log(title = "裂解培训内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsLjplanContentService.deleteTTsLjplanContentByIds(ids));
+    }
+}

+ 3 - 5
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanController.java

@@ -46,10 +46,8 @@ public class TTsLjplanController extends BaseController {
      * 查询裂解培训列表
      */
     @GetMapping("/list")
-    public TableDataInfo list(TTsLjplan tTsLjplan) {
-        startPage();
-        List<TTsLjplan> list = tTsLjplanService.selectTTsLjplanList(tTsLjplan);
-        return getDataTable(list);
+    public AjaxResult list(TTsLjplan tTsLjplan) {
+        return AjaxResult.success(tTsLjplanService.selectTTsLjplanList(tTsLjplan));
     }
 
     /**
@@ -95,7 +93,7 @@ public class TTsLjplanController extends BaseController {
             if (timer < need.getTimerNeed()) {
                 need.setTimer(timer + 1);
                 if (need.getTimerNeed() == null)
-                    need.setTimerNeed(0L);
+                    need.setTimerNeed(0.0);
                 if (need.getTimerNeed() != null && need.getTimerNeed() <= timer + 1) {
                     need.setPlanStatus(2L);
                 }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanTmplContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsLjplanTmplContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 裂解培训模版内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/ljTmplContent")
+public class TTsLjplanTmplContentController extends BaseController
+{
+    @Autowired
+    private ITTsLjplanTmplContentService tTsLjplanTmplContentService;
+
+    /**
+     * 查询裂解培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljTmplContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        startPage();
+        List<TTsLjplanTmplContent> list = tTsLjplanTmplContentService.selectTTsLjplanTmplContentList(tTsLjplanTmplContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出裂解培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljTmplContent:export')")
+    @Log(title = "裂解培训模版内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        List<TTsLjplanTmplContent> list = tTsLjplanTmplContentService.selectTTsLjplanTmplContentList(tTsLjplanTmplContent);
+        ExcelUtil<TTsLjplanTmplContent> util = new ExcelUtil<TTsLjplanTmplContent>(TTsLjplanTmplContent.class);
+        return util.exportExcel(list, "ljTmplContent");
+    }
+
+    /**
+     * 获取裂解培训模版内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljTmplContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsLjplanTmplContentService.selectTTsLjplanTmplContentById(id));
+    }
+
+    /**
+     * 新增裂解培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljTmplContent:add')")
+    @Log(title = "裂解培训模版内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        return toAjax(tTsLjplanTmplContentService.insertTTsLjplanTmplContent(tTsLjplanTmplContent));
+    }
+
+    /**
+     * 修改裂解培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljTmplContent:edit')")
+    @Log(title = "裂解培训模版内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        return toAjax(tTsLjplanTmplContentService.updateTTsLjplanTmplContent(tTsLjplanTmplContent));
+    }
+
+    /**
+     * 删除裂解培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ljTmplContent:remove')")
+    @Log(title = "裂解培训模版内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsLjplanTmplContentService.deleteTTsLjplanTmplContentByIds(ids));
+    }
+}

+ 32 - 16
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsLjplanTmplController.java

@@ -10,8 +10,13 @@ import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
 import com.ruoyi.project.training.bccnew.domain.TTsLjplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsLjplanTmplContentService;
 import com.ruoyi.project.training.bccnew.service.ITTsLjplanTmplService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -37,16 +42,16 @@ import java.util.List;
 public class TTsLjplanTmplController extends BaseController {
     @Autowired
     private ITTsLjplanTmplService tTsLjplanTmplService;
+    @Autowired
+    private ITTsLjplanTmplContentService tTsLjplanTmplContentService;
 
     /**
      * 查询裂解培训模版列表
      */
     @PreAuthorize("@ss.hasPermi('bccnew:ljPlan:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsLjplanTmpl tTsLjplanTmpl) {
-        startPage();
-        List<TTsLjplanTmpl> list = tTsLjplanTmplService.selectTTsLjplanTmplList(tTsLjplanTmpl);
-        return getDataTable(list);
+    public AjaxResult list(TTsLjplanTmpl tTsLjplanTmpl) {
+        return AjaxResult.success(tTsLjplanTmplService.selectTTsLjplanTmplList(tTsLjplanTmpl));
     }
 
     /**
@@ -77,7 +82,23 @@ public class TTsLjplanTmplController extends BaseController {
     @Log(title = "裂解培训模版", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TTsLjplanTmpl tTsLjplanTmpl) {
-        return toAjax(tTsLjplanTmplService.insertTTsLjplanTmpl(tTsLjplanTmpl));
+        TTsLjplanTmpl tmpl = new TTsLjplanTmpl();
+        tmpl.setTopic(tTsLjplanTmpl.getTopic());
+        List<TTsLjplanTmpl> tTsLjplanTmpls = tTsLjplanTmplService.selectTTsLjplanTmplList(tmpl);
+        TTsLjplanTmplContent content = new TTsLjplanTmplContent();
+        content.setCourseDay(tTsLjplanTmpl.getCourseDay());
+        content.setContent(tTsLjplanTmpl.getContent());
+        content.setSortTmpl(tTsLjplanTmpl.getSortTmpl());
+        tTsLjplanTmpl.setCourseDay(null);
+        if (CollectionUtils.isEmpty(tTsLjplanTmpls)) {
+            tTsLjplanTmplService.insertTTsLjplanTmpl(tTsLjplanTmpl);
+            content.setPid(tTsLjplanTmpl.getId());
+            return toAjax(tTsLjplanTmplContentService.insertTTsLjplanTmplContent(content));
+        } else {
+            TTsLjplanTmpl item = tTsLjplanTmpls.get(0);
+            content.setPid(item.getId());
+            return toAjax(tTsLjplanTmplContentService.insertTTsLjplanTmplContent(content));
+        }
     }
 
     /**
@@ -147,24 +168,18 @@ public class TTsLjplanTmplController extends BaseController {
                     String cellValue = ExcelUtils.getCellValue(cell);
                     logger.info("cellValue:" + cellValue);
                     if (j == 0) {
-                        entity.setSortTmpl(cellValue);
+                        entity.setSortTmpl(Long.valueOf(cellValue));
                     } else if (j == 1) {
-                        entity.setCourseCode(cellValue);
+                        entity.setDetailPlan(cellValue);
                     } else if (j == 2) {
                         entity.setTopic(cellValue);
                     } else if (j == 3) {
-                        entity.setContent(cellValue);
+                        entity.setCourseDay(cellValue);
                     } else if (j == 4) {
-                        entity.setCourseDay(Long.valueOf(cellValue));
+                        entity.setContent(cellValue);
                     } else if (j == 5) {
-                        entity.setCourseHour(Long.valueOf(cellValue));
+                        entity.setTimerNeed(Double.valueOf(cellValue));
                     } else if (j == 6) {
-                        entity.setDetailPlan(cellValue);
-                    } else if (j == 7) {
-                        entity.setTrainer(cellValue);
-                    } else if (j == 8) {
-                        entity.setTimerNeed(Long.valueOf(cellValue));
-                    } else if (j == 9) {
                         entity.setRemarks(cellValue);
                     }
                 }
@@ -173,6 +188,7 @@ public class TTsLjplanTmplController extends BaseController {
                 logger.info("entity:" + entity);
                 list.add(entity);
             } catch (Exception e) {
+                e.printStackTrace();
                 failNumber++;
                 failRow.add(i + 1);
             }

+ 86 - 21
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsNewController.java

@@ -20,12 +20,19 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
@@ -101,7 +108,7 @@ public class TTsNewController extends BaseController {
         if ("1".equals(tTsNew.getIsStudent())) {
             tTsNew.setStaffId(getBaseStaffId());
         }
-        if("1".equals(tTsNew.getIsTeacher())){
+        if ("1".equals(tTsNew.getIsTeacher())) {
             tTsNew.setMentorStaffId(getBaseStaffId());
         }
         List<TTsNew> list = tTsNewService.selectTTsNewList(tTsNew);
@@ -250,7 +257,7 @@ public class TTsNewController extends BaseController {
         tTsNew.setMentorAgreementWordPath(mentorAgreementWordPath);
         tTsNew.setTargetPlanWordPath(targetPlanWordPath);
 //        tTsNew.setAppraisalFormWordPath(appraisalFormWordPath);
-        tTsNewService.updateTTsNew(tTsNew, getUserId(), getNickName());
+        tTsNewService.updateTTsNew(tTsNew);
     }
 
     @GetMapping("/genAppraisalFormWord/{newId}")
@@ -329,8 +336,10 @@ public class TTsNewController extends BaseController {
         String staffId = tTsNew.getStaffId();
         SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
         SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
-        params.put("mentorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
-        params.put("apprenticeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
+        if (StringUtils.isNotEmpty(mentor.getSignUrl()))
+            params.put("mentorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
+        if (StringUtils.isNotEmpty(apprentice.getSignUrl()))
+            params.put("apprenticeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
         String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         params.put("date", Texts.of(date).create());
         // 渲染文本
@@ -355,10 +364,13 @@ public class TTsNewController extends BaseController {
         List<TTsApprove> tTsApproves = tsApproveService.selectTTsApproveByNewId(tTsNew.getNewId());
         if (CollectionUtils.isNotEmpty(tTsApproves)) {
             SysUser manager = sysUserService.selectUserById(Long.valueOf(tTsApproves.get(0).getApprover()));
-            params.put("mgrSign", Pictures.ofLocal(fileName(manager.getSignUrl())).size(100, 40).create());
+            if (StringUtils.isNotEmpty(manager.getSignUrl()))
+                params.put("mgrSign", Pictures.ofLocal(fileName(manager.getSignUrl())).size(100, 40).create());
         }
-        params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
-        params.put("traineeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
+        if (StringUtils.isNotEmpty(mentor.getSignUrl()))
+            params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
+        if (StringUtils.isNotEmpty(apprentice.getSignUrl()))
+            params.put("traineeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
         params.put("tutor", Texts.of(mentor.getNickName()).create());
         params.put("trainee", Texts.of(apprentice.getNickName()).create());
         RowRenderData[] planList = null;
@@ -437,8 +449,10 @@ public class TTsNewController extends BaseController {
         String staffId = tTsNew.getStaffId();
         SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
         SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
-        params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
-        params.put("traineeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
+        if (StringUtils.isNotEmpty(mentor.getSignUrl()))
+            params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
+        if (StringUtils.isNotEmpty(apprentice.getSignUrl()))
+            params.put("traineeSignature", Pictures.ofLocal(fileName(apprentice.getSignUrl())).size(100, 40).create());
         params.put("tutor", Texts.of(mentor.getNickName()).create());
         params.put("trainee", Texts.of(apprentice.getNickName()).create());
         List<RowRenderData> planList = new ArrayList<>();
@@ -453,11 +467,11 @@ public class TTsNewController extends BaseController {
             planList.add(Rows.create("Training Topics 培训主题", "", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见"));
             planList.add(Rows.create("", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题"));
             for (TTsLjplan plan : tTsLjplans) {
-                String dateStr = plan.getCourseDate()==null?"": formatter.format(plan.getCourseDate());
+                String dateStr = plan.getCourseDate() == null ? "" : formatter.format(plan.getCourseDate());
                 if (StringUtils.isNotEmpty(plan.getScore1())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore1(), apprentice.getNickName(), mentor.getNickName(), plan.getScore1().equals("好") ? "是" : "否"));
-                }else {
-                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr,"", apprentice.getNickName(), mentor.getNickName(), ""));
+                } else {
+                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, "", apprentice.getNickName(), mentor.getNickName(), ""));
                 }
                 if (StringUtils.isNotEmpty(plan.getScore2())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore2(), apprentice.getNickName(), mentor.getNickName(), plan.getScore2().equals("好") ? "是" : "否"));
@@ -475,11 +489,11 @@ public class TTsNewController extends BaseController {
             planList.add(Rows.create("", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题"));
 
             for (TTsYsplan plan : tTsYsplans) {
-                String dateStr = plan.getCourseDate()==null?"": formatter.format(plan.getCourseDate());
+                String dateStr = plan.getCourseDate() == null ? "" : formatter.format(plan.getCourseDate());
                 if (StringUtils.isNotEmpty(plan.getScore1())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore1(), apprentice.getNickName(), mentor.getNickName(), plan.getScore1().equals("好") ? "是" : "否"));
-                }else {
-                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr,"", apprentice.getNickName(), mentor.getNickName(), ""));
+                } else {
+                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, "", apprentice.getNickName(), mentor.getNickName(), ""));
                 }
                 if (StringUtils.isNotEmpty(plan.getScore2())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore2(), apprentice.getNickName(), mentor.getNickName(), plan.getScore2().equals("好") ? "是" : "否"));
@@ -496,11 +510,11 @@ public class TTsNewController extends BaseController {
             planList.add(Rows.create("Training Topics 培训主题", "", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见"));
             planList.add(Rows.create("", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题"));
             for (TTsFlplan plan : tTsFlplans) {
-                String dateStr = plan.getCourseDate()==null?"": formatter.format(plan.getCourseDate());
+                String dateStr = plan.getCourseDate() == null ? "" : formatter.format(plan.getCourseDate());
                 if (StringUtils.isNotEmpty(plan.getScore1())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore1(), apprentice.getNickName(), mentor.getNickName(), plan.getScore1().equals("好") ? "是" : "否"));
-                }else {
-                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr,"", apprentice.getNickName(), mentor.getNickName(), ""));
+                } else {
+                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, "", apprentice.getNickName(), mentor.getNickName(), ""));
                 }
                 if (StringUtils.isNotEmpty(plan.getScore2())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore2(), apprentice.getNickName(), mentor.getNickName(), plan.getScore2().equals("好") ? "是" : "否"));
@@ -517,11 +531,11 @@ public class TTsNewController extends BaseController {
             planList.add(Rows.create("Training Topics 培训主题", "", "Training Date 培训日期", "Training Effectiveness Evaluation* 培训效果评价*", "Training Effectiveness Acknowledgement 培训效果确认", "", "Mentor comment 导师意见"));
             planList.add(Rows.create("", "", "", "", "Trainee 学徒", "Tutor 导师", "Proceed to next topic or not 是否转至下一主题"));
             for (TTsFtplan plan : tTsFtplans) {
-                String dateStr = plan.getCourseDate()==null?"": formatter.format(plan.getCourseDate());
+                String dateStr = plan.getCourseDate() == null ? "" : formatter.format(plan.getCourseDate());
                 if (StringUtils.isNotEmpty(plan.getScore1())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore1(), apprentice.getNickName(), mentor.getNickName(), plan.getScore1().equals("好") ? "是" : "否"));
-                }else {
-                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr,"", apprentice.getNickName(), mentor.getNickName(), ""));
+                } else {
+                    planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, "", apprentice.getNickName(), mentor.getNickName(), ""));
                 }
                 if (StringUtils.isNotEmpty(plan.getScore2())) {
                     planList.add(Rows.create(plan.getDetailPlan(), plan.getTopic(), dateStr, plan.getScore2(), apprentice.getNickName(), mentor.getNickName(), plan.getScore2().equals("好") ? "是" : "否"));
@@ -588,6 +602,57 @@ public class TTsNewController extends BaseController {
     private String fileName(String filepath) {
         String newFilePath = filepath.replace("/profile", "");
         String pathName = RuoYiConfig.getProfile() + newFilePath;
+        if (new File(pathName).exists()) {
+            genSignImage(pathName);
+        }
         return pathName;
     }
+
+    private void genSignImage(String pathName) {
+        String nickName = pathName.substring(pathName.lastIndexOf("/") + 1, pathName.lastIndexOf("."));
+        String fileType = pathName.substring(pathName.lastIndexOf(".") + 1);
+        int width = 350; // 图片宽度
+        int height = 100; // 图片高度
+
+        // 创建一个类型为预定义图像类型之一的 BufferedImage
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+
+        // 获取 Graphics2D
+        Graphics2D g2d = image.createGraphics();
+
+        // 设置背景颜色
+        g2d.setColor(Color.WHITE);
+        g2d.fillRect(0, 0, width, height);
+
+        // 设置字体和颜色
+        g2d.setFont(new Font("楷体", Font.BOLD, 80)); // 设置字体样式、大小和类型
+        g2d.setColor(Color.BLACK); // 设置文字颜色
+
+        // 计算文本的宽度和高度,用于定位
+        FontMetrics fm = g2d.getFontMetrics();
+        int textWidth = fm.stringWidth(nickName);
+        int textHeight = fm.getHeight();
+
+        // 在图片上绘制文本
+        // 注意:x和y坐标定义了文本左下角的位置
+        int x = (width - textWidth) / 2; // 居中显示
+        int y = height - textHeight+70; // 距离底部10像素
+        g2d.drawString(nickName, x, y);
+
+        // 释放图形上下文使用的系统资源
+        g2d.dispose();
+
+        // 保存图片到文件
+        try {
+            String path = pathName.substring(0, pathName.lastIndexOf("/"));
+            if (!new File(path).isDirectory()) {
+                new File(path).mkdirs();
+            }
+            OutputStream out = Files.newOutputStream(Paths.get(pathName));
+            ImageIO.write(image, fileType, out);
+            out.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsYsplanContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 压缩培训内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/ysContent")
+public class TTsYsplanContentController extends BaseController
+{
+    @Autowired
+    private ITTsYsplanContentService tTsYsplanContentService;
+
+    /**
+     * 查询压缩培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsYsplanContent tTsYsplanContent)
+    {
+        startPage();
+        List<TTsYsplanContent> list = tTsYsplanContentService.selectTTsYsplanContentList(tTsYsplanContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出压缩培训内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysContent:export')")
+    @Log(title = "压缩培训内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsYsplanContent tTsYsplanContent)
+    {
+        List<TTsYsplanContent> list = tTsYsplanContentService.selectTTsYsplanContentList(tTsYsplanContent);
+        ExcelUtil<TTsYsplanContent> util = new ExcelUtil<TTsYsplanContent>(TTsYsplanContent.class);
+        return util.exportExcel(list, "ysContent");
+    }
+
+    /**
+     * 获取压缩培训内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsYsplanContentService.selectTTsYsplanContentById(id));
+    }
+
+    /**
+     * 新增压缩培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysContent:add')")
+    @Log(title = "压缩培训内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsYsplanContent tTsYsplanContent)
+    {
+        return toAjax(tTsYsplanContentService.insertTTsYsplanContent(tTsYsplanContent));
+    }
+
+    /**
+     * 修改压缩培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysContent:edit')")
+    @Log(title = "压缩培训内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsYsplanContent tTsYsplanContent)
+    {
+        return toAjax(tTsYsplanContentService.updateTTsYsplanContent(tTsYsplanContent));
+    }
+
+    /**
+     * 删除压缩培训内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysContent:remove')")
+    @Log(title = "压缩培训内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsYsplanContentService.deleteTTsYsplanContentByIds(ids));
+    }
+}

+ 3 - 5
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanController.java

@@ -46,10 +46,8 @@ public class TTsYsplanController extends BaseController {
      * 查询转岗培训列表
      */
     @GetMapping("/list")
-    public TableDataInfo list(TTsYsplan tTsYsplan) {
-        startPage();
-        List<TTsYsplan> list = tTsYsplanService.selectTTsYsplanList(tTsYsplan);
-        return getDataTable(list);
+    public AjaxResult list(TTsYsplan tTsYsplan) {
+        return AjaxResult.success(tTsYsplanService.selectTTsYsplanList(tTsYsplan));
     }
 
     /**
@@ -93,7 +91,7 @@ public class TTsYsplanController extends BaseController {
             if (timer < need.getTimerNeed()) {
                 need.setTimer(timer + 1);
                 if (need.getTimerNeed() == null)
-                    need.setTimerNeed(0L);
+                    need.setTimerNeed(0.0);
                 if (need.getTimerNeed() != null && need.getTimerNeed() <= timer + 1) {
                     need.setPlanStatus(2L);
                 }

+ 103 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanTmplContentController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.training.bccnew.controller;
+
+import java.util.List;
+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.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsYsplanTmplContentService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 转岗培训模版内容Controller
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@RestController
+@RequestMapping("/bccnew/ysTmplContent")
+public class TTsYsplanTmplContentController extends BaseController
+{
+    @Autowired
+    private ITTsYsplanTmplContentService tTsYsplanTmplContentService;
+
+    /**
+     * 查询转岗培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysTmplContent:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        startPage();
+        List<TTsYsplanTmplContent> list = tTsYsplanTmplContentService.selectTTsYsplanTmplContentList(tTsYsplanTmplContent);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出转岗培训模版内容列表
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysTmplContent:export')")
+    @Log(title = "转岗培训模版内容", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        List<TTsYsplanTmplContent> list = tTsYsplanTmplContentService.selectTTsYsplanTmplContentList(tTsYsplanTmplContent);
+        ExcelUtil<TTsYsplanTmplContent> util = new ExcelUtil<TTsYsplanTmplContent>(TTsYsplanTmplContent.class);
+        return util.exportExcel(list, "ysTmplContent");
+    }
+
+    /**
+     * 获取转岗培训模版内容详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysTmplContent:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tTsYsplanTmplContentService.selectTTsYsplanTmplContentById(id));
+    }
+
+    /**
+     * 新增转岗培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysTmplContent:add')")
+    @Log(title = "转岗培训模版内容", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        return toAjax(tTsYsplanTmplContentService.insertTTsYsplanTmplContent(tTsYsplanTmplContent));
+    }
+
+    /**
+     * 修改转岗培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysTmplContent:edit')")
+    @Log(title = "转岗培训模版内容", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        return toAjax(tTsYsplanTmplContentService.updateTTsYsplanTmplContent(tTsYsplanTmplContent));
+    }
+
+    /**
+     * 删除转岗培训模版内容
+     */
+    @PreAuthorize("@ss.hasPermi('bccnew:ysTmplContent:remove')")
+    @Log(title = "转岗培训模版内容", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tTsYsplanTmplContentService.deleteTTsYsplanTmplContentByIds(ids));
+    }
+}

+ 32 - 16
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsYsplanTmplController.java

@@ -10,8 +10,13 @@ import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
 import com.ruoyi.project.training.bccnew.domain.TTsYsplanTmpl;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsYsplanTmplContentService;
 import com.ruoyi.project.training.bccnew.service.ITTsYsplanTmplService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -37,16 +42,16 @@ import java.util.List;
 public class TTsYsplanTmplController extends BaseController {
     @Autowired
     private ITTsYsplanTmplService tTsYsplanTmplService;
+    @Autowired
+    private ITTsYsplanTmplContentService tTsYsplanTmplContentService;
 
     /**
      * 查询压缩培训模版列表
      */
     @PreAuthorize("@ss.hasPermi('bccnew:ysPlan:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TTsYsplanTmpl tTsYsplanTmpl) {
-        startPage();
-        List<TTsYsplanTmpl> list = tTsYsplanTmplService.selectTTsYsplanTmplList(tTsYsplanTmpl);
-        return getDataTable(list);
+    public AjaxResult list(TTsYsplanTmpl tTsYsplanTmpl) {
+        return AjaxResult.success(tTsYsplanTmplService.selectTTsYsplanTmplList(tTsYsplanTmpl));
     }
 
     /**
@@ -77,7 +82,23 @@ public class TTsYsplanTmplController extends BaseController {
     @Log(title = "压缩培训模版", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TTsYsplanTmpl tTsYsplanTmpl) {
-        return toAjax(tTsYsplanTmplService.insertTTsYsplanTmpl(tTsYsplanTmpl));
+        TTsYsplanTmpl tmpl = new TTsYsplanTmpl();
+        tmpl.setTopic(tTsYsplanTmpl.getTopic());
+        List<TTsYsplanTmpl> tTsYsplanTmpls = tTsYsplanTmplService.selectTTsYsplanTmplList(tmpl);
+        TTsYsplanTmplContent content = new TTsYsplanTmplContent();
+        content.setCourseDay(tTsYsplanTmpl.getCourseDay());
+        content.setContent(tTsYsplanTmpl.getContent());
+        content.setSortTmpl(tTsYsplanTmpl.getSortTmpl());
+        tTsYsplanTmpl.setCourseDay(null);
+        if (CollectionUtils.isEmpty(tTsYsplanTmpls)) {
+            tTsYsplanTmplService.insertTTsYsplanTmpl(tTsYsplanTmpl);
+            content.setPid(tTsYsplanTmpl.getId());
+            return toAjax(tTsYsplanTmplContentService.insertTTsYsplanTmplContent(content));
+        } else {
+            TTsYsplanTmpl item = tTsYsplanTmpls.get(0);
+            content.setPid(item.getId());
+            return toAjax(tTsYsplanTmplContentService.insertTTsYsplanTmplContent(content));
+        }
     }
 
     /**
@@ -146,24 +167,18 @@ public class TTsYsplanTmplController extends BaseController {
                     String cellValue = ExcelUtils.getCellValue(cell);
                     logger.info("cellValue:" + cellValue);
                     if (j == 0) {
-                        entity.setSortTmpl(cellValue);
+                        entity.setSortTmpl(Long.valueOf(cellValue));
                     } else if (j == 1) {
-                        entity.setCourseCode(cellValue);
+                        entity.setDetailPlan(cellValue);
                     } else if (j == 2) {
                         entity.setTopic(cellValue);
                     } else if (j == 3) {
-                        entity.setContent(cellValue);
+                        entity.setCourseDay(cellValue);
                     } else if (j == 4) {
-                        entity.setCourseDay(Long.valueOf(cellValue));
+                        entity.setContent(cellValue);
                     } else if (j == 5) {
-                        entity.setCourseHour(Long.valueOf(cellValue));
+                        entity.setTimerNeed(Double.valueOf(cellValue));
                     } else if (j == 6) {
-                        entity.setDetailPlan(cellValue);
-                    } else if (j == 7) {
-                        entity.setTrainer(cellValue);
-                    } else if (j == 8) {
-                        entity.setTimerNeed(Long.valueOf(cellValue));
-                    } else if (j == 9) {
                         entity.setRemarks(cellValue);
                     }
                 }
@@ -184,6 +199,7 @@ public class TTsYsplanTmplController extends BaseController {
                 add(t);
                 successNumber++;
             } catch (Exception e) {
+                e.printStackTrace();
                 failNumber++;
                 failRow.add(failNum + 1);
             }

+ 12 - 12
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFirstplan.java

@@ -38,11 +38,11 @@ public class TTsFirstplan extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 培训类型 */
     @Excel(name = "培训类型")
@@ -116,10 +116,10 @@ public class TTsFirstplan extends BaseEntity
 
     private Long timer;
 
-    private Long timerNeed;
+    private Double timerNeed;
 
     /** 模板排序*/
-    private String sortTmpl;
+    private Long sortTmpl;
 
     /** 材料版本*/
     private String materialVer;
@@ -207,11 +207,11 @@ public class TTsFirstplan extends BaseEntity
         this.studentConfirm = studentConfirm;
     }
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
@@ -263,11 +263,11 @@ public class TTsFirstplan extends BaseEntity
         this.timer = timer;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -332,21 +332,21 @@ public class TTsFirstplan extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 12 - 12
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFirstplanTmpl.java

@@ -39,11 +39,11 @@ public class TTsFirstplanTmpl extends BaseEntity
     private String content;
 
     /** 培训天 */
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训时长h")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 培训类型 */
     private String courseType;
@@ -56,7 +56,7 @@ public class TTsFirstplanTmpl extends BaseEntity
     private String trainer;
 
     /** 应学习时长 */
-    private Long timerNeed;
+    private Double timerNeed;
 
     /** 培训日期 */
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
@@ -97,7 +97,7 @@ public class TTsFirstplanTmpl extends BaseEntity
     private String fileName;
 
     /** 模板排序 */
-    private String sortTmpl;
+    private Long sortTmpl;
 
     private Long examId;
 
@@ -125,11 +125,11 @@ public class TTsFirstplanTmpl extends BaseEntity
         this.examType = examType;
     }
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
@@ -149,11 +149,11 @@ public class TTsFirstplanTmpl extends BaseEntity
         this.fileName = fileName;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -202,21 +202,21 @@ public class TTsFirstplanTmpl extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 17 - 17
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplan.java

@@ -38,11 +38,11 @@ public class TTsFlplan extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -116,29 +116,29 @@ public class TTsFlplan extends BaseEntity
 
     private Long timer;
 
-    private Long timerNeed;
+    private Double timerNeed;
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-    private Date planStartData;
+    private Date planData;
 
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     private Date planEndData;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
-    public Date getPlanStartData() {
-        return planStartData;
+    public Date getPlanData() {
+        return planData;
     }
 
-    public void setPlanStartData(Date planStartData) {
-        this.planStartData = planStartData;
+    public void setPlanData(Date planData) {
+        this.planData = planData;
     }
 
     public Date getPlanEndData() {
@@ -173,11 +173,11 @@ public class TTsFlplan extends BaseEntity
         this.timer = timer;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -243,21 +243,21 @@ public class TTsFlplan extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 209 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplanContent.java

@@ -0,0 +1,209 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 分离培训内容对象 t_ts_flplan_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsFlplanContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 计划培训日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "计划培训日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date planData;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setPlanData(Date planData)
+    {
+        this.planData = planData;
+    }
+
+    public Date getPlanData()
+    {
+        return planData;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("planData", getPlanData())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 12 - 12
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplanTmpl.java

@@ -35,11 +35,11 @@ public class TTsFlplanTmpl extends BaseEntity
     private String content;
 
     /** 培训天 */
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训时长h")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -95,15 +95,15 @@ public class TTsFlplanTmpl extends BaseEntity
 
     private String fileName;
 
-    private Long timerNeed;
+    private Double timerNeed;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
@@ -123,11 +123,11 @@ public class TTsFlplanTmpl extends BaseEntity
         this.fileName = fileName;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -184,21 +184,21 @@ public class TTsFlplanTmpl extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 194 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFlplanTmplContent.java

@@ -0,0 +1,194 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 分离培训模版内容对象 t_ts_flplan_tmpl_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsFlplanTmplContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 17 - 17
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplan.java

@@ -38,11 +38,11 @@ public class TTsFtplan extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -116,29 +116,29 @@ public class TTsFtplan extends BaseEntity
 
     private Long timer;
 
-    private Long timerNeed;
+    private Double timerNeed;
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-    private Date planStartData;
+    private Date planData;
 
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     private Date planEndData;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
-    public Date getPlanStartData() {
-        return planStartData;
+    public Date getPlanData() {
+        return planData;
     }
 
-    public void setPlanStartData(Date planStartData) {
-        this.planStartData = planStartData;
+    public void setPlanData(Date planData) {
+        this.planData = planData;
     }
 
     public Date getPlanEndData() {
@@ -173,11 +173,11 @@ public class TTsFtplan extends BaseEntity
         this.timer = timer;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -243,21 +243,21 @@ public class TTsFtplan extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 209 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplanContent.java

@@ -0,0 +1,209 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 芳烃培训内容对象 t_ts_ftplan_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsFtplanContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 计划培训日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "计划培训日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date planData;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setPlanData(Date planData)
+    {
+        this.planData = planData;
+    }
+
+    public Date getPlanData()
+    {
+        return planData;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("planData", getPlanData())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 12 - 12
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplanTmpl.java

@@ -38,11 +38,11 @@ public class TTsFtplanTmpl extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -98,15 +98,15 @@ public class TTsFtplanTmpl extends BaseEntity
 
     private String fileName;
 
-    private Long timerNeed;
+    private Double timerNeed;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
@@ -126,11 +126,11 @@ public class TTsFtplanTmpl extends BaseEntity
         this.fileName = fileName;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -187,21 +187,21 @@ public class TTsFtplanTmpl extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 194 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsFtplanTmplContent.java

@@ -0,0 +1,194 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 芳烃培训模版内容对象 t_ts_ftplan_tmpl_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsFtplanTmplContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 17 - 17
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplan.java

@@ -38,11 +38,11 @@ public class TTsLjplan extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -116,29 +116,29 @@ public class TTsLjplan extends BaseEntity
 
     private Long timer;
 
-    private Long timerNeed;
+    private Double timerNeed;
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-    private Date planStartData;
+    private Date planData;
 
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     private Date planEndData;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
-    public Date getPlanStartData() {
-        return planStartData;
+    public Date getPlanData() {
+        return planData;
     }
 
-    public void setPlanStartData(Date planStartData) {
-        this.planStartData = planStartData;
+    public void setPlanData(Date planData) {
+        this.planData = planData;
     }
 
     public Date getPlanEndData() {
@@ -173,11 +173,11 @@ public class TTsLjplan extends BaseEntity
         this.timer = timer;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -243,21 +243,21 @@ public class TTsLjplan extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 209 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplanContent.java

@@ -0,0 +1,209 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 裂解培训内容对象 t_ts_ljplan_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsLjplanContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 计划培训日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "计划培训日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date planData;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setPlanData(Date planData)
+    {
+        this.planData = planData;
+    }
+
+    public Date getPlanData()
+    {
+        return planData;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("planData", getPlanData())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 12 - 12
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplanTmpl.java

@@ -38,11 +38,11 @@ public class TTsLjplanTmpl extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -98,15 +98,15 @@ public class TTsLjplanTmpl extends BaseEntity
 
     private String fileName;
 
-    private Long timerNeed;
+    private Double timerNeed;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
@@ -126,11 +126,11 @@ public class TTsLjplanTmpl extends BaseEntity
         this.fileName = fileName;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -187,21 +187,21 @@ public class TTsLjplanTmpl extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 194 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsLjplanTmplContent.java

@@ -0,0 +1,194 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 裂解培训模版内容对象 t_ts_ljplan_tmpl_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsLjplanTmplContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 17 - 17
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplan.java

@@ -38,11 +38,11 @@ public class TTsYsplan extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -116,30 +116,30 @@ public class TTsYsplan extends BaseEntity
 
     private Long timer;
 
-    private Long timerNeed;
+    private Double timerNeed;
 
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
-    private Date planStartData;
+    private Date planData;
 
     @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
     private Date planEndData;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
-    public Date getPlanStartData() {
-        return planStartData;
+    public Date getPlanData() {
+        return planData;
     }
 
-    public void setPlanStartData(Date planStartData) {
-        this.planStartData = planStartData;
+    public void setPlanData(Date planData) {
+        this.planData = planData;
     }
 
     public Date getPlanEndData() {
@@ -174,11 +174,11 @@ public class TTsYsplan extends BaseEntity
         this.timer = timer;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -244,21 +244,21 @@ public class TTsYsplan extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 209 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplanContent.java

@@ -0,0 +1,209 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 压缩培训内容对象 t_ts_ysplan_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsYsplanContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 计划培训日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "计划培训日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date planData;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setPlanData(Date planData)
+    {
+        this.planData = planData;
+    }
+
+    public Date getPlanData()
+    {
+        return planData;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("planData", getPlanData())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 12 - 12
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplanTmpl.java

@@ -38,11 +38,11 @@ public class TTsYsplanTmpl extends BaseEntity
 
     /** 培训天 */
     @Excel(name = "培训天")
-    private Long courseDay;
+    private String courseDay;
 
     /** 培训小时 */
     @Excel(name = "培训小时")
-    private Long courseHour;
+    private Double courseHour;
 
     /** 详细计划 */
     @Excel(name = "详细计划")
@@ -98,15 +98,15 @@ public class TTsYsplanTmpl extends BaseEntity
 
     private String fileName;
 
-    private Long timerNeed;
+    private Double timerNeed;
 
-    private String sortTmpl;
+    private Long sortTmpl;
 
-    public String getSortTmpl() {
+    public Long getSortTmpl() {
         return sortTmpl;
     }
 
-    public void setSortTmpl(String sortTmpl) {
+    public void setSortTmpl(Long sortTmpl) {
         this.sortTmpl = sortTmpl;
     }
 
@@ -126,11 +126,11 @@ public class TTsYsplanTmpl extends BaseEntity
         this.fileName = fileName;
     }
 
-    public Long getTimerNeed() {
+    public Double getTimerNeed() {
         return timerNeed;
     }
 
-    public void setTimerNeed(Long timerNeed) {
+    public void setTimerNeed(Double timerNeed) {
         this.timerNeed = timerNeed;
     }
 
@@ -187,21 +187,21 @@ public class TTsYsplanTmpl extends BaseEntity
     {
         return content;
     }
-    public void setCourseDay(Long courseDay)
+    public void setCourseDay(String courseDay)
     {
         this.courseDay = courseDay;
     }
 
-    public Long getCourseDay()
+    public String getCourseDay()
     {
         return courseDay;
     }
-    public void setCourseHour(Long courseHour)
+    public void setCourseHour(Double courseHour)
     {
         this.courseHour = courseHour;
     }
 
-    public Long getCourseHour()
+    public Double getCourseHour()
     {
         return courseHour;
     }

+ 194 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/domain/TTsYsplanTmplContent.java

@@ -0,0 +1,194 @@
+package com.ruoyi.project.training.bccnew.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 转岗培训模版内容对象 t_ts_ysplan_tmpl_content
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+public class TTsYsplanTmplContent extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 主题id */
+    @Excel(name = "主题id")
+    private Long pid;
+
+    /** 培训内容 */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /** 培训计划 */
+    @Excel(name = "培训计划")
+    private String courseDay;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 模板排序 */
+    @Excel(name = "模板排序")
+    private Long sortTmpl;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPid(Long pid)
+    {
+        this.pid = pid;
+    }
+
+    public Long getPid()
+    {
+        return pid;
+    }
+    public void setContent(String content)
+    {
+        this.content = content;
+    }
+
+    public String getContent()
+    {
+        return content;
+    }
+    public void setCourseDay(String courseDay)
+    {
+        this.courseDay = courseDay;
+    }
+
+    public String getCourseDay()
+    {
+        return courseDay;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setSortTmpl(Long sortTmpl)
+    {
+        this.sortTmpl = sortTmpl;
+    }
+
+    public Long getSortTmpl()
+    {
+        return sortTmpl;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("pid", getPid())
+            .append("content", getContent())
+            .append("courseDay", getCourseDay())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("sortTmpl", getSortTmpl())
+            .toString();
+    }
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFlplanContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanContent;
+
+/**
+ * 分离培训内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsFlplanContentMapper 
+{
+    /**
+     * 查询分离培训内容
+     * 
+     * @param id 分离培训内容ID
+     * @return 分离培训内容
+     */
+    public TTsFlplanContent selectTTsFlplanContentById(Long id);
+
+    /**
+     * 查询分离培训内容列表
+     * 
+     * @param tTsFlplanContent 分离培训内容
+     * @return 分离培训内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsFlplanContent> selectTTsFlplanContentList(TTsFlplanContent tTsFlplanContent);
+
+    /**
+     * 新增分离培训内容
+     * 
+     * @param tTsFlplanContent 分离培训内容
+     * @return 结果
+     */
+    public int insertTTsFlplanContent(TTsFlplanContent tTsFlplanContent);
+
+    /**
+     * 修改分离培训内容
+     * 
+     * @param tTsFlplanContent 分离培训内容
+     * @return 结果
+     */
+    public int updateTTsFlplanContent(TTsFlplanContent tTsFlplanContent);
+
+    /**
+     * 删除分离培训内容
+     * 
+     * @param id 分离培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanContentById(Long id);
+
+    /**
+     * 批量删除分离培训内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanContentByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFlplanTmplContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
+
+/**
+ * 分离培训模版内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsFlplanTmplContentMapper 
+{
+    /**
+     * 查询分离培训模版内容
+     * 
+     * @param id 分离培训模版内容ID
+     * @return 分离培训模版内容
+     */
+    public TTsFlplanTmplContent selectTTsFlplanTmplContentById(Long id);
+
+    /**
+     * 查询分离培训模版内容列表
+     * 
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 分离培训模版内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsFlplanTmplContent> selectTTsFlplanTmplContentList(TTsFlplanTmplContent tTsFlplanTmplContent);
+
+    /**
+     * 新增分离培训模版内容
+     * 
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 结果
+     */
+    public int insertTTsFlplanTmplContent(TTsFlplanTmplContent tTsFlplanTmplContent);
+
+    /**
+     * 修改分离培训模版内容
+     * 
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 结果
+     */
+    public int updateTTsFlplanTmplContent(TTsFlplanTmplContent tTsFlplanTmplContent);
+
+    /**
+     * 删除分离培训模版内容
+     * 
+     * @param id 分离培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanTmplContentById(Long id);
+
+    /**
+     * 批量删除分离培训模版内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanTmplContentByIds(Long[] ids);
+}

+ 1 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFlplanTmplMapper.java

@@ -26,6 +26,7 @@ public interface TTsFlplanTmplMapper
      * @param tTsFlplanTmpl 分离培训模版
      * @return 分离培训模版集合
      */
+    public List<TTsFlplanTmpl> selectFlTmplListWithoutContent(TTsFlplanTmpl tTsFlplanTmpl);
     public List<TTsFlplanTmpl> selectTTsFlplanTmplList(TTsFlplanTmpl tTsFlplanTmpl);
 
     /**

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFtplanContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanContent;
+
+/**
+ * 芳烃培训内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsFtplanContentMapper 
+{
+    /**
+     * 查询芳烃培训内容
+     * 
+     * @param id 芳烃培训内容ID
+     * @return 芳烃培训内容
+     */
+    public TTsFtplanContent selectTTsFtplanContentById(Long id);
+
+    /**
+     * 查询芳烃培训内容列表
+     * 
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 芳烃培训内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsFtplanContent> selectTTsFtplanContentList(TTsFtplanContent tTsFtplanContent);
+
+    /**
+     * 新增芳烃培训内容
+     * 
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 结果
+     */
+    public int insertTTsFtplanContent(TTsFtplanContent tTsFtplanContent);
+
+    /**
+     * 修改芳烃培训内容
+     * 
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 结果
+     */
+    public int updateTTsFtplanContent(TTsFtplanContent tTsFtplanContent);
+
+    /**
+     * 删除芳烃培训内容
+     * 
+     * @param id 芳烃培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanContentById(Long id);
+
+    /**
+     * 批量删除芳烃培训内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanContentByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFtplanTmplContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanTmplContent;
+
+/**
+ * 芳烃培训模版内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsFtplanTmplContentMapper 
+{
+    /**
+     * 查询芳烃培训模版内容
+     * 
+     * @param id 芳烃培训模版内容ID
+     * @return 芳烃培训模版内容
+     */
+    public TTsFtplanTmplContent selectTTsFtplanTmplContentById(Long id);
+
+    /**
+     * 查询芳烃培训模版内容列表
+     * 
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 芳烃培训模版内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsFtplanTmplContent> selectTTsFtplanTmplContentList(TTsFtplanTmplContent tTsFtplanTmplContent);
+
+    /**
+     * 新增芳烃培训模版内容
+     * 
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 结果
+     */
+    public int insertTTsFtplanTmplContent(TTsFtplanTmplContent tTsFtplanTmplContent);
+
+    /**
+     * 修改芳烃培训模版内容
+     * 
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 结果
+     */
+    public int updateTTsFtplanTmplContent(TTsFtplanTmplContent tTsFtplanTmplContent);
+
+    /**
+     * 删除芳烃培训模版内容
+     * 
+     * @param id 芳烃培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanTmplContentById(Long id);
+
+    /**
+     * 批量删除芳烃培训模版内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanTmplContentByIds(Long[] ids);
+}

+ 1 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsFtplanTmplMapper.java

@@ -26,6 +26,7 @@ public interface TTsFtplanTmplMapper
      * @param tTsFtplanTmpl 芳烃培训模版
      * @return 芳烃培训模版集合
      */
+    public List<TTsFtplanTmpl> selectFtTmplListWithoutContent(TTsFtplanTmpl tTsFtplanTmpl);
     public List<TTsFtplanTmpl> selectTTsFtplanTmplList(TTsFtplanTmpl tTsFtplanTmpl);
 
     /**

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsLjplanContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanContent;
+
+/**
+ * 裂解培训内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsLjplanContentMapper 
+{
+    /**
+     * 查询裂解培训内容
+     * 
+     * @param id 裂解培训内容ID
+     * @return 裂解培训内容
+     */
+    public TTsLjplanContent selectTTsLjplanContentById(Long id);
+
+    /**
+     * 查询裂解培训内容列表
+     * 
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 裂解培训内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsLjplanContent> selectTTsLjplanContentList(TTsLjplanContent tTsLjplanContent);
+
+    /**
+     * 新增裂解培训内容
+     * 
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 结果
+     */
+    public int insertTTsLjplanContent(TTsLjplanContent tTsLjplanContent);
+
+    /**
+     * 修改裂解培训内容
+     * 
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 结果
+     */
+    public int updateTTsLjplanContent(TTsLjplanContent tTsLjplanContent);
+
+    /**
+     * 删除裂解培训内容
+     * 
+     * @param id 裂解培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanContentById(Long id);
+
+    /**
+     * 批量删除裂解培训内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanContentByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsLjplanTmplContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanTmplContent;
+
+/**
+ * 裂解培训模版内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsLjplanTmplContentMapper 
+{
+    /**
+     * 查询裂解培训模版内容
+     * 
+     * @param id 裂解培训模版内容ID
+     * @return 裂解培训模版内容
+     */
+    public TTsLjplanTmplContent selectTTsLjplanTmplContentById(Long id);
+
+    /**
+     * 查询裂解培训模版内容列表
+     * 
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 裂解培训模版内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsLjplanTmplContent> selectTTsLjplanTmplContentList(TTsLjplanTmplContent tTsLjplanTmplContent);
+
+    /**
+     * 新增裂解培训模版内容
+     * 
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 结果
+     */
+    public int insertTTsLjplanTmplContent(TTsLjplanTmplContent tTsLjplanTmplContent);
+
+    /**
+     * 修改裂解培训模版内容
+     * 
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 结果
+     */
+    public int updateTTsLjplanTmplContent(TTsLjplanTmplContent tTsLjplanTmplContent);
+
+    /**
+     * 删除裂解培训模版内容
+     * 
+     * @param id 裂解培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanTmplContentById(Long id);
+
+    /**
+     * 批量删除裂解培训模版内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanTmplContentByIds(Long[] ids);
+}

+ 1 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsLjplanTmplMapper.java

@@ -26,6 +26,7 @@ public interface TTsLjplanTmplMapper
      * @param tTsLjplanTmpl 裂解培训模版
      * @return 裂解培训模版集合
      */
+    public List<TTsLjplanTmpl> selectLjTmplListWithoutContent(TTsLjplanTmpl tTsLjplanTmpl);
     public List<TTsLjplanTmpl> selectTTsLjplanTmplList(TTsLjplanTmpl tTsLjplanTmpl);
 
     /**

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsYsplanContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanContent;
+
+/**
+ * 压缩培训内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsYsplanContentMapper 
+{
+    /**
+     * 查询压缩培训内容
+     * 
+     * @param id 压缩培训内容ID
+     * @return 压缩培训内容
+     */
+    public TTsYsplanContent selectTTsYsplanContentById(Long id);
+
+    /**
+     * 查询压缩培训内容列表
+     * 
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 压缩培训内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsYsplanContent> selectTTsYsplanContentList(TTsYsplanContent tTsYsplanContent);
+
+    /**
+     * 新增压缩培训内容
+     * 
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 结果
+     */
+    public int insertTTsYsplanContent(TTsYsplanContent tTsYsplanContent);
+
+    /**
+     * 修改压缩培训内容
+     * 
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 结果
+     */
+    public int updateTTsYsplanContent(TTsYsplanContent tTsYsplanContent);
+
+    /**
+     * 删除压缩培训内容
+     * 
+     * @param id 压缩培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanContentById(Long id);
+
+    /**
+     * 批量删除压缩培训内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanContentByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsYsplanTmplContentMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.training.bccnew.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanTmplContent;
+
+/**
+ * 转岗培训模版内容Mapper接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface TTsYsplanTmplContentMapper 
+{
+    /**
+     * 查询转岗培训模版内容
+     * 
+     * @param id 转岗培训模版内容ID
+     * @return 转岗培训模版内容
+     */
+    public TTsYsplanTmplContent selectTTsYsplanTmplContentById(Long id);
+
+    /**
+     * 查询转岗培训模版内容列表
+     * 
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 转岗培训模版内容集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TTsYsplanTmplContent> selectTTsYsplanTmplContentList(TTsYsplanTmplContent tTsYsplanTmplContent);
+
+    /**
+     * 新增转岗培训模版内容
+     * 
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 结果
+     */
+    public int insertTTsYsplanTmplContent(TTsYsplanTmplContent tTsYsplanTmplContent);
+
+    /**
+     * 修改转岗培训模版内容
+     * 
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 结果
+     */
+    public int updateTTsYsplanTmplContent(TTsYsplanTmplContent tTsYsplanTmplContent);
+
+    /**
+     * 删除转岗培训模版内容
+     * 
+     * @param id 转岗培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanTmplContentById(Long id);
+
+    /**
+     * 批量删除转岗培训模版内容
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanTmplContentByIds(Long[] ids);
+}

+ 1 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/mapper/TTsYsplanTmplMapper.java

@@ -26,6 +26,7 @@ public interface TTsYsplanTmplMapper
      * @param tTsYsplanTmpl 压缩培训模版
      * @return 压缩培训模版集合
      */
+    public List<TTsYsplanTmpl> selectYsTmplListWithoutContent(TTsYsplanTmpl tTsYsplanTmpl);
     public List<TTsYsplanTmpl> selectTTsYsplanTmplList(TTsYsplanTmpl tTsYsplanTmpl);
 
     /**

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFlplanContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanContent;
+
+/**
+ * 分离培训内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsFlplanContentService 
+{
+    /**
+     * 查询分离培训内容
+     * 
+     * @param id 分离培训内容ID
+     * @return 分离培训内容
+     */
+    public TTsFlplanContent selectTTsFlplanContentById(Long id);
+
+    /**
+     * 查询分离培训内容列表
+     * 
+     * @param tTsFlplanContent 分离培训内容
+     * @return 分离培训内容集合
+     */
+    public List<TTsFlplanContent> selectTTsFlplanContentList(TTsFlplanContent tTsFlplanContent);
+
+    /**
+     * 新增分离培训内容
+     * 
+     * @param tTsFlplanContent 分离培训内容
+     * @return 结果
+     */
+    public int insertTTsFlplanContent(TTsFlplanContent tTsFlplanContent);
+
+    /**
+     * 修改分离培训内容
+     * 
+     * @param tTsFlplanContent 分离培训内容
+     * @return 结果
+     */
+    public int updateTTsFlplanContent(TTsFlplanContent tTsFlplanContent);
+
+    /**
+     * 批量删除分离培训内容
+     * 
+     * @param ids 需要删除的分离培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanContentByIds(Long[] ids);
+
+    /**
+     * 删除分离培训内容信息
+     * 
+     * @param id 分离培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFlplanTmplContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
+
+/**
+ * 分离培训模版内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsFlplanTmplContentService 
+{
+    /**
+     * 查询分离培训模版内容
+     * 
+     * @param id 分离培训模版内容ID
+     * @return 分离培训模版内容
+     */
+    public TTsFlplanTmplContent selectTTsFlplanTmplContentById(Long id);
+
+    /**
+     * 查询分离培训模版内容列表
+     * 
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 分离培训模版内容集合
+     */
+    public List<TTsFlplanTmplContent> selectTTsFlplanTmplContentList(TTsFlplanTmplContent tTsFlplanTmplContent);
+
+    /**
+     * 新增分离培训模版内容
+     * 
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 结果
+     */
+    public int insertTTsFlplanTmplContent(TTsFlplanTmplContent tTsFlplanTmplContent);
+
+    /**
+     * 修改分离培训模版内容
+     * 
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 结果
+     */
+    public int updateTTsFlplanTmplContent(TTsFlplanTmplContent tTsFlplanTmplContent);
+
+    /**
+     * 批量删除分离培训模版内容
+     * 
+     * @param ids 需要删除的分离培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanTmplContentByIds(Long[] ids);
+
+    /**
+     * 删除分离培训模版内容信息
+     * 
+     * @param id 分离培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsFlplanTmplContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFtplanContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanContent;
+
+/**
+ * 芳烃培训内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsFtplanContentService 
+{
+    /**
+     * 查询芳烃培训内容
+     * 
+     * @param id 芳烃培训内容ID
+     * @return 芳烃培训内容
+     */
+    public TTsFtplanContent selectTTsFtplanContentById(Long id);
+
+    /**
+     * 查询芳烃培训内容列表
+     * 
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 芳烃培训内容集合
+     */
+    public List<TTsFtplanContent> selectTTsFtplanContentList(TTsFtplanContent tTsFtplanContent);
+
+    /**
+     * 新增芳烃培训内容
+     * 
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 结果
+     */
+    public int insertTTsFtplanContent(TTsFtplanContent tTsFtplanContent);
+
+    /**
+     * 修改芳烃培训内容
+     * 
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 结果
+     */
+    public int updateTTsFtplanContent(TTsFtplanContent tTsFtplanContent);
+
+    /**
+     * 批量删除芳烃培训内容
+     * 
+     * @param ids 需要删除的芳烃培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanContentByIds(Long[] ids);
+
+    /**
+     * 删除芳烃培训内容信息
+     * 
+     * @param id 芳烃培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsFtplanTmplContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanTmplContent;
+
+/**
+ * 芳烃培训模版内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsFtplanTmplContentService 
+{
+    /**
+     * 查询芳烃培训模版内容
+     * 
+     * @param id 芳烃培训模版内容ID
+     * @return 芳烃培训模版内容
+     */
+    public TTsFtplanTmplContent selectTTsFtplanTmplContentById(Long id);
+
+    /**
+     * 查询芳烃培训模版内容列表
+     * 
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 芳烃培训模版内容集合
+     */
+    public List<TTsFtplanTmplContent> selectTTsFtplanTmplContentList(TTsFtplanTmplContent tTsFtplanTmplContent);
+
+    /**
+     * 新增芳烃培训模版内容
+     * 
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 结果
+     */
+    public int insertTTsFtplanTmplContent(TTsFtplanTmplContent tTsFtplanTmplContent);
+
+    /**
+     * 修改芳烃培训模版内容
+     * 
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 结果
+     */
+    public int updateTTsFtplanTmplContent(TTsFtplanTmplContent tTsFtplanTmplContent);
+
+    /**
+     * 批量删除芳烃培训模版内容
+     * 
+     * @param ids 需要删除的芳烃培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanTmplContentByIds(Long[] ids);
+
+    /**
+     * 删除芳烃培训模版内容信息
+     * 
+     * @param id 芳烃培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsFtplanTmplContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsLjplanContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanContent;
+
+/**
+ * 裂解培训内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsLjplanContentService 
+{
+    /**
+     * 查询裂解培训内容
+     * 
+     * @param id 裂解培训内容ID
+     * @return 裂解培训内容
+     */
+    public TTsLjplanContent selectTTsLjplanContentById(Long id);
+
+    /**
+     * 查询裂解培训内容列表
+     * 
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 裂解培训内容集合
+     */
+    public List<TTsLjplanContent> selectTTsLjplanContentList(TTsLjplanContent tTsLjplanContent);
+
+    /**
+     * 新增裂解培训内容
+     * 
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 结果
+     */
+    public int insertTTsLjplanContent(TTsLjplanContent tTsLjplanContent);
+
+    /**
+     * 修改裂解培训内容
+     * 
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 结果
+     */
+    public int updateTTsLjplanContent(TTsLjplanContent tTsLjplanContent);
+
+    /**
+     * 批量删除裂解培训内容
+     * 
+     * @param ids 需要删除的裂解培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanContentByIds(Long[] ids);
+
+    /**
+     * 删除裂解培训内容信息
+     * 
+     * @param id 裂解培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsLjplanTmplContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanTmplContent;
+
+/**
+ * 裂解培训模版内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsLjplanTmplContentService 
+{
+    /**
+     * 查询裂解培训模版内容
+     * 
+     * @param id 裂解培训模版内容ID
+     * @return 裂解培训模版内容
+     */
+    public TTsLjplanTmplContent selectTTsLjplanTmplContentById(Long id);
+
+    /**
+     * 查询裂解培训模版内容列表
+     * 
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 裂解培训模版内容集合
+     */
+    public List<TTsLjplanTmplContent> selectTTsLjplanTmplContentList(TTsLjplanTmplContent tTsLjplanTmplContent);
+
+    /**
+     * 新增裂解培训模版内容
+     * 
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 结果
+     */
+    public int insertTTsLjplanTmplContent(TTsLjplanTmplContent tTsLjplanTmplContent);
+
+    /**
+     * 修改裂解培训模版内容
+     * 
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 结果
+     */
+    public int updateTTsLjplanTmplContent(TTsLjplanTmplContent tTsLjplanTmplContent);
+
+    /**
+     * 批量删除裂解培训模版内容
+     * 
+     * @param ids 需要删除的裂解培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanTmplContentByIds(Long[] ids);
+
+    /**
+     * 删除裂解培训模版内容信息
+     * 
+     * @param id 裂解培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsLjplanTmplContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsYsplanContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanContent;
+
+/**
+ * 压缩培训内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsYsplanContentService 
+{
+    /**
+     * 查询压缩培训内容
+     * 
+     * @param id 压缩培训内容ID
+     * @return 压缩培训内容
+     */
+    public TTsYsplanContent selectTTsYsplanContentById(Long id);
+
+    /**
+     * 查询压缩培训内容列表
+     * 
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 压缩培训内容集合
+     */
+    public List<TTsYsplanContent> selectTTsYsplanContentList(TTsYsplanContent tTsYsplanContent);
+
+    /**
+     * 新增压缩培训内容
+     * 
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 结果
+     */
+    public int insertTTsYsplanContent(TTsYsplanContent tTsYsplanContent);
+
+    /**
+     * 修改压缩培训内容
+     * 
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 结果
+     */
+    public int updateTTsYsplanContent(TTsYsplanContent tTsYsplanContent);
+
+    /**
+     * 批量删除压缩培训内容
+     * 
+     * @param ids 需要删除的压缩培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanContentByIds(Long[] ids);
+
+    /**
+     * 删除压缩培训内容信息
+     * 
+     * @param id 压缩培训内容ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanContentById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/ITTsYsplanTmplContentService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.training.bccnew.service;
+
+import java.util.List;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanTmplContent;
+
+/**
+ * 转岗培训模版内容Service接口
+ * 
+ * @author ssy
+ * @date 2024-07-19
+ */
+public interface ITTsYsplanTmplContentService 
+{
+    /**
+     * 查询转岗培训模版内容
+     * 
+     * @param id 转岗培训模版内容ID
+     * @return 转岗培训模版内容
+     */
+    public TTsYsplanTmplContent selectTTsYsplanTmplContentById(Long id);
+
+    /**
+     * 查询转岗培训模版内容列表
+     * 
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 转岗培训模版内容集合
+     */
+    public List<TTsYsplanTmplContent> selectTTsYsplanTmplContentList(TTsYsplanTmplContent tTsYsplanTmplContent);
+
+    /**
+     * 新增转岗培训模版内容
+     * 
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 结果
+     */
+    public int insertTTsYsplanTmplContent(TTsYsplanTmplContent tTsYsplanTmplContent);
+
+    /**
+     * 修改转岗培训模版内容
+     * 
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 结果
+     */
+    public int updateTTsYsplanTmplContent(TTsYsplanTmplContent tTsYsplanTmplContent);
+
+    /**
+     * 批量删除转岗培训模版内容
+     * 
+     * @param ids 需要删除的转岗培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanTmplContentByIds(Long[] ids);
+
+    /**
+     * 删除转岗培训模版内容信息
+     * 
+     * @param id 转岗培训模版内容ID
+     * @return 结果
+     */
+    public int deleteTTsYsplanTmplContentById(Long id);
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFlplanContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsFlplanContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFlplanContentService;
+
+/**
+ * 分离培训内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsFlplanContentServiceImpl implements ITTsFlplanContentService
+{
+    @Autowired
+    private TTsFlplanContentMapper tTsFlplanContentMapper;
+
+    /**
+     * 查询分离培训内容
+     *
+     * @param id 分离培训内容ID
+     * @return 分离培训内容
+     */
+    @Override
+    public TTsFlplanContent selectTTsFlplanContentById(Long id)
+    {
+        return tTsFlplanContentMapper.selectTTsFlplanContentById(id);
+    }
+
+    /**
+     * 查询分离培训内容列表
+     *
+     * @param tTsFlplanContent 分离培训内容
+     * @return 分离培训内容
+     */
+    @Override
+    public List<TTsFlplanContent> selectTTsFlplanContentList(TTsFlplanContent tTsFlplanContent)
+    {
+        return tTsFlplanContentMapper.selectTTsFlplanContentList(tTsFlplanContent);
+    }
+
+    /**
+     * 新增分离培训内容
+     *
+     * @param tTsFlplanContent 分离培训内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsFlplanContent(TTsFlplanContent tTsFlplanContent)
+    {
+        return tTsFlplanContentMapper.insertTTsFlplanContent(tTsFlplanContent);
+    }
+
+    /**
+     * 修改分离培训内容
+     *
+     * @param tTsFlplanContent 分离培训内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsFlplanContent(TTsFlplanContent tTsFlplanContent)
+    {
+        return tTsFlplanContentMapper.updateTTsFlplanContent(tTsFlplanContent);
+    }
+
+    /**
+     * 批量删除分离培训内容
+     *
+     * @param ids 需要删除的分离培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFlplanContentByIds(Long[] ids)
+    {
+        return tTsFlplanContentMapper.deleteTTsFlplanContentByIds(ids);
+    }
+
+    /**
+     * 删除分离培训内容信息
+     *
+     * @param id 分离培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFlplanContentById(Long id)
+    {
+        return tTsFlplanContentMapper.deleteTTsFlplanContentById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFlplanTmplContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsFlplanTmplContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsFlplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFlplanTmplContentService;
+
+/**
+ * 分离培训模版内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsFlplanTmplContentServiceImpl implements ITTsFlplanTmplContentService
+{
+    @Autowired
+    private TTsFlplanTmplContentMapper tTsFlplanTmplContentMapper;
+
+    /**
+     * 查询分离培训模版内容
+     *
+     * @param id 分离培训模版内容ID
+     * @return 分离培训模版内容
+     */
+    @Override
+    public TTsFlplanTmplContent selectTTsFlplanTmplContentById(Long id)
+    {
+        return tTsFlplanTmplContentMapper.selectTTsFlplanTmplContentById(id);
+    }
+
+    /**
+     * 查询分离培训模版内容列表
+     *
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 分离培训模版内容
+     */
+    @Override
+    public List<TTsFlplanTmplContent> selectTTsFlplanTmplContentList(TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        return tTsFlplanTmplContentMapper.selectTTsFlplanTmplContentList(tTsFlplanTmplContent);
+    }
+
+    /**
+     * 新增分离培训模版内容
+     *
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsFlplanTmplContent(TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        return tTsFlplanTmplContentMapper.insertTTsFlplanTmplContent(tTsFlplanTmplContent);
+    }
+
+    /**
+     * 修改分离培训模版内容
+     *
+     * @param tTsFlplanTmplContent 分离培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsFlplanTmplContent(TTsFlplanTmplContent tTsFlplanTmplContent)
+    {
+        return tTsFlplanTmplContentMapper.updateTTsFlplanTmplContent(tTsFlplanTmplContent);
+    }
+
+    /**
+     * 批量删除分离培训模版内容
+     *
+     * @param ids 需要删除的分离培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFlplanTmplContentByIds(Long[] ids)
+    {
+        return tTsFlplanTmplContentMapper.deleteTTsFlplanTmplContentByIds(ids);
+    }
+
+    /**
+     * 删除分离培训模版内容信息
+     *
+     * @param id 分离培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFlplanTmplContentById(Long id)
+    {
+        return tTsFlplanTmplContentMapper.deleteTTsFlplanTmplContentById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFtplanContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsFtplanContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFtplanContentService;
+
+/**
+ * 芳烃培训内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsFtplanContentServiceImpl implements ITTsFtplanContentService
+{
+    @Autowired
+    private TTsFtplanContentMapper tTsFtplanContentMapper;
+
+    /**
+     * 查询芳烃培训内容
+     *
+     * @param id 芳烃培训内容ID
+     * @return 芳烃培训内容
+     */
+    @Override
+    public TTsFtplanContent selectTTsFtplanContentById(Long id)
+    {
+        return tTsFtplanContentMapper.selectTTsFtplanContentById(id);
+    }
+
+    /**
+     * 查询芳烃培训内容列表
+     *
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 芳烃培训内容
+     */
+    @Override
+    public List<TTsFtplanContent> selectTTsFtplanContentList(TTsFtplanContent tTsFtplanContent)
+    {
+        return tTsFtplanContentMapper.selectTTsFtplanContentList(tTsFtplanContent);
+    }
+
+    /**
+     * 新增芳烃培训内容
+     *
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsFtplanContent(TTsFtplanContent tTsFtplanContent)
+    {
+        return tTsFtplanContentMapper.insertTTsFtplanContent(tTsFtplanContent);
+    }
+
+    /**
+     * 修改芳烃培训内容
+     *
+     * @param tTsFtplanContent 芳烃培训内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsFtplanContent(TTsFtplanContent tTsFtplanContent)
+    {
+        return tTsFtplanContentMapper.updateTTsFtplanContent(tTsFtplanContent);
+    }
+
+    /**
+     * 批量删除芳烃培训内容
+     *
+     * @param ids 需要删除的芳烃培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFtplanContentByIds(Long[] ids)
+    {
+        return tTsFtplanContentMapper.deleteTTsFtplanContentByIds(ids);
+    }
+
+    /**
+     * 删除芳烃培训内容信息
+     *
+     * @param id 芳烃培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFtplanContentById(Long id)
+    {
+        return tTsFtplanContentMapper.deleteTTsFtplanContentById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsFtplanTmplContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsFtplanTmplContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsFtplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsFtplanTmplContentService;
+
+/**
+ * 芳烃培训模版内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsFtplanTmplContentServiceImpl implements ITTsFtplanTmplContentService
+{
+    @Autowired
+    private TTsFtplanTmplContentMapper tTsFtplanTmplContentMapper;
+
+    /**
+     * 查询芳烃培训模版内容
+     *
+     * @param id 芳烃培训模版内容ID
+     * @return 芳烃培训模版内容
+     */
+    @Override
+    public TTsFtplanTmplContent selectTTsFtplanTmplContentById(Long id)
+    {
+        return tTsFtplanTmplContentMapper.selectTTsFtplanTmplContentById(id);
+    }
+
+    /**
+     * 查询芳烃培训模版内容列表
+     *
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 芳烃培训模版内容
+     */
+    @Override
+    public List<TTsFtplanTmplContent> selectTTsFtplanTmplContentList(TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        return tTsFtplanTmplContentMapper.selectTTsFtplanTmplContentList(tTsFtplanTmplContent);
+    }
+
+    /**
+     * 新增芳烃培训模版内容
+     *
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsFtplanTmplContent(TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        return tTsFtplanTmplContentMapper.insertTTsFtplanTmplContent(tTsFtplanTmplContent);
+    }
+
+    /**
+     * 修改芳烃培训模版内容
+     *
+     * @param tTsFtplanTmplContent 芳烃培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsFtplanTmplContent(TTsFtplanTmplContent tTsFtplanTmplContent)
+    {
+        return tTsFtplanTmplContentMapper.updateTTsFtplanTmplContent(tTsFtplanTmplContent);
+    }
+
+    /**
+     * 批量删除芳烃培训模版内容
+     *
+     * @param ids 需要删除的芳烃培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFtplanTmplContentByIds(Long[] ids)
+    {
+        return tTsFtplanTmplContentMapper.deleteTTsFtplanTmplContentByIds(ids);
+    }
+
+    /**
+     * 删除芳烃培训模版内容信息
+     *
+     * @param id 芳烃培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsFtplanTmplContentById(Long id)
+    {
+        return tTsFtplanTmplContentMapper.deleteTTsFtplanTmplContentById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsLjplanContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsLjplanContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsLjplanContentService;
+
+/**
+ * 裂解培训内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsLjplanContentServiceImpl implements ITTsLjplanContentService
+{
+    @Autowired
+    private TTsLjplanContentMapper tTsLjplanContentMapper;
+
+    /**
+     * 查询裂解培训内容
+     *
+     * @param id 裂解培训内容ID
+     * @return 裂解培训内容
+     */
+    @Override
+    public TTsLjplanContent selectTTsLjplanContentById(Long id)
+    {
+        return tTsLjplanContentMapper.selectTTsLjplanContentById(id);
+    }
+
+    /**
+     * 查询裂解培训内容列表
+     *
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 裂解培训内容
+     */
+    @Override
+    public List<TTsLjplanContent> selectTTsLjplanContentList(TTsLjplanContent tTsLjplanContent)
+    {
+        return tTsLjplanContentMapper.selectTTsLjplanContentList(tTsLjplanContent);
+    }
+
+    /**
+     * 新增裂解培训内容
+     *
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsLjplanContent(TTsLjplanContent tTsLjplanContent)
+    {
+        return tTsLjplanContentMapper.insertTTsLjplanContent(tTsLjplanContent);
+    }
+
+    /**
+     * 修改裂解培训内容
+     *
+     * @param tTsLjplanContent 裂解培训内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsLjplanContent(TTsLjplanContent tTsLjplanContent)
+    {
+        return tTsLjplanContentMapper.updateTTsLjplanContent(tTsLjplanContent);
+    }
+
+    /**
+     * 批量删除裂解培训内容
+     *
+     * @param ids 需要删除的裂解培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsLjplanContentByIds(Long[] ids)
+    {
+        return tTsLjplanContentMapper.deleteTTsLjplanContentByIds(ids);
+    }
+
+    /**
+     * 删除裂解培训内容信息
+     *
+     * @param id 裂解培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsLjplanContentById(Long id)
+    {
+        return tTsLjplanContentMapper.deleteTTsLjplanContentById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsLjplanTmplContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsLjplanTmplContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsLjplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsLjplanTmplContentService;
+
+/**
+ * 裂解培训模版内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsLjplanTmplContentServiceImpl implements ITTsLjplanTmplContentService
+{
+    @Autowired
+    private TTsLjplanTmplContentMapper tTsLjplanTmplContentMapper;
+
+    /**
+     * 查询裂解培训模版内容
+     *
+     * @param id 裂解培训模版内容ID
+     * @return 裂解培训模版内容
+     */
+    @Override
+    public TTsLjplanTmplContent selectTTsLjplanTmplContentById(Long id)
+    {
+        return tTsLjplanTmplContentMapper.selectTTsLjplanTmplContentById(id);
+    }
+
+    /**
+     * 查询裂解培训模版内容列表
+     *
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 裂解培训模版内容
+     */
+    @Override
+    public List<TTsLjplanTmplContent> selectTTsLjplanTmplContentList(TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        return tTsLjplanTmplContentMapper.selectTTsLjplanTmplContentList(tTsLjplanTmplContent);
+    }
+
+    /**
+     * 新增裂解培训模版内容
+     *
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsLjplanTmplContent(TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        return tTsLjplanTmplContentMapper.insertTTsLjplanTmplContent(tTsLjplanTmplContent);
+    }
+
+    /**
+     * 修改裂解培训模版内容
+     *
+     * @param tTsLjplanTmplContent 裂解培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsLjplanTmplContent(TTsLjplanTmplContent tTsLjplanTmplContent)
+    {
+        return tTsLjplanTmplContentMapper.updateTTsLjplanTmplContent(tTsLjplanTmplContent);
+    }
+
+    /**
+     * 批量删除裂解培训模版内容
+     *
+     * @param ids 需要删除的裂解培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsLjplanTmplContentByIds(Long[] ids)
+    {
+        return tTsLjplanTmplContentMapper.deleteTTsLjplanTmplContentByIds(ids);
+    }
+
+    /**
+     * 删除裂解培训模版内容信息
+     *
+     * @param id 裂解培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsLjplanTmplContentById(Long id)
+    {
+        return tTsLjplanTmplContentMapper.deleteTTsLjplanTmplContentById(id);
+    }
+}

+ 68 - 32
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsNewServiceImpl.java

@@ -27,6 +27,12 @@ public class TTsNewServiceImpl implements ITTsNewService {
     @Autowired
     private TTsLjplanMapper tTsLjplanMapper;
 
+    @Autowired
+    private TTsLjplanTmplContentMapper tTsLjplanTmplContentMapper;
+
+    @Autowired
+    private TTsLjplanContentMapper tTsLjplanContentMapper;
+
 
     @Autowired
     private TTsYsplanTmplMapper tTsYsplanTmplMapper;
@@ -34,6 +40,12 @@ public class TTsNewServiceImpl implements ITTsNewService {
     @Autowired
     private TTsYsplanMapper tTsYsplanMapper;
 
+    @Autowired
+    private TTsYsplanTmplContentMapper tTsYsplanTmplContentMapper;
+
+    @Autowired
+    private TTsYsplanContentMapper tTsYsplanContentMapper;
+
 
     @Autowired
     private TTsFlplanTmplMapper tTsFlplanTmplMapper;
@@ -41,6 +53,12 @@ public class TTsNewServiceImpl implements ITTsNewService {
     @Autowired
     private TTsFlplanMapper tTsFlplanMapper;
 
+    @Autowired
+    private TTsFlplanTmplContentMapper tTsFlplanTmplContentMapper;
+
+    @Autowired
+    private TTsFlplanContentMapper tTsFlplanContentMapper;
+
 
     @Autowired
     private TTsFtplanTmplMapper tTsFtplanTmplMapper;
@@ -48,6 +66,12 @@ public class TTsNewServiceImpl implements ITTsNewService {
     @Autowired
     private TTsFtplanMapper tTsFtplanMapper;
 
+    @Autowired
+    private TTsFtplanTmplContentMapper tTsFtplanTmplContentMapper;
+
+    @Autowired
+    private TTsFtplanContentMapper tTsFtplanContentMapper;
+
     @Autowired
     private TTsFirstplanMapper tTsFirstplanMapper;
 
@@ -112,17 +136,10 @@ public class TTsNewServiceImpl implements ITTsNewService {
             tTsFirstplanMapper.insertTTsFirstplan(tTsFirstplan);
         }
         if (tTsNew.getPlanType() == 1) {
-            for (TTsLjplanTmpl item : tTsLjplanTmplMapper.selectTTsLjplanTmplList(new TTsLjplanTmpl())) {
+            for (TTsLjplanTmpl item : tTsLjplanTmplMapper.selectLjTmplListWithoutContent(new TTsLjplanTmpl())) {
                 TTsLjplan entity = new TTsLjplan();
-                entity.setCourseCode(item.getCourseCode());
                 entity.setTopic(item.getTopic());
-                entity.setContent(item.getContent());
-                entity.setCourseDay(item.getCourseDay());
-                entity.setCourseHour(item.getCourseHour());
                 entity.setDetailPlan(item.getDetailPlan());
-                entity.setTrainer(item.getTrainer());
-                entity.setCourseDate(item.getCourseDate());
-                entity.setAssess(item.getAssess());
                 entity.setNewId(tTsNew.getNewId());
                 entity.setFileName(item.getFileName());
                 entity.setFileUrl(item.getFileUrl());
@@ -131,19 +148,22 @@ public class TTsNewServiceImpl implements ITTsNewService {
                 entity.setSortTmpl(item.getSortTmpl());
                 entity.setPlanStatus(0L);
                 tTsLjplanMapper.insertTTsLjplan(entity);
+                TTsLjplanTmplContent content = new TTsLjplanTmplContent();
+                content.setPid(item.getId());
+                for (TTsLjplanTmplContent tmplContent : tTsLjplanTmplContentMapper.selectTTsLjplanTmplContentList(content)) {
+                    TTsLjplanContent contentEntity = new TTsLjplanContent();
+                    contentEntity.setPid(entity.getId());
+                    contentEntity.setContent(tmplContent.getContent());
+                    contentEntity.setCourseDay(tmplContent.getCourseDay());
+                    contentEntity.setSortTmpl(tmplContent.getSortTmpl());
+                    tTsLjplanContentMapper.insertTTsLjplanContent(contentEntity);
+                }
             }
         } else if (tTsNew.getPlanType() == 2) {
-            for (TTsYsplanTmpl item : tTsYsplanTmplMapper.selectTTsYsplanTmplList(new TTsYsplanTmpl())) {
+            for (TTsYsplanTmpl item : tTsYsplanTmplMapper.selectYsTmplListWithoutContent(new TTsYsplanTmpl())) {
                 TTsYsplan entity = new TTsYsplan();
-                entity.setCourseCode(item.getCourseCode());
                 entity.setTopic(item.getTopic());
-                entity.setContent(item.getContent());
-                entity.setCourseDay(item.getCourseDay());
-                entity.setCourseHour(item.getCourseHour());
                 entity.setDetailPlan(item.getDetailPlan());
-                entity.setTrainer(item.getTrainer());
-                entity.setCourseDate(item.getCourseDate());
-                entity.setAssess(item.getAssess());
                 entity.setNewId(tTsNew.getNewId());
                 entity.setFileName(item.getFileName());
                 entity.setFileUrl(item.getFileUrl());
@@ -152,19 +172,22 @@ public class TTsNewServiceImpl implements ITTsNewService {
                 entity.setSortTmpl(item.getSortTmpl());
                 entity.setPlanStatus(0L);
                 tTsYsplanMapper.insertTTsYsplan(entity);
+                TTsYsplanTmplContent content = new TTsYsplanTmplContent();
+                content.setPid(item.getId());
+                for (TTsYsplanTmplContent tmplContent : tTsYsplanTmplContentMapper.selectTTsYsplanTmplContentList(content)) {
+                    TTsYsplanContent contentEntity = new TTsYsplanContent();
+                    contentEntity.setPid(entity.getId());
+                    contentEntity.setContent(tmplContent.getContent());
+                    contentEntity.setCourseDay(tmplContent.getCourseDay());
+                    contentEntity.setSortTmpl(tmplContent.getSortTmpl());
+                    tTsYsplanContentMapper.insertTTsYsplanContent(contentEntity);
+                }
             }
         } else if (tTsNew.getPlanType() == 3) {
-            for (TTsFlplanTmpl item : tTsFlplanTmplMapper.selectTTsFlplanTmplList(new TTsFlplanTmpl())) {
+            for (TTsFlplanTmpl item : tTsFlplanTmplMapper.selectFlTmplListWithoutContent(new TTsFlplanTmpl())) {
                 TTsFlplan entity = new TTsFlplan();
-                entity.setCourseCode(item.getCourseCode());
                 entity.setTopic(item.getTopic());
-                entity.setContent(item.getContent());
-                entity.setCourseDay(item.getCourseDay());
-                entity.setCourseHour(item.getCourseHour());
                 entity.setDetailPlan(item.getDetailPlan());
-                entity.setTrainer(item.getTrainer());
-                entity.setCourseDate(item.getCourseDate());
-                entity.setAssess(item.getAssess());
                 entity.setNewId(tTsNew.getNewId());
                 entity.setFileName(item.getFileName());
                 entity.setFileUrl(item.getFileUrl());
@@ -173,19 +196,22 @@ public class TTsNewServiceImpl implements ITTsNewService {
                 entity.setSortTmpl(item.getSortTmpl());
                 entity.setPlanStatus(0L);
                 tTsFlplanMapper.insertTTsFlplan(entity);
+                TTsFlplanTmplContent content = new TTsFlplanTmplContent();
+                content.setPid(item.getId());
+                for (TTsFlplanTmplContent tmplContent : tTsFlplanTmplContentMapper.selectTTsFlplanTmplContentList(content)) {
+                    TTsFlplanContent contentEntity = new TTsFlplanContent();
+                    contentEntity.setPid(entity.getId());
+                    contentEntity.setContent(tmplContent.getContent());
+                    contentEntity.setCourseDay(tmplContent.getCourseDay());
+                    contentEntity.setSortTmpl(tmplContent.getSortTmpl());
+                    tTsFlplanContentMapper.insertTTsFlplanContent(contentEntity);
+                }
             }
         } else if (tTsNew.getPlanType() == 4) {
-            for (TTsFtplanTmpl item : tTsFtplanTmplMapper.selectTTsFtplanTmplList(new TTsFtplanTmpl())) {
+            for (TTsFtplanTmpl item : tTsFtplanTmplMapper.selectFtTmplListWithoutContent(new TTsFtplanTmpl())) {
                 TTsFtplan entity = new TTsFtplan();
-                entity.setCourseCode(item.getCourseCode());
                 entity.setTopic(item.getTopic());
-                entity.setContent(item.getContent());
-                entity.setCourseDay(item.getCourseDay());
-                entity.setCourseHour(item.getCourseHour());
                 entity.setDetailPlan(item.getDetailPlan());
-                entity.setTrainer(item.getTrainer());
-                entity.setCourseDate(item.getCourseDate());
-                entity.setAssess(item.getAssess());
                 entity.setNewId(tTsNew.getNewId());
                 entity.setFileName(item.getFileName());
                 entity.setFileUrl(item.getFileUrl());
@@ -194,6 +220,16 @@ public class TTsNewServiceImpl implements ITTsNewService {
                 entity.setSortTmpl(item.getSortTmpl());
                 entity.setPlanStatus(0L);
                 tTsFtplanMapper.insertTTsFtplan(entity);
+                TTsFtplanTmplContent content = new TTsFtplanTmplContent();
+                content.setPid(item.getId());
+                for (TTsFtplanTmplContent tmplContent : tTsFtplanTmplContentMapper.selectTTsFtplanTmplContentList(content)) {
+                    TTsFtplanContent contentEntity = new TTsFtplanContent();
+                    contentEntity.setPid(entity.getId());
+                    contentEntity.setContent(tmplContent.getContent());
+                    contentEntity.setCourseDay(tmplContent.getCourseDay());
+                    contentEntity.setSortTmpl(tmplContent.getSortTmpl());
+                    tTsFtplanContentMapper.insertTTsFtplanContent(contentEntity);
+                }
             }
         }
         return 1;

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsYsplanContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsYsplanContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanContent;
+import com.ruoyi.project.training.bccnew.service.ITTsYsplanContentService;
+
+/**
+ * 压缩培训内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsYsplanContentServiceImpl implements ITTsYsplanContentService
+{
+    @Autowired
+    private TTsYsplanContentMapper tTsYsplanContentMapper;
+
+    /**
+     * 查询压缩培训内容
+     *
+     * @param id 压缩培训内容ID
+     * @return 压缩培训内容
+     */
+    @Override
+    public TTsYsplanContent selectTTsYsplanContentById(Long id)
+    {
+        return tTsYsplanContentMapper.selectTTsYsplanContentById(id);
+    }
+
+    /**
+     * 查询压缩培训内容列表
+     *
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 压缩培训内容
+     */
+    @Override
+    public List<TTsYsplanContent> selectTTsYsplanContentList(TTsYsplanContent tTsYsplanContent)
+    {
+        return tTsYsplanContentMapper.selectTTsYsplanContentList(tTsYsplanContent);
+    }
+
+    /**
+     * 新增压缩培训内容
+     *
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsYsplanContent(TTsYsplanContent tTsYsplanContent)
+    {
+        return tTsYsplanContentMapper.insertTTsYsplanContent(tTsYsplanContent);
+    }
+
+    /**
+     * 修改压缩培训内容
+     *
+     * @param tTsYsplanContent 压缩培训内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsYsplanContent(TTsYsplanContent tTsYsplanContent)
+    {
+        return tTsYsplanContentMapper.updateTTsYsplanContent(tTsYsplanContent);
+    }
+
+    /**
+     * 批量删除压缩培训内容
+     *
+     * @param ids 需要删除的压缩培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsYsplanContentByIds(Long[] ids)
+    {
+        return tTsYsplanContentMapper.deleteTTsYsplanContentByIds(ids);
+    }
+
+    /**
+     * 删除压缩培训内容信息
+     *
+     * @param id 压缩培训内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsYsplanContentById(Long id)
+    {
+        return tTsYsplanContentMapper.deleteTTsYsplanContentById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsYsplanTmplContentServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.training.bccnew.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.training.bccnew.mapper.TTsYsplanTmplContentMapper;
+import com.ruoyi.project.training.bccnew.domain.TTsYsplanTmplContent;
+import com.ruoyi.project.training.bccnew.service.ITTsYsplanTmplContentService;
+
+/**
+ * 转岗培训模版内容Service业务层处理
+ *
+ * @author ssy
+ * @date 2024-07-19
+ */
+@Service
+public class TTsYsplanTmplContentServiceImpl implements ITTsYsplanTmplContentService
+{
+    @Autowired
+    private TTsYsplanTmplContentMapper tTsYsplanTmplContentMapper;
+
+    /**
+     * 查询转岗培训模版内容
+     *
+     * @param id 转岗培训模版内容ID
+     * @return 转岗培训模版内容
+     */
+    @Override
+    public TTsYsplanTmplContent selectTTsYsplanTmplContentById(Long id)
+    {
+        return tTsYsplanTmplContentMapper.selectTTsYsplanTmplContentById(id);
+    }
+
+    /**
+     * 查询转岗培训模版内容列表
+     *
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 转岗培训模版内容
+     */
+    @Override
+    public List<TTsYsplanTmplContent> selectTTsYsplanTmplContentList(TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        return tTsYsplanTmplContentMapper.selectTTsYsplanTmplContentList(tTsYsplanTmplContent);
+    }
+
+    /**
+     * 新增转岗培训模版内容
+     *
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int insertTTsYsplanTmplContent(TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        return tTsYsplanTmplContentMapper.insertTTsYsplanTmplContent(tTsYsplanTmplContent);
+    }
+
+    /**
+     * 修改转岗培训模版内容
+     *
+     * @param tTsYsplanTmplContent 转岗培训模版内容
+     * @return 结果
+     */
+    @Override
+    public int updateTTsYsplanTmplContent(TTsYsplanTmplContent tTsYsplanTmplContent)
+    {
+        return tTsYsplanTmplContentMapper.updateTTsYsplanTmplContent(tTsYsplanTmplContent);
+    }
+
+    /**
+     * 批量删除转岗培训模版内容
+     *
+     * @param ids 需要删除的转岗培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsYsplanTmplContentByIds(Long[] ids)
+    {
+        return tTsYsplanTmplContentMapper.deleteTTsYsplanTmplContentByIds(ids);
+    }
+
+    /**
+     * 删除转岗培训模版内容信息
+     *
+     * @param id 转岗培训模版内容ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTTsYsplanTmplContentById(Long id)
+    {
+        return tTsYsplanTmplContentMapper.deleteTTsYsplanTmplContentById(id);
+    }
+}

+ 1 - 1
master/src/main/resources/mybatis/training/bccnew/TTsApproveMapper.xml

@@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectTTsApproveByNewId" parameterType="Long" resultMap="TTsApproveResult">
         <include refid="selectTTsApproveVo"/>
-        where newId = #{newId}
+        where training_id = #{trainingId}
     </select>
 
     <insert id="insertTTsApprove" parameterType="TTsApprove">

+ 121 - 0
master/src/main/resources/mybatis/training/bccnew/TTsFlplanContentMapper.xml

@@ -0,0 +1,121 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsFlplanContentMapper">
+    
+    <resultMap type="TTsFlplanContent" id="TTsFlplanContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="planData"    column="plan_data"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsFlplanContentVo">
+        select d.id, d.pid, d.plan_data, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_flplan_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsFlplanContentList" parameterType="TTsFlplanContent" resultMap="TTsFlplanContentResult">
+        <include refid="selectTTsFlplanContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="planData != null "> and plan_data = #{planData}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsFlplanContentById" parameterType="Long" resultMap="TTsFlplanContentResult">
+        <include refid="selectTTsFlplanContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsFlplanContent" parameterType="TTsFlplanContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_flplan_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_flplan_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="planData != null">plan_data,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="planData != null">#{planData},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsFlplanContent" parameterType="TTsFlplanContent">
+        update t_ts_flplan_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="planData != null">plan_data = #{planData},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsFlplanContentById" parameterType="Long">
+        update t_ts_flplan_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsFlplanContentByIds" parameterType="String">
+        update t_ts_flplan_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 12 - 12
master/src/main/resources/mybatis/training/bccnew/TTsFlplanMapper.xml

@@ -33,13 +33,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="timer" column="timer" />
         <result property="timerNeed" column="timer_need" />
         <result property="sortTmpl"    column="sort_tmpl"    />
-        <result property="planStartData"    column="plan_start_data"    />
+        <result property="planData"    column="plan_data"    />
         <result property="planEndData"    column="plan_end_data"    />
     </resultMap>
 
     <sql id="selectTTsFlplanVo">
-        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name from t_ts_flplan d
+        select c.plan_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name from t_ts_flplan d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_flplan_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsFlplanList" parameterType="TTsFlplan" resultMap="TTsFlplanResult">
@@ -69,16 +70,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
-        order by sort_tmpl
+        order by d.sort_tmpl,c.sort_tmpl
     </select>
     
     <select id="selectTTsFlplanById" parameterType="Long" resultMap="TTsFlplanResult">
-        <include refid="selectTTsFlplanVo"/>
-        where id = #{id}
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_flplan d
+        left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
 
     <select id="selectTTsFlplanListByNewId" parameterType="TTsFlplan" resultMap="TTsFlplanResult">
-        <include refid="selectTTsFlplanVo"/>
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_flplan d
+        left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
         <where>
             <if test="newId != null "> and new_id = #{newId}</if>
             <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
@@ -126,8 +132,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name,</if>
             <if test="timer != null">timer,</if>
             <if test="timerNeed != null">timer_need,</if>
-            <if test="planStartData != null">plan_start_data,</if>
-            <if test="planEndData != null">plan_end_data,</if>
             <if test="sortTmpl != null">sort_tmpl,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -157,8 +161,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">#{fileName},</if>
             <if test="timer != null">#{timer},</if>
             <if test="timerNeed != null">#{timerNeed},</if>
-            <if test="planStartData != null">#{planStartData},</if>
-            <if test="planEndData != null">#{planEndData},</if>
             <if test="sortTmpl != null">#{sortTmpl},</if>
          </trim>
     </insert>
@@ -191,8 +193,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name = #{fileName},</if>
             <if test="timer != null">timer = #{timer},</if>
             <if test="timerNeed != null">timer_need = #{timerNeed},</if>
-            <if test="planStartData != null">plan_start_data=#{planStartData},</if>
-            <if test="planEndData != null">plan_end_data=#{planEndData},</if>
             <if test="sortTmpl != null">sort_tmpl=#{sortTmpl},</if>
         </trim>
         where id = #{id}

+ 116 - 0
master/src/main/resources/mybatis/training/bccnew/TTsFlplanTmplContentMapper.xml

@@ -0,0 +1,116 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsFlplanTmplContentMapper">
+    
+    <resultMap type="TTsFlplanTmplContent" id="TTsFlplanTmplContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsFlplanTmplContentVo">
+        select d.id, d.pid, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_flplan_tmpl_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsFlplanTmplContentList" parameterType="TTsFlplanTmplContent" resultMap="TTsFlplanTmplContentResult">
+        <include refid="selectTTsFlplanTmplContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsFlplanTmplContentById" parameterType="Long" resultMap="TTsFlplanTmplContentResult">
+        <include refid="selectTTsFlplanTmplContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsFlplanTmplContent" parameterType="TTsFlplanTmplContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_flplan_tmpl_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_flplan_tmpl_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsFlplanTmplContent" parameterType="TTsFlplanTmplContent">
+        update t_ts_flplan_tmpl_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsFlplanTmplContentById" parameterType="Long">
+        update t_ts_flplan_tmpl_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsFlplanTmplContentByIds" parameterType="String">
+        update t_ts_flplan_tmpl_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 34 - 3
master/src/main/resources/mybatis/training/bccnew/TTsFlplanTmplMapper.xml

@@ -31,8 +31,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTTsFlplanTmplVo">
-        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_flplan_tmpl d
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_flplan_tmpl d
       left join sys_dept s on s.dept_id = d.dept_id
+        left join t_ts_flplan_tmpl_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsFlplanTmplList" parameterType="TTsFlplanTmpl" resultMap="TTsFlplanTmplResult">
@@ -58,12 +59,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
+        order by d.sort_tmpl,c.sort_tmpl
+    </select>
+
+    <select id="selectFlTmplListWithoutContent" parameterType="Long" resultMap="TTsFlplanTmplResult">
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_flplan_tmpl d
+        left join sys_dept s on s.dept_id = d.dept_id
+        <where>
+            <if test="newId != null "> and new_id = #{newId}</if>
+            <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
+            <if test="topic != null  and topic != ''"> and topic = #{topic}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null "> and course_day = #{courseDay}</if>
+            <if test="courseHour != null "> and course_hour = #{courseHour}</if>
+            <if test="detailPlan != null  and detailPlan != ''"> and detail_plan = #{detailPlan}</if>
+            <if test="trainer != null  and trainer != ''"> and trainer = #{trainer}</if>
+            <if test="courseDate != null "> and course_date = #{courseDate}</if>
+            <if test="assess != null  and assess != ''"> and assess = #{assess}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         order by sort_tmpl
     </select>
     
     <select id="selectTTsFlplanTmplById" parameterType="Long" resultMap="TTsFlplanTmplResult">
-        <include refid="selectTTsFlplanTmplVo"/>
-        where id = #{id}
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_flplan_tmpl d
+        left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
         
     <insert id="insertTTsFlplanTmpl" parameterType="TTsFlplanTmpl">

+ 121 - 0
master/src/main/resources/mybatis/training/bccnew/TTsFtplanContentMapper.xml

@@ -0,0 +1,121 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsFtplanContentMapper">
+    
+    <resultMap type="TTsFtplanContent" id="TTsFtplanContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="planData"    column="plan_data"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsFtplanContentVo">
+        select d.id, d.pid, d.plan_data, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_ftplan_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsFtplanContentList" parameterType="TTsFtplanContent" resultMap="TTsFtplanContentResult">
+        <include refid="selectTTsFtplanContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="planData != null "> and plan_data = #{planData}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsFtplanContentById" parameterType="Long" resultMap="TTsFtplanContentResult">
+        <include refid="selectTTsFtplanContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsFtplanContent" parameterType="TTsFtplanContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_ftplan_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_ftplan_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="planData != null">plan_data,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="planData != null">#{planData},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsFtplanContent" parameterType="TTsFtplanContent">
+        update t_ts_ftplan_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="planData != null">plan_data = #{planData},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsFtplanContentById" parameterType="Long">
+        update t_ts_ftplan_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsFtplanContentByIds" parameterType="String">
+        update t_ts_ftplan_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 12 - 12
master/src/main/resources/mybatis/training/bccnew/TTsFtplanMapper.xml

@@ -33,13 +33,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="timer" column="timer" />
         <result property="timerNeed" column="timer_need" />
         <result property="sortTmpl"    column="sort_tmpl"    />
-        <result property="planStartData"    column="plan_start_data"    />
+        <result property="planData"    column="plan_data"    />
         <result property="planEndData"    column="plan_end_data"    />
     </resultMap>
 
     <sql id="selectTTsFtplanVo">
-        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.file_url,d.file_name,d.timer,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,s.dept_name from t_ts_ftplan d
+        select c.plan_data,d.plan_end_data,d.sort_tmpl,d.file_url,d.file_name,d.timer,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,s.dept_name from t_ts_ftplan d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_ftplan_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsFtplanList" parameterType="TTsFtplan" resultMap="TTsFtplanResult">
@@ -69,16 +70,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
-        order by sort_tmpl
+        order by d.sort_tmpl,c.sort_tmpl
     </select>
     
     <select id="selectTTsFtplanById" parameterType="Long" resultMap="TTsFtplanResult">
-        <include refid="selectTTsFtplanVo"/>
-        where id = #{id}
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_ftplan d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
 
     <select id="selectTTsFtplanListByNewId" parameterType="TTsFtplan" resultMap="TTsFtplanResult">
-        <include refid="selectTTsFtplanVo"/>
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_ftplan d
+        left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
         <where>
             <if test="newId != null "> and new_id = #{newId}</if>
             <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
@@ -125,8 +131,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name,</if>
             <if test="timer != null">timer,</if>
             <if test="timerNeed != null">timer_need,</if>
-            <if test="planStartData != null">plan_start_data,</if>
-            <if test="planEndData != null">plan_end_data,</if>
             <if test="sortTmpl != null">sort_tmpl,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -156,8 +160,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">#{fileName},</if>
             <if test="timer != null">#{timer},</if>
             <if test="timerNeed != null">#{timerNeed},</if>
-            <if test="planStartData != null">#{planStartData},</if>
-            <if test="planEndData != null">#{planEndData},</if>
             <if test="sortTmpl != null">#{sortTmpl},</if>         </trim>
     </insert>
 
@@ -189,8 +191,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name = #{fileName},</if>
             <if test="timer != null">timer = #{timer},</if>
             <if test="timerNeed != null">timer_need = #{timerNeed},</if>
-            <if test="planStartData != null">plan_start_data=#{planStartData},</if>
-            <if test="planEndData != null">plan_end_data=#{planEndData},</if>
             <if test="sortTmpl != null">sort_tmpl=#{sortTmpl},</if>
         </trim>
         where id = #{id}

+ 116 - 0
master/src/main/resources/mybatis/training/bccnew/TTsFtplanTmplContentMapper.xml

@@ -0,0 +1,116 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsFtplanTmplContentMapper">
+    
+    <resultMap type="TTsFtplanTmplContent" id="TTsFtplanTmplContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsFtplanTmplContentVo">
+        select d.id, d.pid, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_ftplan_tmpl_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsFtplanTmplContentList" parameterType="TTsFtplanTmplContent" resultMap="TTsFtplanTmplContentResult">
+        <include refid="selectTTsFtplanTmplContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsFtplanTmplContentById" parameterType="Long" resultMap="TTsFtplanTmplContentResult">
+        <include refid="selectTTsFtplanTmplContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsFtplanTmplContent" parameterType="TTsFtplanTmplContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_ftplan_tmpl_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_ftplan_tmpl_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsFtplanTmplContent" parameterType="TTsFtplanTmplContent">
+        update t_ts_ftplan_tmpl_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsFtplanTmplContentById" parameterType="Long">
+        update t_ts_ftplan_tmpl_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsFtplanTmplContentByIds" parameterType="String">
+        update t_ts_ftplan_tmpl_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 35 - 4
master/src/main/resources/mybatis/training/bccnew/TTsFtplanTmplMapper.xml

@@ -31,8 +31,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTTsFtplanTmplVo">
-        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_ftplan_tmpl d
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_ftplan_tmpl d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_ftplan_tmpl_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsFtplanTmplList" parameterType="TTsFtplanTmpl" resultMap="TTsFtplanTmplResult">
@@ -58,12 +59,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
-        order by sort_tmpl
+        order by d.sort_tmpl,c.sort_tmpl
     </select>
     
     <select id="selectTTsFtplanTmplById" parameterType="Long" resultMap="TTsFtplanTmplResult">
-        <include refid="selectTTsFtplanTmplVo"/>
-        where id = #{id}
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_ftplan_tmpl d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
+    </select>
+
+    <select id="selectFtTmplListWithoutContent" parameterType="Long" resultMap="TTsFtplanTmplResult">
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_ftplan_tmpl d
+        left join sys_dept s on s.dept_id = d.dept_id
+        <where>
+            <if test="newId != null "> and new_id = #{newId}</if>
+            <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
+            <if test="topic != null  and topic != ''"> and topic = #{topic}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null "> and course_day = #{courseDay}</if>
+            <if test="courseHour != null "> and course_hour = #{courseHour}</if>
+            <if test="detailPlan != null  and detailPlan != ''"> and detail_plan = #{detailPlan}</if>
+            <if test="trainer != null  and trainer != ''"> and trainer = #{trainer}</if>
+            <if test="courseDate != null "> and course_date = #{courseDate}</if>
+            <if test="assess != null  and assess != ''"> and assess = #{assess}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        order by sort_tmpl
     </select>
         
     <insert id="insertTTsFtplanTmpl" parameterType="TTsFtplanTmpl">

+ 121 - 0
master/src/main/resources/mybatis/training/bccnew/TTsLjplanContentMapper.xml

@@ -0,0 +1,121 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsLjplanContentMapper">
+    
+    <resultMap type="TTsLjplanContent" id="TTsLjplanContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="planData"    column="plan_data"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsLjplanContentVo">
+        select d.id, d.pid, d.plan_data, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_ljplan_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsLjplanContentList" parameterType="TTsLjplanContent" resultMap="TTsLjplanContentResult">
+        <include refid="selectTTsLjplanContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="planData != null "> and plan_data = #{planData}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsLjplanContentById" parameterType="Long" resultMap="TTsLjplanContentResult">
+        <include refid="selectTTsLjplanContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsLjplanContent" parameterType="TTsLjplanContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_ljplan_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_ljplan_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="planData != null">plan_data,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="planData != null">#{planData},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsLjplanContent" parameterType="TTsLjplanContent">
+        update t_ts_ljplan_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="planData != null">plan_data = #{planData},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsLjplanContentById" parameterType="Long">
+        update t_ts_ljplan_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsLjplanContentByIds" parameterType="String">
+        update t_ts_ljplan_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 11 - 12
master/src/main/resources/mybatis/training/bccnew/TTsLjplanMapper.xml

@@ -33,13 +33,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="timer" column="timer" />
         <result property="timerNeed" column="timer_need" />
         <result property="sortTmpl"    column="sort_tmpl"    />
-        <result property="planStartData"    column="plan_start_data"    />
+        <result property="planData"    column="plan_data"    />
         <result property="planEndData"    column="plan_end_data"    />
     </resultMap>
 
     <sql id="selectTTsLjplanVo">
-        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.file_url,d.file_name,d.timer,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,s.dept_name from t_ts_ljplan d
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.file_url,d.file_name,d.timer,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,s.dept_name from t_ts_ljplan d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_ljplan_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsLjplanList" parameterType="TTsLjplan" resultMap="TTsLjplanResult">
@@ -69,16 +70,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
-        order by sort_tmpl
+        order by d.sort_tmpl,c.sort_tmpl
     </select>
     
     <select id="selectTTsLjplanById" parameterType="Long" resultMap="TTsLjplanResult">
-        <include refid="selectTTsLjplanVo"/>
-        where id = #{id}
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_ljplan d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
 
     <select id="selectTTsLjplanListByNewId" parameterType="TTsLjplan" resultMap="TTsLjplanResult">
-        <include refid="selectTTsLjplanVo"/>
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_ljplan d
+        left join sys_dept s on s.dept_id = d.dept_id
         <where>
             <if test="newId != null "> and new_id = #{newId}</if>
             <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
@@ -125,8 +130,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name,</if>
             <if test="timer != null">timer,</if>
             <if test="timerNeed != null">timer_need,</if>
-            <if test="planStartData != null">plan_start_data,</if>
-            <if test="planEndData != null">plan_end_data,</if>
             <if test="sortTmpl != null">sort_tmpl,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -156,8 +159,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">#{fileName},</if>
             <if test="timer != null">#{timer},</if>
             <if test="timerNeed != null">#{timerNeed},</if>
-            <if test="planStartData != null">#{planStartData},</if>
-            <if test="planEndData != null">#{planEndData},</if>
             <if test="sortTmpl != null">#{sortTmpl},</if>
          </trim>
     </insert>
@@ -190,8 +191,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name = #{fileName},</if>
             <if test="timer != null">timer = #{timer},</if>
             <if test="timerNeed != null">timer_need = #{timerNeed},</if>
-            <if test="planStartData != null">plan_start_data=#{planStartData},</if>
-            <if test="planEndData != null">plan_end_data=#{planEndData},</if>
             <if test="sortTmpl != null">sort_tmpl=#{sortTmpl},</if>
         </trim>
         where id = #{id}

+ 116 - 0
master/src/main/resources/mybatis/training/bccnew/TTsLjplanTmplContentMapper.xml

@@ -0,0 +1,116 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsLjplanTmplContentMapper">
+    
+    <resultMap type="TTsLjplanTmplContent" id="TTsLjplanTmplContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsLjplanTmplContentVo">
+        select d.id, d.pid, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_ljplan_tmpl_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsLjplanTmplContentList" parameterType="TTsLjplanTmplContent" resultMap="TTsLjplanTmplContentResult">
+        <include refid="selectTTsLjplanTmplContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsLjplanTmplContentById" parameterType="Long" resultMap="TTsLjplanTmplContentResult">
+        <include refid="selectTTsLjplanTmplContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsLjplanTmplContent" parameterType="TTsLjplanTmplContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_ljplan_tmpl_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_ljplan_tmpl_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsLjplanTmplContent" parameterType="TTsLjplanTmplContent">
+        update t_ts_ljplan_tmpl_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsLjplanTmplContentById" parameterType="Long">
+        update t_ts_ljplan_tmpl_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsLjplanTmplContentByIds" parameterType="String">
+        update t_ts_ljplan_tmpl_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 35 - 4
master/src/main/resources/mybatis/training/bccnew/TTsLjplanTmplMapper.xml

@@ -31,8 +31,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTTsLjplanTmplVo">
-        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_ljplan_tmpl d
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_ljplan_tmpl d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_ljplan_tmpl_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsLjplanTmplList" parameterType="TTsLjplanTmpl" resultMap="TTsLjplanTmplResult">
@@ -58,12 +59,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
-        order by sort_tmpl
+        order by d.sort_tmpl,c.sort_tmpl
     </select>
     
+    <select id="selectLjTmplListWithoutContent" parameterType="Long" resultMap="TTsLjplanTmplResult">
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_ljplan_tmpl d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        <where>
+            <if test="newId != null "> and new_id = #{newId}</if>
+            <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
+            <if test="topic != null  and topic != ''"> and topic = #{topic}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null "> and course_day = #{courseDay}</if>
+            <if test="courseHour != null "> and course_hour = #{courseHour}</if>
+            <if test="detailPlan != null  and detailPlan != ''"> and detail_plan = #{detailPlan}</if>
+            <if test="trainer != null  and trainer != ''"> and trainer = #{trainer}</if>
+            <if test="courseDate != null "> and course_date = #{courseDate}</if>
+            <if test="assess != null  and assess != ''"> and assess = #{assess}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+        order by sort_tmpl
+    </select>
+
     <select id="selectTTsLjplanTmplById" parameterType="Long" resultMap="TTsLjplanTmplResult">
-        <include refid="selectTTsLjplanTmplVo"/>
-        where id = #{id}
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_ljplan_tmpl d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
         
     <insert id="insertTTsLjplanTmpl" parameterType="TTsLjplanTmpl">

+ 121 - 0
master/src/main/resources/mybatis/training/bccnew/TTsYsplanContentMapper.xml

@@ -0,0 +1,121 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsYsplanContentMapper">
+    
+    <resultMap type="TTsYsplanContent" id="TTsYsplanContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="planData"    column="plan_data"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsYsplanContentVo">
+        select d.id, d.pid, d.plan_data, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_ysplan_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsYsplanContentList" parameterType="TTsYsplanContent" resultMap="TTsYsplanContentResult">
+        <include refid="selectTTsYsplanContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="planData != null "> and plan_data = #{planData}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsYsplanContentById" parameterType="Long" resultMap="TTsYsplanContentResult">
+        <include refid="selectTTsYsplanContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsYsplanContent" parameterType="TTsYsplanContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_ysplan_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_ysplan_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="planData != null">plan_data,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="planData != null">#{planData},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsYsplanContent" parameterType="TTsYsplanContent">
+        update t_ts_ysplan_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="planData != null">plan_data = #{planData},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsYsplanContentById" parameterType="Long">
+        update t_ts_ysplan_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsYsplanContentByIds" parameterType="String">
+        update t_ts_ysplan_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 11 - 12
master/src/main/resources/mybatis/training/bccnew/TTsYsplanMapper.xml

@@ -33,13 +33,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="timer" column="timer" />
         <result property="timerNeed" column="timer_need" />
         <result property="sortTmpl"    column="sort_tmpl"    />
-        <result property="planStartData"    column="plan_start_data"    />
+        <result property="planData"    column="plan_data"    />
         <result property="planEndData"    column="plan_end_data"    />
     </resultMap>
 
     <sql id="selectTTsYsplanVo">
-        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.file_url,d.file_name,d.timer,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,s.dept_name from t_ts_ysplan d
+        select c.plan_data,d.plan_end_data,d.sort_tmpl,d.file_url,d.file_name,d.timer,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,s.dept_name from t_ts_ysplan d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_ysplan_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsYsplanList" parameterType="TTsYsplan" resultMap="TTsYsplanResult">
@@ -69,16 +70,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
-        order by sort_tmpl
+        order by d.sort_tmpl,c.sort_tmpl
     </select>
     
     <select id="selectTTsYsplanById" parameterType="Long" resultMap="TTsYsplanResult">
-        <include refid="selectTTsYsplanVo"/>
-        where id = #{id}
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_ysplan d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
 
     <select id="selectTTsYsplanListByNewId" parameterType="TTsYsplan" resultMap="TTsYsplanResult">
-        <include refid="selectTTsYsplanVo"/>
+        select d.plan_start_data,d.plan_end_data,d.sort_tmpl,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.plan_status, d.score_1, d.score_2, d.score_3 ,d.file_url,d.file_name,d.timer,d.timer_need,s.dept_name
+        from t_ts_ysplan d
+        left join sys_dept s on s.dept_id = d.dept_id
         <where>
             <if test="newId != null "> and new_id = #{newId}</if>
             <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
@@ -125,8 +130,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name,</if>
             <if test="timer != null">timer,</if>
             <if test="timerNeed != null">timer_need,</if>
-            <if test="planStartData != null">plan_start_data,</if>
-            <if test="planEndData != null">plan_end_data,</if>
             <if test="sortTmpl != null">sort_tmpl,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -156,8 +159,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">#{fileName},</if>
             <if test="timer != null">#{timer},</if>
             <if test="timerNeed != null">#{timerNeed},</if>
-            <if test="planStartData != null">#{planStartData},</if>
-            <if test="planEndData != null">#{planEndData},</if>
             <if test="sortTmpl != null">#{sortTmpl},</if>
          </trim>
     </insert>
@@ -190,8 +191,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fileName != null">file_name = #{fileName},</if>
             <if test="timer != null">timer = #{timer},</if>
             <if test="timerNeed != null">timer_need = #{timerNeed},</if>
-            <if test="planStartData != null">plan_start_data=#{planStartData},</if>
-            <if test="planEndData != null">plan_end_data=#{planEndData},</if>
             <if test="sortTmpl != null">sort_tmpl=#{sortTmpl},</if>
         </trim>
         where id = #{id}

+ 116 - 0
master/src/main/resources/mybatis/training/bccnew/TTsYsplanTmplContentMapper.xml

@@ -0,0 +1,116 @@
+<?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.ruoyi.project.training.bccnew.mapper.TTsYsplanTmplContentMapper">
+    
+    <resultMap type="TTsYsplanTmplContent" id="TTsYsplanTmplContentResult">
+        <result property="id"    column="id"    />
+        <result property="pid"    column="pid"    />
+        <result property="content"    column="content"    />
+        <result property="courseDay"    column="course_day"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="sortTmpl"    column="sort_tmpl"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTTsYsplanTmplContentVo">
+        select d.id, d.pid, d.content, d.course_day, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.sort_tmpl ,s.dept_name from t_ts_ysplan_tmpl_content d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTTsYsplanTmplContentList" parameterType="TTsYsplanTmplContent" resultMap="TTsYsplanTmplContentResult">
+        <include refid="selectTTsYsplanTmplContentVo"/>
+        <where>  
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null  and courseDay != ''"> and course_day = #{courseDay}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="sortTmpl != null "> and sort_tmpl = #{sortTmpl}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTTsYsplanTmplContentById" parameterType="Long" resultMap="TTsYsplanTmplContentResult">
+        <include refid="selectTTsYsplanTmplContentVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTTsYsplanTmplContent" parameterType="TTsYsplanTmplContent">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_ts_ysplan_tmpl_content.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_ts_ysplan_tmpl_content
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="pid != null">pid,</if>
+            <if test="content != null">content,</if>
+            <if test="courseDay != null">course_day,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="sortTmpl != null">sort_tmpl,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="content != null">#{content},</if>
+            <if test="courseDay != null">#{courseDay},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="sortTmpl != null">#{sortTmpl},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTsYsplanTmplContent" parameterType="TTsYsplanTmplContent">
+        update t_ts_ysplan_tmpl_content
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="courseDay != null">course_day = #{courseDay},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTTsYsplanTmplContentById" parameterType="Long">
+        update t_ts_ysplan_tmpl_content set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTTsYsplanTmplContentByIds" parameterType="String">
+        update t_ts_ysplan_tmpl_content set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 35 - 4
master/src/main/resources/mybatis/training/bccnew/TTsYsplanTmplMapper.xml

@@ -31,8 +31,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTTsYsplanTmplVo">
-        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_ysplan_tmpl d
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, c.content, c.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_ts_ysplan_tmpl d
       left join sys_dept s on s.dept_id = d.dept_id
+      left join t_ts_ysplan_tmpl_content c on d.id=c.pid
     </sql>
 
     <select id="selectTTsYsplanTmplList" parameterType="TTsYsplanTmpl" resultMap="TTsYsplanTmplResult">
@@ -58,12 +59,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}
+        order by d.sort_tmpl,c.sort_tmpl
+    </select>
+
+    <select id="selectYsTmplListWithoutContent" parameterType="Long" resultMap="TTsYsplanTmplResult">
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_ysplan_tmpl d
+        left join sys_dept s on s.dept_id = d.dept_id
+        <where>
+            <if test="newId != null "> and new_id = #{newId}</if>
+            <if test="courseCode != null  and courseCode != ''"> and course_code = #{courseCode}</if>
+            <if test="topic != null  and topic != ''"> and topic = #{topic}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="courseDay != null "> and course_day = #{courseDay}</if>
+            <if test="courseHour != null "> and course_hour = #{courseHour}</if>
+            <if test="detailPlan != null  and detailPlan != ''"> and detail_plan = #{detailPlan}</if>
+            <if test="trainer != null  and trainer != ''"> and trainer = #{trainer}</if>
+            <if test="courseDate != null "> and course_date = #{courseDate}</if>
+            <if test="assess != null  and assess != ''"> and assess = #{assess}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
         order by sort_tmpl
     </select>
     
     <select id="selectTTsYsplanTmplById" parameterType="Long" resultMap="TTsYsplanTmplResult">
-        <include refid="selectTTsYsplanTmplVo"/>
-        where id = #{id}
+        select d.sort_tmpl,d.file_url,d.file_name,d.timer_need,d.id, d.new_id, d.course_code, d.topic, d.content, d.course_day, d.course_hour, d.detail_plan, d.trainer, d.course_date, d.assess, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name
+        from t_ts_ysplan_tmpl d
+                 left join sys_dept s on s.dept_id = d.dept_id
+        where d.id = #{id}
     </select>
         
     <insert id="insertTTsYsplanTmpl" parameterType="TTsYsplanTmpl">
@@ -146,7 +177,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="timerNeed != null">timer_need = #{timerNeed},</if>
             <if test="sortTmpl != null">sort_tmpl = #{sortTmpl},</if>
         </trim>
-        where id = #{id}
+        where d.id = #{id}
     </update>
 
     <update id="deleteTTsYsplanTmplById" parameterType="Long">

二进制
master/src/main/resources/static/template/training/bccnewDsdt.xlsx


+ 13 - 13
ui/src/views/training/bccnew/firstPlanTmpl/index.vue

@@ -93,14 +93,14 @@
     <el-table v-loading="loading" :data="firstPlanTmplList" @selection-change="handleSelectionChange"
               :height="clientHeight" border>
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="材料版本" align="center" prop="materialVer" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训时长h" align="center" prop="courseHour" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="考试评估方式" align="center" prop="examType" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="应学习时长" align="center" prop="timerNeed" :show-overflow-tooltip="true"/>
-      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="课程编号" align="center" prop="courseCode" />
+      <el-table-column label="培训主题" align="center" prop="topic" />
+      <el-table-column label="材料版本" align="center" prop="materialVer" />
+      <el-table-column label="培训时长h" align="center" prop="courseHour" />
+      <el-table-column label="讲师" align="center" prop="trainer" />
+      <el-table-column label="考试评估方式" align="center" prop="examType" />
+      <el-table-column label="应学习时长" align="center" prop="timerNeed"/>
+      <el-table-column label="备注" align="center" prop="remarks" />
       <el-table-column label="操作" align="center" fixed="right" width="230" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -239,16 +239,16 @@
         </div>
       </el-upload>
       <el-table :data="doc.commonfileList" border>
-        <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
+        <el-table-column :label="$t('文件名')" align="center" prop="fileName">
           <template slot-scope="scope">
             <a class="link-type" @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"-->
+        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize"-->
         <!--                         width="80"/>-->
-        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>-->
+        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" width="120"/>-->
         <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
@@ -512,8 +512,8 @@ export default {
     getList() {
       this.loading = true;
       listFirstPlanTmpl(this.queryParams).then(response => {
-        this.firstPlanTmplList = response.rows;
-        this.total = response.total;
+        this.firstPlanTmplList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },

+ 3 - 3
ui/src/views/training/bccnew/firstplan/index.vue

@@ -235,7 +235,7 @@
           </el-select>
         </el-form-item>
         <el-form-item label="培训排序" prop="sortTmpl">
-          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序"/>
+          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width:100%;"/>
         </el-form-item>
         <el-form-item label="培训考试" prop="examId">
           <el-select v-model="form.examId" filterable :placeholder="$t('请选择') + $t('培训考试')">
@@ -678,8 +678,8 @@ export default {
     getList() {
       this.loading = true;
       listFirstplan(this.queryParams).then(response => {
-        this.firstplanList = response.rows;
-        this.total = response.total;
+        this.firstplanList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },

+ 2 - 2
ui/src/views/training/bccnew/firstplan/index_student.vue

@@ -573,8 +573,8 @@ export default {
     getList() {
       this.loading = true;
       listFirstplan(this.queryParams).then(response => {
-        this.firstplanList = response.rows;
-        this.total = response.total;
+        this.firstplanList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },

+ 199 - 205
ui/src/views/training/bccnew/flPlan/index.vue

@@ -1,28 +1,10 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="培训员工编号" prop="newId">
+      <el-form-item label="培训主题" prop="topic">
         <el-input
-          v-model="queryParams.newId"
-          placeholder="请输入培训员工编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="课程编号" prop="courseCode">
-        <el-input
-          v-model="queryParams.courseCode"
-          placeholder="请输入课程编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="讲师" prop="trainer">
-        <el-input
-          v-model="queryParams.trainer"
-          placeholder="请输入讲师"
+          v-model="queryParams.topic"
+          placeholder="请输入培训主题"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -42,7 +24,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['training:flPlan:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -52,7 +35,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['training:flPlan:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -62,17 +46,19 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['training:flPlan:remove']"
-        >删除</el-button>
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['training:flPlan:edit']"
+        >导入
+        </el-button>
       </el-col>
-        <el-col :span="1.5">
-            <el-button
-                    type="info"
-                    icon="el-icon-upload2"
-                    size="mini"
-                    @click="handleImport"
-                    v-hasPermi="['training:flPlan:edit']"
-            >导入</el-button>
-        </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -80,23 +66,22 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['training:flPlan:export']"
-        >导出</el-button>
+        >导出
+        </el-button>
       </el-col>
-	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="flPlanList" @selection-change="handleSelectionChange" :height="clientHeight" border>
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训天" align="center" prop="courseDay" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训小时" align="center" prop="courseHour" :show-overflow-tooltip="true"/>
-      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true"/>
-      <el-table-column label="应学习时长" align="center" prop="timerNeed" :show-overflow-tooltip="true"/>
-      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
-      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+    <el-table v-loading="loading" :data="flPlanList" @selection-change="handleSelectionChange" :height="clientHeight"
+              :span-method="mergeMethod" border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="详细计划" align="center" prop="detailPlan"/>
+      <el-table-column label="培训主题" align="center" prop="topic"/>
+      <el-table-column label="培训计划" align="center" prop="courseDay" />
+      <el-table-column label="培训内容" align="center" prop="content"/>
+      <el-table-column label="应学习时长" align="center" prop="timerNeed"/>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -104,14 +89,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['training:flPlan:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['training:flPlan:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
           <el-button
             size="mini"
             type="text"
@@ -134,47 +121,21 @@
 
     <!-- 添加或修改分离培训模版对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="课程编号" prop="courseCode">
-          <el-input v-model="form.courseCode" placeholder="请输入课程编号" />
-        </el-form-item>
-        <el-form-item label="培训主题" prop="topic">
-          <el-input v-model="form.topic" placeholder="请输入培训主题" />
-        </el-form-item>
-        <el-form-item label="培训内容">
-          <el-input v-model="form.content" placeholder="请输入培训内容"/>
-        </el-form-item>
-        <el-form-item label="培训天" prop="courseDay">
-          <el-input v-model="form.courseDay" placeholder="请输入培训天" />
-        </el-form-item>
-        <el-form-item label="培训小时" prop="courseHour">
-          <el-input v-model="form.courseHour" placeholder="请输入培训小时" />
-        </el-form-item>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="详细计划" prop="detailPlan">
-          <el-input v-model="form.detailPlan" placeholder="请输入详细计划" />
-        </el-form-item>
-        <el-form-item label="讲师" prop="trainer">
-          <el-input v-model="form.trainer" placeholder="请输入讲师" />
+          <el-input v-model="form.detailPlan" placeholder="请输入详细计划"/>
         </el-form-item>
-        <el-form-item label="培训日期" prop="courseDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.courseDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择培训日期">
-          </el-date-picker>
+        <el-form-item label="培训主题" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入培训主题"/>
         </el-form-item>
-        <el-form-item label="考核情况" prop="assess">
-          <el-input v-model="form.assess" placeholder="请输入考核情况" />
+        <el-form-item label="培训排序" prop="sortTmpl">
+          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width:100%;"/>
         </el-form-item>
-        <el-form-item label="应学习时长()" prop="timerNeed">
+        <el-form-item label="应学习时长(h)" prop="timerNeed">
           <el-input-number v-model="form.timerNeed" placeholder="请输入应学习时长" style="width: 100%"/>
         </el-form-item>
-        <el-form-item label="培训排序" prop="sortTmpl">
-          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width: 100%"/>
-        </el-form-item>
         <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注" />
+          <el-input v-model="form.remarks" placeholder="请输入备注"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -182,39 +143,39 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-      <!-- 用户导入对话框 -->
-      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
-          <el-upload
-                  ref="upload"
-                  :limit="1"
-                  accept=".xlsx, .xls"
-                  :headers="upload.headers"
-                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
-                  :disabled="upload.isUploading"
-                  :on-progress="handleFileUploadProgress"
-                  :on-success="handleFileSuccess"
-                  :auto-upload="false"
-                  drag
-          >
-            <i class="el-icon-upload"></i>
-            <div class="el-upload__text">
-              {{ $t('将文件拖到此处,或') }}
-              <em>{{ $t('点击上传') }}</em>
-            </div>
-            <div class="el-upload__tip" slot="tip">
-              <!--<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
-              <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
-            </div>
-            <form ref="downloadFileForm" :action="upload.downloadAction" target="FORMSUBMIT">
-              <input name="type" :value="upload.type" hidden />
-            </form>
-            <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
-          </el-upload>
-          <div slot="footer" class="dialog-footer">
-              <el-button type="primary" @click="submitFileForm">确 定</el-button>
-              <el-button @click="upload.open = false">取 消</el-button>
-          </div>
-      </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          {{ $t('将文件拖到此处,或') }}
+          <em>{{ $t('点击上传') }}</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <!--<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
+          <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
+        </div>
+        <form ref="downloadFileForm" :action="upload.downloadAction" target="FORMSUBMIT">
+          <input name="type" :value="upload.type" hidden/>
+        </form>
+        <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
 
     <el-dialog :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px"
                append-to-body>
@@ -237,16 +198,16 @@
         </div>
       </el-upload>
       <el-table :data="doc.commonfileList" border>
-        <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
+        <el-table-column :label="$t('文件名')" align="center" prop="fileName">
           <template slot-scope="scope">
             <a class="link-type" @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"-->
+        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize"-->
         <!--                         width="80"/>-->
-        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>-->
+        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" width="120"/>-->
         <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
@@ -300,17 +261,16 @@
 </template>
 
 <script>
-import { listFlPlan, getFlPlan, delFlPlan, addFlPlan, updateFlPlan, exportFlPlan, importTemplate} from "@/api/training/bccnew/flPlan";
-import { treeselect } from "@/api/system/dept";
-import { getToken } from "@/utils/auth";
+import {addFlPlan, delFlPlan, exportFlPlan, getFlPlan, listFlPlan, updateFlPlan} from "@/api/training/bccnew/flPlan";
+import {treeselect} from "@/api/system/dept";
+import {getToken} from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import Editor from '@/components/Editor/index.vue';
 import {getFirstPlanTmpl, updateFirstPlanTmpl} from "@/api/training/bccnew/firstPlanTmpl";
 
 export default {
   name: "FlPlan",
-  components: { Treeselect },
+  components: {Treeselect},
   // components: { Editor },
   data() {
     return {
@@ -368,27 +328,27 @@ export default {
       title: "",
       // 部门树选项
       deptOptions: undefined,
-      clientHeight:300,
+      clientHeight: 300,
       // 是否显示弹出层
       open: false,
-        // 用户导入参数
-        upload: {
-          downloadAction: process.env.VUE_APP_BASE_API + '/common/template',
-          //下载模板类型
-          type: "flPlanTmpl",
-            // 是否显示弹出层(用户导入)
-            open: false,
-            // 弹出层标题(用户导入)
-            title: "",
-            // 是否禁用上传
-            isUploading: false,
-            // 是否更新已经存在的用户数据
-            updateSupport: 0,
-            // 设置上传的请求头部
-            headers: { Authorization: "Bearer " + getToken() },
-            // 上传的地址
-            url: process.env.VUE_APP_BASE_API + "/training/flPlan/importData"
-        },
+      // 用户导入参数
+      upload: {
+        downloadAction: process.env.VUE_APP_BASE_API + '/common/template',
+        //下载模板类型
+        type: "flPlanTmpl",
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/training/flPlan/importData"
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -413,21 +373,20 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {}
     };
   },
   watch: {
-        // 根据名称筛选部门树
-        deptName(val) {
-            this.$refs.tree.filter(val);
-        }
-   },
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   created() {
-      //设置表格高度对应屏幕高度
-      this.$nextTick(() => {
-          this.clientHeight = document.body.clientHeight -250
-      })
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 250
+    })
     this.getList();
     this.getTreeselect();
   },
@@ -441,7 +400,7 @@ export default {
         if (res.data.fileUrl != null)
           this.doc.commonfileList.push({fileUrl: res.data.fileUrl, fileName: res.data.fileName, id: res.data.id})
       })
-      this.$nextTick(()=>{
+      this.$nextTick(() => {
         this.$refs.doc.clearFiles();
       })
     },
@@ -500,17 +459,17 @@ export default {
     getList() {
       this.loading = true;
       listFlPlan(this.queryParams).then(response => {
-        this.flPlanList = response.rows;
-        this.total = response.total;
+        this.flPlanList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },
-     /** 查询部门下拉树结构 */
-     getTreeselect() {
-          treeselect().then(response => {
-              this.deptOptions = response.data;
-          });
-     },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -553,7 +512,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -596,54 +555,89 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$confirm('是否确认删除?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return delFlPlan(ids);
-        }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return delFlPlan(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
     },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
       this.$confirm('是否确认导出所有分离培训模版数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return exportFlPlan(queryParams);
-        }).then(response => {
-          this.download(response.msg);
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportFlPlan(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
     },
-      /** 导入按钮操作 */
-      handleImport() {
-          this.upload.title = "用户导入";
-          this.upload.open = true;
-      },
-      /** 下载模板操作 */
-      importTemplate() {
-        this.$refs['downloadFileForm'].submit()
-      },
-      // 文件上传中处理
-      handleFileUploadProgress(event, file, fileList) {
-          this.upload.isUploading = true;
-      },
-      // 文件上传成功处理
-      handleFileSuccess(response, file, fileList) {
-          this.upload.open = false;
-          this.upload.isUploading = false;
-          this.$refs.upload.clearFiles();
-          this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
-          this.getList();
-      },
-      // 提交上传文件
-      submitFileForm() {
-          this.$refs.upload.submit();
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.$refs['downloadFileForm'].submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    //合并单元格
+    mergeMethod({row, column, rowIndex, columnIndex}) {
+      // console.log(row)
+      if ([1,2,5,6,7].includes(columnIndex)) {
+        const _row = this.setTable(this.flPlanList).merge[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
       }
+    },
+    //单元格整理
+    setTable(tableData) {
+      //    console.log(tableData)
+      let spanArr = [],
+        concat = 0;
+      tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+        } else {
+          if (item.topic === tableData[index - 1].topic) {
+            //第一列需合并相同内容的判断条件
+            spanArr[concat] += 1;
+            spanArr.push(0);
+          } else {
+            spanArr.push(1);
+            concat = index;
+          }
+        }
+      });
+      return {
+        merge: spanArr
+      };
+    },
   }
 };
 </script>

+ 201 - 205
ui/src/views/training/bccnew/ftPlan/index.vue

@@ -1,28 +1,10 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="培训员工编号" prop="newId">
+      <el-form-item label="培训主题" prop="topic">
         <el-input
-          v-model="queryParams.newId"
-          placeholder="请输入培训员工编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="课程编号" prop="courseCode">
-        <el-input
-          v-model="queryParams.courseCode"
-          placeholder="请输入课程编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="讲师" prop="trainer">
-        <el-input
-          v-model="queryParams.trainer"
-          placeholder="请输入讲师"
+          v-model="queryParams.topic"
+          placeholder="请输入培训主题"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -42,7 +24,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['bccnew:ftPlan:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -52,7 +35,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['bccnew:ftPlan:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -62,17 +46,19 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['bccnew:ftPlan:remove']"
-        >删除</el-button>
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['bccnew:ftPlan:edit']"
+        >导入
+        </el-button>
       </el-col>
-        <el-col :span="1.5">
-            <el-button
-                    type="info"
-                    icon="el-icon-upload2"
-                    size="mini"
-                    @click="handleImport"
-                    v-hasPermi="['bccnew:ftPlan:edit']"
-            >导入</el-button>
-        </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -80,23 +66,24 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['bccnew:ftPlan:export']"
-        >导出</el-button>
+        >导出
+        </el-button>
       </el-col>
-	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="ftPlanList" @selection-change="handleSelectionChange" :height="clientHeight" border>
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训天" align="center" prop="courseDay" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训小时" align="center" prop="courseHour" :show-overflow-tooltip="true"/>
-      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true"/>
-      <el-table-column label="应学习时长" align="center" prop="timerNeed" :show-overflow-tooltip="true"/>
-      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
-      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+    <el-table v-loading="loading" :data="ftPlanList" @selection-change="handleSelectionChange" :height="clientHeight"
+              :span-method="mergeMethod" border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="详细计划" align="center" prop="detailPlan"
+                       fixed="left"/>
+      <el-table-column label="培训主题" align="center" prop="topic" fixed="left"
+      />
+      <el-table-column label="培训计划" align="center" prop="courseDay"/>
+      <el-table-column label="培训内容" align="center" prop="content"/>
+      <el-table-column label="应学习时长" align="center" prop="timerNeed"/>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -104,14 +91,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['bccnew:ftPlan:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['bccnew:ftPlan:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
           <el-button
             size="mini"
             type="text"
@@ -134,47 +123,21 @@
 
     <!-- 添加或修改芳烃培训模版对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="课程编号" prop="courseCode">
-          <el-input v-model="form.courseCode" placeholder="请输入课程编号" />
-        </el-form-item>
-        <el-form-item label="培训主题" prop="topic">
-          <el-input v-model="form.topic" placeholder="请输入培训主题" />
-        </el-form-item>
-        <el-form-item label="培训内容">
-          <el-input v-model="form.content" placeholder="请输入培训内容"/>
-        </el-form-item>
-        <el-form-item label="培训天" prop="courseDay">
-          <el-input v-model="form.courseDay" placeholder="请输入培训天" />
-        </el-form-item>
-        <el-form-item label="培训小时" prop="courseHour">
-          <el-input v-model="form.courseHour" placeholder="请输入培训小时" />
-        </el-form-item>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="详细计划" prop="detailPlan">
-          <el-input v-model="form.detailPlan" placeholder="请输入详细计划" />
-        </el-form-item>
-        <el-form-item label="讲师" prop="trainer">
-          <el-input v-model="form.trainer" placeholder="请输入讲师" />
-        </el-form-item>
-        <el-form-item label="培训日期" prop="courseDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.courseDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择培训日期">
-          </el-date-picker>
+          <el-input v-model="form.detailPlan" placeholder="请输入详细计划"/>
         </el-form-item>
-        <el-form-item label="考核情况" prop="assess">
-          <el-input v-model="form.assess" placeholder="请输入考核情况" />
-        </el-form-item>
-        <el-form-item label="应学习时长(分)" prop="timerNeed">
-          <el-input-number v-model="form.timerNeed" placeholder="请输入应学习时长" style="width: 100%"/>
+        <el-form-item label="培训主题" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入培训主题"/>
         </el-form-item>
         <el-form-item label="培训排序" prop="sortTmpl">
           <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width: 100%"/>
         </el-form-item>
+        <el-form-item label="应学习时长(h)" prop="timerNeed">
+          <el-input-number v-model="form.timerNeed" placeholder="请输入应学习时长" style="width: 100%"/>
+        </el-form-item>
         <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注" />
+          <el-input v-model="form.remarks" placeholder="请输入备注"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -182,39 +145,39 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-      <!-- 用户导入对话框 -->
-      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
-          <el-upload
-                  ref="upload"
-                  :limit="1"
-                  accept=".xlsx, .xls"
-                  :headers="upload.headers"
-                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
-                  :disabled="upload.isUploading"
-                  :on-progress="handleFileUploadProgress"
-                  :on-success="handleFileSuccess"
-                  :auto-upload="false"
-                  drag
-          >
-            <i class="el-icon-upload"></i>
-            <div class="el-upload__text">
-              {{ $t('将文件拖到此处,或') }}
-              <em>{{ $t('点击上传') }}</em>
-            </div>
-            <div class="el-upload__tip" slot="tip">
-              <!--<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
-              <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
-            </div>
-            <form ref="downloadFileForm" :action="upload.downloadAction" target="FORMSUBMIT">
-              <input name="type" :value="upload.type" hidden />
-            </form>
-            <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
-          </el-upload>
-          <div slot="footer" class="dialog-footer">
-              <el-button type="primary" @click="submitFileForm">确 定</el-button>
-              <el-button @click="upload.open = false">取 消</el-button>
-          </div>
-      </el-dialog>
+    <!-- 用户导入对话框 -->
+    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          {{ $t('将文件拖到此处,或') }}
+          <em>{{ $t('点击上传') }}</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <!--<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据-->
+          <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
+        </div>
+        <form ref="downloadFileForm" :action="upload.downloadAction" target="FORMSUBMIT">
+          <input name="type" :value="upload.type" hidden/>
+        </form>
+        <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
     <el-dialog :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px"
                append-to-body>
       <el-upload
@@ -236,16 +199,16 @@
         </div>
       </el-upload>
       <el-table :data="doc.commonfileList" border>
-        <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
+        <el-table-column :label="$t('文件名')" align="center" prop="fileName">
           <template slot-scope="scope">
             <a class="link-type" @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"-->
+        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize"-->
         <!--                         width="80"/>-->
-        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>-->
+        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" width="120"/>-->
         <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
@@ -299,17 +262,16 @@
 </template>
 
 <script>
-import { listFtPlan, getFtPlan, delFtPlan, addFtPlan, updateFtPlan, exportFtPlan, importTemplate} from "@/api/training/bccnew/ftPlan";
-import { treeselect } from "@/api/system/dept";
-import { getToken } from "@/utils/auth";
+import {addFtPlan, delFtPlan, exportFtPlan, getFtPlan, listFtPlan, updateFtPlan} from "@/api/training/bccnew/ftPlan";
+import {treeselect} from "@/api/system/dept";
+import {getToken} from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import Editor from '@/components/Editor/index.vue';
 import {getFirstPlanTmpl, updateFirstPlanTmpl} from "@/api/training/bccnew/firstPlanTmpl";
 
 export default {
   name: "FtPlan",
-  components: { Treeselect },
+  components: {Treeselect},
   // components: { Editor },
   data() {
     return {
@@ -367,27 +329,27 @@ export default {
       title: "",
       // 部门树选项
       deptOptions: undefined,
-      clientHeight:300,
+      clientHeight: 300,
       // 是否显示弹出层
       open: false,
-        // 用户导入参数
-        upload: {
-          downloadAction: process.env.VUE_APP_BASE_API + '/common/template',
-          //下载模板类型
-          type: "ftPlanTmpl",
-            // 是否显示弹出层(用户导入)
-            open: false,
-            // 弹出层标题(用户导入)
-            title: "",
-            // 是否禁用上传
-            isUploading: false,
-            // 是否更新已经存在的用户数据
-            updateSupport: 0,
-            // 设置上传的请求头部
-            headers: { Authorization: "Bearer " + getToken() },
-            // 上传的地址
-            url: process.env.VUE_APP_BASE_API + "/bccnew/ftPlan/importData"
-        },
+      // 用户导入参数
+      upload: {
+        downloadAction: process.env.VUE_APP_BASE_API + '/common/template',
+        //下载模板类型
+        type: "ftPlanTmpl",
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/bccnew/ftPlan/importData"
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -412,21 +374,20 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {}
     };
   },
   watch: {
-        // 根据名称筛选部门树
-        deptName(val) {
-            this.$refs.tree.filter(val);
-        }
-   },
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   created() {
-      //设置表格高度对应屏幕高度
-      this.$nextTick(() => {
-          this.clientHeight = document.body.clientHeight -250
-      })
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 250
+    })
     this.getList();
     this.getTreeselect();
   },
@@ -440,7 +401,7 @@ export default {
         if (res.data.fileUrl != null)
           this.doc.commonfileList.push({fileUrl: res.data.fileUrl, fileName: res.data.fileName, id: res.data.id})
       })
-      this.$nextTick(()=>{
+      this.$nextTick(() => {
         this.$refs.doc.clearFiles();
       })
     },
@@ -499,17 +460,17 @@ export default {
     getList() {
       this.loading = true;
       listFtPlan(this.queryParams).then(response => {
-        this.ftPlanList = response.rows;
-        this.total = response.total;
+        this.ftPlanList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },
-     /** 查询部门下拉树结构 */
-     getTreeselect() {
-          treeselect().then(response => {
-              this.deptOptions = response.data;
-          });
-     },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -552,7 +513,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -595,54 +556,89 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$confirm('是否确认删除?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return delFtPlan(ids);
-        }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return delFtPlan(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
     },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
       this.$confirm('是否确认导出所有芳烃培训模版数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return exportFtPlan(queryParams);
-        }).then(response => {
-          this.download(response.msg);
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportFtPlan(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
     },
-      /** 导入按钮操作 */
-      handleImport() {
-          this.upload.title = "用户导入";
-          this.upload.open = true;
-      },
-      /** 下载模板操作 */
-      importTemplate() {
-        this.$refs['downloadFileForm'].submit()
-      },
-      // 文件上传中处理
-      handleFileUploadProgress(event, file, fileList) {
-          this.upload.isUploading = true;
-      },
-      // 文件上传成功处理
-      handleFileSuccess(response, file, fileList) {
-          this.upload.open = false;
-          this.upload.isUploading = false;
-          this.$refs.upload.clearFiles();
-          this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
-          this.getList();
-      },
-      // 提交上传文件
-      submitFileForm() {
-          this.$refs.upload.submit();
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.$refs['downloadFileForm'].submit()
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
+      this.getList();
+    },
+    //合并单元格
+    mergeMethod({row, column, rowIndex, columnIndex}) {
+      // console.log(row)
+      if ([1, 2, 5, 6, 7].includes(columnIndex)) {
+        const _row = this.setTable(this.ftPlanList).merge[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
       }
+    },
+    //单元格整理
+    setTable(tableData) {
+      //    console.log(tableData)
+      let spanArr = [],
+        concat = 0;
+      tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+        } else {
+          if (item.topic === tableData[index - 1].topic) {
+            //第一列需合并相同内容的判断条件
+            spanArr[concat] += 1;
+            spanArr.push(0);
+          } else {
+            spanArr.push(1);
+            concat = index;
+          }
+        }
+      });
+      return {
+        merge: spanArr
+      };
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
   }
 };
 </script>

+ 62 - 72
ui/src/views/training/bccnew/ljPlan/index.vue

@@ -1,28 +1,10 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="培训员工编号" prop="newId">
+      <el-form-item label="培训主题" prop="topic">
         <el-input
-          v-model="queryParams.newId"
-          placeholder="请输入培训员工编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="课程编号" prop="courseCode">
-        <el-input
-          v-model="queryParams.courseCode"
-          placeholder="请输入课程编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="讲师" prop="trainer">
-        <el-input
-          v-model="queryParams.trainer"
-          placeholder="请输入讲师"
+          v-model="queryParams.topic"
+          placeholder="请输入培训主题"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -85,18 +67,17 @@
 	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="ljPlanList" @selection-change="handleSelectionChange" :height="clientHeight" border>
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训天" align="center" prop="courseDay" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训小时" align="center" prop="courseHour" :show-overflow-tooltip="true"/>
-      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true"/>
-      <el-table-column label="应学习时长" align="center" prop="timerNeed" :show-overflow-tooltip="true"/>
-      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
-      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+    <el-table v-loading="loading" :data="ljPlanList" @selection-change="handleSelectionChange" :height="clientHeight"  :span-method="mergeMethod" border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="详细计划" align="center" prop="detailPlan"
+                       fixed="left"/>
+      <el-table-column label="培训主题" align="center" prop="topic" fixed="left"
+                       />
+      <el-table-column label="培训计划" align="center" prop="courseDay" />
+      <el-table-column label="培训内容" align="center" prop="content" />
+      <el-table-column label="应学习时长" align="center" prop="timerNeed"/>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -134,47 +115,21 @@
 
     <!-- 添加或修改裂解培训模版对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="课程编号" prop="courseCode">
-          <el-input v-model="form.courseCode" placeholder="请输入课程编号" />
-        </el-form-item>
-        <el-form-item label="培训主题" prop="topic">
-          <el-input v-model="form.topic" placeholder="请输入培训主题" />
-        </el-form-item>
-        <el-form-item label="培训内容">
-          <el-input v-model="form.content" placeholder="请输入培训内容"/>
-        </el-form-item>
-        <el-form-item label="培训天" prop="courseDay">
-          <el-input v-model="form.courseDay" placeholder="请输入培训天" />
-        </el-form-item>
-        <el-form-item label="培训小时" prop="courseHour">
-          <el-input v-model="form.courseHour" placeholder="请输入培训小时" />
-        </el-form-item>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="详细计划" prop="detailPlan">
-          <el-input v-model="form.detailPlan" placeholder="请输入详细计划" />
+          <el-input v-model="form.detailPlan" placeholder="请输入详细计划"/>
         </el-form-item>
-        <el-form-item label="讲师" prop="trainer">
-          <el-input v-model="form.trainer" placeholder="请输入讲师" />
-        </el-form-item>
-        <el-form-item label="培训日期" prop="courseDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.courseDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择培训日期">
-          </el-date-picker>
+        <el-form-item label="培训主题" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入培训主题"/>
         </el-form-item>
-        <el-form-item label="考核情况" prop="assess">
-          <el-input v-model="form.assess" placeholder="请输入考核情况" />
+        <el-form-item label="培训排序" prop="sortTmpl">
+          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width:100%;"/>
         </el-form-item>
-        <el-form-item label="应学习时长()" prop="timerNeed">
+        <el-form-item label="应学习时长(h)" prop="timerNeed">
           <el-input-number v-model="form.timerNeed" placeholder="请输入应学习时长" style="width: 100%"/>
         </el-form-item>
-        <el-form-item label="培训排序" prop="sortTmpl">
-          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width: 100%"/>
-        </el-form-item>
         <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注" />
+          <el-input v-model="form.remarks" placeholder="请输入备注"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -236,16 +191,16 @@
         </div>
       </el-upload>
       <el-table :data="doc.commonfileList" border>
-        <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
+        <el-table-column :label="$t('文件名')" align="center" prop="fileName">
           <template slot-scope="scope">
             <a class="link-type" @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"-->
+        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize"-->
         <!--                         width="80"/>-->
-        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>-->
+        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" width="120"/>-->
         <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
@@ -499,8 +454,8 @@ export default {
     getList() {
       this.loading = true;
       listLjPlan(this.queryParams).then(response => {
-        this.ljPlanList = response.rows;
-        this.total = response.total;
+        this.ljPlanList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },
@@ -639,6 +594,41 @@ export default {
           this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
           this.getList();
       },
+    //合并单元格
+    mergeMethod({row, column, rowIndex, columnIndex}) {
+      // console.log(row)
+      if ([1,2,5,6,7].includes(columnIndex)) {
+        const _row = this.setTable(this.ljPlanList).merge[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
+      }
+    },
+    //单元格整理
+    setTable(tableData) {
+      //    console.log(tableData)
+      let spanArr = [],
+        concat = 0;
+      tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+        } else {
+          if (item.topic === tableData[index - 1].topic) {
+            //第一列需合并相同内容的判断条件
+            spanArr[concat] += 1;
+            spanArr.push(0);
+          } else {
+            spanArr.push(1);
+            concat = index;
+          }
+        }
+      });
+      return {
+        merge: spanArr
+      };
+    },
       // 提交上传文件
       submitFileForm() {
           this.$refs.upload.submit();

+ 78 - 33
ui/src/views/training/bccnew/tsnew/index.vue

@@ -236,7 +236,7 @@
     <!-- 添加或修改新员工培训对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="培训员工" prop="mentorStaffId">
+        <el-form-item label="培训员工" prop="staffId">
           <el-select v-model="form.staffId" filterable :placeholder="$t('请选择')+$t('培训员工')" :disabled="isEdit">
             <el-option
               v-for="item in userOption"
@@ -247,8 +247,8 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="培训状态">
-          <el-select v-model="form.planStatus" placeholder="请选择培训状态">
+        <el-form-item label="培训状态"  prop="planStatus">
+          <el-select v-model="form.planStatus" placeholder="请选择培训状态" disabled>
             <el-option
               v-for="dict in planStatusOptions"
               :key="dict.dictValue"
@@ -257,20 +257,15 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="开始时间" prop="startdate">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.startdate"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择开始时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="结束时间" prop="enddate">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.enddate"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择结束时间">
+        <el-form-item label="培训时间" prop="trainingDate">
+          <el-date-picker
+            v-model="form.trainingDate"
+            type="daterange"
+            :picker-options="pickerOptions"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            align="right">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="导师员工" prop="mentorStaffId">
@@ -430,35 +425,56 @@
 
 <script>
 import {
-  listTsnew,
-  getTsnew,
-  delTsnew,
   addTsnew,
-  updateTsnew,
+  delTsnew,
   exportTsnew,
+  genAppraisalFormWord,
+  getTsnew,
   importTemplate,
-  genAppraisalFormWord
+  listTsnew,
+  updateTsnew
 } from "@/api/training/bccnew/tsnew";
-import { treeselect } from "@/api/system/dept";
-import { getToken } from "@/utils/auth";
+import {treeselect} from "@/api/system/dept";
+import {getToken} from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import {
-  addTnNew,
-  delTnNew,
-  exportTnNew,
-  getTnNew,
-  listStaff,
-  listTnNew,
-  updateTnNew
-} from "@/api/training/newstaff/tnNew";
+import {listStaff} from "@/api/training/newstaff/tnNew";
 import {allFileList, delCommonfile} from "@/api/common/commonfile";
+import { Loading } from 'element-ui';
+import {date} from "mockjs/src/mock/random/date";
 
 export default {
   name: "Tsnew",
   components: { Treeselect },
   data() {
     return {
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            end.setTime(start.getTime() + 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            end.setTime(start.getTime() + 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        },{
+          text: '最近一年',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            end.setTime(start.getTime() + 3600 * 1000 * 24 * 365);
+            picker.$emit('pick', [start, end]);
+          }
+        }, ]
+      },
       // 遮罩层
       loading: true,
       // 选中数组
@@ -550,6 +566,18 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        mentorStaffId: [
+          { required: true, message: this.$t('导师') + this.$t('不能为空'), trigger: "change" }
+        ],
+        staffId: [
+          { required: true, message: this.$t('培训员工') + this.$t('不能为空'), trigger: "change" }
+        ],
+        trainingDate: [
+          { required: true, message: this.$t('培训时间') + this.$t('不能为空'), trigger: "blur" }
+        ],
+        planType: [
+          { required: true, message: this.$t('岗位') + this.$t('不能为空'), trigger: "change" }
+        ],
       }
     };
   },
@@ -651,6 +679,7 @@ export default {
     // 表单重置
     reset() {
       this.form = {
+        trainingDate: null,
         newId: null,
         staffId: null,
         name: null,
@@ -706,23 +735,39 @@ export default {
         this.form = response.data;
         this.open = true;
         this.title = "修改新员工培训";
+        this.form.trainingDate=[];
+        this.form.trainingDate.push(new Date(this.form.startdate));
+        this.form.trainingDate.push(new Date(this.form.enddate));
+        console.log(this.form)
       });
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
+          let options={
+            text:'正在添加新员工导师带徒培训'
+          }
+          let loadingInstance = Loading.service(options);
+          this.form.startdate=this.form.trainingDate[0];
+          this.form.enddate=this.form.trainingDate[1];
           if (this.form.newId != null) {
             updateTsnew(this.form).then(response => {
               this.msgSuccess("修改成功");
               this.open = false;
               this.getList();
+              this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
+                loadingInstance.close();
+              });
             });
           } else {
             addTsnew(this.form).then(response => {
               this.msgSuccess("新增成功");
               this.open = false;
               this.getList();
+              this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
+                loadingInstance.close();
+              });
             });
           }
         }

+ 61 - 100
ui/src/views/training/bccnew/tsnew/score.vue

@@ -32,24 +32,21 @@
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
-    <el-table v-loading="loading" :data="dsdtList" :height="clientHeight" @selection-change="handleSelectionChange"
+    <el-table v-loading="loading" :span-method="mergeMethod" :data="dsdtList" :height="clientHeight"
+              @selection-change="handleSelectionChange"
               border>
       <el-table-column type="selection" width="55" align="center" fixed="left"/>
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true" fixed="left"
-                       width="180"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true" fixed="left"
-                       width="180"/>
-      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训天" align="center" prop="courseDay" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训小时" align="center" prop="courseHour" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训日期" align="center" prop="courseDate" width=" 180">
+      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true" width="180"
+                       fixed="left"/>
+      <el-table-column label="计划培训开始时间" prop="planData" width="180" align="center" fixed="left">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.courseDate, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.planData, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="考核情况" align="center" prop="assess" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true" fixed="left"
+                       width="180"/>
+      <el-table-column label="培训计划" align="center" prop="courseDay" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180">
         <template slot-scope="scope">
           <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
@@ -119,16 +116,6 @@
                      circle></el-button>
         </template>
       </el-table-column>
-      <el-table-column label="计划培训开始时间" prop="planStartData" width="180" align="center">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.planStartData, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="计划培训结束时间" prop="planEndData" width="180" align="center">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.planEndData, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="操作" align="center" fixed="right" width="230" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -167,79 +154,18 @@
 
     <!-- 添加或修改转岗培训对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="130px">
-        <el-form-item label="培训员工编号" prop="newId">
-          <el-input v-model="form.newId" disabled/>
-        </el-form-item>
-        <el-form-item label="课程编号" prop="courseCode">
-          <el-input v-model="form.courseCode" placeholder="请输入课程编号"/>
-        </el-form-item>
-        <el-form-item label="培训主题" prop="topic">
-          <el-input v-model="form.topic" placeholder="请输入培训主题"/>
-        </el-form-item>
-        <el-form-item label="培训内容">
-          <el-input v-model="form.content" placeholder="请输入培训内容"/>
-        </el-form-item>
-        <el-form-item label="培训天" prop="courseDay">
-          <el-input v-model="form.courseDay" placeholder="请输入培训天"/>
-        </el-form-item>
-        <el-form-item label="培训小时" prop="courseHour">
-          <el-input v-model="form.courseHour" placeholder="请输入培训小时"/>
-        </el-form-item>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="详细计划" prop="detailPlan">
           <el-input v-model="form.detailPlan" placeholder="请输入详细计划"/>
         </el-form-item>
-        <el-form-item label="讲师" prop="trainer">
-          <el-input v-model="form.trainer" placeholder="请输入讲师"/>
-        </el-form-item>
-        <el-form-item label="培训日期" prop="courseDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.courseDate"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择培训日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="考核情况" prop="assess">
-          <el-input v-model="form.assess" placeholder="请输入考核情况"/>
-        </el-form-item>
-        <el-form-item label="培训状态">
-          <el-select v-model="form.planStatus" placeholder="请选择培训状态">
-            <el-option
-              v-for="dict in planStatusOptions"
-              :key="dict.dictValue"
-              :label="dict.dictLabel"
-              :value="parseInt(dict.dictValue)"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="第一次成绩" prop="score1">
-          <el-input v-model="form.score1" placeholder="请输入第一次成绩"/>
-        </el-form-item>
-        <el-form-item label="第二次成绩" prop="score2">
-          <el-input v-model="form.score2" placeholder="请输入第二次成绩"/>
-        </el-form-item>
-        <el-form-item label="第三次成绩" prop="score3">
-          <el-input v-model="form.score3" placeholder="请输入第三次成绩"/>
-        </el-form-item>
-        <el-form-item label="计划培训开始时间" prop="planStartData">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.planStartData"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择计划培训开始时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="计划培训结束时间" prop="planEndData">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.planEndData"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择计划培训结束时间">
-          </el-date-picker>
+        <el-form-item label="培训主题" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入培训主题"/>
         </el-form-item>
         <el-form-item label="培训排序" prop="sortTmpl">
-          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序"/>
+          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width:100%;"/>
+        </el-form-item>
+        <el-form-item label="应学习时长(h)" prop="timerNeed">
+          <el-input-number v-model="form.timerNeed" placeholder="请输入应学习时长" style="width: 100%"/>
         </el-form-item>
         <el-form-item label="备注" prop="remarks">
           <el-input v-model="form.remarks" placeholder="请输入备注"/>
@@ -545,7 +471,6 @@ export default {
   },
   methods: {
     saveScore(row) {
-
       if (this.planType === 1) {
         this.$confirm('成绩保存后不可修改!请确认成绩为' + ((row.score1Tmp ? row.score1Tmp : row.score2Tmp ? row.score2Tmp : row.score3Tmp) === undefined ? "" : (row.score1Tmp ? row.score1Tmp : row.score2Tmp ? row.score2Tmp : row.score3Tmp)), "警告", {
           confirmButtonText: "确定",
@@ -769,26 +694,26 @@ export default {
     getList() {
       if (this.planType == 1) {
         listLjplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       } else if (this.planType == 2) {
         listYsplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       } else if (this.planType == 3) {
         listFlplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       } else if (this.planType == 4) {
         listFtplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       }
@@ -988,6 +913,42 @@ export default {
         }
       });
     },
+
+    //合并单元格
+    mergeMethod({row, column, rowIndex, columnIndex}) {
+      // console.log(row)
+      if ([1,3, 6, 7, 8, 9, 10, 11, 12, 13, 14].includes(columnIndex)) {
+        const _row = this.setTable(this.dsdtList).merge[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
+      }
+    },
+    //单元格整理
+    setTable(tableData) {
+      //    console.log(tableData)
+      let spanArr = [],
+        concat = 0;
+      tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+        } else {
+          if (item.topic === tableData[index - 1].topic) {
+            //第一列需合并相同内容的判断条件
+            spanArr[concat] += 1;
+            spanArr.push(0);
+          } else {
+            spanArr.push(1);
+            concat = index;
+          }
+        }
+      });
+      return {
+        merge: spanArr
+      };
+    },
   }
 };
 

+ 134 - 65
ui/src/views/training/bccnew/tsnew/score_student.vue

@@ -6,21 +6,17 @@
     <el-table v-loading="loading" :data="dsdtList" :height="clientHeight" @selection-change="handleSelectionChange"
               border>
       <el-table-column type="selection" width="55" align="center" fixed="left"/>
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true" fixed="left"
-                       width="180"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true" fixed="left"
-                       width="180"/>
-      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训天" align="center" prop="courseDay" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训小时" align="center" prop="courseHour" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="培训日期" align="center" prop="courseDate" width=" 180">
+      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true" width="180"
+                       fixed="left"/>
+      <el-table-column label="计划培训开始时间" prop="planData" width="180" align="center" fixed="left">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.courseDate, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.planData, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="考核情况" align="center" prop="assess" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true" fixed="left"
+                       width="180"/>
+      <el-table-column label="培训计划" align="center" prop="courseDay" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true" width="180"/>
       <el-table-column label="培训状态" align="center" prop="planStatus" :show-overflow-tooltip="true" width="180">
         <template slot-scope="scope">
           <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
@@ -31,32 +27,63 @@
           <el-tag v-else-if="scope.row.planStatus == 5" size="small" type="success">已完成待审批</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="第一次成绩" align="center" prop="score1" :show-overflow-tooltip="true" width="180"/>
+      <el-table-column label="第一次成绩" align="center" prop="score1" :show-overflow-tooltip="true" width="180">
+        <template slot-scope="scope">
+          <div v-if="scope.row.score1 == null&&scope.row.planStatus==2">
+            <el-select v-model="scope.row.score1Tmp" style="width: 130px" placeholder="请选择成绩">
+              <el-option value="好" label="好" key="好"/>
+              <el-option value="满意" label="满意" key="满意"/>
+              <el-option value="差" label="差" key="差"/>
+            </el-select>
+            <el-button type="text" @click="saveScore(scope.row)" class="ml5">保存</el-button>
+          </div>
+          <span v-else>{{ scope.row.score1 }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="附件" align="center" :show-overflow-tooltip="true" width="80">
         <template slot-scope="scope">
-          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score1')" circle></el-button>
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score1')"
+                     circle></el-button>
         </template>
       </el-table-column>
-      <el-table-column label="第二次成绩" align="center" prop="score2" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="附件" align="center"  :show-overflow-tooltip="true" width="80">
+      <el-table-column label="第二次成绩" align="center" prop="score2" :show-overflow-tooltip="true" width="180">
         <template slot-scope="scope">
-          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score2')" circle></el-button>
+          <div
+            v-if="scope.row.score2 == null&&scope.row.planStatus==2&&(scope.row.score1 == '满意'||scope.row.score1 == '差')">
+            <el-select v-model="scope.row.score2Tmp" style="width: 130px" placeholder="请选择成绩">
+              <el-option value="好" label="好" key="好"/>
+              <el-option value="满意" label="满意" key="满意"/>
+              <el-option value="差" label="差" key="差"/>
+            </el-select>
+            <el-button type="text" @click="saveScore(scope.row)" class="ml5">保存</el-button>
+          </div>
+          <span v-else>{{ scope.row.score2 }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="第三次成绩" align="center" prop="score3" :show-overflow-tooltip="true" width="180"/>
-      <el-table-column label="附件" align="center"  :show-overflow-tooltip="true" width="80">
+      <el-table-column label="附件" align="center" :show-overflow-tooltip="true" width="80">
         <template slot-scope="scope">
-          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score3')" circle></el-button>
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score2')"
+                     circle></el-button>
         </template>
       </el-table-column>
-      <el-table-column label="计划培训开始时间" prop="planStartData" width="180" align="center">
+      <el-table-column label="第三次成绩" align="center" prop="score3" :show-overflow-tooltip="true" width="180">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.planStartData, '{y}-{m}-{d}') }}</span>
+          <div
+            v-if="scope.row.score3 == null&&scope.row.planStatus==2&&((scope.row.score1 == '满意'||scope.row.score1 == '差')&&(scope.row.score2 == '满意'||scope.row.score2 == '差'))">
+            <el-select v-model="scope.row.score3Tmp" style="width: 130px" placeholder="请选择成绩">
+              <el-option value="好" label="好" key="好"/>
+              <el-option value="满意" label="满意" key="满意"/>
+              <el-option value="差" label="差" key="差"/>
+            </el-select>
+            <el-button type="text" @click="saveScore(scope.row)" class="ml5">保存</el-button>
+          </div>
+          <span v-else>{{ scope.row.score3 }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="计划培训结束时间" prop="planEndData" width="180" align="center">
+      <el-table-column label="附件" align="center" :show-overflow-tooltip="true" width="80">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.planEndData, '{y}-{m}-{d}') }}</span>
+          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-score3')"
+                     circle></el-button>
         </template>
       </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="180"/>
@@ -122,7 +149,7 @@
       </el-button>
     </el-dialog>
 
-    <el-dialog :close-on-click-modal="false"  element-loading-background="rgba(0,0,0,0.2)"
+    <el-dialog :close-on-click-modal="false" element-loading-background="rgba(0,0,0,0.2)"
                v-dialogDrag :title="pdf.title"
                :visible.sync="pdf.open" width="1300px" height="800px" :center="true" append-to-body
                @close="handleClose">
@@ -133,28 +160,32 @@
     </el-dialog>
 
 
-
     <!-- 报告附件对话框 -->
-    <el-dialog  :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px" append-to-body >
+    <el-dialog :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px"
+               append-to-body>
       <el-table :data="doc.commonfileList" border>
         <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
           <template slot-scope="scope">
-            <a  class="link-type"  @click="handleDownload(scope.row)">
+            <a class="link-type" @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true" width="80" />
+        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"
+                         width="80"/>
         <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>
-        <el-table-column :label="$t('上传日期')" align="center" prop="createdate" :show-overflow-tooltip="true" width="120">
+        <el-table-column :label="$t('上传日期')" align="center" prop="createdate" :show-overflow-tooltip="true"
+                         width="120">
           <template slot-scope="scope">
             <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
           </template>
         </el-table-column>
       </el-table>
-      <el-dialog  :close-on-click-modal="false" v-dialogDrag :title="pdf.title" :visible.sync="pdf.open" width="1300px" append-to-body>
+      <el-dialog :close-on-click-modal="false" v-dialogDrag :title="pdf.title" :visible.sync="pdf.open" width="1300px"
+                 append-to-body>
         <div style="margin-top: -60px;float: right;margin-right: 40px;">
-          <el-button size="mini" type="text" @click="openPdf">{{$t('新页面打开PDF')}}</el-button></div>
+          <el-button size="mini" type="text" @click="openPdf">{{ $t('新页面打开PDF') }}</el-button>
+        </div>
         <div style="margin-top: -30px">
           <iframe :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px"></iframe>
         </div>
@@ -181,21 +212,24 @@ import {
   addYsplandsdt,
   delYsplandsdt,
   getYsplandsdt,
-  listYsplandsdt, updateYsLearnTime,
+  listYsplandsdt,
+  updateYsLearnTime,
   updateYsplandsdt
 } from "@/api/training/bccnew/ysplandsdt";
 import {
   addFlplandsdt,
   delFlplandsdt,
   getFlplandsdt,
-  listFlplandsdt, updateFlLearnTime,
+  listFlplandsdt,
+  updateFlLearnTime,
   updateFlplandsdt
 } from "@/api/training/bccnew/flplandsdt";
 import {
   addFtplandsdt,
   delFtplandsdt,
   getFtplandsdt,
-  listFtplandsdt, updateFtLearnTime,
+  listFtplandsdt,
+  updateFtLearnTime,
   updateFtplandsdt
 } from "@/api/training/bccnew/ftplandsdt";
 import {treeselect} from "@/api/system/dept";
@@ -205,7 +239,7 @@ import {allFileList, delCommonfile} from "@/api/common/commonfile";
 
 var timer = null;
 export default {
-  name:"score_s",
+  name: "score_s",
   props: {
     newId: {},
     planType: {}
@@ -227,7 +261,7 @@ export default {
         // 报告附件上传位置编号
         ids: 0,
         // 设置上传的请求头部
-        headers: { Authorization: "Bearer " + getToken() },
+        headers: {Authorization: "Bearer " + getToken()},
         // 上传的地址
         url: process.env.VUE_APP_BASE_API + "/common/commonfile/uploadFile",
         commonfileList: null,
@@ -313,7 +347,7 @@ export default {
       this.upload.open = false;
       this.upload.isUploading = false;
       this.$refs.upload.clearFiles();
-      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
       this.getList();
     },
     // 提交上传文件
@@ -321,20 +355,20 @@ export default {
       this.$refs.upload.submit();
     },
     /** 报告附件按钮操作 */
-    handleDoc(row , fileType) {
+    handleDoc(row, fileType) {
       if (this.planType === 1) {
-        fileType+='lj';
+        fileType += 'lj';
       } else if (this.planType === 2) {
-        fileType+='ys';
+        fileType += 'ys';
       } else if (this.planType === 3) {
-        fileType+='fl';
+        fileType += 'fl';
       } else if (this.planType === 4) {
-        fileType+='ft';
+        fileType += 'ft';
       }
       this.doc.pType = fileType
       this.doc.queryParams.pType = fileType
       this.doc.id = row.id;
-      this.doc.title = this.$t('附件') ;
+      this.doc.title = this.$t('附件');
       this.doc.open = true;
       this.doc.queryParams.pId = row.id
       this.doc.pId = row.id
@@ -343,7 +377,7 @@ export default {
         this.$refs.doc.clearFiles()
       })
     },
-    getFileList (){
+    getFileList() {
       allFileList(this.doc.queryParams).then(response => {
         response.forEach(element => {
           element["isEdit"] = false
@@ -362,7 +396,7 @@ export default {
     //附件上传成功处理
     handleFileDocSuccess(response, file, fileList) {
       this.doc.isUploading = false;
-      this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+      this.$alert(response.msg, this.$t('导入结果'), {dangerouslyUseHTMLString: true});
       this.getFileList()
     },
     // 文件下载处理
@@ -376,14 +410,14 @@ export default {
       a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
       a.click()
     },
-    openPdf(){
+    openPdf() {
       window.open(this.pdf.pdfUrl);//path是文件的全路径地址
     },
-    handleSee (row){
+    handleSee(row) {
       // window.open(process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl);//path是文件的全路径地址
-      this.pdf.open =true
+      this.pdf.open = true
       this.pdf.title = row.fileName
-      this.pdf.pdfUrl = process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
+      this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
     },
     /** 删除按钮操作 */
     handleDeleteDoc(row) {
@@ -392,7 +426,7 @@ export default {
         confirmButtonText: this.$t('确定'),
         cancelButtonText: this.$t('取消'),
         type: "warning"
-      }).then(function() {
+      }).then(function () {
         return delCommonfile(ids);
       }).then(() => {
         this.getFileList()
@@ -410,7 +444,7 @@ export default {
       this.pdf.pdfUrl = ""
       this.ppt = true
       //如果是PDF等直接可以打开的就不调接口,否则调用接口
-      if (row.fileName!=null&&row.fileName.endsWith('pdf')) {
+      if (row.fileName != null && row.fileName.endsWith('pdf')) {
         this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
 
       }
@@ -443,15 +477,15 @@ export default {
       return parseInt((this.file.data.timer / this.file.data.timerNeed * 100).toFixed(2))
     },
     openFileDialog(row) {
-      for (let i=0;i<this.dsdtList.length;i++) {
-        if (i===0){
+      for (let i = 0; i < this.dsdtList.length; i++) {
+        if (i === 0) {
           continue;
         }
         let item = this.dsdtList[i];
         console.log(item.id)
-        if (item.id===row.id){
-          if (this.dsdtList[i-1].planStatus!==5){
-            this.$alert('您必须完成上一项考试才可学习当前资料!', "注意", { dangerouslyUseHTMLString: true });
+        if (item.id === row.id) {
+          if (this.dsdtList[i - 1].planStatus !== 5) {
+            this.$alert('您必须完成上一项考试才可学习当前资料!', "注意", {dangerouslyUseHTMLString: true});
             return;
           }
         }
@@ -468,26 +502,26 @@ export default {
     getList() {
       if (this.planType == 1) {
         listLjplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       } else if (this.planType == 2) {
         listYsplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       } else if (this.planType == 3) {
         listFlplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       } else if (this.planType == 4) {
         listFtplandsdt(this.queryParams).then(res => {
-          this.dsdtList = res.rows;
-          this.total = res.total;
+          this.dsdtList = res.data;
+          this.total = 0;
           this.loading = false;
         })
       }
@@ -687,6 +721,41 @@ export default {
         }
       });
     },
+    //合并单元格
+    mergeMethod({row, column, rowIndex, columnIndex}) {
+      // console.log(row)
+      if ([3, 6, 7, 8, 9, 10, 11, 12, 13, 14].includes(columnIndex)) {
+        const _row = this.setTable(this.dsdtList).merge[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
+      }
+    },
+    //单元格整理
+    setTable(tableData) {
+      //    console.log(tableData)
+      let spanArr = [],
+        concat = 0;
+      tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+        } else {
+          if (item.topic === tableData[index - 1].topic) {
+            //第一列需合并相同内容的判断条件
+            spanArr[concat] += 1;
+            spanArr.push(0);
+          } else {
+            spanArr.push(1);
+            concat = index;
+          }
+        }
+      });
+      return {
+        merge: spanArr
+      };
+    },
   }
 };
 

+ 62 - 75
ui/src/views/training/bccnew/ysPlan/index.vue

@@ -1,28 +1,10 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="培训员工编号" prop="newId">
+      <el-form-item label="培训主题" prop="topic">
         <el-input
-          v-model="queryParams.newId"
-          placeholder="请输入培训员工编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="课程编号" prop="courseCode">
-        <el-input
-          v-model="queryParams.courseCode"
-          placeholder="请输入课程编号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="讲师" prop="trainer">
-        <el-input
-          v-model="queryParams.trainer"
-          placeholder="请输入讲师"
+          v-model="queryParams.topic"
+          placeholder="请输入培训主题"
           clearable
           size="small"
           @keyup.enter.native="handleQuery"
@@ -85,18 +67,17 @@
 	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="ysPlanList" @selection-change="handleSelectionChange" :height="clientHeight" border>
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="课程编号" align="center" prop="courseCode" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训主题" align="center" prop="topic" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训内容" align="center" prop="content" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训天" align="center" prop="courseDay" :show-overflow-tooltip="true"/>
-      <el-table-column label="培训小时" align="center" prop="courseHour" :show-overflow-tooltip="true"/>
-      <el-table-column label="详细计划" align="center" prop="detailPlan" :show-overflow-tooltip="true"/>
-      <el-table-column label="讲师" align="center" prop="trainer" :show-overflow-tooltip="true"/>
-      <el-table-column label="应学习时长" align="center" prop="timerNeed" :show-overflow-tooltip="true"/>
-      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
-      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+    <el-table v-loading="loading" :data="ysPlanList" @selection-change="handleSelectionChange" :height="clientHeight" :span-method="mergeMethod" border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="详细计划" align="center" prop="detailPlan"
+                       fixed="left"/>
+      <el-table-column label="培训主题" align="center" prop="topic" fixed="left"
+                       />
+      <el-table-column label="培训计划" align="center" prop="courseDay" />
+      <el-table-column label="培训内容" align="center" prop="content" />
+      <el-table-column label="应学习时长" align="center" prop="timerNeed"/>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" fixed="right"  class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -134,50 +115,21 @@
 
     <!-- 添加或修改压缩培训模版对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="培训员工编号" prop="newId">
-          <el-input v-model="form.newId" placeholder="请输入培训员工编号" />
-        </el-form-item>
-        <el-form-item label="课程编号" prop="courseCode">
-          <el-input v-model="form.courseCode" placeholder="请输入课程编号" />
-        </el-form-item>
-        <el-form-item label="培训主题" prop="topic">
-          <el-input v-model="form.topic" placeholder="请输入培训主题" />
-        </el-form-item>
-        <el-form-item label="培训内容">
-          <el-input v-model="form.content" placeholder="请输入培训内容"/>
-        </el-form-item>
-        <el-form-item label="培训天" prop="courseDay">
-          <el-input v-model="form.courseDay" placeholder="请输入培训天" />
-        </el-form-item>
-        <el-form-item label="培训小时" prop="courseHour">
-          <el-input v-model="form.courseHour" placeholder="请输入培训小时" />
-        </el-form-item>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="详细计划" prop="detailPlan">
-          <el-input v-model="form.detailPlan" placeholder="请输入详细计划" />
-        </el-form-item>
-        <el-form-item label="讲师" prop="trainer">
-          <el-input v-model="form.trainer" placeholder="请输入讲师" />
+          <el-input v-model="form.detailPlan" placeholder="请输入详细计划"/>
         </el-form-item>
-        <el-form-item label="培训日期" prop="courseDate">
-          <el-date-picker clearable size="small" style="width: 200px"
-            v-model="form.courseDate"
-            type="date"
-            value-format="yyyy-MM-dd"
-            placeholder="选择培训日期">
-          </el-date-picker>
+        <el-form-item label="培训主题" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入培训主题"/>
         </el-form-item>
-        <el-form-item label="考核情况" prop="assess">
-          <el-input v-model="form.assess" placeholder="请输入考核情况" />
+        <el-form-item label="培训排序" prop="sortTmpl">
+          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width:100%;"/>
         </el-form-item>
-        <el-form-item label="应学习时长()" prop="timerNeed">
+        <el-form-item label="应学习时长(h)" prop="timerNeed">
           <el-input-number v-model="form.timerNeed" placeholder="请输入应学习时长" style="width: 100%"/>
         </el-form-item>
-        <el-form-item label="培训排序" prop="sortTmpl">
-          <el-input-number v-model="form.sortTmpl" placeholder="请输入培训排序" style="width: 100%"/>
-        </el-form-item>
         <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注" />
+          <el-input v-model="form.remarks" placeholder="请输入备注"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -239,16 +191,16 @@
         </div>
       </el-upload>
       <el-table :data="doc.commonfileList" border>
-        <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
+        <el-table-column :label="$t('文件名')" align="center" prop="fileName">
           <template slot-scope="scope">
             <a class="link-type" @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"-->
+        <!--        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize"-->
         <!--                         width="80"/>-->
-        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>-->
+        <!--        <el-table-column :label="$t('上传人')" align="center" prop="creator" width="120"/>-->
         <el-table-column :label="$t('操作')" align="center" width="220" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
@@ -502,8 +454,8 @@ export default {
     getList() {
       this.loading = true;
       listYsPlan(this.queryParams).then(response => {
-        this.ysPlanList = response.rows;
-        this.total = response.total;
+        this.ysPlanList = response.data;
+        this.total = 0;
         this.loading = false;
       });
     },
@@ -642,6 +594,41 @@ export default {
           this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
           this.getList();
       },
+    //合并单元格
+    mergeMethod({row, column, rowIndex, columnIndex}) {
+      // console.log(row)
+      if ([1,2,5,6,7].includes(columnIndex)) {
+        const _row = this.setTable(this.ysPlanList).merge[rowIndex];
+        const _col = _row > 0 ? 1 : 0;
+        return {
+          rowspan: _row,
+          colspan: _col
+        };
+      }
+    },
+    //单元格整理
+    setTable(tableData) {
+      //    console.log(tableData)
+      let spanArr = [],
+        concat = 0;
+      tableData.forEach((item, index) => {
+        if (index === 0) {
+          spanArr.push(1);
+        } else {
+          if (item.topic === tableData[index - 1].topic) {
+            //第一列需合并相同内容的判断条件
+            spanArr[concat] += 1;
+            spanArr.push(0);
+          } else {
+            spanArr.push(1);
+            concat = index;
+          }
+        }
+      });
+      return {
+        merge: spanArr
+      };
+    },
       // 提交上传文件
       submitFileForm() {
           this.$refs.upload.submit();