Commit b2c7a4ed0dc45f300b832d0e81aa8e0f34fd5734

Authored by youxiw2000
1 parent 2384736f

m

Showing 19 changed files with 2428 additions and 2232 deletions

Too many changes to show.

To preserve performance only 19 of 140 files are displayed.

trash-activiti/src/main/java/com/trash/activiti/domain/ActWorkflowFormData.java
1   -package com.trash.activiti.domain;
2   -
3   -import org.activiti.api.task.model.Task;
4   -import org.apache.commons.lang3.builder.ToStringBuilder;
5   -import org.apache.commons.lang3.builder.ToStringStyle;
6   -import org.apache.ibatis.type.Alias;
7   -
8   -import com.trash.common.core.domain.BaseEntity;
9   -import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO;
10   -
11   -import java.util.List;
12   -
13   -/**
14   - * 动态单对象 act_workflow_formdata
15   - *
16   - * @author danny
17   - * @date 2020-11-02
18   - */
19   -@Alias("ActWorkflowFormData")
20   -public class ActWorkflowFormData extends BaseEntity
21   -{
22   - private static final long serialVersionUID = 1L;
23   -
24   - /** 唯一标识符 */
25   - private Long id;
26   -
27   - /** 事务Id */
28   - private String businessKey;
29   -
30   - /** 表单Key */
31   - private String formKey;
32   -
33   -
34   - /** 表单id */
35   - private String controlId;
36   - /** 表单名称 */
37   - private String controlName;
38   -
39   - /** 表单值 */
40   - private String controlValue;
41   -
42   - /** 任务节点名称 */
43   - private String taskNodeName;
44   -
45   - private String createName;
46   -
47   - public ActWorkflowFormData() {
48   - }
49   -
50   - public ActWorkflowFormData(String businessKey,ActWorkflowFormDataDTO actWorkflowFormDataDTO, Task task) {
51   - this.businessKey = businessKey;
52   - this.formKey = task.getFormKey();
53   - this.controlId = actWorkflowFormDataDTO.getControlId();
54   - this.controlName = actWorkflowFormDataDTO.getControlLable();
55   - if ("radio".equals(actWorkflowFormDataDTO.getControlType())) {
56   - int i = Integer.parseInt(actWorkflowFormDataDTO.getControlValue());
57   - this.controlValue = actWorkflowFormDataDTO.getControlDefault().split("--__--")[i];
58   - }else {
59   - this.controlValue = actWorkflowFormDataDTO.getControlValue();
60   - }
61   - this.taskNodeName = task.getName();
62   - }
63   -
64   - public void setId(Long id)
65   - {
66   - this.id = id;
67   - }
68   -
69   - public Long getId()
70   - {
71   - return id;
72   - }
73   -
74   - public String getBusinessKey() {
75   - return businessKey;
76   - }
77   -
78   - public void setBusinessKey(String businessKey) {
79   - this.businessKey = businessKey;
80   - }
81   -
82   - public void setFormKey(String formKey)
83   - {
84   - this.formKey = formKey;
85   - }
86   -
87   - public String getFormKey()
88   - {
89   - return formKey;
90   - }
91   - public void setControlId(String controlId)
92   - {
93   - this.controlId = controlId;
94   - }
95   -
96   - public String getControlId()
97   - {
98   - return controlId;
99   - }
100   -
101   - public String getControlName() {
102   - return controlName;
103   - }
104   -
105   - public void setControlName(String controlName) {
106   - this.controlName = controlName;
107   - }
108   -
109   - public void setControlValue(String controlValue)
110   - {
111   - this.controlValue = controlValue;
112   - }
113   -
114   - public String getControlValue()
115   - {
116   - return controlValue;
117   - }
118   - public void setTaskNodeName(String taskNodeName)
119   - {
120   - this.taskNodeName = taskNodeName;
121   - }
122   -
123   - public String getTaskNodeName()
124   - {
125   - return taskNodeName;
126   - }
127   -
128   - public String getCreateName() {
129   - return createName;
130   - }
131   -
132   - public void setCreateName(String createName) {
133   - this.createName = createName;
134   - }
135   -
136   - @Override
137   - public String toString() {
138   - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
139   - .append("id", getId())
140   - .append("procInstId", getBusinessKey())
141   - .append("formKey", getFormKey())
142   - .append("controlId", getControlId())
143   - .append("controlValue", getControlValue())
144   - .append("taskNodeName", getTaskNodeName())
145   - .append("createBy", getCreateBy())
146   - .append("createTime", getCreateTime())
147   - .toString();
148   - }
149   -}
  1 +package com.trash.activiti.domain;
  2 +
  3 +import org.activiti.api.task.model.Task;
  4 +import org.apache.commons.lang3.builder.ToStringBuilder;
  5 +import org.apache.commons.lang3.builder.ToStringStyle;
  6 +import org.apache.ibatis.type.Alias;
  7 +
  8 +import com.trash.common.core.domain.BaseEntity;
  9 +import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO;
  10 +
  11 +import java.util.List;
  12 +
  13 +/**
  14 + * 动态单对象 act_workflow_formdata
  15 + *
  16 + * @author danny
  17 + * @date 2020-11-02
  18 + */
  19 +@Alias("ActWorkflowFormData")
  20 +public class ActWorkflowFormData extends BaseEntity
  21 +{
  22 + private static final long serialVersionUID = 1L;
  23 +
  24 + /** 唯一标识符 */
  25 + private Long id;
  26 +
  27 + /** 事务Id */
  28 + private String businessKey;
  29 +
  30 + /** 表单Key */
  31 + private String formKey;
  32 +
  33 +
  34 + /** 表单id */
  35 + private String controlId;
  36 + /** 表单名称 */
  37 + private String controlName;
  38 +
  39 + /** 表单值 */
  40 + private String controlValue;
  41 +
  42 + /** 任务节点名称 */
  43 + private String taskNodeName;
  44 +
  45 + private String createName;
  46 +
  47 + public ActWorkflowFormData() {
  48 + }
  49 +
  50 + public ActWorkflowFormData(String businessKey,ActWorkflowFormDataDTO actWorkflowFormDataDTO, Task task) {
  51 + this.businessKey = businessKey;
  52 + this.formKey = task.getFormKey();
  53 + this.controlId = actWorkflowFormDataDTO.getControlId();
  54 + this.controlName = actWorkflowFormDataDTO.getControlLable();
  55 + if ("radio".equals(actWorkflowFormDataDTO.getControlType())) {
  56 + int i = Integer.parseInt(actWorkflowFormDataDTO.getControlValue());
  57 + this.controlValue = actWorkflowFormDataDTO.getControlDefault().split("--__--")[i];
  58 + }else {
  59 + this.controlValue = actWorkflowFormDataDTO.getControlValue();
  60 + }
  61 + this.taskNodeName = task.getName();
  62 + }
  63 +
  64 + public void setId(Long id)
  65 + {
  66 + this.id = id;
  67 + }
  68 +
  69 + public Long getId()
  70 + {
  71 + return id;
  72 + }
  73 +
  74 + public String getBusinessKey() {
  75 + return businessKey;
  76 + }
  77 +
  78 + public void setBusinessKey(String businessKey) {
  79 + this.businessKey = businessKey;
  80 + }
  81 +
  82 + public void setFormKey(String formKey)
  83 + {
  84 + this.formKey = formKey;
  85 + }
  86 +
  87 + public String getFormKey()
  88 + {
  89 + return formKey;
  90 + }
  91 + public void setControlId(String controlId)
  92 + {
  93 + this.controlId = controlId;
  94 + }
  95 +
  96 + public String getControlId()
  97 + {
  98 + return controlId;
  99 + }
  100 +
  101 + public String getControlName() {
  102 + return controlName;
  103 + }
  104 +
  105 + public void setControlName(String controlName) {
  106 + this.controlName = controlName;
  107 + }
  108 +
  109 + public void setControlValue(String controlValue)
  110 + {
  111 + this.controlValue = controlValue;
  112 + }
  113 +
  114 + public String getControlValue()
  115 + {
  116 + return controlValue;
  117 + }
  118 + public void setTaskNodeName(String taskNodeName)
  119 + {
  120 + this.taskNodeName = taskNodeName;
  121 + }
  122 +
  123 + public String getTaskNodeName()
  124 + {
  125 + return taskNodeName;
  126 + }
  127 +
  128 + public String getCreateName() {
  129 + return createName;
  130 + }
  131 +
  132 + public void setCreateName(String createName) {
  133 + this.createName = createName;
  134 + }
  135 +
  136 + @Override
  137 + public String toString() {
  138 + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
  139 + .append("id", getId())
  140 + .append("procInstId", getBusinessKey())
  141 + .append("formKey", getFormKey())
  142 + .append("controlId", getControlId())
  143 + .append("controlValue", getControlValue())
  144 + .append("taskNodeName", getTaskNodeName())
  145 + .append("createBy", getCreateBy())
  146 + .append("createTime", getCreateTime())
  147 + .toString();
  148 + }
  149 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/domain/dto/ActWorkflowFormDataDTO.java
1   -package com.trash.activiti.domain.dto;
2   -
3   -
4   -import com.trash.common.core.domain.BaseEntity;
5   -
6   -import java.util.List;
7   -
8   -
9   -/**
10   - * 动态单对象 act_workflow_formdata
11   - *
12   - * @author danny
13   - * @date 2020-11-01
14   - */
15   -public class ActWorkflowFormDataDTO extends BaseEntity
16   -{
17   - private static final long serialVersionUID = 1L;
18   -
19   -
20   - /** 表单id */
21   - private String controlId;
22   - private String controlType;
23   -
24   -
25   -
26   - /** 表单名称 */
27   - private String controlLable;
28   -
29   - private String controlIsParam;
30   -
31   - /** 表单值 */
32   - private String controlValue;
33   - private String controlDefault;
34   -
35   - private String deptCode;
36   -
37   - private String index;
38   - public String getIndex() {
39   - return index;
40   - }
41   -
42   - public void setIndex(String index) {
43   - this.index = index;
44   - }
45   -
46   - public String getDeptCode() {
47   - return deptCode;
48   - }
49   -
50   - public void setDeptCode(String deptCode) {
51   - this.deptCode = deptCode;
52   - }
53   -
54   - public void setControlId(String controlId)
55   - {
56   - this.controlId = controlId;
57   - }
58   -
59   - public String getControlId()
60   - {
61   - return controlId;
62   - }
63   - public void setControlValue(String controlValue)
64   - {
65   - this.controlValue = controlValue;
66   - }
67   -
68   - public String getControlValue()
69   - {
70   - return controlValue;
71   - }
72   -
73   -
74   - public String getControlIsParam() {
75   - return controlIsParam;
76   - }
77   -
78   - public void setControlIsParam(String controlIsParam) {
79   - this.controlIsParam = controlIsParam;
80   - }
81   -
82   - public String getControlLable() {
83   - return controlLable;
84   - }
85   -
86   - public void setControlLable(String controlLable) {
87   - this.controlLable = controlLable;
88   - }
89   -
90   - public String getControlDefault() {
91   - return controlDefault;
92   - }
93   -
94   - public void setControlDefault(String controlDefault) {
95   - this.controlDefault = controlDefault;
96   - }
97   -
98   - public String getControlType() {
99   - return controlType;
100   - }
101   -
102   - public void setControlType(String controlType) {
103   - this.controlType = controlType;
104   - }
105   -}
  1 +package com.trash.activiti.domain.dto;
  2 +
  3 +
  4 +import com.trash.common.core.domain.BaseEntity;
  5 +
  6 +import java.util.List;
  7 +
  8 +
  9 +/**
  10 + * 动态单对象 act_workflow_formdata
  11 + *
  12 + * @author danny
  13 + * @date 2020-11-01
  14 + */
  15 +public class ActWorkflowFormDataDTO extends BaseEntity
  16 +{
  17 + private static final long serialVersionUID = 1L;
  18 +
  19 +
  20 + /** 表单id */
  21 + private String controlId;
  22 + private String controlType;
  23 +
  24 +
  25 +
  26 + /** 表单名称 */
  27 + private String controlLable;
  28 +
  29 + private String controlIsParam;
  30 +
  31 + /** 表单值 */
  32 + private String controlValue;
  33 + private String controlDefault;
  34 +
  35 + private String deptCode;
  36 +
  37 + private String index;
  38 + public String getIndex() {
  39 + return index;
  40 + }
  41 +
  42 + public void setIndex(String index) {
  43 + this.index = index;
  44 + }
  45 +
  46 + public String getDeptCode() {
  47 + return deptCode;
  48 + }
  49 +
  50 + public void setDeptCode(String deptCode) {
  51 + this.deptCode = deptCode;
  52 + }
  53 +
  54 + public void setControlId(String controlId)
  55 + {
  56 + this.controlId = controlId;
  57 + }
  58 +
  59 + public String getControlId()
  60 + {
  61 + return controlId;
  62 + }
  63 + public void setControlValue(String controlValue)
  64 + {
  65 + this.controlValue = controlValue;
  66 + }
  67 +
  68 + public String getControlValue()
  69 + {
  70 + return controlValue;
  71 + }
  72 +
  73 +
  74 + public String getControlIsParam() {
  75 + return controlIsParam;
  76 + }
  77 +
  78 + public void setControlIsParam(String controlIsParam) {
  79 + this.controlIsParam = controlIsParam;
  80 + }
  81 +
  82 + public String getControlLable() {
  83 + return controlLable;
  84 + }
  85 +
  86 + public void setControlLable(String controlLable) {
  87 + this.controlLable = controlLable;
  88 + }
  89 +
  90 + public String getControlDefault() {
  91 + return controlDefault;
  92 + }
  93 +
  94 + public void setControlDefault(String controlDefault) {
  95 + this.controlDefault = controlDefault;
  96 + }
  97 +
  98 + public String getControlType() {
  99 + return controlType;
  100 + }
  101 +
  102 + public void setControlType(String controlType) {
  103 + this.controlType = controlType;
  104 + }
  105 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/mapper/ActWorkflowFormDataMapper.java
1   -package com.trash.activiti.mapper;
2   -
3   -import java.util.Date;
4   -import java.util.List;
5   -import java.util.Map;
6   -
7   -import org.apache.ibatis.annotations.Param;
8   -
9   -import com.trash.activiti.domain.ActWorkflowFormData;
10   -
11   -import javax.xml.crypto.Data;
12   -
13   -/**
14   - * 动态单Mapper接口
15   - *
16   - * @author danny
17   - * @date 2020-11-02
18   - */
19   -public interface ActWorkflowFormDataMapper
20   -{
21   - /**
22   - * 查询动态单
23   - *
24   - * @param id 动态单ID
25   - * @return 动态单
26   - */
27   - ActWorkflowFormData selectActWorkflowFormDataById(Long id);
28   - /**
29   - * 查询动态单
30   - *
31   - * @param businessKey 动态单ID
32   - * @return 动态单
33   - */
34   - List<ActWorkflowFormData> selectActWorkflowFormDataByBusinessKey(String businessKey);
35   -
36   - /**
37   - * 查询动态单列表
38   - *
39   - * @param ActWorkflowFormData 动态单
40   - * @return 动态单集合
41   - */
42   - List<ActWorkflowFormData> selectActWorkflowFormDataList(ActWorkflowFormData ActWorkflowFormData);
43   -
44   - /**
45   - * 新增动态单
46   - *
47   - * @param ActWorkflowFormData 动态单
48   - * @return 结果
49   - */
50   - int insertActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
51   -
52   -
53   - /**
54   - * 新增动态单
55   - *
56   - * @param
57   - * @return 结果
58   - */
59   - int insertActWorkflowFormDatas(@Param("createBy") String createBy, @Param("ActWorkflowFormData") List<ActWorkflowFormData> ActWorkflowFormData, Date date, String createName);
60   -
61   -
62   -
63   -
64   - /**
65   - * 修改动态单
66   - *
67   - * @param ActWorkflowFormData 动态单
68   - * @return 结果
69   - */
70   - int updateActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
71   -
72   - /**
73   - * 删除动态单
74   - *
75   - * @param id 动态单ID
76   - * @return 结果
77   - */
78   - int deleteActWorkflowFormDataById(Long id);
79   -
80   - /**
81   - * 批量删除动态单
82   - *
83   - * @param ids 需要删除的数据ID
84   - * @return 结果
85   - */
86   - int deleteActWorkflowFormDataByIds(Long[] ids);
87   -
88   - List<ActWorkflowFormData> selectActWorkFlowFormDataListByUser(@Param("username") String username);
89   - List<ActWorkflowFormData> selectNewActWorkflowFormDataByBusinessKey(Map<String,String> map);
90   -}
  1 +package com.trash.activiti.mapper;
  2 +
  3 +import java.util.Date;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +
  7 +import org.apache.ibatis.annotations.Param;
  8 +
  9 +import com.trash.activiti.domain.ActWorkflowFormData;
  10 +
  11 +import javax.xml.crypto.Data;
  12 +
  13 +/**
  14 + * 动态单Mapper接口
  15 + *
  16 + * @author danny
  17 + * @date 2020-11-02
  18 + */
  19 +public interface ActWorkflowFormDataMapper
  20 +{
  21 + /**
  22 + * 查询动态单
  23 + *
  24 + * @param id 动态单ID
  25 + * @return 动态单
  26 + */
  27 + ActWorkflowFormData selectActWorkflowFormDataById(Long id);
  28 + /**
  29 + * 查询动态单
  30 + *
  31 + * @param businessKey 动态单ID
  32 + * @return 动态单
  33 + */
  34 + List<ActWorkflowFormData> selectActWorkflowFormDataByBusinessKey(String businessKey);
  35 +
  36 + /**
  37 + * 查询动态单列表
  38 + *
  39 + * @param ActWorkflowFormData 动态单
  40 + * @return 动态单集合
  41 + */
  42 + List<ActWorkflowFormData> selectActWorkflowFormDataList(ActWorkflowFormData ActWorkflowFormData);
  43 +
  44 + /**
  45 + * 新增动态单
  46 + *
  47 + * @param ActWorkflowFormData 动态单
  48 + * @return 结果
  49 + */
  50 + int insertActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
  51 +
  52 +
  53 + /**
  54 + * 新增动态单
  55 + *
  56 + * @param
  57 + * @return 结果
  58 + */
  59 + int insertActWorkflowFormDatas(@Param("createBy") String createBy, @Param("ActWorkflowFormData") List<ActWorkflowFormData> ActWorkflowFormData, Date date, String createName);
  60 +
  61 +
  62 +
  63 +
  64 + /**
  65 + * 修改动态单
  66 + *
  67 + * @param ActWorkflowFormData 动态单
  68 + * @return 结果
  69 + */
  70 + int updateActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
  71 +
  72 + /**
  73 + * 删除动态单
  74 + *
  75 + * @param id 动态单ID
  76 + * @return 结果
  77 + */
  78 + int deleteActWorkflowFormDataById(Long id);
  79 +
  80 + /**
  81 + * 批量删除动态单
  82 + *
  83 + * @param ids 需要删除的数据ID
  84 + * @return 结果
  85 + */
  86 + int deleteActWorkflowFormDataByIds(Long[] ids);
  87 +
  88 + List<ActWorkflowFormData> selectActWorkFlowFormDataListByUser(@Param("username") String username);
  89 + List<ActWorkflowFormData> selectNewActWorkflowFormDataByBusinessKey(Map<String,String> map);
  90 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/IActTaskService.java
1   -package com.trash.activiti.service;
2   -
3   -import com.github.pagehelper.Page;
4   -import com.trash.common.core.page.PageDomain;
5   -import com.trash.activiti.domain.dto.ActTaskDTO;
6   -import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO;
7   -
8   -import java.text.ParseException;
9   -import java.util.List;
10   -
11   -public interface IActTaskService {
12   - Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain);
13   - List<String>formDataShow(String taskID);
14   - int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException;
15   -
16   - Page<ActTaskDTO> selectRuntimeTaskHistoryDefinitionList(PageDomain pageDomain);
17   -
18   - Page<ActTaskDTO> selectTaskEndHistoryDefinitionList(PageDomain pageDomain);
19   -
20   - public void endAllThreesteptask(String type);
21   -
22   - public void deleteProcessById(String type);
23   -}
  1 +package com.trash.activiti.service;
  2 +
  3 +import com.github.pagehelper.Page;
  4 +import com.trash.common.core.page.PageDomain;
  5 +import com.trash.activiti.domain.dto.ActTaskDTO;
  6 +import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO;
  7 +
  8 +import java.text.ParseException;
  9 +import java.util.List;
  10 +
  11 +public interface IActTaskService {
  12 + Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain);
  13 + List<String>formDataShow(String taskID);
  14 + int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException;
  15 +
  16 + Page<ActTaskDTO> selectRuntimeTaskHistoryDefinitionList(PageDomain pageDomain);
  17 +
  18 + Page<ActTaskDTO> selectTaskEndHistoryDefinitionList(PageDomain pageDomain);
  19 +
  20 + public void endAllThreesteptask(String type);
  21 +
  22 + public void deleteProcessById(String type);
  23 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/IActWorkflowFormDataService.java
1   -package com.trash.activiti.service;
2   -
3   -import java.util.List;
4   -
5   -import com.trash.activiti.domain.ActWorkflowFormData;
6   -
7   -/**
8   - * 动态单Service接口
9   - *
10   - * @author danny
11   - * @date 2020-11-02
12   - */
13   -public interface IActWorkflowFormDataService
14   -{
15   - /**
16   - * 查询动态单
17   - *
18   - * @param id 动态单ID
19   - * @return 动态单
20   - */
21   - ActWorkflowFormData selectActWorkflowFormDataById(Long id);
22   -
23   - List<ActWorkflowFormData> selectActWorkflowFormDataByBusinessKey(String businessKey);
24   -
25   - /**
26   - * 查询动态单列表
27   - *
28   - * @param ActWorkflowFormData 动态单
29   - * @return 动态单集合
30   - */
31   - List<ActWorkflowFormData> selectActWorkflowFormDataList(ActWorkflowFormData ActWorkflowFormData);
32   -
33   - /**
34   - * 新增动态单
35   - *
36   - * @param ActWorkflowFormData 动态单
37   - * @return 结果
38   - */
39   - int insertActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
40   -
41   - /**
42   - * 新增动态单集合
43   - * @param ActWorkflowFormDatas 动态表单集合
44   - * @return
45   - */
46   - int insertActWorkflowFormDatas(List<ActWorkflowFormData> ActWorkflowFormDatas);
47   -
48   - /**
49   - * 修改动态单
50   - *
51   - * @param ActWorkflowFormData 动态单
52   - * @return 结果
53   - */
54   - int updateActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
55   -
56   - /**
57   - * 批量删除动态单
58   - *
59   - * @param ids 需要删除的动态单ID
60   - * @return 结果
61   - */
62   - int deleteActWorkflowFormDataByIds(Long[] ids);
63   -
64   - /**
65   - * 删除动态单信息
66   - *
67   - * @param id 动态单ID
68   - * @return 结果
69   - */
70   - int deleteActWorkflowFormDataById(Long id);
71   -}
  1 +package com.trash.activiti.service;
  2 +
  3 +import java.util.List;
  4 +
  5 +import com.trash.activiti.domain.ActWorkflowFormData;
  6 +
  7 +/**
  8 + * 动态单Service接口
  9 + *
  10 + * @author danny
  11 + * @date 2020-11-02
  12 + */
  13 +public interface IActWorkflowFormDataService
  14 +{
  15 + /**
  16 + * 查询动态单
  17 + *
  18 + * @param id 动态单ID
  19 + * @return 动态单
  20 + */
  21 + ActWorkflowFormData selectActWorkflowFormDataById(Long id);
  22 +
  23 + List<ActWorkflowFormData> selectActWorkflowFormDataByBusinessKey(String businessKey);
  24 +
  25 + /**
  26 + * 查询动态单列表
  27 + *
  28 + * @param ActWorkflowFormData 动态单
  29 + * @return 动态单集合
  30 + */
  31 + List<ActWorkflowFormData> selectActWorkflowFormDataList(ActWorkflowFormData ActWorkflowFormData);
  32 +
  33 + /**
  34 + * 新增动态单
  35 + *
  36 + * @param ActWorkflowFormData 动态单
  37 + * @return 结果
  38 + */
  39 + int insertActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
  40 +
  41 + /**
  42 + * 新增动态单集合
  43 + * @param ActWorkflowFormDatas 动态表单集合
  44 + * @return
  45 + */
  46 + int insertActWorkflowFormDatas(List<ActWorkflowFormData> ActWorkflowFormDatas);
  47 +
  48 + /**
  49 + * 修改动态单
  50 + *
  51 + * @param ActWorkflowFormData 动态单
  52 + * @return 结果
  53 + */
  54 + int updateActWorkflowFormData(ActWorkflowFormData ActWorkflowFormData);
  55 +
  56 + /**
  57 + * 批量删除动态单
  58 + *
  59 + * @param ids 需要删除的动态单ID
  60 + * @return 结果
  61 + */
  62 + int deleteActWorkflowFormDataByIds(Long[] ids);
  63 +
  64 + /**
  65 + * 删除动态单信息
  66 + *
  67 + * @param id 动态单ID
  68 + * @return 结果
  69 + */
  70 + int deleteActWorkflowFormDataById(Long id);
  71 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/IActivitiHistoryService.java
1   -package com.trash.activiti.service;
2   -
3   -import com.trash.activiti.domain.dto.ActivitiHighLineDTO;
4   -
5   -public interface IActivitiHistoryService {
6   - ActivitiHighLineDTO gethighLine(String instanceId);
7   -}
  1 +package com.trash.activiti.service;
  2 +
  3 +import com.trash.activiti.domain.dto.ActivitiHighLineDTO;
  4 +
  5 +public interface IActivitiHistoryService {
  6 + ActivitiHighLineDTO gethighLine(String instanceId);
  7 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/IFormHistoryDataService.java
1   -package com.trash.activiti.service;
2   -
3   -import java.util.List;
4   -import java.util.Map;
5   -
6   -import com.trash.activiti.domain.ActWorkflowFormData;
7   -import com.trash.activiti.domain.dto.HistoryDataDTO;
8   -
9   -/**
10   - * 汇讯数码科技(深圳)有限公司
11   - * 创建日期:2020/11/3-10:19
12   - * 版本 开发者 日期
13   - * 1.0 Danny 2020/11/3
14   - */
15   -public interface IFormHistoryDataService {
16   -
17   - List<ActWorkflowFormData> historyDataShow(String instanceId);
18   -
19   - List<ActWorkflowFormData> historyFromDataByTime(Map<String,String> map);
20   -}
  1 +package com.trash.activiti.service;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.trash.activiti.domain.ActWorkflowFormData;
  7 +import com.trash.activiti.domain.dto.HistoryDataDTO;
  8 +
  9 +/**
  10 + * 汇讯数码科技(深圳)有限公司
  11 + * 创建日期:2020/11/3-10:19
  12 + * 版本 开发者 日期
  13 + * 1.0 Danny 2020/11/3
  14 + */
  15 +public interface IFormHistoryDataService {
  16 +
  17 + List<ActWorkflowFormData> historyDataShow(String instanceId);
  18 +
  19 + List<ActWorkflowFormData> historyFromDataByTime(Map<String,String> map);
  20 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/IProcessDefinitionService.java
1   -package com.trash.activiti.service;
2   -
3   -import com.github.pagehelper.Page;
4   -import com.trash.common.core.domain.AjaxResult;
5   -import com.trash.common.core.page.PageDomain;
6   -import com.trash.activiti.domain.dto.DefinitionIdDTO;
7   -import com.trash.activiti.domain.dto.ProcessDefinitionDTO;
8   -
9   -import org.springframework.web.bind.annotation.PathVariable;
10   -import org.springframework.web.multipart.MultipartFile;
11   -
12   -import javax.servlet.http.HttpServletResponse;
13   -import java.io.IOException;
14   -
15   -/**
16   - * 汇讯数码科技(深圳)有限公司
17   - * 创建日期:2020/10/22-16:34
18   - * 版本 开发者 日期
19   - * 1.0 Danny 2020/10/22
20   - */
21   -public interface IProcessDefinitionService {
22   - /**
23   - * 获取流程定义集合
24   - * @param processDefinition
25   - * @return Page 分页信息
26   - */
27   - Page<ProcessDefinitionDTO> selectProcessDefinitionList(ProcessDefinitionDTO processDefinition, PageDomain pageDomain);
28   - DefinitionIdDTO getDefinitionsByInstanceId(String instanceId);
29   - /**
30   - * 删除流程定义
31   - * @param id
32   - * @return
33   - */
34   - int deleteProcessDefinitionById(String id);
35   - /**
36   - * 上传并部署流程定义
37   - * @param file
38   - * @return
39   - * @throws IOException
40   - */
41   - void uploadStreamAndDeployment(MultipartFile file) throws IOException;
42   - /**
43   - * 启动挂起流程流程定义
44   - * @param id 流程定义id
45   - * @param suspendState 流程状态
46   - * @return
47   - */
48   - void suspendOrActiveApply(String id, Integer suspendState);
49   -
50   - /**
51   - * 上传流程流程定义
52   - * @param multipartFile
53   - * @return
54   - */
55   - String upload(MultipartFile multipartFile) throws IOException;
56   - /**
57   - * 通过stringBPMN添加流程定义
58   - * @param stringBPMN
59   - * @return
60   - */
61   - void addDeploymentByString(String stringBPMN);
62   -
63   - /**
64   - * 获取流程定义XML
65   - * @param response
66   - * @param deploymentId
67   - * @param resourceName
68   - */
69   - void getProcessDefineXML(HttpServletResponse response, String deploymentId, String resourceName) throws IOException;
70   -}
  1 +package com.trash.activiti.service;
  2 +
  3 +import com.github.pagehelper.Page;
  4 +import com.trash.common.core.domain.AjaxResult;
  5 +import com.trash.common.core.page.PageDomain;
  6 +import com.trash.activiti.domain.dto.DefinitionIdDTO;
  7 +import com.trash.activiti.domain.dto.ProcessDefinitionDTO;
  8 +
  9 +import org.springframework.web.bind.annotation.PathVariable;
  10 +import org.springframework.web.multipart.MultipartFile;
  11 +
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.IOException;
  14 +
  15 +/**
  16 + * 汇讯数码科技(深圳)有限公司
  17 + * 创建日期:2020/10/22-16:34
  18 + * 版本 开发者 日期
  19 + * 1.0 Danny 2020/10/22
  20 + */
  21 +public interface IProcessDefinitionService {
  22 + /**
  23 + * 获取流程定义集合
  24 + * @param processDefinition
  25 + * @return Page 分页信息
  26 + */
  27 + Page<ProcessDefinitionDTO> selectProcessDefinitionList(ProcessDefinitionDTO processDefinition, PageDomain pageDomain);
  28 + DefinitionIdDTO getDefinitionsByInstanceId(String instanceId);
  29 + /**
  30 + * 删除流程定义
  31 + * @param id
  32 + * @return
  33 + */
  34 + int deleteProcessDefinitionById(String id);
  35 + /**
  36 + * 上传并部署流程定义
  37 + * @param file
  38 + * @return
  39 + * @throws IOException
  40 + */
  41 + void uploadStreamAndDeployment(MultipartFile file) throws IOException;
  42 + /**
  43 + * 启动挂起流程流程定义
  44 + * @param id 流程定义id
  45 + * @param suspendState 流程状态
  46 + * @return
  47 + */
  48 + void suspendOrActiveApply(String id, Integer suspendState);
  49 +
  50 + /**
  51 + * 上传流程流程定义
  52 + * @param multipartFile
  53 + * @return
  54 + */
  55 + String upload(MultipartFile multipartFile) throws IOException;
  56 + /**
  57 + * 通过stringBPMN添加流程定义
  58 + * @param stringBPMN
  59 + * @return
  60 + */
  61 + void addDeploymentByString(String stringBPMN);
  62 +
  63 + /**
  64 + * 获取流程定义XML
  65 + * @param response
  66 + * @param deploymentId
  67 + * @param resourceName
  68 + */
  69 + void getProcessDefineXML(HttpServletResponse response, String deploymentId, String resourceName) throws IOException;
  70 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/impl/ActTaskServiceImpl.java
1   -package com.trash.activiti.service.impl;
2   -
3   -import java.text.ParseException;
4   -import java.text.SimpleDateFormat;
5   -import java.util.ArrayList;
6   -import java.util.Comparator;
7   -import java.util.HashMap;
8   -import java.util.HashSet;
9   -import java.util.List;
10   -import java.util.Map;
11   -import java.util.Set;
12   -import java.util.stream.Collectors;
13   -
14   -import org.activiti.api.runtime.shared.identity.UserGroupManager;
15   -import org.activiti.api.runtime.shared.query.Pageable;
16   -import org.activiti.api.runtime.shared.security.SecurityManager;
17   -import org.activiti.api.task.model.Task;
18   -import org.activiti.api.task.model.builders.TaskPayloadBuilder;
19   -import org.activiti.bpmn.model.FormProperty;
20   -import org.activiti.bpmn.model.UserTask;
21   -import org.activiti.engine.HistoryService;
22   -import org.activiti.engine.ProcessEngine;
23   -import org.activiti.engine.ProcessEngines;
24   -import org.activiti.engine.RepositoryService;
25   -import org.activiti.engine.RuntimeService;
26   -import org.activiti.engine.TaskService;
27   -import org.activiti.engine.history.HistoricProcessInstance;
28   -import org.activiti.engine.history.HistoricProcessInstanceQuery;
29   -import org.activiti.engine.runtime.ProcessInstance;
30   -import org.activiti.engine.runtime.ProcessInstanceQuery;
31   -import org.activiti.engine.task.IdentityLink;
32   -import org.apache.commons.collections4.map.HashedMap;
33   -import org.springframework.beans.factory.annotation.Autowired;
34   -import org.springframework.stereotype.Service;
35   -
36   -import com.alibaba.fastjson.JSONObject;
37   -import com.github.pagehelper.Page;
38   -import com.trash.activiti.domain.ActWorkflowFormData;
39   -import com.trash.activiti.domain.dto.ActTaskDTO;
40   -import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO;
41   -import com.trash.activiti.mapper.ActReDeploymentMapper;
42   -import com.trash.activiti.mapper.ActWorkflowFormDataMapper;
43   -import com.trash.activiti.service.IActTaskService;
44   -import com.trash.activiti.service.IActWorkflowFormDataService;
45   -import com.trash.activiti.service.myTaskService;
46   -import com.trash.common.core.page.PageDomain;
47   -import com.trash.common.core.redis.RedisCache;
48   -import com.trash.common.utils.RemoteServerUtils;
49   -import com.trash.common.utils.SecurityUtils;
50   -import com.trash.common.utils.ServletUtils;
51   -import com.trash.common.utils.StringUtils;
52   -import com.trash.common.utils.util.PostSms;
53   -import com.trash.common.utils.vo.mt.JsonSmsSend;
54   -import com.trash.common.utils.vo.mt.Mobile;
55   -
56   -@Service
57   -public class ActTaskServiceImpl implements IActTaskService {
58   -
59   - @Autowired
60   - private RepositoryService repositoryService;
61   -
62   - @Autowired
63   - private myTaskService taskRuntime;
64   -
65   - @Autowired
66   - private TaskService taskService;
67   -
68   - @Autowired
69   - private RuntimeService runtimeService;
70   -
71   - @Autowired
72   - private IActWorkflowFormDataService actWorkflowFormDataService;
73   -
74   - @Autowired
75   - private ActWorkflowFormDataMapper actWorkflowFormDataMapper;
76   -
77   - @Autowired
78   - private ActReDeploymentMapper actMapper;
79   -
80   - @Autowired
81   - SecurityManager securityManager;
82   -
83   - @Autowired
84   - UserGroupManager userGroupManager;
85   -
86   - HistoricProcessInstanceQuery processInstanceQuery;
87   -
88   - @Autowired
89   - private RedisCache redisCache;
90   -
91   - @Override
92   - public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) {
93   - Page<ActTaskDTO> list = new Page<ActTaskDTO>();
94   - List<ActTaskDTO> actTaskDTOS = new ArrayList<>();
95   -
96   - if (ServletUtils.getParameter("role") != null) {
97   - List<String> posts = new ArrayList<>();
98   - posts.add(ServletUtils.getParameter("role"));
99   - SecurityUtils.getLoginUser().getUser().setPostIds(posts);
100   - }
101   - if (ServletUtils.getParameter("dept") != null) {
102   - List<String> roles = new ArrayList<>();
103   - roles.add(ServletUtils.getParameter("dept"));
104   - SecurityUtils.getLoginUser().getUser().setRoleIds(roles);
105   - }
106   - if (SecurityUtils.getLoginUser().getUser().getPostIds().size() == 0
107   - || SecurityUtils.getLoginUser().getUser().getRoleIds().size() == 0) {
108   - return list;
109   - }
110   -
111   - String type = ServletUtils.getParameter("type");
112   - String prev = ServletUtils.getParameter("prev");
113   - String name = ServletUtils.getParameter("name");
114   - if (type != null && type.isEmpty()) {
115   - type = null;
116   - }
117   - if (prev != null && prev.isEmpty()) {
118   - prev = null;
119   - }
120   -
121   - String[] strings;
122   - Set<String> keys = new HashSet<String>();
123   -
124   - if (type != null && !type.isEmpty()) {
125   - strings = type.split(",");
126   - keys = new HashSet<String>();
127   -
128   - for (String str : strings) {
129   - keys.add(str);
130   - }
131   - }
132   - org.activiti.api.runtime.shared.query.Page<Task> pageTasks;
133   -
134   - int pageNum = pageDomain.getPageNum();
135   - int pageSize = pageDomain.getPageSize();
136   - if (prev == null) {
137   - pageTasks = taskRuntime.tasks(Pageable.of((pageNum - 1) * pageSize, pageSize), null, keys, name);
138   - } else {
139   - pageTasks = taskRuntime.tasks(Pageable.of(0, 999999), null, keys, name);
140   - }
141   -
142   - List<Task> tasks = pageTasks.getContent();
143   - int totalItems = pageTasks.getTotalItems();
144   -
145   - list.setTotal(totalItems);
146   -
147   - if (totalItems != 0) {
148   -
149   - Set<String> processInstanceIdIds = tasks.parallelStream().map(t -> t.getProcessInstanceId())
150   - .collect(Collectors.toSet());
151   -
152   - if (processInstanceIdIds.size() > 0) {
153   -
154   - List<Map<String, Object>> maps = actMapper.selectWorkByIds(processInstanceIdIds);
155   -
156   - for (Task task : tasks) {
157   - try {
158   - ActTaskDTO dto = new ActTaskDTO(task, maps.parallelStream()
159   - .filter(t -> t.get("instance_id").equals(task.getProcessInstanceId())).findAny().get());
160   -
161   - if (prev != null && !prev.isEmpty()
162   - && (dto.getPrev() == null || !dto.getPrev().contains(prev))) {
163   - continue;
164   - }
165   -
166   - list.add(dto);
167   - } catch (Exception e) {
168   - e.printStackTrace();
169   - }
170   - }
171   - }
172   - }
173   -
174   - if (prev != null) {
175   - list.setTotal(list.size());
176   - }
177   -
178   - return list;
179   - }
180   -
181   - @Override
182   - public Page<ActTaskDTO> selectTaskEndHistoryDefinitionList(PageDomain pageDomain) {
183   -
184   - int pageNum = pageDomain.getPageNum();
185   - int pageSize = pageDomain.getPageSize();
186   -
187   - Page<ActTaskDTO> list = new Page<ActTaskDTO>();
188   -
189   - ProcessEngine pes = ProcessEngines.getDefaultProcessEngine();
190   - HistoryService historyService = pes.getHistoryService();
191   -
192   - String username = securityManager.getAuthenticatedUserId();
193   -
194   - Map map = new HashedMap<>();
195   -
196   - String type = ServletUtils.getParameter("type");
197   - String name = ServletUtils.getParameter("name");
198   - if (type != null && type.isEmpty()) {
199   - type = null;
200   - }
201   - if (name != null && name.isEmpty()) {
202   - name = null;
203   - }
204   - map.put("username", username);
205   - if (name != null)
206   - map.put("name", name);
207   -
208   - List<HistoricProcessInstance> processInstanceList;
209   -
210   - HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().involvedUser(username)
211   - .finished().orderByProcessInstanceStartTime().desc();
212   -
213   - if (name != null)
214   - query.processInstanceNameLike("%" + name + "%");
215   -
216   - if (type != null && !type.isEmpty()) {
217   - List<String> types = new ArrayList<String>();
218   - for (String string : type.split(",")) {
219   - types.add(string);
220   - }
221   - query.processDefinitionKeyIn(types);
222   - }
223   -
224   - list.setTotal(query.count());
225   -
226   - processInstanceList = query.listPage((pageNum - 1) * pageSize, pageSize);
227   -
228   - // List<ActWorkflowFormData> dataList =
229   - // actWorkflowFormDataMapper.selectActWorkFlowFormDataListByUser(username);
230   -
231   - if (processInstanceList.size() > 0) {
232   -
233   - Set<String> idString = new HashSet<String>();
234   - for (HistoricProcessInstance pi : processInstanceList) {
235   - idString.add(pi.getId());
236   - }
237   -
238   - List<Map<String, Object>> maps = actMapper.selectHistoryWorkByPIds(idString);
239   -
240   - for (HistoricProcessInstance p : processInstanceList) {
241   - try {
242   - ActTaskDTO dto = new ActTaskDTO(p, maps.parallelStream()
243   - .filter(pi -> p.getId().equals(pi.get("instance_id"))).findAny().get());
244   -
245   - list.add(dto);
246   - } catch (Exception e) {
247   - System.out.println(p.getBusinessKey());
248   - e.printStackTrace();
249   - }
250   - }
251   -
252   - }
253   -
254   - return list;
255   - }
256   -
257   - @Override
258   - public Page<ActTaskDTO> selectRuntimeTaskHistoryDefinitionList(PageDomain pageDomain) {
259   - Page<ActTaskDTO> list = new Page<ActTaskDTO>();
260   -
261   - int pageNum = pageDomain.getPageNum();
262   - int pageSize = pageDomain.getPageSize();
263   - String username = securityManager.getAuthenticatedUserId();
264   -
265   - Map map = new HashedMap<>();
266   -
267   - String type = ServletUtils.getParameter("type");
268   - String name = ServletUtils.getParameter("name");
269   - map.put("username", username);
270   - if (type != null && type.isEmpty()) {
271   - type = null;
272   - }
273   - if (name != null && name.isEmpty()) {
274   - name = null;
275   - }
276   -
277   - ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().involvedUser(username);
278   -
279   - if (name != null)
280   - query.processInstanceNameLike("%" + name + "%");
281   -
282   - if (type != null && !type.isEmpty()) {
283   - Set<String> types = new HashSet<String>();
284   - for (String string : type.split(",")) {
285   - types.add(string);
286   - }
287   - query.processDefinitionKeys(types);
288   - }
289   -
290   - List<ProcessInstance> processInstanceList = query.list();
291   -
292   - list.setTotal(query.count());
293   -
294   - processInstanceList = query.listPage((pageNum - 1) * pageSize, pageSize);
295   -
296   - if (processInstanceList.size() > 0) {
297   -
298   - List<String> pids = processInstanceList.parallelStream().map(p -> p.getId()).collect(Collectors.toList());
299   -
300   - List<org.activiti.engine.task.Task> tasks = taskService.createTaskQuery().processInstanceIdIn(pids).list();
301   -
302   - Set<String> idString = new HashSet<String>();
303   - for (ProcessInstance pi : processInstanceList) {
304   - idString.add(pi.getId());
305   - }
306   -
307   - List<Map<String, Object>> maps = actMapper.selectWorkByIds(idString);
308   -
309   - List<ActWorkflowFormData> dataList = actWorkflowFormDataMapper
310   - .selectActWorkFlowFormDataListByUser(username);
311   - if (processInstanceList.size() > 0) {
312   - for (ProcessInstance p : processInstanceList) {
313   - try {
314   - ActTaskDTO dto = new ActTaskDTO(p, maps.parallelStream()
315   - .filter(pi -> p.getProcessInstanceId().equals(pi.get("instance_id"))).findAny().get(),
316   - dataList.parallelStream().filter(pi -> p.getBusinessKey().equals(pi.getBusinessKey()))
317   - .findAny().get(),
318   - tasks.parallelStream().filter(t -> p.getId().equals(t.getProcessInstanceId())).findAny()
319   - .get());
320   -
321   - list.add(dto);
322   - } catch (Exception e) {
323   - e.printStackTrace();
324   - }
325   - }
326   -
327   - }
328   - }
329   -
330   - list.sort(new Comparator<ActTaskDTO>() {
331   -
332   - @Override
333   - public int compare(ActTaskDTO o1, ActTaskDTO o2) {
334   - // TODO Auto-generated method stub
335   - return (int) (o2.getCreatedDate().getTime() - o1.getCreatedDate().getTime());
336   - }
337   - });
338   -
339   - return list;
340   - }
341   -
342   - public void getCheckData(ActTaskDTO actTaskDTOS) {
343   - ActWorkflowFormData ActWorkflowFormData = new ActWorkflowFormData();
344   - ActWorkflowFormData.setBusinessKey(actTaskDTOS.getBusinessKey());
345   - ActWorkflowFormData.setCreateBy(securityManager.getAuthenticatedUserId());
346   - ActWorkflowFormData.setControlName("审批");
347   -
348   - ActWorkflowFormData = actWorkflowFormDataService.selectActWorkflowFormDataList(ActWorkflowFormData).get(0);
349   -
350   - actTaskDTOS.setCheckStatus(ActWorkflowFormData.getControlValue().equals("通过") ? "0" : "1");
351   - actTaskDTOS.setCreatedDate(ActWorkflowFormData.getCreateTime());
352   -
353   - }
354   -
355   - SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
356   -
357   - @Override
358   - public List<String> formDataShow(String taskID) {
359   - Task task = taskRuntime.task(taskID);
360   - /*
361   - * ---------------------------------------------------------------------
362   - * --------- FormProperty_0ueitp2--__!!类型--__!!名称--__!!是否参数--__!!默认值 例子:
363   - * FormProperty_0lovri0--__!!string--__!!姓名--__!!f--__!!同意!!__--驳回
364   - * FormProperty_1iu6onu--__!!int--__!!年龄--__!!s
365   - *
366   - * 默认值:无、字符常量、FormProperty_开头定义过的控件ID
367   - * 是否参数:f为不是参数,s是字符,t是时间(不需要int,因为这里int等价于string)
368   - * 注:类型是可以获取到的,但是为了统一配置原则,都配置到
369   - */
370   -
371   - // 注意!!!!!!!!:表单Key必须要任务编号一模一样,因为参数需要任务key,但是无法获取,只能获取表单key“task.getFormKey()”当做任务key
372   - UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId())
373   - .getFlowElement(task.getFormKey());
374   -
375   - if (userTask == null) {
376   - return null;
377   - }
378   - List<FormProperty> formProperties = userTask.getFormProperties();
379   - List<String> collect = formProperties.stream().map(fp -> fp.getId()).collect(Collectors.toList());
380   -
381   - return collect;
382   - }
383   -
384   - @Override
385   - public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException {
386   - Task task = taskRuntime.task(taskID);
387   -
388   - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
389   - .processInstanceId(task.getProcessInstanceId()).singleResult();
390   -
391   - Map<String, Object> str = processInstance.getProcessVariables();
392   -
393   - String desc = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult()
394   - .getDescription();
395   - // 办文办事功能:分管领导指定部门时,将部门code存入desc
396   - if (!StringUtils.isEmpty(awfs.get(0).getDeptCode())) {
397   - desc = awfs.get(0).getDeptCode();
398   - }
399   -
400   - Boolean hasVariables = false;// 没有任何参数
401   - HashMap<String, Object> variables = new HashMap<String, Object>();
402   - // 前端传来的字符串,拆分成每个控件
403   - List<ActWorkflowFormData> acwfds = new ArrayList<>();
404   - for (ActWorkflowFormDataDTO awf : awfs) {
405   - ActWorkflowFormData actWorkflowFormData = new ActWorkflowFormData(processInstance.getBusinessKey(), awf,
406   - task);
407   - acwfds.add(actWorkflowFormData);
408   - // 构建参数集合
409   - if (!"f".equals(awf.getControlIsParam())) {
410   - variables.put(awf.getControlId(), awf.getControlValue());
411   - hasVariables = true;
412   - }
413   -
414   - if (processInstance.getProcessDefinitionKey().equals("handleAffairs")
415   - && awf.getControlId().equals("FormProperty_0aq22i0")) {
416   - variables.put("index", awf.getIndex());
417   - }
418   - } // for结束
419   - if (task.getAssignee() == null) {
420   - taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
421   - }
422   - if (hasVariables) {
423   - // 带参数完成任务
424   - taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).withVariables(variables).build());
425   - } else {
426   - taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).build());
427   - }
428   -
429   - if (desc != null)
430   - updateThreesetpTask(processInstance, desc);
431   -
432   - // 写入数据库
433   - return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds);
434   - }
435   -
436   - private void updateThreesetpTask(ProcessInstance processInstance, String placeCode) {
437   -
438   - final org.activiti.engine.task.Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId())
439   - .singleResult();
440   -
441   - if (task == null)
442   - return;
443   -
444   - if (task != null) {
445   - String token = SecurityUtils.getLoginUser().getToken();
446   -
447   - new Thread(new Runnable() {
448   -
449   - @Override
450   - public void run() {
451   -
452   - List<Mobile> mobileList = new ArrayList<Mobile>();
453   -
454   - String number = actMapper.getPhoneNumber(processInstance.getProcessDefinitionKey(), task.getName());
455   -
456   - if (number != null) {
457   - String smsString = "工作提醒:您有新的工作流程,请及时处理。";
458   - Mobile mobile = new Mobile();
459   - mobile.setMobile(number);
460   - mobileList.add(mobile);
461   -
462   - if (processInstance.getProcessDefinitionKey().equals("workflow_constructsite")) {
463   -
464   - JSONObject json = RemoteServerUtils.getConstructionInfo(processInstance.getBusinessKey().split(":")[1],token);
465   - if (json != null)
466   - smsString = "审批提醒:您有新的工作流程需要审批 " + json.getString("areaCodeName") + " "
467   - + json.getString("name");
468   -
469   - }
470   -
471   - if (processInstance.getProcessDefinitionKey().equals("workflow_caseoffline")) {
472   -
473   - String dname = actMapper.getCaseTypeName("case_offline_type",
474   - processInstance.getBusinessKey().split(":")[1]);
475   - smsString = "案卷提醒:有一条" + dname + "的案卷,请及时处理。";
476   - }
477   -
478   - JsonSmsSend jsonSmsSend = PostSms.sendSms(mobileList, smsString);
479   - if (jsonSmsSend != null) {
480   - if (jsonSmsSend.getState() == 0) {
481   - System.out.println("发送成功");
482   - } else {
483   - System.out.println(jsonSmsSend.getMessage());
484   - }
485   - } else {
486   - System.out.println("发送返回空");
487   - }
488   - }
489   -
490   - }
491   -
492   - }).start();
493   - }
494   -
495   - task.setDescription(placeCode);
496   -
497   - List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId());
498   -
499   - if (list.size() == 1) {
500   - taskService.addCandidateUser(task.getId(), placeCode);
501   - }
502   -
503   - taskService.saveTask(task);
504   -
505   - if ("车辆所属企业".equals(task.getName())) {
506   - org.activiti.engine.task.Task task1 = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
507   - taskService.setAssignee(task1.getId(), placeCode);
508   - return;
509   - }
510   -
511   - }
512   -
513   - @Override
514   - public void deleteProcessById(String type) {
515   - runtimeService.deleteProcessInstance(type, "删除");
516   - }
517   -
518   - @Override
519   - public void endAllThreesteptask(String type) {
520   -
521   - List<ProcessInstance> processes = runtimeService.createProcessInstanceQuery().processDefinitionKey(type).list();
522   -
523   - for (ProcessInstance proc : processes) {
524   - if (type.equals(proc.getProcessDefinitionKey())) {
525   - try {
526   -
527   - String executionId = proc.getSuperExecutionId();
528   - Map<String, Object> map = proc.getProcessVariables();
529   -
530   - // runtimeService.removeVariable(executionId, variableName);
531   -
532   - runtimeService.deleteProcessInstance(proc.getId(), "超时");
533   - } catch (Exception e) {
534   - e.printStackTrace();
535   - }
536   - }
537   - }
538   -
539   - }
  1 +package com.trash.activiti.service.impl;
  2 +
  3 +import java.text.ParseException;
  4 +import java.text.SimpleDateFormat;
  5 +import java.util.ArrayList;
  6 +import java.util.Comparator;
  7 +import java.util.HashMap;
  8 +import java.util.HashSet;
  9 +import java.util.List;
  10 +import java.util.Map;
  11 +import java.util.Set;
  12 +import java.util.stream.Collectors;
  13 +
  14 +import org.activiti.api.runtime.shared.identity.UserGroupManager;
  15 +import org.activiti.api.runtime.shared.query.Pageable;
  16 +import org.activiti.api.runtime.shared.security.SecurityManager;
  17 +import org.activiti.api.task.model.Task;
  18 +import org.activiti.api.task.model.builders.TaskPayloadBuilder;
  19 +import org.activiti.bpmn.model.FormProperty;
  20 +import org.activiti.bpmn.model.UserTask;
  21 +import org.activiti.engine.HistoryService;
  22 +import org.activiti.engine.ProcessEngine;
  23 +import org.activiti.engine.ProcessEngines;
  24 +import org.activiti.engine.RepositoryService;
  25 +import org.activiti.engine.RuntimeService;
  26 +import org.activiti.engine.TaskService;
  27 +import org.activiti.engine.history.HistoricProcessInstance;
  28 +import org.activiti.engine.history.HistoricProcessInstanceQuery;
  29 +import org.activiti.engine.runtime.ProcessInstance;
  30 +import org.activiti.engine.runtime.ProcessInstanceQuery;
  31 +import org.activiti.engine.task.IdentityLink;
  32 +import org.apache.commons.collections4.map.HashedMap;
  33 +import org.springframework.beans.factory.annotation.Autowired;
  34 +import org.springframework.stereotype.Service;
  35 +
  36 +import com.alibaba.fastjson.JSONObject;
  37 +import com.github.pagehelper.Page;
  38 +import com.trash.activiti.domain.ActWorkflowFormData;
  39 +import com.trash.activiti.domain.dto.ActTaskDTO;
  40 +import com.trash.activiti.domain.dto.ActWorkflowFormDataDTO;
  41 +import com.trash.activiti.mapper.ActReDeploymentMapper;
  42 +import com.trash.activiti.mapper.ActWorkflowFormDataMapper;
  43 +import com.trash.activiti.service.IActTaskService;
  44 +import com.trash.activiti.service.IActWorkflowFormDataService;
  45 +import com.trash.activiti.service.myTaskService;
  46 +import com.trash.common.core.page.PageDomain;
  47 +import com.trash.common.core.redis.RedisCache;
  48 +import com.trash.common.utils.RemoteServerUtils;
  49 +import com.trash.common.utils.SecurityUtils;
  50 +import com.trash.common.utils.ServletUtils;
  51 +import com.trash.common.utils.StringUtils;
  52 +import com.trash.common.utils.util.PostSms;
  53 +import com.trash.common.utils.vo.mt.JsonSmsSend;
  54 +import com.trash.common.utils.vo.mt.Mobile;
  55 +
  56 +@Service
  57 +public class ActTaskServiceImpl implements IActTaskService {
  58 +
  59 + @Autowired
  60 + private RepositoryService repositoryService;
  61 +
  62 + @Autowired
  63 + private myTaskService taskRuntime;
  64 +
  65 + @Autowired
  66 + private TaskService taskService;
  67 +
  68 + @Autowired
  69 + private RuntimeService runtimeService;
  70 +
  71 + @Autowired
  72 + private IActWorkflowFormDataService actWorkflowFormDataService;
  73 +
  74 + @Autowired
  75 + private ActWorkflowFormDataMapper actWorkflowFormDataMapper;
  76 +
  77 + @Autowired
  78 + private ActReDeploymentMapper actMapper;
  79 +
  80 + @Autowired
  81 + SecurityManager securityManager;
  82 +
  83 + @Autowired
  84 + UserGroupManager userGroupManager;
  85 +
  86 + HistoricProcessInstanceQuery processInstanceQuery;
  87 +
  88 + @Autowired
  89 + private RedisCache redisCache;
  90 +
  91 + @Override
  92 + public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) {
  93 + Page<ActTaskDTO> list = new Page<ActTaskDTO>();
  94 + List<ActTaskDTO> actTaskDTOS = new ArrayList<>();
  95 +
  96 + if (ServletUtils.getParameter("role") != null) {
  97 + List<String> posts = new ArrayList<>();
  98 + posts.add(ServletUtils.getParameter("role"));
  99 + SecurityUtils.getLoginUser().getUser().setPostIds(posts);
  100 + }
  101 + if (ServletUtils.getParameter("dept") != null) {
  102 + List<String> roles = new ArrayList<>();
  103 + roles.add(ServletUtils.getParameter("dept"));
  104 + SecurityUtils.getLoginUser().getUser().setRoleIds(roles);
  105 + }
  106 + if (SecurityUtils.getLoginUser().getUser().getPostIds().size() == 0
  107 + || SecurityUtils.getLoginUser().getUser().getRoleIds().size() == 0) {
  108 + return list;
  109 + }
  110 +
  111 + String type = ServletUtils.getParameter("type");
  112 + String prev = ServletUtils.getParameter("prev");
  113 + String name = ServletUtils.getParameter("name");
  114 + if (type != null && type.isEmpty()) {
  115 + type = null;
  116 + }
  117 + if (prev != null && prev.isEmpty()) {
  118 + prev = null;
  119 + }
  120 +
  121 + String[] strings;
  122 + Set<String> keys = new HashSet<String>();
  123 +
  124 + if (type != null && !type.isEmpty()) {
  125 + strings = type.split(",");
  126 + keys = new HashSet<String>();
  127 +
  128 + for (String str : strings) {
  129 + keys.add(str);
  130 + }
  131 + }
  132 + org.activiti.api.runtime.shared.query.Page<Task> pageTasks;
  133 +
  134 + int pageNum = pageDomain.getPageNum();
  135 + int pageSize = pageDomain.getPageSize();
  136 + if (prev == null) {
  137 + pageTasks = taskRuntime.tasks(Pageable.of((pageNum - 1) * pageSize, pageSize), null, keys, name);
  138 + } else {
  139 + pageTasks = taskRuntime.tasks(Pageable.of(0, 999999), null, keys, name);
  140 + }
  141 +
  142 + List<Task> tasks = pageTasks.getContent();
  143 + int totalItems = pageTasks.getTotalItems();
  144 +
  145 + list.setTotal(totalItems);
  146 +
  147 + if (totalItems != 0) {
  148 +
  149 + Set<String> processInstanceIdIds = tasks.parallelStream().map(t -> t.getProcessInstanceId())
  150 + .collect(Collectors.toSet());
  151 +
  152 + if (processInstanceIdIds.size() > 0) {
  153 +
  154 + List<Map<String, Object>> maps = actMapper.selectWorkByIds(processInstanceIdIds);
  155 +
  156 + for (Task task : tasks) {
  157 + try {
  158 + ActTaskDTO dto = new ActTaskDTO(task, maps.parallelStream()
  159 + .filter(t -> t.get("instance_id").equals(task.getProcessInstanceId())).findAny().get());
  160 +
  161 + if (prev != null && !prev.isEmpty()
  162 + && (dto.getPrev() == null || !dto.getPrev().contains(prev))) {
  163 + continue;
  164 + }
  165 +
  166 + list.add(dto);
  167 + } catch (Exception e) {
  168 + e.printStackTrace();
  169 + }
  170 + }
  171 + }
  172 + }
  173 +
  174 + if (prev != null) {
  175 + list.setTotal(list.size());
  176 + }
  177 +
  178 + return list;
  179 + }
  180 +
  181 + @Override
  182 + public Page<ActTaskDTO> selectTaskEndHistoryDefinitionList(PageDomain pageDomain) {
  183 +
  184 + int pageNum = pageDomain.getPageNum();
  185 + int pageSize = pageDomain.getPageSize();
  186 +
  187 + Page<ActTaskDTO> list = new Page<ActTaskDTO>();
  188 +
  189 + ProcessEngine pes = ProcessEngines.getDefaultProcessEngine();
  190 + HistoryService historyService = pes.getHistoryService();
  191 +
  192 + String username = securityManager.getAuthenticatedUserId();
  193 +
  194 + Map map = new HashedMap<>();
  195 +
  196 + String type = ServletUtils.getParameter("type");
  197 + String name = ServletUtils.getParameter("name");
  198 + if (type != null && type.isEmpty()) {
  199 + type = null;
  200 + }
  201 + if (name != null && name.isEmpty()) {
  202 + name = null;
  203 + }
  204 + map.put("username", username);
  205 + if (name != null)
  206 + map.put("name", name);
  207 +
  208 + List<HistoricProcessInstance> processInstanceList;
  209 +
  210 + HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().involvedUser(username)
  211 + .finished().orderByProcessInstanceStartTime().desc();
  212 +
  213 + if (name != null)
  214 + query.processInstanceNameLike("%" + name + "%");
  215 +
  216 + if (type != null && !type.isEmpty()) {
  217 + List<String> types = new ArrayList<String>();
  218 + for (String string : type.split(",")) {
  219 + types.add(string);
  220 + }
  221 + query.processDefinitionKeyIn(types);
  222 + }
  223 +
  224 + list.setTotal(query.count());
  225 +
  226 + processInstanceList = query.listPage((pageNum - 1) * pageSize, pageSize);
  227 +
  228 + // List<ActWorkflowFormData> dataList =
  229 + // actWorkflowFormDataMapper.selectActWorkFlowFormDataListByUser(username);
  230 +
  231 + if (processInstanceList.size() > 0) {
  232 +
  233 + Set<String> idString = new HashSet<String>();
  234 + for (HistoricProcessInstance pi : processInstanceList) {
  235 + idString.add(pi.getId());
  236 + }
  237 +
  238 + List<Map<String, Object>> maps = actMapper.selectHistoryWorkByPIds(idString);
  239 +
  240 + for (HistoricProcessInstance p : processInstanceList) {
  241 + try {
  242 + ActTaskDTO dto = new ActTaskDTO(p, maps.parallelStream()
  243 + .filter(pi -> p.getId().equals(pi.get("instance_id"))).findAny().get());
  244 +
  245 + list.add(dto);
  246 + } catch (Exception e) {
  247 + System.out.println(p.getBusinessKey());
  248 + e.printStackTrace();
  249 + }
  250 + }
  251 +
  252 + }
  253 +
  254 + return list;
  255 + }
  256 +
  257 + @Override
  258 + public Page<ActTaskDTO> selectRuntimeTaskHistoryDefinitionList(PageDomain pageDomain) {
  259 + Page<ActTaskDTO> list = new Page<ActTaskDTO>();
  260 +
  261 + int pageNum = pageDomain.getPageNum();
  262 + int pageSize = pageDomain.getPageSize();
  263 + String username = securityManager.getAuthenticatedUserId();
  264 +
  265 + Map map = new HashedMap<>();
  266 +
  267 + String type = ServletUtils.getParameter("type");
  268 + String name = ServletUtils.getParameter("name");
  269 + map.put("username", username);
  270 + if (type != null && type.isEmpty()) {
  271 + type = null;
  272 + }
  273 + if (name != null && name.isEmpty()) {
  274 + name = null;
  275 + }
  276 +
  277 + ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().involvedUser(username);
  278 +
  279 + if (name != null)
  280 + query.processInstanceNameLike("%" + name + "%");
  281 +
  282 + if (type != null && !type.isEmpty()) {
  283 + Set<String> types = new HashSet<String>();
  284 + for (String string : type.split(",")) {
  285 + types.add(string);
  286 + }
  287 + query.processDefinitionKeys(types);
  288 + }
  289 +
  290 + List<ProcessInstance> processInstanceList = query.list();
  291 +
  292 + list.setTotal(query.count());
  293 +
  294 + processInstanceList = query.listPage((pageNum - 1) * pageSize, pageSize);
  295 +
  296 + if (processInstanceList.size() > 0) {
  297 +
  298 + List<String> pids = processInstanceList.parallelStream().map(p -> p.getId()).collect(Collectors.toList());
  299 +
  300 + List<org.activiti.engine.task.Task> tasks = taskService.createTaskQuery().processInstanceIdIn(pids).list();
  301 +
  302 + Set<String> idString = new HashSet<String>();
  303 + for (ProcessInstance pi : processInstanceList) {
  304 + idString.add(pi.getId());
  305 + }
  306 +
  307 + List<Map<String, Object>> maps = actMapper.selectWorkByIds(idString);
  308 +
  309 + List<ActWorkflowFormData> dataList = actWorkflowFormDataMapper
  310 + .selectActWorkFlowFormDataListByUser(username);
  311 + if (processInstanceList.size() > 0) {
  312 + for (ProcessInstance p : processInstanceList) {
  313 + try {
  314 + ActTaskDTO dto = new ActTaskDTO(p, maps.parallelStream()
  315 + .filter(pi -> p.getProcessInstanceId().equals(pi.get("instance_id"))).findAny().get(),
  316 + dataList.parallelStream().filter(pi -> p.getBusinessKey().equals(pi.getBusinessKey()))
  317 + .findAny().get(),
  318 + tasks.parallelStream().filter(t -> p.getId().equals(t.getProcessInstanceId())).findAny()
  319 + .get());
  320 +
  321 + list.add(dto);
  322 + } catch (Exception e) {
  323 + e.printStackTrace();
  324 + }
  325 + }
  326 +
  327 + }
  328 + }
  329 +
  330 + list.sort(new Comparator<ActTaskDTO>() {
  331 +
  332 + @Override
  333 + public int compare(ActTaskDTO o1, ActTaskDTO o2) {
  334 + // TODO Auto-generated method stub
  335 + return (int) (o2.getCreatedDate().getTime() - o1.getCreatedDate().getTime());
  336 + }
  337 + });
  338 +
  339 + return list;
  340 + }
  341 +
  342 + public void getCheckData(ActTaskDTO actTaskDTOS) {
  343 + ActWorkflowFormData ActWorkflowFormData = new ActWorkflowFormData();
  344 + ActWorkflowFormData.setBusinessKey(actTaskDTOS.getBusinessKey());
  345 + ActWorkflowFormData.setCreateBy(securityManager.getAuthenticatedUserId());
  346 + ActWorkflowFormData.setControlName("审批");
  347 +
  348 + ActWorkflowFormData = actWorkflowFormDataService.selectActWorkflowFormDataList(ActWorkflowFormData).get(0);
  349 +
  350 + actTaskDTOS.setCheckStatus(ActWorkflowFormData.getControlValue().equals("通过") ? "0" : "1");
  351 + actTaskDTOS.setCreatedDate(ActWorkflowFormData.getCreateTime());
  352 +
  353 + }
  354 +
  355 + SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
  356 +
  357 + @Override
  358 + public List<String> formDataShow(String taskID) {
  359 + Task task = taskRuntime.task(taskID);
  360 + /*
  361 + * ---------------------------------------------------------------------
  362 + * --------- FormProperty_0ueitp2--__!!类型--__!!名称--__!!是否参数--__!!默认值 例子:
  363 + * FormProperty_0lovri0--__!!string--__!!姓名--__!!f--__!!同意!!__--驳回
  364 + * FormProperty_1iu6onu--__!!int--__!!年龄--__!!s
  365 + *
  366 + * 默认值:无、字符常量、FormProperty_开头定义过的控件ID
  367 + * 是否参数:f为不是参数,s是字符,t是时间(不需要int,因为这里int等价于string)
  368 + * 注:类型是可以获取到的,但是为了统一配置原则,都配置到
  369 + */
  370 +
  371 + // 注意!!!!!!!!:表单Key必须要任务编号一模一样,因为参数需要任务key,但是无法获取,只能获取表单key“task.getFormKey()”当做任务key
  372 + UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId())
  373 + .getFlowElement(task.getFormKey());
  374 +
  375 + if (userTask == null) {
  376 + return null;
  377 + }
  378 + List<FormProperty> formProperties = userTask.getFormProperties();
  379 + List<String> collect = formProperties.stream().map(fp -> fp.getId()).collect(Collectors.toList());
  380 +
  381 + return collect;
  382 + }
  383 +
  384 + @Override
  385 + public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException {
  386 + Task task = taskRuntime.task(taskID);
  387 +
  388 + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
  389 + .processInstanceId(task.getProcessInstanceId()).singleResult();
  390 +
  391 + Map<String, Object> str = processInstance.getProcessVariables();
  392 +
  393 + String desc = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult()
  394 + .getDescription();
  395 + // 办文办事功能:分管领导指定部门时,将部门code存入desc
  396 + if (!StringUtils.isEmpty(awfs.get(0).getDeptCode())) {
  397 + desc = awfs.get(0).getDeptCode();
  398 + }
  399 +
  400 + Boolean hasVariables = false;// 没有任何参数
  401 + HashMap<String, Object> variables = new HashMap<String, Object>();
  402 + // 前端传来的字符串,拆分成每个控件
  403 + List<ActWorkflowFormData> acwfds = new ArrayList<>();
  404 + for (ActWorkflowFormDataDTO awf : awfs) {
  405 + ActWorkflowFormData actWorkflowFormData = new ActWorkflowFormData(processInstance.getBusinessKey(), awf,
  406 + task);
  407 + acwfds.add(actWorkflowFormData);
  408 + // 构建参数集合
  409 + if (!"f".equals(awf.getControlIsParam())) {
  410 + variables.put(awf.getControlId(), awf.getControlValue());
  411 + hasVariables = true;
  412 + }
  413 +
  414 + if (processInstance.getProcessDefinitionKey().equals("handleAffairs")
  415 + && awf.getControlId().equals("FormProperty_0aq22i0")) {
  416 + variables.put("index", awf.getIndex());
  417 + }
  418 + } // for结束
  419 + if (task.getAssignee() == null) {
  420 + taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
  421 + }
  422 + if (hasVariables) {
  423 + // 带参数完成任务
  424 + taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).withVariables(variables).build());
  425 + } else {
  426 + taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).build());
  427 + }
  428 +
  429 + checkSMS(processInstance);
  430 +
  431 + if (desc != null)
  432 + updateThreesetpTask(processInstance, desc);
  433 +
  434 + // 写入数据库
  435 + return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds);
  436 + }
  437 +
  438 +
  439 +
  440 + public void checkSMS(ProcessInstance processInstance){
  441 + final org.activiti.engine.task.Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId())
  442 + .singleResult();
  443 +
  444 + if (task == null)
  445 + return;
  446 +
  447 + if (task != null) {
  448 + String token = SecurityUtils.getLoginUser().getToken();
  449 +
  450 + new Thread(new Runnable() {
  451 +
  452 + @Override
  453 + public void run() {
  454 +
  455 + List<Mobile> mobileList = new ArrayList<Mobile>();
  456 +
  457 + String number = actMapper.getPhoneNumber(processInstance.getProcessDefinitionKey(), task.getName());
  458 +
  459 + if (number != null) {
  460 + String smsString = "工作提醒:您有新的工作流程,请及时处理。";
  461 + Mobile mobile = new Mobile();
  462 + mobile.setMobile(number);
  463 + mobileList.add(mobile);
  464 +
  465 + if (processInstance.getProcessDefinitionKey().equals("workflow_constructsite")) {
  466 +
  467 + JSONObject json = RemoteServerUtils.getConstructionInfo(processInstance.getBusinessKey().split(":")[1],token);
  468 + if (json != null)
  469 + smsString = "审批提醒:您有新的工作流程需要审批 " + json.getString("areaCodeName") + " "
  470 + + json.getString("name");
  471 +
  472 + }
  473 +
  474 + if (processInstance.getProcessDefinitionKey().equals("workflow_caseoffline")) {
  475 +
  476 + String dname = actMapper.getCaseTypeName("case_offline_type",
  477 + processInstance.getBusinessKey().split(":")[1]);
  478 + smsString = "案卷提醒:有一条" + dname + "的案卷,请及时处理。";
  479 + }
  480 +
  481 + JsonSmsSend jsonSmsSend = PostSms.sendSms(mobileList, smsString);
  482 + if (jsonSmsSend != null) {
  483 + if (jsonSmsSend.getState() == 0) {
  484 + System.out.println("发送成功");
  485 + } else {
  486 + System.out.println(jsonSmsSend.getMessage());
  487 + }
  488 + } else {
  489 + System.out.println("发送返回空");
  490 + }
  491 + }
  492 +
  493 + }
  494 +
  495 + }).start();
  496 + }
  497 +
  498 + }
  499 +
  500 + private void updateThreesetpTask(ProcessInstance processInstance, String placeCode) {
  501 +
  502 + final org.activiti.engine.task.Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId())
  503 + .singleResult();
  504 +
  505 + if (task == null)
  506 + return;
  507 +
  508 + task.setDescription(placeCode);
  509 +
  510 + List<IdentityLink> list = taskService.getIdentityLinksForTask(task.getId());
  511 +
  512 + if (list.size() == 1) {
  513 + taskService.addCandidateUser(task.getId(), placeCode);
  514 + }
  515 +
  516 + taskService.saveTask(task);
  517 +
  518 + if ("车辆所属企业".equals(task.getName())) {
  519 + org.activiti.engine.task.Task task1 = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
  520 + taskService.setAssignee(task1.getId(), placeCode);
  521 + return;
  522 + }
  523 +
  524 + }
  525 +
  526 + @Override
  527 + public void deleteProcessById(String type) {
  528 + runtimeService.deleteProcessInstance(type, "删除");
  529 + }
  530 +
  531 + @Override
  532 + public void endAllThreesteptask(String type) {
  533 +
  534 + List<ProcessInstance> processes = runtimeService.createProcessInstanceQuery().processDefinitionKey(type).list();
  535 +
  536 + for (ProcessInstance proc : processes) {
  537 + if (type.equals(proc.getProcessDefinitionKey())) {
  538 + try {
  539 +
  540 + String executionId = proc.getSuperExecutionId();
  541 + Map<String, Object> map = proc.getProcessVariables();
  542 +
  543 + // runtimeService.removeVariable(executionId, variableName);
  544 +
  545 + runtimeService.deleteProcessInstance(proc.getId(), "超时");
  546 + } catch (Exception e) {
  547 + e.printStackTrace();
  548 + }
  549 + }
  550 + }
  551 +
  552 + }
540 553 }
541 554 \ No newline at end of file
... ...
trash-activiti/src/main/java/com/trash/activiti/service/impl/FormHistoryDataServiceImpl.java
1   -package com.trash.activiti.service.impl;
2   -
3   -import org.activiti.engine.RuntimeService;
4   -import org.activiti.engine.TaskService;
5   -import org.activiti.engine.runtime.ProcessInstance;
6   -import org.activiti.engine.runtime.ProcessInstanceQuery;
7   -import org.activiti.engine.task.Task;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.stereotype.Service;
10   -
11   -import com.trash.activiti.domain.ActWorkflowFormData;
12   -import com.trash.activiti.domain.dto.HistoryDataDTO;
13   -import com.trash.activiti.domain.dto.HistoryFormDataDTO;
14   -import com.trash.activiti.mapper.ActWorkflowFormDataMapper;
15   -import com.trash.activiti.service.IActWorkflowFormDataService;
16   -import com.trash.activiti.service.IFormHistoryDataService;
17   -import com.trash.common.utils.DateUtils;
18   -
19   -import java.text.SimpleDateFormat;
20   -import java.util.*;
21   -import java.util.stream.Collector;
22   -import java.util.stream.Collectors;
23   -
24   -/**
25   - * 汇讯数码科技(深圳)有限公司
26   - * 创建日期:2020/11/3-10:20
27   - * 版本 开发者 日期
28   - * 1.0 Danny 2020/11/3
29   - */
30   -@Service
31   -public class FormHistoryDataServiceImpl implements IFormHistoryDataService {
32   - @Autowired
33   - private IActWorkflowFormDataService actWorkflowFormDataService;
34   -
35   - @Autowired
36   - private ActWorkflowFormDataMapper formDataMapper;
37   -
38   -
39   - private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
40   -
41   -
42   - @Autowired
43   - private RuntimeService runtimeService;
44   -
45   - @Autowired
46   - private TaskService taskService;
47   -
48   - @Override
49   - public List<ActWorkflowFormData> historyDataShow(String businessKey) {
50   - List<ActWorkflowFormData> returnHistoryFromDataDTOS=new ArrayList<>();
51   - List<ActWorkflowFormData> actWorkflowFormData=new ArrayList<>();
52   -
53   - List<Task> tasks = null;
54   -
55   -
56   - getEditData(businessKey,returnHistoryFromDataDTOS,actWorkflowFormData);
57   -//
58   -// if(businessKey.contains("constructsite")){
59   -// String id = businessKey.split(":")[1];
60   -// getEditData(id,"constructsite",returnHistoryFromDataDTOS,actWorkflowFormData);
61   -// }else if(businessKey.contains("earthsites")){
62   -// String id = businessKey.split(":")[1];
63   -// getEditData(id,"earthsites",returnHistoryFromDataDTOS,actWorkflowFormData);
64   -// }else if(businessKey.contains("conract")){
65   -//
66   -// String id = businessKey.split(":")[1];
67   -// getEditData(id,"conract",returnHistoryFromDataDTOS,actWorkflowFormData);
68   -//
69   -// }else{
70   -//
71   -// tasks =taskService.createTaskQuery().processInstanceBusinessKey(businessKey).list();
72   -//
73   -// if(tasks.size() > 0){
74   -//
75   -// ActWorkflowFormData afw = new ActWorkflowFormData();
76   -//
77   -//
78   -// afw.setControlName("审批");
79   -// afw.setControlValue("待处理");
80   -// afw.setTaskNodeName(tasks.get(0).getName());
81   -// afw.setCreateBy(tasks.get(0).getName());
82   -// afw.setCreateName(tasks.get(0).getName());
83   -// afw.setCreateTime(new Date());
84   -//
85   -// returnHistoryFromDataDTOS.add(afw);
86   -// }
87   -//
88   -// actWorkflowFormData = actWorkflowFormDataService.selectActWorkflowFormDataByBusinessKey(businessKey);
89   -// }
90   -
91   -
92   - for(int i =0;i<actWorkflowFormData.size();i++){
93   - if(i == actWorkflowFormData.size()-1){
94   - returnHistoryFromDataDTOS.add(actWorkflowFormData.get(i));
95   - continue;
96   - }
97   -
98   - ActWorkflowFormData one = actWorkflowFormData.get(i);
99   - ActWorkflowFormData two = actWorkflowFormData.get(i+1);
100   -
101   -
102   - if(one.getCreateBy().equals(two.getCreateBy()) && one.getCreateTime().getTime() == two.getCreateTime().getTime()){
103   -
104   - String twoValue = two.getControlValue() == null ? "" : "," + two.getControlValue();
105   -
106   - one.setControlValue(one.getControlValue() + twoValue);
107   -
108   - returnHistoryFromDataDTOS.add(one);
109   - i+=1;
110   - continue;
111   - }
112   -
113   - returnHistoryFromDataDTOS.add(one);
114   - }
115   -
116   -
117   -// Map<String, List<ActWorkflowFormData>> collect = actWorkflowFormData.stream().collect(Collectors.groupingBy(ActWorkflowFormData::getTaskNodeName));
118   -// collect.entrySet().forEach(
119   -// entry -> {
120   -// HistoryDataDTO returnHistoryFromDataDTO = new HistoryDataDTO();
121   -// returnHistoryFromDataDTO.setTaskNodeName(entry.getValue().get(0).getTaskNodeName());
122   -// returnHistoryFromDataDTO.setCreateName(entry.getValue().get(0).getCreateName());
123   -// returnHistoryFromDataDTO.setCreatedDate(sdf.format(entry.getValue().get(0).getCreateTime()));
124   -// returnHistoryFromDataDTO.setFormHistoryDataDTO(entry.getValue().stream().map(awfd->new HistoryFormDataDTO(awfd.getControlName(),awfd.getControlValue())).collect(Collectors.toList()));
125   -// returnHistoryFromDataDTOS.add(returnHistoryFromDataDTO);
126   -// }
127   -// );
128   -
129   - returnHistoryFromDataDTOS = returnHistoryFromDataDTOS.stream().sorted((x,y) -> x.getCreateTime().compareTo(y.getCreateTime())).collect(Collectors.toList());
130   -
131   -
132   - return returnHistoryFromDataDTOS;
133   - }
134   -
135   -
136   - private void getEditData(String businessKey,List<ActWorkflowFormData> returnHistoryFromDataDTOS,List<ActWorkflowFormData> actWorkflowFormData) {
137   -
138   - List<Task> tasks =taskService.createTaskQuery().processInstanceBusinessKey(businessKey).list();
139   - if(tasks.size() > 0){
140   - ActWorkflowFormData afw = new ActWorkflowFormData();
141   - afw.setControlName("审批");
142   - afw.setControlValue("待处理");
143   - afw.setTaskNodeName(tasks.get(0).getName());
144   - afw.setCreateBy(tasks.get(0).getName());
145   - afw.setCreateName(tasks.get(0).getName());
146   - afw.setCreateTime(new Date());
147   - returnHistoryFromDataDTOS.add(afw);
148   - }
149   - tasks =taskService.createTaskQuery().processInstanceBusinessKey(businessKey.replace(":", "_edit:")).list();
150   - if(tasks.size() > 0){
151   - ActWorkflowFormData afw = new ActWorkflowFormData();
152   - afw.setControlName("审批");
153   - afw.setControlValue("待处理");
154   - afw.setTaskNodeName(tasks.get(0).getName());
155   - afw.setCreateBy(tasks.get(0).getName());
156   - afw.setCreateName(tasks.get(0).getName());
157   - afw.setCreateTime(new Date());
158   - returnHistoryFromDataDTOS.add(afw);
159   - }
160   -
161   - actWorkflowFormData.addAll( actWorkflowFormDataService.selectActWorkflowFormDataByBusinessKey( businessKey));
162   -
163   - actWorkflowFormData.addAll( actWorkflowFormDataService.selectActWorkflowFormDataByBusinessKey(businessKey.replace(":", "_edit:")));
164   -
165   - }
166   -
167   -
168   - @Override
169   - public List<ActWorkflowFormData> historyFromDataByTime(Map<String,String> map) {
170   - List<ActWorkflowFormData> returnHistoryFromDataDTOS=new ArrayList<>();
171   - List<ActWorkflowFormData> actWorkflowFormData=new ArrayList<>();
172   -
173   - String businessKey = map.get("businessKey");
174   -
175   -
176   -
177   - actWorkflowFormData = formDataMapper.selectNewActWorkflowFormDataByBusinessKey(map);
178   -
179   -
180   -
181   -
182   - for(int i =0;i<actWorkflowFormData.size();i++){
183   - if(i == actWorkflowFormData.size()-1){
184   - returnHistoryFromDataDTOS.add(actWorkflowFormData.get(i));
185   - continue;
186   - }
187   -
188   - ActWorkflowFormData one = actWorkflowFormData.get(i);
189   - ActWorkflowFormData two = actWorkflowFormData.get(i+1);
190   -
191   - if(one.getCreateBy().equals(two.getCreateBy()) && one.getCreateTime().getTime() == two.getCreateTime().getTime()){
192   -
193   - String twoValue = two.getControlValue() == null ? "" : "," + two.getControlValue();
194   -
195   - one.setControlValue(one.getControlValue() + twoValue);
196   -
197   - returnHistoryFromDataDTOS.add(one);
198   - i+=1;
199   - continue;
200   - }
201   -
202   - returnHistoryFromDataDTOS.add(one);
203   - }
204   -
205   -
206   -
207   - returnHistoryFromDataDTOS = returnHistoryFromDataDTOS.stream().sorted((x,y) -> x.getCreateTime().compareTo(y.getCreateTime())).collect(Collectors.toList());
208   -
209   -
210   - return returnHistoryFromDataDTOS;
211   - }
212   -
213   -
214   -}
  1 +package com.trash.activiti.service.impl;
  2 +
  3 +import org.activiti.engine.RuntimeService;
  4 +import org.activiti.engine.TaskService;
  5 +import org.activiti.engine.runtime.ProcessInstance;
  6 +import org.activiti.engine.runtime.ProcessInstanceQuery;
  7 +import org.activiti.engine.task.Task;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.stereotype.Service;
  10 +
  11 +import com.trash.activiti.domain.ActWorkflowFormData;
  12 +import com.trash.activiti.domain.dto.HistoryDataDTO;
  13 +import com.trash.activiti.domain.dto.HistoryFormDataDTO;
  14 +import com.trash.activiti.mapper.ActWorkflowFormDataMapper;
  15 +import com.trash.activiti.service.IActWorkflowFormDataService;
  16 +import com.trash.activiti.service.IFormHistoryDataService;
  17 +import com.trash.common.utils.DateUtils;
  18 +
  19 +import java.text.SimpleDateFormat;
  20 +import java.util.*;
  21 +import java.util.stream.Collector;
  22 +import java.util.stream.Collectors;
  23 +
  24 +/**
  25 + * 汇讯数码科技(深圳)有限公司
  26 + * 创建日期:2020/11/3-10:20
  27 + * 版本 开发者 日期
  28 + * 1.0 Danny 2020/11/3
  29 + */
  30 +@Service
  31 +public class FormHistoryDataServiceImpl implements IFormHistoryDataService {
  32 + @Autowired
  33 + private IActWorkflowFormDataService actWorkflowFormDataService;
  34 +
  35 + @Autowired
  36 + private ActWorkflowFormDataMapper formDataMapper;
  37 +
  38 +
  39 + private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  40 +
  41 +
  42 + @Autowired
  43 + private RuntimeService runtimeService;
  44 +
  45 + @Autowired
  46 + private TaskService taskService;
  47 +
  48 + @Override
  49 + public List<ActWorkflowFormData> historyDataShow(String businessKey) {
  50 + List<ActWorkflowFormData> returnHistoryFromDataDTOS=new ArrayList<>();
  51 + List<ActWorkflowFormData> actWorkflowFormData=new ArrayList<>();
  52 +
  53 + List<Task> tasks = null;
  54 +
  55 +
  56 + getEditData(businessKey,returnHistoryFromDataDTOS,actWorkflowFormData);
  57 +//
  58 +// if(businessKey.contains("constructsite")){
  59 +// String id = businessKey.split(":")[1];
  60 +// getEditData(id,"constructsite",returnHistoryFromDataDTOS,actWorkflowFormData);
  61 +// }else if(businessKey.contains("earthsites")){
  62 +// String id = businessKey.split(":")[1];
  63 +// getEditData(id,"earthsites",returnHistoryFromDataDTOS,actWorkflowFormData);
  64 +// }else if(businessKey.contains("conract")){
  65 +//
  66 +// String id = businessKey.split(":")[1];
  67 +// getEditData(id,"conract",returnHistoryFromDataDTOS,actWorkflowFormData);
  68 +//
  69 +// }else{
  70 +//
  71 +// tasks =taskService.createTaskQuery().processInstanceBusinessKey(businessKey).list();
  72 +//
  73 +// if(tasks.size() > 0){
  74 +//
  75 +// ActWorkflowFormData afw = new ActWorkflowFormData();
  76 +//
  77 +//
  78 +// afw.setControlName("审批");
  79 +// afw.setControlValue("待处理");
  80 +// afw.setTaskNodeName(tasks.get(0).getName());
  81 +// afw.setCreateBy(tasks.get(0).getName());
  82 +// afw.setCreateName(tasks.get(0).getName());
  83 +// afw.setCreateTime(new Date());
  84 +//
  85 +// returnHistoryFromDataDTOS.add(afw);
  86 +// }
  87 +//
  88 +// actWorkflowFormData = actWorkflowFormDataService.selectActWorkflowFormDataByBusinessKey(businessKey);
  89 +// }
  90 +
  91 +
  92 + for(int i =0;i<actWorkflowFormData.size();i++){
  93 + if(i == actWorkflowFormData.size()-1){
  94 + returnHistoryFromDataDTOS.add(actWorkflowFormData.get(i));
  95 + continue;
  96 + }
  97 +
  98 + ActWorkflowFormData one = actWorkflowFormData.get(i);
  99 + ActWorkflowFormData two = actWorkflowFormData.get(i+1);
  100 +
  101 +
  102 + if(one.getCreateBy().equals(two.getCreateBy()) && one.getCreateTime().getTime() == two.getCreateTime().getTime()){
  103 +
  104 + String twoValue = two.getControlValue() == null ? "" : "," + two.getControlValue();
  105 +
  106 + one.setControlValue(one.getControlValue() + twoValue);
  107 +
  108 + returnHistoryFromDataDTOS.add(one);
  109 + i+=1;
  110 + continue;
  111 + }
  112 +
  113 + returnHistoryFromDataDTOS.add(one);
  114 + }
  115 +
  116 +
  117 +// Map<String, List<ActWorkflowFormData>> collect = actWorkflowFormData.stream().collect(Collectors.groupingBy(ActWorkflowFormData::getTaskNodeName));
  118 +// collect.entrySet().forEach(
  119 +// entry -> {
  120 +// HistoryDataDTO returnHistoryFromDataDTO = new HistoryDataDTO();
  121 +// returnHistoryFromDataDTO.setTaskNodeName(entry.getValue().get(0).getTaskNodeName());
  122 +// returnHistoryFromDataDTO.setCreateName(entry.getValue().get(0).getCreateName());
  123 +// returnHistoryFromDataDTO.setCreatedDate(sdf.format(entry.getValue().get(0).getCreateTime()));
  124 +// returnHistoryFromDataDTO.setFormHistoryDataDTO(entry.getValue().stream().map(awfd->new HistoryFormDataDTO(awfd.getControlName(),awfd.getControlValue())).collect(Collectors.toList()));
  125 +// returnHistoryFromDataDTOS.add(returnHistoryFromDataDTO);
  126 +// }
  127 +// );
  128 +
  129 + returnHistoryFromDataDTOS = returnHistoryFromDataDTOS.stream().sorted((x,y) -> x.getCreateTime().compareTo(y.getCreateTime())).collect(Collectors.toList());
  130 +
  131 +
  132 + return returnHistoryFromDataDTOS;
  133 + }
  134 +
  135 +
  136 + private void getEditData(String businessKey,List<ActWorkflowFormData> returnHistoryFromDataDTOS,List<ActWorkflowFormData> actWorkflowFormData) {
  137 +
  138 + List<Task> tasks =taskService.createTaskQuery().processInstanceBusinessKey(businessKey).list();
  139 + if(tasks.size() > 0){
  140 + ActWorkflowFormData afw = new ActWorkflowFormData();
  141 + afw.setControlName("审批");
  142 + afw.setControlValue("待处理");
  143 + afw.setTaskNodeName(tasks.get(0).getName());
  144 + afw.setCreateBy(tasks.get(0).getName());
  145 + afw.setCreateName(tasks.get(0).getName());
  146 + afw.setCreateTime(new Date());
  147 + returnHistoryFromDataDTOS.add(afw);
  148 + }
  149 + tasks =taskService.createTaskQuery().processInstanceBusinessKey(businessKey.replace(":", "_edit:")).list();
  150 + if(tasks.size() > 0){
  151 + ActWorkflowFormData afw = new ActWorkflowFormData();
  152 + afw.setControlName("审批");
  153 + afw.setControlValue("待处理");
  154 + afw.setTaskNodeName(tasks.get(0).getName());
  155 + afw.setCreateBy(tasks.get(0).getName());
  156 + afw.setCreateName(tasks.get(0).getName());
  157 + afw.setCreateTime(new Date());
  158 + returnHistoryFromDataDTOS.add(afw);
  159 + }
  160 +
  161 + actWorkflowFormData.addAll( actWorkflowFormDataService.selectActWorkflowFormDataByBusinessKey( businessKey));
  162 +
  163 + actWorkflowFormData.addAll( actWorkflowFormDataService.selectActWorkflowFormDataByBusinessKey(businessKey.replace(":", "_edit:")));
  164 +
  165 + }
  166 +
  167 +
  168 + @Override
  169 + public List<ActWorkflowFormData> historyFromDataByTime(Map<String,String> map) {
  170 + List<ActWorkflowFormData> returnHistoryFromDataDTOS=new ArrayList<>();
  171 + List<ActWorkflowFormData> actWorkflowFormData=new ArrayList<>();
  172 +
  173 + String businessKey = map.get("businessKey");
  174 +
  175 +
  176 +
  177 + actWorkflowFormData = formDataMapper.selectNewActWorkflowFormDataByBusinessKey(map);
  178 +
  179 +
  180 +
  181 +
  182 + for(int i =0;i<actWorkflowFormData.size();i++){
  183 + if(i == actWorkflowFormData.size()-1){
  184 + returnHistoryFromDataDTOS.add(actWorkflowFormData.get(i));
  185 + continue;
  186 + }
  187 +
  188 + ActWorkflowFormData one = actWorkflowFormData.get(i);
  189 + ActWorkflowFormData two = actWorkflowFormData.get(i+1);
  190 +
  191 + if(one.getCreateBy().equals(two.getCreateBy()) && one.getCreateTime().getTime() == two.getCreateTime().getTime()){
  192 +
  193 + String twoValue = two.getControlValue() == null ? "" : "," + two.getControlValue();
  194 +
  195 + one.setControlValue(one.getControlValue() + twoValue);
  196 +
  197 + returnHistoryFromDataDTOS.add(one);
  198 + i+=1;
  199 + continue;
  200 + }
  201 +
  202 + returnHistoryFromDataDTOS.add(one);
  203 + }
  204 +
  205 +
  206 +
  207 + returnHistoryFromDataDTOS = returnHistoryFromDataDTOS.stream().sorted((x,y) -> x.getCreateTime().compareTo(y.getCreateTime())).collect(Collectors.toList());
  208 +
  209 +
  210 + return returnHistoryFromDataDTOS;
  211 + }
  212 +
  213 +
  214 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/impl/myTaskServiceImpl.java
1   -package com.trash.activiti.service.impl;
2   -
3   -import org.activiti.api.model.shared.model.VariableInstance;
4   -import org.activiti.api.runtime.shared.NotFoundException;
5   -import org.activiti.api.runtime.shared.identity.UserGroupManager;
6   -import org.activiti.api.runtime.shared.query.Page;
7   -import org.activiti.api.runtime.shared.query.Pageable;
8   -import org.activiti.api.runtime.shared.security.SecurityManager;
9   -import org.activiti.api.task.model.Task;
10   -import org.activiti.api.task.model.builders.TaskPayloadBuilder;
11   -import org.activiti.api.task.model.impl.TaskImpl;
12   -import org.activiti.api.task.model.payloads.CandidateGroupsPayload;
13   -import org.activiti.api.task.model.payloads.CandidateUsersPayload;
14   -import org.activiti.api.task.model.payloads.ClaimTaskPayload;
15   -import org.activiti.api.task.model.payloads.CompleteTaskPayload;
16   -import org.activiti.api.task.model.payloads.CreateTaskPayload;
17   -import org.activiti.api.task.model.payloads.CreateTaskVariablePayload;
18   -import org.activiti.api.task.model.payloads.DeleteTaskPayload;
19   -import org.activiti.api.task.model.payloads.GetTaskVariablesPayload;
20   -import org.activiti.api.task.model.payloads.GetTasksPayload;
21   -import org.activiti.api.task.model.payloads.ReleaseTaskPayload;
22   -import org.activiti.api.task.model.payloads.SaveTaskPayload;
23   -import org.activiti.api.task.model.payloads.UpdateTaskPayload;
24   -import org.activiti.api.task.model.payloads.UpdateTaskVariablePayload;
25   -import org.activiti.api.task.runtime.TaskRuntime;
26   -import org.activiti.api.task.runtime.conf.TaskRuntimeConfiguration;
27   -import org.activiti.engine.RuntimeService;
28   -import org.activiti.engine.TaskService;
29   -import org.activiti.engine.impl.TaskQueryImpl;
30   -import org.activiti.engine.query.QueryProperty;
31   -import org.activiti.engine.runtime.ProcessInstance;
32   -import org.activiti.engine.runtime.ProcessInstanceQuery;
33   -import org.activiti.engine.task.IdentityLink;
34   -import org.activiti.engine.task.IdentityLinkType;
35   -import org.activiti.engine.task.NativeTaskQuery;
36   -import org.activiti.engine.task.TaskQuery;
37   -import org.activiti.runtime.api.impl.TaskRuntimeHelper;
38   -import org.activiti.runtime.api.model.impl.APITaskConverter;
39   -import org.activiti.runtime.api.model.impl.APIVariableInstanceConverter;
40   -import org.activiti.runtime.api.query.impl.PageImpl;
41   -import org.springframework.beans.factory.annotation.Autowired;
42   -import org.springframework.security.access.prepost.PreAuthorize;
43   -import org.springframework.stereotype.Service;
44   -
45   -import com.sun.jna.Native;
46   -import com.trash.activiti.service.myTaskService;
47   -import com.trash.common.utils.SecurityUtils;
48   -
49   -import java.util.ArrayList;
50   -import java.util.Date;
51   -import java.util.HashSet;
52   -import java.util.List;
53   -import java.util.Objects;
54   -import java.util.Set;
55   -import java.util.stream.Collector;
56   -import java.util.stream.Collectors;
57   -
58   -@PreAuthorize("hasRole('ACTIVITI_USER')")
59   -@Service
60   -public class myTaskServiceImpl implements myTaskService {
61   -
62   - private final TaskService taskService;
63   -
64   - private final APITaskConverter taskConverter;
65   -
66   - private final APIVariableInstanceConverter variableInstanceConverter;
67   -
68   - private final TaskRuntimeConfiguration configuration;
69   -
70   - private final UserGroupManager userGroupManager;
71   -
72   - private final SecurityManager securityManager;
73   -
74   - private final TaskRuntimeHelper taskRuntimeHelper;
75   -
76   - @Autowired
77   - RuntimeService runtimeService;
78   -
79   - public myTaskServiceImpl(TaskService taskService,
80   - UserGroupManager userGroupManager,
81   - SecurityManager securityManager,
82   - APITaskConverter taskConverter,
83   - APIVariableInstanceConverter variableInstanceConverter,
84   - TaskRuntimeConfiguration configuration,
85   - TaskRuntimeHelper taskRuntimeHelper) {
86   - this.taskService = taskService;
87   - this.userGroupManager = userGroupManager;
88   - this.securityManager = securityManager;
89   - this.taskConverter = taskConverter;
90   - this.variableInstanceConverter = variableInstanceConverter;
91   - this.configuration = configuration;
92   - this.taskRuntimeHelper = taskRuntimeHelper;
93   - }
94   -
95   - @Override
96   - public TaskRuntimeConfiguration configuration() {
97   - return configuration;
98   - }
99   -
100   - @Override
101   - public Task task(String taskId) {
102   -
103   - org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
104   -
105   - if (task == null) {
106   - throw new NotFoundException("未找到审批任务 id: " + taskId);
107   - }
108   -
109   -
110   - return taskConverter.from(task);
111   - }
112   -
113   - @Override
114   - public Page<Task> tasks(Pageable pageable) {
115   - return tasks(pageable,null,null,null);
116   - }
117   - @Override
118   - public Page<Task> tasks(Pageable pageable,GetTasksPayload getTasksPayload,Set<String> defKey,String name) {
119   -
120   -
121   - TaskQuery crossQuery = taskService.createTaskQuery();
122   - TaskQuery crossQuery1 = taskService.createTaskQuery();
123   -
124   - TaskQuery userQuery = taskService.createTaskQuery();
125   -
126   - userQuery.taskAssignee(SecurityUtils.getUsername());
127   -
128   - TaskQuery taskQuery = taskService.createTaskQuery();
129   -
130   -
131   - List<String> pid = new ArrayList<>();
132   -
133   - List<String> posts = SecurityUtils.getLoginUser().getUser().getPostIds();
134   - List<String> roles = SecurityUtils.getLoginUser().getUser().getRoleIds();
135   -
136   - if(posts == null || posts == null){
137   - crossQuery.taskCandidateOrAssigned(SecurityUtils.getUsername());
138   - crossQuery1.taskCandidateOrAssigned(SecurityUtils.getUsername());
139   - }else{
140   -
141   - for(int i = 0;i<roles.size();i++){
142   -
143   - crossQuery = taskService.createTaskQuery().taskCandidateUser(roles.get(i));
144   - crossQuery1 = taskService.createTaskQuery().taskCandidateGroup(posts.get(i));
145   -
146   - List<org.activiti.engine.task.Task> list1 = crossQuery.list();
147   - List<org.activiti.engine.task.Task> list2 = crossQuery1.list();
148   -
149   -
150   - for(org.activiti.engine.task.Task t1:list1){
151   -
152   - for(org.activiti.engine.task.Task t2:list2){
153   -
154   - if(t1.getId().equals(t2.getId())){
155   - pid.add(t1.getProcessInstanceId());
156   - }
157   - }
158   - }
159   -
160   - }
161   - }
162   -
163   -
164   - for(org.activiti.engine.task.Task tasks : userQuery.list()){
165   - pid.add(tasks.getProcessInstanceId());
166   - }
167   -
168   -
169   - ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
170   -
171   - if(name != null && !name.isEmpty()){
172   - query.processInstanceNameLike("%"+name+"%");
173   - }
174   - if(defKey.size()>0){
175   - query.processDefinitionKeys(defKey);
176   - }
177   -
178   - if(pid.size()>0){
179   - Set<String> idSet = new HashSet<>();
180   -
181   - for(String str:pid){
182   - idSet.add(str);
183   - }
184   -
185   - List<ProcessInstance> pList = query.processInstanceIds(idSet).list();
186   -
187   - pid = pList.parallelStream().map(p->p.getId()).collect(Collectors.toList());
188   - }
189   -
190   -
191   -
192   - if(pid.size() > 0){
193   - taskQuery.processInstanceIdIn(pid).orderByTaskCreateTime().desc();
194   - }else{
195   - taskQuery.taskAssignee(SecurityUtils.getUsername()).orderByTaskCreateTime().desc();
196   - }
197   -
198   - List<Task> tasks = taskConverter.from(taskQuery.listPage(pageable.getStartIndex(),
199   - pageable.getMaxItems()));
200   -
201   -
202   - return new PageImpl<>(tasks,Math.toIntExact(taskQuery.count()));
203   - }
204   -
205   - @Override
206   - public Task complete(CompleteTaskPayload completeTaskPayload) {
207   - //@TODO: not the most efficient way to return the just completed task, improve
208   - // we might need to create an empty shell with the task ID and Status only
209   - Task task;
210   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
211   - try {
212   - task = task(completeTaskPayload.getTaskId());
213   - } catch (IllegalStateException ex) {
214   - throw new IllegalStateException("The authenticated user cannot complete task" + completeTaskPayload.getTaskId() + " due he/she cannot access to the task");
215   - }
216   - // validate the the task does have an assignee
217   - if (task.getAssignee() == null || task.getAssignee().isEmpty()) {
218   - throw new IllegalStateException("The task needs to be claimed before trying to complete it");
219   - }
220   - if (!task.getAssignee().equals(authenticatedUserId)) {
221   - throw new IllegalStateException("You cannot complete the task if you are not assigned to it");
222   - }
223   -
224   - taskService.complete(completeTaskPayload.getTaskId(),
225   - completeTaskPayload.getVariables(), true);
226   -
227   -
228   - ((TaskImpl) task).setStatus(Task.TaskStatus.COMPLETED);
229   -
230   - return task;
231   - }
232   -
233   - @Override
234   - public Task claim(ClaimTaskPayload claimTaskPayload) {
235   - // Validate that the task is visible by the currently authorized user
236   - Task task;
237   - try {
238   - task = task(claimTaskPayload.getTaskId());
239   - } catch (IllegalStateException ex) {
240   - throw new IllegalStateException("The authenticated user cannot claim task" + claimTaskPayload.getTaskId() + " due it is not a candidate for it");
241   - }
242   - // validate the the task doesn't have an assignee
243   - if (task.getAssignee() != null && !task.getAssignee().isEmpty()) {
244   - throw new IllegalStateException("The task was already claimed, the assignee of this task needs to release it first for you to claim it");
245   - }
246   -
247   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
248   - claimTaskPayload.setAssignee(authenticatedUserId);
249   - taskService.claim(claimTaskPayload.getTaskId(),
250   - claimTaskPayload.getAssignee());
251   -
252   - return task(claimTaskPayload.getTaskId());
253   - }
254   -
255   - @Override
256   - public Task release(ReleaseTaskPayload releaseTaskPayload) {
257   - // Validate that the task is visible by the currently authorized user
258   - Task task;
259   - try {
260   - task = task(releaseTaskPayload.getTaskId());
261   - } catch (IllegalStateException ex) {
262   - throw new IllegalStateException("The authenticated user cannot claim task" + releaseTaskPayload.getTaskId() + " due it is not a candidate for it");
263   - }
264   - // validate the the task doesn't have an assignee
265   - if (task.getAssignee() == null || task.getAssignee().isEmpty()) {
266   - throw new IllegalStateException("You cannot release a task that is not claimed");
267   - }
268   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
269   - // validate that you are trying to release task where you are the assignee
270   - if (!task.getAssignee().equals(authenticatedUserId)) {
271   - throw new IllegalStateException("You cannot release a task where you are not the assignee");
272   - }
273   -
274   - taskService.unclaim(releaseTaskPayload.getTaskId());
275   - return task(releaseTaskPayload.getTaskId());
276   - }
277   -
278   - @Override
279   - public Task update(UpdateTaskPayload updateTaskPayload) {
280   - return taskRuntimeHelper.applyUpdateTaskPayload(false, updateTaskPayload);
281   - }
282   -
283   - @Override
284   - public Task delete(DeleteTaskPayload deleteTaskPayload) {
285   - //@TODO: not the most efficient way to return the just deleted task, improve
286   - // we might need to create an empty shell with the task ID and Status only
287   - Task task;
288   - try {
289   - task = task(deleteTaskPayload.getTaskId());
290   - } catch (IllegalStateException ex) {
291   - throw new IllegalStateException("The authenticated user cannot delete the task" + deleteTaskPayload.getTaskId() + " due it is not the current assignee");
292   - }
293   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
294   - // validate that you are trying to delete task where you are the assignee or the owner
295   - if ((task.getAssignee() == null || task.getAssignee().isEmpty() || !task.getAssignee().equals(authenticatedUserId)) &&
296   - (task.getOwner() == null || task.getOwner().isEmpty() || !task.getOwner().equals(authenticatedUserId))) {
297   - throw new IllegalStateException("You cannot delete a task where you are not the assignee/owner");
298   - }
299   - TaskImpl deletedTaskData = new TaskImpl(task.getId(),
300   - task.getName(),
301   - Task.TaskStatus.CANCELLED);
302   - if (!deleteTaskPayload.hasReason()) {
303   - deleteTaskPayload.setReason("Task deleted by " + authenticatedUserId);
304   - }
305   - taskService.deleteTask(deleteTaskPayload.getTaskId(),
306   - deleteTaskPayload.getReason(),
307   - true);
308   - return deletedTaskData;
309   - }
310   -
311   - @Override
312   - public Task create(CreateTaskPayload createTaskPayload) {
313   - if (createTaskPayload.getName() == null || createTaskPayload.getName().isEmpty()) {
314   - throw new IllegalStateException("You cannot create a task without name");
315   - }
316   -
317   - org.activiti.engine.task.Task task = taskService.newTask();
318   - task.setName(createTaskPayload.getName());
319   - task.setDescription(createTaskPayload.getDescription());
320   - task.setDueDate(createTaskPayload.getDueDate());
321   - task.setPriority(createTaskPayload.getPriority());
322   - if (createTaskPayload.getAssignee() != null && !createTaskPayload.getAssignee().isEmpty()) {
323   - task.setAssignee(createTaskPayload.getAssignee());
324   - }
325   - task.setParentTaskId(createTaskPayload.getParentTaskId());
326   - task.setFormKey(createTaskPayload.getFormKey());
327   - task.setOwner(securityManager.getAuthenticatedUserId());
328   - taskService.saveTask(task);
329   - taskService.addCandidateUser(task.getId(),
330   - securityManager.getAuthenticatedUserId());
331   - if (createTaskPayload.getCandidateGroups() != null && !createTaskPayload.getCandidateGroups().isEmpty()) {
332   - for ( String g : createTaskPayload.getCandidateGroups() ) {
333   - taskService.addCandidateGroup(task.getId(),
334   - g);
335   - }
336   - }
337   -
338   - if (createTaskPayload.getCandidateUsers() != null && !createTaskPayload.getCandidateUsers().isEmpty()) {
339   - for ( String u : createTaskPayload.getCandidateUsers() ) {
340   - taskService.addCandidateUser(task.getId(),
341   - u);
342   - }
343   - }
344   -
345   - return taskConverter.from(task);
346   - }
347   -
348   - @Override
349   - public void addCandidateUsers(CandidateUsersPayload candidateUsersPayload) {
350   - org.activiti.engine.task.Task internalTask;
351   - try {
352   - internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateUsersPayload.getTaskId());
353   -
354   - } catch (IllegalStateException ex) {
355   - throw new IllegalStateException("The authenticated user cannot update the task" + candidateUsersPayload.getTaskId() + " due it is not the current assignee");
356   - }
357   -
358   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
359   -
360   - // validate that you are trying to add CandidateUsers to the task where you are the assignee
361   - if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
362   - throw new IllegalStateException("You cannot update a task where you are not the assignee");
363   - }
364   -
365   -
366   - if (candidateUsersPayload.getCandidateUsers() != null && !candidateUsersPayload.getCandidateUsers().isEmpty()) {
367   - for ( String u : candidateUsersPayload.getCandidateUsers() ) {
368   - taskService.addCandidateUser(internalTask.getId(),
369   - u);
370   - }
371   - }
372   - }
373   -
374   - @Override
375   - public void deleteCandidateUsers(CandidateUsersPayload candidateUsersPayload) {
376   - org.activiti.engine.task.Task internalTask;
377   - try {
378   - internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateUsersPayload.getTaskId());
379   -
380   - } catch (IllegalStateException ex) {
381   - throw new IllegalStateException("The authenticated user cannot update the task" + candidateUsersPayload.getTaskId() + " due it is not the current assignee");
382   - }
383   -
384   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
385   -
386   - // validate that you are trying to add CandidateUsers to the task where you are the assignee
387   - if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
388   - throw new IllegalStateException("You cannot update a task where you are not the assignee");
389   - }
390   -
391   -
392   - if (candidateUsersPayload.getCandidateUsers() != null && !candidateUsersPayload.getCandidateUsers().isEmpty()) {
393   - for ( String u : candidateUsersPayload.getCandidateUsers() ) {
394   - taskService.deleteCandidateUser(internalTask.getId(),
395   - u);
396   - }
397   - }
398   - }
399   -
400   - @Override
401   - public void addCandidateGroups(CandidateGroupsPayload candidateGroupsPayload) {
402   - org.activiti.engine.task.Task internalTask;
403   - try {
404   - internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateGroupsPayload.getTaskId());
405   -
406   - } catch (IllegalStateException ex) {
407   - throw new IllegalStateException("The authenticated user cannot update the task" + candidateGroupsPayload.getTaskId() + " due it is not the current assignee");
408   - }
409   -
410   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
411   - // validate that you are trying to add CandidateGroups to the task where you are the assignee
412   - if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
413   - throw new IllegalStateException("You cannot update a task where you are not the assignee");
414   - }
415   -
416   -
417   - if (candidateGroupsPayload.getCandidateGroups() != null && !candidateGroupsPayload.getCandidateGroups().isEmpty()) {
418   - for ( String g : candidateGroupsPayload.getCandidateGroups() ) {
419   - taskService.addCandidateGroup(internalTask.getId(),
420   - g);
421   - }
422   - }
423   - }
424   -
425   - @Override
426   - public void deleteCandidateGroups(CandidateGroupsPayload candidateGroupsPayload) {
427   - org.activiti.engine.task.Task internalTask;
428   - try {
429   - internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateGroupsPayload.getTaskId());
430   -
431   - } catch (IllegalStateException ex) {
432   - throw new IllegalStateException("The authenticated user cannot update the task" + candidateGroupsPayload.getTaskId() + " due it is not the current assignee");
433   - }
434   -
435   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
436   - // validate that you are trying to add CandidateGroups to the task where you are the assignee
437   - if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
438   - throw new IllegalStateException("You cannot update a task where you are not the assignee");
439   - }
440   -
441   -
442   - if (candidateGroupsPayload.getCandidateGroups() != null && !candidateGroupsPayload.getCandidateGroups().isEmpty()) {
443   - for ( String g : candidateGroupsPayload.getCandidateGroups() ) {
444   - taskService.deleteCandidateGroup(internalTask.getId(),
445   - g);
446   - }
447   - }
448   - }
449   -
450   - @Override
451   - public List<String> userCandidates(String taskId) {
452   - List<IdentityLink> identityLinks = getIdentityLinks(taskId);
453   - List<String> userCandidates = new ArrayList<>();
454   - if (identityLinks != null) {
455   - for ( IdentityLink i : identityLinks ) {
456   - if (i.getUserId() != null) {
457   - if (i.getType().equals(IdentityLinkType.CANDIDATE)) {
458   - userCandidates.add(i.getUserId());
459   - }
460   - }
461   - }
462   -
463   - }
464   - return userCandidates;
465   - }
466   -
467   - @Override
468   - public List<String> groupCandidates(String taskId) {
469   - List<IdentityLink> identityLinks = getIdentityLinks(taskId);
470   - List<String> groupCandidates = new ArrayList<>();
471   - if (identityLinks != null) {
472   - for ( IdentityLink i : identityLinks ) {
473   - if (i.getGroupId() != null) {
474   - if (i.getType().equals(IdentityLinkType.CANDIDATE)) {
475   - groupCandidates.add(i.getGroupId());
476   - }
477   - }
478   - }
479   -
480   - }
481   - return groupCandidates;
482   - }
483   -
484   - @Override
485   - public List<VariableInstance> variables(GetTaskVariablesPayload getTaskVariablesPayload) {
486   - taskRuntimeHelper.assertHasAccessToTask(getTaskVariablesPayload.getTaskId());
487   - return variableInstanceConverter.from(taskRuntimeHelper.getInternalTaskVariables(getTaskVariablesPayload.getTaskId()).values());
488   - }
489   -
490   - @Override
491   - public void createVariable(CreateTaskVariablePayload createTaskVariablePayload) {
492   - taskRuntimeHelper.createVariable(false, createTaskVariablePayload);
493   - }
494   -
495   - @Override
496   - public void updateVariable(UpdateTaskVariablePayload updateTaskVariablePayload) {
497   - taskRuntimeHelper.updateVariable(false, updateTaskVariablePayload);
498   - }
499   -
500   - private List<IdentityLink> getIdentityLinks(String taskId) {
501   - String authenticatedUserId = securityManager.getAuthenticatedUserId();
502   - if (authenticatedUserId != null && !authenticatedUserId.isEmpty()) {
503   - List<String> userRoles = userGroupManager.getUserRoles(authenticatedUserId);
504   - List<String> userGroups = userGroupManager.getUserGroups(authenticatedUserId);
505   - org.activiti.engine.task.Task internalTask = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId,
506   - userGroups).taskId(taskId).singleResult();
507   - if (internalTask == null) {
508   - throw new NotFoundException("Unable to find task for the given id: " + taskId + " for user: " + authenticatedUserId + " (with groups: " + userGroups + " & with roles: " + userRoles + ")");
509   - }
510   - return taskService.getIdentityLinksForTask(taskId);
511   - }
512   - throw new IllegalStateException("There is no authenticated user, we need a user authenticated to find tasks");
513   - }
514   -
515   - @Override
516   - public void save(SaveTaskPayload saveTaskPayload) {
517   - taskRuntimeHelper.assertHasAccessToTask(saveTaskPayload.getTaskId());
518   -
519   - taskService.setVariablesLocal(saveTaskPayload.getTaskId(),
520   - saveTaskPayload.getVariables());
521   - }
522   -
523   -}
  1 +package com.trash.activiti.service.impl;
  2 +
  3 +import org.activiti.api.model.shared.model.VariableInstance;
  4 +import org.activiti.api.runtime.shared.NotFoundException;
  5 +import org.activiti.api.runtime.shared.identity.UserGroupManager;
  6 +import org.activiti.api.runtime.shared.query.Page;
  7 +import org.activiti.api.runtime.shared.query.Pageable;
  8 +import org.activiti.api.runtime.shared.security.SecurityManager;
  9 +import org.activiti.api.task.model.Task;
  10 +import org.activiti.api.task.model.builders.TaskPayloadBuilder;
  11 +import org.activiti.api.task.model.impl.TaskImpl;
  12 +import org.activiti.api.task.model.payloads.CandidateGroupsPayload;
  13 +import org.activiti.api.task.model.payloads.CandidateUsersPayload;
  14 +import org.activiti.api.task.model.payloads.ClaimTaskPayload;
  15 +import org.activiti.api.task.model.payloads.CompleteTaskPayload;
  16 +import org.activiti.api.task.model.payloads.CreateTaskPayload;
  17 +import org.activiti.api.task.model.payloads.CreateTaskVariablePayload;
  18 +import org.activiti.api.task.model.payloads.DeleteTaskPayload;
  19 +import org.activiti.api.task.model.payloads.GetTaskVariablesPayload;
  20 +import org.activiti.api.task.model.payloads.GetTasksPayload;
  21 +import org.activiti.api.task.model.payloads.ReleaseTaskPayload;
  22 +import org.activiti.api.task.model.payloads.SaveTaskPayload;
  23 +import org.activiti.api.task.model.payloads.UpdateTaskPayload;
  24 +import org.activiti.api.task.model.payloads.UpdateTaskVariablePayload;
  25 +import org.activiti.api.task.runtime.TaskRuntime;
  26 +import org.activiti.api.task.runtime.conf.TaskRuntimeConfiguration;
  27 +import org.activiti.engine.RuntimeService;
  28 +import org.activiti.engine.TaskService;
  29 +import org.activiti.engine.impl.TaskQueryImpl;
  30 +import org.activiti.engine.query.QueryProperty;
  31 +import org.activiti.engine.runtime.ProcessInstance;
  32 +import org.activiti.engine.runtime.ProcessInstanceQuery;
  33 +import org.activiti.engine.task.IdentityLink;
  34 +import org.activiti.engine.task.IdentityLinkType;
  35 +import org.activiti.engine.task.NativeTaskQuery;
  36 +import org.activiti.engine.task.TaskQuery;
  37 +import org.activiti.runtime.api.impl.TaskRuntimeHelper;
  38 +import org.activiti.runtime.api.model.impl.APITaskConverter;
  39 +import org.activiti.runtime.api.model.impl.APIVariableInstanceConverter;
  40 +import org.activiti.runtime.api.query.impl.PageImpl;
  41 +import org.springframework.beans.factory.annotation.Autowired;
  42 +import org.springframework.security.access.prepost.PreAuthorize;
  43 +import org.springframework.stereotype.Service;
  44 +
  45 +import com.sun.jna.Native;
  46 +import com.trash.activiti.service.myTaskService;
  47 +import com.trash.common.utils.SecurityUtils;
  48 +
  49 +import java.util.ArrayList;
  50 +import java.util.Date;
  51 +import java.util.HashSet;
  52 +import java.util.List;
  53 +import java.util.Objects;
  54 +import java.util.Set;
  55 +import java.util.stream.Collector;
  56 +import java.util.stream.Collectors;
  57 +
  58 +@PreAuthorize("hasRole('ACTIVITI_USER')")
  59 +@Service
  60 +public class myTaskServiceImpl implements myTaskService {
  61 +
  62 + private final TaskService taskService;
  63 +
  64 + private final APITaskConverter taskConverter;
  65 +
  66 + private final APIVariableInstanceConverter variableInstanceConverter;
  67 +
  68 + private final TaskRuntimeConfiguration configuration;
  69 +
  70 + private final UserGroupManager userGroupManager;
  71 +
  72 + private final SecurityManager securityManager;
  73 +
  74 + private final TaskRuntimeHelper taskRuntimeHelper;
  75 +
  76 + @Autowired
  77 + RuntimeService runtimeService;
  78 +
  79 + public myTaskServiceImpl(TaskService taskService,
  80 + UserGroupManager userGroupManager,
  81 + SecurityManager securityManager,
  82 + APITaskConverter taskConverter,
  83 + APIVariableInstanceConverter variableInstanceConverter,
  84 + TaskRuntimeConfiguration configuration,
  85 + TaskRuntimeHelper taskRuntimeHelper) {
  86 + this.taskService = taskService;
  87 + this.userGroupManager = userGroupManager;
  88 + this.securityManager = securityManager;
  89 + this.taskConverter = taskConverter;
  90 + this.variableInstanceConverter = variableInstanceConverter;
  91 + this.configuration = configuration;
  92 + this.taskRuntimeHelper = taskRuntimeHelper;
  93 + }
  94 +
  95 + @Override
  96 + public TaskRuntimeConfiguration configuration() {
  97 + return configuration;
  98 + }
  99 +
  100 + @Override
  101 + public Task task(String taskId) {
  102 +
  103 + org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
  104 +
  105 + if (task == null) {
  106 + throw new NotFoundException("未找到审批任务 id: " + taskId);
  107 + }
  108 +
  109 +
  110 + return taskConverter.from(task);
  111 + }
  112 +
  113 + @Override
  114 + public Page<Task> tasks(Pageable pageable) {
  115 + return tasks(pageable,null,null,null);
  116 + }
  117 + @Override
  118 + public Page<Task> tasks(Pageable pageable,GetTasksPayload getTasksPayload,Set<String> defKey,String name) {
  119 +
  120 +
  121 + TaskQuery crossQuery = taskService.createTaskQuery();
  122 + TaskQuery crossQuery1 = taskService.createTaskQuery();
  123 +
  124 + TaskQuery userQuery = taskService.createTaskQuery();
  125 +
  126 + userQuery.taskAssignee(SecurityUtils.getUsername());
  127 +
  128 + TaskQuery taskQuery = taskService.createTaskQuery();
  129 +
  130 +
  131 + List<String> pid = new ArrayList<>();
  132 +
  133 + List<String> posts = SecurityUtils.getLoginUser().getUser().getPostIds();
  134 + List<String> roles = SecurityUtils.getLoginUser().getUser().getRoleIds();
  135 +
  136 + if(posts == null || posts == null){
  137 + crossQuery.taskCandidateOrAssigned(SecurityUtils.getUsername());
  138 + crossQuery1.taskCandidateOrAssigned(SecurityUtils.getUsername());
  139 + }else{
  140 +
  141 + for(int i = 0;i<roles.size();i++){
  142 +
  143 + crossQuery = taskService.createTaskQuery().taskCandidateUser(roles.get(i));
  144 + crossQuery1 = taskService.createTaskQuery().taskCandidateGroup(posts.get(i));
  145 +
  146 + List<org.activiti.engine.task.Task> list1 = crossQuery.list();
  147 + List<org.activiti.engine.task.Task> list2 = crossQuery1.list();
  148 +
  149 +
  150 + for(org.activiti.engine.task.Task t1:list1){
  151 +
  152 + for(org.activiti.engine.task.Task t2:list2){
  153 +
  154 + if(t1.getId().equals(t2.getId())){
  155 + pid.add(t1.getProcessInstanceId());
  156 + }
  157 + }
  158 + }
  159 +
  160 + }
  161 + }
  162 +
  163 +
  164 + for(org.activiti.engine.task.Task tasks : userQuery.list()){
  165 + pid.add(tasks.getProcessInstanceId());
  166 + }
  167 +
  168 +
  169 + ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
  170 +
  171 + if(name != null && !name.isEmpty()){
  172 + query.processInstanceNameLike("%"+name+"%");
  173 + }
  174 + if(defKey.size()>0){
  175 + query.processDefinitionKeys(defKey);
  176 + }
  177 +
  178 + if(pid.size()>0){
  179 + Set<String> idSet = new HashSet<>();
  180 +
  181 + for(String str:pid){
  182 + idSet.add(str);
  183 + }
  184 +
  185 + List<ProcessInstance> pList = query.processInstanceIds(idSet).list();
  186 +
  187 + pid = pList.parallelStream().map(p->p.getId()).collect(Collectors.toList());
  188 + }
  189 +
  190 +
  191 +
  192 + if(pid.size() > 0){
  193 + taskQuery.processInstanceIdIn(pid).orderByTaskCreateTime().desc();
  194 + }else{
  195 + taskQuery.taskAssignee(SecurityUtils.getUsername()).orderByTaskCreateTime().desc();
  196 + }
  197 +
  198 + List<Task> tasks = taskConverter.from(taskQuery.listPage(pageable.getStartIndex(),
  199 + pageable.getMaxItems()));
  200 +
  201 +
  202 + return new PageImpl<>(tasks,Math.toIntExact(taskQuery.count()));
  203 + }
  204 +
  205 + @Override
  206 + public Task complete(CompleteTaskPayload completeTaskPayload) {
  207 + //@TODO: not the most efficient way to return the just completed task, improve
  208 + // we might need to create an empty shell with the task ID and Status only
  209 + Task task;
  210 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  211 + try {
  212 + task = task(completeTaskPayload.getTaskId());
  213 + } catch (IllegalStateException ex) {
  214 + throw new IllegalStateException("The authenticated user cannot complete task" + completeTaskPayload.getTaskId() + " due he/she cannot access to the task");
  215 + }
  216 + // validate the the task does have an assignee
  217 + if (task.getAssignee() == null || task.getAssignee().isEmpty()) {
  218 + throw new IllegalStateException("The task needs to be claimed before trying to complete it");
  219 + }
  220 + if (!task.getAssignee().equals(authenticatedUserId)) {
  221 + throw new IllegalStateException("You cannot complete the task if you are not assigned to it");
  222 + }
  223 +
  224 + taskService.complete(completeTaskPayload.getTaskId(),
  225 + completeTaskPayload.getVariables(), true);
  226 +
  227 +
  228 + ((TaskImpl) task).setStatus(Task.TaskStatus.COMPLETED);
  229 +
  230 + return task;
  231 + }
  232 +
  233 + @Override
  234 + public Task claim(ClaimTaskPayload claimTaskPayload) {
  235 + // Validate that the task is visible by the currently authorized user
  236 + Task task;
  237 + try {
  238 + task = task(claimTaskPayload.getTaskId());
  239 + } catch (IllegalStateException ex) {
  240 + throw new IllegalStateException("The authenticated user cannot claim task" + claimTaskPayload.getTaskId() + " due it is not a candidate for it");
  241 + }
  242 + // validate the the task doesn't have an assignee
  243 + if (task.getAssignee() != null && !task.getAssignee().isEmpty()) {
  244 + throw new IllegalStateException("The task was already claimed, the assignee of this task needs to release it first for you to claim it");
  245 + }
  246 +
  247 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  248 + claimTaskPayload.setAssignee(authenticatedUserId);
  249 + taskService.claim(claimTaskPayload.getTaskId(),
  250 + claimTaskPayload.getAssignee());
  251 +
  252 + return task(claimTaskPayload.getTaskId());
  253 + }
  254 +
  255 + @Override
  256 + public Task release(ReleaseTaskPayload releaseTaskPayload) {
  257 + // Validate that the task is visible by the currently authorized user
  258 + Task task;
  259 + try {
  260 + task = task(releaseTaskPayload.getTaskId());
  261 + } catch (IllegalStateException ex) {
  262 + throw new IllegalStateException("The authenticated user cannot claim task" + releaseTaskPayload.getTaskId() + " due it is not a candidate for it");
  263 + }
  264 + // validate the the task doesn't have an assignee
  265 + if (task.getAssignee() == null || task.getAssignee().isEmpty()) {
  266 + throw new IllegalStateException("You cannot release a task that is not claimed");
  267 + }
  268 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  269 + // validate that you are trying to release task where you are the assignee
  270 + if (!task.getAssignee().equals(authenticatedUserId)) {
  271 + throw new IllegalStateException("You cannot release a task where you are not the assignee");
  272 + }
  273 +
  274 + taskService.unclaim(releaseTaskPayload.getTaskId());
  275 + return task(releaseTaskPayload.getTaskId());
  276 + }
  277 +
  278 + @Override
  279 + public Task update(UpdateTaskPayload updateTaskPayload) {
  280 + return taskRuntimeHelper.applyUpdateTaskPayload(false, updateTaskPayload);
  281 + }
  282 +
  283 + @Override
  284 + public Task delete(DeleteTaskPayload deleteTaskPayload) {
  285 + //@TODO: not the most efficient way to return the just deleted task, improve
  286 + // we might need to create an empty shell with the task ID and Status only
  287 + Task task;
  288 + try {
  289 + task = task(deleteTaskPayload.getTaskId());
  290 + } catch (IllegalStateException ex) {
  291 + throw new IllegalStateException("The authenticated user cannot delete the task" + deleteTaskPayload.getTaskId() + " due it is not the current assignee");
  292 + }
  293 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  294 + // validate that you are trying to delete task where you are the assignee or the owner
  295 + if ((task.getAssignee() == null || task.getAssignee().isEmpty() || !task.getAssignee().equals(authenticatedUserId)) &&
  296 + (task.getOwner() == null || task.getOwner().isEmpty() || !task.getOwner().equals(authenticatedUserId))) {
  297 + throw new IllegalStateException("You cannot delete a task where you are not the assignee/owner");
  298 + }
  299 + TaskImpl deletedTaskData = new TaskImpl(task.getId(),
  300 + task.getName(),
  301 + Task.TaskStatus.CANCELLED);
  302 + if (!deleteTaskPayload.hasReason()) {
  303 + deleteTaskPayload.setReason("Task deleted by " + authenticatedUserId);
  304 + }
  305 + taskService.deleteTask(deleteTaskPayload.getTaskId(),
  306 + deleteTaskPayload.getReason(),
  307 + true);
  308 + return deletedTaskData;
  309 + }
  310 +
  311 + @Override
  312 + public Task create(CreateTaskPayload createTaskPayload) {
  313 + if (createTaskPayload.getName() == null || createTaskPayload.getName().isEmpty()) {
  314 + throw new IllegalStateException("You cannot create a task without name");
  315 + }
  316 +
  317 + org.activiti.engine.task.Task task = taskService.newTask();
  318 + task.setName(createTaskPayload.getName());
  319 + task.setDescription(createTaskPayload.getDescription());
  320 + task.setDueDate(createTaskPayload.getDueDate());
  321 + task.setPriority(createTaskPayload.getPriority());
  322 + if (createTaskPayload.getAssignee() != null && !createTaskPayload.getAssignee().isEmpty()) {
  323 + task.setAssignee(createTaskPayload.getAssignee());
  324 + }
  325 + task.setParentTaskId(createTaskPayload.getParentTaskId());
  326 + task.setFormKey(createTaskPayload.getFormKey());
  327 + task.setOwner(securityManager.getAuthenticatedUserId());
  328 + taskService.saveTask(task);
  329 + taskService.addCandidateUser(task.getId(),
  330 + securityManager.getAuthenticatedUserId());
  331 + if (createTaskPayload.getCandidateGroups() != null && !createTaskPayload.getCandidateGroups().isEmpty()) {
  332 + for ( String g : createTaskPayload.getCandidateGroups() ) {
  333 + taskService.addCandidateGroup(task.getId(),
  334 + g);
  335 + }
  336 + }
  337 +
  338 + if (createTaskPayload.getCandidateUsers() != null && !createTaskPayload.getCandidateUsers().isEmpty()) {
  339 + for ( String u : createTaskPayload.getCandidateUsers() ) {
  340 + taskService.addCandidateUser(task.getId(),
  341 + u);
  342 + }
  343 + }
  344 +
  345 + return taskConverter.from(task);
  346 + }
  347 +
  348 + @Override
  349 + public void addCandidateUsers(CandidateUsersPayload candidateUsersPayload) {
  350 + org.activiti.engine.task.Task internalTask;
  351 + try {
  352 + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateUsersPayload.getTaskId());
  353 +
  354 + } catch (IllegalStateException ex) {
  355 + throw new IllegalStateException("The authenticated user cannot update the task" + candidateUsersPayload.getTaskId() + " due it is not the current assignee");
  356 + }
  357 +
  358 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  359 +
  360 + // validate that you are trying to add CandidateUsers to the task where you are the assignee
  361 + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
  362 + throw new IllegalStateException("You cannot update a task where you are not the assignee");
  363 + }
  364 +
  365 +
  366 + if (candidateUsersPayload.getCandidateUsers() != null && !candidateUsersPayload.getCandidateUsers().isEmpty()) {
  367 + for ( String u : candidateUsersPayload.getCandidateUsers() ) {
  368 + taskService.addCandidateUser(internalTask.getId(),
  369 + u);
  370 + }
  371 + }
  372 + }
  373 +
  374 + @Override
  375 + public void deleteCandidateUsers(CandidateUsersPayload candidateUsersPayload) {
  376 + org.activiti.engine.task.Task internalTask;
  377 + try {
  378 + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateUsersPayload.getTaskId());
  379 +
  380 + } catch (IllegalStateException ex) {
  381 + throw new IllegalStateException("The authenticated user cannot update the task" + candidateUsersPayload.getTaskId() + " due it is not the current assignee");
  382 + }
  383 +
  384 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  385 +
  386 + // validate that you are trying to add CandidateUsers to the task where you are the assignee
  387 + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
  388 + throw new IllegalStateException("You cannot update a task where you are not the assignee");
  389 + }
  390 +
  391 +
  392 + if (candidateUsersPayload.getCandidateUsers() != null && !candidateUsersPayload.getCandidateUsers().isEmpty()) {
  393 + for ( String u : candidateUsersPayload.getCandidateUsers() ) {
  394 + taskService.deleteCandidateUser(internalTask.getId(),
  395 + u);
  396 + }
  397 + }
  398 + }
  399 +
  400 + @Override
  401 + public void addCandidateGroups(CandidateGroupsPayload candidateGroupsPayload) {
  402 + org.activiti.engine.task.Task internalTask;
  403 + try {
  404 + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateGroupsPayload.getTaskId());
  405 +
  406 + } catch (IllegalStateException ex) {
  407 + throw new IllegalStateException("The authenticated user cannot update the task" + candidateGroupsPayload.getTaskId() + " due it is not the current assignee");
  408 + }
  409 +
  410 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  411 + // validate that you are trying to add CandidateGroups to the task where you are the assignee
  412 + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
  413 + throw new IllegalStateException("You cannot update a task where you are not the assignee");
  414 + }
  415 +
  416 +
  417 + if (candidateGroupsPayload.getCandidateGroups() != null && !candidateGroupsPayload.getCandidateGroups().isEmpty()) {
  418 + for ( String g : candidateGroupsPayload.getCandidateGroups() ) {
  419 + taskService.addCandidateGroup(internalTask.getId(),
  420 + g);
  421 + }
  422 + }
  423 + }
  424 +
  425 + @Override
  426 + public void deleteCandidateGroups(CandidateGroupsPayload candidateGroupsPayload) {
  427 + org.activiti.engine.task.Task internalTask;
  428 + try {
  429 + internalTask = taskRuntimeHelper.getInternalTaskWithChecks(candidateGroupsPayload.getTaskId());
  430 +
  431 + } catch (IllegalStateException ex) {
  432 + throw new IllegalStateException("The authenticated user cannot update the task" + candidateGroupsPayload.getTaskId() + " due it is not the current assignee");
  433 + }
  434 +
  435 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  436 + // validate that you are trying to add CandidateGroups to the task where you are the assignee
  437 + if (!Objects.equals(internalTask.getAssignee(), authenticatedUserId)) {
  438 + throw new IllegalStateException("You cannot update a task where you are not the assignee");
  439 + }
  440 +
  441 +
  442 + if (candidateGroupsPayload.getCandidateGroups() != null && !candidateGroupsPayload.getCandidateGroups().isEmpty()) {
  443 + for ( String g : candidateGroupsPayload.getCandidateGroups() ) {
  444 + taskService.deleteCandidateGroup(internalTask.getId(),
  445 + g);
  446 + }
  447 + }
  448 + }
  449 +
  450 + @Override
  451 + public List<String> userCandidates(String taskId) {
  452 + List<IdentityLink> identityLinks = getIdentityLinks(taskId);
  453 + List<String> userCandidates = new ArrayList<>();
  454 + if (identityLinks != null) {
  455 + for ( IdentityLink i : identityLinks ) {
  456 + if (i.getUserId() != null) {
  457 + if (i.getType().equals(IdentityLinkType.CANDIDATE)) {
  458 + userCandidates.add(i.getUserId());
  459 + }
  460 + }
  461 + }
  462 +
  463 + }
  464 + return userCandidates;
  465 + }
  466 +
  467 + @Override
  468 + public List<String> groupCandidates(String taskId) {
  469 + List<IdentityLink> identityLinks = getIdentityLinks(taskId);
  470 + List<String> groupCandidates = new ArrayList<>();
  471 + if (identityLinks != null) {
  472 + for ( IdentityLink i : identityLinks ) {
  473 + if (i.getGroupId() != null) {
  474 + if (i.getType().equals(IdentityLinkType.CANDIDATE)) {
  475 + groupCandidates.add(i.getGroupId());
  476 + }
  477 + }
  478 + }
  479 +
  480 + }
  481 + return groupCandidates;
  482 + }
  483 +
  484 + @Override
  485 + public List<VariableInstance> variables(GetTaskVariablesPayload getTaskVariablesPayload) {
  486 + taskRuntimeHelper.assertHasAccessToTask(getTaskVariablesPayload.getTaskId());
  487 + return variableInstanceConverter.from(taskRuntimeHelper.getInternalTaskVariables(getTaskVariablesPayload.getTaskId()).values());
  488 + }
  489 +
  490 + @Override
  491 + public void createVariable(CreateTaskVariablePayload createTaskVariablePayload) {
  492 + taskRuntimeHelper.createVariable(false, createTaskVariablePayload);
  493 + }
  494 +
  495 + @Override
  496 + public void updateVariable(UpdateTaskVariablePayload updateTaskVariablePayload) {
  497 + taskRuntimeHelper.updateVariable(false, updateTaskVariablePayload);
  498 + }
  499 +
  500 + private List<IdentityLink> getIdentityLinks(String taskId) {
  501 + String authenticatedUserId = securityManager.getAuthenticatedUserId();
  502 + if (authenticatedUserId != null && !authenticatedUserId.isEmpty()) {
  503 + List<String> userRoles = userGroupManager.getUserRoles(authenticatedUserId);
  504 + List<String> userGroups = userGroupManager.getUserGroups(authenticatedUserId);
  505 + org.activiti.engine.task.Task internalTask = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId,
  506 + userGroups).taskId(taskId).singleResult();
  507 + if (internalTask == null) {
  508 + throw new NotFoundException("Unable to find task for the given id: " + taskId + " for user: " + authenticatedUserId + " (with groups: " + userGroups + " & with roles: " + userRoles + ")");
  509 + }
  510 + return taskService.getIdentityLinksForTask(taskId);
  511 + }
  512 + throw new IllegalStateException("There is no authenticated user, we need a user authenticated to find tasks");
  513 + }
  514 +
  515 + @Override
  516 + public void save(SaveTaskPayload saveTaskPayload) {
  517 + taskRuntimeHelper.assertHasAccessToTask(saveTaskPayload.getTaskId());
  518 +
  519 + taskService.setVariablesLocal(saveTaskPayload.getTaskId(),
  520 + saveTaskPayload.getVariables());
  521 + }
  522 +
  523 +}
... ...
trash-activiti/src/main/java/com/trash/activiti/service/myTaskService.java
1   -package com.trash.activiti.service;
2   -import java.util.List;
3   -import java.util.Set;
4   -
5   -import org.activiti.api.model.shared.model.VariableInstance;
6   -import org.activiti.api.runtime.shared.query.Page;
7   -import org.activiti.api.runtime.shared.query.Pageable;
8   -import org.activiti.api.task.model.Task;
9   -import org.activiti.api.task.model.payloads.CandidateGroupsPayload;
10   -import org.activiti.api.task.model.payloads.CandidateUsersPayload;
11   -import org.activiti.api.task.model.payloads.ClaimTaskPayload;
12   -import org.activiti.api.task.model.payloads.CompleteTaskPayload;
13   -import org.activiti.api.task.model.payloads.CreateTaskPayload;
14   -import org.activiti.api.task.model.payloads.CreateTaskVariablePayload;
15   -import org.activiti.api.task.model.payloads.DeleteTaskPayload;
16   -import org.activiti.api.task.model.payloads.GetTaskVariablesPayload;
17   -import org.activiti.api.task.model.payloads.GetTasksPayload;
18   -import org.activiti.api.task.model.payloads.ReleaseTaskPayload;
19   -import org.activiti.api.task.model.payloads.SaveTaskPayload;
20   -import org.activiti.api.task.model.payloads.UpdateTaskPayload;
21   -import org.activiti.api.task.model.payloads.UpdateTaskVariablePayload;
22   -import org.activiti.api.task.runtime.conf.TaskRuntimeConfiguration;
23   -
24   -public interface myTaskService {
25   -
26   -
27   -
28   - TaskRuntimeConfiguration configuration();
29   -
30   - /**
31   - * Get task by id if the authenticated user:
32   - * - is the assignee or
33   - * - is in a group with is assigned to the task or
34   - * - has admin role
35   - */
36   - Task task(String taskId);
37   -
38   - /**
39   - * Get all tasks where
40   - * - the authenticated user is the actual assignee
41   - * - the user belongs to a group that is a candidate for the task
42   - */
43   - Page<Task> tasks(Pageable pageable);
44   -
45   - /**
46   - * Get all tasks where applying the filters in the Payload
47   - * - the authenticated user is the actual assignee
48   - * - the user belongs to a group that is a candidate for the task
49   - */
50   -
51   -
52   - Page<Task> tasks(Pageable pageable,
53   - GetTasksPayload getTasksPayload,Set<String> defKey,String name);
54   -
55   - /**
56   - * Creates a task based on the following rules
57   - * - If an assignee is provided it creates and assign the task to the provided user
58   - * - If there is no assignee the task is not assigned, just created
59   - * - The owner of the task is the currently authenticated user (which is automatically added as a candidate)
60   - * - If a group or list of groups is provided those groups are added as candidates for claiming the task
61   - */
62   - Task create(CreateTaskPayload createTaskPayload);
63   -
64   - /**
65   - * Claim a task with the currently authenticated user
66   - * - If there is no authenticated user throw an IllegalStateException
67   - * - If the currently authenticated user is not a candidate throw an IllegalStateException
68   - * - The current approach doesn't support impersonation, it will always take the currently authenticated user
69   - * - after the claim the task should be in assigned status
70   - */
71   - Task claim(ClaimTaskPayload claimTaskPayload);
72   -
73   - /**
74   - * Release a previously claimed task
75   - * - The authenticated user needs to be the assignee in order to release it
76   - */
77   - Task release(ReleaseTaskPayload releaseTaskPayload);
78   -
79   - /**
80   - * Completes the selected task with the variables set in the payload
81   - * - This method checks that the task is visible by the authenticated user
82   - * - This method also check that the task is assigned to the currently authenticated user before complete
83   - * - This method return a shallow Task object with the basic information needed to validate that the task was completed
84   - */
85   - Task complete(CompleteTaskPayload completeTaskPayload);
86   -
87   - /**
88   - * Saves the selected task with the variables set in the payload in the task scope
89   - * - This method checks that the task is visible by the authenticated user
90   - * - This method also check that the task is assigned to the currently authenticated user
91   - */
92   - void save(SaveTaskPayload saveTaskPayload);
93   -
94   - /**
95   - * Updates details of a task
96   - * - The authenticated user should be able to see the task in order to update its details
97   - * - The authenticated user needs to be the assignee of the task to update its details, if not he/she will need to claim the task first
98   - */
99   - Task update(UpdateTaskPayload updateTaskPayload);
100   -
101   - /**
102   - * Deletes a task
103   - * - The authenticated user should be able to see the task in order to delete it
104   - * - The authenticated user needs to be the assignee of the task in order to delete it
105   - * - this method returns a shallow Task with the necessary information to validate that the task was deleted
106   - */
107   - Task delete(DeleteTaskPayload deleteTaskPayload);
108   -
109   - void createVariable(CreateTaskVariablePayload createTaskVariablePayload);
110   - void updateVariable(UpdateTaskVariablePayload updateTaskVariablePayload);
111   - List<VariableInstance> variables(GetTaskVariablesPayload getTaskVariablesPayload);
112   -
113   - void addCandidateUsers(CandidateUsersPayload candidateUsersPayload);
114   - void deleteCandidateUsers(CandidateUsersPayload candidateUsersPayload);
115   -
116   - void addCandidateGroups(CandidateGroupsPayload candidateGroupsPayload);
117   - void deleteCandidateGroups(CandidateGroupsPayload candidateGroupsPayload);
118   -
119   - List<String> userCandidates(String taskId);
120   - List<String> groupCandidates(String taskId);
121   -
122   -}
  1 +package com.trash.activiti.service;
  2 +import java.util.List;
  3 +import java.util.Set;
  4 +
  5 +import org.activiti.api.model.shared.model.VariableInstance;
  6 +import org.activiti.api.runtime.shared.query.Page;
  7 +import org.activiti.api.runtime.shared.query.Pageable;
  8 +import org.activiti.api.task.model.Task;
  9 +import org.activiti.api.task.model.payloads.CandidateGroupsPayload;
  10 +import org.activiti.api.task.model.payloads.CandidateUsersPayload;
  11 +import org.activiti.api.task.model.payloads.ClaimTaskPayload;
  12 +import org.activiti.api.task.model.payloads.CompleteTaskPayload;
  13 +import org.activiti.api.task.model.payloads.CreateTaskPayload;
  14 +import org.activiti.api.task.model.payloads.CreateTaskVariablePayload;
  15 +import org.activiti.api.task.model.payloads.DeleteTaskPayload;
  16 +import org.activiti.api.task.model.payloads.GetTaskVariablesPayload;
  17 +import org.activiti.api.task.model.payloads.GetTasksPayload;
  18 +import org.activiti.api.task.model.payloads.ReleaseTaskPayload;
  19 +import org.activiti.api.task.model.payloads.SaveTaskPayload;
  20 +import org.activiti.api.task.model.payloads.UpdateTaskPayload;
  21 +import org.activiti.api.task.model.payloads.UpdateTaskVariablePayload;
  22 +import org.activiti.api.task.runtime.conf.TaskRuntimeConfiguration;
  23 +
  24 +public interface myTaskService {
  25 +
  26 +
  27 +
  28 + TaskRuntimeConfiguration configuration();
  29 +
  30 + /**
  31 + * Get task by id if the authenticated user:
  32 + * - is the assignee or
  33 + * - is in a group with is assigned to the task or
  34 + * - has admin role
  35 + */
  36 + Task task(String taskId);
  37 +
  38 + /**
  39 + * Get all tasks where
  40 + * - the authenticated user is the actual assignee
  41 + * - the user belongs to a group that is a candidate for the task
  42 + */
  43 + Page<Task> tasks(Pageable pageable);
  44 +
  45 + /**
  46 + * Get all tasks where applying the filters in the Payload
  47 + * - the authenticated user is the actual assignee
  48 + * - the user belongs to a group that is a candidate for the task
  49 + */
  50 +
  51 +
  52 + Page<Task> tasks(Pageable pageable,
  53 + GetTasksPayload getTasksPayload,Set<String> defKey,String name);
  54 +
  55 + /**
  56 + * Creates a task based on the following rules
  57 + * - If an assignee is provided it creates and assign the task to the provided user
  58 + * - If there is no assignee the task is not assigned, just created
  59 + * - The owner of the task is the currently authenticated user (which is automatically added as a candidate)
  60 + * - If a group or list of groups is provided those groups are added as candidates for claiming the task
  61 + */
  62 + Task create(CreateTaskPayload createTaskPayload);
  63 +
  64 + /**
  65 + * Claim a task with the currently authenticated user
  66 + * - If there is no authenticated user throw an IllegalStateException
  67 + * - If the currently authenticated user is not a candidate throw an IllegalStateException
  68 + * - The current approach doesn't support impersonation, it will always take the currently authenticated user
  69 + * - after the claim the task should be in assigned status
  70 + */
  71 + Task claim(ClaimTaskPayload claimTaskPayload);
  72 +
  73 + /**
  74 + * Release a previously claimed task
  75 + * - The authenticated user needs to be the assignee in order to release it
  76 + */
  77 + Task release(ReleaseTaskPayload releaseTaskPayload);
  78 +
  79 + /**
  80 + * Completes the selected task with the variables set in the payload
  81 + * - This method checks that the task is visible by the authenticated user
  82 + * - This method also check that the task is assigned to the currently authenticated user before complete
  83 + * - This method return a shallow Task object with the basic information needed to validate that the task was completed
  84 + */
  85 + Task complete(CompleteTaskPayload completeTaskPayload);
  86 +
  87 + /**
  88 + * Saves the selected task with the variables set in the payload in the task scope
  89 + * - This method checks that the task is visible by the authenticated user
  90 + * - This method also check that the task is assigned to the currently authenticated user
  91 + */
  92 + void save(SaveTaskPayload saveTaskPayload);
  93 +
  94 + /**
  95 + * Updates details of a task
  96 + * - The authenticated user should be able to see the task in order to update its details
  97 + * - The authenticated user needs to be the assignee of the task to update its details, if not he/she will need to claim the task first
  98 + */
  99 + Task update(UpdateTaskPayload updateTaskPayload);
  100 +
  101 + /**
  102 + * Deletes a task
  103 + * - The authenticated user should be able to see the task in order to delete it
  104 + * - The authenticated user needs to be the assignee of the task in order to delete it
  105 + * - this method returns a shallow Task with the necessary information to validate that the task was deleted
  106 + */
  107 + Task delete(DeleteTaskPayload deleteTaskPayload);
  108 +
  109 + void createVariable(CreateTaskVariablePayload createTaskVariablePayload);
  110 + void updateVariable(UpdateTaskVariablePayload updateTaskVariablePayload);
  111 + List<VariableInstance> variables(GetTaskVariablesPayload getTaskVariablesPayload);
  112 +
  113 + void addCandidateUsers(CandidateUsersPayload candidateUsersPayload);
  114 + void deleteCandidateUsers(CandidateUsersPayload candidateUsersPayload);
  115 +
  116 + void addCandidateGroups(CandidateGroupsPayload candidateGroupsPayload);
  117 + void deleteCandidateGroups(CandidateGroupsPayload candidateGroupsPayload);
  118 +
  119 + List<String> userCandidates(String taskId);
  120 + List<String> groupCandidates(String taskId);
  121 +
  122 +}
... ...
trash-framework/src/main/java/com/trash/framework/security/filter/JwtAuthenticationTokenFilter.java
1 1 package com.trash.framework.security.filter;
2 2  
3   -import java.awt.datatransfer.FlavorEvent;
4 3 import java.io.IOException;
  4 +import java.util.HashMap;
  5 +import java.util.Map;
  6 +import java.util.Set;
  7 +import java.util.TreeMap;
  8 +
5 9 import javax.servlet.FilterChain;
6 10 import javax.servlet.ServletException;
7   -import javax.servlet.http.Cookie;
  11 +import javax.servlet.ServletResponse;
8 12 import javax.servlet.http.HttpServletRequest;
9 13 import javax.servlet.http.HttpServletResponse;
  14 +
  15 +import org.apache.commons.fileupload.servlet.ServletFileUpload;
10 16 import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.http.HttpStatus;
11 18 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
12 19 import org.springframework.security.core.context.SecurityContextHolder;
13 20 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
14 21 import org.springframework.stereotype.Component;
15 22 import org.springframework.web.filter.OncePerRequestFilter;
16 23  
  24 +import com.alibaba.fastjson.JSON;
  25 +import com.alibaba.fastjson.JSONObject;
  26 +import com.google.gson.Gson;
17 27 import com.trash.common.config.trashConfig;
18 28 import com.trash.common.core.domain.model.LoginUser;
19 29 import com.trash.common.utils.RemoteServerUtils;
... ... @@ -39,13 +49,15 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
39 49 /** 系统基础配置 */
40 50 @Autowired
41 51 private trashConfig trashConfig;
42   -
  52 +
  53 + private static final String SQL_REGX = ".*(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|drop|execute)\\b).*";
  54 +
43 55  
44 56 @Override
45 57 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
46 58 throws ServletException, IOException
47 59 {
48   -
  60 +
49 61  
50 62 if(RemoteServerUtils.remote == null){
51 63 RemoteServerUtils.remote = trashConfig.getRemotePath();
... ... @@ -76,10 +88,72 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
76 88 authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
77 89 SecurityContextHolder.getContext().setAuthentication(authenticationToken);
78 90 }
79   - chain.doFilter(request, response);
  91 +
  92 + if(ServletFileUpload.isMultipartContent(request)){
  93 + chain.doFilter(request, response);
  94 + return;
  95 + }
  96 +
  97 + // 防止流读取一次后就没有了, 所以需要将流继续写出去
  98 + MyRequestWrapper requestWrapper = new MyRequestWrapper(request);
  99 + Gson gson = new Gson();
  100 + // 获取请求参数
  101 + Map<String, Object> paramsMaps = new HashMap<String, Object>();
  102 + if ("POST".equals(request.getMethod().toUpperCase())) {
  103 + String body = requestWrapper.getBody();
  104 + try{
  105 + paramsMaps = gson.fromJson(body, HashMap.class);
  106 + }catch(Exception e){
  107 + e.printStackTrace();
  108 + }
  109 + } else {
  110 + Map<String, String[]> parameterMap = requestWrapper.getParameterMap();
  111 + Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
  112 + for (Map.Entry<String, String[]> next : entries) {
  113 + paramsMaps.put(next.getKey(), next.getValue()[0]);
  114 + }
  115 + }
  116 +
  117 + if(paramsMaps != null){
  118 + // 校验SQL注入
  119 + for (Object o : paramsMaps.entrySet()) {
  120 + Map.Entry entry = (Map.Entry) o;
  121 + Object value = entry.getValue();
  122 + if (value != null) {
  123 + boolean isValid = checkSqlInject(value.toString(), response);
  124 + if (!isValid) {
  125 + return;
  126 + }
  127 + }
  128 + }
  129 + }
  130 +
  131 +
  132 +
  133 + chain.doFilter(requestWrapper, response);
80 134 }
81 135  
82 136  
  137 + private boolean checkSqlInject(String value, ServletResponse servletResponse) throws IOException {
  138 + if (null != value && value.matches(SQL_REGX)) {
  139 +// log.error("您输入的参数有非法字符,请输入正确的参数");
  140 + HttpServletResponse response = (HttpServletResponse) servletResponse;
  141 +
  142 + response.setStatus(HttpStatus.BAD_REQUEST.value());
  143 +
  144 + Map<String, String> rsp = new HashMap<>();
  145 + rsp.put("code", HttpStatus.BAD_REQUEST.value() + "");
  146 + rsp.put("message", "您输入的参数有非法字符,请输入正确的参数!");
  147 +
  148 + response.setContentType("application/json;charset=UTF-8");
  149 + response.getWriter().write(JSON.toJSONString(rsp));
  150 + response.getWriter().flush();
  151 + response.getWriter().close();
  152 + return false;
  153 + }
  154 + return true;
  155 + }
  156 +
83 157 private LoginUser requestRemoteUser(String token) {
84 158 return loginService.loginByRemote(token);
85 159 }
... ...
trash-framework/src/main/java/com/trash/framework/security/filter/MyRequestWrapper.java 0 → 100644
  1 +package com.trash.framework.security.filter;
  2 +
  3 +import java.io.BufferedReader;
  4 +import java.io.ByteArrayInputStream;
  5 +import java.io.IOException;
  6 +import java.io.InputStream;
  7 +import java.io.InputStreamReader;
  8 +import java.util.Enumeration;
  9 +import java.util.Map;
  10 +
  11 +import javax.servlet.ReadListener;
  12 +import javax.servlet.ServletInputStream;
  13 +import javax.servlet.http.HttpServletRequest;
  14 +import javax.servlet.http.HttpServletRequestWrapper;
  15 +
  16 +import kotlin.text.Charsets;
  17 +
  18 +public class MyRequestWrapper extends HttpServletRequestWrapper {
  19 + private String body;
  20 + public MyRequestWrapper(HttpServletRequest request) throws IOException {
  21 + super(request);
  22 + StringBuilder stringBuilder = new StringBuilder();
  23 + BufferedReader bufferedReader = null;
  24 + try {
  25 + InputStream inputStream = request.getInputStream();
  26 + if (inputStream != null) {
  27 + bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));
  28 + char[] charBuffer = new char[128];
  29 + int bytesRead = -1;
  30 + while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
  31 + stringBuilder.append(charBuffer, 0, bytesRead);
  32 + }
  33 + } else {
  34 + stringBuilder.append("");
  35 + }
  36 + } catch (IOException ex) {
  37 + throw ex;
  38 + } finally {
  39 + if (bufferedReader != null) {
  40 + try {
  41 + bufferedReader.close();
  42 + } catch (IOException ex) {
  43 + throw ex;
  44 + }
  45 + }
  46 + }
  47 + body = stringBuilder.toString();
  48 + }
  49 +
  50 + @Override
  51 + public ServletInputStream getInputStream() throws IOException {
  52 + final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes("UTF-8"));
  53 + ServletInputStream servletInputStream = new ServletInputStream() {
  54 + @Override
  55 + public boolean isFinished() {
  56 + return false;
  57 + }
  58 +
  59 + @Override
  60 + public boolean isReady() {
  61 + return false;
  62 + }
  63 +
  64 + @Override
  65 + public int read() {
  66 + return byteArrayInputStream.read();
  67 + }
  68 +
  69 + @Override
  70 + public void setReadListener(ReadListener listener) {
  71 + // TODO Auto-generated method stub
  72 +
  73 + }
  74 + };
  75 + return servletInputStream;
  76 + }
  77 +
  78 + @Override
  79 + public BufferedReader getReader() throws IOException {
  80 + return new BufferedReader(new InputStreamReader(this.getInputStream(), Charsets.UTF_8));
  81 + }
  82 +
  83 + public String getBody() {
  84 + return this.body;
  85 + }
  86 +
  87 + @Override
  88 + public String getParameter(String name) {
  89 + return super.getParameter(name);
  90 + }
  91 +
  92 + @Override
  93 + public Map<String, String[]> getParameterMap() {
  94 + return super.getParameterMap();
  95 + }
  96 +
  97 + @Override
  98 + public Enumeration<String> getParameterNames() {
  99 + return super.getParameterNames();
  100 + }
  101 +
  102 + @Override
  103 + public String[] getParameterValues(String name) {
  104 + return super.getParameterValues(name);
  105 + }
  106 +}
0 107 \ No newline at end of file
... ...
trash-ui/dist.7z
No preview for this file type
trash-ui/src/api/taskmethod.js
... ... @@ -307,15 +307,15 @@ export default {
307 307 })
308 308 return;
309 309 }
310   - if (this.definitionKey == "workflow_company") {
  310 + if (this.definitionKey.indexOf("workflow_company") > -1) {
311 311 this.company = true;
312 312 return;
313 313 }
314   - if (this.definitionKey == "workflow_vehicle") {
  314 + if (this.definitionKey.indexOf("workflow_vehicle") > -1) {
315 315 this.vehicle = true;
316 316 return;
317 317 }
318   - if (this.definitionKey == "workflow_driver") {
  318 + if (this.definitionKey.indexOf("workflow_driver") > -1) {
319 319 this.driver = true;
320 320 return;
321 321 }
... ... @@ -601,6 +601,9 @@ export default {
601 601 this.definitionKey == "workflow_company" ||
602 602 this.definitionKey == "workflow_driver" ||
603 603 this.definitionKey == "workflow_vehicle" ||
  604 + this.definitionKey == "workflow_company_edit" ||
  605 + this.definitionKey == "workflow_driver_edit" ||
  606 + this.definitionKey == "workflow_vehicle_edit" ||
604 607 this.definitionKey == "workflow_earthsites" ||
605 608 this.definitionKey == "workflow_conract" ||
606 609 this.definitionKey == "workflow_conract_edit" ||
... ...
trash-ui/src/api/three_step.js
... ... @@ -357,7 +357,7 @@ export default {
357 357 if(res.result.list[i].name == this.form.name){
358 358 let item = res.result.list[i];
359 359 this.form.objectId = item.id;
360   - this.form.place = Number(item.areaCode);
  360 + this.form.place = item.areaCode;
361 361 this.getCompanyTrucks(item.id);
362 362 break;
363 363 }
... ... @@ -383,7 +383,7 @@ export default {
383 383 if(res.result.list[i].name == this.form.name){
384 384 let item = res.result.list[i];
385 385 this.form.objectId = item.id;
386   - this.form.place = Number(item.areaCode) ;
  386 + this.form.place = item.areaCode;
387 387 break;
388 388 }
389 389 }
... ...
trash-workFlow/src/main/java/com/trash/business/controller/CompanyCreditController.java
1   -package com.trash.business.controller;
2   -
3   -import java.util.ArrayList;
4   -import java.util.Date;
5   -import java.util.List;
6   -
7   -import com.trash.business.domain.ConstructionCredit;
8   -import org.springframework.security.access.prepost.PreAuthorize;
9   -import org.springframework.beans.factory.annotation.Autowired;
10   -import org.springframework.web.bind.annotation.GetMapping;
11   -import org.springframework.web.bind.annotation.PostMapping;
12   -import org.springframework.web.bind.annotation.PutMapping;
13   -import org.springframework.web.bind.annotation.DeleteMapping;
14   -import org.springframework.web.bind.annotation.PathVariable;
15   -import org.springframework.web.bind.annotation.RequestBody;
16   -import org.springframework.web.bind.annotation.RequestMapping;
17   -import org.springframework.web.bind.annotation.RestController;
18   -import com.trash.common.annotation.Log;
19   -import com.trash.common.annotation.RepeatSubmit;
20   -import com.trash.common.core.controller.BaseController;
21   -import com.trash.common.core.domain.AjaxResult;
22   -import com.trash.common.enums.BusinessType;
23   -import com.trash.business.domain.CompanyCredit;
24   -import com.trash.business.service.ICompanyCreditService;
25   -import com.trash.common.utils.SecurityUtils;
26   -import com.trash.common.utils.poi.ExcelUtil;
27   -import com.trash.common.core.page.TableDataInfo;
28   -
29   -/**
30   - * 企业失信Controller
31   - *
32   - * @author trash
33   - * @date 2023-04-25
34   - */
35   -@RestController
36   -@RequestMapping("/business/companyCredit")
37   -public class CompanyCreditController extends BaseController {
38   - @Autowired
39   - private ICompanyCreditService companyCreditService;
40   -
41   - /**
42   - * 查询企业失信列表
43   - */
44   - @GetMapping("/list")
45   - public TableDataInfo list(CompanyCredit companyCredit) {
46   - startPage();
47   - return getDataTable(companyCreditService.selectCompanyCreditList(companyCredit));
48   - }
49   -
50   - @GetMapping("/historyCredit")
51   - public TableDataInfo historyCredit(CompanyCredit companyCredit) {
52   - startPage();
53   - return getDataTable(companyCreditService.selectCompanyCreditHistory(companyCredit));
54   - }
55   -
56   - @GetMapping("/names")
57   - public List<String> getNames(CompanyCredit credit) {
58   - if (credit.getStatus() == 1) {
59   - credit.setStatus(null);
60   - }
61   - return companyCreditService.getNames(credit);
62   - }
63   -
64   - @GetMapping("/places")
65   - public List<String> getPlaces(CompanyCredit credit) {
66   - if (credit.getStatus() == 1) {
67   - credit.setStatus(null);
68   - }
69   - return companyCreditService.getPlaces(credit);
70   - }
71   -
72   - /**
73   - * 导出企业失信列表
74   - */
75   - @Log(title = "企业失信", businessType = BusinessType.EXPORT)
76   - @GetMapping("/export")
77   - public AjaxResult export(CompanyCredit companyCredit) {
78   - List<CompanyCredit> list = null;
79   -
80   - List<String> withOut = new ArrayList<String>();
81   -
82   - String tag = "企业失信";
83   -
84   - if (companyCredit.getStatus() == 1) {
85   - withOut.add("time");
86   - tag = "企业历史失信";
87   - list = companyCreditService.selectCompanyCreditHistory(companyCredit);
88   - } else {
89   - list = companyCreditService.selectCompanyCreditList(companyCredit);
90   - }
91   -
92   - for (int i = 0; i < list.size(); i++) {
93   - list.get(i).setId((long) i + 1);
94   - }
95   -
96   - ExcelUtil<CompanyCredit> util = new ExcelUtil<CompanyCredit>(CompanyCredit.class);
97   -
98   - return util.exportExcel(list, tag, withOut);
99   - }
100   -
101   - /**
102   - * 获取企业失信详细信息
103   - */
104   - @GetMapping(value = "/{id}")
105   - public AjaxResult getInfo(@PathVariable("id") Long id) {
106   - return AjaxResult.success(companyCreditService.selectCompanyCreditById(id));
107   - }
108   -
109   - /**
110   - * 新增企业失信
111   - */
112   - @Log(title = "企业失信", businessType = BusinessType.INSERT)
113   - @PostMapping
114   - @RepeatSubmit
115   - public AjaxResult add(@RequestBody CompanyCredit companyCredit) {
116   - try {
117   -
118   - companyCredit.setCreateBy(SecurityUtils.getUsername());
119   - companyCredit.setTime(new Date());
120   -
121   - return toAjax(companyCreditService.insertCompanyCredit(companyCredit));
122   - } catch (Exception e) {
123   - return AjaxResult.error(e.getMessage());
124   - }
125   - }
126   -
127   - /**
128   - * 修改企业失信
129   - */
130   - @Log(title = "企业失信", businessType = BusinessType.UPDATE)
131   - @PutMapping
132   - public AjaxResult edit(@RequestBody CompanyCredit companyCredit) {
133   - try {
134   - return toAjax(companyCreditService.updateCompanyCredit(companyCredit));
135   - } catch (Exception e) {
136   - return AjaxResult.error(e.getMessage());
137   - }
138   - }
139   -
140   - /**
141   - * 删除企业失信
142   - */
143   - @Log(title = "企业失信", businessType = BusinessType.DELETE)
144   - @DeleteMapping("/{ids}")
145   - public AjaxResult remove(@PathVariable Long[] ids) {
146   - return toAjax(companyCreditService.deleteCompanyCreditByIds(ids));
147   - }
  1 +package com.trash.business.controller;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.Date;
  5 +import java.util.List;
  6 +
  7 +import com.trash.business.domain.ConstructionCredit;
  8 +import org.springframework.security.access.prepost.PreAuthorize;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.web.bind.annotation.GetMapping;
  11 +import org.springframework.web.bind.annotation.PostMapping;
  12 +import org.springframework.web.bind.annotation.PutMapping;
  13 +import org.springframework.web.bind.annotation.DeleteMapping;
  14 +import org.springframework.web.bind.annotation.PathVariable;
  15 +import org.springframework.web.bind.annotation.RequestBody;
  16 +import org.springframework.web.bind.annotation.RequestMapping;
  17 +import org.springframework.web.bind.annotation.RestController;
  18 +import com.trash.common.annotation.Log;
  19 +import com.trash.common.annotation.RepeatSubmit;
  20 +import com.trash.common.core.controller.BaseController;
  21 +import com.trash.common.core.domain.AjaxResult;
  22 +import com.trash.common.enums.BusinessType;
  23 +import com.trash.business.domain.CompanyCredit;
  24 +import com.trash.business.service.ICompanyCreditService;
  25 +import com.trash.common.utils.SecurityUtils;
  26 +import com.trash.common.utils.poi.ExcelUtil;
  27 +import com.trash.common.core.page.TableDataInfo;
  28 +
  29 +/**
  30 + * 企业失信Controller
  31 + *
  32 + * @author trash
  33 + * @date 2023-04-25
  34 + */
  35 +@RestController
  36 +@RequestMapping("/business/companyCredit")
  37 +public class CompanyCreditController extends BaseController {
  38 + @Autowired
  39 + private ICompanyCreditService companyCreditService;
  40 +
  41 + /**
  42 + * 查询企业失信列表
  43 + */
  44 + @GetMapping("/list")
  45 + public TableDataInfo list(CompanyCredit companyCredit) {
  46 + startPage();
  47 + return getDataTable(companyCreditService.selectCompanyCreditList(companyCredit));
  48 + }
  49 +
  50 + @GetMapping("/historyCredit")
  51 + public TableDataInfo historyCredit(CompanyCredit companyCredit) {
  52 + startPage();
  53 + return getDataTable(companyCreditService.selectCompanyCreditHistory(companyCredit));
  54 + }
  55 +
  56 + @GetMapping("/names")
  57 + public List<String> getNames(CompanyCredit credit) {
  58 + if (credit.getStatus() == 1) {
  59 + credit.setStatus(null);
  60 + }
  61 + return companyCreditService.getNames(credit);
  62 + }
  63 +
  64 + @GetMapping("/places")
  65 + public List<String> getPlaces(CompanyCredit credit) {
  66 + if (credit.getStatus() == 1) {
  67 + credit.setStatus(null);
  68 + }
  69 + return companyCreditService.getPlaces(credit);
  70 + }
  71 +
  72 + /**
  73 + * 导出企业失信列表
  74 + */
  75 + @Log(title = "企业失信", businessType = BusinessType.EXPORT)
  76 + @GetMapping("/export")
  77 + public AjaxResult export(CompanyCredit companyCredit) {
  78 + List<CompanyCredit> list = null;
  79 +
  80 + List<String> withOut = new ArrayList<String>();
  81 +
  82 + String tag = "企业失信";
  83 +
  84 + if (companyCredit.getStatus() == 1) {
  85 + withOut.add("time");
  86 + tag = "企业历史失信";
  87 + list = companyCreditService.selectCompanyCreditHistory(companyCredit);
  88 + } else {
  89 + list = companyCreditService.selectCompanyCreditList(companyCredit);
  90 + }
  91 +
  92 + for (int i = 0; i < list.size(); i++) {
  93 + list.get(i).setId((long) i + 1);
  94 + }
  95 +
  96 + ExcelUtil<CompanyCredit> util = new ExcelUtil<CompanyCredit>(CompanyCredit.class);
  97 +
  98 + return util.exportExcel(list, tag, withOut);
  99 + }
  100 +
  101 + /**
  102 + * 获取企业失信详细信息
  103 + */
  104 + @GetMapping(value = "/{id}")
  105 + public AjaxResult getInfo(@PathVariable("id") Long id) {
  106 + return AjaxResult.success(companyCreditService.selectCompanyCreditById(id));
  107 + }
  108 +
  109 + /**
  110 + * 新增企业失信
  111 + */
  112 + @Log(title = "企业失信", businessType = BusinessType.INSERT)
  113 + @PostMapping
  114 + @RepeatSubmit
  115 + public AjaxResult add(@RequestBody CompanyCredit companyCredit) {
  116 + try {
  117 +
  118 + companyCredit.setCreateBy(SecurityUtils.getUsername());
  119 + companyCredit.setTime(new Date());
  120 +
  121 + return toAjax(companyCreditService.insertCompanyCredit(companyCredit));
  122 + } catch (Exception e) {
  123 + return AjaxResult.error(e.getMessage());
  124 + }
  125 + }
  126 +
  127 + /**
  128 + * 修改企业失信
  129 + */
  130 + @Log(title = "企业失信", businessType = BusinessType.UPDATE)
  131 + @PutMapping
  132 + public AjaxResult edit(@RequestBody CompanyCredit companyCredit) {
  133 + try {
  134 + return toAjax(companyCreditService.updateCompanyCredit(companyCredit));
  135 + } catch (Exception e) {
  136 + return AjaxResult.error(e.getMessage());
  137 + }
  138 + }
  139 +
  140 + /**
  141 + * 删除企业失信
  142 + */
  143 + @Log(title = "企业失信", businessType = BusinessType.DELETE)
  144 + @DeleteMapping("/{ids}")
  145 + public AjaxResult remove(@PathVariable Long[] ids) {
  146 + return toAjax(companyCreditService.deleteCompanyCreditByIds(ids));
  147 + }
148 148 }
149 149 \ No newline at end of file
... ...
trash-workFlow/src/main/java/com/trash/business/controller/DriverCreditController.java
1   -package com.trash.business.controller;
2   -
3   -import java.util.ArrayList;
4   -import java.util.Date;
5   -import java.util.List;
6   -
7   -import com.trash.business.domain.ConstructionCredit;
8   -import org.springframework.security.access.prepost.PreAuthorize;
9   -import org.springframework.beans.factory.annotation.Autowired;
10   -import org.springframework.web.bind.annotation.GetMapping;
11   -import org.springframework.web.bind.annotation.PostMapping;
12   -import org.springframework.web.bind.annotation.PutMapping;
13   -import org.springframework.web.bind.annotation.DeleteMapping;
14   -import org.springframework.web.bind.annotation.PathVariable;
15   -import org.springframework.web.bind.annotation.RequestBody;
16   -import org.springframework.web.bind.annotation.RequestMapping;
17   -import org.springframework.web.bind.annotation.RestController;
18   -import com.trash.common.annotation.Log;
19   -import com.trash.common.annotation.RepeatSubmit;
20   -import com.trash.common.core.controller.BaseController;
21   -import com.trash.common.core.domain.AjaxResult;
22   -import com.trash.common.enums.BusinessType;
23   -import com.trash.business.domain.DriverCredit;
24   -import com.trash.business.mapper.DriverCreditMapper;
25   -import com.trash.business.service.IDriverCreditService;
26   -import com.trash.common.utils.SecurityUtils;
27   -import com.trash.common.utils.poi.ExcelUtil;
28   -import com.trash.common.core.page.TableDataInfo;
29   -
30   -/**
31   - * 驾驶员失信Controller
32   - *
33   - * @author trash
34   - * @date 2023-04-26
35   - */
36   -@RestController
37   -@RequestMapping("/business/driverCredit")
38   -public class DriverCreditController extends BaseController {
39   - @Autowired
40   - private IDriverCreditService driverCreditService;
41   -
42   - @Autowired
43   - private DriverCreditMapper mapper;
44   -
45   - /**
46   - * 查询驾驶员失信列表
47   - */
48   - @GetMapping("/list")
49   - public TableDataInfo list(DriverCredit driverCredit) {
50   - startPage();
51   - List<DriverCredit> list = driverCreditService.selectDriverCreditList(driverCredit);
52   - return getDataTable(list);
53   - }
54   -
55   - @GetMapping("/historyCredit")
56   - public TableDataInfo historyCredit(DriverCredit driverCredit) {
57   - startPage();
58   - List<DriverCredit> list = driverCreditService.selectDriverCreditHistory(driverCredit);
59   - return getDataTable(list);
60   - }
61   -
62   - @GetMapping("/names")
63   - public List<String> getNames(DriverCredit credit) {
64   -
65   - if (credit.getStatus() == 1) {
66   - credit.setStatus(null);
67   - }
68   - return mapper.getNames(credit);
69   - }
70   -
71   - @GetMapping("/licenseplates")
72   - public List<String> getLicenseplates(DriverCredit credit) {
73   -
74   - if (credit.getStatus() == 1) {
75   - credit.setStatus(null);
76   - }
77   - return mapper.getLicenseplate(credit);
78   - }
79   -
80   - /**
81   - * 导出驾驶员失信列表
82   - */
83   - @Log(title = "驾驶员失信", businessType = BusinessType.EXPORT)
84   - @GetMapping("/export")
85   - public AjaxResult export(DriverCredit driverCredit) {
86   -
87   - List<DriverCredit> list = null;
88   - List<String> withOut = new ArrayList<String>();
89   -
90   - if (driverCredit.getStatus() == 1) {
91   - withOut.add("time");
92   - list = driverCreditService.selectDriverCreditHistory(driverCredit);
93   - } else {
94   -
95   - list = driverCreditService.selectDriverCreditList(driverCredit);
96   -
97   - }
98   - for (int i = 0; i < list.size(); i++) {
99   - list.get(i).setId((long) i + 1);
100   - }
101   - ExcelUtil<DriverCredit> util = new ExcelUtil<DriverCredit>(DriverCredit.class);
102   - return util.exportExcel(list, "驾驶员失信", withOut);
103   - }
104   -
105   - /**
106   - * 获取驾驶员失信详细信息
107   - */
108   - @GetMapping(value = "/{id}")
109   - public AjaxResult getInfo(@PathVariable("id") Long id) {
110   - return AjaxResult.success(driverCreditService.selectDriverCreditById(id));
111   - }
112   -
113   - /**
114   - * 新增驾驶员失信
115   - */
116   - @Log(title = "驾驶员失信", businessType = BusinessType.INSERT)
117   - @PostMapping
118   - @RepeatSubmit
119   - public AjaxResult add(@RequestBody DriverCredit driverCredit) {
120   - driverCredit.setCreateBy(SecurityUtils.getUsername());
121   - driverCredit.setTime(new Date());
122   - return toAjax(driverCreditService.insertDriverCredit(driverCredit));
123   - }
124   -
125   - /**
126   - * 修改驾驶员失信
127   - */
128   - @Log(title = "驾驶员失信", businessType = BusinessType.UPDATE)
129   - @PutMapping
130   - public AjaxResult edit(@RequestBody DriverCredit driverCredit) {
131   - return toAjax(driverCreditService.updateDriverCredit(driverCredit));
132   - }
133   -
134   - /**
135   - * 删除驾驶员失信
136   - */
137   - @Log(title = "驾驶员失信", businessType = BusinessType.DELETE)
138   - @DeleteMapping("/{ids}")
139   - public AjaxResult remove(@PathVariable Long[] ids) {
140   - return toAjax(driverCreditService.deleteDriverCreditByIds(ids));
141   - }
142   -}
  1 +package com.trash.business.controller;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.Date;
  5 +import java.util.List;
  6 +
  7 +import com.trash.business.domain.ConstructionCredit;
  8 +import org.springframework.security.access.prepost.PreAuthorize;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.web.bind.annotation.GetMapping;
  11 +import org.springframework.web.bind.annotation.PostMapping;
  12 +import org.springframework.web.bind.annotation.PutMapping;
  13 +import org.springframework.web.bind.annotation.DeleteMapping;
  14 +import org.springframework.web.bind.annotation.PathVariable;
  15 +import org.springframework.web.bind.annotation.RequestBody;
  16 +import org.springframework.web.bind.annotation.RequestMapping;
  17 +import org.springframework.web.bind.annotation.RestController;
  18 +import com.trash.common.annotation.Log;
  19 +import com.trash.common.annotation.RepeatSubmit;
  20 +import com.trash.common.core.controller.BaseController;
  21 +import com.trash.common.core.domain.AjaxResult;
  22 +import com.trash.common.enums.BusinessType;
  23 +import com.trash.business.domain.DriverCredit;
  24 +import com.trash.business.mapper.DriverCreditMapper;
  25 +import com.trash.business.service.IDriverCreditService;
  26 +import com.trash.common.utils.SecurityUtils;
  27 +import com.trash.common.utils.poi.ExcelUtil;
  28 +import com.trash.common.core.page.TableDataInfo;
  29 +
  30 +/**
  31 + * 驾驶员失信Controller
  32 + *
  33 + * @author trash
  34 + * @date 2023-04-26
  35 + */
  36 +@RestController
  37 +@RequestMapping("/business/driverCredit")
  38 +public class DriverCreditController extends BaseController {
  39 + @Autowired
  40 + private IDriverCreditService driverCreditService;
  41 +
  42 + @Autowired
  43 + private DriverCreditMapper mapper;
  44 +
  45 + /**
  46 + * 查询驾驶员失信列表
  47 + */
  48 + @GetMapping("/list")
  49 + public TableDataInfo list(DriverCredit driverCredit) {
  50 + startPage();
  51 + List<DriverCredit> list = driverCreditService.selectDriverCreditList(driverCredit);
  52 + return getDataTable(list);
  53 + }
  54 +
  55 + @GetMapping("/historyCredit")
  56 + public TableDataInfo historyCredit(DriverCredit driverCredit) {
  57 + startPage();
  58 + List<DriverCredit> list = driverCreditService.selectDriverCreditHistory(driverCredit);
  59 + return getDataTable(list);
  60 + }
  61 +
  62 + @GetMapping("/names")
  63 + public List<String> getNames(DriverCredit credit) {
  64 +
  65 + if (credit.getStatus() == 1) {
  66 + credit.setStatus(null);
  67 + }
  68 + return mapper.getNames(credit);
  69 + }
  70 +
  71 + @GetMapping("/licenseplates")
  72 + public List<String> getLicenseplates(DriverCredit credit) {
  73 +
  74 + if (credit.getStatus() == 1) {
  75 + credit.setStatus(null);
  76 + }
  77 + return mapper.getLicenseplate(credit);
  78 + }
  79 +
  80 + /**
  81 + * 导出驾驶员失信列表
  82 + */
  83 + @Log(title = "驾驶员失信", businessType = BusinessType.EXPORT)
  84 + @GetMapping("/export")
  85 + public AjaxResult export(DriverCredit driverCredit) {
  86 +
  87 + List<DriverCredit> list = null;
  88 + List<String> withOut = new ArrayList<String>();
  89 +
  90 + if (driverCredit.getStatus() == 1) {
  91 + withOut.add("time");
  92 + list = driverCreditService.selectDriverCreditHistory(driverCredit);
  93 + } else {
  94 +
  95 + list = driverCreditService.selectDriverCreditList(driverCredit);
  96 +
  97 + }
  98 + for (int i = 0; i < list.size(); i++) {
  99 + list.get(i).setId((long) i + 1);
  100 + }
  101 + ExcelUtil<DriverCredit> util = new ExcelUtil<DriverCredit>(DriverCredit.class);
  102 + return util.exportExcel(list, "驾驶员失信", withOut);
  103 + }
  104 +
  105 + /**
  106 + * 获取驾驶员失信详细信息
  107 + */
  108 + @GetMapping(value = "/{id}")
  109 + public AjaxResult getInfo(@PathVariable("id") Long id) {
  110 + return AjaxResult.success(driverCreditService.selectDriverCreditById(id));
  111 + }
  112 +
  113 + /**
  114 + * 新增驾驶员失信
  115 + */
  116 + @Log(title = "驾驶员失信", businessType = BusinessType.INSERT)
  117 + @PostMapping
  118 + @RepeatSubmit
  119 + public AjaxResult add(@RequestBody DriverCredit driverCredit) {
  120 + driverCredit.setCreateBy(SecurityUtils.getUsername());
  121 + driverCredit.setTime(new Date());
  122 + return toAjax(driverCreditService.insertDriverCredit(driverCredit));
  123 + }
  124 +
  125 + /**
  126 + * 修改驾驶员失信
  127 + */
  128 + @Log(title = "驾驶员失信", businessType = BusinessType.UPDATE)
  129 + @PutMapping
  130 + public AjaxResult edit(@RequestBody DriverCredit driverCredit) {
  131 + return toAjax(driverCreditService.updateDriverCredit(driverCredit));
  132 + }
  133 +
  134 + /**
  135 + * 删除驾驶员失信
  136 + */
  137 + @Log(title = "驾驶员失信", businessType = BusinessType.DELETE)
  138 + @DeleteMapping("/{ids}")
  139 + public AjaxResult remove(@PathVariable Long[] ids) {
  140 + return toAjax(driverCreditService.deleteDriverCreditByIds(ids));
  141 + }
  142 +}
... ...