Browse Source

cpms优化

jiangbiao 1 year ago
parent
commit
3b614d2b90
55 changed files with 1993 additions and 213 deletions
  1. 4 4
      cpms-admin/src/main/java/com/cpms/project/plant/domain/TMtAgenda.java
  2. 4 4
      cpms-admin/src/main/java/com/cpms/project/plant/domain/TMtContent.java
  3. 8 5
      cpms-admin/src/main/java/com/cpms/project/process/controller/TMocController.java
  4. 17 5
      cpms-admin/src/main/java/com/cpms/project/process/controller/TSifOverviewController.java
  5. 1 1
      cpms-admin/src/main/java/com/cpms/project/process/controller/TSisRecordController.java
  6. 143 101
      cpms-admin/src/main/java/com/cpms/project/process/domain/TMoc.java
  7. 55 5
      cpms-admin/src/main/java/com/cpms/project/process/domain/TSifVo.java
  8. 56 7
      cpms-admin/src/main/java/com/cpms/project/process/domain/TSisRecord.java
  9. 1 0
      cpms-admin/src/main/java/com/cpms/project/process/mapper/TMocMapper.java
  10. 2 0
      cpms-admin/src/main/java/com/cpms/project/process/service/ITMocService.java
  11. 6 0
      cpms-admin/src/main/java/com/cpms/project/process/service/impl/TMocServiceImpl.java
  12. 3 3
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyEyeWasher.java
  13. 2 2
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiles.java
  14. 3 3
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFireExtinguisher.java
  15. 3 3
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiredoor.java
  16. 3 3
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyRecord.java
  17. 233 0
      cpms-admin/src/main/java/com/cpms/project/training/controller/TTrainRosterController.java
  18. 305 0
      cpms-admin/src/main/java/com/cpms/project/training/domain/TTrainRoster.java
  19. 61 0
      cpms-admin/src/main/java/com/cpms/project/training/mapper/TTrainRosterMapper.java
  20. 63 0
      cpms-admin/src/main/java/com/cpms/project/training/service/ITTrainRosterService.java
  21. 94 0
      cpms-admin/src/main/java/com/cpms/project/training/service/impl/TTrainRosterServiceImpl.java
  22. 4 3
      cpms-admin/src/main/resources/application.yml
  23. 1 0
      cpms-admin/src/main/resources/mapper/approval/TApprovalMapper.xml
  24. 1 0
      cpms-admin/src/main/resources/mapper/asset/TAssetBasedocMapper.xml
  25. 1 0
      cpms-admin/src/main/resources/mapper/asset/TLeakagePointsMapper.xml
  26. 1 0
      cpms-admin/src/main/resources/mapper/asset/TLeakagePointsPatrolMapper.xml
  27. 1 0
      cpms-admin/src/main/resources/mapper/asset/TLeakagePointsRecordMapper.xml
  28. 1 0
      cpms-admin/src/main/resources/mapper/file/TFileMapper.xml
  29. 18 6
      cpms-admin/src/main/resources/mapper/moc/TMocMapper.xml
  30. 13 13
      cpms-admin/src/main/resources/mapper/plant/TStaffmgrMapper.xml
  31. 1 0
      cpms-admin/src/main/resources/mapper/process/TClassdOverviewMapper.xml
  32. 1 0
      cpms-admin/src/main/resources/mapper/process/TLockValveMapper.xml
  33. 7 2
      cpms-admin/src/main/resources/mapper/process/TSifOverviewMapper.xml
  34. 23 6
      cpms-admin/src/main/resources/mapper/process/TSisRecordMapper.xml
  35. 1 0
      cpms-admin/src/main/resources/mapper/process/TValveCsocscMapper.xml
  36. 1 0
      cpms-admin/src/main/resources/mapper/process/TValveNoncMapper.xml
  37. 0 1
      cpms-admin/src/main/resources/mapper/sems/TSpecdevMainMapper.xml
  38. 136 0
      cpms-admin/src/main/resources/mapper/training/TTrainRosterMapper.xml
  39. BIN
      cpms-admin/src/main/resources/static/template/process/mocmoc.xlsx
  40. BIN
      cpms-admin/src/main/resources/static/template/process/sisList.xlsx
  41. BIN
      cpms-admin/src/main/resources/static/word/train.docx
  42. BIN
      cpms-admin/src/main/resources/static/word/train2.docx
  43. 1 0
      cpms-generator/src/main/resources/vm/xml/mapper.xml.vm
  44. 1 1
      cpms-system/src/main/resources/mapper/system/SysUserMapper.xml
  45. 51 0
      cpms-ui/src/api/training/roster.js
  46. 17 5
      cpms-ui/src/views/moc/moc/index.vue
  47. 3 3
      cpms-ui/src/views/plant/hismeeting/index.vue
  48. 33 8
      cpms-ui/src/views/process/sifList/index.vue
  49. 8 8
      cpms-ui/src/views/process/sisRecord/index.vue
  50. 3 3
      cpms-ui/src/views/safety/extinguisher/index.vue
  51. 3 3
      cpms-ui/src/views/safety/firedoor/index.vue
  52. 3 3
      cpms-ui/src/views/safety/washer/index.vue
  53. 1 1
      cpms-ui/src/views/shiftmgr/log/index.vue
  54. 8 1
      cpms-ui/src/views/system/user/index.vue
  55. 583 0
      cpms-ui/src/views/training/roster/index.vue

+ 4 - 4
cpms-admin/src/main/java/com/cpms/project/plant/domain/TMtAgenda.java

@@ -58,7 +58,7 @@ public class TMtAgenda extends BaseEntity {
     @Excel(name = "跟踪人")
     private String responsible;
 
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "回顾/截止时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date deadlineTime;
 
@@ -82,7 +82,7 @@ public class TMtAgenda extends BaseEntity {
     /**
      * 创建时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date createdate;
 
@@ -95,7 +95,7 @@ public class TMtAgenda extends BaseEntity {
     /**
      * 更新日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date updatedate;
 
@@ -122,7 +122,7 @@ public class TMtAgenda extends BaseEntity {
     private Long flag;
 
 
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date meetingDate;
 
     private String meetingNo;

+ 4 - 4
cpms-admin/src/main/java/com/cpms/project/plant/domain/TMtContent.java

@@ -48,7 +48,7 @@ public class TMtContent extends BaseEntity
     private String createrCode;
 
     /** 创建时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date createdate;
 
@@ -57,7 +57,7 @@ public class TMtContent extends BaseEntity
     private String updaterCode;
 
     /** 更新日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date updatedate;
 
@@ -78,11 +78,11 @@ public class TMtContent extends BaseEntity
     private Integer isHis;
 
     /** 回顾/截止时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "回顾/截止时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date deadlineTime;
 
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date meetingDate;
 
     /** 会议标题 */

+ 8 - 5
cpms-admin/src/main/java/com/cpms/project/process/controller/TMocController.java

@@ -3,6 +3,7 @@ package com.cpms.project.process.controller;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.fastjson2.JSON;
@@ -81,10 +82,8 @@ public class TMocController extends BaseController
     @Log(title = "MOC清单", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TMoc tMoc) throws Exception {
-        TMoc moc = new TMoc();
-        moc.setMocNo(tMoc.getMocNo());
-        List<TMoc> tMocs = tMocService.selectTMocList(moc);
-        if(CollectionUtils.isNotEmpty(tMocs)){
+        TMoc moc = tMocService.selectTMocByMocNo(tMoc.getMocNo());
+        if(Objects.nonNull(moc)){
             throw new Exception("已存在相同的MOC No.!");
         }
         return toAjax(tMocService.insertTMoc(tMoc));
@@ -152,8 +151,12 @@ public class TMocController extends BaseController
                     } else if (j==5) {
                         entity.setEmocStatus(cellValue);
                     } else if (j==6) {
-                        entity.setPriority(cellValue);
+                        entity.setEstimatedCost(cellValue);
                     } else if (j==7) {
+                        entity.setTangibleBenefit(cellValue);
+                    } else if (j==8) {
+                        entity.setPriority(cellValue);
+                    } else if (j==9) {
                         entity.setRemarks(cellValue);
                     }
                 }

+ 17 - 5
cpms-admin/src/main/java/com/cpms/project/process/controller/TSifOverviewController.java

@@ -212,22 +212,34 @@ public class TSifOverviewController extends BaseController {
                         case 14:
                             record.setMainPti(cellValue);
                             break;
+//                        case 15:
+//                            record.setFinalElementTag(cellValue);
+//                            break;
                         case 15:
-                            record.setFinalElementTag(cellValue);
+                            record.setH(cellValue);
                             break;
                         case 16:
-                            record.setVotingH(cellValue);
+                            record.sethType(cellValue);
                             break;
                         case 17:
-                            record.setAciton(cellValue);
+                            record.sethService(cellValue);
                             break;
                         case 18:
-                            entity.setRemarks(cellValue);
+                            record.setVotingH(cellValue);
                             break;
                         case 19:
-                            entity.setVer(cellValue);
+                            record.setAction(cellValue);
                             break;
                         case 20:
+                            record.setMainPtiH(cellValue);
+                            break;
+                        case 21:
+                            entity.setRemarks(cellValue);
+                            break;
+                        case 22:
+                            entity.setVer(cellValue);
+                            break;
+                        case 23:
                             record.setFilter(cellValue);
                             break;
                     }

+ 1 - 1
cpms-admin/src/main/java/com/cpms/project/process/controller/TSisRecordController.java

@@ -170,7 +170,7 @@ public class TSisRecordController extends BaseController
                             entity.setVotingH ( cellValue);
                             break;
                         case 9:
-                            entity.setAciton ( cellValue);
+                            entity.setAction ( cellValue);
                             break;
                         case 10:
                             entity.setFilter ( cellValue);

+ 143 - 101
cpms-admin/src/main/java/com/cpms/project/process/domain/TMoc.java

@@ -1,237 +1,279 @@
 package com.cpms.project.process.domain;
 
-import java.util.Date;
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.cpms.common.annotation.Excel;
-import com.cpms.common.core.domain.BaseEntity;
+
+import java.util.Date;
 
 /**
  * MOC清单对象 t_moc
- * 
+ *
  * @author admin
  * @date 2024-04-08
  */
-public class TMoc extends BaseEntity
-{
+public class TMoc extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** id */
+    /**
+     * id
+     */
     private Long id;
 
-    /** MOC NO. */
+    /**
+     * MOC NO.
+     */
     @Excel(name = "MOC NO.")
     private String mocNo;
 
-    /** MOC Owner */
+    /**
+     * MOC Owner
+     */
     @Excel(name = "MOC Owner")
     private String mocOwner;
 
-    /** Change Name */
+    /**
+     * Change Name
+     */
     @Excel(name = "Change Name")
     private String changeName;
 
-    /** T or P */
+    /**
+     * T or P
+     */
     @Excel(name = "T or P")
     private String tOrP;
 
-    /** Issue date */
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    /**
+     * Issue date
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @Excel(name = "Issue date", width = 30, dateFormat = "yyyy-MM-dd")
     private Date issueDate;
 
-    /** e-MOC status */
+    /**
+     * e-MOC status
+     */
     @Excel(name = "e-MOC status")
     private String emocStatus;
 
-    /** Priority */
+    /**
+     * Priority
+     */
     @Excel(name = "Priority")
     private String priority;
 
-    /** 备注 */
+    /**
+     * Estimated Cost/ kCNY
+     */
+    @Excel(name = "Estimated Cost/ kCNY")
+    private String estimatedCost;
+
+    /**
+     * Tangible (Annual) Benefit/ kCNY
+     */
+    @Excel(name = "Tangible (Annual) Benefit/ kCNY")
+    private String tangibleBenefit;
+
+    /**
+     * 备注
+     */
     @Excel(name = "备注")
     private String remarks;
 
-    /** 删除标识 */
+    /**
+     * 删除标识
+     */
     private Integer delFlag;
 
-    /** 创建人 */
+    /**
+     * 创建人
+     */
     @Excel(name = "创建人")
     private String createrCode;
 
-    /** 创建日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    /**
+     * 创建日期
+     */
+    @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")
+    /**
+     * 更新日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date updatedate;
 
-    /** 部门编号 */
+    /**
+     * 部门编号
+     */
     @Excel(name = "部门编号")
     private Long deptId;
 
-    public void setId(Long id) 
-    {
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() 
-    {
+    public Long getId() {
         return id;
     }
-    public void setMocNo(String mocNo) 
-    {
+
+    public void setMocNo(String mocNo) {
         this.mocNo = mocNo;
     }
 
-    public String getMocNo() 
-    {
+    public String getMocNo() {
         return mocNo;
     }
-    public void setMocOwner(String mocOwner) 
-    {
+
+    public void setMocOwner(String mocOwner) {
         this.mocOwner = mocOwner;
     }
 
-    public String getMocOwner() 
-    {
+    public String getMocOwner() {
         return mocOwner;
     }
-    public void setChangeName(String changeName) 
-    {
+
+    public void setChangeName(String changeName) {
         this.changeName = changeName;
     }
 
-    public String getChangeName() 
-    {
+    public String getChangeName() {
         return changeName;
     }
-    public void settOrP(String tOrP) 
-    {
+
+    public void settOrP(String tOrP) {
         this.tOrP = tOrP;
     }
 
-    public String gettOrP() 
-    {
+    public String gettOrP() {
         return tOrP;
     }
-    public void setIssueDate(Date issueDate) 
-    {
+
+    public void setIssueDate(Date issueDate) {
         this.issueDate = issueDate;
     }
 
-    public Date getIssueDate() 
-    {
+    public Date getIssueDate() {
         return issueDate;
     }
-    public void setEmocStatus(String emocStatus) 
-    {
+
+    public void setEmocStatus(String emocStatus) {
         this.emocStatus = emocStatus;
     }
 
-    public String getEmocStatus() 
-    {
+    public String getEmocStatus() {
         return emocStatus;
     }
-    public void setPriority(String priority) 
-    {
+
+    public void setPriority(String priority) {
         this.priority = priority;
     }
 
-    public String getPriority() 
-    {
+    public String getPriority() {
         return priority;
     }
-    public void setRemarks(String remarks) 
-    {
+
+    public String getEstimatedCost() {
+        return estimatedCost;
+    }
+
+    public void setEstimatedCost(String estimatedCost) {
+        this.estimatedCost = estimatedCost;
+    }
+
+    public String getTangibleBenefit() {
+        return tangibleBenefit;
+    }
+
+    public void setTangibleBenefit(String tangibleBenefit) {
+        this.tangibleBenefit = tangibleBenefit;
+    }
+
+    public void setRemarks(String remarks) {
         this.remarks = remarks;
     }
 
-    public String getRemarks() 
-    {
+    public String getRemarks() {
         return remarks;
     }
-    public void setDelFlag(Integer delFlag) 
-    {
+
+    public void setDelFlag(Integer delFlag) {
         this.delFlag = delFlag;
     }
 
-    public Integer getDelFlag() 
-    {
+    public Integer getDelFlag() {
         return delFlag;
     }
-    public void setCreaterCode(String createrCode) 
-    {
+
+    public void setCreaterCode(String createrCode) {
         this.createrCode = createrCode;
     }
 
-    public String getCreaterCode() 
-    {
+    public String getCreaterCode() {
         return createrCode;
     }
-    public void setCreatedate(Date createdate) 
-    {
+
+    public void setCreatedate(Date createdate) {
         this.createdate = createdate;
     }
 
-    public Date getCreatedate() 
-    {
+    public Date getCreatedate() {
         return createdate;
     }
-    public void setUpdaterCode(String updaterCode) 
-    {
+
+    public void setUpdaterCode(String updaterCode) {
         this.updaterCode = updaterCode;
     }
 
-    public String getUpdaterCode() 
-    {
+    public String getUpdaterCode() {
         return updaterCode;
     }
-    public void setUpdatedate(Date updatedate) 
-    {
+
+    public void setUpdatedate(Date updatedate) {
         this.updatedate = updatedate;
     }
 
-    public Date getUpdatedate() 
-    {
+    public Date getUpdatedate() {
         return updatedate;
     }
-    public void setDeptId(Long deptId) 
-    {
+
+    public void setDeptId(Long deptId) {
         this.deptId = deptId;
     }
 
-    public Long getDeptId() 
-    {
+    public Long getDeptId() {
         return deptId;
     }
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("mocNo", getMocNo())
-            .append("mocOwner", getMocOwner())
-            .append("changeName", getChangeName())
-            .append("tOrP", gettOrP())
-            .append("issueDate", getIssueDate())
-            .append("emocStatus", getEmocStatus())
-            .append("priority", getPriority())
-            .append("remarks", getRemarks())
-            .append("delFlag", getDelFlag())
-            .append("createrCode", getCreaterCode())
-            .append("createdate", getCreatedate())
-            .append("updaterCode", getUpdaterCode())
-            .append("updatedate", getUpdatedate())
-            .append("deptId", getDeptId())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("mocNo", getMocNo())
+                .append("mocOwner", getMocOwner())
+                .append("changeName", getChangeName())
+                .append("tOrP", gettOrP())
+                .append("issueDate", getIssueDate())
+                .append("emocStatus", getEmocStatus())
+                .append("priority", getPriority())
+                .append("remarks", getRemarks())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("deptId", getDeptId())
+                .toString();
     }
 }

+ 55 - 5
cpms-admin/src/main/java/com/cpms/project/process/domain/TSifVo.java

@@ -122,6 +122,18 @@ public class TSifVo extends BaseEntity {
     @Excel(name = "最终元件位号")
     private String finalElementTag;
 
+    /** h */
+    @Excel(name = "h")
+    private String h;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String hType;
+
+    /** 用途 */
+    @Excel(name = "用途")
+    private String hService;
+
     /**
      * 表决
      */
@@ -132,7 +144,13 @@ public class TSifVo extends BaseEntity {
      * 联锁动作
      */
     @Excel(name = "联锁动作")
-    private String aciton;
+    private String action;
+
+    /**
+     * 测试周期
+     */
+    @Excel(name = "测试周期")
+    private String mainPtiH;
 
     /**
      * Filter
@@ -335,12 +353,20 @@ public class TSifVo extends BaseEntity {
         this.votingH = votingH;
     }
 
-    public String getAciton() {
-        return aciton;
+    public String getAction() {
+        return action;
+    }
+
+    public void setAction(String action) {
+        this.action = action;
+    }
+
+    public String getMainPtiH() {
+        return mainPtiH;
     }
 
-    public void setAciton(String aciton) {
-        this.aciton = aciton;
+    public void setMainPtiH(String mainPtiH) {
+        this.mainPtiH = mainPtiH;
     }
 
     public String getFilter() {
@@ -406,4 +432,28 @@ public class TSifVo extends BaseEntity {
     public void setDeptId(Long deptId) {
         this.deptId = deptId;
     }
+
+    public String getH() {
+        return h;
+    }
+
+    public void setH(String h) {
+        this.h = h;
+    }
+
+    public String gethType() {
+        return hType;
+    }
+
+    public void sethType(String hType) {
+        this.hType = hType;
+    }
+
+    public String gethService() {
+        return hService;
+    }
+
+    public void sethService(String hService) {
+        this.hService = hService;
+    }
 }

+ 56 - 7
cpms-admin/src/main/java/com/cpms/project/process/domain/TSisRecord.java

@@ -52,13 +52,29 @@ public class TSisRecord extends BaseEntity
     @Excel(name = "最终元件位号")
     private String finalElementTag;
 
+    /** h */
+    @Excel(name = "h")
+    private String h;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String hType;
+
+    /** 用途 */
+    @Excel(name = "用途")
+    private String hService;
+
     /** 表决 */
     @Excel(name = "表决")
     private String votingH;
 
     /** 联锁动作 */
     @Excel(name = "联锁动作")
-    private String aciton;
+    private String action;
+
+    /** 测试周期 */
+    @Excel(name = "测试周期")
+    private String mainPtiH;
 
     /** Filter */
     @Excel(name = "Filter")
@@ -179,16 +195,25 @@ public class TSisRecord extends BaseEntity
     {
         return votingH;
     }
-    public void setAciton(String aciton) 
+    public void setAction(String action)
     {
-        this.aciton = aciton;
+        this.action = action;
     }
 
-    public String getAciton() 
+    public String getAction()
     {
-        return aciton;
+        return action;
+    }
+
+    public String getMainPtiH() {
+        return mainPtiH;
+    }
+
+    public void setMainPtiH(String mainPtiH) {
+        this.mainPtiH = mainPtiH;
     }
-    public void setFilter(String filter) 
+
+    public void setFilter(String filter)
     {
         this.filter = filter;
     }
@@ -252,6 +277,30 @@ public class TSisRecord extends BaseEntity
         return deptId;
     }
 
+    public String getH() {
+        return h;
+    }
+
+    public void setH(String h) {
+        this.h = h;
+    }
+
+    public String gethType() {
+        return hType;
+    }
+
+    public void sethType(String hType) {
+        this.hType = hType;
+    }
+
+    public String gethService() {
+        return hService;
+    }
+
+    public void sethService(String hService) {
+        this.hService = hService;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -265,7 +314,7 @@ public class TSisRecord extends BaseEntity
             .append("mainPti", getMainPti())
             .append("finalElementTag", getFinalElementTag())
             .append("votingH", getVotingH())
-            .append("aciton", getAciton())
+            .append("action", getAction())
             .append("filter", getFilter())
             .append("delFlag", getDelFlag())
             .append("createrCode", getCreaterCode())

+ 1 - 0
cpms-admin/src/main/java/com/cpms/project/process/mapper/TMocMapper.java

@@ -18,6 +18,7 @@ public interface TMocMapper
      * @return MOC清单
      */
     public TMoc selectTMocById(Long id);
+    public TMoc selectTMocByMocNo(String mocNo);
 
     /**
      * 查询MOC清单列表

+ 2 - 0
cpms-admin/src/main/java/com/cpms/project/process/service/ITMocService.java

@@ -19,6 +19,8 @@ public interface ITMocService
      */
     public TMoc selectTMocById(Long id);
 
+    public TMoc selectTMocByMocNo(String mocNo);
+
     /**
      * 查询MOC清单列表
      * 

+ 6 - 0
cpms-admin/src/main/java/com/cpms/project/process/service/impl/TMocServiceImpl.java

@@ -31,6 +31,12 @@ public class TMocServiceImpl implements ITMocService
         return tMocMapper.selectTMocById(id);
     }
 
+    @Override
+    public TMoc selectTMocByMocNo(String mocNo)
+    {
+        return tMocMapper.selectTMocByMocNo(mocNo);
+    }
+
     /**
      * 查询MOC清单列表
      * 

+ 3 - 3
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyEyeWasher.java

@@ -61,7 +61,7 @@ public class TSafetyEyeWasher extends BaseEntity {
     /**
      * 检查日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "检查日期" , width = 30, dateFormat = "yyyy-MM-dd")
     private Date inspectdate;
 
@@ -85,7 +85,7 @@ public class TSafetyEyeWasher extends BaseEntity {
     /**
      * 创建日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    // @Excel(name = "创建日期" , width = 30, dateFormat = "yyyy-MM-dd")
     private Date createdate;
 
@@ -98,7 +98,7 @@ public class TSafetyEyeWasher extends BaseEntity {
     /**
      * 更新日期
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     //@Excel(name = "更新日期" , width = 30, dateFormat = "yyyy-MM-dd")
     private Date updatedate;
 

+ 2 - 2
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiles.java

@@ -37,7 +37,7 @@ public class TSafetyFiles extends BaseEntity
     private String createrCode;
 
     /** 创建日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date createdate;
 
@@ -46,7 +46,7 @@ public class TSafetyFiles extends BaseEntity
     private String updaterCode;
 
     /** 更新日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date updatedate;
 

+ 3 - 3
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFireExtinguisher.java

@@ -50,7 +50,7 @@ public class TSafetyFireExtinguisher extends BaseEntity
     private String fillingDate;
 
     /** 检查日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date inspectdate;
 
@@ -76,14 +76,14 @@ public class TSafetyFireExtinguisher extends BaseEntity
     private String createrCode;
 
     /** 创建日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date createdate;
 
     /** 更新人 */
     private String updaterCode;
 
     /** 更新日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date updatedate;
 
     /** 部门编号 */

+ 3 - 3
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiredoor.java

@@ -38,7 +38,7 @@ public class TSafetyFiredoor extends BaseEntity
     private String inspector;
 
     /** 检查日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date inspectdate;
 
@@ -64,14 +64,14 @@ public class TSafetyFiredoor extends BaseEntity
     private String createrCode;
 
     /** 创建日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date createdate;
 
     /** 更新人 */
     private String updaterCode;
 
     /** 更新日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date updatedate;
 
     /** 部门编号 */

+ 3 - 3
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyRecord.java

@@ -56,7 +56,7 @@ public class TSafetyRecord extends BaseEntity
     private String inspector;
 
     /** 检查日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date inspectdate;
 
@@ -71,14 +71,14 @@ public class TSafetyRecord extends BaseEntity
     private String createrCode;
 
     /** 创建日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date createdate;
 
     /** 更新人 */
     private String updaterCode;
 
     /** 更新日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date updatedate;
 
     /** 部门编号 */

+ 233 - 0
cpms-admin/src/main/java/com/cpms/project/training/controller/TTrainRosterController.java

@@ -0,0 +1,233 @@
+package com.cpms.project.training.controller;
+
+import com.cpms.common.annotation.Log;
+import com.cpms.common.config.RuoYiConfig;
+import com.cpms.common.core.controller.BaseController;
+import com.cpms.common.core.domain.AjaxResult;
+import com.cpms.common.core.page.TableDataInfo;
+import com.cpms.common.enums.BusinessType;
+import com.cpms.common.utils.DateUtils;
+import com.cpms.common.utils.StringUtils;
+import com.cpms.common.utils.file.FileUploadUtils;
+import com.cpms.common.utils.poi.ExcelUtil;
+import com.cpms.project.plant.domain.TStaffmgr;
+import com.cpms.project.plant.service.ITStaffmgrService;
+import com.cpms.project.training.domain.TTrainRoster;
+import com.cpms.project.training.service.ITTrainRosterService;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.data.RowRenderData;
+import com.deepoove.poi.data.Rows;
+import com.deepoove.poi.data.Tables;
+import com.deepoove.poi.data.Texts;
+import io.jsonwebtoken.lang.Assert;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 培训签字Controller
+ *
+ * @author ruoyi
+ * @date 2023-08-03
+ */
+@RestController
+@RequestMapping("/training/roster")
+public class TTrainRosterController extends BaseController {
+    @Autowired
+    private ITTrainRosterService tTrainRosterService;
+    @Autowired
+    private ITStaffmgrService tStaffmgrService;
+
+    /**
+     * 查询培训签字列表
+     */
+    @PreAuthorize("@ss.hasPermi('training:roster:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TTrainRoster tTrainRoster) {
+        startPage();
+        List<TTrainRoster> list = tTrainRosterService.selectTTrainRosterList(tTrainRoster);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出培训签字列表
+     */
+    @PreAuthorize("@ss.hasPermi('training:roster:export')")
+    @Log(title = "培训签字", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TTrainRoster tTrainRoster) {
+        List<TTrainRoster> list = tTrainRosterService.selectTTrainRosterList(tTrainRoster);
+        ExcelUtil<TTrainRoster> util = new ExcelUtil<TTrainRoster>(TTrainRoster.class);
+        util.exportExcel(list, "培训签字数据");
+    }
+
+    /**
+     * 获取培训签字详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('training:roster:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tTrainRosterService.selectTTrainRosterById(id));
+    }
+
+    /**
+     * 新增培训签字
+     */
+    @PreAuthorize("@ss.hasPermi('training:roster:add')")
+    @Log(title = "培训签字", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TTrainRoster tTrainRoster) {
+        return toAjax(tTrainRosterService.insertTTrainRoster(tTrainRoster));
+    }
+
+    /**
+     * 修改培训签字
+     */
+    @PreAuthorize("@ss.hasPermi('training:roster:edit')")
+    @Log(title = "培训签字", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TTrainRoster tTrainRoster) {
+        return toAjax(tTrainRosterService.updateTTrainRoster(tTrainRoster));
+    }
+
+    /**
+     * 删除培训签字
+     */
+    @PreAuthorize("@ss.hasPermi('training:roster:remove')")
+    @Log(title = "培训签字", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tTrainRosterService.deleteTTrainRosterByIds(ids));
+    }
+
+    @GetMapping("/wordView/{id}")
+    public AjaxResult wordView(@PathVariable Long id) throws IOException {
+        //根据ID查询并生成
+        String url = PreView(id);
+        return AjaxResult.success(url);
+    }
+
+    /**
+     * @param id 生成文件名
+     * @return
+     * @throws IOException
+     */
+    public String PreView(Long id) throws IOException {
+        //根据ID查询并生成
+        TTrainRoster tTrainRoster = tTrainRosterService.selectTTrainRosterById(id);
+        return this.createMeetingWord(tTrainRoster);
+    }
+
+    public String createMeetingWord(TTrainRoster tTrainRoster) throws IOException {
+        //生成word
+        //渲染文本
+        Map<String, Object> params = getWordData(tTrainRoster);
+        // 模板路径
+
+        String templatePath;
+        if (tTrainRoster.getExportType() == 1) {
+            templatePath = "static/word/train.docx";
+        } else {
+            templatePath = "static/word/train2.docx";
+        }
+        // 生成word的路径
+        String fileDir = RuoYiConfig.getProfile() + "/" + "meeting";
+        // 生成word的文件名称
+        String fileName = DateUtils.dateTime() + "_培训签字表.docx";
+        return createWord(templatePath, fileDir, fileName, params);
+    }
+
+    public Map<String, Object> getWordData(TTrainRoster tTrainRoster) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("date", Texts.of(DateUtils.parseDateToStr("yyyy-MM-dd", tTrainRoster.getTrainStartDate()) + " ~ " + DateUtils.parseDateToStr("yyyy-MM-dd", tTrainRoster.getTrainEndDate())).fontSize(10).bold().create());
+        params.put("time", Texts.of(tTrainRoster.getTrainDuration()).fontSize(10).bold().create());
+        params.put("topic", Texts.of(String.valueOf(tTrainRoster.getTopic())).fontSize(10).bold().create());
+        params.put("material", Texts.of(tTrainRoster.getMaterial()).fontSize(10).bold().create());
+        params.put("trainer", Texts.of(tTrainRoster.getTrainer()).fontSize(10).bold().create());
+        params.put("participants", Texts.of(tTrainRoster.getParticipants()).fontSize(10).bold().create());
+        params.put("content", Texts.of(tTrainRoster.getContent()).fontSize(10).bold().create());
+        if (tTrainRoster.getExportType() == 1)
+            params.put("table", replaceTextInParagraph(tTrainRoster));
+        return params;
+    }
+
+    public String createWord(String templatePath, String fileDir, String fileName, Map<String, Object> paramMap) throws IOException {
+        Assert.notNull(templatePath, "word模板文件路径不能为空");
+        Assert.notNull(fileDir, "生成的文件存放地址不能为空");
+        Assert.notNull(fileName, "生成的文件名不能为空");
+        File dir = new File(fileDir);
+        if (!dir.exists()) {
+            logger.info("目录不存在,创建文件夹{}!", fileDir);
+            dir.mkdirs();
+        }
+        fileName = fileName.replaceAll("/", "_"); //替换文件中敏感字段
+        logger.info("目录文件{}!", fileName);
+        String filePath = fileDir + "/" + fileName;
+        logger.info("目录{}!", filePath);
+        // 读取模板渲染参数
+        InputStream is = getClass().getClassLoader().getResourceAsStream(templatePath);
+        XWPFTemplate template = null;
+        if (is != null) {
+            template = XWPFTemplate.compile(is).render(paramMap);
+        }
+        try {
+            // 将模板参数写入路径
+            if (template != null) {
+                template.writeToFile(filePath);
+                template.close();
+            }
+        } catch (Exception e) {
+            logger.error("生成word异常{}", e.getMessage());
+            e.printStackTrace();
+        }
+        return FileUploadUtils.getPathFileName(RuoYiConfig.getFilePath("/" + "meeting"), fileName);
+    }
+
+    private Object replaceTextInParagraph(TTrainRoster tTrainRoster) {
+        ArrayList<RowRenderData> rowDatas = new ArrayList<>();
+        // 表头
+        if (StringUtils.isNotEmpty(tTrainRoster.getTeams())) {
+            TStaffmgr staffmgr = new TStaffmgr();
+            for (String team : tTrainRoster.getTeams().split(",")) {
+                staffmgr.setTeam(team);
+                List<TStaffmgr> tStaffmgrs = tStaffmgrService.selectStaffByTeam(staffmgr);
+                if (CollectionUtils.isNotEmpty(tStaffmgrs)) {
+                    rowDatas.add(Rows.of(tStaffmgrs.get(0).getTeam(), "", "", "").center().textFontSize(10).create());
+                    for (int i = 0; i < tStaffmgrs.size(); i++) {
+                        if (tStaffmgrs.size() - 1 == i)
+                            rowDatas.add(Rows.of(tStaffmgrs.get(i).getName(), "", "", "").center().textFontSize(10).create());
+                        else
+                            rowDatas.add(Rows.of(tStaffmgrs.get(i).getName(), "", tStaffmgrs.get(i + 1).getName(), "").center().textFontSize(10).create());
+                        i++;
+                    }
+                }
+                rowDatas.add(Rows.of("", "", "", "").textFontSize(10).create());
+                rowDatas.add(Rows.of("", "", "", "").textFontSize(10).create());
+            }
+        }
+        if (StringUtils.isNotEmpty(tTrainRoster.getNameList())) {
+//            rowDatas.add(Rows.of("参与培训的人员名单", "", "", "").center().textBold().textFontSize(10).create());
+            String[] strings = tTrainRoster.getNameList().split(",");
+            for (int i = 0; i < strings.length; i++) {
+                if (strings.length - 1 == i)
+                    rowDatas.add(Rows.of(strings[i], "", "", "").center().textFontSize(10).create());
+                else
+                    rowDatas.add(Rows.of(strings[i], "", strings[i + 1], "").center().textFontSize(10).create());
+                i++;
+            }
+            rowDatas.add(Rows.of("", "", "", "").textFontSize(10).create());
+            rowDatas.add(Rows.of("", "", "", "").textFontSize(10).create());
+        }
+        return Tables.of(rowDatas.toArray(new RowRenderData[0])).width(18.29, new double[]{18.29 * 0.25, 18.29 * 0.25, 18.29 * 0.25, 18.29 * 0.25}).create();
+    }
+}

+ 305 - 0
cpms-admin/src/main/java/com/cpms/project/training/domain/TTrainRoster.java

@@ -0,0 +1,305 @@
+package com.cpms.project.training.domain;
+
+
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 培训签字对象 t_train_roster
+ *
+ * @author ruoyi
+ * @date 2023-08-03
+ */
+public class TTrainRoster extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 主题
+     */
+    @Excel(name = "主题")
+    private String topic;
+
+    /**
+     * 培训材料
+     */
+    @Excel(name = "培训材料")
+    private String material;
+
+    /**
+     * 培训人
+     */
+    @Excel(name = "培训人")
+    private String trainer;
+
+    /**
+     * 参加培训人员
+     */
+    @Excel(name = "参加培训人员")
+    private String participants;
+
+    private Long exportType;
+
+
+    /**
+     * 日期时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @Excel(name = "日期时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date trainDate;
+
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date trainStartDate;
+
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date trainEndDate;
+
+    private String trainDuration;
+
+
+    /**
+     * 班组名单
+     */
+    @Excel(name = "班组名单")
+    private String teams;
+
+    /**
+     * 培训内容
+     */
+    @Excel(name = "培训内容")
+    private String content;
+
+    /**
+     * 删除标识
+     */
+    private Integer 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;
+    private String nameList;
+
+    public Long getExportType() {
+        return exportType;
+    }
+
+    public void setExportType(Long exportType) {
+        this.exportType = exportType;
+    }
+
+    public String getNameList() {
+        return nameList;
+    }
+
+    public void setNameList(String nameList) {
+        this.nameList = nameList;
+    }
+
+    public Date getTrainStartDate() {
+        return trainStartDate;
+    }
+
+    public void setTrainStartDate(Date trainStartDate) {
+        this.trainStartDate = trainStartDate;
+    }
+
+    public Date getTrainEndDate() {
+        return trainEndDate;
+    }
+
+    public void setTrainEndDate(Date trainEndDate) {
+        this.trainEndDate = trainEndDate;
+    }
+
+    public String getTrainDuration() {
+        return trainDuration;
+    }
+
+    public void setTrainDuration(String trainDuration) {
+        this.trainDuration = trainDuration;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setMaterial(String material) {
+        this.material = material;
+    }
+
+    public String getMaterial() {
+        return material;
+    }
+
+    public void setTrainer(String trainer) {
+        this.trainer = trainer;
+    }
+
+    public String getTrainer() {
+        return trainer;
+    }
+
+    public void setParticipants(String participants) {
+        this.participants = participants;
+    }
+
+    public String getParticipants() {
+        return participants;
+    }
+
+    public void setTrainDate(Date trainDate) {
+        this.trainDate = trainDate;
+    }
+
+    public Date getTrainDate() {
+        return trainDate;
+    }
+
+    public void setTeams(String teams) {
+        this.teams = teams;
+    }
+
+    public String getTeams() {
+        return teams;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer 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;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("topic", getTopic())
+                .append("material", getMaterial())
+                .append("trainer", getTrainer())
+                .append("participants", getParticipants())
+                .append("trainDate", getTrainDate())
+                .append("teams", getTeams())
+                .append("content", getContent())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("deptId", getDeptId())
+                .append("remarks", getRemarks())
+                .toString();
+    }
+}

+ 61 - 0
cpms-admin/src/main/java/com/cpms/project/training/mapper/TTrainRosterMapper.java

@@ -0,0 +1,61 @@
+package com.cpms.project.training.mapper;
+
+import com.cpms.project.training.domain.TTrainRoster;
+
+import java.util.List;
+/**
+ * 培训签字Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-08-03
+ */
+public interface TTrainRosterMapper 
+{
+    /**
+     * 查询培训签字
+     * 
+     * @param id 培训签字主键
+     * @return 培训签字
+     */
+    public TTrainRoster selectTTrainRosterById(Long id);
+
+    /**
+     * 查询培训签字列表
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 培训签字集合
+     */
+    public List<TTrainRoster> selectTTrainRosterList(TTrainRoster tTrainRoster);
+
+    /**
+     * 新增培训签字
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 结果
+     */
+    public int insertTTrainRoster(TTrainRoster tTrainRoster);
+
+    /**
+     * 修改培训签字
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 结果
+     */
+    public int updateTTrainRoster(TTrainRoster tTrainRoster);
+
+    /**
+     * 删除培训签字
+     * 
+     * @param id 培训签字主键
+     * @return 结果
+     */
+    public int deleteTTrainRosterById(Long id);
+
+    /**
+     * 批量删除培训签字
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTTrainRosterByIds(Long[] ids);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/training/service/ITTrainRosterService.java

@@ -0,0 +1,63 @@
+package com.cpms.project.training.service;
+
+
+import com.cpms.project.training.domain.TTrainRoster;
+
+import java.util.List;
+
+/**
+ * 培训签字Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-08-03
+ */
+public interface ITTrainRosterService 
+{
+    /**
+     * 查询培训签字
+     * 
+     * @param id 培训签字主键
+     * @return 培训签字
+     */
+    public TTrainRoster selectTTrainRosterById(Long id);
+
+    /**
+     * 查询培训签字列表
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 培训签字集合
+     */
+    public List<TTrainRoster> selectTTrainRosterList(TTrainRoster tTrainRoster);
+
+    /**
+     * 新增培训签字
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 结果
+     */
+    public int insertTTrainRoster(TTrainRoster tTrainRoster);
+
+    /**
+     * 修改培训签字
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 结果
+     */
+    public int updateTTrainRoster(TTrainRoster tTrainRoster);
+
+    /**
+     * 批量删除培训签字
+     * 
+     * @param ids 需要删除的培训签字主键集合
+     * @return 结果
+     */
+    public int deleteTTrainRosterByIds(Long[] ids);
+
+    /**
+     * 删除培训签字信息
+     * 
+     * @param id 培训签字主键
+     * @return 结果
+     */
+    public int deleteTTrainRosterById(Long id);
+}

+ 94 - 0
cpms-admin/src/main/java/com/cpms/project/training/service/impl/TTrainRosterServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cpms.project.training.service.impl;
+
+import java.util.List;
+
+import com.cpms.project.training.domain.TTrainRoster;
+import com.cpms.project.training.mapper.TTrainRosterMapper;
+import com.cpms.project.training.service.ITTrainRosterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 培训签字Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-08-03
+ */
+@Service
+public class TTrainRosterServiceImpl implements ITTrainRosterService
+{
+    @Autowired
+    private TTrainRosterMapper tTrainRosterMapper;
+
+    /**
+     * 查询培训签字
+     * 
+     * @param id 培训签字主键
+     * @return 培训签字
+     */
+    @Override
+    public TTrainRoster selectTTrainRosterById(Long id)
+    {
+        return tTrainRosterMapper.selectTTrainRosterById(id);
+    }
+
+    /**
+     * 查询培训签字列表
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 培训签字
+     */
+    @Override
+    public List<TTrainRoster> selectTTrainRosterList(TTrainRoster tTrainRoster)
+    {
+        return tTrainRosterMapper.selectTTrainRosterList(tTrainRoster);
+    }
+
+    /**
+     * 新增培训签字
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 结果
+     */
+    @Override
+    public int insertTTrainRoster(TTrainRoster tTrainRoster)
+    {
+        return tTrainRosterMapper.insertTTrainRoster(tTrainRoster);
+    }
+
+    /**
+     * 修改培训签字
+     * 
+     * @param tTrainRoster 培训签字
+     * @return 结果
+     */
+    @Override
+    public int updateTTrainRoster(TTrainRoster tTrainRoster)
+    {
+        return tTrainRosterMapper.updateTTrainRoster(tTrainRoster);
+    }
+
+    /**
+     * 批量删除培训签字
+     * 
+     * @param ids 需要删除的培训签字主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTTrainRosterByIds(Long[] ids)
+    {
+        return tTrainRosterMapper.deleteTTrainRosterByIds(ids);
+    }
+
+    /**
+     * 删除培训签字信息
+     * 
+     * @param id 培训签字主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTTrainRosterById(Long id)
+    {
+        return tTrainRosterMapper.deleteTTrainRosterById(id);
+    }
+}

+ 4 - 3
cpms-admin/src/main/resources/application.yml

@@ -8,9 +8,9 @@ ruoyi:
   copyrightYear: 2024
   # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
 #  部署
-  profile: C:/cpmsFile/uploadPath
+#  profile: C:/cpmsFile/uploadPath
 #  本地
-#  profile: D:/cpmsFile/uploadPath
+  profile: D:/cpmsFile/uploadPath
   # 获取ip地址开关
   addressEnabled: false
   # 验证码类型 math 数字计算 char 字符验证
@@ -138,6 +138,7 @@ jasypt:
 # 当前部署外网IP,用于office预览
 deployment:
   host: 43.143.92.79/cpms
+#  host: 10.136.112.12/cpms
 filesize-max: 5242880
 files:
   docservice:
@@ -157,7 +158,7 @@ files:
       example: ''
       preloader: web-apps/apps/api/documents/cache-scripts.html
 #      site: http://10.136.112.11:6831/
-      site: http://43.143.92.79.:6831/
+      site: http://43.143.92.79:6831/
     verify-peer-off: true
     viewed-docs: .pdf|.djvu|.xps|.oxps
   storage: ''

+ 1 - 0
cpms-admin/src/main/resources/mapper/approval/TApprovalMapper.xml

@@ -72,6 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/asset/TAssetBasedocMapper.xml

@@ -35,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/asset/TLeakagePointsMapper.xml

@@ -59,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/asset/TLeakagePointsPatrolMapper.xml

@@ -40,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/asset/TLeakagePointsRecordMapper.xml

@@ -44,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/file/TFileMapper.xml

@@ -35,6 +35,7 @@
             <if test="linkId != null "> and link_id = #{linkId}</if>
             <if test="linkName != null  and linkName != ''"> and link_name = #{linkName}</if>
             <if test="pId != null "> and p_id = #{pId}</if>
+        and del_flag=0
         </where>
     </select>
 

+ 18 - 6
cpms-admin/src/main/resources/mapper/moc/TMocMapper.xml

@@ -13,6 +13,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="issueDate"    column="issue_date"    />
         <result property="emocStatus"    column="emoc_status"    />
         <result property="priority"    column="priority"    />
+        <result property="estimatedCost"    column="estimated_cost"    />
+        <result property="tangibleBenefit"    column="tangible_benefit"    />
         <result property="remarks"    column="remarks"    />
         <result property="delFlag"    column="del_flag"    />
         <result property="createrCode"    column="creater_code"    />
@@ -23,14 +25,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTMocVo">
-        select id, moc_no, moc_owner, change_name, t_or_p, issue_date, emoc_status, priority, remarks, del_flag, creater_code, createdate, updater_code, updatedate, dept_id from t_moc
+        select id, moc_no, moc_owner, change_name, t_or_p, issue_date, emoc_status,estimated_cost,tangible_benefit,priority, remarks, del_flag, creater_code, createdate, updater_code, updatedate, dept_id from t_moc
     </sql>
 
     <select id="selectTMocList" parameterType="TMoc" resultMap="TMocResult">
         <include refid="selectTMocVo"/>
         <where>  
-            <if test="mocNo != null  and mocNo != ''"> and moc_no = #{mocNo}</if>
-            <if test="mocOwner != null  and mocOwner != ''"> and moc_owner = #{mocOwner}</if>
+            <if test="mocNo != null  and mocNo != ''"> and moc_no like concat('%', #{mocNo}, '%')</if>
+            <if test="mocOwner != null  and mocOwner != ''"> and moc_owner like concat('%',#{mocOwner}, '%')</if>
             <if test="changeName != null  and changeName != ''"> and change_name like concat('%', #{changeName}, '%')</if>
             <if test="tOrP != null  and tOrP != ''"> and t_or_p = #{tOrP}</if>
             <if test="issueDate != null "> and issue_date = #{issueDate}</if>
@@ -42,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+            and del_flag=0
         </where>
     </select>
     
@@ -49,17 +52,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectTMocVo"/>
         where id = #{id}
     </select>
+
+    <select id="selectTMocByMocNo" parameterType="String" resultMap="TMocResult">
+        <include refid="selectTMocVo"/>
+        where moc_no = #{mocNo} and del_flag=0
+    </select>
         
-    <insert id="insertTMoc" parameterType="TMoc">
+    <insert id="insertTMoc" parameterType="TMoc" useGeneratedKeys="true" keyProperty="id">
         insert into t_moc
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
             <if test="mocNo != null and mocNo != ''">moc_no,</if>
             <if test="mocOwner != null">moc_owner,</if>
             <if test="changeName != null">change_name,</if>
             <if test="tOrP != null">t_or_p,</if>
             <if test="issueDate != null">issue_date,</if>
             <if test="emocStatus != null">emoc_status,</if>
+            <if test="tangibleBenefit != null">tangible_benefit,</if>
+            <if test="estimatedCost != null">estimated_cost,</if>
             <if test="priority != null">priority,</if>
             <if test="remarks != null">remarks,</if>
             <if test="delFlag != null">del_flag,</if>
@@ -70,13 +79,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">dept_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},</if>
             <if test="mocNo != null and mocNo != ''">#{mocNo},</if>
             <if test="mocOwner != null">#{mocOwner},</if>
             <if test="changeName != null">#{changeName},</if>
             <if test="tOrP != null">#{tOrP},</if>
             <if test="issueDate != null">#{issueDate},</if>
             <if test="emocStatus != null">#{emocStatus},</if>
+            <if test="tangibleBenefit != null">#{tangibleBenefit},</if>
+            <if test="estimatedCost != null">#{estimatedCost},</if>
             <if test="priority != null">#{priority},</if>
             <if test="remarks != null">#{remarks},</if>
             <if test="delFlag != null">#{delFlag},</if>
@@ -97,6 +107,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="tOrP != null">t_or_p = #{tOrP},</if>
             <if test="issueDate != null">issue_date = #{issueDate},</if>
             <if test="emocStatus != null">emoc_status = #{emocStatus},</if>
+            <if test="tangibleBenefit != null">tangible_benefit = #{tangibleBenefit},</if>
+            <if test="estimatedCost != null">estimated_cost = #{estimatedCost},</if>
             <if test="priority != null">priority = #{priority},</if>
             <if test="remarks != null">remarks = #{remarks},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>

+ 13 - 13
cpms-admin/src/main/resources/mapper/plant/TStaffmgrMapper.xml

@@ -51,9 +51,9 @@
 
         from t_staffmgr d
         left join sys_dept s on s.dept_id = d.dept_id
-        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='STAFF_UNIT'
-        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'ACTUALPOST'
-        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'TEAM_DIVIDE'
+        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='staff_unit'
+        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'actualpost'
+        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'team_divide'
 
         where
         (s2.DICT_LABEL like '%主管%'
@@ -64,9 +64,9 @@
 
     <select id="selectTStaffmgrList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
         <include refid="selectTStaffmgrVo"/>
-        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='STAFF_UNIT'
-        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'ACTUALPOST'
-        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'TEAM_DIVIDE'
+        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='staff_unit'
+        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'actualpost'
+        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'team_divide'
         <where>
             <if test="name != null  and name != ''"> and name like concat(concat('%', #{name}), '%')</if>
             <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
@@ -133,9 +133,9 @@
 
     <select id="selectTStaffmgrListAll" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
         <include refid="selectTStaffmgrVo"/>
-        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='STAFF_UNIT'
-        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'ACTUALPOST'
-        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'TEAM_DIVIDE'
+        Left join SYS_DICT_DATA s0 on d.UNIT = s0.DICT_VALUE and s0.DICT_TYPE ='staff_unit'
+        LEFT JOIN SYS_DICT_DATA s2 on d.ACTUALPOST = s2.DICT_VALUE and s2.DICT_TYPE = 'actualpost'
+        LEFT JOIN SYS_DICT_DATA s1 on d.team = s1.DICT_VALUE and s1.DICT_TYPE = 'team_divide'
         <where>
             and d.del_flag in (0 , 9)
         </where>
@@ -144,7 +144,7 @@
 
     <select id="selectRecordList" parameterType="TStaffmgr" resultMap="TStaffmgrResult">
         <include refid="selectTStaffmgrVo"/>
-        LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'ACTUALPOST'
+        LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'actualpost'
         <where>
             <if test="units != null  and units != ''">
                 and
@@ -372,7 +372,7 @@
 
     <select id="selectTMentorStaffmgrByPost"  resultMap="TStaffmgrResult">
         <include refid="selectTStaffmgrVo"/>
-            LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'ACTUALPOST'
+            LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'actualpost'
         where
             d.dept_id = #{deptId}
             and d.del_flag = 0
@@ -384,7 +384,7 @@
 
     <select id="selectTStaffmgrByPost"  resultMap="TStaffmgrResult">
         <include refid="selectTStaffmgrVo"/>
-        LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'ACTUALPOST'
+        LEFT JOIN SYS_DICT_DATA s11 on d.ACTUALPOST = s11.DICT_VALUE and s11.DICT_TYPE = 'actualpost'
         where
         d.dept_id = #{deptId}
         and d.del_flag = 0
@@ -396,7 +396,7 @@
 
     <select id="selectStaffByTeam"  resultMap="TStaffmgrResult">
         select  d.name,s11.DICT_LABEL team from t_staffmgr d
-        LEFT JOIN SYS_DICT_DATA s11 on d.team = s11.DICT_VALUE and s11.DICT_TYPE = 'TEAM_DIVIDE'
+        LEFT JOIN SYS_DICT_DATA s11 on d.team = s11.DICT_VALUE and s11.DICT_TYPE = 'team_divide'
         <where>
             <if test="team != null  and team != ''"> and team = #{team}</if>
         </where>

+ 1 - 0
cpms-admin/src/main/resources/mapper/process/TClassdOverviewMapper.xml

@@ -48,6 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/process/TLockValveMapper.xml

@@ -62,6 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 7 - 2
cpms-admin/src/main/resources/mapper/process/TSifOverviewMapper.xml

@@ -44,8 +44,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="condition"    column="condition"    />
         <result property="mainPti"    column="main_pti"    />
         <result property="finalElementTag"    column="final_element_tag"    />
+        <result property="h"    column="h"    />
+        <result property="hType"    column="h_type"    />
+        <result property="hService"    column="h_service"    />
         <result property="votingH"    column="voting_h"    />
-        <result property="aciton"    column="aciton"    />
+        <result property="action"    column="action"    />
+        <result property="mainPtiH"    column="main_pti_h"    />
         <result property="filter"    column="filter"    />
         <result property="remarks"    column="remarks"    />
         <result property="delFlag"    column="del_flag"    />
@@ -61,7 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
 
     <sql id="selectTSifVoVo">
-        SELECT a.id, a.sif_no, a.plant, a.sif_tag, a.deviation, a.risk_analysis, a.cause_consequence, a.required_sil, a.acheieved_sil, a.ver, a.pfdavg, a.remarks, a.del_flag, a.creater_code, a.createdate, a.updater_code, a.updatedate, a.dept_id, b.sensor_tag, b.type, b.service, b.voting_q, b.`condition`, b.main_pti, b.final_element_tag, b.voting_h, b.aciton, b.`filter` FROM t_sif_overview a LEFT JOIN t_sis_record b on a.id=b.sis_id
+        SELECT a.id, a.sif_no, a.plant, a.sif_tag, a.deviation, a.risk_analysis, a.cause_consequence, a.required_sil, a.acheieved_sil, a.ver, a.pfdavg, a.remarks, a.del_flag, a.creater_code, a.createdate, a.updater_code, a.updatedate, a.dept_id, b.sensor_tag, b.type, b.service, b.voting_q, b.`condition`, b.main_pti, b.final_element_tag,b.h,b.h_type,b.h_service, b.voting_h, b.action,b.main_pti_h,b.`filter` FROM t_sif_overview a LEFT JOIN t_sis_record b on a.id=b.sis_id
     </sql>
 
 
@@ -78,6 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="acheievedSil != null  and acheievedSil != ''"> and acheieved_sil = #{acheievedSil}</if>
             <if test="ver != null  and ver != ''"> and ver = #{ver}</if>
             <if test="pfdavg != null  and pfdavg != ''"> and pfdavg = #{pfdavg}</if>
+        and a.del_flag=0
         </where>
     </select>
     

+ 23 - 6
cpms-admin/src/main/resources/mapper/process/TSisRecordMapper.xml

@@ -15,7 +15,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="mainPti"    column="main_pti"    />
         <result property="finalElementTag"    column="final_element_tag"    />
         <result property="votingH"    column="voting_h"    />
-        <result property="aciton"    column="aciton"    />
+        <result property="action"    column="action"    />
+        <result property="mainPtiH"    column="main_pti_h"    />
+        <result property="h"    column="h"    />
+        <result property="hType"    column="h_type"    />
+        <result property="hService"    column="h_service"    />
         <result property="filter"    column="filter"    />
         <result property="delFlag"    column="del_flag"    />
         <result property="createrCode"    column="creater_code"    />
@@ -26,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTSisRecordVo">
-        select id, sis_id, sensor_tag, type, service, voting_q, `condition`, main_pti, final_element_tag, voting_h, aciton, `filter`, del_flag, creater_code, createdate, updater_code, updatedate, dept_id from t_sis_record
+        select id, sis_id, sensor_tag, type, service, voting_q, `condition`, main_pti,main_pti_h, final_element_tag,h,h_type,h_service,voting_h, `action`, `filter`, del_flag, creater_code, createdate, updater_code, updatedate, dept_id from t_sis_record
     </sql>
 
     <select id="selectTSisRecordList" parameterType="TSisRecord" resultMap="TSisRecordResult">
@@ -41,13 +45,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="mainPti != null  and mainPti != ''"> and main_pti = #{mainPti}</if>
             <if test="finalElementTag != null  and finalElementTag != ''"> and final_element_tag = #{finalElementTag}</if>
             <if test="votingH != null  and votingH != ''"> and voting_h = #{votingH}</if>
-            <if test="aciton != null  and aciton != ''"> and aciton = #{aciton}</if>
+            <if test="action != null  and action != ''"> and `action` = #{action}</if>
             <if test="filter != null  and filter != ''"> and `filter` = #{filter}</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>
+        and del_flag=0
         </where>
     </select>
     
@@ -66,9 +71,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="votingQ != null">voting_q,</if>
             <if test="condition != null">`condition`,</if>
             <if test="mainPti != null">main_pti,</if>
+            <if test="mainPtiH != null">main_pti_h,</if>
             <if test="finalElementTag != null">final_element_tag,</if>
+            <if test="h != null">h,</if>
+            <if test="hType != null">h_type,</if>
+            <if test="hService != null">h_service,</if>
             <if test="votingH != null">voting_h,</if>
-            <if test="aciton != null">aciton,</if>
+            <if test="action != null">`action`,</if>
             <if test="filter != null">`filter`,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createrCode != null">creater_code,</if>
@@ -85,9 +94,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="votingQ != null">#{votingQ},</if>
             <if test="condition != null">#{condition},</if>
             <if test="mainPti != null">#{mainPti},</if>
+            <if test="mainPtiH != null">#{mainPtiH},</if>
             <if test="finalElementTag != null">#{finalElementTag},</if>
+            <if test="h != null">#{h},</if>
+            <if test="hType != null">#{hType},</if>
+            <if test="hService != null">#{hService},</if>
             <if test="votingH != null">#{votingH},</if>
-            <if test="aciton != null">#{aciton},</if>
+            <if test="action != null">#{action},</if>
             <if test="filter != null">#{filter},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createrCode != null">#{createrCode},</if>
@@ -108,9 +121,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="votingQ != null">voting_q = #{votingQ},</if>
             <if test="condition != null">`condition` = #{condition},</if>
             <if test="mainPti != null">main_pti = #{mainPti},</if>
+            <if test="mainPtiH != null">main_pti_h = #{mainPtiH},</if>
             <if test="finalElementTag != null">final_element_tag = #{finalElementTag},</if>
+            <if test="h != null">h = #{h},</if>
+            <if test="hType != null">h_type = #{hType},</if>
+            <if test="hService != null">h_service = #{hService},</if>
             <if test="votingH != null">voting_h = #{votingH},</if>
-            <if test="aciton != null">aciton = #{aciton},</if>
+            <if test="action != null">`action` = #{action},</if>
             <if test="filter != null">`filter` = #{filter},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="createrCode != null">creater_code = #{createrCode},</if>

+ 1 - 0
cpms-admin/src/main/resources/mapper/process/TValveCsocscMapper.xml

@@ -58,6 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 0
cpms-admin/src/main/resources/mapper/process/TValveNoncMapper.xml

@@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <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>
+        and del_flag=0
         </where>
     </select>
     

+ 0 - 1
cpms-admin/src/main/resources/mapper/sems/TSpecdevMainMapper.xml

@@ -106,7 +106,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 dev_from like concat('%',#{fuzzy},'%') or
                 remarks like concat('%',#{fuzzy},'%')
                 )</if>
-                and d.del_flag !=2
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScope}

+ 136 - 0
cpms-admin/src/main/resources/mapper/training/TTrainRosterMapper.xml

@@ -0,0 +1,136 @@
+<?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.cpms.project.training.mapper.TTrainRosterMapper">
+
+    <resultMap type="TTrainRoster" id="TTrainRosterResult">
+        <result property="id"    column="id"    />
+        <result property="topic"    column="topic"    />
+        <result property="material"    column="material"    />
+        <result property="trainer"    column="trainer"    />
+        <result property="participants"    column="participants"    />
+        <result property="trainStartDate"    column="train_start_date"    />
+        <result property="trainEndDate"    column="train_end_date"    />
+        <result property="trainDuration"    column="train_duration"    />
+        <result property="teams"    column="teams"    />
+        <result property="content"    column="content"    />
+        <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="nameList"    column="name_list"    />
+        <result property="exportType"    column="export_type"    />
+    </resultMap>
+
+    <sql id="selectTTrainRosterVo">
+        select id,name_list,export_type, topic, material, trainer, participants, train_start_date,train_end_date,train_duration, teams, content, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks from t_train_roster
+    </sql>
+
+    <select id="selectTTrainRosterList" parameterType="TTrainRoster" resultMap="TTrainRosterResult">
+        <include refid="selectTTrainRosterVo"/>
+        <where>
+            <if test="topic != null  and topic != ''"> and topic = #{topic}</if>
+            <if test="material != null  and material != ''"> and material = #{material}</if>
+            <if test="trainer != null  and trainer != ''"> and trainer = #{trainer}</if>
+            <if test="participants != null  and participants != ''"> and participants = #{participants}</if>
+            <if test="teams != null  and teams != ''"> and teams = #{teams}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</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 del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTTrainRosterById" parameterType="Long" resultMap="TTrainRosterResult">
+        <include refid="selectTTrainRosterVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTTrainRoster" parameterType="TTrainRoster" useGeneratedKeys="true" keyProperty="id">
+        insert into t_train_roster
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="topic != null and topic != ''">topic,</if>
+            <if test="material != null and material != ''">material,</if>
+            <if test="trainer != null and trainer != ''">trainer,</if>
+            <if test="participants != null and participants != ''">participants,</if>
+            <if test="trainEndDate != null">train_end_date,</if>
+            <if test="trainStartDate != null">train_start_date,</if>
+            <if test="trainDuration != null">train_duration,</if>
+            <if test="teams != null and teams != ''">teams,</if>
+            <if test="content != null and content != ''">content,</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="nameList != null">name_list,</if>
+            <if test="exportType != null">export_type,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="topic != null and topic != ''">#{topic},</if>
+            <if test="material != null and material != ''">#{material},</if>
+            <if test="trainer != null and trainer != ''">#{trainer},</if>
+            <if test="participants != null and participants != ''">#{participants},</if>
+            <if test="trainEndDate != null">#{trainEndDate},</if>
+            <if test="trainStartDate != null">#{trainStartDate},</if>
+            <if test="trainDuration != null">#{trainDuration},</if>
+            <if test="teams != null and teams != ''">#{teams},</if>
+            <if test="content != null and content != ''">#{content},</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="nameList != null">#{nameList},</if>
+            <if test="exportType != null">#{exportType},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTTrainRoster" parameterType="TTrainRoster">
+        update t_train_roster
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="topic != null and topic != ''">topic = #{topic},</if>
+            <if test="material != null and material != ''">material = #{material},</if>
+            <if test="trainer != null and trainer != ''">trainer = #{trainer},</if>
+            <if test="participants != null and participants != ''">participants = #{participants},</if>
+            <if test="trainEndDate != null">train_end_date=#{trainEndDate},</if>
+            <if test="trainStartDate != null">train_start_date=#{trainStartDate},</if>
+            <if test="trainDuration != null">train_duration=#{trainDuration},</if>
+            <if test="teams != null and teams != ''">teams = #{teams},</if>
+            <if test="content != null and content != ''">content = #{content},</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="nameList != null">name_list = #{nameList},</if>
+            <if test="exportType != null">export_type = #{exportType},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTTrainRosterById" parameterType="Long">
+        update t_train_roster set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTTrainRosterByIds" parameterType="String">
+        update t_train_roster set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

BIN
cpms-admin/src/main/resources/static/template/process/mocmoc.xlsx


BIN
cpms-admin/src/main/resources/static/template/process/sisList.xlsx


BIN
cpms-admin/src/main/resources/static/word/train.docx


BIN
cpms-admin/src/main/resources/static/word/train2.docx


+ 1 - 0
cpms-generator/src/main/resources/vm/xml/mapper.xml.vm

@@ -55,6 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 #end
 #end
 #end
+        and del_flag=0
         </where>
     </select>
     

+ 1 - 1
cpms-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -6,7 +6,7 @@
 
 	<resultMap type="SysUser" id="SysUserResult">
 		<id     property="userId"       column="user_id"      />
-		<id     property="staffId"       column="staff_id"      />
+		<result property="staffId"      column="staff_id"	  />
 		<result property="deptId"       column="dept_id"      />
 		<result property="userName"     column="user_name"    />
 		<result property="nickName"     column="nick_name"    />

+ 51 - 0
cpms-ui/src/api/training/roster.js

@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 查询培训签字列表
+export function listRoster(query) {
+  return request({
+    url: '/training/roster/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询培训签字详细
+export function getRoster(id) {
+  return request({
+    url: '/training/roster/' + id,
+    method: 'get'
+  })
+}
+
+// 新增培训签字
+export function addRoster(data) {
+  return request({
+    url: '/training/roster',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改培训签字
+export function updateRoster(data) {
+  return request({
+    url: '/training/roster',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除培训签字
+export function delRoster(id) {
+  return request({
+    url: '/training/roster/' + id,
+    method: 'delete'
+  })
+}
+
+export function wordView(id) {
+  return request({
+    url: '/training/roster/wordView/'+id,
+    method: 'get'
+  })
+}

+ 17 - 5
cpms-ui/src/views/moc/moc/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="MOC NO." prop="mocNo">
+      <el-form-item label="MOC NO." prop="mocNo" label-width="75px">
         <el-input
           v-model="queryParams.mocNo"
           placeholder="请输入MOC NO."
@@ -17,6 +17,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="MOC Owner" prop="mocOwner" label-width="100px">
+        <el-input v-model="queryParams.mocOwner" placeholder="请输入MOC Owner"  @keyup.enter.native="handleQuery"/>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -97,7 +100,11 @@
         </template>
       </el-table-column>
       <el-table-column label="e-MOC status" align="center" prop="emocStatus"/>
-      <el-table-column label="Priority" align="center" prop="priority"/>
+      <el-table-column label="Priority Evaluation"  align="center">
+        <el-table-column label="Estimated Cost/ kCNY" align="center" prop="estimatedCost"/>
+        <el-table-column label="Tangible (Annual) Benefit/ kCNY" align="center" prop="tangibleBenefit"/>
+        <el-table-column label="Priority" align="center" prop="priority"/>
+      </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -179,6 +186,12 @@
             </el-option-group>
           </el-select>
         </el-form-item>
+        <el-form-item label="Estimated Cost/ kCNY" prop="estimatedCost">
+          <el-input v-model="form.estimatedCost" placeholder="请输入Estimated Cost/ kCNY"/>
+        </el-form-item>
+        <el-form-item label="Tangible (Annual) Benefit/ kCNY" prop="tangibleBenefit">
+          <el-input v-model="form.tangibleBenefit" type="textarea" placeholder="请输入Tangible (Annual) Benefit/ kCNY"/>
+        </el-form-item>
         <el-form-item label="Priority" prop="priority">
           <el-select v-model="form.priority" clearable placeholder="请选择Priority">
             <el-option-group v-if="form.tOrP==='P'">
@@ -329,9 +342,6 @@ export default {
         emocStatus: [
           {required: true, message: "emocStatus不能为空", trigger: "blur"}
         ],
-        priority: [
-          {required: true, message: "priority不能为空", trigger: "blur"}
-        ],
       }
     };
   },
@@ -371,6 +381,8 @@ export default {
         tOrP: null,
         issueDate: null,
         emocStatus: null,
+        tangibleBenefit: null,
+        estimatedCost: null,
         priority: null,
         remarks: null,
         delFlag: null,

+ 3 - 3
cpms-ui/src/views/plant/hismeeting/index.vue

@@ -404,13 +404,13 @@ export default {
         if (valid) {hh
           if (this.form.id != null) {
             updateMeeting(this.form).then(response => {
-              this.msgSuccess('修改成功');
+              this.$modal.msgSuccess('修改成功');
               this.open = false;
               this.getList();
             });
           } else {
             addMeeting(this.form).then(response => {
-              this.msgSuccess('新增成功');
+              this.$modal.msgSuccess('新增成功');
               this.open = false;
               this.getList();
             });
@@ -437,7 +437,7 @@ export default {
         return delMeeting(ids);
       }).then(() => {
         this.getList();
-        this.msgSuccess('删除成功');
+        this.$modal.msgSuccess('删除成功');
       })
     },
     /** 导出按钮操作 */

+ 33 - 8
cpms-ui/src/views/process/sifList/index.vue

@@ -118,9 +118,13 @@
       <el-table-column :label="'表决\nVoting'" align="center" prop="votingQ" width="180"/>
       <el-table-column :label="'联锁条件\nCondition'" align="center" prop="condition" width="180"/>
       <el-table-column :label="'测试周期\nMain PTI'" align="center" prop="mainPti" width="180"/>
-      <el-table-column :label="'最终元件位号\nFinal Element(s) Tag'" align="center" prop="finalElementTag" width="180"/>
+<!--      <el-table-column :label="'最终元件位号\nFinal Element(s) Tag'" align="center" prop="finalElementTag" width="180"/>-->
+      <el-table-column label="h" align="center" prop="h" width="180"/>
+      <el-table-column :label="'类型\nType'" align="center" prop="hType" width="180"/>
+      <el-table-column :label="'用途\nService'" align="center" prop="hService" width="180"/>
       <el-table-column :label="'表决\nVoting'" align="center" prop="votingH" width="180"/>
-      <el-table-column :label="'联锁动作\nAction'" align="center" prop="aciton" width="180"/>
+      <el-table-column :label="'联锁动作\nAction'" align="center" prop="action" width="180"/>
+      <el-table-column :label="'测试周期\nMain PTI'" align="center" prop="action" width="180"/>
       <el-table-column :label="'备注\nRemarks'" align="center" prop="remarks" width="180"/>
       <el-table-column :label="'版本\nVer.'" align="center" prop="ver" width="180"/>
       <el-table-column :label="'Filter'" align="center" prop="filter" width="180"/>
@@ -278,21 +282,43 @@
                 <el-input v-model="recordForm.mainPti" placeholder="请输入测试周期"/>
               </el-form-item>
             </el-col>
+<!--            <el-col :span="8">-->
+<!--              <el-form-item label="最终元件位号" prop="finalElementTag">-->
+<!--                <el-input v-model="recordForm.finalElementTag" placeholder="请输入最终元件位号"/>-->
+<!--              </el-form-item>-->
+<!--            </el-col>-->
             <el-col :span="8">
-              <el-form-item label="最终元件位号" prop="finalElementTag">
-                <el-input v-model="recordForm.finalElementTag" placeholder="请输入最终元件位号"/>
+              <el-form-item label="h" prop="h">
+                <el-input v-model="recordForm.h" placeholder="请输入h"/>
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
+            <el-col :span="8">
+              <el-form-item label="类型" prop="hType">
+                <el-input v-model="recordForm.hType" placeholder="请输入类型"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="用途" prop="hService">
+                <el-input v-model="recordForm.hService" placeholder="请输入用途"/>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="表决" prop="votingH">
                 <el-input v-model="recordForm.votingH" placeholder="请输入表决"/>
               </el-form-item>
             </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="联锁动作" prop="action">
+                <el-input v-model="recordForm.action" placeholder="请输入联锁动作"/>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
-              <el-form-item label="联锁动作" prop="aciton">
-                <el-input v-model="recordForm.aciton" placeholder="请输入联锁动作"/>
+              <el-form-item label="测试周期" prop="mainPtiH">
+                <el-input v-model="recordForm.mainPtiH" placeholder="请输入测试周期"/>
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -661,8 +687,7 @@ export default {
     mergeMethod({row, column, rowIndex, columnIndex}) {
       if (columnIndex === 1 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4
         || columnIndex === 5 || columnIndex === 6 || columnIndex === 7 || columnIndex === 8
-        || columnIndex === 9 || columnIndex === 0 || columnIndex === 19 || columnIndex === 20
-        || columnIndex === 22) {
+        || columnIndex === 9 || columnIndex === 0 || columnIndex === 22 || columnIndex === 23) {
         const _row = this.setTable(this.sifListList).merge[rowIndex];
         const _col = _row > 0 ? 1 : 0;
         return {

+ 8 - 8
cpms-ui/src/views/process/sisRecord/index.vue

@@ -65,9 +65,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="联锁动作" prop="aciton">
+      <el-form-item label="联锁动作" prop="action">
         <el-input
-          v-model="queryParams.aciton"
+          v-model="queryParams.action"
           placeholder="请输入联锁动作"
           clearable
           @keyup.enter.native="handleQuery"
@@ -196,7 +196,7 @@
       <el-table-column label="测试周期" align="center" prop="mainPti" />
       <el-table-column label="最终元件位号" align="center" prop="finalElementTag" />
       <el-table-column label="表决" align="center" prop="votingH" />
-      <el-table-column label="联锁动作" align="center" prop="aciton" />
+      <el-table-column label="联锁动作" align="center" prop="action" />
       <el-table-column label="Filter" align="center" prop="filter" />
       <el-table-column label="创建人" align="center" prop="createrCode" />
       <el-table-column label="创建日期" align="center" prop="createdate" width="180">
@@ -230,7 +230,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -266,8 +266,8 @@
         <el-form-item label="表决" prop="votingH">
           <el-input v-model="form.votingH" placeholder="请输入表决" />
         </el-form-item>
-        <el-form-item label="联锁动作" prop="aciton">
-          <el-input v-model="form.aciton" placeholder="请输入联锁动作" />
+        <el-form-item label="联锁动作" prop="action">
+          <el-input v-model="form.action" placeholder="请输入联锁动作" />
         </el-form-item>
         <el-form-item label="Filter" prop="filter">
           <el-input v-model="form.filter" placeholder="请输入Filter" />
@@ -408,7 +408,7 @@ export default {
         mainPti: null,
         finalElementTag: null,
         votingH: null,
-        aciton: null,
+        action: null,
         filter: null,
         createrCode: null,
         createdate: null,
@@ -461,7 +461,7 @@ export default {
         mainPti: null,
         finalElementTag: null,
         votingH: null,
-        aciton: null,
+        action: null,
         filter: null,
         delFlag: null,
         createrCode: null,

+ 3 - 3
cpms-ui/src/views/safety/extinguisher/index.vue

@@ -625,13 +625,13 @@ export default {
         if (valid) {
           if (this.form.id != null) {
             updateExtinguisher(this.form).then(response => {
-              this.msgSuccess("修改成功");
+              this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
             addExtinguisher(this.form).then(response => {
-              this.msgSuccess("新增成功");
+              this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
             });
@@ -646,7 +646,7 @@ export default {
         return delExtinguisher(ids);
       }).then(() => {
         this.getList();
-        this.msgSuccess("删除成功");
+        this.$modal.msgSuccess("删除成功");
       }).catch(() => {
       });
     },

+ 3 - 3
cpms-ui/src/views/safety/firedoor/index.vue

@@ -606,13 +606,13 @@ export default {
         if (valid) {
           if (this.form.id != null) {
             updateFiredoor(this.form).then(response => {
-              this.msgSuccess("修改成功");
+              this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
             addFiredoor(this.form).then(response => {
-              this.msgSuccess("新增成功");
+              this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
             });
@@ -627,7 +627,7 @@ export default {
         return delFiredoor(ids);
       }).then(() => {
         this.getList();
-        this.msgSuccess("删除成功");
+        this.$modal.msgSuccess("删除成功");
       }).catch(() => {
       });
     },

+ 3 - 3
cpms-ui/src/views/safety/washer/index.vue

@@ -617,13 +617,13 @@ export default {
         if (valid) {
           if (this.form.id != null) {
             updateWasher(this.form).then(response => {
-              this.msgSuccess("修改成功");
+              this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
             addWasher(this.form).then(response => {
-              this.msgSuccess("新增成功");
+              this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
             });
@@ -638,7 +638,7 @@ export default {
         return delWasher(ids);
       }).then(() => {
         this.getList();
-        this.msgSuccess("删除成功");
+        this.$modal.msgSuccess("删除成功");
       }).catch(() => {
       });
     },

+ 1 - 1
cpms-ui/src/views/shiftmgr/log/index.vue

@@ -602,7 +602,7 @@ export default {
       }
     },
     getBzUser() {
-      listPostUser({postCode: 'bz'}).then(response => {
+      listPostUser({postCode: 'se'}).then(response => {
         this.userList = response;
       });
     },

+ 8 - 1
cpms-ui/src/views/system/user/index.vue

@@ -141,6 +141,7 @@
           <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
           <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
           <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+          <el-table-column label="员工号" align="center" key="staffId" prop="staffId" :show-overflow-tooltip="true" />
           <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
           <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
           <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
@@ -295,7 +296,12 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="24">
+          <el-col :span="12">
+            <el-form-item label="员工号">
+              <el-input v-model="form.staffId" placeholder="请输入员工号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
             <el-form-item label="备注">
               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
             </el-form-item>
@@ -516,6 +522,7 @@ export default {
         userName: undefined,
         nickName: undefined,
         password: undefined,
+        staffId: undefined,
         phonenumber: undefined,
         email: undefined,
         sex: undefined,

+ 583 - 0
cpms-ui/src/views/training/roster/index.vue

@@ -0,0 +1,583 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="主题" prop="topic">
+        <el-input
+          v-model="queryParams.topic"
+          placeholder="请输入主题"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="培训人" prop="trainer">
+        <el-input
+          v-model="queryParams.trainer"
+          placeholder="请输入培训人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="参加培训人员" prop="participants">
+        <el-input
+          v-model="queryParams.participants"
+          placeholder="请输入参加培训人员"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="trainDate">
+        <el-date-picker clearable
+                        v-model="queryParams.trainDate"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="请选择日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['training:roster:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['training:roster:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['training:roster:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="rosterList" @selection-change="handleSelectionChange" :height="clientHeight"
+              border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="主题" align="center" prop="topic"/>
+      <el-table-column label="培训材料" align="center" prop="material"/>
+      <el-table-column label="培训人" align="center" prop="trainer"/>
+      <el-table-column label="参加培训人员" align="center" prop="participants"/>
+      <el-table-column label="日期" align="center" width="180">
+        <template slot-scope="scope">
+          <span>{{
+              parseTime(scope.row.trainStartDate, '{y}-{m}-{d}')
+            }} ~ {{ parseTime(scope.row.trainEndDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="时间" align="center" prop="trainDuration" width="180"/>
+      <el-table-column label="培训内容" align="center" prop="content"/>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-download"
+            @click="getReport(scope.row)"
+            v-hasPermi="['training:roster:edit']"
+          >导出
+          </el-button>
+          <el-button
+              icon="el-icon-folder"
+              size="mini"
+              type="text"
+              @click="openFileDialog(scope.row)"
+          >附件
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['training:roster:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['training:roster:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改培训签字对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="140px">
+        <el-form-item label="主题" prop="topic">
+          <el-input v-model="form.topic" placeholder="请输入主题"/>
+        </el-form-item>
+        <el-form-item label="培训材料" prop="material">
+          <el-input v-model="form.material" 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="participants">
+          <el-input v-model="form.participants" placeholder="请输入参加培训人员"/>
+        </el-form-item>
+        <el-form-item label="培训日期" prop="trainDate">
+          <el-date-picker
+            v-model="trainDate"
+            type="daterange"
+            align="right"
+            unlink-panels
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            :picker-options="pickerOptions">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="培训时间" prop="trainDuration">
+          <el-input v-model="form.trainDuration" placeholder="请输入培训时间"/>
+        </el-form-item>
+        <el-form-item label="导出方式" prop="exportType">
+          <el-radio-group v-model="form.exportType">
+            <el-radio :label="1">预输入</el-radio>
+            <el-radio :label="2">手动填写</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="班组名单" prop="teams" v-if="form.exportType==1">
+          <el-select v-model="form.teams" placeholder="请选择参与培训的班组" multiple clearable size="small"
+                     style="width: 100%;">
+            <el-option
+              v-for="dict in teamOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="参与培训的人员名单" prop="nameList" v-if="form.exportType==1">
+          <el-input v-model="form.nameList" type="textarea"
+                    placeholder="请输入参与培训的人员名单(每个人名之间请务必使用中文输入法下的逗号隔开。例如:张三,李四,王五)"/>
+        </el-form-item>
+        <el-form-item label="培训内容">
+          <el-input type="textarea" v-model="form.content" placeholder="请输入培训内容概述" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" type="textarea" placeholder="请输入备注"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :visible.sync="file.open" append-to-body title="附件管理" width="60%">
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+              icon="el-icon-plus"
+              plain
+              size="mini"
+              type="primary"
+              @click="handleFileAdd"
+          >新增
+          </el-button>
+        </el-col>
+      </el-row>
+      <el-table  :data="file.fileList" :height="clientHeight-100"
+                 border>
+        <el-table-column align="center" label="附件名称" prop="fileName">
+            <template slot-scope="scope">
+              <el-button
+                  size="mini"
+                  type="text"
+                  @click="previewFile(scope.row.fileUrl)"
+              >{{ scope.row.fileName }}
+              </el-button>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="上传时间" prop="uploadDate" width="180">
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.uploadDate, '{y}-{m}-{d}') }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="上传人" prop="uploader">
+        </el-table-column>
+        <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
+          <template slot-scope="scope">
+            <el-button
+                icon="el-icon-delete"
+                size="mini"
+                type="text"
+                @click="handleFileRemove(scope.row)"
+            >删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+          v-show="file.total>0"
+          :limit.sync="file.queryParams.pageSize"
+          :page.sync="file.queryParams.pageNum"
+          :total="file.total"
+          @pagination="getFileList"
+      />
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :visible.sync="doc.open" append-to-body title="附件上传" width="400px">
+      <el-upload
+          ref="doc"
+          :action="doc.url"
+          :auto-upload="false"
+          :file-list="doc.fileList"
+          :headers="doc.headers"
+          :on-progress="handleFileDocProgress"
+          :on-success="handleFileDocSuccess"
+          drag
+          multiple>
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitUpload">确 定</el-button>
+        <el-button @click="cancelUpload">取 消</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {listRoster, getRoster, delRoster, addRoster, updateRoster, wordView} from "@/api/training/roster";
+import {getToken} from "../../../utils/auth";
+import {delFile, listFile} from "../../../api/file/file";
+
+export default {
+  name: "Roster",
+  data() {
+    return {
+      file: {
+        open: false,
+        fileList: [],
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          linkId: null,
+          linkName: 'roster',
+        },
+        total:0,
+      },
+      doc: {
+        id: null,
+        file: "",
+        fileList: [],
+        // 是否显示弹出层
+        open: false,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/file/file/uploadFile",
+      },
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
+      trainDate: [],
+      //字典
+      teamOptions: [],
+      // 页面高度
+      clientHeight: 300,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 培训签字表格数据
+      rosterList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        topic: null,
+        material: null,
+        trainer: null,
+        participants: null,
+        trainDate: null,
+        teams: null,
+        content: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        topic: [
+          {required: true, message: "主题不能为空", trigger: "blur"}
+        ],
+        trainer: [
+          {required: true, message: "培训人不能为空", trigger: "blur"}
+        ],
+        exportType: [
+          {required: true, message: "请选择导出方式", trigger: "blur"}
+        ],
+        participants: [
+          {required: true, message: "参加培训人员不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = (document.body.clientHeight - 80) * 0.8
+    });
+    this.getDicts("team_divide").then(res => {
+      this.teamOptions = res.data;
+    });
+  },
+  methods: {
+    previewFile(url){
+      window.open(process.env.VUE_APP_BASE_API + url);
+    },
+    submitUpload() {
+      this.$refs.doc.submit();
+      this.doc.open = false;
+      this.doc.fileList = [];
+      this.getFileList();
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+      this.doc.file = file;
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.$modal.msgSuccess("上传成功");
+      this.doc.open = false;
+      this.doc.fileList = [];
+      this.getFileList();
+    },
+    cancelUpload() {
+      this.doc.open = false;
+      this.doc.fileList = [];
+    },
+    openFileDialog(row) {
+      this.$router.push({path: '/system/file', query: {linkId: row.id, linkName: 'roster'}})
+    },
+    getFileList() {
+      listFile(this.file.queryParams).then(response => {
+        this.file.fileList = response.rows;
+        this.file.total = response.total;
+      })
+    },
+    handleFileAdd() {
+      this.doc.open = true;
+      this.doc.url = process.env.VUE_APP_BASE_API + "/file/file/uploadFile?linkId=" + this.file.queryParams.linkId + "&linkName=" + this.file.queryParams.linkName;
+    },
+    handleFileRemove(row) {
+      delFile(row.id).then(res => {
+        this.$modal.msgSuccess("删除成功");
+        this.getFileList();
+      });
+    },
+    /** 查询培训签字列表 */
+    getList() {
+      this.loading = true;
+      listRoster(this.queryParams).then(response => {
+        this.rosterList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        topic: null,
+        material: null,
+        trainer: null,
+        participants: null,
+        trainDate: null,
+        teams: null,
+        content: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加培训签字";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getRoster(id).then(response => {
+        if (response.data.teams) {
+          response.data.teams = response.data.teams.split(',');
+        }
+        this.trainDate[0] = response.data.trainStartDate;
+        this.trainDate[1] = response.data.trainEndDate;
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改培训签字";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.trainDate) {
+            this.form.trainStartDate = this.trainDate[0];
+            this.form.trainEndDate = this.trainDate[1];
+          }
+          if (this.form.teams)
+            this.form.teams = this.form.teams.join(',')
+          if (this.form.id != null) {
+            updateRoster(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRoster(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除培训签字编号为"' + ids + '"的数据项?').then(function () {
+        return delRoster(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('training/roster/export', {
+        ...this.queryParams
+      }, `roster_${new Date().getTime()}.xlsx`)
+    },
+    /** 生成报告按钮操作 */
+    getReport(row) {
+      // this.meetingId = row.id
+      // console.log(row.id)
+      // this.$nextTick(() => {
+      //   this.$refs['downloadFileForm'].submit()
+      // })
+      wordView(row.id).then(res => {
+        window.open(process.env.VUE_APP_BASE_API + res.msg)
+      })
+    },
+  }
+};
+</script>