Pārlūkot izejas kodu

feat(issue): 添加问题清单和行动计划、CBPB工艺事件清单功能- 新增问题清单和行动计划、CBPB工艺事件清单的前端页面
- 实现问题清单和行动计划、CBPB工艺事件清单的增删改查功能
- 添加问题清单和行动计划、CBPB工艺事件清单的后端接口
-优化员工管理页面,增加新单位类型员工查询

jiangbiao 3 nedēļas atpakaļ
vecāks
revīzija
a539a07864

+ 103 - 0
master/src/main/java/com/ruoyi/project/issue/controller/TPlantIssuelistController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.issue.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.issue.domain.TPlantIssuelist;
+import com.ruoyi.project.issue.service.ITPlantIssuelistService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * 问题清单和行动计划Controller
+ *
+ * @author ssy
+ * @date 2025-08-20
+ */
+@RestController
+@RequestMapping("/issue/issuelist")
+public class TPlantIssuelistController extends BaseController
+{
+    @Autowired
+    private ITPlantIssuelistService tPlantIssuelistService;
+
+    /**
+     * 查询问题清单和行动计划列表
+     */
+    @PreAuthorize("@ss.hasPermi('issue:issuelist:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TPlantIssuelist tPlantIssuelist)
+    {
+        startPage();
+        List<TPlantIssuelist> list = tPlantIssuelistService.selectTPlantIssuelistList(tPlantIssuelist);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出问题清单和行动计划列表
+     */
+    @PreAuthorize("@ss.hasPermi('issue:issuelist:export')")
+    @Log(title = "问题清单和行动计划", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TPlantIssuelist tPlantIssuelist)
+    {
+        List<TPlantIssuelist> list = tPlantIssuelistService.selectTPlantIssuelistList(tPlantIssuelist);
+        ExcelUtil<TPlantIssuelist> util = new ExcelUtil<TPlantIssuelist>(TPlantIssuelist.class);
+        return util.exportExcel(list, "issuelist");
+    }
+
+    /**
+     * 获取问题清单和行动计划详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('issue:issuelist:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tPlantIssuelistService.selectTPlantIssuelistById(id));
+    }
+
+    /**
+     * 新增问题清单和行动计划
+     */
+    @PreAuthorize("@ss.hasPermi('issue:issuelist:add')")
+    @Log(title = "问题清单和行动计划", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TPlantIssuelist tPlantIssuelist)
+    {
+        return toAjax(tPlantIssuelistService.insertTPlantIssuelist(tPlantIssuelist));
+    }
+
+    /**
+     * 修改问题清单和行动计划
+     */
+    @PreAuthorize("@ss.hasPermi('issue:issuelist:edit')")
+    @Log(title = "问题清单和行动计划", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TPlantIssuelist tPlantIssuelist)
+    {
+        return toAjax(tPlantIssuelistService.updateTPlantIssuelist(tPlantIssuelist));
+    }
+
+    /**
+     * 删除问题清单和行动计划
+     */
+    @PreAuthorize("@ss.hasPermi('issue:issuelist:remove')")
+    @Log(title = "问题清单和行动计划", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tPlantIssuelistService.deleteTPlantIssuelistByIds(ids));
+    }
+}

+ 103 - 0
master/src/main/java/com/ruoyi/project/issue/controller/TPlantOperationlistController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.issue.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.issue.domain.TPlantOperationlist;
+import com.ruoyi.project.issue.service.ITPlantOperationlistService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+
+/**
+ * CBPB工艺事件清单Controller
+ *
+ * @author ssy
+ * @date 2025-08-20
+ */
+@RestController
+@RequestMapping("/issue/operationlist")
+public class TPlantOperationlistController extends BaseController
+{
+    @Autowired
+    private ITPlantOperationlistService tPlantOperationlistService;
+
+    /**
+     * 查询CBPB工艺事件清单列表
+     */
+    @PreAuthorize("@ss.hasPermi('issue:operationlist:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TPlantOperationlist tPlantOperationlist)
+    {
+        startPage();
+        List<TPlantOperationlist> list = tPlantOperationlistService.selectTPlantOperationlistList(tPlantOperationlist);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出CBPB工艺事件清单列表
+     */
+    @PreAuthorize("@ss.hasPermi('issue:operationlist:export')")
+    @Log(title = "CBPB工艺事件清单", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TPlantOperationlist tPlantOperationlist)
+    {
+        List<TPlantOperationlist> list = tPlantOperationlistService.selectTPlantOperationlistList(tPlantOperationlist);
+        ExcelUtil<TPlantOperationlist> util = new ExcelUtil<TPlantOperationlist>(TPlantOperationlist.class);
+        return util.exportExcel(list, "operationlist");
+    }
+
+    /**
+     * 获取CBPB工艺事件清单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('issue:operationlist:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tPlantOperationlistService.selectTPlantOperationlistById(id));
+    }
+
+    /**
+     * 新增CBPB工艺事件清单
+     */
+    @PreAuthorize("@ss.hasPermi('issue:operationlist:add')")
+    @Log(title = "CBPB工艺事件清单", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TPlantOperationlist tPlantOperationlist)
+    {
+        return toAjax(tPlantOperationlistService.insertTPlantOperationlist(tPlantOperationlist));
+    }
+
+    /**
+     * 修改CBPB工艺事件清单
+     */
+    @PreAuthorize("@ss.hasPermi('issue:operationlist:edit')")
+    @Log(title = "CBPB工艺事件清单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TPlantOperationlist tPlantOperationlist)
+    {
+        return toAjax(tPlantOperationlistService.updateTPlantOperationlist(tPlantOperationlist));
+    }
+
+    /**
+     * 删除CBPB工艺事件清单
+     */
+    @PreAuthorize("@ss.hasPermi('issue:operationlist:remove')")
+    @Log(title = "CBPB工艺事件清单", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tPlantOperationlistService.deleteTPlantOperationlistByIds(ids));
+    }
+}

+ 302 - 0
master/src/main/java/com/ruoyi/project/issue/domain/TPlantIssuelist.java

@@ -0,0 +1,302 @@
+package com.ruoyi.project.issue.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 问题清单和行动计划对象 t_plant_issuelist
+ *
+ * @author ssy
+ * @date 2025-08-20
+ */
+public class TPlantIssuelist extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 归属装置 */
+    @Excel(name = "归属装置")
+    private String plant;
+
+    /** 区域 */
+    @Excel(name = "区域")
+    private String area;
+
+    /** 提出日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "提出日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date identifiedDate;
+
+    /** 问题来源 */
+    @Excel(name = "问题来源")
+    private String issueSource;
+
+    /** 识别出的问题 */
+    @Excel(name = "识别出的问题")
+    private String issueIdentified;
+
+    /** 要采取的措施 */
+    @Excel(name = "要采取的措施")
+    private String actionsTaken;
+
+    /** 问题类别 */
+    @Excel(name = "问题类别")
+    private String issueClass;
+
+    /** 负责人员 */
+    @Excel(name = "负责人员")
+    private String responsiblePerson;
+    private String responsibleUnit;
+
+    /** 当前状态 */
+    @Excel(name = "当前状态")
+    private String currentStates;
+
+    /** 完成日期 */
+    @Excel(name = "完成日期")
+    private String completionDate;
+
+    /** 未按期完成时,所要采取的额外(临时)安全措施 */
+    @Excel(name = "未按期完成时,所要采取的额外", readConverterExp = "临=时")
+    private String additionalDeadline;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlant(String plant)
+    {
+        this.plant = plant;
+    }
+
+    public String getPlant()
+    {
+        return plant;
+    }
+    public void setArea(String area)
+    {
+        this.area = area;
+    }
+
+    public String getArea()
+    {
+        return area;
+    }
+    public void setIdentifiedDate(Date identifiedDate)
+    {
+        this.identifiedDate = identifiedDate;
+    }
+
+    public Date getIdentifiedDate()
+    {
+        return identifiedDate;
+    }
+    public void setIssueSource(String issueSource)
+    {
+        this.issueSource = issueSource;
+    }
+
+    public String getIssueSource()
+    {
+        return issueSource;
+    }
+    public void setIssueIdentified(String issueIdentified)
+    {
+        this.issueIdentified = issueIdentified;
+    }
+
+    public String getIssueIdentified()
+    {
+        return issueIdentified;
+    }
+    public void setActionsTaken(String actionsTaken)
+    {
+        this.actionsTaken = actionsTaken;
+    }
+
+    public String getActionsTaken()
+    {
+        return actionsTaken;
+    }
+    public void setIssueClass(String issueClass)
+    {
+        this.issueClass = issueClass;
+    }
+
+    public String getIssueClass()
+    {
+        return issueClass;
+    }
+    public void setResponsiblePerson(String responsiblePerson)
+    {
+        this.responsiblePerson = responsiblePerson;
+    }
+
+    public String getResponsiblePerson()
+    {
+        return responsiblePerson;
+    }
+    public void setCurrentStates(String currentStates)
+    {
+        this.currentStates = currentStates;
+    }
+
+    public String getCurrentStates()
+    {
+        return currentStates;
+    }
+    public void setCompletionDate(String completionDate)
+    {
+        this.completionDate = completionDate;
+    }
+
+    public String getCompletionDate()
+    {
+        return completionDate;
+    }
+    public void setAdditionalDeadline(String additionalDeadline)
+    {
+        this.additionalDeadline = additionalDeadline;
+    }
+
+    public String getAdditionalDeadline()
+    {
+        return additionalDeadline;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    public String getResponsibleUnit() {
+        return responsibleUnit;
+    }
+
+    public void setResponsibleUnit(String responsibleUnit) {
+        this.responsibleUnit = responsibleUnit;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plant", getPlant())
+            .append("area", getArea())
+            .append("identifiedDate", getIdentifiedDate())
+            .append("issueSource", getIssueSource())
+            .append("issueIdentified", getIssueIdentified())
+            .append("actionsTaken", getActionsTaken())
+            .append("issueClass", getIssueClass())
+            .append("responsiblePerson", getResponsiblePerson())
+            .append("currentStates", getCurrentStates())
+            .append("completionDate", getCompletionDate())
+            .append("additionalDeadline", getAdditionalDeadline())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 208 - 0
master/src/main/java/com/ruoyi/project/issue/domain/TPlantOperationlist.java

@@ -0,0 +1,208 @@
+package com.ruoyi.project.issue.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * CBPB工艺事件清单对象 t_plant_operationlist
+ *
+ * @author ssy
+ * @date 2025-08-20
+ */
+public class TPlantOperationlist extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 装置 */
+    @Excel(name = "装置")
+    private String plant;
+
+    /** 班组 */
+    @Excel(name = "班组")
+    private String shiftClass;
+
+    /** 事件描述 */
+    @Excel(name = "事件描述")
+    private String incidentDescription;
+
+    /** 原因 */
+    @Excel(name = "原因")
+    private String causeRes;
+
+    /** 措施 */
+    @Excel(name = "措施")
+    private String coutermeasures;
+
+    /** 删除状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlant(String plant)
+    {
+        this.plant = plant;
+    }
+
+    public String getPlant()
+    {
+        return plant;
+    }
+    public void setShiftClass(String shiftClass)
+    {
+        this.shiftClass = shiftClass;
+    }
+
+    public String getShiftClass()
+    {
+        return shiftClass;
+    }
+    public void setIncidentDescription(String incidentDescription)
+    {
+        this.incidentDescription = incidentDescription;
+    }
+
+    public String getIncidentDescription()
+    {
+        return incidentDescription;
+    }
+    public void setCauseRes(String causeRes)
+    {
+        this.causeRes = causeRes;
+    }
+
+    public String getCauseRes()
+    {
+        return causeRes;
+    }
+    public void setCoutermeasures(String coutermeasures)
+    {
+        this.coutermeasures = coutermeasures;
+    }
+
+    public String getCoutermeasures()
+    {
+        return coutermeasures;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plant", getPlant())
+            .append("shiftClass", getShiftClass())
+            .append("incidentDescription", getIncidentDescription())
+            .append("causeRes", getCauseRes())
+            .append("coutermeasures", getCoutermeasures())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/issue/mapper/TPlantIssuelistMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.issue.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.issue.domain.TPlantIssuelist;
+
+/**
+ * 问题清单和行动计划Mapper接口
+ * 
+ * @author ssy
+ * @date 2025-08-20
+ */
+public interface TPlantIssuelistMapper 
+{
+    /**
+     * 查询问题清单和行动计划
+     * 
+     * @param id 问题清单和行动计划ID
+     * @return 问题清单和行动计划
+     */
+    public TPlantIssuelist selectTPlantIssuelistById(Long id);
+
+    /**
+     * 查询问题清单和行动计划列表
+     * 
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 问题清单和行动计划集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TPlantIssuelist> selectTPlantIssuelistList(TPlantIssuelist tPlantIssuelist);
+
+    /**
+     * 新增问题清单和行动计划
+     * 
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 结果
+     */
+    public int insertTPlantIssuelist(TPlantIssuelist tPlantIssuelist);
+
+    /**
+     * 修改问题清单和行动计划
+     * 
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 结果
+     */
+    public int updateTPlantIssuelist(TPlantIssuelist tPlantIssuelist);
+
+    /**
+     * 删除问题清单和行动计划
+     * 
+     * @param id 问题清单和行动计划ID
+     * @return 结果
+     */
+    public int deleteTPlantIssuelistById(Long id);
+
+    /**
+     * 批量删除问题清单和行动计划
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTPlantIssuelistByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/issue/mapper/TPlantOperationlistMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.issue.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.issue.domain.TPlantOperationlist;
+
+/**
+ * CBPB工艺事件清单Mapper接口
+ * 
+ * @author ssy
+ * @date 2025-08-20
+ */
+public interface TPlantOperationlistMapper 
+{
+    /**
+     * 查询CBPB工艺事件清单
+     * 
+     * @param id CBPB工艺事件清单ID
+     * @return CBPB工艺事件清单
+     */
+    public TPlantOperationlist selectTPlantOperationlistById(Long id);
+
+    /**
+     * 查询CBPB工艺事件清单列表
+     * 
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return CBPB工艺事件清单集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TPlantOperationlist> selectTPlantOperationlistList(TPlantOperationlist tPlantOperationlist);
+
+    /**
+     * 新增CBPB工艺事件清单
+     * 
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return 结果
+     */
+    public int insertTPlantOperationlist(TPlantOperationlist tPlantOperationlist);
+
+    /**
+     * 修改CBPB工艺事件清单
+     * 
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return 结果
+     */
+    public int updateTPlantOperationlist(TPlantOperationlist tPlantOperationlist);
+
+    /**
+     * 删除CBPB工艺事件清单
+     * 
+     * @param id CBPB工艺事件清单ID
+     * @return 结果
+     */
+    public int deleteTPlantOperationlistById(Long id);
+
+    /**
+     * 批量删除CBPB工艺事件清单
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTPlantOperationlistByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/issue/service/ITPlantIssuelistService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.issue.service;
+
+import java.util.List;
+import com.ruoyi.project.issue.domain.TPlantIssuelist;
+
+/**
+ * 问题清单和行动计划Service接口
+ * 
+ * @author ssy
+ * @date 2025-08-20
+ */
+public interface ITPlantIssuelistService 
+{
+    /**
+     * 查询问题清单和行动计划
+     * 
+     * @param id 问题清单和行动计划ID
+     * @return 问题清单和行动计划
+     */
+    public TPlantIssuelist selectTPlantIssuelistById(Long id);
+
+    /**
+     * 查询问题清单和行动计划列表
+     * 
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 问题清单和行动计划集合
+     */
+    public List<TPlantIssuelist> selectTPlantIssuelistList(TPlantIssuelist tPlantIssuelist);
+
+    /**
+     * 新增问题清单和行动计划
+     * 
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 结果
+     */
+    public int insertTPlantIssuelist(TPlantIssuelist tPlantIssuelist);
+
+    /**
+     * 修改问题清单和行动计划
+     * 
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 结果
+     */
+    public int updateTPlantIssuelist(TPlantIssuelist tPlantIssuelist);
+
+    /**
+     * 批量删除问题清单和行动计划
+     * 
+     * @param ids 需要删除的问题清单和行动计划ID
+     * @return 结果
+     */
+    public int deleteTPlantIssuelistByIds(Long[] ids);
+
+    /**
+     * 删除问题清单和行动计划信息
+     * 
+     * @param id 问题清单和行动计划ID
+     * @return 结果
+     */
+    public int deleteTPlantIssuelistById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/issue/service/ITPlantOperationlistService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.issue.service;
+
+import java.util.List;
+import com.ruoyi.project.issue.domain.TPlantOperationlist;
+
+/**
+ * CBPB工艺事件清单Service接口
+ * 
+ * @author ssy
+ * @date 2025-08-20
+ */
+public interface ITPlantOperationlistService 
+{
+    /**
+     * 查询CBPB工艺事件清单
+     * 
+     * @param id CBPB工艺事件清单ID
+     * @return CBPB工艺事件清单
+     */
+    public TPlantOperationlist selectTPlantOperationlistById(Long id);
+
+    /**
+     * 查询CBPB工艺事件清单列表
+     * 
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return CBPB工艺事件清单集合
+     */
+    public List<TPlantOperationlist> selectTPlantOperationlistList(TPlantOperationlist tPlantOperationlist);
+
+    /**
+     * 新增CBPB工艺事件清单
+     * 
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return 结果
+     */
+    public int insertTPlantOperationlist(TPlantOperationlist tPlantOperationlist);
+
+    /**
+     * 修改CBPB工艺事件清单
+     * 
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return 结果
+     */
+    public int updateTPlantOperationlist(TPlantOperationlist tPlantOperationlist);
+
+    /**
+     * 批量删除CBPB工艺事件清单
+     * 
+     * @param ids 需要删除的CBPB工艺事件清单ID
+     * @return 结果
+     */
+    public int deleteTPlantOperationlistByIds(Long[] ids);
+
+    /**
+     * 删除CBPB工艺事件清单信息
+     * 
+     * @param id CBPB工艺事件清单ID
+     * @return 结果
+     */
+    public int deleteTPlantOperationlistById(Long id);
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/issue/service/impl/TPlantIssuelistServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.issue.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.issue.mapper.TPlantIssuelistMapper;
+import com.ruoyi.project.issue.domain.TPlantIssuelist;
+import com.ruoyi.project.issue.service.ITPlantIssuelistService;
+
+/**
+ * 问题清单和行动计划Service业务层处理
+ *
+ * @author ssy
+ * @date 2025-08-20
+ */
+@Service
+public class TPlantIssuelistServiceImpl implements ITPlantIssuelistService
+{
+    @Autowired
+    private TPlantIssuelistMapper tPlantIssuelistMapper;
+
+    /**
+     * 查询问题清单和行动计划
+     *
+     * @param id 问题清单和行动计划ID
+     * @return 问题清单和行动计划
+     */
+    @Override
+    public TPlantIssuelist selectTPlantIssuelistById(Long id)
+    {
+        return tPlantIssuelistMapper.selectTPlantIssuelistById(id);
+    }
+
+    /**
+     * 查询问题清单和行动计划列表
+     *
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 问题清单和行动计划
+     */
+    @Override
+    public List<TPlantIssuelist> selectTPlantIssuelistList(TPlantIssuelist tPlantIssuelist)
+    {
+        return tPlantIssuelistMapper.selectTPlantIssuelistList(tPlantIssuelist);
+    }
+
+    /**
+     * 新增问题清单和行动计划
+     *
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 结果
+     */
+    @Override
+    public int insertTPlantIssuelist(TPlantIssuelist tPlantIssuelist)
+    {
+        return tPlantIssuelistMapper.insertTPlantIssuelist(tPlantIssuelist);
+    }
+
+    /**
+     * 修改问题清单和行动计划
+     *
+     * @param tPlantIssuelist 问题清单和行动计划
+     * @return 结果
+     */
+    @Override
+    public int updateTPlantIssuelist(TPlantIssuelist tPlantIssuelist)
+    {
+        return tPlantIssuelistMapper.updateTPlantIssuelist(tPlantIssuelist);
+    }
+
+    /**
+     * 批量删除问题清单和行动计划
+     *
+     * @param ids 需要删除的问题清单和行动计划ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTPlantIssuelistByIds(Long[] ids)
+    {
+        return tPlantIssuelistMapper.deleteTPlantIssuelistByIds(ids);
+    }
+
+    /**
+     * 删除问题清单和行动计划信息
+     *
+     * @param id 问题清单和行动计划ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTPlantIssuelistById(Long id)
+    {
+        return tPlantIssuelistMapper.deleteTPlantIssuelistById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/issue/service/impl/TPlantOperationlistServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.issue.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.issue.mapper.TPlantOperationlistMapper;
+import com.ruoyi.project.issue.domain.TPlantOperationlist;
+import com.ruoyi.project.issue.service.ITPlantOperationlistService;
+
+/**
+ * CBPB工艺事件清单Service业务层处理
+ *
+ * @author ssy
+ * @date 2025-08-20
+ */
+@Service
+public class TPlantOperationlistServiceImpl implements ITPlantOperationlistService
+{
+    @Autowired
+    private TPlantOperationlistMapper tPlantOperationlistMapper;
+
+    /**
+     * 查询CBPB工艺事件清单
+     *
+     * @param id CBPB工艺事件清单ID
+     * @return CBPB工艺事件清单
+     */
+    @Override
+    public TPlantOperationlist selectTPlantOperationlistById(Long id)
+    {
+        return tPlantOperationlistMapper.selectTPlantOperationlistById(id);
+    }
+
+    /**
+     * 查询CBPB工艺事件清单列表
+     *
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return CBPB工艺事件清单
+     */
+    @Override
+    public List<TPlantOperationlist> selectTPlantOperationlistList(TPlantOperationlist tPlantOperationlist)
+    {
+        return tPlantOperationlistMapper.selectTPlantOperationlistList(tPlantOperationlist);
+    }
+
+    /**
+     * 新增CBPB工艺事件清单
+     *
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return 结果
+     */
+    @Override
+    public int insertTPlantOperationlist(TPlantOperationlist tPlantOperationlist)
+    {
+        return tPlantOperationlistMapper.insertTPlantOperationlist(tPlantOperationlist);
+    }
+
+    /**
+     * 修改CBPB工艺事件清单
+     *
+     * @param tPlantOperationlist CBPB工艺事件清单
+     * @return 结果
+     */
+    @Override
+    public int updateTPlantOperationlist(TPlantOperationlist tPlantOperationlist)
+    {
+        return tPlantOperationlistMapper.updateTPlantOperationlist(tPlantOperationlist);
+    }
+
+    /**
+     * 批量删除CBPB工艺事件清单
+     *
+     * @param ids 需要删除的CBPB工艺事件清单ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTPlantOperationlistByIds(Long[] ids)
+    {
+        return tPlantOperationlistMapper.deleteTPlantOperationlistByIds(ids);
+    }
+
+    /**
+     * 删除CBPB工艺事件清单信息
+     *
+     * @param id CBPB工艺事件清单ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTPlantOperationlistById(Long id)
+    {
+        return tPlantOperationlistMapper.deleteTPlantOperationlistById(id);
+    }
+}

+ 156 - 0
master/src/main/resources/mybatis/issue/TPlantIssuelistMapper.xml

@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.issue.mapper.TPlantIssuelistMapper">
+    
+    <resultMap type="TPlantIssuelist" id="TPlantIssuelistResult">
+        <result property="id"    column="id"    />
+        <result property="plant"    column="plant"    />
+        <result property="area"    column="area"    />
+        <result property="identifiedDate"    column="identified_date"    />
+        <result property="issueSource"    column="issue_source"    />
+        <result property="issueIdentified"    column="issue_identified"    />
+        <result property="actionsTaken"    column="actions_taken"    />
+        <result property="issueClass"    column="issue_class"    />
+        <result property="responsiblePerson"    column="responsible_person"    />
+        <result property="responsibleUnit"    column="responsible_unit"    />
+        <result property="currentStates"    column="current_states"    />
+        <result property="completionDate"    column="completion_date"    />
+        <result property="additionalDeadline"    column="additional_deadline"    />
+        <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="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTPlantIssuelistVo">
+        select d.id, d.plant, d.area, d.identified_date, d.issue_source, d.issue_identified, d.actions_taken, d.issue_class, d.responsible_person,d.responsible_unit, d.current_states, d.completion_date, d.additional_deadline, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_plant_issuelist d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTPlantIssuelistList" parameterType="TPlantIssuelist" resultMap="TPlantIssuelistResult">
+        <include refid="selectTPlantIssuelistVo"/>
+        <where>  
+            <if test="plant != null  and plant != ''"> and plant = #{plant}</if>
+            <if test="area != null  and area != ''"> and area = #{area}</if>
+            <if test="identifiedDate != null "> and identified_date = #{identifiedDate}</if>
+            <if test="issueSource != null  and issueSource != ''"> and issue_source = #{issueSource}</if>
+            <if test="issueIdentified != null  and issueIdentified != ''"> and issue_identified = #{issueIdentified}</if>
+            <if test="actionsTaken != null  and actionsTaken != ''"> and actions_taken = #{actionsTaken}</if>
+            <if test="issueClass != null  and issueClass != ''"> and issue_class = #{issueClass}</if>
+            <if test="responsiblePerson != null  and responsiblePerson != ''"> and responsible_person = #{responsiblePerson}</if>
+            <if test="responsibleUnit != null  and responsibleUnit != ''"> and responsible_unit = #{responsibleUnit}</if>
+            <if test="currentStates != null  and currentStates != ''"> and current_states = #{currentStates}</if>
+            <if test="completionDate != null  and completionDate != ''"> and completion_date = #{completionDate}</if>
+            <if test="additionalDeadline != null  and additionalDeadline != ''"> and additional_deadline = #{additionalDeadline}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTPlantIssuelistById" parameterType="Long" resultMap="TPlantIssuelistResult">
+        <include refid="selectTPlantIssuelistVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTPlantIssuelist" parameterType="TPlantIssuelist">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_plant_issuelist.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_plant_issuelist
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plant != null">plant,</if>
+            <if test="area != null">area,</if>
+            <if test="identifiedDate != null">identified_date,</if>
+            <if test="issueSource != null">issue_source,</if>
+            <if test="issueIdentified != null">issue_identified,</if>
+            <if test="actionsTaken != null">actions_taken,</if>
+            <if test="issueClass != null">issue_class,</if>
+            <if test="responsiblePerson != null">responsible_person,</if>
+            <if test="responsibleUnit != null">responsible_unit,</if>
+            <if test="currentStates != null">current_states,</if>
+            <if test="completionDate != null">completion_date,</if>
+            <if test="additionalDeadline != null">additional_deadline,</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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plant != null">#{plant},</if>
+            <if test="area != null">#{area},</if>
+            <if test="identifiedDate != null">#{identifiedDate},</if>
+            <if test="issueSource != null">#{issueSource},</if>
+            <if test="issueIdentified != null">#{issueIdentified},</if>
+            <if test="actionsTaken != null">#{actionsTaken},</if>
+            <if test="issueClass != null">#{issueClass},</if>
+            <if test="responsiblePerson != null">#{responsiblePerson},</if>
+            <if test="responsibleUnit != null">#{responsibleUnit},</if>
+            <if test="currentStates != null">#{currentStates},</if>
+            <if test="completionDate != null">#{completionDate},</if>
+            <if test="additionalDeadline != null">#{additionalDeadline},</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>
+         </trim>
+    </insert>
+
+    <update id="updateTPlantIssuelist" parameterType="TPlantIssuelist">
+        update t_plant_issuelist
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plant != null">plant = #{plant},</if>
+            <if test="area != null">area = #{area},</if>
+            <if test="identifiedDate != null">identified_date = #{identifiedDate},</if>
+            <if test="issueSource != null">issue_source = #{issueSource},</if>
+            <if test="issueIdentified != null">issue_identified = #{issueIdentified},</if>
+            <if test="actionsTaken != null">actions_taken = #{actionsTaken},</if>
+            <if test="issueClass != null">issue_class = #{issueClass},</if>
+            <if test="responsiblePerson != null">responsible_person = #{responsiblePerson},</if>
+            <if test="responsibleUnit != null">responsible_unit = #{responsibleUnit},</if>
+            <if test="currentStates != null">current_states = #{currentStates},</if>
+            <if test="completionDate != null">completion_date = #{completionDate},</if>
+            <if test="additionalDeadline != null">additional_deadline = #{additionalDeadline},</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>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTPlantIssuelistById" parameterType="Long">
+        update t_plant_issuelist set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTPlantIssuelistByIds" parameterType="String">
+        update t_plant_issuelist set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 121 - 0
master/src/main/resources/mybatis/issue/TPlantOperationlistMapper.xml

@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.issue.mapper.TPlantOperationlistMapper">
+    
+    <resultMap type="TPlantOperationlist" id="TPlantOperationlistResult">
+        <result property="id"    column="id"    />
+        <result property="plant"    column="plant"    />
+        <result property="shiftClass"    column="shift_class"    />
+        <result property="incidentDescription"    column="incident_description"    />
+        <result property="causeRes"    column="cause_res"    />
+        <result property="coutermeasures"    column="coutermeasures"    />
+        <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="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTPlantOperationlistVo">
+        select d.id, d.plant, d.shift_class, d.incident_description, d.cause_res, d.coutermeasures, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks ,s.dept_name from t_plant_operationlist d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTPlantOperationlistList" parameterType="TPlantOperationlist" resultMap="TPlantOperationlistResult">
+        <include refid="selectTPlantOperationlistVo"/>
+        <where>  
+            <if test="plant != null  and plant != ''"> and plant = #{plant}</if>
+            <if test="shiftClass != null  and shiftClass != ''"> and shift_class = #{shiftClass}</if>
+            <if test="incidentDescription != null  and incidentDescription != ''"> and incident_description = #{incidentDescription}</if>
+            <if test="causeRes != null  and causeRes != ''"> and cause_res = #{causeRes}</if>
+            <if test="coutermeasures != null  and coutermeasures != ''"> and coutermeasures = #{coutermeasures}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTPlantOperationlistById" parameterType="Long" resultMap="TPlantOperationlistResult">
+        <include refid="selectTPlantOperationlistVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTPlantOperationlist" parameterType="TPlantOperationlist">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_plant_operationlist.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_plant_operationlist
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plant != null">plant,</if>
+            <if test="shiftClass != null">shift_class,</if>
+            <if test="incidentDescription != null">incident_description,</if>
+            <if test="causeRes != null">cause_res,</if>
+            <if test="coutermeasures != null">coutermeasures,</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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plant != null">#{plant},</if>
+            <if test="shiftClass != null">#{shiftClass},</if>
+            <if test="incidentDescription != null">#{incidentDescription},</if>
+            <if test="causeRes != null">#{causeRes},</if>
+            <if test="coutermeasures != null">#{coutermeasures},</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>
+         </trim>
+    </insert>
+
+    <update id="updateTPlantOperationlist" parameterType="TPlantOperationlist">
+        update t_plant_operationlist
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plant != null">plant = #{plant},</if>
+            <if test="shiftClass != null">shift_class = #{shiftClass},</if>
+            <if test="incidentDescription != null">incident_description = #{incidentDescription},</if>
+            <if test="causeRes != null">cause_res = #{causeRes},</if>
+            <if test="coutermeasures != null">coutermeasures = #{coutermeasures},</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>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTPlantOperationlistById" parameterType="Long">
+        update t_plant_operationlist set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTPlantOperationlistByIds" parameterType="String">
+        update t_plant_operationlist set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 53 - 0
ui/src/api/issue/issuelist.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询问题清单和行动计划列表
+export function listIssuelist(query) {
+  return request({
+    url: '/issue/issuelist/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询问题清单和行动计划详细
+export function getIssuelist(id) {
+  return request({
+    url: '/issue/issuelist/' + id,
+    method: 'get'
+  })
+}
+
+// 新增问题清单和行动计划
+export function addIssuelist(data) {
+  return request({
+    url: '/issue/issuelist',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改问题清单和行动计划
+export function updateIssuelist(data) {
+  return request({
+    url: '/issue/issuelist',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除问题清单和行动计划
+export function delIssuelist(id) {
+  return request({
+    url: '/issue/issuelist/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出问题清单和行动计划
+export function exportIssuelist(query) {
+  return request({
+    url: '/issue/issuelist/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
ui/src/api/issue/operationlist.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询CBPB工艺事件清单列表
+export function listOperationlist(query) {
+  return request({
+    url: '/issue/operationlist/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询CBPB工艺事件清单详细
+export function getOperationlist(id) {
+  return request({
+    url: '/issue/operationlist/' + id,
+    method: 'get'
+  })
+}
+
+// 新增CBPB工艺事件清单
+export function addOperationlist(data) {
+  return request({
+    url: '/issue/operationlist',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改CBPB工艺事件清单
+export function updateOperationlist(data) {
+  return request({
+    url: '/issue/operationlist',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除CBPB工艺事件清单
+export function delOperationlist(id) {
+  return request({
+    url: '/issue/operationlist/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出CBPB工艺事件清单
+export function exportOperationlist(query) {
+  return request({
+    url: '/issue/operationlist/export',
+    method: 'get',
+    params: query
+  })
+}

+ 484 - 0
ui/src/views/issue/issuelist/index.vue

@@ -0,0 +1,484 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="归属装置" prop="plant">
+        <el-select v-model="queryParams.plant" placeholder="请选择装置" clearable size="small" style="width: 240px">
+          <el-option value="BD">BD</el-option>
+          <el-option value="IB">IB</el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="区域" prop="area">
+        <el-input
+          v-model="queryParams.area"
+          placeholder="请输入区域"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="提出日期" prop="identifiedDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+                        v-model="queryParams.identifiedDate"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择提出日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" 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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['issue:issuelist:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['issue:issuelist:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['issue:issuelist:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['issue:issuelist:edit']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['issue:issuelist:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="issuelistList" @selection-change="handleSelectionChange" :height="clientHeight"
+              border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="归属装置" align="center" prop="plant" :show-overflow-tooltip="true"/>
+      <el-table-column label="区域" align="center" prop="area" :show-overflow-tooltip="true"/>
+      <el-table-column label="提出日期" align="center" prop="identifiedDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.identifiedDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="问题来源" align="center" prop="issueSource" :show-overflow-tooltip="true"/>
+      <el-table-column label="识别出的问题" align="center" prop="issueIdentified" :show-overflow-tooltip="true"/>
+      <el-table-column label="要采取的措施" align="center" prop="actionsTaken" :show-overflow-tooltip="true"/>
+      <el-table-column label="问题类别" align="center" prop="issueClass" :show-overflow-tooltip="true"/>
+      <el-table-column label="负责部门" align="center" prop="responsibleUnit" :show-overflow-tooltip="true"/>
+      <el-table-column label="负责人员" align="center" prop="responsiblePerson" :show-overflow-tooltip="true"/>
+      <el-table-column label="当前状态" align="center" prop="currentStates" :show-overflow-tooltip="true"/>
+      <el-table-column label="完成日期" align="center" prop="completionDate" :show-overflow-tooltip="true"/>
+      <el-table-column label="未按期完成时,所要采取的额外" align="center" prop="additionalDeadline"
+                       :show-overflow-tooltip="true"/>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['issue:issuelist:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['issue:issuelist: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 :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="180px">
+        <el-form-item label="归属装置" prop="plant">
+          <el-select v-model="form.plant" placeholder="请选择装置" clearable size="small" style="width: 240px">
+            <el-option value="BD">BD</el-option>
+            <el-option value="IB">IB</el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="区域" prop="area">
+          <el-input v-model="form.area" placeholder="请输入区域"/>
+        </el-form-item>
+        <el-form-item label="提出日期" prop="identifiedDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.identifiedDate"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择提出日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="问题来源" prop="issueSource">
+          <el-input v-model="form.issueSource" placeholder="请输入问题来源"/>
+        </el-form-item>
+        <el-form-item label="识别出的问题" prop="issueIdentified">
+          <el-input v-model="form.issueIdentified" placeholder="请输入识别出的问题"/>
+        </el-form-item>
+        <el-form-item label="要采取的措施" prop="actionsTaken">
+          <el-input v-model="form.actionsTaken" placeholder="请输入要采取的措施"/>
+        </el-form-item>
+        <el-form-item label="问题类别" prop="issueClass">
+          <el-input v-model="form.issueClass" placeholder="请输入问题类别"/>
+        </el-form-item>
+        <el-form-item label="负责部门 " prop="responsibleUnit">
+          <el-input v-model="form.responsibleUnit" placeholder="请输入负责人员"/>
+        </el-form-item>
+        <el-form-item label="负责人员" prop="responsiblePerson">
+          <el-input v-model="form.responsiblePerson" placeholder="请输入负责人员"/>
+        </el-form-item>
+        <el-form-item label="当前状态" prop="currentStates">
+          <el-input v-model="form.currentStates" placeholder="请输入当前状态"/>
+        </el-form-item>
+        <el-form-item label="完成日期" prop="completionDate">
+          <el-input v-model="form.completionDate" placeholder="请输入完成日期"/>
+        </el-form-item>
+        <el-form-item label="未按期完成时,所要采取的额外" prop="additionalDeadline">
+          <el-input v-model="form.additionalDeadline" placeholder="请输入未按期完成时,所要采取的额外"/>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" 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 :title="upload.title" :visible.sync="upload.open" width="500px" append-to-body>
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url + '?updateSupport=' + upload.updateSupport"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upload.updateSupport"/>
+          是否更新已经存在的用户数据
+          <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+        </div>
+        <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addIssuelist,
+  delIssuelist,
+  exportIssuelist,
+  getIssuelist,
+  importTemplate,
+  listIssuelist,
+  updateIssuelist
+} from "@/api/issue/issuelist";
+import {treeselect} from "@/api/system/dept";
+import {getToken} from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Issuelist",
+  components: {Treeselect},
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 问题清单和行动计划表格数据
+      issuelistList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight: 300,
+      // 是否显示弹出层
+      open: false,
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/issue/issuelist/importData"
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        plant: null,
+        area: null,
+        identifiedDate: null,
+        issueSource: null,
+        issueIdentified: null,
+        actionsTaken: null,
+        issueClass: null,
+        responsiblePerson: null,
+        responsibleUnit: null,
+        currentStates: null,
+        completionDate: null,
+        additionalDeadline: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 250
+    })
+    this.getList();
+    this.getTreeselect();
+  },
+  methods: {
+    /** 查询问题清单和行动计划列表 */
+    getList() {
+      this.loading = true;
+      listIssuelist(this.queryParams).then(response => {
+        this.issuelistList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        plant: null,
+        area: null,
+        identifiedDate: null,
+        issueSource: null,
+        issueIdentified: null,
+        actionsTaken: null,
+        issueClass: null,
+        responsiblePerson: null,
+        responsibleUnit: null,
+        currentStates: null,
+        completionDate: null,
+        additionalDeadline: 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
+      getIssuelist(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改问题清单和行动计划";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateIssuelist(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addIssuelist(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return delIssuelist(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有问题清单和行动计划数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportIssuelist(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      importTemplate().then(response => {
+        this.download(response.msg);
+      });
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
+      this.getList();
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    }
+  }
+};
+</script>

+ 408 - 0
ui/src/views/issue/operationlist/index.vue

@@ -0,0 +1,408 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="装置" prop="plant">
+        <el-input
+          v-model="queryParams.plant"
+          placeholder="请输入装置"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="班组" prop="shiftClass">
+        <el-input
+          v-model="queryParams.shiftClass"
+          placeholder="请输入班组"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" 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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['issue:operationlist:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['issue:operationlist:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['issue:operationlist:remove']"
+        >删除</el-button>
+      </el-col>
+        <el-col :span="1.5">
+            <el-button
+                    type="info"
+                    icon="el-icon-upload2"
+                    size="mini"
+                    @click="handleImport"
+                    v-hasPermi="['issue:operationlist:edit']"
+            >导入</el-button>
+        </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['issue:operationlist:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="operationlistList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="装置" align="center" prop="plant" :show-overflow-tooltip="true"/>
+      <el-table-column label="班组" align="center" prop="shiftClass" :show-overflow-tooltip="true"/>
+      <el-table-column label="事件描述" align="center" prop="incidentDescription" :show-overflow-tooltip="true"/>
+      <el-table-column label="原因" align="center" prop="causeRes" :show-overflow-tooltip="true"/>
+      <el-table-column label="措施" align="center" prop="coutermeasures" :show-overflow-tooltip="true"/>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['issue:operationlist:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['issue:operationlist: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"
+    />
+
+    <!-- 添加或修改CBPB工艺事件清单对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="装置" prop="plant">
+          <el-input v-model="form.plant" placeholder="请输入装置" />
+        </el-form-item>
+        <el-form-item label="班组" prop="shiftClass">
+          <el-input v-model="form.shiftClass" placeholder="请输入班组" />
+        </el-form-item>
+        <el-form-item label="事件描述" prop="incidentDescription">
+          <el-input v-model="form.incidentDescription" placeholder="请输入事件描述" />
+        </el-form-item>
+        <el-form-item label="原因" prop="causeRes">
+          <el-input v-model="form.causeRes" placeholder="请输入原因" />
+        </el-form-item>
+        <el-form-item label="措施" prop="coutermeasures">
+          <el-input v-model="form.coutermeasures" placeholder="请输入措施" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" 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 :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+          <el-upload
+                  ref="upload"
+                  :limit="1"
+                  accept=".xlsx, .xls"
+                  :headers="upload.headers"
+                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
+                  :disabled="upload.isUploading"
+                  :on-progress="handleFileUploadProgress"
+                  :on-success="handleFileSuccess"
+                  :auto-upload="false"
+                  drag
+          >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                  将文件拖到此处,或
+                  <em>点击上传</em>
+              </div>
+              <div class="el-upload__tip" slot="tip">
+                  <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+                  <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+              </div>
+              <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+          </el-upload>
+          <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitFileForm">确 定</el-button>
+              <el-button @click="upload.open = false">取 消</el-button>
+          </div>
+      </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listOperationlist, getOperationlist, delOperationlist, addOperationlist, updateOperationlist, exportOperationlist, importTemplate} from "@/api/issue/operationlist";
+import { treeselect } from "@/api/system/dept";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Operationlist",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // CBPB工艺事件清单表格数据
+      operationlistList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight:300,
+      // 是否显示弹出层
+      open: false,
+        // 用户导入参数
+        upload: {
+            // 是否显示弹出层(用户导入)
+            open: false,
+            // 弹出层标题(用户导入)
+            title: "",
+            // 是否禁用上传
+            isUploading: false,
+            // 是否更新已经存在的用户数据
+            updateSupport: 0,
+            // 设置上传的请求头部
+            headers: { Authorization: "Bearer " + getToken() },
+            // 上传的地址
+            url: process.env.VUE_APP_BASE_API + "/issue/operationlist/importData"
+        },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        plant: null,
+        shiftClass: null,
+        incidentDescription: null,
+        causeRes: null,
+        coutermeasures: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+            this.$refs.tree.filter(val);
+        }
+   },
+  created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+      })
+    this.getList();
+    this.getTreeselect();
+  },
+  methods: {
+    /** 查询CBPB工艺事件清单列表 */
+    getList() {
+      this.loading = true;
+      listOperationlist(this.queryParams).then(response => {
+        this.operationlistList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        plant: null,
+        shiftClass: null,
+        incidentDescription: null,
+        causeRes: null,
+        coutermeasures: 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 = "添加CBPB工艺事件清单";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getOperationlist(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改CBPB工艺事件清单";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateOperationlist(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addOperationlist(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delOperationlist(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有CBPB工艺事件清单数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportOperationlist(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    },
+      /** 导入按钮操作 */
+      handleImport() {
+          this.upload.title = "用户导入";
+          this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+          importTemplate().then(response => {
+              this.download(response.msg);
+          });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+          this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+          this.upload.open = false;
+          this.upload.isUploading = false;
+          this.$refs.upload.clearFiles();
+          this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+          this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+          this.$refs.upload.submit();
+      }
+  }
+};
+</script>

+ 1 - 1
ui/src/views/plant/staffmgr/index.vue

@@ -863,7 +863,7 @@
           isRetire: null
         },
         querypIdParams: {
-          units: '10,18,20,30',
+          units: '10,18,20,30,34',
         },
         educations: [],
         units: [],