From 43cdb970b1db2b5e086b4dd8695e107fbdaa14db Mon Sep 17 00:00:00 2001
From: "459816669@qq.com" <459816669@qq.com>
Date: Sat, 27 Mar 2021 15:05:05 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0form=E8=A1=A8=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
snow-admin/pom.xml | 3 +-
.../controller/common/CommonController.java | 3 +-
.../dingtalk/CallBackController.java | 4 +
.../dingtalk/DingTaskController.java | 198 +++++++++
.../dingtalk/OfficialFlowController.java | 156 ++++++-
.../system/SysProfileController.java | 2 +-
snow-admin/src/main/resources/banner.txt | 34 +-
.../main/resources/templates/big_screen.html | 17 +-
.../templates/ding/flow/myStartProcess.html | 120 +++++
.../ding/flow/myStartProcessDetail.html | 156 +++++++
.../templates/ding/flow/templateManage.html | 38 +-
.../resources/templates/ding/task/add.html | 126 ++++++
.../ding/{flow => task}/checkDetail.html | 55 ++-
.../resources/templates/ding/task/edit.html | 127 ++++++
.../templates/ding/task/myTasked.html | 115 +++++
.../templates/ding/task/myTaskedDetail.html | 105 +++++
.../resources/templates/ding/task/task.html | 138 ++++++
snow-common/pom.xml | 2 +-
.../com/snow/common/constant/Constants.java | 26 ++
.../common/enums/DingFlowOperationType.java | 50 +++
.../snow/common/enums/DingFlowTaskType.java | 54 +++
.../common/enums/DingTalkListenerType.java | 6 +-
.../snow/common/enums/FormComponentType.java | 64 +++
.../FileNameLengthLimitExceededException.java | 2 +-
.../java/com/snow/common/utils/DateUtils.java | 2 +
.../common/utils/file/FileUploadUtils.java | 84 ++--
.../snow/common/utils/file/MimeTypeUtils.java | 6 +-
snow-dingtalk/pom.xml | 3 +-
.../snow/dingtalk/common/BaseConstantUrl.java | 7 +
.../dingtalk/model/DingFinishTaskRequest.java | 62 +++
.../dingtalk/model/DingOperationRecordVO.java | 67 +++
.../com/snow/dingtalk/model/DingTaskVO.java | 67 +++
.../snow/dingtalk/model/SaveFlowRequest.java | 108 +++++
.../snow/dingtalk/model/StartFlowRequest.java | 51 +++
.../service/DingOfficialFlowService.java | 23 +
.../impl/DingOfficialFlowServiceImpl.java | 115 +++++
.../snow/dingtalk/sync/SyncFlowService.java | 274 ++++++++++++
.../dingtalk/sync/SyncSysInfoFactory.java | 2 +
snow-flowable/pom.xml | 3 +-
.../snow/flowable/config/ResourcesConfig.java | 8 +-
snow-framework/pom.xml | 2 +-
.../config/StorageAutoConfiguration.java | 13 +-
.../snow/framework/storage/AliyunStorage.java | 9 +-
.../snow/framework/storage/LocalStorage.java | 280 +++++++++---
.../com/snow/framework/storage/Storage.java | 12 +-
.../framework/storage/StorageService.java | 15 +-
snow-from/pom.xml | 5 +-
.../snow/from/controller/FromController.java | 38 +-
.../controller/SysFormFieldController.java | 123 ++++++
.../controller/SysFormInstanceController.java | 234 ++++++++++
.../com/snow/from/domain/FieldContentDTO.java | 42 ++
.../from/{model => domain}/FromInfoDTO.java | 9 +-
.../com/snow/from/domain/SysFormField.java | 53 +++
.../com/snow/from/domain/SysFormInstance.java | 52 +++
.../snow/from/mapper/SysFormFieldMapper.java | 62 +++
.../from/mapper/SysFormInstanceMapper.java | 76 ++++
.../from/service/ISysFormFieldService.java | 62 +++
.../from/service/ISysFormInstanceService.java | 76 ++++
.../service/impl/SysFormFieldServiceImpl.java | 98 +++++
.../impl/SysFormInstanceServiceImpl.java | 107 +++++
.../mapper/system/SysFormFieldMapper.xml | 114 +++++
.../mapper/system/SysFormInstanceMapper.xml | 116 +++++
.../src/main/resources/static/js/index.js | 118 ++---
.../main/resources/templates/fromIndex.html | 1 +
.../main/resources/templates/fromPreview.html | 24 +-
.../resources/templates/system/field/add.html | 67 +++
.../templates/system/field/edit.html | 68 +++
.../templates/system/field/field.html | 138 ++++++
.../templates/system/instance/add.html | 61 +++
.../templates/system/instance/edit.html | 62 +++
.../system/instance/fromPreview.html | 414 ++++++++++++++++++
.../templates/system/instance/instance.html | 106 +++++
snow-generator/pom.xml | 2 +-
snow-quartz/pom.xml | 5 +-
snow-system/pom.xml | 3 +-
.../com/snow/system/domain/SysDingHiTask.java | 77 ++++
.../snow/system/domain/SysDingProcinst.java | 99 +++++
.../com/snow/system/domain/SysDingRuTask.java | 88 ++++
.../system/mapper/SysDingHiTaskMapper.java | 61 +++
.../system/mapper/SysDingProcinstMapper.java | 67 +++
.../system/mapper/SysDingRuTaskMapper.java | 61 +++
.../com/snow/system/mapper/SysUserMapper.java | 7 +
.../system/service/ISysDingHiTaskService.java | 61 +++
.../service/ISysDingProcinstService.java | 67 +++
.../system/service/ISysDingRuTaskService.java | 61 +++
.../snow/system/service/ISysUserService.java | 7 +
.../impl/SysDingHiTaskServiceImpl.java | 130 ++++++
.../impl/SysDingProcinstServiceImpl.java | 118 +++++
.../impl/SysDingRuTaskServiceImpl.java | 127 ++++++
.../service/impl/SysUserServiceImpl.java | 5 +
.../mapper/system/SysDingHiTaskMapper.xml | 144 ++++++
.../mapper/system/SysDingProcinstMapper.xml | 132 ++++++
.../mapper/system/SysDingRuTaskMapper.xml | 134 ++++++
.../resources/mapper/system/SysUserMapper.xml | 5 +
94 files changed, 6203 insertions(+), 398 deletions(-)
create mode 100644 snow-admin/src/main/java/com/snow/web/controller/dingtalk/DingTaskController.java
create mode 100644 snow-admin/src/main/resources/templates/ding/flow/myStartProcess.html
create mode 100644 snow-admin/src/main/resources/templates/ding/flow/myStartProcessDetail.html
create mode 100644 snow-admin/src/main/resources/templates/ding/task/add.html
rename snow-admin/src/main/resources/templates/ding/{flow => task}/checkDetail.html (61%)
create mode 100644 snow-admin/src/main/resources/templates/ding/task/edit.html
create mode 100644 snow-admin/src/main/resources/templates/ding/task/myTasked.html
create mode 100644 snow-admin/src/main/resources/templates/ding/task/myTaskedDetail.html
create mode 100644 snow-admin/src/main/resources/templates/ding/task/task.html
create mode 100644 snow-common/src/main/java/com/snow/common/enums/DingFlowOperationType.java
create mode 100644 snow-common/src/main/java/com/snow/common/enums/DingFlowTaskType.java
create mode 100644 snow-common/src/main/java/com/snow/common/enums/FormComponentType.java
create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/model/DingFinishTaskRequest.java
create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/model/DingOperationRecordVO.java
create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/model/DingTaskVO.java
create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/model/SaveFlowRequest.java
create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/model/StartFlowRequest.java
create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/sync/SyncFlowService.java
create mode 100644 snow-from/src/main/java/com/snow/from/controller/SysFormFieldController.java
create mode 100644 snow-from/src/main/java/com/snow/from/controller/SysFormInstanceController.java
create mode 100644 snow-from/src/main/java/com/snow/from/domain/FieldContentDTO.java
rename snow-from/src/main/java/com/snow/from/{model => domain}/FromInfoDTO.java (86%)
create mode 100644 snow-from/src/main/java/com/snow/from/domain/SysFormField.java
create mode 100644 snow-from/src/main/java/com/snow/from/domain/SysFormInstance.java
create mode 100644 snow-from/src/main/java/com/snow/from/mapper/SysFormFieldMapper.java
create mode 100644 snow-from/src/main/java/com/snow/from/mapper/SysFormInstanceMapper.java
create mode 100644 snow-from/src/main/java/com/snow/from/service/ISysFormFieldService.java
create mode 100644 snow-from/src/main/java/com/snow/from/service/ISysFormInstanceService.java
create mode 100644 snow-from/src/main/java/com/snow/from/service/impl/SysFormFieldServiceImpl.java
create mode 100644 snow-from/src/main/java/com/snow/from/service/impl/SysFormInstanceServiceImpl.java
create mode 100644 snow-from/src/main/resources/mapper/system/SysFormFieldMapper.xml
create mode 100644 snow-from/src/main/resources/mapper/system/SysFormInstanceMapper.xml
create mode 100644 snow-from/src/main/resources/templates/system/field/add.html
create mode 100644 snow-from/src/main/resources/templates/system/field/edit.html
create mode 100644 snow-from/src/main/resources/templates/system/field/field.html
create mode 100644 snow-from/src/main/resources/templates/system/instance/add.html
create mode 100644 snow-from/src/main/resources/templates/system/instance/edit.html
create mode 100644 snow-from/src/main/resources/templates/system/instance/fromPreview.html
create mode 100644 snow-from/src/main/resources/templates/system/instance/instance.html
create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysDingHiTask.java
create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysDingProcinst.java
create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysDingRuTask.java
create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysDingHiTaskMapper.java
create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysDingProcinstMapper.java
create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysDingRuTaskMapper.java
create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysDingHiTaskService.java
create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysDingProcinstService.java
create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysDingRuTaskService.java
create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysDingHiTaskServiceImpl.java
create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysDingProcinstServiceImpl.java
create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysDingRuTaskServiceImpl.java
create mode 100644 snow-system/src/main/resources/mapper/system/SysDingHiTaskMapper.xml
create mode 100644 snow-system/src/main/resources/mapper/system/SysDingProcinstMapper.xml
create mode 100644 snow-system/src/main/resources/mapper/system/SysDingRuTaskMapper.xml
diff --git a/snow-admin/pom.xml b/snow-admin/pom.xml
index 966dc59..1e3b049 100644
--- a/snow-admin/pom.xml
+++ b/snow-admin/pom.xml
@@ -5,7 +5,7 @@
snow
com.snow
- 4.3.1
+ 2.0.0
4.0.0
jar
@@ -99,7 +99,6 @@
com.snow
snow-from
- 4.3.1
diff --git a/snow-admin/src/main/java/com/snow/web/controller/common/CommonController.java b/snow-admin/src/main/java/com/snow/web/controller/common/CommonController.java
index 86b063e..c8210be 100644
--- a/snow-admin/src/main/java/com/snow/web/controller/common/CommonController.java
+++ b/snow-admin/src/main/java/com/snow/web/controller/common/CommonController.java
@@ -77,8 +77,7 @@ public class CommonController
{
try
{
- String originalFilename = file.getOriginalFilename();
- SysFile store = storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), originalFilename);
+ SysFile store = storageService.store(file);
AjaxResult ajax = AjaxResult.success();
ajax.put("fileKey",store.getKey());
ajax.put("fileName", store.getName());
diff --git a/snow-admin/src/main/java/com/snow/web/controller/dingtalk/CallBackController.java b/snow-admin/src/main/java/com/snow/web/controller/dingtalk/CallBackController.java
index 5162b49..29f87a6 100644
--- a/snow-admin/src/main/java/com/snow/web/controller/dingtalk/CallBackController.java
+++ b/snow-admin/src/main/java/com/snow/web/controller/dingtalk/CallBackController.java
@@ -80,6 +80,10 @@ public class CallBackController {
if(StringUtils.isEmpty(type)){
return Constants.CALL_BACK_FAIL_RETURN;
}
+ //测试回调URL事件,直接返回加密后的success即可
+ if(eventType.equals(DingTalkListenerType.CALL_BACK_CHECK_URL.getInfo())){
+ return dingTalkEncryptor.getEncryptedMap(Constants.CALL_BACK_SUCCESS_RETURN, timestamp, nonce);
+ }
//调用工厂模式异步处理数据
SyncSysInfoFactory syncSysInfoFactory = new SyncSysInfoFactory();
ISyncSysInfo iSyncSysInfo = syncSysInfoFactory.getSyncSysInfoService(type);
diff --git a/snow-admin/src/main/java/com/snow/web/controller/dingtalk/DingTaskController.java b/snow-admin/src/main/java/com/snow/web/controller/dingtalk/DingTaskController.java
new file mode 100644
index 0000000..e6a6a14
--- /dev/null
+++ b/snow-admin/src/main/java/com/snow/web/controller/dingtalk/DingTaskController.java
@@ -0,0 +1,198 @@
+package com.snow.web.controller.dingtalk;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import com.dingtalk.api.response.OapiProcessinstanceGetResponse;
+import com.snow.common.annotation.RepeatSubmit;
+import com.snow.common.core.controller.BaseController;
+import com.snow.common.core.domain.AjaxResult;
+import com.snow.common.core.page.TableDataInfo;
+import com.snow.common.enums.DingFlowTaskType;
+import com.snow.dingtalk.model.DingFinishTaskRequest;
+import com.snow.dingtalk.model.DingTaskVO;
+import com.snow.dingtalk.model.FlowExecuteTaskRequest;
+import com.snow.dingtalk.service.impl.DingOfficialFlowServiceImpl;
+import com.snow.framework.util.ShiroUtils;
+import com.snow.system.domain.SysDingHiTask;
+import com.snow.system.domain.SysDingRuTask;
+import com.snow.system.domain.SysUser;
+import com.snow.system.service.ISysDingHiTaskService;
+import com.snow.system.service.ISysDingRuTaskService;
+import com.snow.system.service.impl.SysUserServiceImpl;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * 钉钉任务Controller
+ *
+ * @author 没用的阿吉
+ * @date 2021-03-24
+ */
+
+@Controller
+@RequestMapping("/ding/task")
+public class DingTaskController extends BaseController
+{
+ private String prefix = "ding/task";
+
+ @Autowired
+ private ISysDingRuTaskService sysDingRuTaskService;
+
+ @Autowired
+ private DingOfficialFlowServiceImpl dingOfficialFlowService;
+
+ @Autowired
+ private ISysDingHiTaskService sysDingHiTaskService;
+
+ @Autowired
+ private SysUserServiceImpl sysUserService;
+
+ @RequiresPermissions("ding:task:view")
+ @GetMapping()
+ public String task()
+ {
+ return prefix + "/task";
+ }
+
+
+ /**
+ * 查询钉钉运行任务列表
+ */
+
+ @RequiresPermissions("ding:task:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(SysDingRuTask sysDingRuTask)
+ {
+ startPage();
+ SysUser sysUser = ShiroUtils.getSysUser();
+ sysDingRuTask.setAssignee(sysUser.getDingUserId());
+ //待办为处理中的
+ sysDingRuTask.setTaskState(DingFlowTaskType.RUNNING.getCode());
+ List list = sysDingRuTaskService.selectSysDingRuTaskList(sysDingRuTask);
+ return getDataTable(list);
+ }
+
+
+
+
+ /**
+ * 跳转完成任务界面
+ * @return
+ */
+ @GetMapping("/toFinishTask")
+ public String toFinishTask(String taskId,ModelMap mmap)
+ {
+ SysDingRuTask sysDingRuTask = sysDingRuTaskService.selectSysDingRuTaskById(taskId);
+
+ OapiProcessinstanceGetResponse.ProcessInstanceTopVo processInstanceDetail = dingOfficialFlowService.getProcessInstanceDetail(sysDingRuTask.getProcInstId());
+
+ //获取表单值
+ List formComponentValues = processInstanceDetail.getFormComponentValues();
+
+ mmap.put("formComponentValues",formComponentValues);
+ mmap.put("taskId",taskId);
+ mmap.put("processInstanceId",sysDingRuTask.getProcInstId());
+ mmap.put("processInstanceDetail",processInstanceDetail);
+ return prefix+"/checkDetail";
+ }
+
+ /**
+ * 完成任务
+ * @return
+ */
+ @PostMapping("/finishTask")
+ @RequiresPermissions("ding:task:finishTask")
+ @ResponseBody
+ @RepeatSubmit
+ public AjaxResult finishTask(DingFinishTaskRequest finishTaskDTO)
+ {
+ SysUser sysUser = ShiroUtils.getSysUser();
+ finishTaskDTO.setUserId(sysUser.getDingUserId());
+ FlowExecuteTaskRequest flowExecuteTaskRequest=new FlowExecuteTaskRequest();
+ flowExecuteTaskRequest.setTaskId(Long.parseLong(finishTaskDTO.getTaskId()));
+ flowExecuteTaskRequest.setActionerUserid(sysUser.getDingUserId());
+ flowExecuteTaskRequest.setRemark(finishTaskDTO.getComment());
+ flowExecuteTaskRequest.setResult(finishTaskDTO.getIsPass()?"agree":"refuse");
+ flowExecuteTaskRequest.setProcessInstanceId(finishTaskDTO.getProcessInstanceId());
+ Boolean aBoolean = dingOfficialFlowService.executeProcessInstance(flowExecuteTaskRequest);
+ return AjaxResult.success(aBoolean);
+ }
+
+ /**
+ * 跳转我的已办
+ * @return
+ */
+ @RequiresPermissions("ding:task:myTasked")
+ @GetMapping("/toMyTasked")
+ public String toMyTasked()
+ {
+
+ return prefix+"/myTasked";
+ }
+
+ /**
+ * 获取我办结的任务列表
+ * @param sysDingHiTask
+ * @return
+ */
+ @RequiresPermissions("ding:task:myTasked")
+ @PostMapping("/getMyTaskedList")
+ @ResponseBody
+ public TableDataInfo getMyTaskedList(SysDingHiTask sysDingHiTask){
+ startPage();
+ SysUser sysUser = ShiroUtils.getSysUser();
+ sysDingHiTask.setAssignee(sysUser.getDingUserId());
+ sysDingHiTask.setTaskState(DingFlowTaskType.COMPLETED.getCode());
+ List list = sysDingHiTaskService.selectSysDingHiTaskList(sysDingHiTask);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 获取我的已办详情
+ * @param taskId
+ * @return
+ */
+ @RequiresPermissions("ding:task:getTaskedDetail")
+ @GetMapping("/getTaskedDetail")
+ public String getTaskedDetail(String taskId,ModelMap mmap){
+
+ SysDingHiTask sysDingHiTask = sysDingHiTaskService.selectSysDingHiTaskById(taskId);
+ OapiProcessinstanceGetResponse.ProcessInstanceTopVo processInstanceDetail = dingOfficialFlowService.getProcessInstanceDetail(sysDingHiTask.getProcInstId());
+
+ //获取表单值
+ List formComponentValues = processInstanceDetail.getFormComponentValues();
+
+ //获取任务节点
+ List tasks = processInstanceDetail.getTasks();
+ DingTaskVO dingTaskVO=new DingTaskVO();
+ if(CollectionUtil.isNotEmpty(tasks)){
+ tasks.stream().filter(taskTopVo -> taskTopVo.getTaskid().equals(sysDingHiTask.getTaskId())).collect(Collectors.toList()).forEach(t->{
+ BeanUtil.copyProperties(t,dingTaskVO);
+ dingTaskVO.defaultTaskSpendTime();
+ SysUser sysUser = sysUserService.selectUserByDingUserId(t.getUserid());
+ dingTaskVO.setUserName(sysUser.getUserName());
+ dingTaskVO.setTaskStatus(DingFlowTaskType.getCode(t.getTaskStatus()).getInfo());
+ });
+ }
+ SysUser sysUser = sysUserService.selectUserByDingUserId(processInstanceDetail.getOriginatorUserid());
+ mmap.put("formComponentValues",formComponentValues);
+ mmap.put("tasks",dingTaskVO);
+ mmap.put("applyUserName",sysUser.getUserName());
+ mmap.put("processInstanceDetail",processInstanceDetail);
+ return prefix+"/myTaskedDetail";
+ }
+
+}
+
diff --git a/snow-admin/src/main/java/com/snow/web/controller/dingtalk/OfficialFlowController.java b/snow-admin/src/main/java/com/snow/web/controller/dingtalk/OfficialFlowController.java
index 02a352e..c23a0cc 100644
--- a/snow-admin/src/main/java/com/snow/web/controller/dingtalk/OfficialFlowController.java
+++ b/snow-admin/src/main/java/com/snow/web/controller/dingtalk/OfficialFlowController.java
@@ -1,19 +1,28 @@
package com.snow.web.controller.dingtalk;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.BetweenFormater;
+import cn.hutool.core.date.DateUtil;
import com.dingtalk.api.response.OapiProcessListbyuseridResponse;
import com.dingtalk.api.response.OapiProcessTemplateManageGetResponse;
import com.dingtalk.api.response.OapiProcessinstanceGetResponse;
+import com.google.common.collect.Lists;
import com.snow.common.core.controller.BaseController;
import com.snow.common.core.domain.AjaxResult;
-import com.snow.common.core.page.PageDomain;
-import com.snow.common.core.page.PageModel;
import com.snow.common.core.page.TableDataInfo;
-import com.snow.common.core.page.TableSupport;
-import com.snow.dingtalk.model.FlowExecuteTaskRequest;
-import com.snow.dingtalk.model.FlowTerminateProcessInstanceRequest;
+import com.snow.common.enums.DingFlowOperationType;
+import com.snow.common.enums.DingFlowTaskType;
+import com.snow.common.utils.DateUtils;
+import com.snow.dingtalk.model.*;
import com.snow.dingtalk.service.impl.DingOfficialFlowServiceImpl;
import com.snow.framework.util.ShiroUtils;
+import com.snow.system.domain.SysDingProcinst;
+import com.snow.system.domain.SysDingRuTask;
import com.snow.system.domain.SysUser;
+import com.snow.system.service.impl.SysDingProcinstServiceImpl;
+import com.snow.system.service.impl.SysDingRuTaskServiceImpl;
+import com.snow.system.service.impl.SysUserServiceImpl;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -24,6 +33,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
/**
* @program: snow
@@ -40,8 +51,16 @@ public class OfficialFlowController extends BaseController {
@Autowired
private DingOfficialFlowServiceImpl dingOfficialFlowService;
+ @Autowired
+ private SysUserServiceImpl sysUserService;
+
+ @Autowired
+ private SysDingRuTaskServiceImpl sysDingRuTaskService;
+
+ @Autowired
+ private SysDingProcinstServiceImpl sysDingProcinstService;
/**
- * 跳转钉钉官方流程模板
+ * 跳转钉钉当前用户可见的审批模板
* @return
*/
@RequiresPermissions("ding:officialFlow:getTemplateManageList")
@@ -52,7 +71,7 @@ public class OfficialFlowController extends BaseController {
}
/**
- * 获取钉钉官方流程模板
+ * 获取当前用户可见的审批模板
*/
@RequiresPermissions("ding:officialFlow:getTemplateManageList")
@PostMapping("/getProcessTemplateManageList")
@@ -60,20 +79,49 @@ public class OfficialFlowController extends BaseController {
public TableDataInfo getProcessTemplateManageList()
{
SysUser sysUser = ShiroUtils.getSysUser();
- List processTemplateManage = dingOfficialFlowService.getProcessTemplateManage(sysUser.getDingUserId());
- return pageBySubList(processTemplateManage);
+ OapiProcessListbyuseridResponse.HomePageProcessTemplateVo homePageProcessTemplateVo = dingOfficialFlowService.getProcessListByUserId(sysUser.getDingUserId());
+ return pageBySubList(homePageProcessTemplateVo.getProcessList());
}
+
/**
- * 跳转
- * @param mmap
+ * 执行流程实例
+ * @param
* @return
*/
- @RequiresPermissions("ding:officialFlow:getProcessListByUserId")
- @GetMapping("/toProcessListByUserId")
- public String toProcessListByUserId(ModelMap mmap){
-
- return prefix+"/myDingTask";
+ @RequiresPermissions("ding:officialFlow:startProcessInstance")
+ @GetMapping("/startProcessInstance")
+ @ResponseBody
+ public AjaxResult startProcessInstance(){
+ SysUser sysUser = ShiroUtils.getSysUser();
+ StartFlowRequest startFlowRequest=new StartFlowRequest();
+ startFlowRequest.setProcessCode("PROC-DAF427F7-89E2-4496-9481-53FE56551E9F");
+ startFlowRequest.setOriginatorUserId(sysUser.getDingUserId());
+ startFlowRequest.setDeptId(sysUser.getDeptId());
+ List list=Lists.newArrayList();
+ StartFlowRequest.FormComponentValueVo formComponentValueVo=new StartFlowRequest.FormComponentValueVo();
+ formComponentValueVo.setName("商品编码");
+ formComponentValueVo.setValue("OA-SP10002");
+ list.add(formComponentValueVo);
+ StartFlowRequest.FormComponentValueVo formComponentValueVo0=new StartFlowRequest.FormComponentValueVo();
+ formComponentValueVo0.setName("商品名称");
+ formComponentValueVo0.setValue("测试商品");
+ list.add(formComponentValueVo0);
+ StartFlowRequest.FormComponentValueVo formComponentValueVo1=new StartFlowRequest.FormComponentValueVo();
+ formComponentValueVo1.setName("规格");
+ formComponentValueVo1.setValue("OO--XX");
+ list.add(formComponentValueVo1);
+ StartFlowRequest.FormComponentValueVo formComponentValueVo2=new StartFlowRequest.FormComponentValueVo();
+ formComponentValueVo2.setName("审核日期");
+ formComponentValueVo2.setValue(DateUtils.getDate());
+ list.add(formComponentValueVo2);
+ StartFlowRequest.FormComponentValueVo formComponentValueVo3=new StartFlowRequest.FormComponentValueVo();
+ formComponentValueVo3.setName("备注说明");
+ formComponentValueVo3.setValue("nova 8系列 我由我掌镜。nova 8 Pro前置Vlog视频双镜头,66W超级快充,120Hz环幕屏。");
+ list.add(formComponentValueVo3);
+ startFlowRequest.setFormComponentValueVoList(list);
+ String s = dingOfficialFlowService.startProcessInstance(startFlowRequest);
+ return AjaxResult.success(s);
}
/**
@@ -84,7 +132,6 @@ public class OfficialFlowController extends BaseController {
@PostMapping("/getProcessListByUserId")
@ResponseBody
public TableDataInfo getProcessListByUserId(){
- PageDomain pageDomain = TableSupport.buildPageRequest();
SysUser sysUser = ShiroUtils.getSysUser();
OapiProcessListbyuseridResponse.HomePageProcessTemplateVo processListByUserId = dingOfficialFlowService.getProcessListByUserId(sysUser.getDingUserId());
return pageBySubList(processListByUserId.getProcessList());
@@ -118,10 +165,49 @@ public class OfficialFlowController extends BaseController {
//获取表单值
List formComponentValues = processInstanceDetail.getFormComponentValues();
- mmap.put("formComponentValues",formComponentValues);
+ //获取操作记录
+ List operationRecords = processInstanceDetail.getOperationRecords();
+ List dingOperationRecordVOList=Lists.newArrayList();
+ if(CollectionUtil.isNotEmpty(operationRecords)){
+ operationRecords.forEach(t->{
+ DingOperationRecordVO dingOperationRecordVO=new DingOperationRecordVO();
+ BeanUtil.copyProperties(t,dingOperationRecordVO);
+ SysUser sysUser = sysUserService.selectUserByDingUserId(t.getUserid());
+ dingOperationRecordVO.setUserName(sysUser.getUserName());
+ dingOperationRecordVO.setOperationType(DingFlowOperationType.getType(t.getOperationType()).getCode());
+ String operationResult = t.getOperationResult();
+ if(operationResult.equals("AGREE")){
+ dingOperationRecordVO.setOperationResult("同意");
+ }else if(operationResult.equals("REFUSE")){
+ dingOperationRecordVO.setOperationResult("拒绝");
+ }else if(operationResult.equals("NONE")){
+ dingOperationRecordVO.setOperationResult(null);
+ }
+ dingOperationRecordVOList.add(dingOperationRecordVO);
+ });
+ }
+
+ //获取任务节点
+ List tasks = processInstanceDetail.getTasks();
+ List dingTaskVOList=Lists.newArrayList();
+ if(CollectionUtil.isNotEmpty(tasks)){
+ tasks.stream().filter(t->!t.getTaskStatus().equals(DingFlowTaskType.CANCELED.getCode())).collect(Collectors.toList()).forEach(t->{
+ DingTaskVO dingTaskVO=new DingTaskVO();
+ BeanUtil.copyProperties(t,dingTaskVO);
+ dingTaskVO.defaultTaskSpendTime();
+ SysUser sysUser = sysUserService.selectUserByDingUserId(t.getUserid());
+ dingTaskVO.setUserName(sysUser.getUserName());
+ dingTaskVO.setTaskStatus(DingFlowTaskType.getCode(t.getTaskStatus()).getInfo());
+ dingTaskVO.defaultTaskSpendTime();
+ dingTaskVOList.add(dingTaskVO);
+ });
+ }
+ mmap.put("formComponentValues",formComponentValues);
+ mmap.put("operationRecords",dingOperationRecordVOList);
+ mmap.put("tasks",dingTaskVOList);
mmap.put("processInstanceDetail",processInstanceDetail);
- return prefix+"/checkDetail";
+ return prefix+"/myStartProcessDetail";
}
/**
@@ -139,4 +225,36 @@ public class OfficialFlowController extends BaseController {
return AjaxResult.success(aBoolean);
}
+
+ /**
+ * 跳转我发起的流程
+ * @return
+ */
+ @RequiresPermissions("ding:flow:getMyStartProcess")
+ @GetMapping("/toMyStartProcess")
+ public String getMyHistoricProcessInstance()
+ {
+ return prefix+"/myStartProcess";
+ }
+
+
+
+
+
+ /**
+ * 获取我的流程实例
+ * @param sysDingProcinst
+ * @return
+ */
+ @RequiresPermissions("ding:flow:getMyStartProcess")
+ @PostMapping("/getMyStartProcessList")
+ @ResponseBody
+ public TableDataInfo getMyStartProcessList(SysDingProcinst sysDingProcinst){
+ startPage();
+ SysUser sysUser = ShiroUtils.getSysUser();
+ sysDingProcinst.setStartUserId(sysUser.getDingUserId());
+ List list = sysDingProcinstService.selectSysDingProcinstList(sysDingProcinst);
+ return getDataTable(list);
+ }
+
}
diff --git a/snow-admin/src/main/java/com/snow/web/controller/system/SysProfileController.java b/snow-admin/src/main/java/com/snow/web/controller/system/SysProfileController.java
index e42c35a..d5ae6a5 100644
--- a/snow-admin/src/main/java/com/snow/web/controller/system/SysProfileController.java
+++ b/snow-admin/src/main/java/com/snow/web/controller/system/SysProfileController.java
@@ -159,7 +159,7 @@ public class SysProfileController extends BaseController
{
if (!file.isEmpty())
{
- SysFile store = storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), file.getOriginalFilename());
+ SysFile store = storageService.store(file);
currentUser.setAvatar(store.getUrl());
if (userService.updateUserInfo(currentUser) > 0)
{
diff --git a/snow-admin/src/main/resources/banner.txt b/snow-admin/src/main/resources/banner.txt
index 63ab03f..ce912c7 100644
--- a/snow-admin/src/main/resources/banner.txt
+++ b/snow-admin/src/main/resources/banner.txt
@@ -1,24 +1,10 @@
-Application Version: ${snow.version}
-Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-// _ooOoo_ //
-// o8888888o //
-// 88" . "88 //
-// (| ^_^ |) //
-// O\ = /O //
-// ____/`---'\____ //
-// .' \\| |// `. //
-// / \\||| : |||// \ //
-// / _||||| -:- |||||- \ //
-// | | \\\ - /// | | //
-// | \_| ''\---/'' | | //
-// \ .-\__ `-` ___/-. / //
-// ___`. .' /--.--\ `. . ___ //
-// ."" '< `.___\_<|>_/___.' >'"". //
-// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
-// \ \ `-. \_ __\ /__ _/ .-` / / //
-// ========`-.____`-.___\_____/___.-`____.-'======== //
-// `=---=' //
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
-// 佛祖保佑 永不宕机 永无BUG //
-////////////////////////////////////////////////////////////////////
\ No newline at end of file
+
+0000000 0000000 000000 000 0000000000 000 000
+000 000 000 00 000 000 000 000 000 000 000
+00 000 000 00 000 000 000 000 000 000
+00 000 000 000 00 0000 000 000 000 000
+000 0000 000 0000 0000 000 000 000 000 000
+ 000000 000 00000 00 000 000 000 000 000 000
+ 00 000 00 000 000 000 00 000 000
+000 000 00 00 00 00 000 000 0000 0000 000 000
+ 0000000 00000000 00000000 000 000 0000000000 0000000000
diff --git a/snow-admin/src/main/resources/templates/big_screen.html b/snow-admin/src/main/resources/templates/big_screen.html
index ef09037..a668930 100644
--- a/snow-admin/src/main/resources/templates/big_screen.html
+++ b/snow-admin/src/main/resources/templates/big_screen.html
@@ -41,6 +41,21 @@
$(".adduser ul").animate({marginTop:-'.5'*a+'rem'},800)
},4300);
})
+
+ function current(){
+ var d=new Date(),
+ str='';
+ str +=d.getFullYear()+'年'; //获取当前年份
+ str +=d.getMonth()+1+'月'; //获取当前月份(0——11)
+
+ str +=d.getDate()+'日';
+ str +=d.getHours()+'时';
+ str +=d.getMinutes()+'分';
+ str +=d.getSeconds()+'秒';
+ return str;
+ }
+ setInterval(function(){$("#nowTime").html(current)},1000);
+
@@ -48,7 +63,7 @@
Ding-Flow可视化大屏
-
多云转小雨
+
多云转小雨
diff --git a/snow-admin/src/main/resources/templates/ding/flow/myStartProcess.html b/snow-admin/src/main/resources/templates/ding/flow/myStartProcess.html
new file mode 100644
index 0000000..072cfc9
--- /dev/null
+++ b/snow-admin/src/main/resources/templates/ding/flow/myStartProcess.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snow-admin/src/main/resources/templates/ding/flow/myStartProcessDetail.html b/snow-admin/src/main/resources/templates/ding/flow/myStartProcessDetail.html
new file mode 100644
index 0000000..b896286
--- /dev/null
+++ b/snow-admin/src/main/resources/templates/ding/flow/myStartProcessDetail.html
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snow-admin/src/main/resources/templates/ding/flow/templateManage.html b/snow-admin/src/main/resources/templates/ding/flow/templateManage.html
index d5a30e0..7191aae 100644
--- a/snow-admin/src/main/resources/templates/ding/flow/templateManage.html
+++ b/snow-admin/src/main/resources/templates/ding/flow/templateManage.html
@@ -16,18 +16,10 @@
+
+