Parcourir la source

手机端两票流程审批,照片上传

chenminghua il y a 2 ans
Parent
commit
c64306f68f
29 fichiers modifiés avec 988 ajouts et 137 suppressions
  1. 102 0
      src/main/java/com/gyee/frame/common/base/ExcludeQueryWrapper.java
  2. 25 0
      src/main/java/com/gyee/frame/common/conf/JudeSystem.java
  3. 43 8
      src/main/java/com/gyee/frame/common/conf/V2Config.java
  4. 2 2
      src/main/java/com/gyee/frame/common/file/FileUploadUtils.java
  5. 96 0
      src/main/java/com/gyee/frame/common/file/ImageUtil.java
  6. 4 1
      src/main/java/com/gyee/frame/controller/AnonController.java
  7. 121 0
      src/main/java/com/gyee/frame/controller/FileUploadController.java
  8. 18 3
      src/main/java/com/gyee/frame/controller/ticket/LaborController.java
  9. 5 0
      src/main/java/com/gyee/frame/controller/ticket/WfactionController.java
  10. 37 15
      src/main/java/com/gyee/frame/controller/ticket/WftransController.java
  11. 30 16
      src/main/java/com/gyee/frame/controller/ticket/WorkticketController.java
  12. 16 0
      src/main/java/com/gyee/frame/mapper/ticket/WoticketimageMapper.java
  13. 11 0
      src/main/java/com/gyee/frame/model/ticket/Workticket.java
  14. 70 0
      src/main/java/com/gyee/frame/model/ticket/Woticketimage.java
  15. 11 0
      src/main/java/com/gyee/frame/service/impl/ticket/FjykServiceImpl.java
  16. 15 17
      src/main/java/com/gyee/frame/service/impl/ticket/WfactionServiceImpl.java
  17. 19 7
      src/main/java/com/gyee/frame/service/impl/ticket/WfassignmentServiceImpl.java
  18. 1 0
      src/main/java/com/gyee/frame/service/impl/ticket/WorkticketServiceImpl.java
  19. 2 1
      src/main/java/com/gyee/frame/service/impl/ticket/WosafetybaffleServiceImpl.java
  20. 37 0
      src/main/java/com/gyee/frame/service/impl/ticket/WoticketimageServiceImpl.java
  21. 10 2
      src/main/java/com/gyee/frame/service/ticket/FjykService.java
  22. 8 0
      src/main/java/com/gyee/frame/service/ticket/WfassignmentService.java
  23. 32 0
      src/main/java/com/gyee/frame/service/ticket/WoticketimageService.java
  24. 229 55
      src/main/java/com/gyee/frame/util/ticket/TicketUtil.java
  25. 1 1
      src/main/resources/application-dev.yml
  26. 11 5
      src/main/resources/application.yml
  27. 4 0
      src/main/resources/mybatis/ticket/WorkticketMapper.xml
  28. 26 0
      src/main/resources/mybatis/ticket/WoticketimageMapper.xml
  29. 2 4
      src/test/java/test/MongoDBTest.java

+ 102 - 0
src/main/java/com/gyee/frame/common/base/ExcludeQueryWrapper.java

@@ -0,0 +1,102 @@
+package com.gyee.frame.common.base;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+
+import java.util.Collection;
+
+public class ExcludeQueryWrapper<T> extends QueryWrapper<T> {
+
+    @Override
+    public QueryWrapper<T> eq(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.eq(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> in(boolean condition, String column, Collection<?> val) {
+        condition = !(null == val || val.size() <= 0);
+//        condition = !ObjectUtils.isEmpty(val);
+        return super.in(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> ne(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.ne(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> gt(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.gt(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> ge(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.ge(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> lt(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.lt(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> le(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.le(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> like(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.like(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> notLike(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.notLike(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> likeLeft(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.likeLeft(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> likeRight(boolean condition, String column, Object val) {
+        condition = !ObjectUtils.isEmpty(val);
+        return super.likeRight(condition, column, val);
+    }
+
+    @Override
+    public QueryWrapper<T> between(boolean condition, String column, Object val1, Object val2) {
+        if (ObjectUtils.isEmpty(val1) && ObjectUtils.isEmpty(val2)) {
+            condition = false;
+        } else if (ObjectUtils.isEmpty(val1)) {
+            return super.lt(true, column, val2);
+        } else if (ObjectUtils.isEmpty(val2)) {
+            return super.ge(true, column, val1);
+        }
+        return super.between(condition, column, val1, val2);
+    }
+
+    @Override
+    public QueryWrapper<T> notBetween(boolean condition, String column, Object val1, Object val2) {
+        if (ObjectUtils.isEmpty(val1) && ObjectUtils.isEmpty(val2)) {
+            condition = false;
+        } else if (ObjectUtils.isEmpty(val1)) {
+            return super.lt(true, column, val2);
+        } else if (ObjectUtils.isEmpty(val2)) {
+            return super.ge(true, column, val1);
+        }
+        return super.notBetween(condition, column, val1, val2);
+    }
+
+
+}

+ 25 - 0
src/main/java/com/gyee/frame/common/conf/JudeSystem.java

@@ -0,0 +1,25 @@
+package com.gyee.frame.common.conf;
+
+/**
+ * 判断当前系统
+ */
+public class JudeSystem {
+
+    public static boolean isLinux() {
+        return System.getProperty("os.name").toLowerCase().contains("linux");
+    }
+
+    public static boolean isWindows() {
+        return System.getProperty("os.name").toLowerCase().contains("windows");
+    }
+
+    public static String judgeSystem() {
+        if (isLinux()) {
+            return "linux";
+        } else if (isWindows()) {
+            return "windows";
+        } else {
+            return "other system";
+        }
+    }
+}

+ 43 - 8
src/main/java/com/gyee/frame/common/conf/V2Config.java

@@ -19,7 +19,8 @@ public class V2Config
     /** 版权年份 */
     private String copyrightYear;
     /** 上传路径 */
-    private static String profile;
+    private static String profileLinux;
+    private static String profileWindow;
     /** 是否开启 上传static **/
     private static String isstatic;
     /** 开启存放静态文件夹后目录 **/
@@ -39,10 +40,14 @@ public class V2Config
     /** 实时数据库 **/
     private static String realTimeDataBase;
     /**app升级路径**/
-    private static String appUpdateUrl;
+    private static String appUpdateUrlLinux;
+    private static String appUpdateUrlWindow;
     /**智能营销接口**/
     private static String powerDirectUrl;
 
+    private static String profile;
+    private static String appUploadUrl;
+
 
     public String getPowerDirectUrl() {
         return powerDirectUrl;
@@ -53,11 +58,11 @@ public class V2Config
     }
 
     public static String getAppUpdateUrl() {
-        return appUpdateUrl;
+        return appUploadUrl = JudeSystem.isWindows() ? getAppUpdateUrlWindow() : JudeSystem.isLinux() ? getAppUpdateUrlLinux() : "";
     }
 
     public static void setAppUpdateUrl(String appUpdateUrl) {
-        V2Config.appUpdateUrl = appUpdateUrl;
+        V2Config.appUploadUrl = appUpdateUrl;
     }
 
     public static String getRealTimeDataBase() {
@@ -100,7 +105,7 @@ public class V2Config
 
     public static String getProfile()
     {
-        return profile;
+        return profile = JudeSystem.isWindows() ? getProfileWindow() : JudeSystem.isLinux() ? getProfileLinux() : "";
     }
 
     public void setProfile(String profile)
@@ -171,7 +176,37 @@ public class V2Config
 	public  void setRollVerification(Boolean rollVerification) {
 		V2Config.rollVerification = rollVerification;
 	}
-	
-	
-	
+
+
+    public static String getProfileLinux() {
+        return profileLinux;
+    }
+
+    public static void setProfileLinux(String profileLinux) {
+        V2Config.profileLinux = profileLinux;
+    }
+
+    public static String getProfileWindow() {
+        return profileWindow;
+    }
+
+    public static void setProfileWindow(String profileWindow) {
+        V2Config.profileWindow = profileWindow;
+    }
+
+    public static String getAppUpdateUrlLinux() {
+        return appUpdateUrlLinux;
+    }
+
+    public static void setAppUpdateUrlLinux(String appUpdateUrlLinux) {
+        V2Config.appUpdateUrlLinux = appUpdateUrlLinux;
+    }
+
+    public static String getAppUpdateUrlWindow() {
+        return appUpdateUrlWindow;
+    }
+
+    public static void setAppUpdateUrlWindow(String appUpdateUrlWindow) {
+        V2Config.appUpdateUrlWindow = appUpdateUrlWindow;
+    }
 }

+ 2 - 2
src/main/java/com/gyee/frame/common/file/FileUploadUtils.java

@@ -58,8 +58,8 @@ public class FileUploadUtils {
     }
 
     public static String getIsstatic() {
-		return isstatic;
-	}
+        return isstatic;
+    }
 
 	public static void setIsstatic(String isstatic) {
 		FileUploadUtils.isstatic = isstatic;

+ 96 - 0
src/main/java/com/gyee/frame/common/file/ImageUtil.java

@@ -0,0 +1,96 @@
+package com.gyee.frame.common.file;
+
+import com.gyee.frame.common.conf.V2Config;
+import net.coobird.thumbnailator.Thumbnails;
+import org.apache.shiro.crypto.hash.Md5Hash;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+
+public class ImageUtil {
+
+    //图片上传的路径
+    private static final String PRE_ORIGINAL_NAME = "/ticket_image/";
+    private static int counter = 0;
+
+    private ImageUtil() {
+    }
+
+    /**
+     * 原始图片上传
+     * @param file
+     * @return
+     */
+    public static String uploadOriginal(MultipartFile file) {
+        String root_dir = V2Config.getProfile() + PRE_ORIGINAL_NAME;
+        String path = upload(root_dir, file);
+        return path;
+    }
+
+
+    private static final String upload(String path, MultipartFile file) {
+        String name = file.getOriginalFilename();
+        // 获得文件后缀名称
+        String suffixName = name.substring(name.lastIndexOf("."));
+        String newName = encodingFilename(path, suffixName);
+
+        String fileName = path + "/" + newName;
+        long size = file.getSize();
+
+        InputStream is = null;
+        OutputStream os = null;
+        try {
+            is = file.getInputStream();
+            // 1M = 1048576 KB
+            if (size < 1048576){
+                Thumbnails.of(is)
+                        .scale(0.5)
+                        .toFile(fileName);
+            } else if (size < 1048576 * 2){
+                Thumbnails.of(is)
+                        .scale(0.4)
+                        .toFile(fileName);
+            } else if (size < 1048576 * 3){
+                Thumbnails.of(is)
+                        .scale(0.1)
+                        .toFile(fileName);
+            }
+
+//            byte[] bs = new byte[1024];
+//            int len = 0;
+//            File f = new File(fileName);
+//            if (!f.exists())
+//                f.createNewFile();
+//
+//            os = new FileOutputStream(f);
+//            while((len = is.read(bs)) != -1) {
+//                os.write(bs, 0, len);
+//            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (is != null)
+                    is.close();
+                if (os != null)
+                    os.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return fileName;
+    }
+
+
+    /**
+     * 编码文件名
+     */
+    private static final String encodingFilename(String filename, String extension)
+    {
+        filename = filename.replace("_", " ");
+        filename = new Md5Hash(filename + System.nanoTime() + counter++).toHex() + extension;
+        return filename;
+    }
+
+}

+ 4 - 1
src/main/java/com/gyee/frame/controller/AnonController.java

@@ -21,6 +21,9 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 
+/**
+ * app升级配置
+ */
 @RestController
 @RequestMapping("sys")
 public class AnonController {
@@ -46,7 +49,7 @@ public class AnonController {
     @GetMapping("/downloadFile")
     public ResponseEntity<Resource> downloadFile( HttpServletRequest request) {
         // Load file as Resource
-        Resource resource = fileService.loadFileAsResource(V2Config.getAppUpdateUrl()+"sisphone.apk");
+        Resource resource = fileService.loadFileAsResource(V2Config.getAppUpdateUrl());
 
         // Try to determine file's content type
         String contentType = null;

+ 121 - 0
src/main/java/com/gyee/frame/controller/FileUploadController.java

@@ -0,0 +1,121 @@
+package com.gyee.frame.controller;
+
+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.common.file.FileUploadUtils;
+import com.gyee.frame.common.file.ImageUtil;
+import com.gyee.frame.model.ticket.Woticketimage;
+import com.gyee.frame.service.ticket.WoticketimageService;
+import com.gyee.frame.util.SnowflakeIdWorker;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+@RestController
+@RequestMapping("/ticket/image")
+public class FileUploadController {
+
+    @Autowired
+    private WoticketimageService woticketimageService;
+
+    /**
+     * 工作票关联的图片地址
+     * @param wonum
+     * @return
+     */
+    @DataSource(value = DataSourceType.TICKET)
+    @GetMapping("list")
+    public AjaxResult images(String wonum){
+        List<Woticketimage> list = woticketimageService.getAll(wonum);
+
+        return AjaxResult.successData(list);
+    }
+
+    /**
+     * 工作票图片上传
+     * @param wonum     与工作票关联的id
+     * @param labornum  上传人
+     * @param files
+     * @return
+     */
+    @DataSource(value = DataSourceType.TICKET)
+    @PostMapping("upload")
+    public AjaxResult upload(String wonum, String labornum, MultipartFile[] files){
+        if (null == files || files.length == 0)
+            return AjaxResult.error(4004, "数据为空");
+
+        Random rd = new Random();
+        List<Woticketimage> list = new ArrayList<>();
+
+        for (MultipartFile file : files){
+            String pathOriginal = ImageUtil.uploadOriginal(file);
+
+            Woticketimage obj = new Woticketimage();
+            obj.setId(System.currentTimeMillis() + rd.nextInt(100));
+            obj.setWonum(wonum);
+            obj.setType(file.getContentType());
+            obj.setSize(file.getSize());
+            obj.setPath(pathOriginal);
+            obj.setLabornum(labornum);
+            obj.setTime(new Date());
+            list.add(obj);
+        }
+
+        boolean flag = woticketimageService.insertBatch(list);
+
+        if (flag)
+            return AjaxResult.success();
+        else
+            return AjaxResult.error(4004, "图片上传失败");
+    }
+
+
+    /**
+     * 工作照片图片下载
+     * @param filename
+     * @param response
+     * @return
+     * @throws IOException
+     */
+    @DataSource(value = DataSourceType.TICKET)
+    @GetMapping("/download")
+    public AjaxResult downloadImage(@RequestParam(value = "filename") String filename,  HttpServletResponse response) throws IOException {
+        File newfile = new File(filename);
+        if (!newfile.exists()) {
+            return AjaxResult.error(4004, filename + "文件不存在");
+        }
+        response.setContentType("application/force-download");
+        response.addHeader("Content-Disposition", "attachment;fileName=" + filename);
+
+        byte[] buffer = new byte[1024];
+        FileInputStream fis = null;
+        BufferedInputStream bis = null;
+        OutputStream os = null;
+        try {
+            fis = new FileInputStream(newfile);
+            bis = new BufferedInputStream(fis);
+            os = response.getOutputStream();
+
+            int i = bis.read(buffer);
+            while (i != -1) {
+                os.write(buffer, 0, i);
+                i = bis.read(buffer);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            os.close();
+            bis.close();
+            fis.close();
+        }
+        return AjaxResult.success();
+    }
+}

+ 18 - 3
src/main/java/com/gyee/frame/controller/ticket/LaborController.java

@@ -10,6 +10,7 @@ import com.gyee.frame.model.ticket.TokenUser;
 import com.gyee.frame.model.ticket.Wfrole;
 import com.gyee.frame.service.ticket.LaborService;
 import com.gyee.frame.service.ticket.ShiroService;
+import com.gyee.frame.service.ticket.WfassignmentService;
 import com.gyee.frame.service.ticket.WfroleService;
 import com.gyee.frame.util.ticket.TicketUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +37,9 @@ public class LaborController {
     WfroleService wfroleService;
     @Autowired
     ShiroService shiroService;
+    @Autowired
+    WfassignmentService wfassignmentService;
+
 
     @DataSource(value = DataSourceType.TICKET)
     @GetMapping(value = "group")
@@ -64,18 +68,29 @@ public class LaborController {
         return AjaxResult.successData(labors);
     }
 
+    /**
+     * 流程发送 === 获取之前节点已经出现过的人员
+     * @param info
+     * @return
+     */
     @DataSource(value = DataSourceType.TICKET)
     @PostMapping(value = "single")
     public AjaxResult getLaborSingle(@RequestParam("info") String info) {
         JSONObject jsonObject = JSONObject.parseObject(info);
         Double instId = jsonObject.getDouble("instid");
         String role = jsonObject.getString("role");
+        Double ownerId = jsonObject.getDouble("ownerid");
 
         List<Labor> labors;
-        if (role.contains("流程启动者") || role.contains("流程人员变更"))
+        if (role.contains("流程启动者") || role.contains("流程人员变更")){
             labors = laborService.getFlowStarter(instId);
-        else
-            labors = laborService.getLaborSingle(instId, role);
+        } else {
+            List<String> roles = wfassignmentService.listWfRole(ownerId);
+            if (roles.contains(role))
+                labors = laborService.getLaborSingle(instId, role);
+            else
+                labors = laborService.getLaborOfPersonGroup(role);
+        }
 
         if (labors == null || labors.size() == 0)
             return AjaxResult.error(4004, "数据为空");

+ 5 - 0
src/main/java/com/gyee/frame/controller/ticket/WfactionController.java

@@ -32,6 +32,11 @@ public class WfactionController {
     @Autowired
     WfactionService wfactionService;
 
+    /**
+     * 获取下一步流程操作
+     * @param info
+     * @return
+     */
     @DataSource(value = DataSourceType.TICKET)
     @PostMapping(value = "index")
     public AjaxResult index(@RequestParam("info") String info) {

+ 37 - 15
src/main/java/com/gyee/frame/controller/ticket/WftransController.java

@@ -8,6 +8,7 @@ import com.gyee.frame.common.domain.AjaxResult;
 import com.gyee.frame.model.ticket.TokenUser;
 import com.gyee.frame.model.ticket.Workticket;
 import com.gyee.frame.service.ticket.*;
+import com.gyee.frame.util.ticket.TicketUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -28,17 +29,38 @@ import java.util.Map;
 public class WftransController {
 
     @Autowired
-    WfinstanceService wfinstanceService;
+    private WfinstanceService wfinstanceService;
     @Autowired
-    WfassignmentService wfassignmentService;
+    private WfassignmentService wfassignmentService;
     @Autowired
-    WftransService wftransService;
+    private WftransService wftransService;
     @Autowired
-    WorkticketService workticketService;
+    private WorkticketService workticketService;
     @Autowired
-    ShiroService shiroService;
+    private ShiroService shiroService;
+    @Autowired
+    private FjykService fjykService;
+    @Autowired
+    private WosafemeasureService safemeasureService;
+    @Autowired
+    private WosafetybaffleService safetybaffleService;
+    @Autowired
+    private WosafetyService wosafetyService;
+    @Autowired
+    private WoearthlineService woearthlineService;
+    @Autowired
+    private WosaferunService wosaferunService;
+    @Autowired
+    private WosaferepairService wosaferepairService;
+    @Autowired
+    private WoticketimageService imageService;
 
 
+    /**
+     * 审批流程展示,包含已经走过的流程和未走的流程
+     * @param ticketId
+     * @return
+     */
     @DataSource(value = DataSourceType.TICKET)
     @GetMapping(value = "index")
     public AjaxResult getIndex(@RequestParam("id") String ticketId){
@@ -51,6 +73,12 @@ public class WftransController {
     }
 
 
+    /**
+     * 保存流程数据(发送流程成功)
+     * @param header
+     * @param info
+     * @return
+     */
     @DataSource(DataSourceType.TICKET)
     @PostMapping(value = "flow")
     public AjaxResult postTransFlow(@RequestHeader("token") String header, @RequestParam("info") String info){
@@ -71,18 +99,12 @@ public class WftransController {
 
         //校验签发、许可时间
         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, "许可时间必须在计划工作开始时间之后");
-        }
+        //校验许可人风险预控、安全措施恢复人等信息
+        TicketUtil.validateTicket(ticket, fjykService, safemeasureService, safetybaffleService,
+                wosafetyService, woearthlineService, wosaferunService, wosaferepairService, imageService);
 
-        // 流程正在进行
+        //流程正在进行
         if (status == 2){
             boolean result = wftransService.insertTrans(currNodeId, preNodeId, actionId, instId,version ,
                     ownerId, wfName, ticketNum, role, labors, token.getLaborNum());

+ 30 - 16
src/main/java/com/gyee/frame/controller/ticket/WorkticketController.java

@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -40,6 +41,8 @@ public class WorkticketController {
     LaborService laborService;
     @Autowired
     ShiroService shiroService;
+    @Autowired
+    FjykService fjykService;
 
     /**
      * 分页查询工作票
@@ -173,24 +176,35 @@ public class WorkticketController {
                 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, "没有操作权限");
-                    }
-                }
-            }
+        if (list == null || list.size() == 0)
+            return AjaxResult.error(4004, "数据更新失败");
+
+        Wfinstance instance = list.get(0);
+        List<Wfassignment> assignments = wfassignmentService.getActiveItem(instance.getId(), instance.getWfrevision(), ticket.getId(), "活动");
+        List<Wfassignment> collect = assignments.stream().filter(f -> f.getAssigncode().equals(user.getLaborNum())).collect(Collectors.toList());
+        if (collect.size() > 0){
+            Wfassignment w = assignments.get(0);
+            Labor labor = laborService.getLaborItem(w.getAssigncode());
+            Wfnode node = wfnodeService.getById(w.getNodeid());
+            TicketUtil.setLaborNum(ticket, node.getTitle(), user.getLaborNum(), labor.getLaborname());
+        } else {
+            return AjaxResult.error(4004, "没有操作权限");
         }
 
+//        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, "数据更新失败");

+ 16 - 0
src/main/java/com/gyee/frame/mapper/ticket/WoticketimageMapper.java

@@ -0,0 +1,16 @@
+package com.gyee.frame.mapper.ticket;
+
+import com.gyee.frame.model.ticket.Woticketimage;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author chenmh
+ * @since 2022-08-29
+ */
+public interface WoticketimageMapper extends BaseMapper<Woticketimage> {
+
+}

+ 11 - 0
src/main/java/com/gyee/frame/model/ticket/Workticket.java

@@ -583,6 +583,17 @@ public class Workticket extends Model<Workticket> {
     @TableField("SAFEPRINCIPAL1NUM")
     private String safeprincipal1num;
 
+    @TableField("WORKORDER")
+    private String workorder;
+
+    @TableField("APPROVALSTARTTIME")
+    private Date approvalstarttime;
+
+    @TableField("APPROVALENDTIME")
+    private Date approvalendtime;
+
+    @TableField("APPROVALPERSON")
+    private String approvalperson;
 
     @Override
     protected Serializable pkVal() {

+ 70 - 0
src/main/java/com/gyee/frame/model/ticket/Woticketimage.java

@@ -0,0 +1,70 @@
+package com.gyee.frame.model.ticket;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+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;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author chenmh
+ * @since 2022-08-29
+ */
+@Data
+  @EqualsAndHashCode(callSuper = false)
+    @TableName("WOTICKETIMAGE")
+public class Woticketimage extends Model<Woticketimage> {
+
+    private static final long serialVersionUID=1L;
+
+      @TableId("ID")
+      private Long id;
+
+    @TableField("WONUM")
+    private String wonum;
+
+    @TableField("SNO")
+    private Long sno;
+
+    @TableField("TYPE")
+    private String type;
+
+    @TableField("SIZE")
+    private Long size;
+
+    @TableField("WIDTH")
+    private Long width;
+
+    @TableField("HEIGHT")
+    private Long height;
+
+    @TableField("PATH")
+    private String path;
+
+    @TableField("THUMBPATH")
+    private String thumbpath;
+
+    @TableField("LABORNUM")
+    private String labornum;
+
+    @TableField("TIME")
+    private Date time;
+
+    @TableField("REMARK")
+    private String remark;
+
+
+    @Override
+    protected Serializable pkVal() {
+          return this.id;
+      }
+
+}

+ 11 - 0
src/main/java/com/gyee/frame/service/impl/ticket/FjykServiceImpl.java

@@ -50,4 +50,15 @@ public class FjykServiceImpl extends ServiceImpl<FjykMapper, Fjyk> implements Fj
 
         return list;
     }
+
+    @Override
+    public List<Fjyk> getListOfFXYK(String wonum, String bemark5) {
+        QueryWrapper<Fjyk> wrapper = new QueryWrapper<>();
+        wrapper.eq("WONUM", wonum);
+        wrapper.eq("bemark5", bemark5);
+
+        List<Fjyk> list = baseMapper.selectList(wrapper);
+
+        return list;
+    }
 }

+ 15 - 17
src/main/java/com/gyee/frame/service/impl/ticket/WfactionServiceImpl.java

@@ -13,10 +13,7 @@ import com.gyee.frame.service.ticket.WftaskassignService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -61,8 +58,8 @@ public class WfactionServiceImpl extends ServiceImpl<WfactionMapper, Wfaction> i
             wrapper.eq("STARTNODEID", startNodeId);
             wrapper.eq("WFREVISION", version);
             wrapper.eq("WFNAME", wfName);
-            wrapper.orderByAsc("ENDNODEID");
             wrapper.in("ACTIONTYPE", "空操作", "自定义类");
+            wrapper.orderByAsc("ENDNODEID");
 
             List<Wfaction> wfactions = baseMapper.selectList(wrapper);
 
@@ -75,8 +72,11 @@ public class WfactionServiceImpl extends ServiceImpl<WfactionMapper, Wfaction> i
             List<Wftaskassign> wftaskassigns = wftaskassignService.listTaskAssign(version, wfName);
             Map<Double, String> taskMap = wftaskassigns.stream().collect(Collectors.toMap(Wftaskassign::getNodeid, Wftaskassign::getWfrole));
 
-            double temp = 0.0;
+            Map<Double, List<Wfaction>> collect = wfactions.stream().collect(Collectors.groupingBy(Wfaction::getEndnodeid, Collectors.toList()));
             for (Wfaction wfaction : wfactions) {
+                List<Wfaction> ls = collect.get(wfaction.getEndnodeid());
+                // count > 0 表示自定义手动选择人员
+                long count = ls.stream().filter(w -> w.getAction().equals("自定义手动选择")).count();
                 FlowAction action = new FlowAction();
                 if (wfaction.getActiontype().equals("空操作")) {
                     action.setActionId(wfaction.getId());
@@ -85,7 +85,10 @@ public class WfactionServiceImpl extends ServiceImpl<WfactionMapper, Wfaction> i
                     action.setNextNodeId(String.valueOf(wfaction.getEndnodeid()));
                     action.setRole(taskMap.get(wfaction.getEndnodeid()));
                     action.setChecked(false);
-                    action.setFilter("N");
+                    if (count > 0)
+                        action.setFilter("Y");
+                    else
+                        action.setFilter("N");
                     /**
                      * 是否为结束节点
                      */
@@ -95,15 +98,6 @@ public class WfactionServiceImpl extends ServiceImpl<WfactionMapper, Wfaction> i
                     }
                     list.add(action);
                 }
-                /**
-                 * 过滤重复项  判定是否需要手动选择人员
-                 */
-                if (temp == wfaction.getEndnodeid()) {
-                    action = list.get(list.size() - 1);
-                    action.setFilter("Y");
-                }
-
-                temp = wfaction.getEndnodeid();
             }
         }
 
@@ -135,9 +129,13 @@ public class WfactionServiceImpl extends ServiceImpl<WfactionMapper, Wfaction> i
         QueryWrapper<Wfaction> wrapper = new QueryWrapper<>();
         wrapper.eq("STARTNODEID", startNodeId);
         wrapper.eq("ENDNODEID", endNodeId);
-        wrapper.eq("ACTIONTYPE", "更改状态");
+        wrapper.in("ACTIONTYPE", "更改状态");
 
         Wfaction wfaction = baseMapper.selectOne(wrapper);
+        if (null == wfaction){
+            wrapper.in("ACTIONTYPE", "自定义类");
+            wfaction = baseMapper.selectOne(wrapper);
+        }
 
         return wfaction;
     }

+ 19 - 7
src/main/java/com/gyee/frame/service/impl/ticket/WfassignmentServiceImpl.java

@@ -1,7 +1,6 @@
 package com.gyee.frame.service.impl.ticket;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.frame.common.exception.TicketException;
@@ -20,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -63,6 +63,17 @@ public class WfassignmentServiceImpl extends ServiceImpl<WfassignmentMapper, Wfa
     }
 
     @Override
+    public List<String> listWfRole(double ownerId) {
+        QueryWrapper<Wfassignment> wrapper = new QueryWrapper<>();
+        wrapper.eq("OWNERID", ownerId);
+
+        List<Wfassignment> list = baseMapper.selectList(wrapper);
+        List<String> collect = list.stream().map(p -> p.getWfrole()).collect(Collectors.toList());
+
+        return collect;
+    }
+
+    @Override
     public Wfassignment updateAssignment(double instId, double version, double ownerId, String wfName, String processor) {
         QueryWrapper<Wfassignment> wrapper = new QueryWrapper<>();
         wrapper.eq("WFREVISION", version);
@@ -109,19 +120,20 @@ public class WfassignmentServiceImpl extends ServiceImpl<WfassignmentMapper, Wfa
         Ibsidgen gen = ibsidgenService.selectId("WFASSIGNMENT");
         Wftaskassign task= wftaskassignService.taskAssign(currNodeId, version, wfName);
 
-        /**
-         * 统一表ID管理
-         */
-        double id = gen.getIdvalue() + 1;
-        ibsidgenService.updateGen(gen, id);
-
         for (int i = 0; i < labors.size(); i++){
+            /**
+             * 统一表ID管理
+             */
+            double id = gen.getIdvalue() + 1;
+            ibsidgenService.updateGen(gen, id);
+
             Wfassignment wfassignment = new Wfassignment();
             wfassignment.setId(id);
             if (wfName.equals("缺陷处理流程"))
                 wfassignment.setDescription(task.getDescription().replace(":{BUGNUM}", ticketNum));
             else
                 wfassignment.setDescription(task.getDescription().replace(":{TICKETNUM}", ticketNum));
+
             wfassignment.setAssigncode(labors.get(i));
             wfassignment.setApp(task.getApp());
             wfassignment.setStartdate(new Date());

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

@@ -56,6 +56,7 @@ public class WorkticketServiceImpl extends ServiceImpl<WorkticketMapper, Worktic
         Workticket ticket = new Workticket();
         ticket.setId(id);
         ticket.setStatus(action.getAction());
+
         ticket.setStatusdate(new Date());
         int i = baseMapper.updateById(ticket);
         if (i <= 0)

+ 2 - 1
src/main/java/com/gyee/frame/service/impl/ticket/WosafetybaffleServiceImpl.java

@@ -1,6 +1,7 @@
 package com.gyee.frame.service.impl.ticket;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.frame.common.base.ExcludeQueryWrapper;
 import com.gyee.frame.common.exception.TicketException;
 import com.gyee.frame.model.ticket.Ibsidgen;
 import com.gyee.frame.model.ticket.Wosafetybaffle;
@@ -44,7 +45,7 @@ public class WosafetybaffleServiceImpl extends ServiceImpl<WosafetybaffleMapper,
 
     @Override
     public List<Wosafetybaffle> getListOfProtectMeasure(String wonum, String style) {
-        QueryWrapper<Wosafetybaffle> wrapper = new QueryWrapper<>();
+        ExcludeQueryWrapper<Wosafetybaffle> wrapper = new ExcludeQueryWrapper<>();
         wrapper.eq("WONUM", wonum);
         wrapper.eq("STYLE", style);
 

+ 37 - 0
src/main/java/com/gyee/frame/service/impl/ticket/WoticketimageServiceImpl.java

@@ -0,0 +1,37 @@
+package com.gyee.frame.service.impl.ticket;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.frame.model.ticket.Woticketimage;
+import com.gyee.frame.mapper.ticket.WoticketimageMapper;
+import com.gyee.frame.service.ticket.WoticketimageService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author chenmh
+ * @since 2022-08-29
+ */
+@Service
+public class WoticketimageServiceImpl extends ServiceImpl<WoticketimageMapper, Woticketimage> implements WoticketimageService {
+
+    @Override
+    public boolean insertBatch(List<Woticketimage> list) {
+        boolean flag = saveBatch(list);
+        return flag;
+    }
+
+    @Override
+    public List<Woticketimage> getAll(String wonum) {
+        QueryWrapper<Woticketimage> wrapper = new QueryWrapper<>();
+        wrapper.eq("WONUM", wonum);
+
+        List<Woticketimage> list = baseMapper.selectList(wrapper);
+        return list;
+    }
+}

+ 10 - 2
src/main/java/com/gyee/frame/service/ticket/FjykService.java

@@ -23,10 +23,18 @@ public interface FjykService extends IService<Fjyk> {
     void insertRiskMeasure(Fjyk obj);
 
     /**
-     * 查询风险预控
+     * 查询风险预控  根据类型
      * @param wonum
-     * @param type
+     * @param type  PRINCIPAL=>负责人风险预控    FIATUSER=>许可人风险预控
      * @return
      */
     List<Fjyk> getListOfRiskMeasure(String wonum, String type);
+
+    /**
+     * 查询风险预控  根据人名
+     * @param wonum
+     * @param bemark5  bemark5=>工作负责人    bemark5=>工作许可人
+     * @return
+     */
+    List<Fjyk> getListOfFXYK(String wonum, String bemark5);
 }

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

@@ -39,6 +39,14 @@ public interface WfassignmentService extends IService<Wfassignment> {
 
 
     /**
+     * 根据ownerid查询当前对应票据已经出现过的所有流程人员
+     * @param ownerId
+     * @return
+     */
+    List<String> listWfRole(double ownerId);
+
+
+    /**
      * 更新待办任务
      *
      * @param instId

+ 32 - 0
src/main/java/com/gyee/frame/service/ticket/WoticketimageService.java

@@ -0,0 +1,32 @@
+package com.gyee.frame.service.ticket;
+
+import com.gyee.frame.model.ticket.Woticketimage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author chenmh
+ * @since 2022-08-29
+ */
+public interface WoticketimageService extends IService<Woticketimage> {
+
+    /**
+     * 新增批量数据
+     * @param list
+     * @return
+     */
+    boolean insertBatch(List<Woticketimage> list);
+
+
+    /**
+     * 通过wonum查询所有的图片
+     * @param wonum
+     * @return
+     */
+    List<Woticketimage> getAll(String wonum);
+}

+ 229 - 55
src/main/java/com/gyee/frame/util/ticket/TicketUtil.java

@@ -1,10 +1,15 @@
 package com.gyee.frame.util.ticket;
 
 import com.gyee.frame.common.exception.TicketException;
-import com.gyee.frame.model.ticket.Labor;
-import com.gyee.frame.model.ticket.Workticket;
+import com.gyee.frame.model.ticket.*;
+import com.gyee.frame.service.ticket.*;
+import com.gyee.frame.util.StringUtils;
+import com.gyee.frame.util.golden.StringUtil;
+import sun.security.krb5.internal.Ticket;
 
 import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 工作票
@@ -299,6 +304,7 @@ public class TicketUtil {
                 groupName = "XUKEREN";
                 break;
             case "经济运行人员":
+            case "集控中心结票":
                 groupName = "ECONOMY";
                 break;
             case "缺陷运行人员":
@@ -390,6 +396,8 @@ public class TicketUtil {
                 case "许可人结票":
                     ticket.setFiatuser4(ticket.getFiatuser1());
                     ticket.setFiatuser4num(labor.getLabornum());
+                    break;
+                case "汇报集控中心":
                     if (ticket.getFinaltime() == null)
                         ticket.setFinaltime(new Date());
                     break;
@@ -403,8 +411,12 @@ public class TicketUtil {
                         ticket.setSigndate(new Date());
                     break;
                 case "值班负责人":
+                case "集控中心":
                     ticket.setShiftforeman(labor.getLaborname());
                     ticket.setShiftforemannum(labor.getLabornum());
+                    ticket.setApprovalperson(labor.getLaborname());
+                    ticket.setApprovalstarttime(ticket.getStartdate());
+                    ticket.setApprovalendtime(ticket.getEnddate());
                     if (ticket.getInceptdate() == null)
                         ticket.setInceptdate(new Date());
                     break;
@@ -423,15 +435,39 @@ public class TicketUtil {
                     ticket.setPrincipal5num(labor.getLabornum());
                     break;
                 case "许可人验收":
+                case "许可人结票":
                     ticket.setFiatuser4(labor.getLaborname());
                     ticket.setFiatuser4num(labor.getLabornum());
                     if (ticket.getFinaltime() == null)
                         ticket.setFinaltime(new Date());
                     break;
                 case "值班负责人结票":
+                case "集控中心结票":
+                case "汇报集控中心":
                     ticket.setShiftforeman1(labor.getLaborname());
                     ticket.setShiftforenum1num(labor.getLabornum());
                     break;
+                case "签发人确认":
+                    ticket.setSignatory1(ticket.getSignatory());
+                    if (ticket.getCountersigndate() == null)
+                        ticket.setCountersigndate(new Date());
+                    break;
+                case "值班负责人确认":
+                    ticket.setInceptman(labor.getLaborname());
+                    if (ticket.getFiatdate1() == null)
+                        ticket.setFiatdate1(new Date());
+                    break;
+                case "工作负责人确认":
+                case "集控中心确认":
+                    ticket.setPrincipal4(labor.getLaborname());
+                    if (ticket.getPrincipaldate() == null)
+                        ticket.setPrincipaldate(new Date());
+                    break;
+                case "许可人确认":
+                    ticket.setInceptman2(labor.getLaborname());
+                    if (ticket.getFiatuserdate() == null)
+                        ticket.setFiatuserdate(new Date());
+                    break;
             }
         } else if (ticket.getWtickettype().equals("电气二种")){
             switch(title){
@@ -441,6 +477,15 @@ public class TicketUtil {
                     if (ticket.getSigndate() == null)
                         ticket.setSigndate(new Date());
                     break;
+                case "集控中心":
+                    ticket.setShiftforeman(labor.getLaborname());
+                    ticket.setShiftforemannum(labor.getLabornum());
+                    ticket.setApprovalperson(labor.getLaborname());
+                    ticket.setApprovalstarttime(ticket.getStartdate());
+                    ticket.setApprovalendtime(ticket.getEnddate());
+                    if (ticket.getInceptdate() == null)
+                        ticket.setInceptdate(new Date());
+                    break;
                 case "许可人":
                     ticket.setFiatuser(labor.getLaborname());
                     ticket.setFiatusernum(labor.getLabornum());
@@ -507,6 +552,7 @@ public class TicketUtil {
                     ticket.setPrincipal3num(labor.getLabornum());
                     if (ticket.getFireendtime() == null)
                         ticket.setFireendtime(new Date());
+                    ticket.setPrincipal6(ticket.getFireoperator());
                     break;
                 case "消防监护人检查":
                     ticket.setGuardian1(labor.getLaborname());
@@ -544,6 +590,7 @@ public class TicketUtil {
                 case "动火负责人确认":
                     ticket.setPrincipal1(labor.getLaborname());
                     ticket.setPrincipal1num(labor.getLabornum());
+                    ticket.setFireoperator1(ticket.getFireoperator());
                     break;
                 case "安监部门确认":
                     ticket.setSafeprincipal1(labor.getLaborname());
@@ -556,6 +603,7 @@ public class TicketUtil {
                     ticket.setPrincipal3num(labor.getLabornum());
                     if (ticket.getFireendtime() == null)
                         ticket.setFireendtime(new Date());
+                    ticket.setPrincipal6(ticket.getFireoperator());
                     break;
                 case "消防监护人检查":
                     ticket.setGuardian1(labor.getLaborname());
@@ -575,6 +623,7 @@ public class TicketUtil {
                         ticket.setSigndate(new Date());
                     break;
                 case "值班负责人":
+                case "集控中心":
                     ticket.setInceptman1(labor.getLaborname());
                     ticket.setInceptman1num(labor.getLabornum());
                     if (ticket.getInceptdate() == null)
@@ -595,17 +644,28 @@ public class TicketUtil {
                 case "负责人签字验收":
                     ticket.setPrincipal5(labor.getLaborname());
                     ticket.setPrincipal5num(labor.getLabornum());
-                    if (ticket.getFinaltime() == null)
-                        ticket.setFinaltime(new Date());
+                    if (ticket.getFinaltime1() == null)
+                        ticket.setFinaltime1(new Date());
                     break;
                 case "许可人验收":
+                case "许可人验收结票":
                     ticket.setFiatuser4(labor.getLaborname());
                     ticket.setFiatuser4num(labor.getLabornum());
+                    if (ticket.getFinaltime() == null)
+                        ticket.setFinaltime(new Date());
                     break;
                 case "值班负责人结票":
+                case "汇报集控中心":
                     ticket.setInceptman(labor.getLaborname());
                     ticket.setInceptmannum(labor.getLabornum());
                     break;
+                case "许可人确认":
+                    ticket.setFiatuser3(labor.getLaborname());
+                    break;
+                case "值班负责人确认":
+                case "集控中心确认":
+                    ticket.setInceptman2(labor.getLaborname());
+                    break;
             }
         } else if (ticket.getWtickettype().equals("线路二种")){
             switch(title){
@@ -616,6 +676,7 @@ public class TicketUtil {
                         ticket.setSigndate(new Date());
                     break;
                 case "值班负责人":
+                case "集控中心":
                     ticket.setInceptman1(labor.getLaborname());
                     ticket.setInceptman1num(labor.getLabornum());
                     if (ticket.getInceptdate() == null)
@@ -640,10 +701,12 @@ public class TicketUtil {
                         ticket.setFinaltime(new Date());
                     break;
                 case "许可人验收":
+                case "许可人验收结票":
                     ticket.setFiatuser4(labor.getLaborname());
                     ticket.setFiatuser4num(labor.getLabornum());
                     break;
                 case "值班负责人结票":
+                case "汇报集控中心":
                     ticket.setInceptman(labor.getLaborname());
                     ticket.setInceptmannum(labor.getLabornum());
                     break;
@@ -651,6 +714,7 @@ public class TicketUtil {
                     ticket.setFiatuser3(labor.getLaborname());
                     break;
                 case "运行值班人员确认":
+                case "集控中心确认":
                     ticket.setInceptman2(labor.getLaborname());
                     break;
             }
@@ -672,68 +736,84 @@ public class TicketUtil {
         if (ticket.getWtickettype().equals("风场风机")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
                     if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getInceptdate().before(ticket.getStartdate()))
+                        throw new TicketException("签发时间不可晚于计划开始工作时间");
                     break;
                 case "值班负责人":
-                    ticket.setShiftforemannum(laborNum);
+                case "集控中心":
                     break;
                 case "许可人":
-                    ticket.setFiatuser1num(laborNum);
                     if (!laborName.equals(ticket.getFiatuser1()))
                         throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    if (!ticket.getFiatdate().after(ticket.getInceptdate()))
+                        throw new TicketException("许可时间不可早于签发时间");
                     break;
                 case "负责人确认":
                     ticket.setPrincipal2num(laborNum);
                     if (!laborName.equals(ticket.getPrincipal2()))
                         throw new TicketException("当前选择负责人和任务分配负责人不一致");
                     break;
-                case "负责人签字":
-                    ticket.setPrincipal5num(laborNum);
+                case "工作负责人签字":
+                case "集控中心签字":
                     if (!laborName.equals(ticket.getPrincipal5()))
                         throw new TicketException("当前选择负责人和任务分配负责人不一致");
                     break;
+                case "许可人签字":
+                    if (!laborName.equals(ticket.getFiatuser3()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "签发人确认":
+                    if (!laborName.equals(ticket.getSignatory1()))
+                        throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    break;
+                case "许可人确认":
+                    if (!laborName.equals(ticket.getFiatuser2()))
+                        throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    break;
+                case "负责人签字":
+                    break;
                 case "许可人结票":
-                    ticket.setFiatuser4num(laborNum);
+                case "许可人签字确认":
                     if (!laborName.equals(ticket.getFiatuser4()))
                         throw new TicketException("当前选择许可人和任务分配许可人不一致");
                     break;
+                case "集控中心结票":
+                    break;
             }
         } else if (ticket.getWtickettype().equals("电气一种")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
                     if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getSigndate().before(ticket.getStartdate()))
+                        throw new TicketException("签发时间不可晚于计划开始工作时间");
                     break;
                 case "值班负责人":
-                    ticket.setShiftforemannum(laborNum);
+                case "集控中心":
                     if (!laborName.equals(ticket.getShiftforeman()))
                         throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
                     break;
                 case "许可人":
-                    ticket.setFiatusernum(laborNum);
                     if (!laborName.equals(ticket.getFiatuser()))
                         throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    if (!ticket.getFiatdate().after(ticket.getSigndate()))
+                        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;
@@ -741,27 +821,26 @@ public class TicketUtil {
         } else if (ticket.getWtickettype().equals("电气二种")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
                     if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getSigndate().before(ticket.getStartdate()))
+                        throw new TicketException("签发时间不可晚于计划开始工作时间");
                     break;
                 case "许可人":
-                    ticket.setFiatusernum(laborNum);
                     if (!laborName.equals(ticket.getFiatuser()))
                         throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    if (!ticket.getFiatdate().after(ticket.getSigndate()))
+                        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;
@@ -769,52 +848,46 @@ public class TicketUtil {
         } else if (ticket.getWtickettype().equals("风场动火")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
                     if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getSigndate().before(ticket.getApplyfirestarttime()))
+                        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("当前选择运行许可人和任务分配运行许可人不一致");
+                    if (!ticket.getFiatdate1().after(ticket.getSigndate()))
+                        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;
@@ -822,47 +895,42 @@ public class TicketUtil {
         } else if (ticket.getWtickettype().equals("二级动火")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
                     if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getSigndate().before(ticket.getApplyfirestarttime()))
+                        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("当前选择运行许可人和任务分配运行许可人不一致");
+                    if (!ticket.getFiatdate1().after(ticket.getSigndate()))
+                        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;
@@ -870,37 +938,35 @@ public class TicketUtil {
         } else if (ticket.getWtickettype().equals("线路一种")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
-                    if (!laborName.equals(ticket.getFiatuser7()))
+                    if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getSigndate().before(ticket.getStartdate()))
+                        throw new TicketException("签发时间不可晚于计划开始工作时间");
                     break;
                 case "值班负责人":
-                    ticket.setInceptman1num(laborNum);
+                case "集控中心":
                     if (!laborName.equals(ticket.getInceptman1()))
                         throw new TicketException("当前选择值班负责人和任务分配值班负责人不一致");
                     break;
                 case "许可人":
-                    ticket.setFiatuser1num(laborNum);
                     if (!laborName.equals(ticket.getFiatuser1()))
                         throw new TicketException("当前选择许可人和任务分配许可人不一致");
+                    if (!ticket.getFiatdate().after(ticket.getSigndate()))
+                        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;
@@ -908,32 +974,30 @@ public class TicketUtil {
         } else if (ticket.getWtickettype().equals("线路二种")){
             switch(title){
                 case "签发人":
-                    ticket.setSignatorynum(laborNum);
                     if (!laborName.equals(ticket.getSignatory()))
                         throw new TicketException("当前选择签发人和任务分配签发人不一致");
+                    if (!ticket.getSigndate().before(ticket.getStartdate()))
+                        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("当前选择许可人和任务分配许可人不一致");
+                    if (!ticket.getFiatdate().after(ticket.getSigndate()))
+                        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;
@@ -950,4 +1014,114 @@ public class TicketUtil {
     public static String absolutePath(){
         return System.getProperty("user.dir");
     }
+
+    /**
+     * 验证风险预控、执行人、恢复人.....等数据是否填写
+     * 验证是否上传图片,没有则抛异常
+     * @param ticket
+     */
+    public static void validateTicket(Workticket ticket, FjykService fjykService,
+                                      WosafemeasureService safeService, WosafetybaffleService safetybaffleService,
+                                      WosafetyService wosafetyService, WoearthlineService woearthlineService,
+                                      WosaferunService wosaferunService, WosaferepairService wosaferepairService,
+                                      WoticketimageService imageService){
+        String status = ticket.getStatus();
+        if (ticket.getWtickettype().equals("风场风机")){
+            switch (status){
+                case "请求许可":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser1());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+                case "待许可人结票":
+                    List<Wosafetybaffle> aqList = safetybaffleService.getListOfProtectMeasure(ticket.getWonum(), "WINDELECZSP");
+                    List<Wosafemeasure> yxList = safeService.getListSafeMeasure(ticket.getWonum(), "YXZXAQCS");
+                    List<Wosafemeasure> jxList = safeService.getListSafeMeasure(ticket.getWonum(), "JXZLAQCS");
+
+                    List<Wosafetybaffle> aqCollect = aqList.stream().filter(f -> StringUtils.isEmpty(f.getExecutor()) || StringUtil.isEmpty(f.getRestoreor())).collect(Collectors.toList());
+                    List<Wosafemeasure> yxCollect = yxList.stream().filter(f -> StringUtils.isEmpty(f.getExecutor()) || StringUtil.isEmpty(f.getRestoreor())).collect(Collectors.toList());
+                    List<Wosafemeasure> jxCollect = jxList.stream().filter(f -> StringUtils.isEmpty(f.getExecutor()) || StringUtil.isEmpty(f.getRestoreor())).collect(Collectors.toList());
+                    if (aqCollect.size() > 0 || yxCollect.size() > 0 || jxCollect.size() > 0)
+                        throw new TicketException("请填写执行人和恢复人");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("电气一种")){
+            switch (status){
+                case "请求许可":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser1());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+                case "待许可人结票":
+                    List<Wosafety> safeList = wosafetyService.getListSafeMeasure(ticket.getWonum());
+                    List<Woearthline> earthList = woearthlineService.getListSafeMeasure(ticket.getWonum());
+                    List<Wosafetybaffle> baffList = safetybaffleService.getListOfProtectMeasure(ticket.getWonum(), null);
+
+                    List<Wosafety> safeCollect = safeList.stream().filter(f -> StringUtils.isNotEmpty(f.getRemark1()) && StringUtils.isNull(f.getRemark2())).collect(Collectors.toList());
+                    List<Woearthline> earthCollect = earthList.stream().filter(f -> StringUtils.isNotEmpty(f.getRemark1()) && StringUtils.isNull(f.getRemark2())).collect(Collectors.toList());
+                    List<Wosafetybaffle> baffCollect = baffList.stream().filter(f -> StringUtils.isNotEmpty(f.getRemark1()) && StringUtils.isNull(f.getRemark2())).collect(Collectors.toList());
+                    if (safeCollect.size() > 0 || earthCollect.size() > 0 || baffCollect.size() > 0)
+                        throw new TicketException("请许可人填写和负责人相对应的安全措施再发送工作流");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("电气二种")){
+            switch (status){
+                case "请求许可":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("风场动火")){
+            switch (status){
+                case "请运行填写安全措施":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser8());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+                case "请工作负责人确认":
+//                    List<Wosaferun> safeList = wosaferunService.getListSafeMeasure(ticket.getWonum());
+//                    List<Wosaferepair> repairList = wosaferepairService.getListSafeMeasure(ticket.getWonum());
+//
+//                    List<Wosaferun> safeCollect = safeList.stream().filter(f -> f.getIsexecute().equals("否")).collect(Collectors.toList());
+//                    List<Wosaferepair> repairCollect = repairList.stream().filter(f -> f.getIsexecute().equals("否")).collect(Collectors.toList());
+//                    if (safeCollect.size() > 0 || repairCollect.size() > 0)
+//                        throw new TicketException("请检查是否执行完安全措施");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("二级动火")){
+            switch (status){
+                case "请运行填写安全措施":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser8());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+                case "请工作负责人确认":
+//                    List<Wosaferun> safeList = wosaferunService.getListSafeMeasure(ticket.getWonum());
+//                    List<Wosaferepair> repairList = wosaferepairService.getListSafeMeasure(ticket.getWonum());
+//
+//                    List<Wosaferun> safeCollect = safeList.stream().filter(f -> f.getIsexecute().equals("否")).collect(Collectors.toList());
+//                    List<Wosaferepair> repairCollect = repairList.stream().filter(f -> f.getIsexecute().equals("否")).collect(Collectors.toList());
+//                    if (safeCollect.size() > 0 || repairCollect.size() > 0)
+//                        throw new TicketException("请检查是否执行完安全措施");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("线路一种")){
+            switch (status){
+                case "请求许可":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser1());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+            }
+        } else if (ticket.getWtickettype().equals("线路二种")){
+            switch (status){
+                case "请求许可":
+                    List<Fjyk> list = fjykService.getListOfFXYK(ticket.getWonum(), ticket.getFiatuser1());
+                    if (list == null || list.size() == 0)
+                        throw new TicketException("请工作许可人先填写风险预控,再发送工作流");
+                    break;
+            }
+        }
+    }
 }

+ 1 - 1
src/main/resources/application-dev.yml

@@ -20,7 +20,7 @@ spring:
         driver-class-name: com.mysql.jdbc.Driver
       #两票数据源
       ticket:
-        url: jdbc:sqlserver://10.155.32.2:1433;DatabaseName=fdeam
+        url: jdbc:sqlserver://192.168.1.82:1433;DatabaseName=test
         username: sa
         password: Gyee@321#!
         driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

+ 11 - 5
src/main/resources/application.yml

@@ -6,12 +6,13 @@ gyee:
   version: 1.0
   #版权年份
   copyrightYear: 2018
-  #头像上传路径
-  profile: D:/profile/
+  #图片上传路径
+  profile-window: D:/profile/
+  profile-linux: /home/GYEE/sisphone/upload/
   #地址是否放入项目static目录,如果未Y 放入static。 profile配置失效
   isstatic: Y
   #开启存放静态文件夹后目录
-  isroot_dir: static/images_upload/
+  isroot_dir: static
   #邮件功能
   #邮箱发送smtp
   email_smtp: smtp.sina.com
@@ -27,8 +28,13 @@ gyee:
   rollVerification: true
   #实时数据库
   realTimeDataBase: golden
-  #app升级路径
-  appUpdateUrl: /root/Public/apk_ipa_download/webapps/ROOT/
+  # -------- app升级路径 --------
+  #本地测试
+  appUpdateUrl-window: D:\android\UniPlugin-Hello-AS\UniPlugin-Hello-AS\app\build\outputs\apk\debug\sisphone.apk
+  #正式服务器app自动升级路径
+  appUpdateUrl-linux: /home/GYEE/sisphone/apk_download/sisphone.apk
+  #外网第一次下载路径:http://123.60.213.70:8619/appserver/nxxny_app.apk
+  # -------- app升级路径 --------
   #智能营销接口
   powerDirectUrl: http://10.155.32.7:8085
 

+ 4 - 0
src/main/resources/mybatis/ticket/WorkticketMapper.xml

@@ -190,6 +190,10 @@
         <result column="FIATUSER7NUM" property="fiatuser7num" />
         <result column="PRINCIPAL6NUM" property="principal6num" />
         <result column="SAFEPRINCIPAL1NUM" property="safeprincipal1num" />
+        <result column="WORKORDER" property="workorder" />
+        <result column="APPROVALSTARTTIME" property="approvalstarttime" />
+        <result column="APPROVALENDTIME" property="approvalendtime" />
+        <result column="APPROVALPERSON" property="approvalperson" />
     </resultMap>
 
     <!-- 通用查询结果列 -->

+ 26 - 0
src/main/resources/mybatis/ticket/WoticketimageMapper.xml

@@ -0,0 +1,26 @@
+<?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.gyee.frame.mapper.ticket.WoticketimageMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.gyee.frame.model.ticket.Woticketimage">
+        <id column="ID" property="id" />
+        <result column="WONUM" property="wonum" />
+        <result column="SNO" property="sno" />
+        <result column="TYPE" property="type" />
+        <result column="SIZE" property="size" />
+        <result column="WIDTH" property="width" />
+        <result column="HEIGHT" property="height" />
+        <result column="PATH" property="path" />
+        <result column="THUMBPATH" property="thumbpath" />
+        <result column="LABORNUM" property="labornum" />
+        <result column="TIME" property="time" />
+        <result column="REMARK" property="remark" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        ID, WONUM, SNO, TYPE, SIZE, WIDTH, HEIGHT, PATH, THUMBPATH, LABORNUM, TIME, REMARK
+    </sql>
+
+</mapper>

+ 2 - 4
src/test/java/test/MongoDBTest.java

@@ -39,17 +39,15 @@ public class MongoDBTest {
         Date endTime = sdf.parse(sdf.format(nowTime));
         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
         Date beginTime = sdf1.parse(sdf1.format(nowTime));
-//查看历史快照数据
+        //查看历史快照数据
         List<PointData> ls = mongodb.getHistoryDatasSnap("HB_GD_KBF_JS_P4_L19_220_CI0136",
                 beginTime.getTime() / 1000, endTime.getTime() / 1000,
                 (long) 999, 3600L);
         if (!ls.isEmpty()) {
             ls.forEach(obj -> System.out.println(obj.getEdnaId() + "___" +obj.getPointTime() + "___" + obj.getPointValueInDouble()));
         }
-//查看实时数据
+        //查看实时数据
         PointData real=mongodb.getRealData("HB_GD_KBF_JS_P4_L19_220_CI0136");
         //System.out.println(real.getPointValueInDouble());
     }
-
-
 }