jiangbiao hai 7 meses
pai
achega
70631731a7

+ 58 - 0
master/src/main/java/com/ruoyi/project/apply/controller/TApplyLockController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.project.apply.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.ExcelUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
@@ -15,6 +16,10 @@ import com.ruoyi.project.apply.domain.TApplySafetychange;
 import com.ruoyi.project.apply.service.ITApplyLockService;
 import com.ruoyi.project.apply.service.ITApplyOfflinevalveService;
 import com.ruoyi.project.apply.service.ITApplySafetychangeService;
+import com.ruoyi.project.pssr.domain.TPssrAboveall;
+import com.ruoyi.project.pssr.domain.TPssrSubcontent;
+import com.ruoyi.project.pssr.service.ITPssrAboveallService;
+import com.ruoyi.project.pssr.service.ITPssrSubcontentService;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.service.ISysDeptService;
 import org.apache.poi.ss.usermodel.Cell;
@@ -44,6 +49,12 @@ public class TApplyLockController extends BaseController {
     @Autowired
     private ISysDeptService iSysDeptService;
 
+    @Autowired
+    private ITPssrSubcontentService tPssrSubcontentService;
+
+    @Autowired
+    private ITPssrAboveallService tPssrAboveallService;
+
 
     @Autowired
     private ITApplyOfflinevalveService tApplyOfflinevalveService;
@@ -112,6 +123,53 @@ public class TApplyLockController extends BaseController {
         return AjaxResult.success(tApplyLockService.selectTApplyLockList(tApplyLock));
     }
 
+    @GetMapping("/listLockPid")
+    public AjaxResult listLockPid(TApplyLock tApplyLock) {
+        if (tApplyLock.getSubId() != null) {
+            TPssrSubcontent subcontent = tPssrSubcontentService.selectTPssrSubcontentById(tApplyLock.getSubId());
+            TPssrAboveall aboveall = tPssrAboveallService.selectTPssrAboveallById(subcontent.getAboveallId());
+            List<String> posts = null;
+            List<String> units = new ArrayList<>();
+            if (StringUtils.isNotEmpty(aboveall.getUnit())) {
+                units.addAll(Arrays.asList(aboveall.getUnit().split(",")));
+            } else {
+                if (aboveall.getRegion().contains("裂解")) {
+                    units.add("310");
+                    units.add("320");
+                    units.add("710");
+                    units.add("720");
+                    units.add("730");
+                } else if (aboveall.getRegion().contains("压缩")) {
+                    units.add("330");
+                    units.add("610");
+                } else if (aboveall.getRegion().contains("分离")) {
+                    units.add("340");
+                    units.add("350");
+                    units.add("360");
+                    units.add("380");
+                }else if (aboveall.getRegion().contains("AEU")) {
+                    units.add("410");
+                    units.add("430");
+                    units.add("440");
+                    units.add("450");
+                    units.add("460");
+                    units.add("470");
+                }else if (aboveall.getRegion().contains("PGU")) {
+                    units.add("510");
+                    units.add("520");
+                    units.add("530");
+                }
+            }
+            if (aboveall.getIncludePublic() == 1) {
+                posts = new ArrayList<>();
+                posts.add("公共区域");
+            }
+            tApplyLock.setPosts(posts);
+            tApplyLock.setUnits(units);
+        }
+        return AjaxResult.success(tApplyLockService.selectTApplyLockPidList(tApplyLock));
+    }
+
     /**
      * 导出破锁管理列表
      */

+ 30 - 0
master/src/main/java/com/ruoyi/project/apply/domain/TApplyLock.java

@@ -8,6 +8,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 破锁管理对象 t_apply_lock
@@ -139,6 +140,35 @@ public class TApplyLock extends BaseEntity {
      */
     private Long deptId;
 
+    private Long subId;
+
+    private List<String> units;
+    private List<String> posts;
+
+    public List<String> getPosts() {
+        return posts;
+    }
+
+    public void setPosts(List<String> posts) {
+        this.posts = posts;
+    }
+
+    public List<String> getUnits() {
+        return units;
+    }
+
+    public void setUnits(List<String> units) {
+        this.units = units;
+    }
+
+    public Long getSubId() {
+        return subId;
+    }
+
+    public void setSubId(Long subId) {
+        this.subId = subId;
+    }
+
     public String getDeptName() {
         return deptName;
     }

+ 1 - 0
master/src/main/java/com/ruoyi/project/apply/mapper/TApplyLockMapper.java

@@ -30,6 +30,7 @@ public interface TApplyLockMapper
      */
     @DataScope(deptAlias = "d")
     public List<TApplyLock> selectTApplyLockList(TApplyLock tApplyLock);
+    public List<TApplyLock> selectTApplyLockPidList(TApplyLock tApplyLock);
 
     /**
      * 新增破锁管理

+ 1 - 0
master/src/main/java/com/ruoyi/project/apply/service/ITApplyLockService.java

@@ -27,6 +27,7 @@ public interface ITApplyLockService
      * @return 破锁管理集合
      */
     public List<TApplyLock> selectTApplyLockList(TApplyLock tApplyLock);
+    public List<TApplyLock> selectTApplyLockPidList(TApplyLock tApplyLock);
 
     /**
      * 新增破锁管理

+ 5 - 0
master/src/main/java/com/ruoyi/project/apply/service/impl/TApplyLockServiceImpl.java

@@ -47,6 +47,11 @@ public class TApplyLockServiceImpl implements ITApplyLockService
     {
         return tApplyLockMapper.selectTApplyLockList(tApplyLock);
     }
+    @Override
+    public List<TApplyLock> selectTApplyLockPidList(TApplyLock tApplyLock)
+    {
+        return tApplyLockMapper.selectTApplyLockPidList(tApplyLock);
+    }
 
     /**
      * 新增破锁管理

+ 48 - 0
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrApproveController.java

@@ -250,6 +250,9 @@ public class TPssrApproveController extends BaseController {
     @PostMapping("/doPssrApprove/{subId}")
     public AjaxResult doApprove(@PathVariable Long subId) {
         TPssrSubcontent tPssrSubcontent = tPssrSubcontentService.selectTPssrSubcontentById(subId);
+        if (judgmentOrder(tPssrSubcontent)) {
+            return AjaxResult.error("请先完成前置审批流程");
+        }
         tPssrSubcontent.setApproveStatus(1L);
         tPssrSubcontentService.updateTPssrSubcontent(tPssrSubcontent);
         switch (tPssrSubcontent.getForShort()) {
@@ -352,6 +355,51 @@ public class TPssrApproveController extends BaseController {
         return AjaxResult.success();
     }
 
+    /**
+     * 判断当前发起的审批是否满足前置条件
+     */
+    private boolean judgmentOrder(TPssrSubcontent sub) {
+        TPssrSubcontent subcontent = new TPssrSubcontent();
+        subcontent.setAboveallId(sub.getAboveallId());
+        List<String> forShorts = new ArrayList<>();
+        if (sub.getForShort().contains("jb,ybjy")) {
+
+        } else if (sub.getForShort().contains("sbqjd")) {
+            forShorts.add("jb");
+            forShorts.add("ybjy");
+        } else if (sub.getForShort().contains("jxxm,kgfa,sjbg")) {
+            forShorts.add("sbqjd");
+        } else if (sub.getForShort().contains("mb")) {
+            forShorts.add("jxxm");
+            forShorts.add("kgfa");
+            forShorts.add("sjbg");
+        } else if (sub.getForShort().contains("dj,aqss,sksgfmzt")) {
+            forShorts.add("mb");
+        } else if (sub.getForShort().contains("xcws,rsfh,xqf,txjk,qtjcy,hbss")) {
+            forShorts.add("dj");
+            forShorts.add("aqss");
+            forShorts.add("sksgfmzt");
+        } else if (sub.getForShort().contains("ssy,gygc,yfl")) {
+            forShorts.add("xcws");
+            forShorts.add("rsfh");
+            forShorts.add("xqf");
+            forShorts.add("txjk");
+            forShorts.add("qtjcy");
+            forShorts.add("hbss");
+        } else if (sub.getForShort().contains("qm,dqzh")) {
+            forShorts.add("ssy");
+            forShorts.add("gygc");
+            forShorts.add("yfl");
+        }
+        subcontent.setForShorts(forShorts);
+        for (TPssrSubcontent tPssrSubcontent : tPssrSubcontentService.selectTPssrSubcontentListByForShort(subcontent)) {
+            if (tPssrSubcontent.getApproveStatus() != 2) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     @Log(title = "pssr负责人审批", businessType = BusinessType.UPDATE)
     @PutMapping("/handlePssrApprove")
     public AjaxResult handlePssrApprove(@RequestBody DevTask devTask) {

+ 64 - 5
master/src/main/java/com/ruoyi/project/pssr/controller/TPssrLockController.java

@@ -1,15 +1,18 @@
 package com.ruoyi.project.pssr.controller;
 
+import com.alibaba.fastjson.JSON;
 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.apply.domain.TApplyLock;
+import com.ruoyi.project.apply.service.ITApplyLockService;
 import com.ruoyi.project.pssr.domain.TPssrApprove;
 import com.ruoyi.project.pssr.domain.TPssrLock;
-import com.ruoyi.project.pssr.domain.TPssrMoc;
 import com.ruoyi.project.pssr.domain.TPssrSubcontent;
+import com.ruoyi.project.pssr.service.ITPssrAboveallService;
 import com.ruoyi.project.pssr.service.ITPssrApproveService;
 import com.ruoyi.project.pssr.service.ITPssrLockService;
 import com.ruoyi.project.pssr.service.ITPssrSubcontentService;
@@ -17,6 +20,7 @@ import org.activiti.engine.ProcessEngine;
 import org.activiti.engine.ProcessEngines;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -41,6 +45,12 @@ public class TPssrLockController extends BaseController {
     @Autowired
     private ITPssrSubcontentService tPssrSubcontentService;
 
+    @Autowired
+    private ITPssrAboveallService tPssrAboveallService;
+
+    @Autowired
+    private ITApplyLockService tApplyLockService;
+
     /**
      * 查询锁开锁关阀门状态列表
      */
@@ -80,8 +90,58 @@ public class TPssrLockController extends BaseController {
     @Log(title = "锁开锁关阀门状态", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody TPssrLock tPssrLock) {
-        tPssrLock.setApproveStatus(0L);
-        return toAjax(tPssrLockService.insertTPssrLock(tPssrLock));
+        Set<String> codes = new HashSet<>();
+        Set<String> pids = new HashSet<>();
+        boolean flag = true;
+        for (String pidNo : tPssrLock.getPidNos()) {
+            TApplyLock tApplyLock = new TApplyLock();
+            tApplyLock.setPidNo(pidNo);
+            for (TApplyLock applyLock : tApplyLockService.selectTApplyLockList(tApplyLock)) {
+                if (applyLock.getStatus() == 0) {
+                    TPssrLock lock = new TPssrLock();
+                    lock.setLockPost(applyLock.getLockPost());
+                    lock.setLockCode(applyLock.getLockCode());
+                    lock.setMedium(applyLock.getMedium());
+                    lock.setRiskLevel(applyLock.getRiskLevel());
+                    lock.setCodeAccord(tPssrLock.getCodeAccord());
+                    lock.setSubId(tPssrLock.getSubId());
+                    lock.setUnit(applyLock.getUnit());
+                    lock.setPidNo(pidNo);
+                    lock.setPosition(applyLock.getPosition());
+                    lock.setLockSize(applyLock.getLockSize());
+                    lock.setPidStatus(applyLock.getValveStatus());
+                    lock.setLockeder(tPssrLock.getLockeder());
+                    lock.setFastening(tPssrLock.getFastening());
+                    lock.setNoDamage(tPssrLock.getNoDamage());
+                    lock.setConfirm(tPssrLock.getConfirm());
+                    lock.setApproveStatus(0L);
+                    insertOrUpdate(lock);
+                } else {
+                    codes.add(applyLock.getLockCode());
+                    pids.add(pidNo);
+                    flag = false;
+                }
+            }
+        }
+        if (flag) {
+            return AjaxResult.success();
+        } else {
+            return AjaxResult.success("PID图号为"+JSON.toJSONString(pids)+"中,锁编号为" + JSON.toJSONString(codes) + "的锁未完成锁开锁关流程审批!");
+        }
+    }
+
+    private void insertOrUpdate(TPssrLock tPssrLock) {
+        TPssrLock lock = new TPssrLock();
+        lock.setSubId(tPssrLock.getSubId());
+        lock.setLockCode(tPssrLock.getLockCode());
+        List<TPssrLock> tPssrLocks = tPssrLockService.selectTPssrLockList(lock);
+        if (CollectionUtils.isNotEmpty(tPssrLocks)) {
+            TPssrLock item = tPssrLocks.get(0);
+            tPssrLock.setId(item.getId());
+            tPssrLockService.updateTPssrLock(tPssrLock);
+        } else {
+            tPssrLockService.insertTPssrLock(tPssrLock);
+        }
     }
 
     /**
@@ -155,7 +215,7 @@ public class TPssrLockController extends BaseController {
         }
 
         //无待审批任务结束当前用户流程
-        
+
         // 因为流程关系所以approve一定会有且只有一条数据
         TPssrApprove tPssrApprove = tPssrApproveService.selectTPssrApproveBySubId(tPssrLock.getSubId());
         TPssrApproveController.handleConfirmApprove(tPssrApprove, getUserId().toString());
@@ -164,7 +224,6 @@ public class TPssrLockController extends BaseController {
     }
 
 
-
     /**
      * 驳回设计变更
      */

+ 63 - 0
master/src/main/java/com/ruoyi/project/pssr/domain/TPssrLock.java

@@ -1,6 +1,8 @@
 package com.ruoyi.project.pssr.domain;
 
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.framework.web.domain.BaseEntity;
@@ -35,6 +37,7 @@ public class TPssrLock extends BaseEntity
     /** PID图号 */
     @Excel(name = "PID图号")
     private String pidNo;
+    private List<String> pidNos;
 
     /** 位置 */
     @Excel(name = "位置")
@@ -138,6 +141,57 @@ public class TPssrLock extends BaseEntity
 
     private Long taskType;
 
+    /** 岗位*/
+    private String lockPost;
+    /** 锁编号*/
+    private String lockCode;
+    /** 介质*/
+    private String medium;
+    /** 风险等级*/
+    private String riskLevel;
+    /** 编码一致*/
+    private String codeAccord;
+
+    public String getLockPost() {
+        return lockPost;
+    }
+
+    public void setLockPost(String lockPost) {
+        this.lockPost = lockPost;
+    }
+
+    public String getLockCode() {
+        return lockCode;
+    }
+
+    public void setLockCode(String lockCode) {
+        this.lockCode = lockCode;
+    }
+
+    public String getMedium() {
+        return medium;
+    }
+
+    public void setMedium(String medium) {
+        this.medium = medium;
+    }
+
+    public String getRiskLevel() {
+        return riskLevel;
+    }
+
+    public void setRiskLevel(String riskLevel) {
+        this.riskLevel = riskLevel;
+    }
+
+    public String getCodeAccord() {
+        return codeAccord;
+    }
+
+    public void setCodeAccord(String codeAccord) {
+        this.codeAccord = codeAccord;
+    }
+
     public Long[] getIds() {
         return ids;
     }
@@ -190,6 +244,15 @@ public class TPssrLock extends BaseEntity
     {
         return unit;
     }
+
+    public List<String> getPidNos() {
+        return pidNos;
+    }
+
+    public void setPidNos(List<String> pidNos) {
+        this.pidNos = pidNos;
+    }
+
     public void setPidNo(String pidNo)
     {
         this.pidNo = pidNo;

+ 9 - 0
master/src/main/java/com/ruoyi/project/pssr/domain/TPssrSubcontent.java

@@ -111,10 +111,19 @@ public class TPssrSubcontent extends BaseEntity
     private Long status;
 
     private String forShort;
+    private List<String> forShorts;
     private String deptUnit;
 
     private List<Long> ids;
 
+    public List<String> getForShorts() {
+        return forShorts;
+    }
+
+    public void setForShorts(List<String> forShorts) {
+        this.forShorts = forShorts;
+    }
+
     public List<Long> getIds() {
         return ids;
     }

+ 1 - 0
master/src/main/java/com/ruoyi/project/pssr/mapper/TPssrSubcontentMapper.java

@@ -28,6 +28,7 @@ public interface TPssrSubcontentMapper
      */
     @DataScope(deptAlias = "d")
     public List<TPssrSubcontent> selectTPssrSubcontentList(TPssrSubcontent tPssrSubcontent);
+    public List<TPssrSubcontent> selectTPssrSubcontentListByForShort(TPssrSubcontent tPssrSubcontent);
 
     /**
      * 新增开车条件确认

+ 2 - 0
master/src/main/java/com/ruoyi/project/pssr/service/ITPssrSubcontentService.java

@@ -19,6 +19,8 @@ public interface ITPssrSubcontentService
      */
     public TPssrSubcontent selectTPssrSubcontentById(Long id);
 
+    public List<TPssrSubcontent> selectTPssrSubcontentListByForShort(TPssrSubcontent tPssrSubcontent);
+
     /**
      * 查询开车条件确认列表
      * 

+ 5 - 0
master/src/main/java/com/ruoyi/project/pssr/service/impl/TPssrSubcontentServiceImpl.java

@@ -42,6 +42,11 @@ public class TPssrSubcontentServiceImpl implements ITPssrSubcontentService
     {
         return tPssrSubcontentMapper.selectTPssrSubcontentList(tPssrSubcontent);
     }
+    @Override
+    public List<TPssrSubcontent> selectTPssrSubcontentListByForShort(TPssrSubcontent tPssrSubcontent)
+    {
+        return tPssrSubcontentMapper.selectTPssrSubcontentListByForShort(tPssrSubcontent);
+    }
 
     /**
      * 新增开车条件确认

+ 17 - 0
master/src/main/resources/mybatis/apply/TApplyLockMapper.xml

@@ -61,6 +61,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by createdate asc
     </select>
 
+    <select id="selectTApplyLockPidList" parameterType="TApplyLock" resultMap="TApplyLockResult">
+        select distinct(d.pid_no) from t_apply_lock d
+        <where>
+            and d.pid_no is not null and d.del_flag = 0
+            <if test="units != null">and unit IN
+                <foreach collection="units" item="unit" open="(" separator="," close=")">
+                    #{unit}
+                </foreach>
+            </if>
+            <if test="posts != null">and lock_post IN
+                <foreach collection="posts" item="post" open="(" separator="," close=")">
+                    #{post}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
     <select id="selectTApplyLockById" parameterType="Long" resultMap="TApplyLockResult">
         <include refid="selectTApplyLockVo"/>
         where id = #{id}

+ 27 - 2
master/src/main/resources/mybatis/pssr/TPssrLockMapper.xml

@@ -32,10 +32,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="remarks"    column="remarks"    />
         <result property="approveStatus"    column="approve_status"    />
         <result property="deptName" column="dept_name" />
+        <result property="lockPost" column="lock_post" />
+        <result property="lockCode" column="lock_code" />
+        <result property="medium" column="medium" />
+        <result property="riskLevel" column="risk_level" />
+        <result property="codeAccord" column="code_accord" />
     </resultMap>
 
     <sql id="selectTPssrLockVo">
-        select d.id, d.sub_id, d.approve_id, d.unit, d.pid_no, d.position, d.lock_size, d.pid_status, d.unlocker, d.unlock_date, d.lockeder, d.locked_date, d.position_right, d.status_right, d.fastening, d.no_damage, d.confirm, d.confirmation_date, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status ,s.dept_name from t_pssr_lock d
+        select d.id,d.lock_post,d.lock_code,d.medium,d.risk_level,d.code_accord, d.sub_id, d.approve_id, d.unit, d.pid_no, d.position, d.lock_size, d.pid_status, d.unlocker, d.unlock_date, d.lockeder, d.locked_date, d.position_right, d.status_right, d.fastening, d.no_damage, d.confirm, d.confirmation_date, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status ,s.dept_name from t_pssr_lock d
       left join sys_dept s on s.dept_id = d.dept_id
     </sql>
 
@@ -45,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="subId != null "> and sub_id = #{subId}</if>
             <if test="approveId != null "> and approve_id = #{approveId}</if>
             <if test="unit != null  and unit != ''"> and unit = #{unit}</if>
-            <if test="pidNo != null  and pidNo != ''"> and pid_no = #{pidNo}</if>
+            <if test="pidNo != null  and pidNo != ''"> and pid_no  like concat(concat('%', #{pidNo}),'%')</if>
             <if test="position != null  and position != ''"> and position = #{position}</if>
             <if test="lockSize != null  and lockSize != ''"> and lock_size = #{lockSize}</if>
             <if test="pidStatus != null  and pidStatus != ''"> and pid_status = #{pidStatus}</if>
@@ -66,6 +71,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null "> and dept_id = #{deptId}</if>
             <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
             <if test="approveStatus != null "> and approve_status = #{approveStatus}</if>
+            <if test="lockPost != null "> and lock_post = #{lockPost}</if>
+            <if test="lockCode != null "> and lock_code = #{lockCode}</if>
+            <if test="medium != null "> and medium = #{medium}</if>
+            <if test="riskLevel != null "> and risk_level = #{riskLevel}</if>
+            <if test="codeAccord != null "> and code_accord = #{codeAccord}</if>
             and d.del_flag = 0
         </where>
         <!-- 数据范围过滤 -->
@@ -109,6 +119,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">dept_id,</if>
             <if test="remarks != null">remarks,</if>
             <if test="approveStatus != null">approve_status,</if>
+            <if test="lockPost != null">lock_post,</if>
+            <if test="lockCode != null">lock_code,</if>
+            <if test="medium != null">medium,</if>
+            <if test="riskLevel != null">risk_level,</if>
+            <if test="codeAccord != null">code_accord,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -137,6 +152,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">#{deptId},</if>
             <if test="remarks != null">#{remarks},</if>
             <if test="approveStatus != null">#{approveStatus},</if>
+            <if test="lockPost != null">#{lockPost},</if>
+            <if test="lockCode != null">#{lockCode},</if>
+            <if test="medium != null">#{medium},</if>
+            <if test="riskLevel != null">#{riskLevel},</if>
+            <if test="codeAccord != null">#{codeAccord},</if>
          </trim>
     </insert>
 
@@ -168,6 +188,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="deptId != null">dept_id = #{deptId},</if>
             <if test="remarks != null">remarks = #{remarks},</if>
             <if test="approveStatus != null">approve_status = #{approveStatus},</if>
+            <if test="lockPost != null">lock_post = #{lockPost},</if>
+            <if test="lockCode != null">lock_code = #{lockCode},</if>
+            <if test="medium != null">medium = #{medium},</if>
+            <if test="riskLevel != null">risk_level = #{riskLevel},</if>
+            <if test="codeAccord != null">code_accord = #{codeAccord},</if>
         </trim>
         where id = #{id}
     </update>

+ 12 - 0
master/src/main/resources/mybatis/pssr/TPssrSubcontentMapper.xml

@@ -64,6 +64,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ${params.dataScope}
         order by serial_number
     </select>
+
+    <select id="selectTPssrSubcontentListByForShort" parameterType="TPssrSubcontent" resultMap="TPssrSubcontentResult">
+        <include refid="selectTPssrSubcontentVo"/>
+        <where>
+            <if test="aboveallId != null "> and aboveall_id = #{aboveallId}</if>
+            <if test="forShort != null "> and for_short in
+                <foreach item="forShort" collection="array" open="(" separator="," close=")">
+                    #{forShort}
+                </foreach></if>
+            and d.del_flag = 0
+        </where>
+    </select>
     
     <select id="selectTPssrSubcontentById" parameterType="Long" resultMap="TPssrSubcontentResult">
         <include refid="selectTPssrSubcontentVo"/>

+ 9 - 0
ui/src/api/apply/lock.js

@@ -16,6 +16,15 @@ export function listAllLock(query) {
     params: query
   })
 }
+
+// 查询破锁管理列表
+export function listLockPid(query) {
+  return request({
+    url: '/apply/lock/listLockPid',
+    method: 'get',
+    params: query
+  })
+}
 export function listLockBranch(query) {
   return request({
     url: '/apply/lock/listLockBranch',

+ 65 - 34
ui/src/views/pssr/lock/index.vue

@@ -146,24 +146,30 @@
         </template>
       </el-table-column>
       <el-table-column label="单元" align="center" prop="unit" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="岗位" align="center" prop="lockPost" :show-overflow-tooltip="true" width="150"/>
       <el-table-column label="PID图号" align="center" prop="pidNo" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="位置" align="center" prop="position" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="编号" align="center" prop="lockCode" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="介质" align="center" prop="medium" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="描述" align="center" prop="position" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="风险等级" align="center" prop="riskLevel" :show-overflow-tooltip="true" width="150"/>
       <el-table-column label="尺寸" align="center" prop="lockSize" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="PID标注状态" align="center" prop="pidStatus" :show-overflow-tooltip="true" width="150"/>
-      <el-table-column label="上锁位置正确(是/否)" align="center" prop="positionRight" :show-overflow-tooltip="true"
+      <el-table-column label="阀门状态" align="center" prop="pidStatus" :show-overflow-tooltip="true" width="150"/>
+      <el-table-column label="位置正确(✔/✖)" align="center" prop="positionRight" :show-overflow-tooltip="true"
                        width="150"/>
-      <el-table-column label="阀门状态正确(是/否)" align="center" prop="statusRight" :show-overflow-tooltip="true"
+      <el-table-column label="状态一致(✔/✖)" align="center" prop="statusRight" :show-overflow-tooltip="true"
                        width="150"/>
-      <el-table-column label="锁开锁关紧固(是/否)" align="center" prop="fastening" :show-overflow-tooltip="true"
+      <el-table-column label="编号一致(✔/✖)" align="center" prop="codeAccord" :show-overflow-tooltip="true"
                        width="150"/>
-      <el-table-column label="锁体和链条无损坏(是/否)" align="center" prop="noDamage" :show-overflow-tooltip="true"
+      <el-table-column label="紧固(✔/✖)" align="center" prop="fastening" :show-overflow-tooltip="true"
+                       width="150"/>
+      <el-table-column label="锁具完好(✔/✖)" align="center" prop="noDamage" :show-overflow-tooltip="true"
                        width="170"/>
-      <el-table-column label="确认人1" align="center" prop="lockeder" :show-overflow-tooltip="true" width="150">
+      <el-table-column label="检查人" align="center" prop="lockeder" :show-overflow-tooltip="true" width="150">
         <template slot-scope="scope">
           <span>{{ userFormat(scope.row.lockeder) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="确认人2" align="center" prop="confirm" :show-overflow-tooltip="true" width="150">
+      <el-table-column label="确认人" align="center" prop="confirm" :show-overflow-tooltip="true" width="150">
         <template slot-scope="scope">
           <span>{{ userFormat(scope.row.confirm) }}</span>
         </template>
@@ -208,24 +214,18 @@
     />
 
     <!-- 添加或修改锁开锁关阀门状态对话框 -->
-    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="700px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="175px">
-        <el-form-item label="单元" prop="unit">
-          <el-input v-model="form.unit" placeholder="请输入单元"/>
-        </el-form-item>
-        <el-form-item label="PID图号" prop="pidNo">
-          <el-input v-model="form.pidNo" placeholder="请输入PID图号"/>
-        </el-form-item>
-        <el-form-item label="位置" prop="position">
-          <el-input v-model="form.position" placeholder="请输入位置"/>
-        </el-form-item>
-        <el-form-item label="尺寸" prop="lockSize">
-          <el-input v-model="form.lockSize" placeholder="请输入尺寸"/>
-        </el-form-item>
-        <el-form-item label="PID标注状态" prop="pidStatus">
-          <el-input v-model="form.pidStatus" placeholder="请输入PID标注状态"/>
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="85px">
+        <el-form-item label="PID图号" prop="pidNos">
+          <el-select v-model="form.pidNos" clearable :disabled="isEdit" multiple filterable style="width: 100%;"
+                     placeholder="请选择PID图号">
+            <el-option v-for="user in lockOptions"
+                       :label="user.pidNo"
+                       :value="user.pidNo"
+                       :key="user.pidNo"/>
+          </el-select>
         </el-form-item>
-        <el-form-item label="确认人1" prop="lockeder">
+        <el-form-item label="检查人" prop="lockeder">
           <el-select v-model="form.lockeder" clearable filterable style="width: 100%;"
                      placeholder="请选择确认人1">
             <el-option v-for="user in userOptions"
@@ -234,7 +234,7 @@
                        :key="user.userId"/>
           </el-select>
         </el-form-item>
-        <el-form-item label="确认人2" prop="confirm">
+        <el-form-item label="确认人" prop="confirm">
           <el-select v-model="form.confirm" clearable filterable style="width: 100%;"
                      placeholder="请选择确认人2">
             <el-option v-for="user in userOptions"
@@ -254,20 +254,24 @@
     </el-dialog>
 
     <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="approveOpen" width="700px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="175px">
-        <el-form-item label="上锁位置正确(是/否)" prop="positionRight" v-if="isApprove==1">
+      <el-form ref="form" :model="form" :rules="rules" label-width="135px">
+        <el-form-item label="位置正确(✔/✖)" prop="positionRight" v-if="isApprove==1">
           <el-radio v-model="form.positionRight" label="✔" border>✔</el-radio>
           <el-radio v-model="form.positionRight" label="✖" border>✖</el-radio>
         </el-form-item>
-        <el-form-item label="阀门状态正确(是/否)" prop="statusRight" v-if="isApprove==1">
+        <el-form-item label="状态一致(✔/✖)" prop="statusRight" v-if="isApprove==1">
           <el-radio v-model="form.statusRight" label="✔" border>✔</el-radio>
           <el-radio v-model="form.statusRight" label="✖" border>✖</el-radio>
         </el-form-item>
-        <el-form-item label="锁开锁关紧固(是/否)" prop="fastening" v-if="isApprove==1">
+        <el-form-item label="编号一直(✔/✖)" prop="fastening" v-if="isApprove==1">
           <el-radio v-model="form.fastening" label="✔" border>✔</el-radio>
           <el-radio v-model="form.fastening" label="✖" border>✖</el-radio>
         </el-form-item>
-        <el-form-item label="锁体和链条无损坏(是/否)" prop="noDamage" v-if="isApprove==1">
+        <el-form-item label="紧固(✔/✖)" prop="fastening" v-if="isApprove==1">
+          <el-radio v-model="form.fastening" label="✔" border>✔</el-radio>
+          <el-radio v-model="form.fastening" label="✖" border>✖</el-radio>
+        </el-form-item>
+        <el-form-item label="锁体完好(✔/✖)" prop="noDamage" v-if="isApprove==1">
           <el-radio v-model="form.noDamage" label="✔" border>✔</el-radio>
           <el-radio v-model="form.noDamage" label="✖" border>✖</el-radio>
         </el-form-item>
@@ -341,6 +345,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {listUserNoPage} from "@/api/system/user";
 import {doApprove} from "@/api/pssr/approve";
 import {handleTurnDownMoc} from "@/api/pssr/moc";
+import {listAllLock, listAllLockPid, listLockPid} from "@/api/apply/lock";
 
 export default {
   dicts: ['pssr_approve_status'],
@@ -358,7 +363,9 @@ export default {
   },
   data() {
     return {
+      isEdit: false,
       userOptions: [],
+      lockOptions: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -403,7 +410,7 @@ export default {
         subId: this.subId,
         approveId: null,
         unit: null,
-        pidNo: null,
+        pidNos: [],
         position: null,
         lockSize: null,
         pidStatus: null,
@@ -422,12 +429,21 @@ export default {
         updaterCode: null,
         updatedate: null,
         deptId: null,
+        lockPost: null,
+        lockCode: null,
+        medium: null,
+        riskLevel: null,
+        codeAccord: null,
         remarks: null
       },
       // 表单参数
       form: {},
       // 表单校验
-      rules: {}
+      rules: {
+        confirm: [{required: true, message: "人员不可为空", trigger: "blur"}],
+        lockeder: [{required: true, message: "人员不可为空", trigger: "blur"}],
+        pidNos: [{required: true, message: "PID图号不可为空", trigger: "blur"}],
+      }
     };
   },
   watch: {
@@ -446,6 +462,9 @@ export default {
     listUserNoPage({}).then(res => {
       this.userOptions = res.data
     });
+    listLockPid({subId:this.subId}).then(res => {
+      this.lockOptions = res.data;
+    });
   },
   methods: {
     /** 确认按钮操作*/
@@ -524,7 +543,7 @@ export default {
         subId: this.subId,
         approveId: null,
         unit: null,
-        pidNo: null,
+        pidNos: [],
         position: null,
         lockSize: null,
         pidStatus: null,
@@ -544,6 +563,11 @@ export default {
         updaterCode: null,
         updatedate: null,
         deptId: null,
+        lockPost: null,
+        lockCode: null,
+        medium: null,
+        riskLevel: null,
+        codeAccord: null,
         remarks: null
       };
       this.resetForm("form");
@@ -566,12 +590,14 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
+      this.isEdit = false
       this.reset();
       this.open = true;
       this.title = "添加锁开锁关阀门状态";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
+      this.isEdit = true
       this.reset();
       const id = row.id || this.ids
       getLock(id).then(response => {
@@ -583,6 +609,8 @@ export default {
             this.approveOpen = true;
           }
         }
+        this.form.pidNos=[]
+        this.form.pidNos.push(this.form.pidNo);
         this.title = "修改锁开锁关阀门状态";
       });
     },
@@ -601,6 +629,9 @@ export default {
               this.msgSuccess("新增成功");
               this.open = false;
               this.getList();
+              if (response.msg!=""){
+                this.$alert(response.msg, "警告", {dangerouslyUseHTMLString: true});
+              }
             });
           }
         }