Przeglądaj źródła

LY 特种设备 每週檢查

ly 1 rok temu
rodzic
commit
68d9bd02b9
32 zmienionych plików z 3683 dodań i 294 usunięć
  1. 4 1
      master/src/main/java/com/ruoyi/common/utils/document/ZipUtil.java
  2. 5 0
      master/src/main/java/com/ruoyi/config/ActivitiConfig.java
  3. 2 0
      master/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  4. 14 0
      master/src/main/java/com/ruoyi/project/ehs/controller/TApproveDangerController.java
  5. 28 0
      master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/SafeAdminTaskCreateListener.java
  6. 27 0
      master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/SafeDirTaskCreateListener.java
  7. 36 0
      master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/WeekcheckEndFailListener.java
  8. 36 0
      master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/WeekcheckEndSuccessListener.java
  9. 48 30
      master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecDailycheckController.java
  10. 106 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecPersonweekcheckController.java
  11. 321 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecWeekcheckController.java
  12. 234 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecPersonweekcheck.java
  13. 343 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecWeekcheck.java
  14. 64 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/mapper/TSpecPersonweekcheckMapper.java
  15. 64 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/mapper/TSpecWeekcheckMapper.java
  16. 61 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/service/ITSpecPersonweekcheckService.java
  17. 61 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/service/ITSpecWeekcheckService.java
  18. 95 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/service/impl/TSpecPersonweekcheckServiceImpl.java
  19. 93 0
      master/src/main/java/com/ruoyi/project/sems/safecheck/service/impl/TSpecWeekcheckServiceImpl.java
  20. 120 0
      master/src/main/resources/mybatis/sems/safecheck/TSpecPersonweekcheckMapper.xml
  21. 150 0
      master/src/main/resources/mybatis/sems/safecheck/TSpecWeekcheckMapper.xml
  22. BIN
      master/src/main/resources/static/word/sems/check/dailycheck.docx
  23. BIN
      master/src/main/resources/static/word/sems/check/weekcheck.docx
  24. 10 0
      ui/src/api/sems/safecheck/dailycheck.js
  25. 53 0
      ui/src/api/sems/safecheck/personweekcheck.js
  26. 78 0
      ui/src/api/sems/safecheck/weekcheck.js
  27. 252 0
      ui/src/views/approve/approveDetail/semsWeekCheck-detail.vue
  28. 10 0
      ui/src/views/approve/pending/index.vue
  29. 10 0
      ui/src/views/approve/taskdone/index.vue
  30. 303 263
      ui/src/views/sems/safecheck/dailycheck/index.vue
  31. 454 0
      ui/src/views/sems/safecheck/personweekcheck/index.vue
  32. 601 0
      ui/src/views/sems/safecheck/weekcheck/index.vue

+ 4 - 1
master/src/main/java/com/ruoyi/common/utils/document/ZipUtil.java

@@ -1,5 +1,7 @@
 package com.ruoyi.common.utils.document;
 
+import com.ruoyi.framework.web.domain.AjaxResult;
+
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
@@ -23,7 +25,7 @@ public class ZipUtil {
      * @param response
      * @throws Exception
      */
-    public static void createZip(String filePath, String folder, String zipName, List<String> fileNames, HttpServletResponse response) throws Exception {
+    public static AjaxResult createZip(String filePath, String folder, String zipName, List<String> fileNames, HttpServletResponse response) throws Exception {
         OutputStream out = null;
         ByteArrayOutputStream baos = new ByteArrayOutputStream(1000);
         List<File> fileList = new ArrayList<>();
@@ -59,6 +61,7 @@ public class ZipUtil {
             fis.close();
             baos.writeTo(out);
             baos.close();
+            return AjaxResult.success(zipName);
         } catch (Exception e) {
             e.printStackTrace();
             throw new Exception("导出失败:" + e.getMessage());

+ 5 - 0
master/src/main/java/com/ruoyi/config/ActivitiConfig.java

@@ -148,6 +148,11 @@ public class ActivitiConfig {
         DeploymentBuilder deploymentBuilder14 = repositoryService().createDeployment();
         Resource spec14 = resourceLoader.getResource("classpath:/processes/sai/saiApply.bpmn"); //加载流程图资源文件
         deploymentBuilder14.enableDuplicateFiltering().addInputStream(spec14.getFilename(), spec14.getInputStream()).name("SAI开项申请流程").deploy();//按流程id部署
+
+        DeploymentBuilder deploymentBuilder15 = repositoryService().createDeployment();
+        Resource spec15 = resourceLoader.getResource("classpath:/processes/sems/semsWeekcheck.bpmn"); //加载流程图资源文件
+        deploymentBuilder15.enableDuplicateFiltering().addInputStream(spec15.getFilename(), spec15.getInputStream()).name("每周安全排查报告").deploy();//按流程id部署
+
     }
 }
 

+ 2 - 0
master/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -128,6 +128,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/sems/historyYlgd/exportPDFForYear").anonymous()
                 .antMatchers("/invoice/bookingworkticket/word").anonymous()
                 .antMatchers("/monitor/log/download").anonymous()
+                .antMatchers("/safecheck/dailycheck/downloadDailycheck").anonymous()
+
 
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 14 - 0
master/src/main/java/com/ruoyi/project/ehs/controller/TApproveDangerController.java

@@ -39,6 +39,8 @@ import com.ruoyi.project.reliability.service.ITKekaoApproveService;
 import com.ruoyi.project.sems.domain.TApprove;
 import com.ruoyi.project.sems.his.domain.TApproveSpecModify;
 import com.ruoyi.project.sems.his.service.ITApproveSpecModifyService;
+import com.ruoyi.project.sems.safecheck.domain.TSpecWeekcheck;
+import com.ruoyi.project.sems.safecheck.service.ITSpecWeekcheckService;
 import com.ruoyi.project.sems.service.ITApproveService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.domain.SysUserRole;
@@ -127,6 +129,8 @@ public class TApproveDangerController extends BaseController {
 
     @Autowired
     private ITSaiApplyService tSaiApplyService;
+    @Autowired
+    private ITSpecWeekcheckService tSpecWeekcheckService;
 
     /**
      * 任务申请
@@ -424,6 +428,10 @@ public class TApproveDangerController extends BaseController {
                     TSaiApply approve = tSaiApplyService.selectTSaiApplyById(Long.parseLong(pi.getBusinessKey()));
                     devTask.setApproveObject(approve);
                     devTask.setApNo(approve.getApNo());
+                }else if (pi.getProcessDefinitionName().equals("每周安全排查报告")) {
+                    TSpecWeekcheck t = tSpecWeekcheckService.selectTSpecWeekcheckById(Long.parseLong(pi.getBusinessKey()));
+                    devTask.setApproveObject(t);
+                    devTask.setApNo(t.getId().toString());
                 }
                 list.add(devTask);
             }
@@ -529,6 +537,12 @@ public class TApproveDangerController extends BaseController {
                     devProcess.setApNo(approve.getApNo());
                     devProcess.setApName(user.getNickName());
                     devProcess.setApproveObject(approve);
+                }else if (pi.getProcessDefinitionName().equals("每周安全排查报告")) {
+                    TSpecWeekcheck t = tSpecWeekcheckService.selectTSpecWeekcheckById(Long.parseLong(pi.getBusinessKey()));
+                    SysUser user = sysUserService.selectUserById(Long.valueOf(t.getCreaterCode()));
+                    devProcess.setApNo(t.getId().toString());
+                    devProcess.setApName(user.getNickName());
+                    devProcess.setApproveObject(t);
                 } else {
                     TApproveDanger approveDanger = tApproveDangerService.selectTApproveDangerById(Long.parseLong(pi.getBusinessKey()));
                     SysUser user = sysUserService.selectUserById(approveDanger.getRecorderId());

+ 28 - 0
master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/SafeAdminTaskCreateListener.java

@@ -0,0 +1,28 @@
+package com.ruoyi.project.listener.semsWeekCheck;
+
+import com.ruoyi.common.sendEmail.IMailService;
+import com.ruoyi.common.utils.SpringContextUtils;
+import com.ruoyi.project.ehs.domain.TApproveDanger;
+import com.ruoyi.project.ehs.service.ITApproveDangerService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+
+@Service("safeAdminTaskCreateListener")
+public class SafeAdminTaskCreateListener implements Serializable, TaskListener {
+    protected Logger logger = LoggerFactory.getLogger(getClass());
+    private static final long serialVersionUID = -375905405805540186L;
+
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String id = delegateTask.getExecution().getProcessInstanceBusinessKey();
+        logger.info("--------------------------executor--------------------------");
+        logger.info("id:" + id);
+    }
+}

+ 27 - 0
master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/SafeDirTaskCreateListener.java

@@ -0,0 +1,27 @@
+package com.ruoyi.project.listener.semsWeekCheck;
+
+import com.ruoyi.common.sendEmail.IMailService;
+import com.ruoyi.common.utils.SpringContextUtils;
+import com.ruoyi.project.ehs.domain.TApproveDanger;
+import com.ruoyi.project.ehs.service.ITApproveDangerService;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+
+@Service("safeDirTaskCreateListener")
+public class SafeDirTaskCreateListener implements Serializable, TaskListener {
+    protected Logger logger = LoggerFactory.getLogger(getClass());
+    private static final long serialVersionUID = -375905405805540186L;
+
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        logger.info("--------------------------recorder--------------------------");
+        String id = delegateTask.getExecution().getProcessInstanceBusinessKey();
+        logger.info("id:" + id);
+    }
+}

+ 36 - 0
master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/WeekcheckEndFailListener.java

@@ -0,0 +1,36 @@
+package com.ruoyi.project.listener.semsWeekCheck;
+
+import com.alibaba.fastjson.JSON;
+import com.github.stuxuhai.jpinyin.PinyinFormat;
+import com.github.stuxuhai.jpinyin.PinyinHelper;
+import com.ruoyi.common.sendEmail.IMailService;
+import com.ruoyi.common.utils.SpringContextUtils;
+import com.ruoyi.project.sems.domain.TApprove;
+import com.ruoyi.project.sems.domain.TReportYlgd;
+import com.ruoyi.project.sems.domain.TReportYlrq;
+import com.ruoyi.project.sems.service.ITApproveService;
+import com.ruoyi.project.sems.service.ITReportYlgdService;
+import com.ruoyi.project.sems.service.ITReportYlrqService;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.ExecutionListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Service("weekcheckEndFailListener")
+public class WeekcheckEndFailListener implements Serializable, ExecutionListener {
+    protected Logger logger = LoggerFactory.getLogger(getClass());
+    private static final long serialVersionUID = -375905405805540186L;
+
+    @Override
+    public void notify(DelegateExecution delegateExecution) {
+        String id = delegateExecution.getProcessInstanceBusinessKey();
+        logger.info("delegateExecution--------------------------------" + delegateExecution);
+        logger.info("审批id--------------------------------" + id);
+
+    }
+}

+ 36 - 0
master/src/main/java/com/ruoyi/project/listener/semsWeekCheck/WeekcheckEndSuccessListener.java

@@ -0,0 +1,36 @@
+package com.ruoyi.project.listener.semsWeekCheck;
+
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.utils.SpringContextUtils;
+import com.ruoyi.project.invoice.service.ITInvoiceBookingworkticketService;
+import com.ruoyi.project.sems.safecheck.domain.TSpecWeekcheck;
+import com.ruoyi.project.sems.safecheck.service.ITSpecWeekcheckService;
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.ExecutionListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+import java.util.Map;
+
+@Service("weekcheckEndSuccessListener")
+public class WeekcheckEndSuccessListener implements Serializable, ExecutionListener {
+    protected Logger logger = LoggerFactory.getLogger(getClass());
+
+    private static final long serialVersionUID = -3759054058055401826L;
+
+    @Override
+    public void notify(DelegateExecution delegateExecution) {
+        String id = delegateExecution.getProcessInstanceBusinessKey();
+
+        Map variableInstances = delegateExecution.getVariableInstances();
+        logger.debug("参数--------------------------------" + JSON.toJSONString(variableInstances));
+        logger.debug("审批id--------------------------------" + id);
+        ITSpecWeekcheckService itSpecWeekcheckService = (ITSpecWeekcheckService) SpringContextUtils.getBean("tSpecWeekcheckServiceImpl");
+        TSpecWeekcheck t = itSpecWeekcheckService.selectTSpecWeekcheckById(Long.parseLong(id));
+        t.setStatus(1);
+        itSpecWeekcheckService.updateTSpecWeekcheck(t);
+
+    }
+}

+ 48 - 30
master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecDailycheckController.java

@@ -3,15 +3,21 @@ package com.ruoyi.project.sems.safecheck.controller;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.alibaba.fastjson.JSON;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.data.Pictures;
 import com.deepoove.poi.data.Texts;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.document.ZipUtil;
 import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.project.apply.domain.TApplyOfflinevalve;
@@ -20,14 +26,7 @@ import com.ruoyi.project.system.service.ISysUserService;
 import io.jsonwebtoken.lang.Assert;
 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 org.springframework.web.bind.annotation.*;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.project.sems.safecheck.domain.TSpecDailycheck;
@@ -37,6 +36,9 @@ import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * 每日安全检查Controller
  *
@@ -45,8 +47,7 @@ import com.ruoyi.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/safecheck/dailycheck")
-public class TSpecDailycheckController extends BaseController
-{
+public class TSpecDailycheckController extends BaseController {
     @Autowired
     private ITSpecDailycheckService tSpecDailycheckService;
     @Autowired
@@ -57,8 +58,7 @@ public class TSpecDailycheckController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('safecheck:dailycheck:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TSpecDailycheck tSpecDailycheck)
-    {
+    public TableDataInfo list(TSpecDailycheck tSpecDailycheck) {
         startPage();
         List<TSpecDailycheck> list = tSpecDailycheckService.selectTSpecDailycheckList(tSpecDailycheck);
         return getDataTable(list);
@@ -70,8 +70,7 @@ public class TSpecDailycheckController extends BaseController
     @PreAuthorize("@ss.hasPermi('safecheck:dailycheck:export')")
     @Log(title = "每日安全检查", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
-    public AjaxResult export(TSpecDailycheck tSpecDailycheck)
-    {
+    public AjaxResult export(TSpecDailycheck tSpecDailycheck) {
         List<TSpecDailycheck> list = tSpecDailycheckService.selectTSpecDailycheckList(tSpecDailycheck);
         ExcelUtil<TSpecDailycheck> util = new ExcelUtil<TSpecDailycheck>(TSpecDailycheck.class);
         return util.exportExcel(list, "dailycheck");
@@ -82,8 +81,7 @@ public class TSpecDailycheckController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('safecheck:dailycheck:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return AjaxResult.success(tSpecDailycheckService.selectTSpecDailycheckById(id));
     }
 
@@ -93,8 +91,7 @@ public class TSpecDailycheckController extends BaseController
     @PreAuthorize("@ss.hasPermi('safecheck:dailycheck:add')")
     @Log(title = "每日安全检查", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody TSpecDailycheck tSpecDailycheck)
-    {
+    public AjaxResult add(@RequestBody TSpecDailycheck tSpecDailycheck) {
         long userId = getUserId();
         tSpecDailycheck.setCheckerId(userId);
         tSpecDailycheck.setCreaterCode(userId);
@@ -107,8 +104,7 @@ public class TSpecDailycheckController extends BaseController
     @PreAuthorize("@ss.hasPermi('safecheck:dailycheck:edit')")
     @Log(title = "每日安全检查", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody TSpecDailycheck tSpecDailycheck)
-    {
+    public AjaxResult edit(@RequestBody TSpecDailycheck tSpecDailycheck) {
         return toAjax(tSpecDailycheckService.updateTSpecDailycheck(tSpecDailycheck));
     }
 
@@ -117,12 +113,35 @@ public class TSpecDailycheckController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('safecheck:dailycheck:remove')")
     @Log(title = "每日安全检查", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(tSpecDailycheckService.deleteTSpecDailycheckByIds(ids));
     }
 
+    /**
+     * @return
+     * @throws IOException
+     */
+    @RequestMapping("/downloadDailycheck")
+    public AjaxResult downloadDailycheck(@RequestParam String id, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        String[] ids = id.split(",");
+        OutputStream out = null;
+        out = response.getOutputStream();
+        //存放所有文件路径
+        List<String> list = new ArrayList<>();
+        for (int i = 0; i < ids.length; i++) {
+            String url = PreView(Long.parseLong(ids[i]));
+            // 将路径字符串转换为Path对象
+            Path path = Paths.get(url);
+            // 获取文件名
+            String fileName = path.getFileName().toString();
+            list.add(fileName);
+        }
+        logger.info(JSON.toJSONString(list));
+        return ZipUtil.createZip(RuoYiConfig.getProfile() + "/sems/dailycheck/", "",  "每日安全检查报告.zip", list, response);
+
+    }
+
     /**
      * @param id
      * @return
@@ -181,13 +200,12 @@ public class TSpecDailycheckController extends BaseController
         params.put("cOther", Texts.of(tSpecDailycheck.getcOther()).fontSize(10).bold().create());
         params.put("explain", Texts.of(tSpecDailycheck.getExplain()).fontSize(10).bold().create());
 
-
-            SysUser sysUser = userService.selectUserById(tSpecDailycheck.getCheckerId());
-            if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
-                params.put("checkerNameP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(80, 40).create());
-            } else {
-                params.put("checkerName", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
-            }
+        SysUser sysUser = userService.selectUserById(tSpecDailycheck.getCheckerId());
+        if (sysUser.getSignUrl() != null && new File(fileName(sysUser.getSignUrl())).exists()) {
+            params.put("checkerNameP", Pictures.ofLocal(fileName(sysUser.getSignUrl())).size(80, 40).create());
+        } else {
+            params.put("checkerName", Texts.of(sysUser.getNickName()).fontSize(10).bold().create());
+        }
         // 渲染文本
         return params;
     }

+ 106 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecPersonweekcheckController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.sems.safecheck.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.sems.safecheck.domain.TSpecPersonweekcheck;
+import com.ruoyi.project.sems.safecheck.service.ITSpecPersonweekcheckService;
+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 Li
+ * @date 2023-08-29
+ */
+@RestController
+@RequestMapping("/safecheck/personweekcheck")
+public class TSpecPersonweekcheckController extends BaseController
+{
+    @Autowired
+    private ITSpecPersonweekcheckService tSpecPersonweekcheckService;
+
+    /**
+     * 查询每周个人安全检查列表
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:personweekcheck:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        startPage();
+        List<TSpecPersonweekcheck> list = tSpecPersonweekcheckService.selectTSpecPersonweekcheckList(tSpecPersonweekcheck);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出每周个人安全检查列表
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:personweekcheck:export')")
+    @Log(title = "每周个人安全检查", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        List<TSpecPersonweekcheck> list = tSpecPersonweekcheckService.selectTSpecPersonweekcheckList(tSpecPersonweekcheck);
+        ExcelUtil<TSpecPersonweekcheck> util = new ExcelUtil<TSpecPersonweekcheck>(TSpecPersonweekcheck.class);
+        return util.exportExcel(list, "personweekcheck");
+    }
+
+    /**
+     * 获取每周个人安全检查详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:personweekcheck:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSpecPersonweekcheckService.selectTSpecPersonweekcheckById(id));
+    }
+
+    /**
+     * 新增每周个人安全检查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:personweekcheck:add')")
+    @Log(title = "每周个人安全检查", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        long userId = getUserId();
+        tSpecPersonweekcheck.setCheckerId(userId);
+        tSpecPersonweekcheck.setCreaterCode(userId);
+        return toAjax(tSpecPersonweekcheckService.insertTSpecPersonweekcheck(tSpecPersonweekcheck));
+    }
+
+    /**
+     * 修改每周个人安全检查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:personweekcheck:edit')")
+    @Log(title = "每周个人安全检查", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        return toAjax(tSpecPersonweekcheckService.updateTSpecPersonweekcheck(tSpecPersonweekcheck));
+    }
+
+    /**
+     * 删除每周个人安全检查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:personweekcheck:remove')")
+    @Log(title = "每周个人安全检查", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSpecPersonweekcheckService.deleteTSpecPersonweekcheckByIds(ids));
+    }
+}

+ 321 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/controller/TSpecWeekcheckController.java

@@ -0,0 +1,321 @@
+package com.ruoyi.project.sems.safecheck.controller;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.data.Pictures;
+import com.deepoove.poi.data.Texts;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.framework.config.RuoYiConfig;
+import com.ruoyi.project.approve.damain.DevTask;
+import com.ruoyi.project.listener.apply.valve.EndFailListener;
+import com.ruoyi.project.listener.apply.valve.EndSuccessListener;
+import com.ruoyi.project.listener.apply.valve.FlowListener;
+import com.ruoyi.project.listener.apply.valve.NextTaskListener;
+import com.ruoyi.project.listener.semsWeekCheck.SafeAdminTaskCreateListener;
+import com.ruoyi.project.listener.semsWeekCheck.SafeDirTaskCreateListener;
+import com.ruoyi.project.listener.semsWeekCheck.WeekcheckEndFailListener;
+import com.ruoyi.project.listener.semsWeekCheck.WeekcheckEndSuccessListener;
+import com.ruoyi.project.sems.safecheck.domain.TSpecDailycheck;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import io.jsonwebtoken.lang.Assert;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.ProcessEngines;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.impl.identity.Authentication;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+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.sems.safecheck.domain.TSpecWeekcheck;
+import com.ruoyi.project.sems.safecheck.service.ITSpecWeekcheckService;
+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 Li
+ * @date 2023-08-21
+ */
+@RestController
+@RequestMapping("/safecheck/weekcheck")
+public class TSpecWeekcheckController extends BaseController
+{
+    @Autowired
+    private ITSpecWeekcheckService tSpecWeekcheckService;
+    @Autowired
+    private ISysUserService userService;
+    @Autowired
+    private RuntimeService runtimeService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private ISysUserService sysUserService;
+    /**
+     * 查询每周安全排查列表
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSpecWeekcheck tSpecWeekcheck)
+    {
+        startPage();
+        List<TSpecWeekcheck> list = tSpecWeekcheckService.selectTSpecWeekcheckList(tSpecWeekcheck);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出每周安全排查列表
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:export')")
+    @Log(title = "每周安全排查", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSpecWeekcheck tSpecWeekcheck)
+    {
+        List<TSpecWeekcheck> list = tSpecWeekcheckService.selectTSpecWeekcheckList(tSpecWeekcheck);
+        ExcelUtil<TSpecWeekcheck> util = new ExcelUtil<TSpecWeekcheck>(TSpecWeekcheck.class);
+        return util.exportExcel(list, "weekcheck");
+    }
+
+    /**
+     * 获取每周安全排查详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSpecWeekcheckService.selectTSpecWeekcheckById(id));
+    }
+
+    /**
+     * 新增每周安全排查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:add')")
+    @Log(title = "每周安全排查", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSpecWeekcheck tSpecWeekcheck)
+    {
+        long userId = getUserId();
+        tSpecWeekcheck.setCreaterCode(userId);
+
+        SysUser admin = sysUserService.selectUserById(Long.valueOf(tSpecWeekcheck.getSafeAdminId()));
+        tSpecWeekcheck.setSafeAdminName(admin.getNickName());
+        SysUser dir = sysUserService.selectUserById(Long.valueOf(tSpecWeekcheck.getSafeDirId()));
+        tSpecWeekcheck.setSafeDirName(dir.getNickName());
+
+        tSpecWeekcheckService.insertTSpecWeekcheck(tSpecWeekcheck);
+        //开始工作流、监听
+        Map<String, Object> variables = new HashMap<>();
+
+        variables.put("safeAdmin", tSpecWeekcheck.getSafeAdminId());
+        variables.put("safeDir", tSpecWeekcheck.getSafeDirId());
+
+        variables.put("safeAdminTaskCreateListener", new SafeAdminTaskCreateListener());
+        variables.put("safeDirTaskCreateListener", new SafeDirTaskCreateListener());
+        variables.put("weekcheckEndFailListener", new WeekcheckEndFailListener());
+        variables.put("weekcheckEndSuccessListener", new WeekcheckEndSuccessListener());
+
+        Long userid = getUserId();
+        Authentication.setAuthenticatedUserId(userid.toString());
+        //采用key来启动流程定义并设置流程变量,返回流程实例
+        ProcessInstance pi = runtimeService.startProcessInstanceByKey("semsWeekcheck", String.valueOf(tSpecWeekcheck.getId()), variables);
+        logger.info("流程部署id:" + pi.getDeploymentId());
+        logger.info("流程定义id:" + pi.getProcessDefinitionId());
+        logger.info("流程实例id:" + pi.getProcessInstanceId());
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改每周安全排查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:edit')")
+    @Log(title = "每周安全排查", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSpecWeekcheck tSpecWeekcheck)
+    {
+        return toAjax(tSpecWeekcheckService.updateTSpecWeekcheck(tSpecWeekcheck));
+    }
+
+    /**
+     * 删除每周安全排查
+     */
+    @PreAuthorize("@ss.hasPermi('safecheck:weekcheck:remove')")
+    @Log(title = "每周安全排查", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSpecWeekcheckService.deleteTSpecWeekcheckByIds(ids));
+    }
+
+    /**
+     * @param id
+     * @return
+     * @throws IOException
+     */
+    @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查询并生成
+        TSpecWeekcheck t = tSpecWeekcheckService.selectTSpecWeekcheckById(id);
+        String url = this.createcheck(t);
+        return url;
+    }
+
+    /**
+     * 生成wordt
+     */
+    public String createcheck(TSpecWeekcheck tSpecWeekcheck) throws IOException {
+        //生成word
+        //渲染文本
+        Map<String, Object> params = getWordData(tSpecWeekcheck);
+        // 模板路径
+        String templatePath = "static/word/sems/check/weekcheck.docx";
+        // 生成word的路径
+        String fileDir = RuoYiConfig.getProfile() + "/" + "sems/weekcheck";
+        // 生成word的文件名称
+        String fileName = tSpecWeekcheck.getId() + ".docx";
+        String wordPath = this.createWord(templatePath, fileDir, fileName, params);
+        return wordPath;
+    }
+
+    /**
+     * 获取word数据
+     */
+    public Map<String, Object> getWordData(TSpecWeekcheck tSpecWeekcheck) {
+        Map<String, Object> params = new HashMap<>();
+
+        params.put("checkDate", Texts.of(DateUtils.dateTime(tSpecWeekcheck.getCheckDate())).fontSize(10).bold().create());
+        params.put("weekNo", Texts.of(tSpecWeekcheck.getWeekNo()).fontSize(10).bold().create());
+        params.put("lastWeekRisk", Texts.of(tSpecWeekcheck.getLastWeekRisk()).fontSize(10).bold().create());
+        params.put("thisWeekRisk", Texts.of(tSpecWeekcheck.getThisWeekRisk()).fontSize(10).bold().create());
+        params.put("safeCondition", Texts.of(tSpecWeekcheck.getSafeCondition()).fontSize(10).bold().create());
+        params.put("nextWeekWork", Texts.of(tSpecWeekcheck.getNextWeekWork()).fontSize(10).bold().create());
+        params.put("safeAdminSug", Texts.of(tSpecWeekcheck.getSafeAdminSug()).fontSize(10).bold().create());
+        params.put("safeDirSug", Texts.of(tSpecWeekcheck.getSafeDirSug()).fontSize(10).bold().create());
+        SysUser safeAdmin = userService.selectUserById(Long.parseLong(tSpecWeekcheck.getSafeAdminId()));
+        if (safeAdmin.getSignUrl() != null && new File(fileName(safeAdmin.getSignUrl())).exists()) {
+            params.put("safeAdminP", Pictures.ofLocal(fileName(safeAdmin.getSignUrl())).size(80, 40).create());
+        } else {
+            params.put("safeAdmin", Texts.of(safeAdmin.getNickName()).fontSize(10).bold().create());
+        }
+
+        SysUser safeDir = userService.selectUserById(Long.parseLong(tSpecWeekcheck.getSafeDirId()));
+        if (safeDir.getSignUrl() != null && new File(fileName(safeDir.getSignUrl())).exists()) {
+            params.put("safeDirP", Pictures.ofLocal(fileName(safeDir.getSignUrl())).size(80, 40).create());
+        } else {
+            params.put("safeDir", Texts.of(safeDir.getNickName()).fontSize(10).bold().create());
+        }
+        // 渲染文本
+        return params;
+    }
+
+    /**
+     * @param templatePath word模板文件路径
+     * @param fileDir      生成的文件存放地址
+     * @param fileName     生成的文件名
+     * @param paramMap     参数集合
+     * @return 返回word生成的路径
+     */
+    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 = XWPFTemplate.compile(is).render(paramMap);
+        try {
+            // 将模板参数写入路径
+            template.writeToFile(filePath);
+            template.close();
+        } catch (Exception e) {
+            logger.error("生成word异常{}", e.getMessage());
+            e.printStackTrace();
+        }
+        String pathFileName = FileUploadUtils.getPathFileName(RuoYiConfig.getFilePath("/" + "sems/weekcheck"), fileName);
+        return pathFileName;
+    }
+
+    /**
+     * @param
+     * @return 映射签名的文件名
+     * @throws IOException
+     */
+    public String fileName(String filepath) {
+        String newFilePath = filepath.replace("/profile", "");
+        String pathName = RuoYiConfig.getProfile() + newFilePath;
+        return pathName;
+    }
+
+    /**
+     * 审核处理
+     */
+    @Log(title = "特种设备审核处理", businessType = BusinessType.UPDATE)
+    @PutMapping("/handle")
+    public AjaxResult handle(@RequestBody DevTask devTask) {
+        //使用任务服务完成任务(提交任务)
+        String taskId = devTask.getTaskId();
+        // 使用任务id,获取任务对象,获取流程实例id
+        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+        //利用任务对象,获取流程实例id
+        String processInstancesId = task.getProcessInstanceId();
+
+        Map<String, Object> param = new HashMap<>();
+        param.put("condition", devTask.getCondition());
+
+//        String taskName = task.getName();//实例名
+//        if (taskName.equals("安全总监")) {
+//            devTask.getBusinessKey();
+//        }
+        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
+        TaskService taskService = processEngine.getTaskService();
+        //认领任务
+        processEngine.getTaskService()//
+                .claim(taskId, getUserId().toString());
+//        Authentication.setAuthenticatedUserId("cmc"); // 添加批注时候的审核人
+        taskService.addComment(taskId, processInstancesId, devTask.getComment());
+        //业务监听处理
+//        tApproveService.handleApprove(task ,devTask);
+        taskService.complete(taskId, param);
+        return AjaxResult.success();
+    }
+}

+ 234 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecPersonweekcheck.java

@@ -0,0 +1,234 @@
+package com.ruoyi.project.sems.safecheck.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_spec_personweekcheck
+ *
+ * @author Li
+ * @date 2023-08-29
+ */
+public class TSpecPersonweekcheck extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantCode;
+
+    /** 状态 0 :正常 ;-1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private Long createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 安全员用户id */
+    @Excel(name = "安全员用户id")
+    private Long checkerId;
+
+    @Excel(name = "安全员用户")
+    private String checkerName;
+
+    /** 周 */
+    @Excel(name = "周")
+    private String weekNo;
+
+    /** 上周安全风险隐患问题整改核实情况 */
+    @Excel(name = "上周安全风险隐患问题整改核实情况")
+    private String lastWeekRisk;
+
+    /** 本周主要安全风险隐患和整改情况 */
+    @Excel(name = "本周主要安全风险隐患和整改情况")
+    private String thisWeekRisk;
+
+    /** 本周安全管理情况评价 */
+    @Excel(name = "本周安全管理情况评价")
+    private String safeCondition;
+
+    /** 下周工作重点 */
+    @Excel(name = "下周工作重点")
+    private String nextWeekWork;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setCheckerId(Long checkerId)
+    {
+        this.checkerId = checkerId;
+    }
+
+    public Long getCheckerId()
+    {
+        return checkerId;
+    }
+    public void setWeekNo(String weekNo)
+    {
+        this.weekNo = weekNo;
+    }
+
+    public String getWeekNo()
+    {
+        return weekNo;
+    }
+    public void setLastWeekRisk(String lastWeekRisk)
+    {
+        this.lastWeekRisk = lastWeekRisk;
+    }
+
+    public String getLastWeekRisk()
+    {
+        return lastWeekRisk;
+    }
+    public void setThisWeekRisk(String thisWeekRisk)
+    {
+        this.thisWeekRisk = thisWeekRisk;
+    }
+
+    public String getThisWeekRisk()
+    {
+        return thisWeekRisk;
+    }
+    public void setSafeCondition(String safeCondition)
+    {
+        this.safeCondition = safeCondition;
+    }
+
+    public String getSafeCondition()
+    {
+        return safeCondition;
+    }
+    public void setNextWeekWork(String nextWeekWork)
+    {
+        this.nextWeekWork = nextWeekWork;
+    }
+
+    public String getNextWeekWork()
+    {
+        return nextWeekWork;
+    }
+
+    public String getCheckerName() {
+        return checkerName;
+    }
+
+    public void setCheckerName(String checkerName) {
+        this.checkerName = checkerName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("checkDate", getCheckDate())
+            .append("checkerId", getCheckerId())
+            .append("weekNo", getWeekNo())
+            .append("lastWeekRisk", getLastWeekRisk())
+            .append("thisWeekRisk", getThisWeekRisk())
+            .append("safeCondition", getSafeCondition())
+            .append("nextWeekWork", getNextWeekWork())
+            .toString();
+    }
+}

+ 343 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/domain/TSpecWeekcheck.java

@@ -0,0 +1,343 @@
+package com.ruoyi.project.sems.safecheck.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_spec_weekcheck
+ *
+ * @author Li
+ * @date 2023-08-21
+ */
+public class TSpecWeekcheck extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantCode;
+
+    private Integer status;
+
+    /** 状态 0 :正常 ;-1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private Long createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 安全员用户id */
+    @Excel(name = "安全员用户id")
+    private Long checkerId;
+
+    /** 周 */
+    @Excel(name = "周")
+    private String weekNo;
+
+    /** 安全管理员id */
+    @Excel(name = "安全管理员id")
+    private String safeAdminId;
+
+    /** 安全管理员姓名 */
+    @Excel(name = "安全管理员姓名")
+    private String safeAdminName;
+
+    /** 安全总监id */
+    @Excel(name = "安全总监id")
+    private String safeDirId;
+
+    /** 安全总监姓名 */
+    @Excel(name = "安全总监姓名")
+    private String safeDirName;
+
+    /** 上周安全风险隐患问题整改核实情况 */
+    @Excel(name = "上周安全风险隐患问题整改核实情况")
+    private String lastWeekRisk;
+
+    /** 本周主要安全风险隐患和整改情况 */
+    @Excel(name = "本周主要安全风险隐患和整改情况")
+    private String thisWeekRisk;
+
+    /** 本周安全管理情况评价 */
+    @Excel(name = "本周安全管理情况评价")
+    private String safeCondition;
+
+    /** 下周工作重点 */
+    @Excel(name = "下周工作重点")
+    private String nextWeekWork;
+
+    /** 安全管理员意见 */
+    @Excel(name = "安全管理员意见")
+    private String safeAdminSug;
+
+    /** 安全总监意见 */
+    @Excel(name = "安全总监意见")
+    private String safeDirSug;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "安全管理员日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date safeAdmindDate;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "安全总监日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date safeDirDate;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantCode(String plantCode)
+    {
+        this.plantCode = plantCode;
+    }
+
+    public String getPlantCode()
+    {
+        return plantCode;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(Long createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public Long getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(Long updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public Long getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setCheckerId(Long checkerId)
+    {
+        this.checkerId = checkerId;
+    }
+
+    public Long getCheckerId()
+    {
+        return checkerId;
+    }
+    public void setWeekNo(String weekNo)
+    {
+        this.weekNo = weekNo;
+    }
+
+    public String getWeekNo()
+    {
+        return weekNo;
+    }
+    public void setSafeAdminId(String safeAdminId)
+    {
+        this.safeAdminId = safeAdminId;
+    }
+
+    public String getSafeAdminId()
+    {
+        return safeAdminId;
+    }
+    public void setSafeAdminName(String safeAdminName)
+    {
+        this.safeAdminName = safeAdminName;
+    }
+
+    public String getSafeAdminName()
+    {
+        return safeAdminName;
+    }
+    public void setSafeDirId(String safeDirId)
+    {
+        this.safeDirId = safeDirId;
+    }
+
+    public String getSafeDirId()
+    {
+        return safeDirId;
+    }
+    public void setSafeDirName(String safeDirName)
+    {
+        this.safeDirName = safeDirName;
+    }
+
+    public String getSafeDirName()
+    {
+        return safeDirName;
+    }
+    public void setLastWeekRisk(String lastWeekRisk)
+    {
+        this.lastWeekRisk = lastWeekRisk;
+    }
+
+    public String getLastWeekRisk()
+    {
+        return lastWeekRisk;
+    }
+    public void setThisWeekRisk(String thisWeekRisk)
+    {
+        this.thisWeekRisk = thisWeekRisk;
+    }
+
+    public String getThisWeekRisk()
+    {
+        return thisWeekRisk;
+    }
+    public void setSafeCondition(String safeCondition)
+    {
+        this.safeCondition = safeCondition;
+    }
+
+    public String getSafeCondition()
+    {
+        return safeCondition;
+    }
+    public void setNextWeekWork(String nextWeekWork)
+    {
+        this.nextWeekWork = nextWeekWork;
+    }
+
+    public String getNextWeekWork()
+    {
+        return nextWeekWork;
+    }
+    public void setSafeAdminSug(String safeAdminSug)
+    {
+        this.safeAdminSug = safeAdminSug;
+    }
+
+    public String getSafeAdminSug()
+    {
+        return safeAdminSug;
+    }
+    public void setSafeDirSug(String safeDirSug)
+    {
+        this.safeDirSug = safeDirSug;
+    }
+
+    public String getSafeDirSug()
+    {
+        return safeDirSug;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getSafeAdmindDate() {
+        return safeAdmindDate;
+    }
+
+    public void setSafeAdmindDate(Date safeAdmindDate) {
+        this.safeAdmindDate = safeAdmindDate;
+    }
+
+    public Date getSafeDirDate() {
+        return safeDirDate;
+    }
+
+    public void setSafeDirDate(Date safeDirDate) {
+        this.safeDirDate = safeDirDate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("checkDate", getCheckDate())
+            .append("checkerId", getCheckerId())
+            .append("weekNo", getWeekNo())
+            .append("safeAdminId", getSafeAdminId())
+            .append("safeAdminName", getSafeAdminName())
+            .append("safeDirId", getSafeDirId())
+            .append("safeDirName", getSafeDirName())
+            .append("lastWeekRisk", getLastWeekRisk())
+            .append("thisWeekRisk", getThisWeekRisk())
+            .append("safeCondition", getSafeCondition())
+            .append("nextWeekWork", getNextWeekWork())
+            .append("safeAdminSug", getSafeAdminSug())
+            .append("safeDirSug", getSafeDirSug())
+            .toString();
+    }
+}

+ 64 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/mapper/TSpecPersonweekcheckMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.project.sems.safecheck.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScopePlant;
+import com.ruoyi.project.sems.safecheck.domain.TSpecPersonweekcheck;
+
+/**
+ * 每周个人安全检查Mapper接口
+ *
+ * @author Li
+ * @date 2023-08-29
+ */
+public interface TSpecPersonweekcheckMapper
+{
+    /**
+     * 查询每周个人安全检查
+     *
+     * @param id 每周个人安全检查ID
+     * @return 每周个人安全检查
+     */
+    public TSpecPersonweekcheck selectTSpecPersonweekcheckById(Long id);
+
+    /**
+     * 查询每周个人安全检查列表
+     *
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 每周个人安全检查集合
+     */
+    @DataScopePlant(deptAlias = "d")
+    public List<TSpecPersonweekcheck> selectTSpecPersonweekcheckList(TSpecPersonweekcheck tSpecPersonweekcheck);
+
+    /**
+     * 新增每周个人安全检查
+     *
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 结果
+     */
+    public int insertTSpecPersonweekcheck(TSpecPersonweekcheck tSpecPersonweekcheck);
+
+    /**
+     * 修改每周个人安全检查
+     *
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 结果
+     */
+    public int updateTSpecPersonweekcheck(TSpecPersonweekcheck tSpecPersonweekcheck);
+
+    /**
+     * 删除每周个人安全检查
+     *
+     * @param id 每周个人安全检查ID
+     * @return 结果
+     */
+    public int deleteTSpecPersonweekcheckById(Long id);
+
+    /**
+     * 批量删除每周个人安全检查
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecPersonweekcheckByIds(Long[] ids);
+}

+ 64 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/mapper/TSpecWeekcheckMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.project.sems.safecheck.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScopePlant;
+import com.ruoyi.project.sems.safecheck.domain.TSpecWeekcheck;
+
+/**
+ * 每周安全排查Mapper接口
+ *
+ * @author Li
+ * @date 2023-08-21
+ */
+public interface TSpecWeekcheckMapper
+{
+    /**
+     * 查询每周安全排查
+     *
+     * @param id 每周安全排查ID
+     * @return 每周安全排查
+     */
+    public TSpecWeekcheck selectTSpecWeekcheckById(Long id);
+
+    /**
+     * 查询每周安全排查列表
+     *
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 每周安全排查集合
+     */
+    @DataScopePlant(deptAlias = "d")
+    public List<TSpecWeekcheck> selectTSpecWeekcheckList(TSpecWeekcheck tSpecWeekcheck);
+
+    /**
+     * 新增每周安全排查
+     *
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 结果
+     */
+    public int insertTSpecWeekcheck(TSpecWeekcheck tSpecWeekcheck);
+
+    /**
+     * 修改每周安全排查
+     *
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 结果
+     */
+    public int updateTSpecWeekcheck(TSpecWeekcheck tSpecWeekcheck);
+
+    /**
+     * 删除每周安全排查
+     *
+     * @param id 每周安全排查ID
+     * @return 结果
+     */
+    public int deleteTSpecWeekcheckById(Long id);
+
+    /**
+     * 批量删除每周安全排查
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTSpecWeekcheckByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/service/ITSpecPersonweekcheckService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.sems.safecheck.service;
+
+import java.util.List;
+import com.ruoyi.project.sems.safecheck.domain.TSpecPersonweekcheck;
+
+/**
+ * 每周个人安全检查Service接口
+ * 
+ * @author Li
+ * @date 2023-08-29
+ */
+public interface ITSpecPersonweekcheckService 
+{
+    /**
+     * 查询每周个人安全检查
+     * 
+     * @param id 每周个人安全检查ID
+     * @return 每周个人安全检查
+     */
+    public TSpecPersonweekcheck selectTSpecPersonweekcheckById(Long id);
+
+    /**
+     * 查询每周个人安全检查列表
+     * 
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 每周个人安全检查集合
+     */
+    public List<TSpecPersonweekcheck> selectTSpecPersonweekcheckList(TSpecPersonweekcheck tSpecPersonweekcheck);
+
+    /**
+     * 新增每周个人安全检查
+     * 
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 结果
+     */
+    public int insertTSpecPersonweekcheck(TSpecPersonweekcheck tSpecPersonweekcheck);
+
+    /**
+     * 修改每周个人安全检查
+     * 
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 结果
+     */
+    public int updateTSpecPersonweekcheck(TSpecPersonweekcheck tSpecPersonweekcheck);
+
+    /**
+     * 批量删除每周个人安全检查
+     * 
+     * @param ids 需要删除的每周个人安全检查ID
+     * @return 结果
+     */
+    public int deleteTSpecPersonweekcheckByIds(Long[] ids);
+
+    /**
+     * 删除每周个人安全检查信息
+     * 
+     * @param id 每周个人安全检查ID
+     * @return 结果
+     */
+    public int deleteTSpecPersonweekcheckById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/service/ITSpecWeekcheckService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.sems.safecheck.service;
+
+import java.util.List;
+import com.ruoyi.project.sems.safecheck.domain.TSpecWeekcheck;
+
+/**
+ * 每周安全排查Service接口
+ * 
+ * @author Li
+ * @date 2023-08-21
+ */
+public interface ITSpecWeekcheckService 
+{
+    /**
+     * 查询每周安全排查
+     * 
+     * @param id 每周安全排查ID
+     * @return 每周安全排查
+     */
+    public TSpecWeekcheck selectTSpecWeekcheckById(Long id);
+
+    /**
+     * 查询每周安全排查列表
+     * 
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 每周安全排查集合
+     */
+    public List<TSpecWeekcheck> selectTSpecWeekcheckList(TSpecWeekcheck tSpecWeekcheck);
+
+    /**
+     * 新增每周安全排查
+     * 
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 结果
+     */
+    public int insertTSpecWeekcheck(TSpecWeekcheck tSpecWeekcheck);
+
+    /**
+     * 修改每周安全排查
+     * 
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 结果
+     */
+    public int updateTSpecWeekcheck(TSpecWeekcheck tSpecWeekcheck);
+
+    /**
+     * 批量删除每周安全排查
+     * 
+     * @param ids 需要删除的每周安全排查ID
+     * @return 结果
+     */
+    public int deleteTSpecWeekcheckByIds(Long[] ids);
+
+    /**
+     * 删除每周安全排查信息
+     * 
+     * @param id 每周安全排查ID
+     * @return 结果
+     */
+    public int deleteTSpecWeekcheckById(Long id);
+}

+ 95 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/service/impl/TSpecPersonweekcheckServiceImpl.java

@@ -0,0 +1,95 @@
+package com.ruoyi.project.sems.safecheck.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.safecheck.mapper.TSpecPersonweekcheckMapper;
+import com.ruoyi.project.sems.safecheck.domain.TSpecPersonweekcheck;
+import com.ruoyi.project.sems.safecheck.service.ITSpecPersonweekcheckService;
+
+import javax.annotation.Resource;
+
+/**
+ * 每周个人安全检查Service业务层处理
+ *
+ * @author Li
+ * @date 2023-08-29
+ */
+@Service
+public class TSpecPersonweekcheckServiceImpl implements ITSpecPersonweekcheckService
+{
+    @Resource
+    private TSpecPersonweekcheckMapper tSpecPersonweekcheckMapper;
+
+    /**
+     * 查询每周个人安全检查
+     *
+     * @param id 每周个人安全检查ID
+     * @return 每周个人安全检查
+     */
+    @Override
+    public TSpecPersonweekcheck selectTSpecPersonweekcheckById(Long id)
+    {
+        return tSpecPersonweekcheckMapper.selectTSpecPersonweekcheckById(id);
+    }
+
+    /**
+     * 查询每周个人安全检查列表
+     *
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 每周个人安全检查
+     */
+    @Override
+    public List<TSpecPersonweekcheck> selectTSpecPersonweekcheckList(TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        return tSpecPersonweekcheckMapper.selectTSpecPersonweekcheckList(tSpecPersonweekcheck);
+    }
+
+    /**
+     * 新增每周个人安全检查
+     *
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecPersonweekcheck(TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        return tSpecPersonweekcheckMapper.insertTSpecPersonweekcheck(tSpecPersonweekcheck);
+    }
+
+    /**
+     * 修改每周个人安全检查
+     *
+     * @param tSpecPersonweekcheck 每周个人安全检查
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecPersonweekcheck(TSpecPersonweekcheck tSpecPersonweekcheck)
+    {
+        return tSpecPersonweekcheckMapper.updateTSpecPersonweekcheck(tSpecPersonweekcheck);
+    }
+
+    /**
+     * 批量删除每周个人安全检查
+     *
+     * @param ids 需要删除的每周个人安全检查ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecPersonweekcheckByIds(Long[] ids)
+    {
+        return tSpecPersonweekcheckMapper.deleteTSpecPersonweekcheckByIds(ids);
+    }
+
+    /**
+     * 删除每周个人安全检查信息
+     *
+     * @param id 每周个人安全检查ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecPersonweekcheckById(Long id)
+    {
+        return tSpecPersonweekcheckMapper.deleteTSpecPersonweekcheckById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/sems/safecheck/service/impl/TSpecWeekcheckServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.sems.safecheck.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.sems.safecheck.mapper.TSpecWeekcheckMapper;
+import com.ruoyi.project.sems.safecheck.domain.TSpecWeekcheck;
+import com.ruoyi.project.sems.safecheck.service.ITSpecWeekcheckService;
+
+/**
+ * 每周安全排查Service业务层处理
+ *
+ * @author Li
+ * @date 2023-08-21
+ */
+@Service("tSpecWeekcheckServiceImpl")
+public class TSpecWeekcheckServiceImpl implements ITSpecWeekcheckService
+{
+    @Autowired
+    private TSpecWeekcheckMapper tSpecWeekcheckMapper;
+
+    /**
+     * 查询每周安全排查
+     *
+     * @param id 每周安全排查ID
+     * @return 每周安全排查
+     */
+    @Override
+    public TSpecWeekcheck selectTSpecWeekcheckById(Long id)
+    {
+        return tSpecWeekcheckMapper.selectTSpecWeekcheckById(id);
+    }
+
+    /**
+     * 查询每周安全排查列表
+     *
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 每周安全排查
+     */
+    @Override
+    public List<TSpecWeekcheck> selectTSpecWeekcheckList(TSpecWeekcheck tSpecWeekcheck)
+    {
+        return tSpecWeekcheckMapper.selectTSpecWeekcheckList(tSpecWeekcheck);
+    }
+
+    /**
+     * 新增每周安全排查
+     *
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 结果
+     */
+    @Override
+    public int insertTSpecWeekcheck(TSpecWeekcheck tSpecWeekcheck)
+    {
+        return tSpecWeekcheckMapper.insertTSpecWeekcheck(tSpecWeekcheck);
+    }
+
+    /**
+     * 修改每周安全排查
+     *
+     * @param tSpecWeekcheck 每周安全排查
+     * @return 结果
+     */
+    @Override
+    public int updateTSpecWeekcheck(TSpecWeekcheck tSpecWeekcheck)
+    {
+        return tSpecWeekcheckMapper.updateTSpecWeekcheck(tSpecWeekcheck);
+    }
+
+    /**
+     * 批量删除每周安全排查
+     *
+     * @param ids 需要删除的每周安全排查ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecWeekcheckByIds(Long[] ids)
+    {
+        return tSpecWeekcheckMapper.deleteTSpecWeekcheckByIds(ids);
+    }
+
+    /**
+     * 删除每周安全排查信息
+     *
+     * @param id 每周安全排查ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTSpecWeekcheckById(Long id)
+    {
+        return tSpecWeekcheckMapper.deleteTSpecWeekcheckById(id);
+    }
+}

+ 120 - 0
master/src/main/resources/mybatis/sems/safecheck/TSpecPersonweekcheckMapper.xml

@@ -0,0 +1,120 @@
+<?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.sems.safecheck.mapper.TSpecPersonweekcheckMapper">
+
+    <resultMap type="TSpecPersonweekcheck" id="TSpecPersonweekcheckResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <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="checkDate"    column="check_date"    />
+        <result property="checkerId"    column="checker_id"    />
+        <result property="weekNo"    column="week_no"    />
+        <result property="lastWeekRisk"    column="last_week_risk"    />
+        <result property="thisWeekRisk"    column="this_week_risk"    />
+        <result property="safeCondition"    column="safe_condition"    />
+        <result property="nextWeekWork"    column="next_week_work"    />
+    </resultMap>
+
+    <sql id="selectTSpecPersonweekcheckVo">
+        select d.id,s.nick_name as checkerName, d.plant_code, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.check_date, d.checker_id, d.week_no, d.last_week_risk, d.this_week_risk, d.safe_condition, d.next_week_work from t_spec_personweekcheck d
+          left join sys_user s on d.checker_id = s.user_id
+    </sql>
+
+    <select id="selectTSpecPersonweekcheckList" parameterType="TSpecPersonweekcheck" resultMap="TSpecPersonweekcheckResult">
+        <include refid="selectTSpecPersonweekcheckVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="checkDate != null "> and check_date = #{checkDate}</if>
+            <if test="weekNo != null  and weekNo != ''"> and week_no = #{weekNo}</if>
+            <if test="lastWeekRisk != null  and lastWeekRisk != ''"> and last_week_risk = #{lastWeekRisk}</if>
+            <if test="thisWeekRisk != null  and thisWeekRisk != ''"> and this_week_risk = #{thisWeekRisk}</if>
+            <if test="safeCondition != null  and safeCondition != ''"> and safe_condition = #{safeCondition}</if>
+            <if test="nextWeekWork != null  and nextWeekWork != ''"> and next_week_work = #{nextWeekWork}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScopePlant}
+    </select>
+
+    <select id="selectTSpecPersonweekcheckById" parameterType="Long" resultMap="TSpecPersonweekcheckResult">
+        <include refid="selectTSpecPersonweekcheckVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecPersonweekcheck" parameterType="TSpecPersonweekcheck">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_spec_personweekcheck.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_spec_personweekcheck
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null">plant_code,</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="checkDate != null">check_date,</if>
+            <if test="checkerId != null">checker_id,</if>
+            <if test="weekNo != null">week_no,</if>
+            <if test="lastWeekRisk != null">last_week_risk,</if>
+            <if test="thisWeekRisk != null">this_week_risk,</if>
+            <if test="safeCondition != null">safe_condition,</if>
+            <if test="nextWeekWork != null">next_week_work,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null">#{plantCode},</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="checkDate != null">#{checkDate},</if>
+            <if test="checkerId != null">#{checkerId},</if>
+            <if test="weekNo != null">#{weekNo},</if>
+            <if test="lastWeekRisk != null">#{lastWeekRisk},</if>
+            <if test="thisWeekRisk != null">#{thisWeekRisk},</if>
+            <if test="safeCondition != null">#{safeCondition},</if>
+            <if test="nextWeekWork != null">#{nextWeekWork},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecPersonweekcheck" parameterType="TSpecPersonweekcheck">
+        update t_spec_personweekcheck
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null">plant_code = #{plantCode},</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="checkDate != null">check_date = #{checkDate},</if>
+            <if test="checkerId != null">checker_id = #{checkerId},</if>
+            <if test="weekNo != null">week_no = #{weekNo},</if>
+            <if test="lastWeekRisk != null">last_week_risk = #{lastWeekRisk},</if>
+            <if test="thisWeekRisk != null">this_week_risk = #{thisWeekRisk},</if>
+            <if test="safeCondition != null">safe_condition = #{safeCondition},</if>
+            <if test="nextWeekWork != null">next_week_work = #{nextWeekWork},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecPersonweekcheckById" parameterType="Long">
+        update t_spec_personweekcheck set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecPersonweekcheckByIds" parameterType="String">
+        update t_spec_personweekcheck set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 150 - 0
master/src/main/resources/mybatis/sems/safecheck/TSpecWeekcheckMapper.xml

@@ -0,0 +1,150 @@
+<?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.sems.safecheck.mapper.TSpecWeekcheckMapper">
+
+    <resultMap type="TSpecWeekcheck" id="TSpecWeekcheckResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <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="checkDate"    column="check_date"    />
+        <result property="checkerId"    column="checker_id"    />
+        <result property="weekNo"    column="week_no"    />
+        <result property="safeAdminId"    column="safe_admin_id"    />
+        <result property="safeAdminName"    column="safe_admin_name"    />
+        <result property="safeDirId"    column="safe_dir_id"    />
+        <result property="safeDirName"    column="safe_dir_name"    />
+        <result property="lastWeekRisk"    column="last_week_risk"    />
+        <result property="thisWeekRisk"    column="this_week_risk"    />
+        <result property="safeCondition"    column="safe_condition"    />
+        <result property="nextWeekWork"    column="next_week_work"    />
+        <result property="safeAdminSug"    column="safe_admin_sug"    />
+        <result property="safeDirSug"    column="safe_dir_sug"    />
+        <result property="safeAdminDate"    column="safe_admin_date"    />
+        <result property="safeDirDate"    column="safe_dir_date"    />
+        <result property="status"    column="status"    />
+    </resultMap>
+
+    <sql id="selectTSpecWeekcheckVo">
+        select d.id, d.plant_code,d.status,d.safe_admin_date,d.safe_dir_date, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.check_date, d.checker_id, d.week_no, d.safe_admin_id, d.safe_admin_name, d.safe_dir_id, d.safe_dir_name, d.last_week_risk, d.this_week_risk, d.safe_condition, d.next_week_work, d.safe_admin_sug, d.safe_dir_sug from t_spec_weekcheck d
+    </sql>
+
+    <select id="selectTSpecWeekcheckList" parameterType="TSpecWeekcheck" resultMap="TSpecWeekcheckResult">
+        <include refid="selectTSpecWeekcheckVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="checkDate != null "> and check_date = #{checkDate}</if>
+            <if test="checkerId != null "> and checker_id = #{checkerId}</if>
+            <if test="lastWeekRisk != null  and lastWeekRisk != ''"> and last_week_risk = #{lastWeekRisk}</if>
+            <if test="thisWeekRisk != null  and thisWeekRisk != ''"> and this_week_risk = #{thisWeekRisk}</if>
+            <if test="safeCondition != null  and safeCondition != ''"> and safe_condition = #{safeCondition}</if>
+            <if test="nextWeekWork != null  and nextWeekWork != ''"> and next_week_work = #{nextWeekWork}</if>
+            <if test="safeAdminSug != null  and safeAdminSug != ''"> and safe_admin_sug = #{safeAdminSug}</if>
+            <if test="safeDirSug != null  and safeDirSug != ''"> and safe_dir_sug = #{safeDirSug}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+    </select>
+
+    <select id="selectTSpecWeekcheckById" parameterType="Long" resultMap="TSpecWeekcheckResult">
+        <include refid="selectTSpecWeekcheckVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSpecWeekcheck" parameterType="TSpecWeekcheck">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_spec_weekcheck.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_spec_weekcheck
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null and plantCode != ''">plant_code,</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="checkDate != null">check_date,</if>
+            <if test="checkerId != null">checker_id,</if>
+            <if test="weekNo != null">week_no,</if>
+            <if test="safeAdminId != null">safe_admin_id,</if>
+            <if test="safeAdminName != null">safe_admin_name,</if>
+            <if test="safeDirId != null">safe_dir_id,</if>
+            <if test="safeDirName != null">safe_dir_name,</if>
+            <if test="lastWeekRisk != null">last_week_risk,</if>
+            <if test="thisWeekRisk != null">this_week_risk,</if>
+            <if test="safeCondition != null">safe_condition,</if>
+            <if test="nextWeekWork != null">next_week_work,</if>
+            <if test="safeAdminSug != null">safe_admin_sug,</if>
+            <if test="safeDirSug != null">safe_dir_sug,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null and plantCode != ''">#{plantCode},</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="checkDate != null">#{checkDate},</if>
+            <if test="checkerId != null">#{checkerId},</if>
+            <if test="weekNo != null">#{weekNo},</if>
+            <if test="safeAdminId != null">#{safeAdminId},</if>
+            <if test="safeAdminName != null">#{safeAdminName},</if>
+            <if test="safeDirId != null">#{safeDirId},</if>
+            <if test="safeDirName != null">#{safeDirName},</if>
+            <if test="lastWeekRisk != null">#{lastWeekRisk},</if>
+            <if test="thisWeekRisk != null">#{thisWeekRisk},</if>
+            <if test="safeCondition != null">#{safeCondition},</if>
+            <if test="nextWeekWork != null">#{nextWeekWork},</if>
+            <if test="safeAdminSug != null">#{safeAdminSug},</if>
+            <if test="safeDirSug != null">#{safeDirSug},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSpecWeekcheck" parameterType="TSpecWeekcheck">
+        update t_spec_weekcheck
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null and plantCode != ''">plant_code = #{plantCode},</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="checkDate != null">check_date = #{checkDate},</if>
+            <if test="checkerId != null">checker_id = #{checkerId},</if>
+            <if test="weekNo != null">week_no = #{weekNo},</if>
+            <if test="safeAdminId != null">safe_admin_id = #{safeAdminId},</if>
+            <if test="safeAdminName != null">safe_admin_name = #{safeAdminName},</if>
+            <if test="safeDirId != null">safe_dir_id = #{safeDirId},</if>
+            <if test="safeDirName != null">safe_dir_name = #{safeDirName},</if>
+            <if test="lastWeekRisk != null">last_week_risk = #{lastWeekRisk},</if>
+            <if test="thisWeekRisk != null">this_week_risk = #{thisWeekRisk},</if>
+            <if test="safeCondition != null">safe_condition = #{safeCondition},</if>
+            <if test="nextWeekWork != null">next_week_work = #{nextWeekWork},</if>
+            <if test="safeAdminSug != null">safe_admin_sug = #{safeAdminSug},</if>
+            <if test="safeDirSug != null">safe_dir_sug = #{safeDirSug},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="safeAdminDate != null">safe_admin_date = #{safeAdminDate},</if>
+            <if test="safeDirDate != null">safe_dir_date = #{safeDirDate},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTSpecWeekcheckById" parameterType="Long">
+        update t_spec_weekcheck set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTSpecWeekcheckByIds" parameterType="String">
+        update t_spec_weekcheck set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

BIN
master/src/main/resources/static/word/sems/check/dailycheck.docx


BIN
master/src/main/resources/static/word/sems/check/weekcheck.docx


+ 10 - 0
ui/src/api/sems/safecheck/dailycheck.js

@@ -52,6 +52,16 @@ export function exportDailycheck(query) {
   })
 }
 
+// 下载
+export function downloadDailycheck(query) {
+  return request({
+    url: '/safecheck/dailycheck/downloadDailycheck',
+    method: 'get',
+    params: query
+  })
+}
+
+
 //获取word url
 export function wordView(id) {
   return request({

+ 53 - 0
ui/src/api/sems/safecheck/personweekcheck.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询每周个人安全检查列表
+export function listPersonweekcheck(query) {
+  return request({
+    url: '/safecheck/personweekcheck/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询每周个人安全检查详细
+export function getPersonweekcheck(id) {
+  return request({
+    url: '/safecheck/personweekcheck/' + id,
+    method: 'get'
+  })
+}
+
+// 新增每周个人安全检查
+export function addPersonweekcheck(data) {
+  return request({
+    url: '/safecheck/personweekcheck',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改每周个人安全检查
+export function updatePersonweekcheck(data) {
+  return request({
+    url: '/safecheck/personweekcheck',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除每周个人安全检查
+export function delPersonweekcheck(id) {
+  return request({
+    url: '/safecheck/personweekcheck/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出每周个人安全检查
+export function exportPersonweekcheck(query) {
+  return request({
+    url: '/safecheck/personweekcheck/export',
+    method: 'get',
+    params: query
+  })
+}

+ 78 - 0
ui/src/api/sems/safecheck/weekcheck.js

@@ -0,0 +1,78 @@
+import request from '@/utils/request'
+
+// 查询每周安全排查列表
+export function listWeekcheck(query) {
+  return request({
+    url: '/safecheck/weekcheck/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询每周安全排查
+export function getWeekcheckByWeek(query) {
+  return request({
+    url: '/safecheck/weekcheck/getWeekcheckByWeek',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询每周安全排查详细
+export function getWeekcheck(id) {
+  return request({
+    url: '/safecheck/weekcheck/' + id,
+    method: 'get'
+  })
+}
+
+// 新增每周安全排查
+export function addWeekcheck(data) {
+  return request({
+    url: '/safecheck/weekcheck',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改每周安全排查
+export function updateWeekcheck(data) {
+  return request({
+    url: '/safecheck/weekcheck',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除每周安全排查
+export function delWeekcheck(id) {
+  return request({
+    url: '/safecheck/weekcheck/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出每周安全排查
+export function exportWeekcheck(query) {
+  return request({
+    url: '/safecheck/weekcheck/export',
+    method: 'get',
+    params: query
+  })
+}
+//获取word url
+export function wordView(id) {
+  return request({
+    url: '/safecheck/weekcheck/wordView/' + id,
+    method: 'get',
+  })
+}
+
+// 申请处理
+export function handle(data) {
+  return request({
+    url: '/safecheck/weekcheck/handle',
+    method: 'put',
+    data: data
+  })
+}

+ 252 - 0
ui/src/views/approve/approveDetail/semsWeekCheck-detail.vue

@@ -0,0 +1,252 @@
+<template>
+  <el-dialog  :close-on-click-modal="false"
+              :title="!this.taskForm.taskId == '' ? $t('处理') : $t('详情')"
+
+              width="70%"
+              :visible.sync="visible">
+    <el-form ref="form" :model="form" label-width="80px">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item  label-width="150px" label="检查日期" prop="checkDate">
+            <el-date-picker clearable size="small" style="width: 200px"
+                            v-model="dataForm.checkDate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="选择检查日期">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label-width="150px" label="周" prop="weekNo">
+            <el-input v-model="dataForm.weekNo" placeholder="请输入周" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+
+      <el-form-item label-width="150px" label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
+        <el-input v-model="dataForm.lastWeekRisk" type="textarea" placeholder="请输入内容" />
+      </el-form-item>
+      <el-form-item label-width="150px" label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
+        <el-input v-model="dataForm.thisWeekRisk" type="textarea" placeholder="请输入内容" />
+      </el-form-item>
+      <el-form-item label-width="150px" label="本周安全管理情况评价">
+        <el-radio-group v-model="dataForm.safeCondition">
+          <el-radio label="安全风险可控,无较大(质量)安全风险隐患">安全风险可控,无较大(质量)安全风险隐患</el-radio>
+          <el-radio label="存在安全风险隐患,需尽快采取防范措施">存在安全风险隐患,需尽快采取防范措施</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label-width="150px" label="下周工作重点" prop="nextWeekWork">
+        <el-input v-model="dataForm.nextWeekWork" type="textarea" placeholder="请输入内容" />
+      </el-form-item>
+      <el-form-item label-width="150px" label="安全管理员" prop="safeAdminId">
+        <el-input v-model="dataForm.safeAdminName" placeholder="请输入安全管理员" />
+      </el-form-item>
+      <el-form-item label-width="150px" label="安全管理员意见" prop="safeAdminSug">
+        <el-input v-model="dataForm.safeAdminSug" type="textarea" placeholder="请输入内容" />
+      </el-form-item>
+      <el-form-item label-width="150px" label="安全总监" prop="safeDirId">
+        <el-input v-model="dataForm.safeDirName" placeholder="请输入安全总监" />
+      </el-form-item>
+      <el-form-item label-width="150px" label="安全总监意见" prop="safeDirSug">
+        <el-input v-model="dataForm.safeDirSug" type="textarea" placeholder="请输入内容" />
+      </el-form-item>
+    </el-form>
+    <form ref="downloadForm" :action="downloadAction" target="FORMSUBMIT">
+      <input name="approveId" v-model="dataForm.id"  hidden  />
+      <input name="processId" v-model="dataForm.processId"  hidden  />
+    </form>
+    <span slot="footer" class="dialog-footer">
+      <el-button v-if="this.taskForm.taskId == ''" @click="visible = false">{{$t('message.return')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="primary" @click="dataFormSubmit(1)" :disabled="submitDisabled">{{$t('通过')}}</el-button>
+      <el-button v-if="!this.taskForm.taskId == ''" type="danger" @click="dataFormSubmit(0)" :disabled="submitDisabled">{{$t('拒绝')}}</el-button>
+    </span>
+    <div>
+      <span>{{$t('流转详情')}}</span>
+      <el-table :data="historyList" border v-loading="historyLoading" style="width: 100%;">
+        <el-table-column prop="taskName" header-align="center" align="center" :label="$t('流程进度')"></el-table-column>
+        <el-table-column prop="userName" header-align="center" align="center" :label="$t('姓名')"></el-table-column>
+        <el-table-column prop="taskCreateTime" header-align="center" align="center" :label="$t('开始时间')"></el-table-column>
+        <el-table-column prop="taskEndTime" header-align="center" align="center" :label="$t('结束时间')"></el-table-column>
+        <el-table-column prop="comment" header-align="center" align="center" :label="$t('审批意见')"></el-table-column>
+      </el-table>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import {getToken} from "@/utils/auth";
+import {getHistorylist} from "@/api/ehs/approvedanger";
+import {getWeekcheck , handle} from "@/api/sems/safecheck/weekcheck";
+
+export default {
+  name: "semsWeekCheck-detail",
+  data() {
+    return {
+      loading: true,
+      // 总条数
+      total: 0,
+      approvedangerList: [],
+      recordVisible: false,
+      // 遮罩层
+      historyLoading: false,
+      //显示详细列表
+      IfDataIndex: false,
+      //流转列表
+      historyList: [],
+      visible: false,
+      devList: [],
+      recordList: [],
+      dataList: [],
+      fileTips: '',
+      showDelay: false,
+      submitDisabled: false,
+      dataListLoading:true,
+      taskName: '',
+      dataForm: {
+        id: 0,
+        userId: '',
+        devId: '',
+        devType: '',
+        approveType: '',
+        content: '',
+        fileUrls: '',
+        reUrls: '',
+        status: '',
+        creattime: '',
+        plantCode: '',
+        unit: '',
+        devname: '',
+        devno: '',
+        files: [],
+        delayDate: '',
+        delayReason: '',
+        delayMeasure: '',
+        delayNotice: ''
+      },
+      taskForm: {
+        comment: '',
+        taskId: '',
+        files: '',
+        govDate: '',
+        govFileList: []
+      },
+      // 查询参数
+      queryParams: {
+        processId: null,
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/sems/specfile/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      dataRule: {
+      },
+      downloadAction: process.env.VUE_APP_BASE_API +'/sems/approve/exportPDF',
+      approveOption: [],
+      devTypeOption: [],
+      belong: '',
+      fileList: [],
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+
+  },
+  methods: {
+    init (id, taskId, processId,taskName) {
+      this.dataForm.processId = processId
+      this.taskName = taskName
+      this.taskForm.taskId = taskId
+      this.dataForm.id = id || 0
+      this.visible = true
+      this.queryParams.processId = processId;
+      getHistorylist(this.queryParams).then(response => {
+        this.historyList = response.rows;
+        this.historyLoading = false
+      });
+      getWeekcheck(id).then(response => {
+        this.dataForm = response.data;
+      });
+    },
+
+    // 取消按钮
+    cancel() {
+      this.visible = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: 0,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        delFlag: null,
+        deptId: null
+      };
+      this.resetForm("form");
+    },
+
+    /** 提交按钮 */
+    // 表单提交
+    dataFormSubmit (val) {
+      this.submitDisabled = true
+
+      this.taskForm.condition = val
+      this.taskForm.govFiles = this.dataForm.files
+      handle(this.taskForm).then(response => {
+        this.submitDisabled = false
+        this.msgSuccess(this.$t('处理成功'));
+        this.visible = false;
+        this.$emit('refreshDataList')
+      });
+      this.$nextTick(function () {
+        this.comment = ''
+      })
+    },
+  }
+}
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 10 - 0
ui/src/views/approve/pending/index.vue

@@ -132,6 +132,8 @@
     <offlinevalve-detail v-if="offlinevalveDetailVisible" ref="offlinevalveDetail" @refreshDataList="getList"></offlinevalve-detail>
     <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
     <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
+    <sems-week-check-detail v-if="semsWeekcheckDetailVisible" ref="semsWeekcheckDetail" @refreshDataList="getList"></sems-week-check-detail>
+
   </div>
 </template>
 
@@ -153,10 +155,12 @@
   import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
   import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
   import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
+  import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
 
   export default {
     name: "Pending",
     components: {
+      SemsWeekCheckDetail,
       SaiApplyDetail,
       SafetychangeDetail,
       OfflinevalveDetail,
@@ -188,6 +192,7 @@
         offlinevalveDetailVisible:false,
         safetychangeDetailVisible:false,
         saiApplyVisible:false,
+        semsWeekcheckDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -421,6 +426,11 @@
           this.$nextTick(() => {
             this.$refs.saiApplyDetail.init(row.approveObject.saiApplyId, row.taskId, row.processId, row.taskName)
           })
+        }else if (row.processName == "每周安全排查报告") {
+          this.semsWeekcheckDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.semsWeekcheckDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
         } else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;

+ 10 - 0
ui/src/views/approve/taskdone/index.vue

@@ -61,6 +61,8 @@
     <offlinevalve-detail v-if="offlinevalveDetailVisible" ref="offlinevalveDetail" @refreshDataList="getList"></offlinevalve-detail>
     <safetychange-detail v-if="safetychangeDetailVisible" ref="safetychangeDetail" @refreshDataList="getList"></safetychange-detail>
     <sai-apply-detail v-if="saiApplyVisible" ref="saiApplyDetail" @refreshDataList="getList"></sai-apply-detail>
+    <sems-week-check-detail v-if="semsWeekcheckDetailVisible" ref="semsWeekcheckDetail" @refreshDataList="getList"></sems-week-check-detail>
+
   </div>
 </template>
 
@@ -81,10 +83,12 @@
   import OfflinevalveDetail from "@/views/approve/approveDetail/offlinevalve-detail";
   import SafetychangeDetail from "@/views/approve/approveDetail/safetychange-detail";
   import SaiApplyDetail from "@/views/approve/approveDetail/sai-apply-detail";
+  import SemsWeekCheckDetail from "@/views/approve/approveDetail/semsWeekCheck-detail";
 
   export default {
     name: "Taskdone",
     components: {
+      SemsWeekCheckDetail,
       SaiApplyDetail,
       SafetychangeDetail,
       OfflinevalveDetail,
@@ -105,6 +109,7 @@
         offlinevalveDetailVisible:false,
         safetychangeDetailVisible:false,
         saiApplyVisible:false,
+        semsWeekcheckDetailVisible: false,
         // 选中数组
         ids: [],
         // 非单个禁用
@@ -256,6 +261,11 @@
           this.$nextTick(() => {
             this.$refs.saiApplyDetail.init(row.approveObject.saiApplyId, row.taskId, row.processId, row.taskName)
           })
+        }else if (row.processName == "每周安全排查报告") {
+          this.semsWeekcheckDetailVisible = true
+          this.$nextTick(() => {
+            this.$refs.semsWeekcheckDetail.init(row.approveObject.id, row.taskId, row.processId, row.taskName)
+          })
         } else {
           this.approveInfo = row;
           this.infoTaskName = row.taskName;

+ 303 - 263
ui/src/views/sems/safecheck/dailycheck/index.vue

@@ -12,51 +12,51 @@
       </el-form-item>
       <el-form-item label="检查日期" prop="checkDate">
         <el-date-picker clearable size="small" style="width: 200px"
-          v-model="queryParams.checkDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="选择检查日期">
+                        v-model="queryParams.checkDate"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="选择检查日期">
         </el-date-picker>
       </el-form-item>
       <el-form-item label="人员" prop="cPerson">
         <el-select v-model="queryParams.cPerson" placeholder="请选择人员" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item label="设备本体" prop="cDevice">
         <el-select v-model="queryParams.cDevice" placeholder="请选择设备本体" clearable size="small">
-          <el-option label="√" value="√" />
-          <el-option label="×" value="×" />
+          <el-option label="√" value="√"/>
+          <el-option label="×" value="×"/>
         </el-select>
       </el-form-item>
       <el-form-item label="安全附件" prop="cSafety">
         <el-select v-model="queryParams.cSafety" placeholder="请选择安全附件" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item label="环境" prop="cEnv">
         <el-select v-model="queryParams.cEnv" placeholder="请选择环境" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item label="政府" prop="cGov">
         <el-select v-model="queryParams.cGov" placeholder="请选择政府" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item label="投诉举报" prop="cComplaint">
         <el-select v-model="queryParams.cComplaint" placeholder="请选择投诉举报" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item label="舆情信息" prop="cOpinion">
         <el-select v-model="queryParams.cOpinion" placeholder="请选择舆情信息" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item label="其他" prop="cOther">
         <el-select v-model="queryParams.cOther" placeholder="请选择其他" clearable size="small">
-          <el-option label="请选择字典生成" value="" />
+          <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -73,7 +73,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['safecheck:dailycheck:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -83,7 +84,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['safecheck:dailycheck:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -93,17 +95,9 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['safecheck:dailycheck:remove']"
-        >删除</el-button>
+        >删除
+        </el-button>
       </el-col>
-        <el-col :span="1.5">
-            <el-button
-                    type="info"
-                    icon="el-icon-upload2"
-                    size="mini"
-                    @click="handleImport"
-                    v-hasPermi="['safecheck:dailycheck:edit']"
-            >导入</el-button>
-        </el-col>
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -111,13 +105,25 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['safecheck:dailycheck:export']"
-        >导出</el-button>
+        >导出
+        </el-button>
       </el-col>
-	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDownload"
+        >批量下载
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="dailycheckList" @selection-change="handleSelectionChange" :height="clientHeight" border>
-      <el-table-column type="selection" width="55" align="center" />
+    <el-table v-loading="loading" :data="dailycheckList" @selection-change="handleSelectionChange"
+              :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center"/>
       <el-table-column label="装置名称" align="center" prop="plantCode" :show-overflow-tooltip="true"/>
       <el-table-column label="检查日期" align="center" prop="checkDate" width="100">
         <template slot-scope="scope">
@@ -142,19 +148,21 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['safecheck:dailycheck:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['safecheck:dailycheck:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
           <el-button
-                     size="mini"
-                     type="text"
-                     icon="el-icon-document"
-                     @click="wordView(scope.row)"
+            size="mini"
+            type="text"
+            icon="el-icon-document"
+            @click="wordView(scope.row)"
           >预览
           </el-button>
         </template>
@@ -174,7 +182,7 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item :label="$t('装置')" prop="plantCode">
           <el-select v-model="form.plantCode" :placeholder="$t('请选择')+ $t('装置')" filterable clearable size="small"
-                     >
+          >
             <el-option
               v-for="dict in plantOptions"
               :key="dict.name"
@@ -192,115 +200,115 @@
           </el-date-picker>
         </el-form-item>
         <div class="checklist-table">
-        <table cellpadding="10" cellspacing="0" border="1" style="width:100%">
-          <tr>
-            <th>序号</th>
-            <th>检查项目</th>
-            <th>检查内容</th>
-            <th>检查结果</th>
-          </tr>
-          <tr>
-            <td>1</td>
-            <td>人员</td>
-            <td>按检查项目细化,如:人员配备、违章作业、安全教育等</td>
-            <td >
-              <el-radio-group v-model="form.cPerson">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-            <td>2</td>
-            <td>设备本体</td>
-            <td>设备定期检验、自行检查、设备本体、安全附件、安全保护装置、有无事故隐患等</td>
-            <td style="width: 150px;">
-              <div class="radio-group-horizontal">
-              <el-radio-group v-model="form.cDevice">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-              </div>
-            </td>
-          </tr>
-          <tr>
-            <td>3</td>
-            <td>安全附件或安全保护装置</td>
-            <td>安全阀、爆破片、紧急切断阀、压力表、液位计、壁温测试仪表、阻火器等</td>
-            <td>
-              <el-radio-group v-model="form.cSafety">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-            <td>4</td>
-            <td>环境</td>
-            <td>安全通道、照明、防火、防雷、防风、防雨、防冻、防腐设施以及警示标志、排放口、的设置等</td>
-            <td>
-              <el-radio-group v-model="form.cEnv">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-            <td>5</td>
-            <td>政府监督、通报、预警</td>
-            <td>发现不合格项</td>
-            <td>
-              <el-radio-group v-model="form.cGov">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-            <td>6</td>
-            <td>投诉举报</td>
-            <td>发现不合格项</td>
-            <td>
-              <el-radio-group v-model="form.cComplaint">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-            <td>7</td>
-            <td>舆情信息</td>
-            <td>发现不合格项</td>
-            <td>
-              <el-radio-group v-model="form.cOpinion">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-            <td>8</td>
-            <td>其它</td>
-            <td>锅炉、压力容器、压力管道、电梯、起重机械场车六大类特种设备可能危及安全的其它情况</td>
-            <td>
-              <el-radio-group v-model="form.cOther">
-                <el-radio label="√">√</el-radio>
-                <el-radio label="×">X</el-radio>
-              </el-radio-group>
-            </td>
-          </tr>
-          <tr>
-<!--            <td colspan="4">-->
-<!--              不合格情况说明及采取的防范措施:-->
-<!--              <el-form-item label="不合格情况说明及采取的防范措施:" prop="explain">-->
-<!--                <el-input v-model="form.explain" type="textarea" placeholder="请输入内容" />-->
-<!--              </el-form-item>-->
-<!--            </td>-->
-          </tr>
-        </table>
+          <table cellpadding="10" cellspacing="0" border="1" style="width:100%">
+            <tr>
+              <th>序号</th>
+              <th>检查项目</th>
+              <th>检查内容</th>
+              <th>检查结果</th>
+            </tr>
+            <tr>
+              <td>1</td>
+              <td>人员</td>
+              <td>按检查项目细化,如:人员配备、违章作业、安全教育等</td>
+              <td>
+                <el-radio-group v-model="form.cPerson">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <td>2</td>
+              <td>设备本体</td>
+              <td>设备定期检验、自行检查、设备本体、安全附件、安全保护装置、有无事故隐患等</td>
+              <td style="width: 150px;">
+                <div class="radio-group-horizontal">
+                  <el-radio-group v-model="form.cDevice">
+                    <el-radio label="√">√</el-radio>
+                    <el-radio label="×">X</el-radio>
+                  </el-radio-group>
+                </div>
+              </td>
+            </tr>
+            <tr>
+              <td>3</td>
+              <td>安全附件或安全保护装置</td>
+              <td>安全阀、爆破片、紧急切断阀、压力表、液位计、壁温测试仪表、阻火器等</td>
+              <td>
+                <el-radio-group v-model="form.cSafety">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <td>4</td>
+              <td>环境</td>
+              <td>安全通道、照明、防火、防雷、防风、防雨、防冻、防腐设施以及警示标志、排放口、的设置等</td>
+              <td>
+                <el-radio-group v-model="form.cEnv">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <td>5</td>
+              <td>政府监督、通报、预警</td>
+              <td>发现不合格项</td>
+              <td>
+                <el-radio-group v-model="form.cGov">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <td>6</td>
+              <td>投诉举报</td>
+              <td>发现不合格项</td>
+              <td>
+                <el-radio-group v-model="form.cComplaint">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <td>7</td>
+              <td>舆情信息</td>
+              <td>发现不合格项</td>
+              <td>
+                <el-radio-group v-model="form.cOpinion">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <td>8</td>
+              <td>其它</td>
+              <td>锅炉、压力容器、压力管道、电梯、起重机械场车六大类特种设备可能危及安全的其它情况</td>
+              <td>
+                <el-radio-group v-model="form.cOther">
+                  <el-radio label="√">√</el-radio>
+                  <el-radio label="×">X</el-radio>
+                </el-radio-group>
+              </td>
+            </tr>
+            <tr>
+              <!--            <td colspan="4">-->
+              <!--              不合格情况说明及采取的防范措施:-->
+              <!--              <el-form-item label="不合格情况说明及采取的防范措施:" prop="explain">-->
+              <!--                <el-input v-model="form.explain" type="textarea" placeholder="请输入内容" />-->
+              <!--              </el-form-item>-->
+              <!--            </td>-->
+            </tr>
+          </table>
         </div>
         <el-form-item label="不合格情况说明及采取的防范措施" prop="explain">
-          <el-input v-model="form.explain" :rows="5" type="textarea" placeholder="请输入内容" />
+          <el-input v-model="form.explain" :rows="5" type="textarea" placeholder="请输入内容"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -308,38 +316,40 @@
         <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>
-    <el-dialog  :close-on-click-modal="false" v-loading="loadingFlash" element-loading-background="rgba(0,0,0,0.2)" v-dialogDrag :title="pdf.title"
-                :visible.sync="pdf.open" width="1300px" :center="true" append-to-body>
+    <!-- 用户导入对话框 -->
+    <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>
+    <el-dialog :close-on-click-modal="false" v-loading="loadingFlash" element-loading-background="rgba(0,0,0,0.2)"
+               v-dialogDrag :title="pdf.title"
+               :visible.sync="pdf.open" width="1300px" :center="true" append-to-body>
       <div style="margin-top: -60px;float: right;margin-right: 40px;">
         <el-button size="mini" type="text" @click="openPdf">{{ $t('新页面打开PDF') }}</el-button>
       </div>
@@ -356,21 +366,33 @@
         </el-carousel>
       </div>
     </el-dialog>
-
+    <form ref="downloadForm2" :action="downloadWordAction" target="FORMSUBMIT">
+      <input name="id" v-model="downloadForm2.id" hidden/>
+    </form>
   </div>
 </template>
 
 <script>
-import {wordView, listDailycheck, getDailycheck, delDailycheck, addDailycheck, updateDailycheck, exportDailycheck, importTemplate} from "@/api/sems/safecheck/dailycheck";
-import { treeselect } from "@/api/system/dept";
-import { getToken } from "@/utils/auth";
+import {
+  wordView,
+  downloadDailycheck,
+  listDailycheck,
+  getDailycheck,
+  delDailycheck,
+  addDailycheck,
+  updateDailycheck,
+  exportDailycheck,
+  importTemplate
+} from "@/api/sems/safecheck/dailycheck";
+import {treeselect} from "@/api/system/dept";
+import {getToken} from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {mylistPlant} from "@/api/system/plant";
 
 export default {
   name: "Dailycheck",
-  components: { Treeselect },
+  components: {Treeselect},
   data() {
     return {
       // 遮罩层
@@ -395,24 +417,24 @@ export default {
       // 部门树选项
       deptOptions: undefined,
       plantOptions: [],
-      clientHeight:300,
+      clientHeight: 300,
       // 是否显示弹出层
       open: false,
-        // 用户导入参数
-        upload: {
-            // 是否显示弹出层(用户导入)
-            open: false,
-            // 弹出层标题(用户导入)
-            title: "",
-            // 是否禁用上传
-            isUploading: false,
-            // 是否更新已经存在的用户数据
-            updateSupport: 0,
-            // 设置上传的请求头部
-            headers: { Authorization: "Bearer " + getToken() },
-            // 上传的地址
-            url: process.env.VUE_APP_BASE_API + "/safecheck/dailycheck/importData"
-        },
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/safecheck/dailycheck/importData"
+      },
       pdf: {
         title: '',
         pdfUrl: '',
@@ -440,25 +462,29 @@ export default {
       },
       // 表单参数
       form: {},
+      downloadForm2: {
+        id: '',
+      },
+      downloadWordAction: process.env.VUE_APP_BASE_API + '/safecheck/dailycheck/downloadDailycheck',
       // 表单校验
       rules: {
         plantCode: [
-          { required: true, message: "装置名称不能为空", trigger: "blur" }
+          {required: true, message: "装置名称不能为空", trigger: "blur"}
         ],
       }
     };
   },
   watch: {
-        // 根据名称筛选部门树
-        deptName(val) {
-            this.$refs.tree.filter(val);
-        }
-   },
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   created() {
-      //设置表格高度对应屏幕高度
-      this.$nextTick(() => {
-          this.clientHeight = document.body.clientHeight -250
-      })
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 250
+    })
     this.getList();
     this.getTreeselect();
     let plantParams = {
@@ -478,12 +504,12 @@ export default {
         this.loading = false;
       });
     },
-     /** 查询部门下拉树结构 */
-     getTreeselect() {
-          treeselect().then(response => {
-              this.deptOptions = response.data;
-          });
-     },
+    /** 查询部门下拉树结构 */
+    getTreeselect() {
+      treeselect().then(response => {
+        this.deptOptions = response.data;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -526,7 +552,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -569,62 +595,75 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$confirm('是否确认删除?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return delDailycheck(ids);
-        }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return delDailycheck(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
+    },
+    handleDownload() {
+      const ids = this.ids;
+      this.downloadForm2.id = ids.join(',')
+      this.$refs['downloadForm2'].submit()
+
+      // this.$confirm('是否确认下载选中每日安全检查数据项?', "警告", {
+      //   confirmButtonText: "确定",
+      //   cancelButtonText: "取消",
+      //   type: "warning"
+      // }).then(function () {
+      //   this.$refs['downloadForm2'].submit()
+      // })
     },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
       this.$confirm('是否确认导出所有每日安全检查数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return exportDailycheck(queryParams);
-        }).then(response => {
-          this.download(response.msg);
-        })
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportDailycheck(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();
+    },
+    wordView(row) {
+      wordView(row.id).then(response => {
+        console.log(response.msg)
+        this.handleSee("每日检查记录", 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();
-      },
-      wordView(row) {
-        wordView(row.id).then(response => {
-          console.log(response.msg)
-          this.handleSee("每日检查记录", response.msg)
-        });
-      },
     handleSee(fileName, url) {
       //office预览
       this.loadingFlash = true
@@ -713,6 +752,7 @@ export default {
 .checklist-table th {
   background-color: #f5f5f5;
 }
+
 .radio-group-horizontal {
   display: flex;
   justify-content: space-around;

+ 454 - 0
ui/src/views/sems/safecheck/personweekcheck/index.vue

@@ -0,0 +1,454 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="装置名称" prop="plantCode">
+        <el-input
+          v-model="queryParams.plantCode"
+          placeholder="请输入装置名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检查日期" prop="checkDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.checkDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择检查日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="周" prop="weekNo">
+        <el-input
+          v-model="queryParams.weekNo"
+          placeholder="请输入周"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
+        <el-input
+          v-model="queryParams.lastWeekRisk"
+          placeholder="请输入上周安全风险隐患问题整改核实情况"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
+        <el-input
+          v-model="queryParams.thisWeekRisk"
+          placeholder="请输入本周主要安全风险隐患和整改情况"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="本周安全管理情况评价" prop="safeCondition">
+        <el-input
+          v-model="queryParams.safeCondition"
+          placeholder="请输入本周安全管理情况评价"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="下周工作重点" prop="nextWeekWork">
+        <el-input
+          v-model="queryParams.nextWeekWork"
+          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="['safecheck:personweekcheck: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="['safecheck:personweekcheck: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="['safecheck:personweekcheck:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['safecheck:personweekcheck:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="personweekcheckList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="装置名称" align="center" prop="plantCode" :show-overflow-tooltip="true"/>
+      <el-table-column label="检查日期" align="center" prop="checkDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.checkDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="安全员" align="center" prop="checkerName" :show-overflow-tooltip="true"/>
+      <el-table-column label="周" align="center" prop="weekNo" :show-overflow-tooltip="true"/>
+      <el-table-column label="上周安全风险隐患问题整改核实情况" align="center" prop="lastWeekRisk" :show-overflow-tooltip="true"/>
+      <el-table-column label="本周主要安全风险隐患和整改情况" align="center" prop="thisWeekRisk" :show-overflow-tooltip="true"/>
+      <el-table-column label="本周安全管理情况评价" align="center" prop="safeCondition" :show-overflow-tooltip="true"/>
+      <el-table-column label="下周工作重点" align="center" prop="nextWeekWork" :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="['safecheck:personweekcheck:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['safecheck:personweekcheck: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="900px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="150px">
+        <el-form-item label="装置名称" prop="plantCode">
+          <el-input v-model="form.plantCode" placeholder="请输入装置名称" />
+        </el-form-item>
+        <el-form-item label="检查日期" prop="checkDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.checkDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择检查日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="周" prop="weekNo">
+          <el-input v-model="form.weekNo" placeholder="请输入周" />
+        </el-form-item>
+        <el-form-item label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
+          <el-input v-model="form.lastWeekRisk" placeholder="请输入上周安全风险隐患问题整改核实情况" />
+        </el-form-item>
+        <el-form-item label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
+          <el-input v-model="form.thisWeekRisk" placeholder="请输入本周主要安全风险隐患和整改情况" />
+        </el-form-item>
+        <el-form-item label="本周安全管理情况评价" prop="safeCondition">
+          <el-input v-model="form.safeCondition" placeholder="请输入本周安全管理情况评价" />
+        </el-form-item>
+        <el-form-item label="下周工作重点" prop="nextWeekWork">
+          <el-input v-model="form.nextWeekWork" 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 { listPersonweekcheck, getPersonweekcheck, delPersonweekcheck, addPersonweekcheck, updatePersonweekcheck, exportPersonweekcheck, importTemplate} from "@/api/sems/safecheck/personweekcheck";
+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: "Personweekcheck",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 每周个人安全检查表格数据
+      personweekcheckList: [],
+      // 弹出层标题
+      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 + "/safecheck/personweekcheck/importData"
+        },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        plantCode: null,
+        checkDate: null,
+        weekNo: null,
+        lastWeekRisk: null,
+        thisWeekRisk: null,
+        safeCondition: null,
+        nextWeekWork: 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;
+      listPersonweekcheck(this.queryParams).then(response => {
+        this.personweekcheckList = 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,
+        plantCode: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        checkDate: null,
+        checkerId: null,
+        weekNo: null,
+        lastWeekRisk: null,
+        thisWeekRisk: null,
+        safeCondition: null,
+        nextWeekWork: 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
+      getPersonweekcheck(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) {
+            updatePersonweekcheck(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addPersonweekcheck(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 delPersonweekcheck(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有每周个人安全检查数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportPersonweekcheck(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>

+ 601 - 0
ui/src/views/sems/safecheck/weekcheck/index.vue

@@ -0,0 +1,601 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="检查日期" prop="checkDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.checkDate"
+          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="['safecheck:weekcheck: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="['safecheck:weekcheck: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="['safecheck:weekcheck:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['safecheck:weekcheck:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="weekcheckList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="检查日期" align="center" prop="checkDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.checkDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="周" align="center" prop="weekNo" :show-overflow-tooltip="true"/>
+      <el-table-column label="状态" align="center" prop="status" :show-overflow-tooltip="true"  :formatter="statusFormat"/>
+      <el-table-column label="上周安全风险隐患问题整改核实情况" align="center" prop="lastWeekRisk" :show-overflow-tooltip="true"/>
+      <el-table-column label="本周主要安全风险隐患和整改情况" align="center" prop="thisWeekRisk" :show-overflow-tooltip="true"/>
+      <el-table-column label="本周安全管理情况评价" align="center" prop="safeCondition" :show-overflow-tooltip="true"/>
+      <el-table-column label="下周工作重点" align="center" prop="nextWeekWork" :show-overflow-tooltip="true"/>
+      <el-table-column label="安全管理员姓名" align="center" prop="safeAdminName" :show-overflow-tooltip="true"/>
+      <el-table-column label="安全管理员意见" align="center" prop="safeAdminSug" :show-overflow-tooltip="true"/>
+      <el-table-column label="安全管理员日期" align="center" prop="safeAdminDate" :show-overflow-tooltip="true"/>
+      <el-table-column label="安全总监姓名" align="center" prop="safeDirName" :show-overflow-tooltip="true"/>
+      <el-table-column label="安全总监意见" align="center" prop="safeDirSug" :show-overflow-tooltip="true"/>
+      <el-table-column label="安全总监日期" align="center" prop="safeDirDate" :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="['safecheck:weekcheck:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['safecheck:weekcheck:remove']"
+          >删除</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-document"
+            @click="wordView(scope.row)"
+          >预览
+          </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="900px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item  label-width="150px" label="检查日期" prop="checkDate">
+              <el-date-picker clearable size="small" style="width: 200px" @change="calculateWeekNumber"
+                              v-model="form.checkDate"
+                              type="date"
+                              value-format="yyyy-MM-dd"
+                              placeholder="选择检查日期">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label-width="150px" label="周" prop="weekNo">
+              <el-input v-model="form.weekNo" placeholder="请输入周" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-form-item label-width="150px" label="上周安全风险隐患问题整改核实情况" prop="lastWeekRisk">
+          <el-input v-model="form.lastWeekRisk" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label-width="150px" label="本周主要安全风险隐患和整改情况" prop="thisWeekRisk">
+          <el-input v-model="form.thisWeekRisk" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label-width="150px" label="本周安全管理情况评价">
+          <el-radio-group v-model="form.safeCondition">
+            <el-radio label="安全风险可控,无较大(质量)安全风险隐患">安全风险可控,无较大(质量)安全风险隐患</el-radio>
+            <el-radio label="存在安全风险隐患,需尽快采取防范措施">存在安全风险隐患,需尽快采取防范措施</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label-width="150px" label="下周工作重点" prop="nextWeekWork">
+          <el-input v-model="form.nextWeekWork" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label-width="150px" label="安全管理员" prop="safeAdminId">
+          <el-select v-model="form.safeAdminId" filterable placeholder="安全管理员">
+            <el-option
+              v-for="item in userOption"
+              :key="item.userId"
+              :label="item.nickName"
+              :value="item.userId"
+              >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label-width="150px" label="安全管理员意见" prop="safeAdminSug">
+          <el-input v-model="form.safeAdminSug" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label-width="150px" label="安全总监" prop="safeDirId">
+          <el-select v-model="form.safeDirId" filterable placeholder="安全总监">
+            <el-option
+              v-for="item in userOption"
+              :key="item.userId"
+              :label="item.nickName"
+              :value="item.userId"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label-width="150px" label="安全总监意见" prop="safeDirSug">
+          <el-input v-model="form.safeDirSug" 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 :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>
+    <el-dialog  :close-on-click-modal="false" v-loading="loadingFlash" element-loading-background="rgba(0,0,0,0.2)" v-dialogDrag :title="pdf.title"
+                :visible.sync="pdf.open" width="1300px" :center="true" append-to-body>
+      <div style="margin-top: -60px;float: right;margin-right: 40px;">
+        <el-button size="mini" type="text" @click="openPdf">{{ $t('新页面打开PDF') }}</el-button>
+      </div>
+      <div style="margin-top: -30px">
+        <iframe id="iFrame" class="iframe-html" :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px"
+                v-if="ppt"></iframe>
+      </div>
+      <div style="padding: 30px; width: 100%; height: 100%;">
+        <el-carousel class="" ref="carousel" arrow="always" v-if="pptView"
+                     height="700px" trigger="click" :autoplay="false" indicator-position="outside">
+          <el-carousel-item class="lun_img" v-for="item in imgs" v-bind:key="item">
+            <img :src="item" width="100%" height="100%" object-fit="cover"/>
+          </el-carousel-item>
+        </el-carousel>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {wordView, listWeekcheck, getWeekcheck, delWeekcheck, addWeekcheck, updateWeekcheck, exportWeekcheck, importTemplate} from "@/api/sems/safecheck/weekcheck";
+import { treeselect } from "@/api/system/dept";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {listPostUser} from "@/api/system/user";
+
+export default {
+  name: "Weekcheck",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 每周安全排查表格数据
+      weekcheckList: [],
+      userOption: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight:300,
+      pptView: false,
+      ppt: false,
+      loadingFlash: false,
+      // 是否显示弹出层
+      open: false,
+        // 用户导入参数
+        upload: {
+            // 是否显示弹出层(用户导入)
+            open: false,
+            // 弹出层标题(用户导入)
+            title: "",
+            // 是否禁用上传
+            isUploading: false,
+            // 是否更新已经存在的用户数据
+            updateSupport: 0,
+            // 设置上传的请求头部
+            headers: { Authorization: "Bearer " + getToken() },
+            // 上传的地址
+            url: process.env.VUE_APP_BASE_API + "/safecheck/weekcheck/importData"
+        },
+      pdf: {
+        title: '',
+        pdfUrl: '',
+        numPages: null,
+        open: false,
+        pageNum: 1,
+        pageTotalNum: 1,
+        loadedRatio: 0,
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        plantCode: null,
+        checkDate: null,
+        checkerId: null,
+        lastWeekRisk: null,
+        thisWeekRisk: null,
+        safeCondition: null,
+        nextWeekWork: null,
+        safeAdminSug: null,
+        safeDirSug: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+
+      }
+    };
+  },
+  watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+            this.$refs.tree.filter(val);
+        }
+   },
+  created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+      })
+    this.getList();
+    this.getTreeselect();
+    listPostUser(this.queryParams).then(response => {
+      this.userOption = response;
+    });
+  },
+  methods: {
+    /** 查询每周安全排查列表 */
+    getList() {
+      this.loading = true;
+      listWeekcheck(this.queryParams).then(response => {
+        this.weekcheckList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 字典翻译
+    statusFormat(row, column) {
+      let type = '';
+       if (row.status == 0) {
+         let s = '未完成'
+         return <el-tag type={type}>{s}</el-tag>;
+       }
+      if (row.status === 1) {
+        let s = '已完成'
+        type = 'success';
+        return <el-tag type={type}>{s}</el-tag>;
+      }
+    },
+    calculateWeekNumber() {
+       console.log(this.form.checkDate)
+      if (this.form.checkDate) {
+        const date = new Date(this.form.checkDate);
+        const yearStart = new Date(date.getFullYear(), 0, 1);
+        const days = Math.floor((date - yearStart) / (24 * 60 * 60 * 1000));
+        const weekNumber = Math.ceil((days + yearStart.getDay() + 1) / 7);
+        this.form.weekNo = weekNumber;
+      }
+      const queryData = {}
+      queryData.checkDate = this.form.checkDate
+      queryData.weekNo =  this.form.weekNo
+      getWeekcheckByWeek(queryData).then(response => {
+        response.data.safeAdminId = parseInt(response.data.safeAdminId)
+        response.data.safeDirId = parseInt(response.data.safeDirId)
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改每周安全排查";
+      });
+
+
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        plantCode: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        checkDate: null,
+        checkerId: null,
+        weekNo: null,
+        safeAdminId: null,
+        safeAdminName: null,
+        safeDirId: null,
+        safeDirName: null,
+        lastWeekRisk: null,
+        thisWeekRisk: null,
+        safeCondition: "0",
+        nextWeekWork: null,
+        safeAdminSug: null,
+        safeDirSug: 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
+      getWeekcheck(id).then(response => {
+        response.data.safeAdminId = parseInt(response.data.safeAdminId)
+        response.data.safeDirId = parseInt(response.data.safeDirId)
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改每周安全排查";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateWeekcheck(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addWeekcheck(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 delWeekcheck(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有每周安全排查数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportWeekcheck(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();
+      },
+    wordView(row) {
+      wordView(row.id).then(response => {
+        console.log(response.msg)
+        this.handleSee("每周检查记录", response.msg)
+      });
+    },
+    handleSee(fileName, url) {
+      //office预览
+      this.loadingFlash = true
+      this.pdf.open = true
+      this.pdf.title = fileName
+      this.pdf.pdfUrl = ""
+      this.pptView = false
+      this.ppt = true
+      //如果是PDF等直接可以打开的就不调接口,否则调用接口
+      if (fileName.endsWith('pdf')) {
+        this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + url
+        this.loadingFlash = false
+      } else {
+        const formatDate = new FormData();
+        formatDate.append("filepath", url)
+        //调用文件预览api
+        let res = this.officeConvert.bookConvertCommon(formatDate)
+        //查看接受全局方法的返回结果 console.log(res)
+        //利用.then方法接受Promise对象
+        res.then((result) => {
+          //关闭加载中
+          this.loadingFlash = false
+          if (result.msg.includes("csv")) {
+            this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + result.data
+            this.$alert(result.msg, this.$t('检查乱码'), {dangerouslyUseHTMLString: true});
+            //    this.$message({message: result.msg, center: true,type:'warning',  offset:400, });
+          } else if (result.msg.includes("不存在")) {
+            //文件不存在时提示
+            this.pdf.pdfUrl = ""
+            this.$alert(result.msg, this.$t('预览失败'), {dangerouslyUseHTMLString: true});
+            //    this.$message({message: result.msg, center: true,type:'warning',  offset:400, });
+            this.pdf.open = false
+          } else if (result.msg.includes("不支持此格式")) {
+            this.pdf.pdfUrl = ""
+            this.$alert(result.msg, this.$t('预览失败'), {dangerouslyUseHTMLString: true});
+            //    this.$message({message: result.msg, center: true,type:'warning',  offset:400, });
+            this.pdf.open = false
+          } else {
+            //成功时直接给地址
+            this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + result.data
+          }
+        }).catch(result => {
+          //请求失败,关闭loading,pdf地址直接为为空,不显示
+          this.pdf.pdfUrl = ""
+          this.loadingFlash = false;
+        })
+      }
+    },
+    //文件预览
+    openPdf() {
+      //ppt就跳路由预览,office就直接打开文件新页面
+      const didi = {imgs: this.imgs}
+      if (this.pptView == true && this.ppt == false) {
+        let routeUrl = this.$router.resolve({
+          path: "/cpms/index.html#/pptyulan",
+          query: didi
+        });
+        window.open("/cpms/index.html#/pptyulan?id=" + this.pdf.pdfUrl, '_blank')
+        console.log(this.imgs)
+      } else {
+        window.open(this.pdf.pdfUrl)
+      }
+    },
+
+  }
+};
+</script>