Prechádzať zdrojové kódy

1、增加审批权限验证;
2、设置签名图片

chenminghua 4 rokov pred
rodič
commit
6334a6e5e3

+ 21 - 0
pom.xml

@@ -258,6 +258,27 @@
 			<scope>system</scope>
 			<systemPath>${project.basedir}/src/main/resources/lib/ueditor-1.1.2.jar</systemPath>
 		</dependency>
+		<dependency>
+			<groupId>jacob</groupId>
+			<artifactId>1.18</artifactId>
+			<version>1.18</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/jacob-1.18.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>sqljdbc</groupId>
+			<artifactId>42</artifactId>
+			<version>42</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/sqljdbc42.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>thumbnailator</groupId>
+			<artifactId>0.4.2</artifactId>
+			<version>0.4.2</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/src/main/resources/lib/thumbnailator-0.4.2-all.jar</systemPath>
+		</dependency>
 		<!--quartz依赖-->
 		<dependency>
 			<groupId>org.quartz-scheduler</groupId>

+ 19 - 5
src/main/java/com/gyee/frame/controller/ticket/WftransController.java

@@ -6,13 +6,12 @@ import com.gyee.frame.common.dataSources.DataSource;
 import com.gyee.frame.common.dataSources.DataSourceType;
 import com.gyee.frame.common.domain.AjaxResult;
 import com.gyee.frame.model.ticket.TokenUser;
-import com.gyee.frame.service.ticket.ShiroService;
-import com.gyee.frame.service.ticket.WfassignmentService;
-import com.gyee.frame.service.ticket.WfinstanceService;
-import com.gyee.frame.service.ticket.WftransService;
+import com.gyee.frame.model.ticket.Workticket;
+import com.gyee.frame.service.ticket.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -35,6 +34,8 @@ public class WftransController {
     @Autowired
     WftransService wftransService;
     @Autowired
+    WorkticketService workticketService;
+    @Autowired
     ShiroService shiroService;
 
 
@@ -68,12 +69,25 @@ public class WftransController {
 
         TokenUser token = shiroService.findToken(header);
 
+        //校验签发、许可时间
+        Workticket ticket = workticketService.getTicketItem(ticketNum);
+        Date startDate = ticket.getStartdate();
+        Date inceptDate = ticket.getInceptdate();
+        Date fiatDate = ticket.getFiatdate();
+
+        if (inceptDate != null && startDate.compareTo(inceptDate) < 0) {
+            return AjaxResult.error(4004, "签发时间必须在计划工作开始时间之前");
+        }
+        if (fiatDate != null && startDate.compareTo(fiatDate) > 0) {
+            return AjaxResult.error(4004, "许可时间必须在计划工作开始时间之后");
+        }
+
         // 流程正在进行
         if (status == 2){
             boolean result = wftransService.insertTrans(currNodeId, preNodeId, actionId, instId,version ,
                     ownerId, wfName, ticketNum, role, labors, token.getLaborNum());
             if(!result)
-                AjaxResult.error(4004, "流程发送失败");
+                return AjaxResult.error(4004, "流程发送失败");
         }
 
         return AjaxResult.success("流程发送成功");

+ 102 - 10
src/main/java/com/gyee/frame/controller/ticket/WorkticketController.java

@@ -3,14 +3,12 @@ package com.gyee.frame.controller.ticket;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.google.gson.JsonObject;
 import com.gyee.frame.common.dataSources.DataSource;
 import com.gyee.frame.common.dataSources.DataSourceType;
 import com.gyee.frame.common.domain.AjaxResult;
 import com.gyee.frame.model.ticket.*;
 import com.gyee.frame.service.ticket.*;
 import com.gyee.frame.util.ticket.TicketUtil;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -33,6 +31,14 @@ public class WorkticketController {
     @Autowired
     WoworktaskService woworktaskService;
     @Autowired
+    WfinstanceService wfinstanceService;
+    @Autowired
+    WfassignmentService wfassignmentService;
+    @Autowired
+    WfnodeService wfnodeService;
+    @Autowired
+    LaborService laborService;
+    @Autowired
     ShiroService shiroService;
 
     /**
@@ -47,11 +53,11 @@ public class WorkticketController {
     public AjaxResult getList(@RequestHeader(value = "token") String header,
                               @RequestParam("page") Optional<Long> page,
                               @RequestParam("type") Optional<String> type) {
-        TokenUser token = shiroService.findToken(header);
+        TokenUser user = shiroService.findToken(header);
         Long pageNum = page.orElse(1L);
         String ticketType = type.orElse("wind");
 
-        IPage<Workticket> ticket = workticketService.selectPage(pageNum, ticketType, token.getDepartment());
+        IPage<Workticket> ticket = workticketService.selectPage(pageNum, ticketType, user.getDepartment());
         if (ticket == null)
             return AjaxResult.error(4004, "数据读取异常");
 
@@ -66,7 +72,7 @@ public class WorkticketController {
      */
     @DataSource(value = DataSourceType.TICKET)
     @GetMapping(value = "item")
-    public AjaxResult getTicketItem(@RequestParam("id") String id) {
+    public AjaxResult getTicketItem(@RequestHeader(value = "token") String header, @RequestParam("id") String id) {
         Workticket ticket = workticketService.getById(id);
         if (ticket == null) {
             return AjaxResult.error(4004, "数据读取异常");
@@ -81,10 +87,51 @@ public class WorkticketController {
             }
         }
 
+        // 根据当前分配任务的节点,初始化相应的人员信息
+        List<Wfinstance> list = new ArrayList<>();
+        TokenUser user = shiroService.findToken(header);
+        switch(ticket.getWtickettype()){
+            case "风场风机":
+                list = wfinstanceService.listInstance("风电机组工作票", ticket.getId());
+                break;
+            case "电气一种":
+                list = wfinstanceService.listInstance("电气一种工作票", ticket.getId());
+                break;
+            case "电气二种":
+                list = wfinstanceService.listInstance("电气二种工作票", ticket.getId());
+                break;
+            case "风场动火":
+                list = wfinstanceService.listInstance("风场动火工作票", ticket.getId());
+                break;
+            case "二级动火":
+                list = wfinstanceService.listInstance("二级动火工作票", ticket.getId());
+                break;
+            case "线路一种":
+                list = wfinstanceService.listInstance("线路一种工作票", ticket.getId());
+                break;
+            case "线路二种":
+                list = wfinstanceService.listInstance("线路二种工作票", ticket.getId());
+                break;
+        }
+        if (list != null && list.size() > 0) {
+            Wfinstance instance = list.get(0);
+            List<Wfassignment> assignments = wfassignmentService.getActiveItem(instance.getId(), instance.getWfrevision(), ticket.getId(), "活动");
+            if (assignments != null && assignments.size() > 0) {
+                for (int i = 0; i < assignments.size(); i++) {
+                    Wfassignment w = assignments.get(i);
+                    String laborNum = w.getAssigncode();
+                    if (user.getLaborNum().equals(laborNum)){
+                        Labor labor = laborService.getLaborItem(laborNum);
+                        Wfnode node = wfnodeService.getById(w.getNodeid());
+                        ticket = TicketUtil.initLabor(ticket, node.getTitle(), labor);
+                    }
+                }
+            }
+        }
+
         return AjaxResult.successData(ticket);
     }
 
-
     /**
      * 编辑ticket
      *
@@ -93,13 +140,58 @@ public class WorkticketController {
      */
     @DataSource(value = DataSourceType.TICKET)
     @PostMapping(value = "edit")
-    public AjaxResult editWorkTicket(@RequestParam("data") String data) {
+    public AjaxResult editWorkTicket(@RequestHeader(value = "token") String header, @RequestParam("data") String data) {
         JSONObject jsonObject = JSONObject.parseObject(data);
-        Workticket workticket = JSON.toJavaObject(jsonObject, Workticket.class);
-        if (workticket == null)
+        Workticket ticket = JSON.toJavaObject(jsonObject, Workticket.class);
+        if (ticket == null)
             return AjaxResult.error(4004, "数据更新失败");
 
-        boolean result = workticketService.updateById(workticket);
+        // 验证当前节点选择的人和任务分配的人是否一致
+        List<Wfinstance> list = new ArrayList<>();
+        TokenUser user = shiroService.findToken(header);
+        switch(ticket.getWtickettype()){
+            case "风场风机":
+                list = wfinstanceService.listInstance("风电机组工作票", ticket.getId());
+                break;
+            case "电气一种":
+                list = wfinstanceService.listInstance("电气一种工作票", ticket.getId());
+                break;
+            case "电气二种":
+                list = wfinstanceService.listInstance("电气二种工作票", ticket.getId());
+                break;
+            case "风场动火":
+                list = wfinstanceService.listInstance("风场动火工作票", ticket.getId());
+                break;
+            case "二级动火":
+                list = wfinstanceService.listInstance("二级动火工作票", ticket.getId());
+                break;
+            case "线路一种":
+                list = wfinstanceService.listInstance("线路一种工作票", ticket.getId());
+                break;
+            case "线路二种":
+                list = wfinstanceService.listInstance("线路二种工作票", ticket.getId());
+                break;
+        }
+
+        if (list != null && list.size() > 0) {
+            Wfinstance instance = list.get(0);
+            List<Wfassignment> assignments = wfassignmentService.getActiveItem(instance.getId(), instance.getWfrevision(), ticket.getId(), "活动");
+            if (assignments != null && assignments.size() > 0) {
+                for (int i = 0; i < assignments.size(); i++) {
+                    Wfassignment w = assignments.get(i);
+                    String laborNum = w.getAssigncode();
+                    if (user.getLaborNum().equals(laborNum)){
+                        Labor labor = laborService.getLaborItem(laborNum);
+                        Wfnode node = wfnodeService.getById(w.getNodeid());
+                        TicketUtil.setLaborNum(ticket, node.getTitle(), user.getLaborNum(), labor.getLaborname());
+                    } else {
+                        return AjaxResult.error(4004, "没有操作权限");
+                    }
+                }
+            }
+        }
+
+        boolean result = workticketService.updateById(ticket);
         if (!result)
             return AjaxResult.error(4004, "数据更新失败");
 

+ 77 - 12
src/main/java/com/gyee/frame/model/ticket/Workticket.java

@@ -2,32 +2,31 @@ package com.gyee.frame.model.ticket;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
 
 /**
  * <p>
- * 工作票表
+ * 
  * </p>
  *
  * @author chenmh
- * @since 2020-06-01
+ * @since 2020-10-15
  */
 @Data
-@EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("WORKTICKET")
+  @EqualsAndHashCode(callSuper = false)
+    @TableName("WORKTICKET")
 public class Workticket extends Model<Workticket> {
 
-    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID=1L;
 
-    @TableId("ID")
-    private Double id;
+      @TableId("ID")
+      private Double id;
 
     @TableField("WONUM")
     private String wonum;
@@ -518,10 +517,76 @@ public class Workticket extends Model<Workticket> {
     @TableField("FIREOPERATORNUM")
     private String fireoperatornum;
 
+    @TableField("SIGNATORYNUM")
+    private String signatorynum;
+
+    @TableField("FIATUSER1NUM")
+    private String fiatuser1num;
+
+    @TableField("PRINCIPAL2NUM")
+    private String principal2num;
+
+    @TableField("SHIFTFOREMANNUM")
+    private String shiftforemannum;
+
+    @TableField("FIATUSERNUM")
+    private String fiatusernum;
+
+    @TableField("INCEPTMAN1NUM")
+    private String inceptman1num;
+
+    @TableField("FIREFIGHTINGPERNUM")
+    private String firefightingpernum;
+
+    @TableField("SAFEPRINCIPALNUM")
+    private String safeprincipalnum;
+
+    @TableField("FIATUSER5NUM")
+    private String fiatuser5num;
+
+    @TableField("FIATUSER8NUM")
+    private String fiatuser8num;
+
+    @TableField("PRINCIPAL1NUM")
+    private String principal1num;
+
+    @TableField("GUARDIANNUM")
+    private String guardiannum;
+
+    @TableField("FIREOPERATOR1NUM")
+    private String fireoperator1num;
+
+    @TableField("PRINCIPAL5NUM")
+    private String principal5num;
+
+    @TableField("FIATUSER4NUM")
+    private String fiatuser4num;
+
+    @TableField("SHIFTFORENUM1NUM")
+    private String shiftforenum1num;
+
+    @TableField("INCEPTMANNUM")
+    private String inceptmannum;
+
+    @TableField("PRINCIPAL3NUM")
+    private String principal3num;
+
+    @TableField("GUARDIAN1NUM")
+    private String guardian1num;
+
+    @TableField("FIATUSER7NUM")
+    private String fiatuser7num;
+
+    @TableField("PRINCIPAL6NUM")
+    private String principal6num;
+
+    @TableField("SAFEPRINCIPAL1NUM")
+    private String safeprincipal1num;
+
 
     @Override
     protected Serializable pkVal() {
-        return this.id;
-    }
+          return this.id;
+      }
 
 }

+ 10 - 0
src/main/java/com/gyee/frame/service/impl/ticket/WfinstanceServiceImpl.java

@@ -302,4 +302,14 @@ public class WfinstanceServiceImpl extends ServiceImpl<WfinstanceMapper, Wfinsta
 
         return true;
     }
+
+    @Override
+    public List<Wfinstance> listInstance(String wfName, double ownerId) {
+        QueryWrapper<Wfinstance> wrapper = new QueryWrapper<>();
+        wrapper.eq("OWNERID", ownerId);
+        wrapper.eq("WFNAME", wfName);
+        List<Wfinstance> list = baseMapper.selectList(wrapper);
+
+        return list;
+    }
 }

+ 10 - 0
src/main/java/com/gyee/frame/service/impl/ticket/WorkticketServiceImpl.java

@@ -63,4 +63,14 @@ public class WorkticketServiceImpl extends ServiceImpl<WorkticketMapper, Worktic
 
         return true;
     }
+
+    @Override
+    public Workticket getTicketItem(String ticketNum) {
+        QueryWrapper<Workticket> wrapper = new QueryWrapper();
+
+        wrapper.eq("TICKETNUM", ticketNum);
+        Workticket ticket = baseMapper.selectOne(wrapper);
+
+        return ticket;
+    }
 }

+ 8 - 0
src/main/java/com/gyee/frame/service/ticket/WfinstanceService.java

@@ -58,4 +58,12 @@ public interface WfinstanceService extends IService<Wfinstance> {
      * @return
      */
     boolean updateInstance(double id, double nodeId, String active);
+
+    /**
+     * 根据工作票类型和id查询
+     * @param wfName
+     * @param ownerId
+     * @return
+     */
+    List<Wfinstance>listInstance(String wfName, double ownerId);
 }

+ 7 - 0
src/main/java/com/gyee/frame/service/ticket/WorkticketService.java

@@ -35,4 +35,11 @@ public interface WorkticketService extends IService<Workticket> {
      * @return
      */
     boolean updateTicket(double id, double startNodeId, double endNodeId);
+
+    /**
+     * 根据票号查询一条数据
+     * @param ticketNum
+     * @return
+     */
+    Workticket getTicketItem(String ticketNum);
 }

+ 598 - 4
src/main/java/com/gyee/frame/util/ticket/TicketUtil.java

@@ -1,9 +1,10 @@
 package com.gyee.frame.util.ticket;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.gyee.frame.common.exception.TicketException;
+import com.gyee.frame.model.ticket.Labor;
+import com.gyee.frame.model.ticket.Workticket;
+
+import java.util.*;
 
 /**
  * 工作票
@@ -350,6 +351,599 @@ public class TicketUtil {
     }
 
     /**
+     * 根据当前节点设置已分配人员的名字
+     *
+     * @param ticket
+     * @param title
+     * @param labor
+     * @return
+     */
+    public static Workticket initLabor(Workticket ticket, String title, Labor labor){
+        if (ticket.getWtickettype().equals("风场风机")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getInceptdate() == null)
+                        ticket.setInceptdate(new Date());
+                    break;
+                case "值班负责人":
+                    ticket.setShiftforeman(labor.getLaborname());
+                    ticket.setShiftforemannum(labor.getLabornum());
+                    break;
+                case "许可人":
+                    ticket.setFiatuser1(labor.getLaborname());
+                    ticket.setFiatuser1num(labor.getLabornum());
+                    if (ticket.getFiatdate() == null)
+                        ticket.setFiatdate(new Date());
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2(labor.getLaborname());
+                    ticket.setPrincipal2num(labor.getLabornum());
+                    if (ticket.getStartworktime() == null)
+                        ticket.setStartworktime(new Date());
+                    break;
+                case "负责人签字":
+                    ticket.setPrincipal5(labor.getLaborname());
+                    ticket.setPrincipal5num(labor.getLabornum());
+                    break;
+                case "许可人结票":
+                    ticket.setFiatuser4(ticket.getFiatuser1());
+                    ticket.setFiatuser4num(labor.getLabornum());
+                    if (ticket.getFinaltime() == null)
+                        ticket.setFinaltime(new Date());
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("电气一种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getSigndate() == null)
+                        ticket.setSigndate(new Date());
+                    break;
+                case "值班负责人":
+                    ticket.setShiftforeman(labor.getLaborname());
+                    ticket.setShiftforemannum(labor.getLabornum());
+                    if (ticket.getInceptdate() == null)
+                        ticket.setInceptdate(new Date());
+                    break;
+                case "许可人":
+                    ticket.setFiatuser(labor.getLaborname());
+                    ticket.setFiatusernum(labor.getLabornum());
+                    if (ticket.getFiatdate() == null)
+                        ticket.setFiatdate(new Date());
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2(labor.getLaborname());
+                    ticket.setPrincipal2num(labor.getLabornum());
+                    break;
+                case "负责人签字":
+                    ticket.setPrincipal5(labor.getLaborname());
+                    ticket.setPrincipal5num(labor.getLabornum());
+                    break;
+                case "许可人验收":
+                    ticket.setFiatuser4(labor.getLaborname());
+                    ticket.setFiatuser4num(labor.getLabornum());
+                    if (ticket.getFinaltime() == null)
+                        ticket.setFinaltime(new Date());
+                    break;
+                case "值班负责人结票":
+                    ticket.setShiftforeman1(labor.getLaborname());
+                    ticket.setShiftforenum1num(labor.getLabornum());
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("电气二种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getSigndate() == null)
+                        ticket.setSigndate(new Date());
+                    break;
+                case "许可人":
+                    ticket.setFiatuser(labor.getLaborname());
+                    ticket.setFiatusernum(labor.getLabornum());
+                    if (ticket.getFiatdate() == null)
+                        ticket.setFiatdate(new Date());
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2(labor.getLaborname());
+                    ticket.setPrincipal2num(labor.getLabornum());
+                    break;
+                case "负责人签字":
+                    ticket.setPrincipal5(labor.getLaborname());
+                    ticket.setPrincipal5num(labor.getLabornum());
+                    break;
+                case "许可人结票":
+                    ticket.setFiatuser4(labor.getLaborname());
+                    ticket.setFiatuser4num(labor.getLabornum());
+                    if (ticket.getFinaltime() == null)
+                        ticket.setFinaltime(new Date());
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("风场动火")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getSigndate() == null)
+                        ticket.setSigndate(new Date());
+                    break;
+                case "消防负责人审批":
+                    ticket.setFirefightingperson(labor.getLaborname());
+                    ticket.setFirefightingpernum(labor.getLabornum());
+                    break;
+                case "安监负责人审批":
+                    ticket.setSafeprincipal(labor.getLaborname());
+                    ticket.setSafeprincipalnum(labor.getLabornum());
+                    if (ticket.getStartworktime() == null)
+                        ticket.setStartworktime(new Date());
+                    if (ticket.getEndworktime() == null)
+                        ticket.setEndworktime(new Date());
+                    break;
+                case "安全生产领导审批":
+                    ticket.setFiatuser5(labor.getLaborname());
+                    ticket.setFiatuser5num(labor.getLabornum());
+                    break;
+                case "运行许可人":
+                    ticket.setFiatuser8(labor.getLaborname());
+                    ticket.setFiatuser8num(labor.getLabornum());
+                    if (ticket.getFiatdate1() == null)
+                        ticket.setFiatdate1(new Date());
+                    break;
+                case "动火负责人确认":
+                    ticket.setPrincipal1(labor.getLaborname());
+                    ticket.setPrincipal1num(labor.getLabornum());
+                    if (ticket.getFiatuserdate() == null)
+                        ticket.setFiatuserdate(new Date());
+                    break;
+                case "消防监护人确认":
+                    ticket.setGuardian(labor.getLaborname());
+                    ticket.setGuardiannum(labor.getLabornum());
+                    break;
+                case "动火负责人验收":
+                    ticket.setPrincipal3(labor.getLaborname());
+                    ticket.setPrincipal3num(labor.getLabornum());
+                    if (ticket.getFireendtime() == null)
+                        ticket.setFireendtime(new Date());
+                    break;
+                case "消防监护人检查":
+                    ticket.setGuardian1(labor.getLaborname());
+                    ticket.setGuardian1num(labor.getLabornum());
+                    break;
+                case "运行许可人结票":
+                    ticket.setFiatuser7(labor.getLaborname());
+                    ticket.setFiatuser7num(labor.getLabornum());
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("二级动火")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getSigndate() == null)
+                        ticket.setSigndate(new Date());
+                    break;
+                case "安监负责人审批":
+                    ticket.setSafeprincipal(labor.getLaborname());
+                    ticket.setSafeprincipalnum(labor.getLabornum());
+                    if (ticket.getFirepermittime() == null)
+                        ticket.setFirepermittime(new Date());
+                    break;
+                case "运行许可人":
+                    ticket.setFiatuser8(labor.getLaborname());
+                    ticket.setFiatuser8num(labor.getLabornum());
+                    if (ticket.getFiatdate1() == null)
+                        ticket.setFiatdate1(new Date());
+                    break;
+                case "消防监护人审批":
+                    ticket.setGuardian(labor.getLaborname());
+                    ticket.setGuardiannum(labor.getLabornum());
+                    break;
+                case "动火负责人确认":
+                    ticket.setPrincipal1(labor.getLaborname());
+                    ticket.setPrincipal1num(labor.getLabornum());
+                    break;
+                case "安监部门确认":
+                    ticket.setSafeprincipal1(labor.getLaborname());
+                    ticket.setSafeprincipal1num(labor.getLabornum());
+                    if (ticket.getFiatuserdate() == null)
+                        ticket.setFiatuserdate(new Date());
+                    break;
+                case "动火负责人验收":
+                    ticket.setPrincipal3(labor.getLaborname());
+                    ticket.setPrincipal3num(labor.getLabornum());
+                    if (ticket.getFireendtime() == null)
+                        ticket.setFireendtime(new Date());
+                    break;
+                case "消防监护人检查":
+                    ticket.setGuardian1(labor.getLaborname());
+                    ticket.setGuardian1num(labor.getLabornum());
+                    break;
+                case "运行许可人结票":
+                    ticket.setFiatuser7(labor.getLaborname());
+                    ticket.setFiatuser7num(labor.getLabornum());
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("线路一种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getSigndate() == null)
+                        ticket.setSigndate(new Date());
+                    break;
+                case "值班负责人":
+                    ticket.setInceptman1(labor.getLaborname());
+                    ticket.setInceptman1num(labor.getLabornum());
+                    if (ticket.getInceptdate() == null)
+                        ticket.setInceptdate(new Date());
+                    break;
+                case "许可人":
+                    ticket.setFiatuser1(labor.getLaborname());
+                    ticket.setFiatuser1num(labor.getLabornum());
+                    if (ticket.getFiatdate() == null)
+                        ticket.setFiatdate(new Date());
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2(labor.getLaborname());
+                    ticket.setPrincipal2num(labor.getLabornum());
+                    if (ticket.getStartworktime() == null)
+                        ticket.setStartworktime(new Date());
+                    break;
+                case "负责人签字验收":
+                    ticket.setPrincipal5(labor.getLaborname());
+                    ticket.setPrincipal5num(labor.getLabornum());
+                    if (ticket.getFinaltime() == null)
+                        ticket.setFinaltime(new Date());
+                    break;
+                case "许可人验收":
+                    ticket.setFiatuser4(labor.getLaborname());
+                    ticket.setFiatuser4num(labor.getLabornum());
+                    break;
+                case "值班负责人结票":
+                    ticket.setInceptman(labor.getLaborname());
+                    ticket.setInceptmannum(labor.getLabornum());
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("线路二种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatory(labor.getLaborname());
+                    ticket.setSignatorynum(labor.getLabornum());
+                    if (ticket.getSigndate() == null)
+                        ticket.setSigndate(new Date());
+                    break;
+                case "值班负责人":
+                    ticket.setInceptman1(labor.getLaborname());
+                    ticket.setInceptman1num(labor.getLabornum());
+                    if (ticket.getInceptdate() == null)
+                        ticket.setInceptdate(new Date());
+                    break;
+                case "许可人":
+                    ticket.setFiatuser1(labor.getLaborname());
+                    ticket.setFiatuser1num(labor.getLabornum());
+                    if (ticket.getFiatdate() == null)
+                        ticket.setFiatdate(new Date());
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2(labor.getLaborname());
+                    ticket.setPrincipal2num(labor.getLabornum());
+                    if (ticket.getStartworktime() == null)
+                        ticket.setStartworktime(new Date());
+                    break;
+                case "负责人签字验收":
+                    ticket.setPrincipal5(labor.getLaborname());
+                    ticket.setPrincipal5num(labor.getLabornum());
+                    if (ticket.getFinaltime() == null)
+                        ticket.setFinaltime(new Date());
+                    break;
+                case "许可人验收":
+                    ticket.setFiatuser4(labor.getLaborname());
+                    ticket.setFiatuser4num(labor.getLabornum());
+                    break;
+                case "值班负责人结票":
+                    ticket.setInceptman(labor.getLaborname());
+                    ticket.setInceptmannum(labor.getLabornum());
+                    break;
+                case "许可人确认":
+                    ticket.setFiatuser3(labor.getLaborname());
+                    break;
+                case "运行值班人员确认":
+                    ticket.setInceptman2(labor.getLaborname());
+                    break;
+            }
+        }
+
+        return ticket;
+    }
+
+    /**
+     * 设置labornum, 显示签名图片
+     *
+     * @param ticket
+     * @param title
+     * @param laborNum
+     * @param laborName  验证是否为当前任务分配人
+     * @return
+     */
+    public static Workticket setLaborNum(Workticket ticket, String title, String laborNum, String laborName){
+        if (ticket.getWtickettype().equals("风场风机")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getSignatory()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "值班负责人":
+                    ticket.setShiftforemannum(laborNum);
+                    break;
+                case "许可人":
+                    ticket.setFiatuser1num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser1()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal2()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "负责人签字":
+                    ticket.setPrincipal5num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal5()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "许可人结票":
+                    ticket.setFiatuser4num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser4()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("电气一种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getSignatory()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "值班负责人":
+                    ticket.setShiftforemannum(laborNum);
+                    if (!laborName.equals(ticket.getShiftforeman()))
+                        throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
+                    break;
+                case "许可人":
+                    ticket.setFiatusernum(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal2()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "负责人签字":
+                    ticket.setPrincipal5num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal5()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "许可人验收":
+                    ticket.setFiatuser4num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser4()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "值班负责人结票":
+                    ticket.setShiftforenum1num(laborNum);
+                    if (!laborName.equals(ticket.getShiftforeman1()))
+                        throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("电气二种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getSignatory()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "许可人":
+                    ticket.setFiatusernum(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal2()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "负责人签字":
+                    ticket.setPrincipal5num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal5()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "许可人结票":
+                    ticket.setFiatuser4num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser4()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("风场动火")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getSignatory()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "消防负责人审批":
+                    ticket.setFirefightingpernum(laborNum);
+                    if (!laborName.equals(ticket.getFirefightingperson()))
+                        throw new TicketException("当前选择消防负责人和任务分配消防负责人不一致");
+                    break;
+                case "安监负责人审批":
+                    ticket.setSafeprincipalnum(laborNum);
+                    if (!laborName.equals(ticket.getSafeprincipal()))
+                        throw new TicketException("当前选择安监负责人和任务分配安监负责人不一致");
+                    break;
+                case "安全生产领导审批":
+                    ticket.setFiatuser5num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser5()))
+                        throw new TicketException("当前选择生产领导人和任务分配生产领导人不一致");
+                    break;
+                case "运行许可人":
+                    ticket.setFiatuser8num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser8()))
+                        throw new TicketException("当前选择运行许可人和任务分配运行许可人不一致");
+                    break;
+                case "动火负责人确认":
+                    ticket.setPrincipal1num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal1()))
+                        throw new TicketException("当前选择动火负责人和任务分配动火负责人不一致");
+                    break;
+                case "消防监护人确认":
+                    ticket.setGuardiannum(laborNum);
+                    if (!laborName.equals(ticket.getGuardian()))
+                        throw new TicketException("当前选择消防监护人和任务分配消防监护人不一致");
+                    break;
+                case "动火负责人验收":
+                    ticket.setPrincipal3num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal3()))
+                        throw new TicketException("当前选择动火负责人和任务分配动火负责人不一致");
+                    break;
+                case "消防监护人检查":
+                    ticket.setGuardian1num(laborNum);
+                    if (!laborName.equals(ticket.getGuardian1()))
+                        throw new TicketException("当前选择消防监护人和任务分配消防监护人不一致");
+                    break;
+                case "运行许可人结票":
+                    ticket.setFiatuser7num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser7()))
+                        throw new TicketException("当前选择运行许可人和任务分配运行许可人不一致");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("二级动火")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getSignatory()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "安监负责人审批":
+                    ticket.setSafeprincipalnum(laborNum);
+                    if (!laborName.equals(ticket.getSafeprincipal()))
+                        throw new TicketException("当前选择安监负责人和任务分配安监负责人不一致");
+                    break;
+                case "运行许可人":
+                    ticket.setFiatuser8num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser8()))
+                        throw new TicketException("当前选择运行许可人和任务分配运行许可人不一致");
+                    break;
+                case "消防监护人审批":
+                    ticket.setGuardiannum(laborNum);
+                    if (!laborName.equals(ticket.getGuardian()))
+                        throw new TicketException("当前选择消防监护人和任务分配消防监护人不一致");
+                    break;
+                case "动火负责人确认":
+                    ticket.setPrincipal1num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal1()))
+                        throw new TicketException("当前选择动火负责人和任务分配动火负责人不一致");
+                    break;
+                case "安监部门确认":
+                    ticket.setSafeprincipal1num(laborNum);
+                    if (!laborName.equals(ticket.getSafeprincipal1()))
+                        throw new TicketException("当前选择安监部门负责人和任务分配安监部门负责人不一致");
+                    break;
+                case "动火负责人验收":
+                    ticket.setPrincipal3num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal3()))
+                        throw new TicketException("当前选择动火负责人和任务分配动火负责人不一致");
+                    break;
+                case "消防监护人检查":
+                    ticket.setGuardian1num(laborNum);
+                    if (!laborName.equals(ticket.getGuardian1()))
+                        throw new TicketException("当前选择消防监护人和任务分配消防监护人不一致");
+                    break;
+                case "运行许可人结票":
+                    ticket.setFiatuser7num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser7()))
+                        throw new TicketException("当前选择运行许可人和任务分配运行许可人不一致");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("线路一种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser7()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "值班负责人":
+                    ticket.setInceptman1num(laborNum);
+                    if (!laborName.equals(ticket.getInceptman1()))
+                        throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
+                    break;
+                case "许可人":
+                    ticket.setFiatuser1num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser1()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal2()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "负责人签字验收":
+                    ticket.setPrincipal5num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal5()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "许可人验收":
+                    ticket.setFiatuser4num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser4()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "值班负责人结票":
+                    ticket.setInceptmannum(laborNum);
+                    if (!laborName.equals(ticket.getInceptman()))
+                        throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("线路二种")){
+            switch(title){
+                case "签发人":
+                    ticket.setSignatorynum(laborNum);
+                    if (!laborName.equals(ticket.getSignatory()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "值班负责人":
+                    ticket.setInceptman1num(laborNum);
+                    if (!laborName.equals(ticket.getInceptman1()))
+                        throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
+                    break;
+                case "许可人":
+                    ticket.setFiatuser1num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser1()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "负责人确认":
+                    ticket.setPrincipal2num(laborNum);
+                    if (!laborName.equals(ticket.getPrincipal2()))
+                        throw new TicketException("当前选择负责人和任务分配负责人不一致");
+                    break;
+                case "许可人验收":
+                    ticket.setFiatuser4num(laborNum);
+                    if (!laborName.equals(ticket.getFiatuser4()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "值班负责人结票":
+                    ticket.setInceptmannum(laborNum);
+                    if (!laborName.equals(ticket.getInceptman()))
+                        throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
+                    break;
+            }
+        }
+
+        return ticket;
+    }
+
+    /**
      * 获取项目的路径
      * @return
      */

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 23 - 1
src/main/resources/mybatis/ticket/WorkticketMapper.xml