Pārlūkot izejas kodu

-修改:组织保护措施批准人批准后给四个班长发邮件
-添加:5s管理相关功能

jiangbiao 2 gadi atpakaļ
vecāks
revīzija
c509cbd76a
37 mainītis faili ar 5554 papildinājumiem un 9 dzēšanām
  1. 2 4
      master/src/main/java/com/ruoyi/project/apply/controller/TApplySafetychangeController.java
  2. 161 0
      master/src/main/java/com/ruoyi/project/listener/apply/change/ChangeMgrListener.java
  3. 0 3
      master/src/main/java/com/ruoyi/project/listener/apply/change/ChangeNextTaskListener.java
  4. 103 0
      master/src/main/java/com/ruoyi/project/production/controller/TFivesChangeRecordController.java
  5. 118 0
      master/src/main/java/com/ruoyi/project/production/controller/TFivesFileController.java
  6. 97 0
      master/src/main/java/com/ruoyi/project/production/controller/TFivesMonthlyInspectionController.java
  7. 103 0
      master/src/main/java/com/ruoyi/project/production/controller/TFivesRegionController.java
  8. 322 0
      master/src/main/java/com/ruoyi/project/production/domain/TFivesChangeRecord.java
  9. 194 0
      master/src/main/java/com/ruoyi/project/production/domain/TFivesFile.java
  10. 398 0
      master/src/main/java/com/ruoyi/project/production/domain/TFivesMonthlyInspection.java
  11. 250 0
      master/src/main/java/com/ruoyi/project/production/domain/TFivesRegion.java
  12. 63 0
      master/src/main/java/com/ruoyi/project/production/mapper/TFivesChangeRecordMapper.java
  13. 63 0
      master/src/main/java/com/ruoyi/project/production/mapper/TFivesFileMapper.java
  14. 63 0
      master/src/main/java/com/ruoyi/project/production/mapper/TFivesMonthlyInspectionMapper.java
  15. 63 0
      master/src/main/java/com/ruoyi/project/production/mapper/TFivesRegionMapper.java
  16. 61 0
      master/src/main/java/com/ruoyi/project/production/service/ITFivesChangeRecordService.java
  17. 61 0
      master/src/main/java/com/ruoyi/project/production/service/ITFivesFileService.java
  18. 61 0
      master/src/main/java/com/ruoyi/project/production/service/ITFivesMonthlyInspectionService.java
  19. 61 0
      master/src/main/java/com/ruoyi/project/production/service/ITFivesRegionService.java
  20. 93 0
      master/src/main/java/com/ruoyi/project/production/service/impl/TFivesChangeRecordServiceImpl.java
  21. 93 0
      master/src/main/java/com/ruoyi/project/production/service/impl/TFivesFileServiceImpl.java
  22. 93 0
      master/src/main/java/com/ruoyi/project/production/service/impl/TFivesMonthlyInspectionServiceImpl.java
  23. 93 0
      master/src/main/java/com/ruoyi/project/production/service/impl/TFivesRegionServiceImpl.java
  24. 156 0
      master/src/main/resources/mybatis/production/TFivesChangeRecordMapper.xml
  25. 111 0
      master/src/main/resources/mybatis/production/TFivesFileMapper.xml
  26. 176 0
      master/src/main/resources/mybatis/production/TFivesMonthlyInspectionMapper.xml
  27. 131 0
      master/src/main/resources/mybatis/production/TFivesRegionMapper.xml
  28. 6 2
      master/src/main/resources/processes/apply/safetychange.bpmn
  29. 53 0
      ui/src/api/production/file.js
  30. 53 0
      ui/src/api/production/inspection.js
  31. 53 0
      ui/src/api/production/record.js
  32. 53 0
      ui/src/api/production/region.js
  33. 503 0
      ui/src/views/production/file/index.vue
  34. 3 0
      ui/src/views/production/fives/index.vue
  35. 616 0
      ui/src/views/production/inspection/index.vue
  36. 498 0
      ui/src/views/production/record/index.vue
  37. 526 0
      ui/src/views/production/region/index.vue

+ 2 - 4
master/src/main/java/com/ruoyi/project/apply/controller/TApplySafetychangeController.java

@@ -21,10 +21,7 @@ import com.ruoyi.project.apply.domain.TApplySafetychange;
 import com.ruoyi.project.apply.service.ITApplyLockService;
 import com.ruoyi.project.apply.service.ITApplySafetychangeService;
 import com.ruoyi.project.approve.damain.DevTask;
-import com.ruoyi.project.listener.apply.change.ChangeEndFailListener;
-import com.ruoyi.project.listener.apply.change.ChangeEndSuccessListener;
-import com.ruoyi.project.listener.apply.change.ChangeFlowListener;
-import com.ruoyi.project.listener.apply.change.ChangeNextTaskListener;
+import com.ruoyi.project.listener.apply.change.*;
 import com.ruoyi.project.plant.domain.TStaffmgr;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.service.ISysUserService;
@@ -193,6 +190,7 @@ public class TApplySafetychangeController extends BaseController {
         }
         variables.put("changeExecutor", changeExecutors.toString());
         variables.put("changeNextTaskListener", new ChangeNextTaskListener());
+        variables.put("changeMgrListener", new ChangeMgrListener());
         variables.put("changeEndFailListener", new ChangeEndFailListener());
         variables.put("changeEndSuccessListener", new ChangeEndSuccessListener());
         variables.put("changeFlowListener", new ChangeFlowListener());

+ 161 - 0
master/src/main/java/com/ruoyi/project/listener/apply/change/ChangeMgrListener.java

@@ -0,0 +1,161 @@
+package com.ruoyi.project.listener.apply.change;
+
+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.common.utils.StringUtils;
+import com.ruoyi.project.apply.domain.TApplySafetychange;
+import com.ruoyi.project.apply.service.ITApplySafetychangeService;
+import com.ruoyi.project.plant.domain.TStaffmgr;
+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.activiti.engine.task.IdentityLink;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service("changeMgrListener")
+public class ChangeMgrListener implements Serializable, TaskListener {
+    protected Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        String businessKey = delegateTask.getExecution().getProcessInstanceBusinessKey();
+        ITApplySafetychangeService entityService = (ITApplySafetychangeService) SpringContextUtils.getBean("tApplySafetychangeService");
+        TApplySafetychange entity = entityService.selectTApplySafetychangeById(Long.valueOf(businessKey));
+        logger.info("==========================businessKey:" + businessKey);
+        logger.info("==========================entity:" + entity);
+        ISysUserService sysUserService = (ISysUserService) SpringContextUtils.getBean("sysUserService");
+        IMailService mailService = (IMailService) SpringContextUtils.getBean("mailService");
+        String assignee = delegateTask.getAssignee();
+        List<String> userIds = new ArrayList<>();
+        if (StringUtils.isEmpty(assignee)) {
+            for (IdentityLink candidate : delegateTask.getCandidates()) {
+                userIds.add(candidate.getUserId());
+            }
+        } else {
+            userIds.add(assignee);
+        }
+        TStaffmgr tStaffmgr = new TStaffmgr();
+        tStaffmgr.setActualposts("12");
+
+        StringBuilder to = new StringBuilder();
+        // 给班长发邮件
+        for (SysUser user : sysUserService.selectUserPost(tStaffmgr)) {
+            //发送邮件
+            try {
+                SysUser sysUser = sysUserService.selectUserById(user.getUserId());
+                String email = sysUser.getEmail();
+                String apNo = entity.getApNo();
+                logger.info("apNo:" + apNo);
+                String username = sysUser.getNickName();
+                to.append(username).append(" ");
+                String loginName = sysUser.getUserName();
+                String usernameEN = PinyinHelper.convertToPinyinString(username, " ", PinyinFormat.WITHOUT_TONE);
+                logger.info("email:" + email);
+                logger.info("username:" + username);
+                //写html开始内容
+                String start = "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title></title></head><body><div style=\"background-color:#ECECEC; padding: 35px;\">" +
+                        "<table cellpadding=\"0\" align=\"center\"" +
+                        "style=\"width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;\">" +
+                        "<tbody><tr><th valign=\"middle\" style=\"height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #42a3d3; background-color: #49bcff; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;\">" +
+                        "<font face=\"微软雅黑\" size=\"5\" style=\"color: rgb(255, 255, 255); \">组织保护措施状态变更申请 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">Organization of protection measure status change application</font></th></tr>";
+                //表html中间内容
+                String center = "<tr><td><div style=\"padding:25px 35px 40px; background-color:#fff;\"><h2 style=\"margin: 5px 0px; \">" +
+                        "<font color=\"#333333\" style=\"line-height: 20px; \"><font style=\"line-height: 22px; \" size=\"4\">" +
+                        "亲爱的 username(loginName)</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
+                        "Dear usernameEN(loginName)</font></font></h2>" +
+                        "<p>批准人已审批完成,请通知临时安全措施执行人处理审批流程:<br>" +
+                        "Approver has completed the approval. Please notify the temporary safety measures executor to handle the approval process:<br>" +
+                        "任务名:<b>组织保护措施状态变更申请审批</b><br>" +
+                        "Task Name: <b>Approval of Organization of protection measure status change application</b><br>" +
+                        "任务编号:<b>apNo</b><br>" +
+                        "Task Number: <b>apNoEN</b><br>" +
+                        "请通知临时安全措施执行人登录<a href=\"https://cpms.basf-ypc.net.cn/cpms/index.html#/approve/pending\">我的待办</a>查看。<br>" +
+                        "Please notify the temporary security measures executor to log in the <a href=\"https://cpms.basf-ypc.net.cn/cpms/index.html#/approve/pending\">My To-do</a> to handle it.</p>" +
+                        "<p align=\"right\">date</p>" +
+                        "<div style=\"width:700px;margin:0 auto;\">" +
+                        "<div style=\"padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;\">" +
+                        "<p>此为系统邮件,请勿回复<br>This e-Mail is an automatic reminder sent by CPMS, please do not reply</p>" +
+                        "</div></div></div></td></tr>";
+                String one = center.replaceFirst("username", username);
+                String two = one.replaceFirst("usernameEN", usernameEN);
+                String three = two.replace("loginName", loginName);
+                String four = three.replaceFirst("apNo", apNo);
+                String five = four.replaceFirst("apNoEN", apNo);
+                String result = five.replaceFirst("date", String.valueOf(new Date()));
+                //写html结尾内容
+                String end = "</tbody></table></div></body></html>";
+                //拼接html
+                String html = start + result + end;
+                logger.info("=======================邮件内容:" + html);
+                mailService.sendHtmlMail(email, "组织保护措施状态变更申请:批准人已审批完成 Organization protection measure status change application: approved by the approver (" + apNo + ")", html);
+            } catch (Exception e) {
+                logger.error("邮件发送失败" + JSON.toJSONString(e));
+            }
+        }
+        for (String userId : userIds) {
+            //发送邮件
+            try {
+                SysUser sysUser = sysUserService.selectUserById(Long.parseLong(userId));
+                String email = sysUser.getEmail();
+                String apNo = entity.getApNo();
+                logger.info("apNo:" + apNo);
+                String username = sysUser.getNickName();
+                to.append(username).append(" ");
+                String loginName = sysUser.getUserName();
+                String usernameEN = PinyinHelper.convertToPinyinString(username, " ", PinyinFormat.WITHOUT_TONE);
+                logger.info("email:" + email);
+                logger.info("username:" + username);
+                //写html开始内容
+                String start = "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title></title></head><body><div style=\"background-color:#ECECEC; padding: 35px;\">" +
+                        "<table cellpadding=\"0\" align=\"center\"" +
+                        "style=\"width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;\">" +
+                        "<tbody><tr><th valign=\"middle\" style=\"height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #42a3d3; background-color: #49bcff; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;\">" +
+                        "<font face=\"微软雅黑\" size=\"5\" style=\"color: rgb(255, 255, 255); \">组织保护措施状态变更申请 </font><font face=\"微软雅黑\" size=\"3\" style=\"color: rgb(255, 255, 255); \">Organization of protection measure status change application</font></th></tr>";
+                //表html中间内容
+                String center = "<tr><td><div style=\"padding:25px 35px 40px; background-color:#fff;\"><h2 style=\"margin: 5px 0px; \">" +
+                        "<font color=\"#333333\" style=\"line-height: 20px; \"><font style=\"line-height: 22px; \" size=\"4\">" +
+                        "亲爱的 username(loginName)</font><br><font style=\"line-height: 22px; \" size=\"4\">" +
+                        "Dear usernameEN(loginName)</font></font></h2>" +
+                        "<p>您有一个新的待办任务:<br>" +
+                        "You have a new to-do task:<br>" +
+                        "任务名:<b>组织保护措施状态变更申请审批</b><br>" +
+                        "Task Name: <b>Approval of Organization of protection measure status change application</b><br>" +
+                        "任务编号:<b>apNo</b><br>" +
+                        "Task Number: <b>apNoEN</b><br>" +
+                        "请登录<a href=\"https://cpms.basf-ypc.net.cn/cpms/index.html#/approve/pending\">我的待办</a>查看。<br>" +
+                        "Please log in the <a href=\"https://cpms.basf-ypc.net.cn/cpms/index.html#/approve/pending\">My To-do</a> to handle it.</p>" +
+                        "<p align=\"right\">date</p>" +
+                        "<div style=\"width:700px;margin:0 auto;\">" +
+                        "<div style=\"padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;\">" +
+                        "<p>此为系统邮件,请勿回复<br>This e-Mail is an automatic reminder sent by CPMS, please do not reply</p>" +
+                        "</div></div></div></td></tr>";
+                String one = center.replaceFirst("username", username);
+                String two = one.replaceFirst("usernameEN", usernameEN);
+                String three = two.replace("loginName", loginName);
+                String four = three.replaceFirst("apNo", apNo);
+                String five = four.replaceFirst("apNoEN", apNo);
+                String result = five.replaceFirst("date", String.valueOf(new Date()));
+                //写html结尾内容
+                String end = "</tbody></table></div></body></html>";
+                //拼接html
+                String html = start + result + end;
+                logger.info("=======================邮件内容:" + html);
+                mailService.sendHtmlMail(email, "组织保护措施状态变更申请:您有一个新的待办任务 Organization of protection measure status change application:You have a new to-do task (" + apNo + ")", html);
+            } catch (Exception e) {
+                logger.error("邮件发送失败" + JSON.toJSONString(e));
+            }
+        }
+        logger.info("====================================本次通过邮件发送给:" + to);
+    }
+}

+ 0 - 3
master/src/main/java/com/ruoyi/project/listener/apply/change/ChangeNextTaskListener.java

@@ -45,9 +45,6 @@ public class ChangeNextTaskListener implements Serializable, TaskListener {
         } else {
             userIds.add(assignee);
         }
-        if(delegateTask.getEventName().equals("措施执行人")){
-            logger.info("====================================措施执行人:{}",userIds);
-        }
         StringBuilder to = new StringBuilder();
         for (String userId : userIds) {
             //发送邮件

+ 103 - 0
master/src/main/java/com/ruoyi/project/production/controller/TFivesChangeRecordController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.production.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.production.domain.TFivesChangeRecord;
+import com.ruoyi.project.production.service.ITFivesChangeRecordService;
+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 ruoyi
+ * @date 2023-03-30
+ */
+@RestController
+@RequestMapping("/production/record")
+public class TFivesChangeRecordController extends BaseController
+{
+    @Autowired
+    private ITFivesChangeRecordService tFivesChangeRecordService;
+
+    /**
+     * 查询区域检查整改记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:record:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TFivesChangeRecord tFivesChangeRecord)
+    {
+        startPage();
+        List<TFivesChangeRecord> list = tFivesChangeRecordService.selectTFivesChangeRecordList(tFivesChangeRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出区域检查整改记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:record:export')")
+    @Log(title = "区域检查整改记录", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TFivesChangeRecord tFivesChangeRecord)
+    {
+        List<TFivesChangeRecord> list = tFivesChangeRecordService.selectTFivesChangeRecordList(tFivesChangeRecord);
+        ExcelUtil<TFivesChangeRecord> util = new ExcelUtil<TFivesChangeRecord>(TFivesChangeRecord.class);
+        return util.exportExcel(list, "record");
+    }
+
+    /**
+     * 获取区域检查整改记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('production:record:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tFivesChangeRecordService.selectTFivesChangeRecordById(id));
+    }
+
+    /**
+     * 新增区域检查整改记录
+     */
+    @PreAuthorize("@ss.hasPermi('production:record:add')")
+    @Log(title = "区域检查整改记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TFivesChangeRecord tFivesChangeRecord)
+    {
+        return toAjax(tFivesChangeRecordService.insertTFivesChangeRecord(tFivesChangeRecord));
+    }
+
+    /**
+     * 修改区域检查整改记录
+     */
+    @PreAuthorize("@ss.hasPermi('production:record:edit')")
+    @Log(title = "区域检查整改记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TFivesChangeRecord tFivesChangeRecord)
+    {
+        return toAjax(tFivesChangeRecordService.updateTFivesChangeRecord(tFivesChangeRecord));
+    }
+
+    /**
+     * 删除区域检查整改记录
+     */
+    @PreAuthorize("@ss.hasPermi('production:record:remove')")
+    @Log(title = "区域检查整改记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tFivesChangeRecordService.deleteTFivesChangeRecordByIds(ids));
+    }
+}

+ 118 - 0
master/src/main/java/com/ruoyi/project/production/controller/TFivesFileController.java

@@ -0,0 +1,118 @@
+package com.ruoyi.project.production.controller;
+
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.config.RuoYiConfig;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.production.domain.TFivesFile;
+import com.ruoyi.project.production.service.ITFivesFileService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 5s管理附件Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+@RestController
+@RequestMapping("/production/file")
+public class TFivesFileController extends BaseController
+{
+    @Autowired
+    private ITFivesFileService tFivesFileService;
+
+    /**
+     * 查询5s管理附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:file:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TFivesFile tFivesFile)
+    {
+        startPage();
+        List<TFivesFile> list = tFivesFileService.selectTFivesFileList(tFivesFile);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出5s管理附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:file:export')")
+    @Log(title = "5s管理附件", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TFivesFile tFivesFile)
+    {
+        List<TFivesFile> list = tFivesFileService.selectTFivesFileList(tFivesFile);
+        ExcelUtil<TFivesFile> util = new ExcelUtil<TFivesFile>(TFivesFile.class);
+        return util.exportExcel(list, "file");
+    }
+
+    /**
+     * 获取5s管理附件详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('production:file:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tFivesFileService.selectTFivesFileById(id));
+    }
+
+    /**
+     * 新增5s管理附件
+     */
+    @PreAuthorize("@ss.hasPermi('production:file:add')")
+    @Log(title = "5s管理附件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TFivesFile tFivesFile)
+    {
+        return toAjax(tFivesFileService.insertTFivesFile(tFivesFile));
+    }
+
+    /**
+     * 修改5s管理附件
+     */
+    @PreAuthorize("@ss.hasPermi('production:file:edit')")
+    @Log(title = "5s管理附件", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TFivesFile tFivesFile)
+    {
+        return toAjax(tFivesFileService.updateTFivesFile(tFivesFile));
+    }
+
+    /**
+     * 删除5s管理附件
+     */
+    @PreAuthorize("@ss.hasPermi('production:file:remove')")
+    @Log(title = "5s管理附件", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tFivesFileService.deleteTFivesFileByIds(ids));
+    }
+
+    @Log(title = "文件上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/uploadFile")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
+        if (!file.isEmpty()) {
+            String avatar = FileUploadUtils.upload(RuoYiConfig.getFilePath("/5sFile"), file);
+            TFivesFile tFivesFile = new TFivesFile();
+            tFivesFile.setName(file.getName());
+            tFivesFile.setUrl(avatar);
+            tFivesFile.setCreatedate(new Date());
+            tFivesFile.setCreaterCode(getUserId().toString());
+            tFivesFileService.insertTFivesFile(tFivesFile);
+            return AjaxResult.success(tFivesFile.getId());
+        }
+        return AjaxResult.error("上传异常,请联系管理员");
+    }
+}

+ 97 - 0
master/src/main/java/com/ruoyi/project/production/controller/TFivesMonthlyInspectionController.java

@@ -0,0 +1,97 @@
+package com.ruoyi.project.production.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.production.domain.TFivesMonthlyInspection;
+import com.ruoyi.project.production.service.ITFivesMonthlyInspectionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 区域月度检查Controller
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+@RestController
+@RequestMapping("/production/inspection")
+public class TFivesMonthlyInspectionController extends BaseController
+{
+    @Autowired
+    private ITFivesMonthlyInspectionService tFivesMonthlyInspectionService;
+
+    /**
+     * 查询区域月度检查列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:inspection:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        startPage();
+        List<TFivesMonthlyInspection> list = tFivesMonthlyInspectionService.selectTFivesMonthlyInspectionList(tFivesMonthlyInspection);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出区域月度检查列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:inspection:export')")
+    @Log(title = "区域月度检查", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        List<TFivesMonthlyInspection> list = tFivesMonthlyInspectionService.selectTFivesMonthlyInspectionList(tFivesMonthlyInspection);
+        ExcelUtil<TFivesMonthlyInspection> util = new ExcelUtil<TFivesMonthlyInspection>(TFivesMonthlyInspection.class);
+        return util.exportExcel(list, "inspection");
+    }
+
+    /**
+     * 获取区域月度检查详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('production:inspection:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tFivesMonthlyInspectionService.selectTFivesMonthlyInspectionById(id));
+    }
+
+    /**
+     * 新增区域月度检查
+     */
+    @PreAuthorize("@ss.hasPermi('production:inspection:add')")
+    @Log(title = "区域月度检查", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        return toAjax(tFivesMonthlyInspectionService.insertTFivesMonthlyInspection(tFivesMonthlyInspection));
+    }
+
+    /**
+     * 修改区域月度检查
+     */
+    @PreAuthorize("@ss.hasPermi('production:inspection:edit')")
+    @Log(title = "区域月度检查", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        return toAjax(tFivesMonthlyInspectionService.updateTFivesMonthlyInspection(tFivesMonthlyInspection));
+    }
+
+    /**
+     * 删除区域月度检查
+     */
+    @PreAuthorize("@ss.hasPermi('production:inspection:remove')")
+    @Log(title = "区域月度检查", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tFivesMonthlyInspectionService.deleteTFivesMonthlyInspectionByIds(ids));
+    }
+}

+ 103 - 0
master/src/main/java/com/ruoyi/project/production/controller/TFivesRegionController.java

@@ -0,0 +1,103 @@
+package com.ruoyi.project.production.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.production.domain.TFivesRegion;
+import com.ruoyi.project.production.service.ITFivesRegionService;
+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 ruoyi
+ * @date 2023-03-30
+ */
+@RestController
+@RequestMapping("/production/region")
+public class TFivesRegionController extends BaseController
+{
+    @Autowired
+    private ITFivesRegionService tFivesRegionService;
+
+    /**
+     * 查询区域列台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:region:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TFivesRegion tFivesRegion)
+    {
+        startPage();
+        List<TFivesRegion> list = tFivesRegionService.selectTFivesRegionList(tFivesRegion);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出区域列台账列表
+     */
+    @PreAuthorize("@ss.hasPermi('production:region:export')")
+    @Log(title = "区域列台账", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TFivesRegion tFivesRegion)
+    {
+        List<TFivesRegion> list = tFivesRegionService.selectTFivesRegionList(tFivesRegion);
+        ExcelUtil<TFivesRegion> util = new ExcelUtil<TFivesRegion>(TFivesRegion.class);
+        return util.exportExcel(list, "region");
+    }
+
+    /**
+     * 获取区域列台账详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('production:region:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tFivesRegionService.selectTFivesRegionById(id));
+    }
+
+    /**
+     * 新增区域列台账
+     */
+    @PreAuthorize("@ss.hasPermi('production:region:add')")
+    @Log(title = "区域列台账", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TFivesRegion tFivesRegion)
+    {
+        return toAjax(tFivesRegionService.insertTFivesRegion(tFivesRegion));
+    }
+
+    /**
+     * 修改区域列台账
+     */
+    @PreAuthorize("@ss.hasPermi('production:region:edit')")
+    @Log(title = "区域列台账", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TFivesRegion tFivesRegion)
+    {
+        return toAjax(tFivesRegionService.updateTFivesRegion(tFivesRegion));
+    }
+
+    /**
+     * 删除区域列台账
+     */
+    @PreAuthorize("@ss.hasPermi('production:region:remove')")
+    @Log(title = "区域列台账", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tFivesRegionService.deleteTFivesRegionByIds(ids));
+    }
+}

+ 322 - 0
master/src/main/java/com/ruoyi/project/production/domain/TFivesChangeRecord.java

@@ -0,0 +1,322 @@
+package com.ruoyi.project.production.domain;
+
+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;
+
+import java.util.Date;
+
+/**
+ * 区域检查整改记录对象 t_fives_change_record
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public class TFivesChangeRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 区域序号 */
+    @Excel(name = "区域序号")
+    private String regionOrder;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 负责人 */
+    @Excel(name = "负责人")
+    private String owner;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 检查人id */
+    @Excel(name = "检查人id")
+    private String checkerId;
+
+    /** 检查人姓名 */
+    @Excel(name = "检查人姓名")
+    private String checkerName;
+
+    /** 检查问题描述 */
+    @Excel(name = "检查问题描述")
+    private String checkProblem;
+
+    /** 检查附件 */
+    @Excel(name = "检查附件")
+    private String checkFile;
+
+    /** 整改日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "整改日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date changeDate;
+
+    /** 整改内容 */
+    @Excel(name = "整改内容")
+    private String changeContent;
+
+    /** 整改后照片 */
+    @Excel(name = "整改后照片")
+    private String chengeFile;
+
+    /** 整改结果 */
+    @Excel(name = "整改结果")
+    private String changeResult;
+
+    /** 状态 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setRegionOrder(String regionOrder)
+    {
+        this.regionOrder = regionOrder;
+    }
+
+    public String getRegionOrder()
+    {
+        return regionOrder;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setOwner(String owner)
+    {
+        this.owner = owner;
+    }
+
+    public String getOwner()
+    {
+        return owner;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setCheckerId(String checkerId)
+    {
+        this.checkerId = checkerId;
+    }
+
+    public String getCheckerId()
+    {
+        return checkerId;
+    }
+    public void setCheckerName(String checkerName)
+    {
+        this.checkerName = checkerName;
+    }
+
+    public String getCheckerName()
+    {
+        return checkerName;
+    }
+    public void setCheckProblem(String checkProblem)
+    {
+        this.checkProblem = checkProblem;
+    }
+
+    public String getCheckProblem()
+    {
+        return checkProblem;
+    }
+    public void setCheckFile(String checkFile)
+    {
+        this.checkFile = checkFile;
+    }
+
+    public String getCheckFile()
+    {
+        return checkFile;
+    }
+    public void setChangeDate(Date changeDate)
+    {
+        this.changeDate = changeDate;
+    }
+
+    public Date getChangeDate()
+    {
+        return changeDate;
+    }
+    public void setChangeContent(String changeContent)
+    {
+        this.changeContent = changeContent;
+    }
+
+    public String getChangeContent()
+    {
+        return changeContent;
+    }
+    public void setChengeFile(String chengeFile)
+    {
+        this.chengeFile = chengeFile;
+    }
+
+    public String getChengeFile()
+    {
+        return chengeFile;
+    }
+    public void setChangeResult(String changeResult)
+    {
+        this.changeResult = changeResult;
+    }
+
+    public String getChangeResult()
+    {
+        return changeResult;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("regionOrder", getRegionOrder())
+            .append("position", getPosition())
+            .append("owner", getOwner())
+            .append("checkDate", getCheckDate())
+            .append("checkerId", getCheckerId())
+            .append("checkerName", getCheckerName())
+            .append("checkProblem", getCheckProblem())
+            .append("checkFile", getCheckFile())
+            .append("changeDate", getChangeDate())
+            .append("changeContent", getChangeContent())
+            .append("chengeFile", getChengeFile())
+            .append("changeResult", getChangeResult())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}

+ 194 - 0
master/src/main/java/com/ruoyi/project/production/domain/TFivesFile.java

@@ -0,0 +1,194 @@
+package com.ruoyi.project.production.domain;
+
+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;
+
+import java.util.Date;
+
+/**
+ * 5s管理附件对象 t_fives_file
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public class TFivesFile extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String url;
+
+    /** 文件名称 */
+    @Excel(name = "文件名称")
+    private String name;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Long status;
+
+    /** 状态 0 :正常 ;1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setUrl(String url)
+    {
+        this.url = url;
+    }
+
+    public String getUrl()
+    {
+        return url;
+    }
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(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 setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("url", getUrl())
+            .append("name", getName())
+            .append("remarks", getRemarks())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}

+ 398 - 0
master/src/main/java/com/ruoyi/project/production/domain/TFivesMonthlyInspection.java

@@ -0,0 +1,398 @@
+package com.ruoyi.project.production.domain;
+
+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;
+
+import java.util.Date;
+
+/**
+ * 区域月度检查对象 t_fives_monthly_inspection
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public class TFivesMonthlyInspection extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一标识ID
+     */
+    private Long id;
+
+    /**
+     * 区域序号
+     */
+    @Excel(name = "区域序号")
+    private String regionOrder;
+
+    /**
+     * 位置
+     */
+    @Excel(name = "位置")
+    private String position;
+
+    /**
+     * 责任人
+     */
+    @Excel(name = "责任人")
+    private String owner;
+
+    /**
+     * 年
+     */
+    @Excel(name = "年")
+    private Long year;
+
+    /**
+     * 一月
+     */
+    @Excel(name = "一月")
+    private String jan;
+
+    /**
+     * 二月
+     */
+    @Excel(name = "二月")
+    private String feb;
+
+    /**
+     * 三月
+     */
+    @Excel(name = "三月")
+    private String mar;
+
+    /**
+     * 四月
+     */
+    @Excel(name = "四月")
+    private String apr;
+
+    /**
+     * 五月
+     */
+    @Excel(name = "五月")
+    private String may;
+
+    /**
+     * 六月
+     */
+    @Excel(name = "六月")
+    private String jun;
+
+    /**
+     * 七月
+     */
+    @Excel(name = "七月")
+    private String jul;
+
+    /**
+     * 八月
+     */
+    @Excel(name = "八月")
+    private String aug;
+
+    /**
+     * 九月
+     */
+    @Excel(name = "九月")
+    private String sep;
+
+    /**
+     * 十月
+     */
+    @Excel(name = "十月")
+    private String oct;
+
+    /**
+     * 十一月
+     */
+    @Excel(name = "十一月")
+    private String nov;
+
+    /**
+     * 十二月
+     */
+    @Excel(name = "十二月")
+    private String dec;
+
+    /**
+     * 状态
+     */
+    private Long delFlag;
+
+    /**
+     * 创建人
+     */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /**
+     * 修改人
+     */
+    @Excel(name = "修改人")
+    private String updaterCode;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /**
+     * 部门编号
+     */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setRegionOrder(String regionOrder) {
+        this.regionOrder = regionOrder;
+    }
+
+    public String getRegionOrder() {
+        return regionOrder;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setOwner(String owner) {
+        this.owner = owner;
+    }
+
+    public String getOwner() {
+        return owner;
+    }
+
+    public void setYear(Long year) {
+        this.year = year;
+    }
+
+    public Long getYear() {
+        return year;
+    }
+
+    public void setJan(String jan) {
+        this.jan = jan;
+    }
+
+    public String getJan() {
+        return jan;
+    }
+
+    public void setFeb(String feb) {
+        this.feb = feb;
+    }
+
+    public String getFeb() {
+        return feb;
+    }
+
+    public void setMar(String mar) {
+        this.mar = mar;
+    }
+
+    public String getMar() {
+        return mar;
+    }
+
+    public void setApr(String apr) {
+        this.apr = apr;
+    }
+
+    public String getApr() {
+        return apr;
+    }
+
+    public void setMay(String may) {
+        this.may = may;
+    }
+
+    public String getMay() {
+        return may;
+    }
+
+    public void setJun(String jun) {
+        this.jun = jun;
+    }
+
+    public String getJun() {
+        return jun;
+    }
+
+    public void setJul(String jul) {
+        this.jul = jul;
+    }
+
+    public String getJul() {
+        return jul;
+    }
+
+    public void setAug(String aug) {
+        this.aug = aug;
+    }
+
+    public String getAug() {
+        return aug;
+    }
+
+    public void setSep(String sep) {
+        this.sep = sep;
+    }
+
+    public String getSep() {
+        return sep;
+    }
+
+    public void setOct(String oct) {
+        this.oct = oct;
+    }
+
+    public String getOct() {
+        return oct;
+    }
+
+    public void setNov(String nov) {
+        this.nov = nov;
+    }
+
+    public String getNov() {
+        return nov;
+    }
+
+    public void setDec(String dec) {
+        this.dec = dec;
+    }
+
+    public String getDec() {
+        return dec;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    public void setCreaterCode(String createrCode) {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode() {
+        return createrCode;
+    }
+
+    public void setCreatedate(Date createdate) {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() {
+        return createdate;
+    }
+
+    public void setUpdaterCode(String updaterCode) {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode() {
+        return updaterCode;
+    }
+
+    public void setUpdatedate(Date updatedate) {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate() {
+        return updatedate;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("regionOrder", getRegionOrder())
+                .append("position", getPosition())
+                .append("owner", getOwner())
+                .append("year", getYear())
+                .append("jan", getJan())
+                .append("feb", getFeb())
+                .append("mar", getMar())
+                .append("apr", getApr())
+                .append("may", getMay())
+                .append("jun", getJun())
+                .append("jul", getJul())
+                .append("aug", getAug())
+                .append("sep", getSep())
+                .append("oct", getOct())
+                .append("nov", getNov())
+                .append("dec", getDec())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("remarks", getRemarks())
+                .append("deptId", getDeptId())
+                .toString();
+    }
+}

+ 250 - 0
master/src/main/java/com/ruoyi/project/production/domain/TFivesRegion.java

@@ -0,0 +1,250 @@
+package com.ruoyi.project.production.domain;
+
+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;
+
+import java.util.Date;
+
+/**
+ * 区域列台账对象 t_fives_region
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public class TFivesRegion extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 唯一标识ID */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantCode;
+
+    /** 序号 */
+    @Excel(name = "序号")
+    private String orderNO;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 责任人 */
+    @Excel(name = "责任人")
+    private String personLiable;
+
+    /** 房间号 */
+    @Excel(name = "房间号")
+    private String roomNo;
+
+    /** 关联文件id */
+    @Excel(name = "关联文件id")
+    private String fileId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private Long status;
+
+    /** 状态 0 :正常 ;1:删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private Long updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd" , timezone = "GMT+8")
+    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
+    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 setOrderNo(String orderNO)
+    {
+        this.orderNO = orderNO;
+    }
+
+    public String getOrderNo()
+    {
+        return orderNO;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setPersonLiable(String personLiable)
+    {
+        this.personLiable = personLiable;
+    }
+
+    public String getPersonLiable()
+    {
+        return personLiable;
+    }
+    public void setRoomNo(String roomNo)
+    {
+        this.roomNo = roomNo;
+    }
+
+    public String getRoomNo()
+    {
+        return roomNo;
+    }
+    public void setFileId(String fileId)
+    {
+        this.fileId = fileId;
+    }
+
+    public String getFileId()
+    {
+        return fileId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setStatus(Long status)
+    {
+        this.status = status;
+    }
+
+    public Long getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(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 setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantCode", getPlantCode())
+            .append("orderNo", getOrderNo())
+            .append("position", getPosition())
+            .append("personLiable", getPersonLiable())
+            .append("roomNo", getRoomNo())
+            .append("fileId", getFileId())
+            .append("remarks", getRemarks())
+            .append("status", getStatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .toString();
+    }
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/production/mapper/TFivesChangeRecordMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.production.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.production.domain.TFivesChangeRecord;
+
+/**
+ * 区域检查整改记录Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface TFivesChangeRecordMapper 
+{
+    /**
+     * 查询区域检查整改记录
+     * 
+     * @param id 区域检查整改记录ID
+     * @return 区域检查整改记录
+     */
+    public TFivesChangeRecord selectTFivesChangeRecordById(Long id);
+
+    /**
+     * 查询区域检查整改记录列表
+     * 
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 区域检查整改记录集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TFivesChangeRecord> selectTFivesChangeRecordList(TFivesChangeRecord tFivesChangeRecord);
+
+    /**
+     * 新增区域检查整改记录
+     * 
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 结果
+     */
+    public int insertTFivesChangeRecord(TFivesChangeRecord tFivesChangeRecord);
+
+    /**
+     * 修改区域检查整改记录
+     * 
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 结果
+     */
+    public int updateTFivesChangeRecord(TFivesChangeRecord tFivesChangeRecord);
+
+    /**
+     * 删除区域检查整改记录
+     * 
+     * @param id 区域检查整改记录ID
+     * @return 结果
+     */
+    public int deleteTFivesChangeRecordById(Long id);
+
+    /**
+     * 批量删除区域检查整改记录
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTFivesChangeRecordByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/production/mapper/TFivesFileMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.production.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.production.domain.TFivesFile;
+
+/**
+ * 5s管理附件Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface TFivesFileMapper 
+{
+    /**
+     * 查询5s管理附件
+     * 
+     * @param id 5s管理附件ID
+     * @return 5s管理附件
+     */
+    public TFivesFile selectTFivesFileById(Long id);
+
+    /**
+     * 查询5s管理附件列表
+     * 
+     * @param tFivesFile 5s管理附件
+     * @return 5s管理附件集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TFivesFile> selectTFivesFileList(TFivesFile tFivesFile);
+
+    /**
+     * 新增5s管理附件
+     * 
+     * @param tFivesFile 5s管理附件
+     * @return 结果
+     */
+    public int insertTFivesFile(TFivesFile tFivesFile);
+
+    /**
+     * 修改5s管理附件
+     * 
+     * @param tFivesFile 5s管理附件
+     * @return 结果
+     */
+    public int updateTFivesFile(TFivesFile tFivesFile);
+
+    /**
+     * 删除5s管理附件
+     * 
+     * @param id 5s管理附件ID
+     * @return 结果
+     */
+    public int deleteTFivesFileById(Long id);
+
+    /**
+     * 批量删除5s管理附件
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTFivesFileByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/production/mapper/TFivesMonthlyInspectionMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.production.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.production.domain.TFivesMonthlyInspection;
+
+/**
+ * 区域月度检查Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface TFivesMonthlyInspectionMapper 
+{
+    /**
+     * 查询区域月度检查
+     * 
+     * @param id 区域月度检查ID
+     * @return 区域月度检查
+     */
+    public TFivesMonthlyInspection selectTFivesMonthlyInspectionById(Long id);
+
+    /**
+     * 查询区域月度检查列表
+     * 
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 区域月度检查集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TFivesMonthlyInspection> selectTFivesMonthlyInspectionList(TFivesMonthlyInspection tFivesMonthlyInspection);
+
+    /**
+     * 新增区域月度检查
+     * 
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 结果
+     */
+    public int insertTFivesMonthlyInspection(TFivesMonthlyInspection tFivesMonthlyInspection);
+
+    /**
+     * 修改区域月度检查
+     * 
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 结果
+     */
+    public int updateTFivesMonthlyInspection(TFivesMonthlyInspection tFivesMonthlyInspection);
+
+    /**
+     * 删除区域月度检查
+     * 
+     * @param id 区域月度检查ID
+     * @return 结果
+     */
+    public int deleteTFivesMonthlyInspectionById(Long id);
+
+    /**
+     * 批量删除区域月度检查
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTFivesMonthlyInspectionByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/production/mapper/TFivesRegionMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.production.mapper;
+
+import java.util.List;
+import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
+import com.ruoyi.project.production.domain.TFivesRegion;
+
+/**
+ * 区域列台账Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface TFivesRegionMapper 
+{
+    /**
+     * 查询区域列台账
+     * 
+     * @param id 区域列台账ID
+     * @return 区域列台账
+     */
+    public TFivesRegion selectTFivesRegionById(Long id);
+
+    /**
+     * 查询区域列台账列表
+     * 
+     * @param tFivesRegion 区域列台账
+     * @return 区域列台账集合
+     */
+    @DataScope(deptAlias = "d")
+    public List<TFivesRegion> selectTFivesRegionList(TFivesRegion tFivesRegion);
+
+    /**
+     * 新增区域列台账
+     * 
+     * @param tFivesRegion 区域列台账
+     * @return 结果
+     */
+    public int insertTFivesRegion(TFivesRegion tFivesRegion);
+
+    /**
+     * 修改区域列台账
+     * 
+     * @param tFivesRegion 区域列台账
+     * @return 结果
+     */
+    public int updateTFivesRegion(TFivesRegion tFivesRegion);
+
+    /**
+     * 删除区域列台账
+     * 
+     * @param id 区域列台账ID
+     * @return 结果
+     */
+    public int deleteTFivesRegionById(Long id);
+
+    /**
+     * 批量删除区域列台账
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTFivesRegionByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/production/service/ITFivesChangeRecordService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.production.service;
+
+import java.util.List;
+import com.ruoyi.project.production.domain.TFivesChangeRecord;
+
+/**
+ * 区域检查整改记录Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface ITFivesChangeRecordService 
+{
+    /**
+     * 查询区域检查整改记录
+     * 
+     * @param id 区域检查整改记录ID
+     * @return 区域检查整改记录
+     */
+    public TFivesChangeRecord selectTFivesChangeRecordById(Long id);
+
+    /**
+     * 查询区域检查整改记录列表
+     * 
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 区域检查整改记录集合
+     */
+    public List<TFivesChangeRecord> selectTFivesChangeRecordList(TFivesChangeRecord tFivesChangeRecord);
+
+    /**
+     * 新增区域检查整改记录
+     * 
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 结果
+     */
+    public int insertTFivesChangeRecord(TFivesChangeRecord tFivesChangeRecord);
+
+    /**
+     * 修改区域检查整改记录
+     * 
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 结果
+     */
+    public int updateTFivesChangeRecord(TFivesChangeRecord tFivesChangeRecord);
+
+    /**
+     * 批量删除区域检查整改记录
+     * 
+     * @param ids 需要删除的区域检查整改记录ID
+     * @return 结果
+     */
+    public int deleteTFivesChangeRecordByIds(Long[] ids);
+
+    /**
+     * 删除区域检查整改记录信息
+     * 
+     * @param id 区域检查整改记录ID
+     * @return 结果
+     */
+    public int deleteTFivesChangeRecordById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/production/service/ITFivesFileService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.production.service;
+
+import java.util.List;
+import com.ruoyi.project.production.domain.TFivesFile;
+
+/**
+ * 5s管理附件Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface ITFivesFileService 
+{
+    /**
+     * 查询5s管理附件
+     * 
+     * @param id 5s管理附件ID
+     * @return 5s管理附件
+     */
+    public TFivesFile selectTFivesFileById(Long id);
+
+    /**
+     * 查询5s管理附件列表
+     * 
+     * @param tFivesFile 5s管理附件
+     * @return 5s管理附件集合
+     */
+    public List<TFivesFile> selectTFivesFileList(TFivesFile tFivesFile);
+
+    /**
+     * 新增5s管理附件
+     * 
+     * @param tFivesFile 5s管理附件
+     * @return 结果
+     */
+    public int insertTFivesFile(TFivesFile tFivesFile);
+
+    /**
+     * 修改5s管理附件
+     * 
+     * @param tFivesFile 5s管理附件
+     * @return 结果
+     */
+    public int updateTFivesFile(TFivesFile tFivesFile);
+
+    /**
+     * 批量删除5s管理附件
+     * 
+     * @param ids 需要删除的5s管理附件ID
+     * @return 结果
+     */
+    public int deleteTFivesFileByIds(Long[] ids);
+
+    /**
+     * 删除5s管理附件信息
+     * 
+     * @param id 5s管理附件ID
+     * @return 结果
+     */
+    public int deleteTFivesFileById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/production/service/ITFivesMonthlyInspectionService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.production.service;
+
+import java.util.List;
+import com.ruoyi.project.production.domain.TFivesMonthlyInspection;
+
+/**
+ * 区域月度检查Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface ITFivesMonthlyInspectionService 
+{
+    /**
+     * 查询区域月度检查
+     * 
+     * @param id 区域月度检查ID
+     * @return 区域月度检查
+     */
+    public TFivesMonthlyInspection selectTFivesMonthlyInspectionById(Long id);
+
+    /**
+     * 查询区域月度检查列表
+     * 
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 区域月度检查集合
+     */
+    public List<TFivesMonthlyInspection> selectTFivesMonthlyInspectionList(TFivesMonthlyInspection tFivesMonthlyInspection);
+
+    /**
+     * 新增区域月度检查
+     * 
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 结果
+     */
+    public int insertTFivesMonthlyInspection(TFivesMonthlyInspection tFivesMonthlyInspection);
+
+    /**
+     * 修改区域月度检查
+     * 
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 结果
+     */
+    public int updateTFivesMonthlyInspection(TFivesMonthlyInspection tFivesMonthlyInspection);
+
+    /**
+     * 批量删除区域月度检查
+     * 
+     * @param ids 需要删除的区域月度检查ID
+     * @return 结果
+     */
+    public int deleteTFivesMonthlyInspectionByIds(Long[] ids);
+
+    /**
+     * 删除区域月度检查信息
+     * 
+     * @param id 区域月度检查ID
+     * @return 结果
+     */
+    public int deleteTFivesMonthlyInspectionById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/production/service/ITFivesRegionService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.production.service;
+
+import java.util.List;
+import com.ruoyi.project.production.domain.TFivesRegion;
+
+/**
+ * 区域列台账Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+public interface ITFivesRegionService 
+{
+    /**
+     * 查询区域列台账
+     * 
+     * @param id 区域列台账ID
+     * @return 区域列台账
+     */
+    public TFivesRegion selectTFivesRegionById(Long id);
+
+    /**
+     * 查询区域列台账列表
+     * 
+     * @param tFivesRegion 区域列台账
+     * @return 区域列台账集合
+     */
+    public List<TFivesRegion> selectTFivesRegionList(TFivesRegion tFivesRegion);
+
+    /**
+     * 新增区域列台账
+     * 
+     * @param tFivesRegion 区域列台账
+     * @return 结果
+     */
+    public int insertTFivesRegion(TFivesRegion tFivesRegion);
+
+    /**
+     * 修改区域列台账
+     * 
+     * @param tFivesRegion 区域列台账
+     * @return 结果
+     */
+    public int updateTFivesRegion(TFivesRegion tFivesRegion);
+
+    /**
+     * 批量删除区域列台账
+     * 
+     * @param ids 需要删除的区域列台账ID
+     * @return 结果
+     */
+    public int deleteTFivesRegionByIds(Long[] ids);
+
+    /**
+     * 删除区域列台账信息
+     * 
+     * @param id 区域列台账ID
+     * @return 结果
+     */
+    public int deleteTFivesRegionById(Long id);
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/production/service/impl/TFivesChangeRecordServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.production.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.production.mapper.TFivesChangeRecordMapper;
+import com.ruoyi.project.production.domain.TFivesChangeRecord;
+import com.ruoyi.project.production.service.ITFivesChangeRecordService;
+
+/**
+ * 区域检查整改记录Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+@Service
+public class TFivesChangeRecordServiceImpl implements ITFivesChangeRecordService
+{
+    @Autowired
+    private TFivesChangeRecordMapper tFivesChangeRecordMapper;
+
+    /**
+     * 查询区域检查整改记录
+     *
+     * @param id 区域检查整改记录ID
+     * @return 区域检查整改记录
+     */
+    @Override
+    public TFivesChangeRecord selectTFivesChangeRecordById(Long id)
+    {
+        return tFivesChangeRecordMapper.selectTFivesChangeRecordById(id);
+    }
+
+    /**
+     * 查询区域检查整改记录列表
+     *
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 区域检查整改记录
+     */
+    @Override
+    public List<TFivesChangeRecord> selectTFivesChangeRecordList(TFivesChangeRecord tFivesChangeRecord)
+    {
+        return tFivesChangeRecordMapper.selectTFivesChangeRecordList(tFivesChangeRecord);
+    }
+
+    /**
+     * 新增区域检查整改记录
+     *
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 结果
+     */
+    @Override
+    public int insertTFivesChangeRecord(TFivesChangeRecord tFivesChangeRecord)
+    {
+        return tFivesChangeRecordMapper.insertTFivesChangeRecord(tFivesChangeRecord);
+    }
+
+    /**
+     * 修改区域检查整改记录
+     *
+     * @param tFivesChangeRecord 区域检查整改记录
+     * @return 结果
+     */
+    @Override
+    public int updateTFivesChangeRecord(TFivesChangeRecord tFivesChangeRecord)
+    {
+        return tFivesChangeRecordMapper.updateTFivesChangeRecord(tFivesChangeRecord);
+    }
+
+    /**
+     * 批量删除区域检查整改记录
+     *
+     * @param ids 需要删除的区域检查整改记录ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesChangeRecordByIds(Long[] ids)
+    {
+        return tFivesChangeRecordMapper.deleteTFivesChangeRecordByIds(ids);
+    }
+
+    /**
+     * 删除区域检查整改记录信息
+     *
+     * @param id 区域检查整改记录ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesChangeRecordById(Long id)
+    {
+        return tFivesChangeRecordMapper.deleteTFivesChangeRecordById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/production/service/impl/TFivesFileServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.production.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.production.mapper.TFivesFileMapper;
+import com.ruoyi.project.production.domain.TFivesFile;
+import com.ruoyi.project.production.service.ITFivesFileService;
+
+/**
+ * 5s管理附件Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+@Service
+public class TFivesFileServiceImpl implements ITFivesFileService
+{
+    @Autowired
+    private TFivesFileMapper tFivesFileMapper;
+
+    /**
+     * 查询5s管理附件
+     *
+     * @param id 5s管理附件ID
+     * @return 5s管理附件
+     */
+    @Override
+    public TFivesFile selectTFivesFileById(Long id)
+    {
+        return tFivesFileMapper.selectTFivesFileById(id);
+    }
+
+    /**
+     * 查询5s管理附件列表
+     *
+     * @param tFivesFile 5s管理附件
+     * @return 5s管理附件
+     */
+    @Override
+    public List<TFivesFile> selectTFivesFileList(TFivesFile tFivesFile)
+    {
+        return tFivesFileMapper.selectTFivesFileList(tFivesFile);
+    }
+
+    /**
+     * 新增5s管理附件
+     *
+     * @param tFivesFile 5s管理附件
+     * @return 结果
+     */
+    @Override
+    public int insertTFivesFile(TFivesFile tFivesFile)
+    {
+        return tFivesFileMapper.insertTFivesFile(tFivesFile);
+    }
+
+    /**
+     * 修改5s管理附件
+     *
+     * @param tFivesFile 5s管理附件
+     * @return 结果
+     */
+    @Override
+    public int updateTFivesFile(TFivesFile tFivesFile)
+    {
+        return tFivesFileMapper.updateTFivesFile(tFivesFile);
+    }
+
+    /**
+     * 批量删除5s管理附件
+     *
+     * @param ids 需要删除的5s管理附件ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesFileByIds(Long[] ids)
+    {
+        return tFivesFileMapper.deleteTFivesFileByIds(ids);
+    }
+
+    /**
+     * 删除5s管理附件信息
+     *
+     * @param id 5s管理附件ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesFileById(Long id)
+    {
+        return tFivesFileMapper.deleteTFivesFileById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/production/service/impl/TFivesMonthlyInspectionServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.production.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.production.mapper.TFivesMonthlyInspectionMapper;
+import com.ruoyi.project.production.domain.TFivesMonthlyInspection;
+import com.ruoyi.project.production.service.ITFivesMonthlyInspectionService;
+
+/**
+ * 区域月度检查Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+@Service
+public class TFivesMonthlyInspectionServiceImpl implements ITFivesMonthlyInspectionService
+{
+    @Autowired
+    private TFivesMonthlyInspectionMapper tFivesMonthlyInspectionMapper;
+
+    /**
+     * 查询区域月度检查
+     *
+     * @param id 区域月度检查ID
+     * @return 区域月度检查
+     */
+    @Override
+    public TFivesMonthlyInspection selectTFivesMonthlyInspectionById(Long id)
+    {
+        return tFivesMonthlyInspectionMapper.selectTFivesMonthlyInspectionById(id);
+    }
+
+    /**
+     * 查询区域月度检查列表
+     *
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 区域月度检查
+     */
+    @Override
+    public List<TFivesMonthlyInspection> selectTFivesMonthlyInspectionList(TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        return tFivesMonthlyInspectionMapper.selectTFivesMonthlyInspectionList(tFivesMonthlyInspection);
+    }
+
+    /**
+     * 新增区域月度检查
+     *
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 结果
+     */
+    @Override
+    public int insertTFivesMonthlyInspection(TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        return tFivesMonthlyInspectionMapper.insertTFivesMonthlyInspection(tFivesMonthlyInspection);
+    }
+
+    /**
+     * 修改区域月度检查
+     *
+     * @param tFivesMonthlyInspection 区域月度检查
+     * @return 结果
+     */
+    @Override
+    public int updateTFivesMonthlyInspection(TFivesMonthlyInspection tFivesMonthlyInspection)
+    {
+        return tFivesMonthlyInspectionMapper.updateTFivesMonthlyInspection(tFivesMonthlyInspection);
+    }
+
+    /**
+     * 批量删除区域月度检查
+     *
+     * @param ids 需要删除的区域月度检查ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesMonthlyInspectionByIds(Long[] ids)
+    {
+        return tFivesMonthlyInspectionMapper.deleteTFivesMonthlyInspectionByIds(ids);
+    }
+
+    /**
+     * 删除区域月度检查信息
+     *
+     * @param id 区域月度检查ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesMonthlyInspectionById(Long id)
+    {
+        return tFivesMonthlyInspectionMapper.deleteTFivesMonthlyInspectionById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/production/service/impl/TFivesRegionServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.production.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.production.mapper.TFivesRegionMapper;
+import com.ruoyi.project.production.domain.TFivesRegion;
+import com.ruoyi.project.production.service.ITFivesRegionService;
+
+/**
+ * 区域列台账Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-03-30
+ */
+@Service
+public class TFivesRegionServiceImpl implements ITFivesRegionService
+{
+    @Autowired
+    private TFivesRegionMapper tFivesRegionMapper;
+
+    /**
+     * 查询区域列台账
+     *
+     * @param id 区域列台账ID
+     * @return 区域列台账
+     */
+    @Override
+    public TFivesRegion selectTFivesRegionById(Long id)
+    {
+        return tFivesRegionMapper.selectTFivesRegionById(id);
+    }
+
+    /**
+     * 查询区域列台账列表
+     *
+     * @param tFivesRegion 区域列台账
+     * @return 区域列台账
+     */
+    @Override
+    public List<TFivesRegion> selectTFivesRegionList(TFivesRegion tFivesRegion)
+    {
+        return tFivesRegionMapper.selectTFivesRegionList(tFivesRegion);
+    }
+
+    /**
+     * 新增区域列台账
+     *
+     * @param tFivesRegion 区域列台账
+     * @return 结果
+     */
+    @Override
+    public int insertTFivesRegion(TFivesRegion tFivesRegion)
+    {
+        return tFivesRegionMapper.insertTFivesRegion(tFivesRegion);
+    }
+
+    /**
+     * 修改区域列台账
+     *
+     * @param tFivesRegion 区域列台账
+     * @return 结果
+     */
+    @Override
+    public int updateTFivesRegion(TFivesRegion tFivesRegion)
+    {
+        return tFivesRegionMapper.updateTFivesRegion(tFivesRegion);
+    }
+
+    /**
+     * 批量删除区域列台账
+     *
+     * @param ids 需要删除的区域列台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesRegionByIds(Long[] ids)
+    {
+        return tFivesRegionMapper.deleteTFivesRegionByIds(ids);
+    }
+
+    /**
+     * 删除区域列台账信息
+     *
+     * @param id 区域列台账ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTFivesRegionById(Long id)
+    {
+        return tFivesRegionMapper.deleteTFivesRegionById(id);
+    }
+}

+ 156 - 0
master/src/main/resources/mybatis/production/TFivesChangeRecordMapper.xml

@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.production.mapper.TFivesChangeRecordMapper">
+
+    <resultMap type="TFivesChangeRecord" id="TFivesChangeRecordResult">
+        <result property="id"    column="id"    />
+        <result property="regionOrder"    column="region_order"    />
+        <result property="position"    column="position"    />
+        <result property="owner"    column="owner"    />
+        <result property="checkDate"    column="check_date"    />
+        <result property="checkerId"    column="checker_id"    />
+        <result property="checkerName"    column="checker_name"    />
+        <result property="checkProblem"    column="check_problem"    />
+        <result property="checkFile"    column="check_file"    />
+        <result property="changeDate"    column="change_date"    />
+        <result property="changeContent"    column="change_content"    />
+        <result property="chengeFile"    column="chenge_file"    />
+        <result property="changeResult"    column="change_result"    />
+        <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="remarks"    column="remarks"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTFivesChangeRecordVo">
+        select d.id, d.region_order, d.position, d.owner, d.check_date, d.checker_id, d.checker_name, d.check_problem, d.check_file, d.change_date, d.change_content, d.chenge_file, d.change_result, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.remarks,  d.dept_id ,s.dept_name from t_fives_change_record d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTFivesChangeRecordList" parameterType="TFivesChangeRecord" resultMap="TFivesChangeRecordResult">
+        <include refid="selectTFivesChangeRecordVo"/>
+        <where>
+            <if test="regionOrder != null  and regionOrder != ''"> and region_order = #{regionOrder}</if>
+            <if test="position != null  and position != ''"> and position = #{position}</if>
+            <if test="owner != null  and owner != ''"> and owner = #{owner}</if>
+            <if test="checkDate != null "> and check_date = #{checkDate}</if>
+            <if test="checkerId != null  and checkerId != ''"> and checker_id = #{checkerId}</if>
+            <if test="checkerName != null  and checkerName != ''"> and checker_name like concat(concat('%', #{checkerName}), '%')</if>
+            <if test="checkProblem != null  and checkProblem != ''"> and check_problem = #{checkProblem}</if>
+            <if test="checkFile != null  and checkFile != ''"> and check_file = #{checkFile}</if>
+            <if test="changeDate != null "> and change_date = #{changeDate}</if>
+            <if test="changeContent != null  and changeContent != ''"> and change_content = #{changeContent}</if>
+            <if test="chengeFile != null  and chengeFile != ''"> and chenge_file = #{chengeFile}</if>
+            <if test="changeResult != null  and changeResult != ''"> and change_result = #{changeResult}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTFivesChangeRecordById" parameterType="Long" resultMap="TFivesChangeRecordResult">
+        <include refid="selectTFivesChangeRecordVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTFivesChangeRecord" parameterType="TFivesChangeRecord">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_fives_change_record.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_fives_change_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="regionOrder != null">region_order,</if>
+            <if test="position != null">position,</if>
+            <if test="owner != null">owner,</if>
+            <if test="checkDate != null">check_date,</if>
+            <if test="checkerId != null">checker_id,</if>
+            <if test="checkerName != null">checker_name,</if>
+            <if test="checkProblem != null">check_problem,</if>
+            <if test="checkFile != null">check_file,</if>
+            <if test="changeDate != null">change_date,</if>
+            <if test="changeContent != null">change_content,</if>
+            <if test="chengeFile != null">chenge_file,</if>
+            <if test="changeResult != null">change_result,</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="remarks != null">remarks,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="regionOrder != null">#{regionOrder},</if>
+            <if test="position != null">#{position},</if>
+            <if test="owner != null">#{owner},</if>
+            <if test="checkDate != null">#{checkDate},</if>
+            <if test="checkerId != null">#{checkerId},</if>
+            <if test="checkerName != null">#{checkerName},</if>
+            <if test="checkProblem != null">#{checkProblem},</if>
+            <if test="checkFile != null">#{checkFile},</if>
+            <if test="changeDate != null">#{changeDate},</if>
+            <if test="changeContent != null">#{changeContent},</if>
+            <if test="chengeFile != null">#{chengeFile},</if>
+            <if test="changeResult != null">#{changeResult},</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="remarks != null">#{remarks},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTFivesChangeRecord" parameterType="TFivesChangeRecord">
+        update t_fives_change_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="regionOrder != null">region_order = #{regionOrder},</if>
+            <if test="position != null">position = #{position},</if>
+            <if test="owner != null">owner = #{owner},</if>
+            <if test="checkDate != null">check_date = #{checkDate},</if>
+            <if test="checkerId != null">checker_id = #{checkerId},</if>
+            <if test="checkerName != null">checker_name = #{checkerName},</if>
+            <if test="checkProblem != null">check_problem = #{checkProblem},</if>
+            <if test="checkFile != null">check_file = #{checkFile},</if>
+            <if test="changeDate != null">change_date = #{changeDate},</if>
+            <if test="changeContent != null">change_content = #{changeContent},</if>
+            <if test="chengeFile != null">chenge_file = #{chengeFile},</if>
+            <if test="changeResult != null">change_result = #{changeResult},</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="remarks != null">remarks = #{remarks},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTFivesChangeRecordById" parameterType="Long">
+        update t_fives_change_record set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTFivesChangeRecordByIds" parameterType="String">
+        update t_fives_change_record set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 111 - 0
master/src/main/resources/mybatis/production/TFivesFileMapper.xml

@@ -0,0 +1,111 @@
+<?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.production.mapper.TFivesFileMapper">
+    
+    <resultMap type="TFivesFile" id="TFivesFileResult">
+        <result property="id"    column="id"    />
+        <result property="url"    column="url"    />
+        <result property="name"    column="name"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTFivesFileVo">
+        select d.id, d.url, d.name, d.remarks, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id ,s.dept_name from t_fives_file d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTFivesFileList" parameterType="TFivesFile" resultMap="TFivesFileResult">
+        <include refid="selectTFivesFileVo"/>
+        <where>  
+            <if test="url != null  and url != ''"> and url = #{url}</if>
+            <if test="name != null  and name != ''"> and name like concat(concat('%', #{name}), '%')</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null "> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+    
+    <select id="selectTFivesFileById" parameterType="Long" resultMap="TFivesFileResult">
+        <include refid="selectTFivesFileVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTFivesFile" parameterType="TFivesFile">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_fives_file.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_fives_file
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="url != null">url,</if>
+            <if test="name != null">name,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="url != null">#{url},</if>
+            <if test="name != null">#{name},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTFivesFile" parameterType="TFivesFile">
+        update t_fives_file
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="url != null">url = #{url},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTFivesFileById" parameterType="Long">
+        update t_fives_file set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTFivesFileByIds" parameterType="String">
+        update t_fives_file set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+    
+</mapper>

+ 176 - 0
master/src/main/resources/mybatis/production/TFivesMonthlyInspectionMapper.xml

@@ -0,0 +1,176 @@
+<?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.production.mapper.TFivesMonthlyInspectionMapper">
+
+    <resultMap type="TFivesMonthlyInspection" id="TFivesMonthlyInspectionResult">
+        <result property="id"    column="id"    />
+        <result property="regionOrder"    column="region_order"    />
+        <result property="position"    column="position"    />
+        <result property="owner"    column="owner"    />
+        <result property="year"    column="year"    />
+        <result property="jan"    column="jan"    />
+        <result property="feb"    column="feb"    />
+        <result property="mar"    column="mar"    />
+        <result property="apr"    column="apr"    />
+        <result property="may"    column="may"    />
+        <result property="jun"    column="jun"    />
+        <result property="jul"    column="jul"    />
+        <result property="aug"    column="aug"    />
+        <result property="sep"    column="sep"    />
+        <result property="oct"    column="oct"    />
+        <result property="nov"    column="nov"    />
+        <result property="dec"    column="dec"    />
+        <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="remarks"    column="remarks"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTFivesMonthlyInspectionVo">
+        select d.id, d.region_order, d.position, d.owner, d.year, d.jan, d.feb, d.mar, d.apr, d.may, d.jun, d.jul, d.aug, d.sep, d.oct, d.nov, d.dec, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.remarks, d.dept_id ,s.dept_name from t_fives_monthly_inspection d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTFivesMonthlyInspectionList" parameterType="TFivesMonthlyInspection" resultMap="TFivesMonthlyInspectionResult">
+        <include refid="selectTFivesMonthlyInspectionVo"/>
+        <where>
+            <if test="regionOrder != null  and regionOrder != ''"> and region_order = #{regionOrder}</if>
+            <if test="position != null  and position != ''"> and position = #{position}</if>
+            <if test="owner != null  and owner != ''"> and owner = #{owner}</if>
+            <if test="year != null "> and year = #{year}</if>
+            <if test="jan != null "> and jan = #{jan}</if>
+            <if test="feb != null "> and feb = #{feb}</if>
+            <if test="mar != null "> and mar = #{mar}</if>
+            <if test="apr != null "> and apr = #{apr}</if>
+            <if test="may != null "> and may = #{may}</if>
+            <if test="jun != null "> and jun = #{jun}</if>
+            <if test="jul != null "> and jul = #{jul}</if>
+            <if test="aug != null "> and aug = #{aug}</if>
+            <if test="sep != null "> and sep = #{sep}</if>
+            <if test="oct != null "> and oct = #{oct}</if>
+            <if test="nov != null "> and nov = #{nov}</if>
+            <if test="dec != null "> and dec = #{dec}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTFivesMonthlyInspectionById" parameterType="Long" resultMap="TFivesMonthlyInspectionResult">
+        <include refid="selectTFivesMonthlyInspectionVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTFivesMonthlyInspection" parameterType="TFivesMonthlyInspection">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_fives_monthly_inspection.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_fives_monthly_inspection
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="regionOrder != null">region_order,</if>
+            <if test="position != null">position,</if>
+            <if test="owner != null">owner,</if>
+            <if test="year != null">year,</if>
+            <if test="jan != null">jan,</if>
+            <if test="feb != null">feb,</if>
+            <if test="mar != null">mar,</if>
+            <if test="apr != null">apr,</if>
+            <if test="may != null">may,</if>
+            <if test="jun != null">jun,</if>
+            <if test="jul != null">jul,</if>
+            <if test="aug != null">aug,</if>
+            <if test="sep != null">sep,</if>
+            <if test="oct != null">oct,</if>
+            <if test="nov != null">nov,</if>
+            <if test="dec != null">dec,</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="remarks != null">remarks,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="regionOrder != null">#{regionOrder},</if>
+            <if test="position != null">#{position},</if>
+            <if test="owner != null">#{owner},</if>
+            <if test="year != null">#{year},</if>
+            <if test="jan != null">#{jan},</if>
+            <if test="feb != null">#{feb},</if>
+            <if test="mar != null">#{mar},</if>
+            <if test="apr != null">#{apr},</if>
+            <if test="may != null">#{may},</if>
+            <if test="jun != null">#{jun},</if>
+            <if test="jul != null">#{jul},</if>
+            <if test="aug != null">#{aug},</if>
+            <if test="sep != null">#{sep},</if>
+            <if test="oct != null">#{oct},</if>
+            <if test="nov != null">#{nov},</if>
+            <if test="dec != null">#{dec},</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="remarks != null">#{remarks},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTFivesMonthlyInspection" parameterType="TFivesMonthlyInspection">
+        update t_fives_monthly_inspection
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="regionOrder != null">region_order = #{regionOrder},</if>
+            <if test="position != null">position = #{position},</if>
+            <if test="owner != null">owner = #{owner},</if>
+            <if test="year != null">year = #{year},</if>
+            <if test="jan != null">jan = #{jan},</if>
+            <if test="feb != null">feb = #{feb},</if>
+            <if test="mar != null">mar = #{mar},</if>
+            <if test="apr != null">apr = #{apr},</if>
+            <if test="may != null">may = #{may},</if>
+            <if test="jun != null">jun = #{jun},</if>
+            <if test="jul != null">jul = #{jul},</if>
+            <if test="aug != null">aug = #{aug},</if>
+            <if test="sep != null">sep = #{sep},</if>
+            <if test="oct != null">oct = #{oct},</if>
+            <if test="nov != null">nov = #{nov},</if>
+            <if test="dec != null">dec = #{dec},</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="remarks != null">remarks = #{remarks},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTFivesMonthlyInspectionById" parameterType="Long">
+        update t_fives_monthly_inspection set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTFivesMonthlyInspectionByIds" parameterType="String">
+        update t_fives_monthly_inspection set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 131 - 0
master/src/main/resources/mybatis/production/TFivesRegionMapper.xml

@@ -0,0 +1,131 @@
+<?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.production.mapper.TFivesRegionMapper">
+
+    <resultMap type="TFivesRegion" id="TFivesRegionResult">
+        <result property="id"    column="id"    />
+        <result property="plantCode"    column="plant_code"    />
+        <result property="orderNO"    column="order_no"    />
+        <result property="position"    column="position"    />
+        <result property="personLiable"    column="person_liable"    />
+        <result property="roomNo"    column="room_no"    />
+        <result property="fileId"    column="file_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="status"    column="status"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="deptName" column="dept_name" />
+    </resultMap>
+
+    <sql id="selectTFivesRegionVo">
+        select d.id, d.plant_code, d.order_no, d.position, d.person_liable, d.room_no, d.file_id, d.remarks, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id ,s.dept_name from t_fives_region d
+      left join sys_dept s on s.dept_id = d.dept_id
+    </sql>
+
+    <select id="selectTFivesRegionList" parameterType="TFivesRegion" resultMap="TFivesRegionResult">
+        <include refid="selectTFivesRegionVo"/>
+        <where>
+            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
+            <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
+            <if test="position != null  and position != ''"> and position = #{position}</if>
+            <if test="personLiable != null  and personLiable != ''"> and person_liable = #{personLiable}</if>
+            <if test="roomNo != null  and roomNo != ''"> and room_no = #{roomNo}</if>
+            <if test="fileId != null  and fileId != ''"> and file_id = #{fileId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="status != null "> and status = #{status}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null "> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            and d.del_flag = 0
+        </where>
+        <!-- 数据范围过滤 -->
+        ${params.dataScope}
+    </select>
+
+    <select id="selectTFivesRegionById" parameterType="Long" resultMap="TFivesRegionResult">
+        <include refid="selectTFivesRegionVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTFivesRegion" parameterType="TFivesRegion">
+        <selectKey keyProperty="id" resultType="long" order="BEFORE">
+            SELECT seq_t_fives_region.NEXTVAL as id FROM DUAL
+        </selectKey>
+        insert into t_fives_region
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="plantCode != null">plant_code,</if>
+            <if test="orderNo != null">order_no,</if>
+            <if test="position != null">position,</if>
+            <if test="personLiable != null">person_liable,</if>
+            <if test="roomNo != null">room_no,</if>
+            <if test="fileId != null">file_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="status != null">status,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="plantCode != null">#{plantCode},</if>
+            <if test="orderNo != null">#{orderNo},</if>
+            <if test="position != null">#{position},</if>
+            <if test="personLiable != null">#{personLiable},</if>
+            <if test="roomNo != null">#{roomNo},</if>
+            <if test="fileId != null">#{fileId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="status != null">#{status},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTFivesRegion" parameterType="TFivesRegion">
+        update t_fives_region
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantCode != null">plant_code = #{plantCode},</if>
+            <if test="orderNo != null">order_no = #{orderNo},</if>
+            <if test="position != null">position = #{position},</if>
+            <if test="personLiable != null">person_liable = #{personLiable},</if>
+            <if test="roomNo != null">room_no = #{roomNo},</if>
+            <if test="fileId != null">file_id = #{fileId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteTFivesRegionById" parameterType="Long">
+        update t_fives_region set del_flag = 2 where id = #{id}
+    </update>
+
+    <update id="deleteTFivesRegionByIds" parameterType="String">
+        update t_fives_region set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+</mapper>

+ 6 - 2
master/src/main/resources/processes/apply/safetychange.bpmn

@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
+             xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
+             typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath"
+             targetNamespace="http://www.activiti.org/test">
   <process id="safetychange" name="组织保护措施状态变更申请流程" isExecutable="true">
     <startEvent id="startevent1" name="Start"></startEvent>
     <userTask id="applytask" name="申请人提交申请" activiti:assignee="#{applyuser}"></userTask>
@@ -42,7 +46,7 @@
     </sequenceFlow>
     <userTask id="executortask" name="措施执行人" activiti:assignee="#{executor}">
       <extensionElements>
-        <activiti:taskListener event="create" delegateExpression="${changeNextTaskListener}"></activiti:taskListener>
+        <activiti:taskListener event="create" delegateExpression="${changeMgrListener}"></activiti:taskListener>
       </extensionElements>
     </userTask>
     <userTask id="confirmertask" name="措施确认人" activiti:candidateUsers="#{confirmer}">

+ 53 - 0
ui/src/api/production/file.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询5s管理附件列表
+export function listFile(query) {
+  return request({
+    url: '/production/file/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询5s管理附件详细
+export function getFile(id) {
+  return request({
+    url: '/production/file/' + id,
+    method: 'get'
+  })
+}
+
+// 新增5s管理附件
+export function addFile(data) {
+  return request({
+    url: '/production/file',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改5s管理附件
+export function updateFile(data) {
+  return request({
+    url: '/production/file',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除5s管理附件
+export function delFile(id) {
+  return request({
+    url: '/production/file/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出5s管理附件
+export function exportFile(query) {
+  return request({
+    url: '/production/file/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
ui/src/api/production/inspection.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询区域月度检查列表
+export function listInspection(query) {
+  return request({
+    url: '/production/inspection/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询区域月度检查详细
+export function getInspection(id) {
+  return request({
+    url: '/production/inspection/' + id,
+    method: 'get'
+  })
+}
+
+// 新增区域月度检查
+export function addInspection(data) {
+  return request({
+    url: '/production/inspection',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改区域月度检查
+export function updateInspection(data) {
+  return request({
+    url: '/production/inspection',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除区域月度检查
+export function delInspection(id) {
+  return request({
+    url: '/production/inspection/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出区域月度检查
+export function exportInspection(query) {
+  return request({
+    url: '/production/inspection/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
ui/src/api/production/record.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询区域检查整改记录列表
+export function listRecord(query) {
+  return request({
+    url: '/production/record/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询区域检查整改记录详细
+export function getRecord(id) {
+  return request({
+    url: '/production/record/' + id,
+    method: 'get'
+  })
+}
+
+// 新增区域检查整改记录
+export function addRecord(data) {
+  return request({
+    url: '/production/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改区域检查整改记录
+export function updateRecord(data) {
+  return request({
+    url: '/production/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除区域检查整改记录
+export function delRecord(id) {
+  return request({
+    url: '/production/record/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出区域检查整改记录
+export function exportRecord(query) {
+  return request({
+    url: '/production/record/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
ui/src/api/production/region.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询区域列台账列表
+export function listRegion(query) {
+  return request({
+    url: '/production/region/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询区域列台账详细
+export function getRegion(id) {
+  return request({
+    url: '/production/region/' + id,
+    method: 'get'
+  })
+}
+
+// 新增区域列台账
+export function addRegion(data) {
+  return request({
+    url: '/production/region',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改区域列台账
+export function updateRegion(data) {
+  return request({
+    url: '/production/region',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除区域列台账
+export function delRegion(id) {
+  return request({
+    url: '/production/region/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出区域列台账
+export function exportRegion(query) {
+  return request({
+    url: '/production/region/export',
+    method: 'get',
+    params: query
+  })
+}

+ 503 - 0
ui/src/views/production/file/index.vue

@@ -0,0 +1,503 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="文件地址" prop="url">
+        <el-input
+          v-model="queryParams.url"
+          placeholder="请输入文件地址"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="文件名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入文件名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="备注" prop="remarks">
+        <el-input
+          v-model="queryParams.remarks"
+          placeholder="请输入备注"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="创建人" prop="createrCode">
+        <el-input
+          v-model="queryParams.createrCode"
+          placeholder="请输入创建人"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.createdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="修改人" prop="updaterCode">
+        <el-input
+          v-model="queryParams.updaterCode"
+          placeholder="请输入修改人"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="修改时间" prop="updatedate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.updatedate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择修改时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="部门编号" prop="deptId">
+        <el-input
+          v-model="queryParams.deptId"
+          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="['production:file: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="['production:file: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="['production:file:remove']"
+        >删除</el-button>
+      </el-col>
+        <el-col :span="1.5">
+            <el-button
+                    type="info"
+                    icon="el-icon-upload2"
+                    size="mini"
+                    @click="handleImport"
+                    v-hasPermi="['production:file:edit']"
+            >导入</el-button>
+        </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['production:file:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="fileList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="唯一标识ID" align="center" prop="id" :show-overflow-tooltip="true"/>
+      <el-table-column label="文件地址" align="center" prop="url" :show-overflow-tooltip="true"/>
+      <el-table-column label="文件名称" align="center" prop="name" :show-overflow-tooltip="true"/>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="状态" align="center" prop="status" :show-overflow-tooltip="true"/>
+      <el-table-column label="创建人" align="center" prop="createrCode" :show-overflow-tooltip="true"/>
+      <el-table-column label="创建时间" align="center" prop="createdate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="修改人" align="center" prop="updaterCode" :show-overflow-tooltip="true"/>
+      <el-table-column label="修改时间" align="center" prop="updatedate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updatedate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="部门编号" align="center" prop="deptId" :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="['production:file:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:file: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"
+    />
+
+    <!-- 添加或修改5s管理附件对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="文件地址" prop="url">
+          <el-input v-model="form.url" placeholder="请输入文件地址" />
+        </el-form-item>
+        <el-form-item label="文件名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入文件名称" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" placeholder="请输入备注" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="状态 0 :正常 ;1:删除" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入状态 0 :正常 ;1:删除" />
+        </el-form-item>
+        <el-form-item label="创建人" prop="createrCode">
+          <el-input v-model="form.createrCode" placeholder="请输入创建人" />
+        </el-form-item>
+        <el-form-item label="创建时间" prop="createdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.createdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择创建时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="修改人" prop="updaterCode">
+          <el-input v-model="form.updaterCode" placeholder="请输入修改人" />
+        </el-form-item>
+        <el-form-item label="修改时间" prop="updatedate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.updatedate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择修改时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="部门编号" prop="deptId">
+          <el-input v-model="form.deptId" placeholder="请输入部门编号" />
+        </el-form-item>
+          <el-form-item label="归属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" 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 { listFile, getFile, delFile, addFile, updateFile, exportFile, importTemplate} from "@/api/production/file";
+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: "File",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 5s管理附件表格数据
+      fileList: [],
+      // 弹出层标题
+      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 + "/production/file/importData"
+        },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        url: null,
+        name: null,
+        remarks: null,
+        status: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        deptId: [
+          { required: true, message: "部门编号不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+            this.$refs.tree.filter(val);
+        }
+   },
+  created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+      })
+    this.getList();
+    this.getTreeselect();
+  },
+  methods: {
+    /** 查询5s管理附件列表 */
+    getList() {
+      this.loading = true;
+      listFile(this.queryParams).then(response => {
+        this.fileList = 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,
+        url: null,
+        name: null,
+        remarks: null,
+        status: 0,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: 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 = "添加5s管理附件";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getFile(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改5s管理附件";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateFile(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addFile(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 delFile(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有5s管理附件数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportFile(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>

+ 3 - 0
ui/src/views/production/fives/index.vue

@@ -0,0 +1,3 @@
+<template >
+  <router-view />
+</template>

+ 616 - 0
ui/src/views/production/inspection/index.vue

@@ -0,0 +1,616 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="区域序号" prop="regionOrder">
+        <el-input
+          v-model="queryParams.regionOrder"
+          placeholder="请输入区域序号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位置" prop="position">
+        <el-input
+          v-model="queryParams.position"
+          placeholder="请输入位置"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="责任人" prop="owner">
+        <el-input
+          v-model="queryParams.owner"
+          placeholder="请输入责任人"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="年" prop="year">
+        <el-input
+          v-model="queryParams.year"
+          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="['production:inspection: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="['production:inspection: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="['production:inspection:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['production:inspection:edit']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['production:inspection:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="inspectionList" @selection-change="handleSelectionChange"
+              :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="区域序号" align="center" prop="regionOrder" :show-overflow-tooltip="true"/>
+      <el-table-column label="位置" align="center" prop="position" :show-overflow-tooltip="true"/>
+      <el-table-column label="责任人" align="center" prop="owner" :show-overflow-tooltip="true"/>
+      <el-table-column label="年" align="center" prop="year" :show-overflow-tooltip="true"/>
+      <el-table-column label="一月" align="center" prop="jan" :show-overflow-tooltip="true"/>
+      <el-table-column label="二月" align="center" prop="feb" :show-overflow-tooltip="true"/>
+      <el-table-column label="三月" align="center" prop="mar" :show-overflow-tooltip="true"/>
+      <el-table-column label="四月" align="center" prop="apr" :show-overflow-tooltip="true"/>
+      <el-table-column label="五月" align="center" prop="may" :show-overflow-tooltip="true"/>
+      <el-table-column label="六月" align="center" prop="jun" :show-overflow-tooltip="true"/>
+      <el-table-column label="七月" align="center" prop="jul" :show-overflow-tooltip="true"/>
+      <el-table-column label="八月" align="center" prop="aug" :show-overflow-tooltip="true"/>
+      <el-table-column label="九月" align="center" prop="sep" :show-overflow-tooltip="true"/>
+      <el-table-column label="十月" align="center" prop="oct" :show-overflow-tooltip="true"/>
+      <el-table-column label="十一月" align="center" prop="nov" :show-overflow-tooltip="true"/>
+      <el-table-column label="十二月" align="center" prop="dec" :show-overflow-tooltip="true"/>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:inspection:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:inspection: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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="区域序号" prop="regionOrder">
+          <el-input v-model="form.regionOrder" placeholder="请输入区域序号"/>
+        </el-form-item>
+        <el-form-item label="位置" prop="position">
+          <el-input v-model="form.position" placeholder="请输入位置"/>
+        </el-form-item>
+        <el-form-item label="责任人" prop="owner">
+          <el-input v-model="form.owner" placeholder="请输入责任人"/>
+        </el-form-item>
+        <el-form-item label="年" prop="year">
+          <el-date-picker
+            style="width: 100%"
+            v-model="year"
+            type="year"
+            placeholder="请选择年">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="一月" prop="jan">
+          <el-select v-model="form.jan" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="二月" prop="feb">
+          <el-select v-model="form.feb" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="三月" prop="mar">
+          <el-select v-model="form.mar" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="四月" prop="apr">
+          <el-select v-model="form.apr" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="五月" prop="may">
+          <el-select v-model="form.may" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="六月" prop="jun">
+          <el-select v-model="form.jun" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="七月" prop="jul">
+          <el-select v-model="form.jul" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="八月" prop="aug">
+          <el-select v-model="form.aug" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="九月" prop="sep">
+          <el-select v-model="form.sep" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="十月" prop="oct">
+          <el-select v-model="form.oct" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="十一月" prop="nov">
+          <el-select v-model="form.nov" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="十二月" prop="dec">
+          <el-select v-model="form.dec" filterable placeholder="请选择评分"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in scoreList"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue">
+            </el-option>
+          </el-select>
+        </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 {
+  listInspection,
+  getInspection,
+  delInspection,
+  addInspection,
+  updateInspection,
+  exportInspection,
+  importTemplate
+} from "@/api/production/inspection";
+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: "Inspection",
+  components: {Treeselect},
+  data() {
+    return {
+      year: new Date(),
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 区域月度检查表格数据
+      inspectionList: [],
+      // 弹出层标题
+      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 + "/production/inspection/importData"
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        regionOrder: null,
+        position: null,
+        owner: null,
+        year: null,
+        jan: null,
+        feb: null,
+        mar: null,
+        apr: null,
+        may: null,
+        jun: null,
+        jul: null,
+        aug: null,
+        sep: null,
+        oct: null,
+        nov: null,
+        dec: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        remarks: null,
+        deptId: null
+      },
+      scoreList: [],
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        deptId: [
+          {required: true, message: "部门编号不能为空", trigger: "blur"}
+        ]
+      }
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 250
+    })
+    this.getList();
+    this.getTreeselect();
+    this.getDicts('5s_score').then(res => {
+      this.scoreList = res.data
+    })
+  },
+  methods: {
+    /** 查询区域月度检查列表 */
+    getList() {
+      this.loading = true;
+      listInspection(this.queryParams).then(response => {
+        this.inspectionList = 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,
+        regionOrder: null,
+        position: null,
+        owner: null,
+        year: null,
+        jan: null,
+        feb: null,
+        mar: null,
+        apr: null,
+        may: null,
+        jun: null,
+        jul: null,
+        aug: null,
+        sep: null,
+        oct: null,
+        nov: null,
+        dec: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        remarks: null,
+        deptId: 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
+      getInspection(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改区域月度检查";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.form.year = this.year.getFullYear();
+          if (this.form.id != null) {
+            updateInspection(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInspection(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 delInspection(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有区域月度检查数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportInspection(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>

+ 498 - 0
ui/src/views/production/record/index.vue

@@ -0,0 +1,498 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="区域序号" prop="regionOrder">
+        <el-input
+          v-model="queryParams.regionOrder"
+          placeholder="请输入区域序号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位置" prop="position">
+        <el-input
+          v-model="queryParams.position"
+          placeholder="请输入位置"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="负责人" prop="owner">
+        <el-input
+          v-model="queryParams.owner"
+          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="checkerName">
+        <el-input
+          v-model="queryParams.checkerName"
+          placeholder="请输入检查人姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检查问题描述" prop="checkProblem">
+        <el-input
+          v-model="queryParams.checkProblem"
+          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="['production:record: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="['production:record: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="['production:record:remove']"
+        >删除</el-button>
+      </el-col>
+        <el-col :span="1.5">
+            <el-button
+                    type="info"
+                    icon="el-icon-upload2"
+                    size="mini"
+                    @click="handleImport"
+                    v-hasPermi="['production:record:edit']"
+            >导入</el-button>
+        </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['production:record:export']"
+        >导出</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="区域序号" align="center" prop="regionOrder" :show-overflow-tooltip="true"/>
+      <el-table-column label="位置" align="center" prop="position" :show-overflow-tooltip="true"/>
+      <el-table-column label="负责人" align="center" prop="owner" :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="checkProblem" :show-overflow-tooltip="true"/>
+      <el-table-column label="检查附件" align="center" prop="checkFile" :show-overflow-tooltip="true"/>
+      <el-table-column label="整改日期" align="center" prop="changeDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.changeDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="整改内容" align="center" prop="changeContent" :show-overflow-tooltip="true"/>
+      <el-table-column label="整改后照片" align="center" prop="chengeFile" :show-overflow-tooltip="true"/>
+      <el-table-column label="整改结果" align="center" prop="changeResult" :show-overflow-tooltip="true"/>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:record:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:record:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改区域检查整改记录对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="区域序号" prop="regionOrder">
+          <el-input v-model="form.regionOrder" placeholder="请输入区域序号" />
+        </el-form-item>
+        <el-form-item label="位置" prop="position">
+          <el-input v-model="form.position" placeholder="请输入位置" />
+        </el-form-item>
+        <el-form-item label="负责人" prop="owner">
+          <el-input v-model="form.owner" placeholder="请输入负责人" />
+        </el-form-item>
+        <el-form-item label="检查日期" prop="checkDate">
+          <el-date-picker clearable size="small" style="width: 100%"
+            v-model="form.checkDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择检查日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="检查人" prop="checkerId">
+          <el-input v-model="form.checkerId" placeholder="请输入检查人" />
+        </el-form-item>
+        <el-form-item label="检查问题描述" prop="checkProblem">
+          <el-input v-model="form.checkProblem" placeholder="请输入检查问题描述" />
+        </el-form-item>
+        <el-form-item label="整改日期" prop="changeDate">
+          <el-date-picker clearable size="small" style="width: 100%"
+            v-model="form.changeDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择整改日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="整改内容">
+          <el-input type="textarea" v-model="form.changeContent" placeholder="请输入整改内容"/>
+        </el-form-item>
+        <el-form-item label="整改结果" prop="changeResult">
+          <el-input v-model="form.changeResult" placeholder="请输入整改结果" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+      <!-- 用户导入对话框 -->
+      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+          <el-upload
+                  ref="upload"
+                  :limit="1"
+                  accept=".xlsx, .xls"
+                  :headers="upload.headers"
+                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
+                  :disabled="upload.isUploading"
+                  :on-progress="handleFileUploadProgress"
+                  :on-success="handleFileSuccess"
+                  :auto-upload="false"
+                  drag
+          >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                  将文件拖到此处,或
+                  <em>点击上传</em>
+              </div>
+              <div class="el-upload__tip" slot="tip">
+                  <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
+                  <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
+              </div>
+              <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+          </el-upload>
+          <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitFileForm">确 定</el-button>
+              <el-button @click="upload.open = false">取 消</el-button>
+          </div>
+      </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listRecord, getRecord, delRecord, addRecord, updateRecord, exportRecord, importTemplate} from "@/api/production/record";
+import { treeselect } from "@/api/system/dept";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import Editor from '@/components/Editor';
+
+export default {
+  name: "Record",
+  components: { Treeselect },
+  // components: { Editor },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 区域检查整改记录表格数据
+      recordList: [],
+      // 弹出层标题
+      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 + "/production/record/importData"
+        },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        regionOrder: null,
+        position: null,
+        owner: null,
+        checkDate: null,
+        checkerId: null,
+        checkerName: null,
+        checkProblem: null,
+        checkFile: null,
+        changeDate: null,
+        changeContent: null,
+        chengeFile: null,
+        changeResult: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        remarks: null,
+        deptId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        deptId: [
+          { required: true, message: "部门编号不能为空", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  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;
+      listRecord(this.queryParams).then(response => {
+        this.recordList = 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,
+        regionOrder: null,
+        position: null,
+        owner: null,
+        checkDate: null,
+        checkerId: null,
+        checkerName: null,
+        checkProblem: null,
+        checkFile: null,
+        changeDate: null,
+        changeContent: null,
+        chengeFile: null,
+        changeResult: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        remarks: null,
+        deptId: 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
+      getRecord(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) {
+            updateRecord(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRecord(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 delRecord(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有区域检查整改记录数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportRecord(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>

+ 526 - 0
ui/src/views/production/region/index.vue

@@ -0,0 +1,526 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="序号" prop="orderNo">
+        <el-input
+          v-model="queryParams.orderNo"
+          placeholder="请输入序号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位置" prop="position">
+        <el-input
+          v-model="queryParams.position"
+          placeholder="请输入位置"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="责任人" prop="personLiable">
+        <el-input
+          v-model="queryParams.personLiable"
+          placeholder="请输入责任人"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="房间号" prop="roomNo">
+        <el-input
+          v-model="queryParams.roomNo"
+          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="['production:region: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="['production:region: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="['production:region:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="info"
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['production:region:edit']"
+        >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['production:region:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="regionList" @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="orderNo" :show-overflow-tooltip="true"/>
+      <el-table-column label="位置" align="center" prop="position" :show-overflow-tooltip="true"/>
+      <el-table-column label="责任人" align="center" prop="personLiable" :show-overflow-tooltip="true"/>
+      <el-table-column label="房间号" align="center" prop="roomNo" :show-overflow-tooltip="true"/>
+      <el-table-column label="区域标准状态照片" align="center" prop="fileId" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <div v-if="scope.row.fileId">
+            <el-button type="text" @click="openFile(scope.row.fileId)"><i class="el-icon-picture-outline"/>查看
+            </el-button>
+          </div>
+          <div v-else>
+            NA
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column label="操作" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['production:region:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['production:region: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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="装置名称" prop="plantCode">
+          <el-input v-model="form.plantCode" placeholder="请输入装置名称"/>
+        </el-form-item>
+        <el-form-item label="序号" prop="orderNo">
+          <el-input v-model="form.orderNo" placeholder="请输入序号"/>
+        </el-form-item>
+        <el-form-item label="位置" prop="position">
+          <el-input v-model="form.position" placeholder="请输入位置"/>
+        </el-form-item>
+        <el-form-item label="责任人" prop="personLiable">
+          <el-input v-model="form.personLiable" placeholder="请输入责任人"/>
+        </el-form-item>
+        <el-form-item label="房间号" prop="roomNo">
+          <el-input v-model="form.roomNo" placeholder="请输入房间号"/>
+        </el-form-item>
+        <el-form-item label="区域标准状态照片" prop="fileId">
+          <el-upload
+            ref="file"
+            :headers="file.headers"
+            :action="file.url"
+            :disabled="file.isUploading"
+            :on-progress="handleFileDocProgress"
+            :on-success="handleFileDocSuccess"
+            :auto-upload="true"
+            accept=".jpg,.png"
+            :multiple="true"
+            :file-list="fileList"
+            list-type="picture-card"
+          >
+            <i class="el-icon-plus"></i>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" placeholder="请输入备注"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="区域标准状态照片" :visible.sync="file.open">
+      <div>
+        <el-image
+          style="width: 30%; height: 30%;margin:10px;border-radius: 5%;vertical-align: middle;'"
+          v-for="url in srcList"
+          :src="url"
+          :preview-src-list="srcList">
+        </el-image>
+      </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 {
+  listRegion,
+  getRegion,
+  delRegion,
+  addRegion,
+  updateRegion,
+  exportRegion,
+  importTemplate
+} from "@/api/production/region";
+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 {getFile} from "@/api/production/file";
+
+export default {
+  name: "Region",
+  components: {Treeselect},
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      srcList: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 区域列台账表格数据
+      regionList: [],
+      // 弹出层标题
+      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 + "/production/region/importData"
+      },
+      fileList: [],
+      file: {
+        file: "",
+        open: false,
+        // 是否禁用上传
+        isUploading: false,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/production/file/uploadFile",
+      },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        plantCode: null,
+        orderNo: null,
+        position: null,
+        personLiable: null,
+        roomNo: null,
+        fileId: null,
+        remarks: null,
+        status: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+      fileIds: []
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = document.body.clientHeight - 250
+    })
+    this.getList();
+    this.getTreeselect();
+  },
+  methods: {
+    openFile(fileIds) {
+      console.log(fileIds)
+      this.file.open = true;
+      this.srcList = [];
+      let ids = fileIds.split(',');
+      console.log(ids)
+      for (let id of ids) {
+        console.log(id)
+        getFile(id).then(res => {
+          this.srcList.push(process.env.VUE_APP_BASE_API + res.data.url)
+        })
+      }
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+      this.file.file = file;
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.fileIds.push(response.data);
+    },
+    /** 查询区域列台账列表 */
+    getList() {
+      this.loading = true;
+      listRegion(this.queryParams).then(response => {
+        this.regionList = 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,
+        orderNo: null,
+        position: null,
+        personLiable: null,
+        roomNo: null,
+        fileId: null,
+        remarks: null,
+        status: 0,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: 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.fileIds = [];
+      this.open = true;
+      this.title = "添加区域列台账";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      this.fileIds = [];
+      const id = row.id || this.ids
+      getRegion(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改区域列台账";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.fileIds != []) {
+            this.form.fileId = this.fileIds.join(',');
+          }
+          if (this.form.id != null) {
+            updateRegion(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addRegion(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 delRegion(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有区域列台账数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function () {
+        return exportRegion(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>