Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
liuyc 1 an în urmă
părinte
comite
485a24071f

+ 58 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/UserHistory.java

@@ -0,0 +1,58 @@
+package org.springblade.manager.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/10/26 9:57
+ **/
+@Data
+@TableName("m_user_history")
+@ApiModel(value = "协议附件信息表", description = "协议附件信息表")
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserHistory implements Serializable {
+
+    private static final long serialVersionUID = 345634634L;
+
+    @ApiModelProperty("主键id")
+    @TableId(
+            value = "id",
+            type = IdType.ASSIGN_ID
+    )
+    private Long id;
+
+    /**
+     * 最后编辑所在合同段
+     */
+    @ApiModelProperty(value = "最后编辑所在合同段")
+    private Long userId;
+
+    /**
+     * 最后编辑所在合同段
+     */
+    @ApiModelProperty(value = "最后编辑所在合同段")
+    private Long projectId;
+
+    /**
+     * 最后编辑所在合同段
+     */
+    @ApiModelProperty(value = "最后编辑所在合同段")
+    private Long contractId;
+
+    /**
+     * 最后编辑所在合同段
+     */
+    @ApiModelProperty(value = "最后编辑所在根节点")
+    private String endNode;
+}

+ 3 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskBatchMapper.xml

@@ -26,7 +26,9 @@
     </delete>
 
     <select id="queryDataInfo" resultMap="taskBatchResultMap">
-        SELECT max(id) as id,task_parallel_id,json_data,create_user,create_dept,create_time,nick_name,is_deleted from u_task_batch  WHERE is_deleted =0 GROUP BY JSON_EXTRACT(json_data,'$.formDataId')  LIMIT 100
+        SELECT * from u_task_batch
+                 where id IN (SELECT max(id) from u_task_batch  WHERE is_deleted =0 GROUP BY JSON_EXTRACT(json_data,'$.formDataId')
+        ) LIMIT 100
     </select>
 
 </mapper>

+ 34 - 35
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -214,7 +214,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         if (query != null) {
             // 添加项目Id
             ProjectInfo projectInfo = this.projectClient.getById(query.getProjectId() + "");
-            vo.setRemarkType(projectInfo.getRemarkType() + "");
+            vo.setRemarkType(projectInfo.getRemarkType()+"");
 
             if (new Integer("3").equals(query.getType())) {
                 //首件,首件的资料由三个部分组成:封面、关联资料、总结报告
@@ -556,13 +556,17 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         List<TaskBatch> taskList = new ArrayList<>();
         for (TaskApprovalVO taskApprovalVO : taskApprovalVOS) {
             //重签时,需要对应任务的签字人
-            if (ObjectUtil.isNotEmpty(taskApprovalVO.getYsNickName())) {
+            if (ObjectUtil.isNotEmpty(taskApprovalVO.getYsNickName())){
                 nickName = taskApprovalVO.getYsNickName();
             }
 
             //保存批次
             TaskBatch taskBatch = new TaskBatch(null, JSONObject.toJSONString(taskApprovalVO));
-            taskBatch.setCreateUser(taskApprovalVO.getUserId());
+            if(taskApprovalVO.getUserId()==null || StringUtils.isEmpty(taskApprovalVO.getUserId()+"")){
+                taskBatch.setCreateUser(userId);
+            }else{
+                taskBatch.setCreateUser(taskApprovalVO.getUserId());
+            }
             taskBatch.setNickName(nickName);
             taskBatch.setCreateTime(new Date());
             taskList.add(taskBatch);
@@ -575,13 +579,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     public void SignInfo() {
         //执行代码
         logger.debug("扫描开始");
-
-        //  List<TaskBatch> maps = taskBatchService.getBaseMapper().selectList(Wrappers.<TaskBatch>lambdaQuery().eq(TaskBatch::getIsDeleted, 0)).stream().limit(50).collect(Collectors.toList());
-
         List<TaskBatch> maps = taskBatchService.queryDataInfo();
-
-
-        if (maps != null && maps.size() >= 1 && executor.getQueue().size() <= 0) {
+        if (maps != null && maps.size() >= 1 ) {
             for (TaskBatch dataInfo : maps) {
                 String jsonData = dataInfo.getJsonData();
                 TaskApprovalVO taskApprovalVO = JSON.parseObject(jsonData, TaskApprovalVO.class);
@@ -590,7 +589,13 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 String nickName = dataInfo.getNickName();
 
                 Boolean istrue = true;
+                try {
+                    Thread.sleep(200);
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
                 Boolean aBoolean = RedisTemplate.hasKey("sign-" + taskApprovalVO.getFormDataId());
+                System.out.println(aBoolean);
                 if (aBoolean) {
                     istrue = false;
                 }
@@ -600,34 +605,33 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                         break;
                     }
                     CompletableFuture<Void> runAsync = CompletableFuture.runAsync(() -> {
-                        try {
-                            this.checkIsExsitTaskBatch(taskApprovalVO, taskBatchId, userId, nickName);
-                        } catch (FileNotFoundException e) {
+                       try {
+                           this.checkIsExsitTaskBatch(taskApprovalVO, taskBatchId, userId, nickName);
+                       }catch (FileNotFoundException e) {
                             e.printStackTrace();
                         }
                     }, executor);
                     runAsync.join();
                 }
             }
+            System.out.println("队列数量" + executor.getQueue().size());
+            System.out.println("活跃数量" + executor.getActiveCount());
+            System.out.println("总共数量" + executor.getTaskCount());
+            System.out.println("完成数量" + executor.getCompletedTaskCount());
         }
     }
 
     private void checkIsExsitTaskBatch(TaskApprovalVO taskApprovalVO, String batchId, Long userId, String nickName) throws FileNotFoundException {
         logger.info("【任务审核】当前批次开始电签。批次ID:" + batchId);
-        //执行电签
-        System.out.println("队列数量" + executor.getQueue().size());
-        System.out.println("活跃数量" + executor.getActiveCount());
-        System.out.println("总共数量" + executor.getTaskCount());
-        System.out.println("完成数量" + executor.getCompletedTaskCount());
         taskApprovalVO.setId(batchId);
         taskApprovalVO.setUserId(userId);
         taskApprovalVO.setNickName(nickName);
-        RedisTemplate.opsForValue().set("sign-" + taskApprovalVO.getFormDataId(), "1", 60, TimeUnit.SECONDS);
+        RedisTemplate.opsForValue().set("sign-" + taskApprovalVO.getFormDataId(), "1", 125, TimeUnit.SECONDS);
 
         String pdfUrlEVisa = this.completeApprovalTask(taskApprovalVO);
 
 
-        System.out.println("电签操作成功buss-----" + pdfUrlEVisa + "---batchId=" + batchId);
+        System.out.println("电签操作成功buss-----" + pdfUrlEVisa+"---batchId="+batchId);
         //TODO ============== 电签成功,修改试验状态,关联工程部位信息pdf(只有电签成功,才修改) liuYc 2023-03-16 ==============
         if ("OK".equals(taskApprovalVO.getFlag()) && StringUtils.isNotEmpty(pdfUrlEVisa)) {
             //已审批
@@ -712,15 +716,15 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                     //todo ===================== 执行合同章
 
                     //根据主表的业务ID(processInstanceId)获取主流程的taskId
-                    //   String masterTaskId = this.newFlowClient.queryTaskIdByProcessInstanceId(masterTask.getProcessInstanceId());
-                    // if (StringUtils.isNotEmpty(masterTaskId)) {
-                    //完成流程
-                    //  this.newFlowClient.completeApprovalTask(taskId, masterTask.getProcessInstanceId(), "审批完成");
-                    //修改主流程状态为已完成
-                    this.update(Wrappers.<Task>lambdaUpdate().set(Task::getStatus, 2).set(Task::getUpdateTime, new Date()).eq(Task::getId, masterTask.getId()));
-                    //修改对应的业务数据状态为已审批
-                    this.updateBusinessDataByFormDataId(masterTask, 2, finalPdfUrl, taskApprovalVO.getUserId());
-                    //  }
+                 //   String masterTaskId = this.newFlowClient.queryTaskIdByProcessInstanceId(masterTask.getProcessInstanceId());
+                   // if (StringUtils.isNotEmpty(masterTaskId)) {
+                        //完成流程
+                      //  this.newFlowClient.completeApprovalTask(taskId, masterTask.getProcessInstanceId(), "审批完成");
+                        //修改主流程状态为已完成
+                        this.update(Wrappers.<Task>lambdaUpdate().set(Task::getStatus, 2).set(Task::getUpdateTime, new Date()).eq(Task::getId, masterTask.getId()));
+                        //修改对应的业务数据状态为已审批
+                        this.updateBusinessDataByFormDataId(masterTask, 2, finalPdfUrl, taskApprovalVO.getUserId());
+                  //  }
                     //返回电签成功的pdf路径,给试验用
                     return finalPdfUrl;
                 } else {
@@ -1088,7 +1092,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
             for (String iId : list) {
                 //获取
                 InformationQuery queryinfo = informationQueryService.getById(iId);
-                if (StringUtils.isNotBlank(queryinfo.getFileUserIdAndName())) {
+                if (StringUtils.isNotBlank(queryinfo.getFileUserIdAndName())){
                     String userIdAndName = queryinfo.getFileUserIdAndName();
                     String[] split = userIdAndName.split("-");
                     userId = Long.parseLong(split[0]);
@@ -1132,13 +1136,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                         .set(InformationQuery::getBusinessTime, dateInfo)
                         .in(InformationQuery::getId, Arrays.asList(formDataId.split(","))));
 
-                //如果废除后,那么删除当前合同段缓存
-                if (status == 3) {
-                    informationQueryService.delAsyncWbsTree(queryinfo.getContractId().toString());
-                }
-
                 //修改试验业务状态
-                if (new Integer(2).equals(queryinfo.getType()) && ObjectUtil.isNotEmpty(queryinfo.getWbsId()) && status != 3) {
+                if (new Integer(2).equals(queryinfo.getType()) && ObjectUtil.isNotEmpty(queryinfo.getWbsId())) {
                     jdbcTemplate.execute("update u_trial_self_inspection_record set task_status = '已审批' where id = " + queryinfo.getWbsId());
                 }
 

+ 58 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/UserHistoryController.java

@@ -0,0 +1,58 @@
+package org.springblade.manager.controller;
+
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.UserHistory;
+import org.springblade.manager.service.IUserHistoryService;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/userHistory")
+@Api(value = "用户填报历史接口", tags = "用户填报历史接口")
+public class UserHistoryController {
+
+    private final IUserHistoryService historyService;
+
+    /**
+     * 查询当前用户填报历史
+     */
+    @GetMapping("/getUserHistory")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "查询当前用户在当前合同段填报历史", notes = "传入项目和合同段")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+            @ApiImplicitParam(name = "contractId", value = "合同段id", required = true)
+    })
+    public R<UserHistory> getUserHistory(Long projectId,Long contractId) {
+        UserHistory userHistory = historyService.getUserHistory(projectId, contractId);
+        return R.data(userHistory);
+    }
+
+    /**
+     * 保存用户填报历史
+     */
+    @PostMapping("/saveUserHistory")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "保存用户填报历史", notes = "传入项目和合同段和节点标识")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+            @ApiImplicitParam(name = "contractId", value = "合同段id", required = true),
+            @ApiImplicitParam(name = "endNode", value = "最后编辑所在根节点", required = true)
+    })
+    public R<UserHistory> saveUserHistory(@RequestBody UserHistory userHistory) {
+        historyService.saveUserHistory(userHistory);
+        return R.success("保存成功");
+    }
+
+
+
+}

+ 32 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/UserHistoryMapper.java

@@ -0,0 +1,32 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.manager.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.manager.entity.UserHistory;
+
+
+/**
+ *  Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-02-17
+ */
+public interface UserHistoryMapper extends BaseMapper<UserHistory> {
+
+
+}

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/UserHistoryMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.springblade.manager.mapper.UserHistoryMapper">
+
+</mapper>

+ 38 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IUserHistoryService.java

@@ -0,0 +1,38 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.manager.service;
+
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.manager.entity.UserHistory;
+
+
+
+/**
+ *  服务类
+ *
+ * @author BladeX
+ * @since 2023-02-17
+ */
+public interface IUserHistoryService extends IService<UserHistory> {
+
+
+    UserHistory getUserHistory(Long projectId, Long contractId);
+
+    void saveUserHistory(UserHistory userHistory);
+}

+ 61 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/UserHistoryServiceImpl.java

@@ -0,0 +1,61 @@
+package org.springblade.manager.service.impl;
+
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.manager.entity.UserHistory;
+import org.springblade.manager.mapper.UserHistoryMapper;
+import org.springblade.manager.service.IUserHistoryService;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@AllArgsConstructor
+public class UserHistoryServiceImpl extends ServiceImpl<UserHistoryMapper, UserHistory> implements IUserHistoryService {
+
+
+
+    /**
+     * 查询当前用户填报历史
+     */
+    @Override
+    public UserHistory getUserHistory(Long projectId, Long contractId) {
+        //获取当前用户
+        Long userId = AuthUtil.getUserId();
+        UserHistory history = this.getOne(new LambdaQueryWrapper<UserHistory>()
+                .eq(UserHistory::getUserId, userId)
+                .eq(UserHistory::getProjectId, projectId)
+                .eq(UserHistory::getContractId, contractId));
+        if (history == null){
+            throw new ServiceException("未查询到当前合同段的填报历史,请先填写表单");
+        }
+        return history;
+    }
+
+    /**
+     * 保存用户填报历史
+     */
+    @Override
+    public void saveUserHistory(UserHistory userHistory) {
+        //先查看用户在当前合同段下是否有填报历史
+        //获取当前用户
+        Long userId = AuthUtil.getUserId();
+        UserHistory history = this.getOne(new LambdaQueryWrapper<UserHistory>()
+                .eq(UserHistory::getUserId, userId)
+                .eq(UserHistory::getProjectId, userHistory.getProjectId())
+                .eq(UserHistory::getContractId, userHistory.getContractId()));
+        if (history == null){
+            //没有则新增
+            userHistory.setUserId(userId);
+            this.save(userHistory);
+        }else {
+            //如果有就更新
+            history.setEndNode(userHistory.getEndNode());
+            this.updateById(history);
+        }
+    }
+}