hfxc226 3 years ago
parent
commit
ead09a2ab4

+ 4 - 4
platform-activiti/src/main/java/com/platform/activiti/dao/entity/ActApplyInfo.java

@@ -20,7 +20,7 @@ public class ActApplyInfo implements Serializable {
      */
     private String targetId;
     /**
-     * 目标名称:设备名称,为了展示方便的
+     * 目标名称:任务名称,每个审批单自己定义的。最好是固定的类型
      */
     private String targetName;
 
@@ -39,12 +39,12 @@ public class ActApplyInfo implements Serializable {
     private String processInstanceId;
 
     /**
-     * 用户ID:发起用户
+     * 用户ID:审批操作人
      */
     private String userId;
 
     /**
-     * 姓名:发起用户姓名
+     * 姓名:审批操作人姓名
      */
     private String userName;
 
@@ -54,7 +54,7 @@ public class ActApplyInfo implements Serializable {
     private Boolean self = false;
 
     /**
-     * 任务Id:根据没给task都可以设置这个map。目的是
+     * 当前关联任务Id:
      */
     private String taskId;
 

+ 14 - 0
platform-activiti/src/main/java/com/platform/activiti/dao/entity/ActAuditRecord.java

@@ -35,6 +35,8 @@ public class ActAuditRecord implements Serializable {
     private Boolean flag;
 
     private Integer node;
+
+    private String taskName;
     /**
      * 流程id
      */
@@ -49,6 +51,7 @@ public class ActAuditRecord implements Serializable {
         this.taskId = taskId;
     }
 
+
     public ActAuditRecord(String userId, String userName, String opinion, LocalDateTime createTime, Boolean flag, String taskId, Integer node) {
         this.userId = userId;
         this.userName = userName;
@@ -58,4 +61,15 @@ public class ActAuditRecord implements Serializable {
         this.taskId = taskId;
         this.node = node;
     }
+
+
+    public ActAuditRecord(String userId, String userName, String opinion, LocalDateTime createTime, Boolean flag, String taskId, String taskName) {
+        this.userId = userId;
+        this.userName = userName;
+        this.opinion = opinion;
+        this.createTime = createTime;
+        this.flag = flag;
+        this.taskId = taskId;
+        this.taskName = taskName;
+    }
 }

+ 8 - 8
platform-activiti/src/main/java/com/platform/activiti/enums/ActApplyEnum.java

@@ -15,16 +15,16 @@ public enum ActApplyEnum {
     /**
      * 项目
      */
-    PURCHASE_DEMAND_PLAN("purchase_demand_plan"),
-    PURCHASE_DEMAND_PLAN_ADD("purchase_demand_plan_add"),
-    PURCHASE_PLAN("purchase_plan"),
-    SUPPLIER("supplier"),
-    PURCHASE_APPLY("purchase_apply"),
-    PURCHASE_APPLY_SPECIAL("purchase_apply_special"),
-    SB_INFO_SCRAP("sb_info_scrap"),
-    SB_INFO_SCRAP_TEST("设备报废审批");
+    PURCHASE_DEMAND_PLAN("purchase_demand_plan", "设备报废审批"),
+    PURCHASE_DEMAND_PLAN_ADD("purchase_demand_plan_add", "设备报废审批"),
+    PURCHASE_PLAN("purchase_plan", "设备报废审批"),
+    SUPPLIER("supplier", "设备报废审批"),
+    PURCHASE_APPLY("purchase_apply", "设备报废审批"),
+    PURCHASE_APPLY_SPECIAL("purchase_apply_special", "设备报废审批"),
+    SB_INFO_SCRAP("sb_info_scrap", "设备报废审批");
     /**
      * 类型
      */
+    private final String key;
     private final String name;
 }

+ 7 - 5
platform-dao/src/main/java/com/platform/dao/entity/design/DesignForm.java

@@ -7,8 +7,10 @@ import javax.persistence.Table;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.time.LocalDate;
+
 import lombok.experimental.Accessors;
 import com.platform.common.bean.DataScope;
+
 import javax.persistence.Transient;
 
 /**
@@ -20,12 +22,12 @@ import javax.persistence.Transient;
 @Data
 @Accessors(chain = true)
 @Table(name = "t_design_form")
-public class DesignForm implements Serializable{
+public class DesignForm implements Serializable {
 
     /**
      * id
      */
-        @Id
+    @Id
     private String id;
     /**
      * 表单代号
@@ -60,9 +62,9 @@ public class DesignForm implements Serializable{
      */
     private LocalDateTime updateTime;
 
-   /**
-    * 数据权限
-    */
+    /**
+     * 数据权限
+     */
     @Transient
     private DataScope dataScope;
 

+ 11 - 128
platform-rest/src/main/java/com/platform/rest/controller/activiti/SbInfoActivitiController.java

@@ -28,11 +28,13 @@ import com.platform.dao.vo.sb.SbInfoWorkplaceVO;
 import com.platform.office.poi.excel.ExcelImportUtil;
 import com.platform.office.poi.excel.entity.ImportParams;
 import com.platform.rest.log.annotation.SysLog;
+import com.platform.service.business.SbInfoActivitiBusinessService;
 import com.platform.service.sb.SbInfoService;
 import com.platform.service.upms.SysUserService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.activiti.engine.HistoryService;
+import org.activiti.engine.IdentityService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.history.HistoricProcessInstance;
@@ -64,10 +66,7 @@ import java.util.*;
 public class SbInfoActivitiController {
 
     private final SbInfoService sbInfoService;
-    private final RuntimeService runtimeService;
-    private final HistoryService historyService;
-    private final TaskService taskService;
-    private final SysUserService sysUserService;
+    private final SbInfoActivitiBusinessService sbInfoActivitiBusinessService;
 
     /**
      * 启动:将设备id和表单id设置到businessKey中
@@ -77,22 +76,7 @@ public class SbInfoActivitiController {
     @SysLog("设备报废提交审批")
     @PutMapping("/start")
     public R start(@RequestBody SbInfoDTO sbInfoDTO) {
-        ActApplyInfo applyInfo = new ActApplyInfo(sbInfoDTO.getId(),
-                sbInfoDTO.getName() + "-" + sbInfoDTO.getNo(), ActApplyEnum.SB_INFO_SCRAP_TEST.getName(),
-                0,
-                LocalDateTime.now());
-        Map<String, Object> map = new HashMap<>(1);
-        UserInfo user = SecurityUtils.getUserInfo();
-        applyInfo.setUserId(user.getUserId());
-        applyInfo.setUserName(user.getRealName());
-        map.put("data", applyInfo);
-        map.put("userId", applyInfo.getUserId());
-        ProcessInstance instance = runtimeService.startProcessInstanceByKey(ActApplyEnum.SB_INFO_SCRAP_TEST.getName(), map);
-        if (instance == null) {
-            throw new BusinessException(ResultCode.ACTIVITI_PROCESS_NOT_EXIST.getDescription());
-        }
-        log.info("流程实例ID:" + instance.getId());
-        log.info("流程定义ID:" + instance.getProcessDefinitionId());
+        ProcessInstance instance = sbInfoActivitiBusinessService.start(sbInfoDTO);
         SbInfo sbInfo = new SbInfo();
         sbInfo.setStatus(SbInfoStatusEnum.IN_SCRAP.getValue());
         sbInfo.setId(sbInfoDTO.getId());
@@ -110,47 +94,16 @@ public class SbInfoActivitiController {
     @SysLog("设备报废审核")
     @PutMapping("/audit")
     public R audit(@RequestBody SbInfoDTO sbInfoDTO) {
-        UserInfo user = SecurityUtils.getUserInfo();
-        String taskId = sbInfoDTO.getTaskId();
-        Map<String, Object> map = new HashMap<>();
-        Integer result = 0;
-        if (sbInfoDTO.getAuditFlag()) {
-            result = 1;// 同意
-        } else {
-            result = 0;// 拒绝
-        }
-        map.put("result", result);
-        taskService.addComment(taskId, sbInfoDTO.getProcessInstanceId(), sbInfoDTO.getRefuseReason());
-        taskService.complete(taskId, map);
-        if(checkFinish(sbInfoDTO.getProcessInstanceId())){
+        boolean flag = sbInfoActivitiBusinessService.audit(sbInfoDTO);
+        if(sbInfoActivitiBusinessService.checkFinish(sbInfoDTO.getProcessInstanceId())){
             SbInfo sbInfo = new SbInfo();
-            sbInfo.setStatus(SbInfoStatusEnum.SCRAPED.getValue());
+            sbInfo.setStatus(flag?SbInfoStatusEnum.SCRAPED.getValue():SbInfoStatusEnum.REFUSE_SCRAPED.getValue());
             sbInfo.setId(sbInfoDTO.getId());
             sbInfoService.updateByPrimaryKeySelective(sbInfo);
         }
         return new R<>();
     }
 
-    /**
-     * 判定流程是否结束
-     * @param processInstanceId
-     * @return
-     */
-    private boolean checkFinish(String processInstanceId) {
-        HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
-        if (Objects.isNull(historicProcessInstance)) {
-            log.info("完成1");
-            return true;
-        }
-        if (Objects.isNull(historicProcessInstance.getEndTime())) {
-            log.info("未完成");
-            return false;
-        } else {
-            log.info("完成2");
-            return true;
-        }
-    }
-
     /**
      * 审核
      *
@@ -160,21 +113,12 @@ public class SbInfoActivitiController {
     @SysLog("设备报废终止审核")
     @PutMapping("/stop")
     public R stop(@RequestBody SbInfoDTO sbInfoDTO) {
-        String processInstanceId = sbInfoDTO.getProcessInstanceId();
-        if (StringUtils.isNotEmpty(processInstanceId)) {
-            runtimeService.deleteProcessInstance(processInstanceId, "");
-            historyService.deleteHistoricProcessInstance(processInstanceId);
-        }
-        SbInfo sbInfo = new SbInfo();
-        sbInfo.setId(sbInfoDTO.getId());
-        sbInfo.setProcessInstanceId(null);
-        sbInfo.setStatus(SbInfoStatusEnum.IN_STORE.getValue());
-        sbInfoService.updateByPrimaryKeySelective(sbInfo);
+        sbInfoActivitiBusinessService.stop(sbInfoDTO);
         return new R<>();
     }
 
     /**
-     * 审核
+     * 转签
      *
      * @param sbInfoDTO
      * @return R
@@ -182,19 +126,7 @@ public class SbInfoActivitiController {
     @SysLog("设备报废转签")
     @PutMapping("/assign")
     public R assign(@RequestBody SbInfoDTO sbInfoDTO) {
-        String taskId = sbInfoDTO.getTaskId();
-        String userId = sbInfoDTO.getChangeUser();
-        if (StringUtils.isEmpty(taskId)) {
-            throw new BusinessException("taskId为空,请选择");
-        }
-        if (StringUtils.isEmpty(userId)) {
-            throw new BusinessException("请设置转签人员");
-        }
-        SysUser sysUser = sysUserService.getModelById(userId);
-        if(sysUser == null){
-            throw new BusinessException("用户不存在,请选择其他人员");
-        }
-        taskService.setAssignee(taskId, userId);
+        sbInfoActivitiBusinessService.assign(sbInfoDTO);
         return new R<>();
     }
 
@@ -207,56 +139,7 @@ public class SbInfoActivitiController {
     @SysLog("设备报废审核历史")
     @GetMapping("/history/{processInstanceId}")
     public R history(@PathVariable("processInstanceId") String processInstanceId) {
-        //获取历史祥情
-        List<HistoricTaskInstance> taskList = historyService.createHistoricTaskInstanceQuery()
-                .processInstanceId(processInstanceId)
-                .includeTaskLocalVariables()
-                .orderByHistoricTaskInstanceEndTime().desc()
-                .list();
-        List<Comment> commentList = taskService.getProcessInstanceComments(processInstanceId);
-        List<ActivitiTaskDetail> tasks = new ArrayList<>();
-        if (taskList != null && taskList.size() > 0) {
-            for (HistoricTaskInstance task : taskList) {
-                ActivitiTaskDetail detail = new ActivitiTaskDetail();
-                if (task.getStartTime() != null) {
-                    detail.setStartTime(DateUtils.dateToLocalDateTime(task.getStartTime()));
-                }
-                if (task.getEndTime() != null) {
-                    detail.setEndTime(DateUtils.dateToLocalDateTime(task.getEndTime()));
-                }
-                detail.setAssignee(task.getAssignee());
-                if (StringUtils.isBlank(task.getAssignee())) {
-                    detail.setUserName("等待签收");
-                } else {
-                    SysUser sysUser = sysUserService.getModelById(task.getAssignee());
-                    if (sysUser == null) {
-                        detail.setUserName("用户已删除");
-                    } else {
-                        detail.setUserName(sysUser.getRealName());
-                    }
-                }
-                detail.setName(task.getName());
-                detail.setNodeKey(task.getTaskDefinitionKey());
-                Map<String, Object> map = task.getProcessVariables();
-                if (map != null && map.size() > 0) {
-                    for (String key : map.keySet()) {
-                        if (key.equals("result")) {
-                            detail.setResult(map.get(key).toString());
-                        }
-                    }
-                }
-                if (commentList != null && commentList.size() > 0) {
-                    for (Comment comment : commentList) {
-                        if (comment.getTaskId().equals(task.getId())) {
-                            detail.setApproveComment(comment.getFullMessage());
-                            break;
-                        }
-                    }
-                }
-                tasks.add(detail);
-            }
-        }
-        return new R(tasks);
+        return new R(sbInfoActivitiBusinessService.history(processInstanceId));
     }
 
 }

+ 13 - 1
platform-rest/src/main/java/com/platform/rest/controller/design/DesignFormController.java

@@ -70,7 +70,19 @@ public class DesignFormController {
       return new R<>();
   }
 
-
+  /**
+   * 修改记录
+   *
+   * @param designFormDTO 表单设计DTO
+   * @return R
+   */
+  @SysLog("修改表单设计")
+  @PutMapping("/design/{id}")
+  @PreAuthorize("@pms.hasPermission('design-design-forms-edit')")
+  public R updateDesign(@PathVariable("id") String id, @Validated({UpdateGroup.class}) @RequestBody DesignFormDTO designFormDTO) {
+    designFormService.modDesignDataByDTO(designFormDTO);
+    return new R<>();
+  }
                                                         
   /**
    * 通过id删除一条记录

+ 0 - 1
platform-service/src/main/java/com/platform/service/business/ActivitiBusinessService.java

@@ -199,7 +199,6 @@ public class ActivitiBusinessService {
         map.put(CommonConstants.ACT_AUDIT_RECORD, records);
         taskService.complete(taskId, map);
         if (result > 1) {
-
             String userId = getLeadDeptAuditUserId(projectId, rank, roleCode).getUserId();
             log.info(String.format("userId:%s  projectId:%s rank:%s roleCode:%s ", userId, projectId, rank, roleCode));
             Task task = taskService.createTaskQuery().processInstanceId(processId).orderByTaskCreateTime().desc().singleResult();

+ 2 - 0
platform-service/src/main/java/com/platform/service/design/DesignFormService.java

@@ -23,6 +23,8 @@ public interface DesignFormService extends IBaseService<DesignForm, DesignFormDT
     */
     int batchDelete(List<String> ids);
 
+    void modDesignDataByDTO(DesignFormDTO model);
+
     /**
      * 分页查询
      * @param record

+ 33 - 0
platform-service/src/main/java/com/platform/service/design/impl/DesignFormServiceImpl.java

@@ -7,6 +7,7 @@ import com.platform.dao.dto.design.DesignFormDTO;
 import com.platform.dao.entity.design.DesignForm;
 import com.platform.dao.mapper.design.DesignFormMapper;
 import com.platform.service.design.DesignFormService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 import com.platform.service.base.impl.BaseServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
@@ -14,7 +15,11 @@ import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 import lombok.AllArgsConstructor;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @Description 表单设计 service 实现类
@@ -35,6 +40,34 @@ public class DesignFormServiceImpl extends BaseServiceImpl<DesignFormMapper, Des
         return 1;
     }
 
+    /**
+     *
+     * @param model
+     */
+    @Override
+    public void modDesignDataByDTO(DesignFormDTO model) {
+        DesignForm designForm = new DesignForm();
+        designForm.setId(model.getId());
+        designForm.setDesignData(model.getDesignData());
+        designForm.setJsCode(splitJscode(model.getDesignData()));
+        mapper.updateByPrimaryKeySelective(designForm);
+    }
+
+    private String splitJscode (String designJson) {
+        if(StringUtils.isBlank(designJson)){
+            return null;
+        }
+        // 定义规则
+        String pattern = "(\"dynamicKey\":\")([^\"]+)(\")";
+        //Pattern.compile函数
+        Set sets = new HashSet<String>();
+        Matcher matcher = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE).matcher(designJson);
+        while (matcher.find()) { //表示往下遍历
+            sets.add(matcher.group(2));
+        }
+        return String.join(",", sets);
+    }
+
     @Override
     public AbstractPageResultBean<DesignFormVO> selectPageList(DesignFormDTO record, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);