Merge branch 'develop_oa' into 'develop'

Develop oa

See merge request foton-wkflow-group/foton-wkflow-rest!62
This commit is contained in:
super_liu
2021-09-30 15:29:13 +08:00
89 changed files with 2862 additions and 20 deletions
+41
View File
@@ -29,12 +29,30 @@
<artifactId>fk-util</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- scheduled所属资源为spring-context-support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Feign客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
@@ -71,6 +89,29 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- CXF webservice -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-logging</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
<!-- CXF webservice -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.6.0</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
@@ -7,9 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.*;
import org.activiti.engine.HistoryService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
@@ -42,19 +40,45 @@ public class TaskController {
private IBusProcessNameService iBusProcessNameService;
@Autowired
private IBusProcessNewService iBusProcessNewService;
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private ISendTodoLogService sendTodoLogService;
@Autowired
private IBusProcessEntrustService iBusProcessEntrustService;
@ApiOperation(value = "流程实例明细验证是否完成")
@GetMapping("/get_verify_by_instance")
public long get_verify_by_instance(String taskId,String pId) {
Map<String, Object> map = new TreeMap<>();
public Map<String,Object> get_verify_by_instance(String taskId,String pId) {
Map<String,Object> map = new TreeMap<>();
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(pId).taskId(taskId).finished();
List<HistoricTaskInstance> list = historicTaskInstanceQuery.list();
long count = 0;
if(!list.isEmpty()){
count = list.size();
}
map.put("hisCount",count);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("TASK_ID",taskId);
queryWrapper.eq("P_ID",pId);
queryWrapper.eq("COMMIT_FLAG","0");
long count = iBusProcessNewService.count(queryWrapper);
return count;
List<BusProcessNew> list1 = iBusProcessNewService.list(queryWrapper);
long count1 = 0;
if(!list1.isEmpty()){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",list1.get(0).getId());
wrapper.eq("EXEC_TYPE",2);
wrapper.eq("EXEC_STATUS",0);
count1 = oaTaskExecService.count(wrapper);
}
map.put("commitStatus",count1);
// OA 流程 是否置为 已办 (用于干活流程 接收逻辑)
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",list1.get(0).getId());
wrapper.eq("MSG_TYPE","1");
long count2 = sendTodoLogService.count(wrapper);
map.put("isNotFinished",count2);
return map;
}
@@ -22,8 +22,16 @@ import com.alibaba.fastjson.JSONObject;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto;
import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.engine.*;
import org.activiti.engine.history.*;
import org.activiti.engine.repository.ProcessDefinition;
@@ -34,6 +42,7 @@ import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -83,6 +92,12 @@ public class TodoTaskController extends BaseAction {
@Autowired
private LawsUserInfoService lawsUserInfoService;
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private CreateMQService mqService;
@ApiOperation(value = "我的待办任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@ApiImplicitParam(name = "current", value = "当前页"),
@@ -308,6 +323,7 @@ public class TodoTaskController extends BaseAction {
public Wrapper<String> completeTaskByUserId(@RequestBody BusMes busMes) {
logger.info("!!!!!!!!!!!!!TaskId!!!!!!!!!!!!!!!"+busMes.getTaskId());
logger.info("!!!!!!!!!!!!!!TaskIds!!!!!!!!!!!!!!"+busMes.getTaskIds());
if (busMes.getTaskId() != null && !busMes.getTaskId().equals("")) {
if (busMes.getTaskId().indexOf(",") > -1) {
String taskIdsrc = busMes.getTaskId().substring(0, busMes.getTaskId().length() - 1);
@@ -327,6 +343,13 @@ public class TodoTaskController extends BaseAction {
formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey());
//发送OA已办
try {
//发送OA已办
completeOA(task);
}catch (Exception e){
logger.error(e.toString());
}
taskService.complete(busMes.getTaskId());
}
return WrapMapper.ok(task.getProcessInstanceId());
@@ -347,11 +370,56 @@ public class TodoTaskController extends BaseAction {
formSubmitDto.setForm(busMes.getJson());
formSubmitDto.setTask_id(taskId);
formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey());
try {
//发送OA已办
completeOA(task);
}catch (Exception e){
logger.error(e.toString());
}
taskService.complete(taskId);
}
}
return WrapMapper.ok(prcid);
}
//
// if(notifyTodoAppResult != null){
// if(notifyTodoAppResult.getSIGN().equals("0") && notifyTodoAppResult.getMASSAGE().equals("操作成功")){
//
// }else {
// logger.error("SIGN: "+notifyTodoAppResult.getSIGN()+",MASSAGE: "+notifyTodoAppResult.getMASSAGE());
// return WrapMapper.error("ESP 发送待办任务异常 :" +notifyTodoAppResult.getMASSAGE());
// }
// }else {
// logger.error("--------------------ESP 发送待办任务异常----------------------");
// }
// return WrapMapper.error("ESP 发送待办任务异常");
}
private void completeOA(Task task){
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
logger.info("--------------------------ESP 发送已办任务----------------------------");
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
NotifyTodoSendContext notifyTodoSendContext = new NotifyTodoSendContext();
notifyTodoSendContext.setAppName("FOTON");
notifyTodoSendContext.setCreateTime(sdf.format(new Date()));
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",task.getProcessInstanceId());
queryWrapper1.eq("TASK_ID",task.getId());
List<BusProcessNew> list = iBusProcessNewService.list(queryWrapper1);
if(!list.isEmpty()){
notifyTodoSendContext.setModelId(list.get(0).getId());
notifyTodoSendContext.setModelName(task.getName());
notifyTodoSendContext.setOptType("1");
Map<String, Object> map = new HashMap<>();
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(task.getAssignee());
map.put("LoginName",byId == null ? "" : byId.getData().getAccount());
JSONObject jsonLoginName = new JSONObject(map);
notifyTodoSendContext.setTargets(jsonLoginName.toJSONString());
notifyTodoSendContext.setUserId(task.getAssignee());
oaService.setTodoDoneMq(notifyTodoSendContext);
}
}
@ApiOperation(value = "查询流程编号", notes = "根据流程实例ID查询流程编号")
@@ -498,6 +566,12 @@ public class TodoTaskController extends BaseAction {
JSONArray arr2 = new JSONArray();
object3.put("taskBreak", arr2);
processNew.setMesg(object3.toJSONString());
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",processNew.getId());
wrapper.eq("EXEC_TYPE",2);
wrapper.eq("EXEC_STATUS",0);
long count = oaTaskExecService.count(wrapper);
processNew.setCommitStatus(count);
return processNew;
}
@@ -0,0 +1,37 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* <p>
* OA 干活任务执行表 前端控制器
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
@RestController
@RequestMapping("/oaTaskExec")
public class OaTaskExecController {
@Autowired
private IOaTaskExecService oaTaskExecService;
@ApiOperation(value = "接受任务")
@GetMapping("/execTask")
public Map<String,Object> execTask(String todoId) {
Map<String,Object> map = oaTaskExecService.execTask(todoId);
return map;
}
}
@@ -0,0 +1,21 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* OA日志表 前端控制器
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@RestController
@RequestMapping("/sendTodoLog")
public class SendTodoLogController {
}
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -88,4 +90,21 @@ public class BusProcessNew implements Serializable {
@ApiModelProperty(value = "流程名称")
@TableField("PRC_NAME")
private String prcName;
@TableField( exist = false)
@ApiModelProperty(value = "OA link")
private String link;
@TableField( exist = false)
@ApiModelProperty(value = "干活任务截止时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String endTime;
@TableField( exist = false)
@ApiModelProperty(value = "任务状态 0 默认 1 审批任务 2 干活任务")
private int taskStatus;
@TableField( exist = false)
@ApiModelProperty(value = "提交状态 0 提交 其它 接受 ")
private long commitStatus;
}
@@ -0,0 +1,86 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* OA 干活任务执行表
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="OaTaskExec对象", description="OA 干活任务执行表")
public class OaTaskExec implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "执行维度 1 3天内 2 3天外 3 超时")
@TableField("EXEC_TYPE")
private int execType;
@ApiModelProperty(value = "待办ID")
@TableField("TODO_ID")
private String todoId;
@ApiModelProperty(value = "待办用户ID")
@TableField("USER_ID")
private String userId;
@ApiModelProperty(value = "待办对象JSON")
@TableField("MESG")
private String mesg;
@ApiModelProperty(value = "执行状态 0 未启动 1 已启动 2 已完成")
@TableField("EXEC_STATUS")
private int execStatus;
@ApiModelProperty(value = "执行时间")
@TableField("EXEC_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String execTime;
@ApiModelProperty(value = "截止时间")
@TableField("END_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String endTime;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String updateTime;
@ApiModelProperty(value = "参数1")
@TableField("PARAM1")
private int param1;
@ApiModelProperty(value = "参数2")
@TableField("PARAM2")
private String param2;
}
@@ -0,0 +1,88 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* OA日志表
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="SendTodoLog对象", description="OA日志表")
public class SendTodoLog implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "类型 0 待办, 1已办, 2 取消, 3 删除")
@TableField("MSG_TYPE")
private String msgType;
@ApiModelProperty(value = "待办ID")
@TableField("TODO_ID")
private String todoId;
@ApiModelProperty(value = "待办用户ID")
@TableField("USER_ID")
private String userId;
@ApiModelProperty(value = "邮箱用户ID")
@TableField("EMAIL_USER_ID")
private String emailUserId;
@ApiModelProperty(value = "待办对象JSON")
@TableField("MESG")
private String mesg;
@ApiModelProperty(value = "状态 1 待发送 2 成功 3 失败 4 无需发送")
@TableField("MSG_STATUS")
private String msgStatus;
@ApiModelProperty(value = "失败次数")
@TableField("ERR_NUM")
private int errNum;
@ApiModelProperty(value = "操作信息")
@TableField("OPER_MESG")
private String operMesg;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String updateTime;
@ApiModelProperty(value = "参数1")
@TableField("PARAM1")
private String param1;
@ApiModelProperty(value = "参数2")
@TableField("PARAM2")
private String param2;
}
@@ -0,0 +1,16 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* OA 干活任务执行表 Mapper 接口
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
public interface OaTaskExecMapper extends BaseMapper<OaTaskExec> {
}
@@ -0,0 +1,18 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* OA日志表 Mapper 接口
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Repository
public interface SendTodoLogMapper extends BaseMapper<SendTodoLog> {
}
@@ -0,0 +1,20 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
/**
* <p>
* OA 干活任务执行表 服务类
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
public interface IOaTaskExecService extends IService<OaTaskExec> {
Map<String,Object> execTask(String todoId);
}
@@ -0,0 +1,16 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* OA日志表 服务类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
public interface ISendTodoLogService extends IService<SendTodoLog> {
}
@@ -0,0 +1,90 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.ydw.bat.wkflow.business_main.datas.mapper.OaTaskExecMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* <p>
* OA 干活任务执行表 服务实现类
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
@Service
public class OaTaskExecServiceImpl extends ServiceImpl<OaTaskExecMapper, OaTaskExec> implements IOaTaskExecService {
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private CreateMQService oaService;
@Override
public Map<String,Object> execTask(String todoId){
Map<String,Object> map = new TreeMap<>();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",todoId);
wrapper.eq("EXEC_TYPE",2);
List<OaTaskExec> taskExecs = oaTaskExecService.list(wrapper);
if(!taskExecs.isEmpty()){
OaTaskExec oaTaskExec = taskExecs.get(0);
BusProcessNew object = (BusProcessNew) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(oaTaskExec.getMesg()), BusProcessNew.class);
int days = Utils.subDayNum(oaTaskExec.getEndTime());
if(days > 3){
// 3天外处理 更改执行状态 1 进入定时任务 不发送OA待办
updateOaTaskExec(taskExecs,1,2);
getSuccess(map, "0", "操作成功");
}else {
if(days < 0){
// 超时处理
updateOaTaskExec(taskExecs,0,3);
// 直接发送OA待办 重置任务状态 0
object.setTaskStatus(0);
oaService.sendTodoMq(object);
getSuccess(map, "0", "操作成功");
}else {
// 3天内处理
updateOaTaskExec(taskExecs,0,1);
// 直接发送OA待办 重置任务状态 0
object.setTaskStatus(0);
oaService.sendTodoMq(object);
getSuccess(map, "0", "操作成功");
}
}
}
return map;
}
private void getSuccess(Map<String, Object> map, String sign, String message) {
map.put("sign",sign);
map.put("message",message);
}
private void updateOaTaskExec(List<OaTaskExec> taskExecs, int execStatus, int execType){
List<OaTaskExec> updateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
updateList.addAll(taskExecs);
updateList.forEach(taskExec -> {
// 任务修改为 启动状态
taskExec.setExecStatus(execStatus);
taskExec.setExecType(execType);
taskExec.setUpdateTime(sdf.format(new Date()));
});
oaTaskExecService.updateBatchById(updateList);
}
}
@@ -0,0 +1,24 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.ISendTodoLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* OA日志表 服务实现类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Service
public class SendTodoLogServiceImpl extends ServiceImpl<SendTodoLogMapper, SendTodoLog> implements ISendTodoLogService {
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
}
@@ -0,0 +1,48 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Component
public class CreateMQService {
@Autowired
private AmqpTemplate rabbitTemplate;
@Value("${oa.flag}")
private Boolean oaFlag;
/**
* @author: super_liu
* @date: 2021年09月17日 14:40
**/
public void setTodoDoneMq(NotifyTodoSendContext object){
if(oaFlag){
//发送消息队列
this.rabbitTemplate.convertAndSend("sendDone-exchange_MQ_GSAR", "sendDone-key_MQ_GSAR", object);
}
}
/**
* @author: super_liu
* @date: 2021年09月17日 14:40
**/
public void sendTodoMq(BusProcessNew object){
if(oaFlag) {
//发送消息队列
this.rabbitTemplate.convertAndSend("send-exchange_MQ_GSAR", "send-key_MQ_GSAR", object);
}
}
}
@@ -0,0 +1,179 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class SendDoneMQService {
private static final Logger logger = LoggerFactory.getLogger(SendDoneMQService.class);
@Autowired
private CreateMQService convertMq;
@Autowired
private EmailUtils emailUtils;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
@Autowired
private LawsUserInfoService lawsUserInfoService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQDone_SQ_GSAR", durable = "true"),
exchange = @Exchange(value = "sendDone-exchange_MQ_GSAR", ignoreDeclarationExceptions = "true"),
key = "sendDone-key_MQ_GSAR"))
public void createMQDone(NotifyTodoSendContext object, Message message, Channel channel) throws Exception{
try{
try{
Thread.sleep(5000);
insertOrUpdateInfo(object);
}catch(InterruptedException e){
logger.error(e.toString());
Thread.currentThread().interrupt();
}
} catch (Exception e) {
logger.error("消息队列进入添加数据方法前失败!");
logger.error(e.getMessage(),e);
}finally {
Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag,false);
logger.debug("消息确认成功!!!!!!!!!");
}
}
public void insertOrUpdateInfo(NotifyTodoSendContext object) throws Exception {
try {
NotifyTodoAppResult todoAppResult = webServiceOAService.setTodoDone(object);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(todoAppResult.getSIGN().equals("0") || todoAppResult.getMASSAGE().equals("操作成功")){
logger.info("--------------------------成功发送 ESP 已办任务----------------------------");
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getModelId());
wrapper.eq("MSG_TYPE","1");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
if(!list.isEmpty()) {
SendTodoLog sendTodoLog = list.get(0);
sendTodoLog.setOperMesg(todoAppResult.getMASSAGE());
sendTodoLog.setMsgStatus("2");
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.updateById(sendTodoLog);
}else {
sendTodoSave(object, sdf, "2",todoAppResult.getMASSAGE());
}
}else {
logger.error("ESP 发送待办任务异常 :" + "SIGN: "+todoAppResult.getSIGN()+",MASSAGE: "+todoAppResult.getMASSAGE());
// 重试发送待办
logger.info("重试发送待办");
this.restartSendMq(object,todoAppResult.getMASSAGE());
}
}catch (Exception e){
logger.error(e.getMessage(),e);
this.restartSendMq(object, e.getMessage());
}
}
public void restartSendMq(NotifyTodoSendContext object,String operMesg) throws Exception{
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getModelId());
wrapper.eq("MSG_TYPE","1");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(!list.isEmpty()){
SendTodoLog sendTodoLog = list.get(0);
int againNumNew = Integer.valueOf(sendTodoLog.getErrNum());
if(againNumNew >= 6){
// 发送待办 或 发送给管理员邮箱
logger.info("发送失败6次,发送给管理员邮箱");
List<String> emailList = new ArrayList<>();
ResponseMessage<UserVO> byId = lawsUserInfoService.getById("WY8J26MH23");
// 占时指定admin用户邮箱
emailList.add(byId == null ? "" : (byId.getData().getEmail() != null ? byId.getData().getEmail() : ""));
String[] arr = emailList.toArray(new String[emailList.size()]);
String title = "OA请求发送失败6次";
String countText = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
}else {
restSendDoneTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
}
}else {
sendTodoSave(object, sdf, "3",operMesg);
}
}
private void restSendDoneTodo(NotifyTodoSendContext object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew,String operMesg) throws Exception{
// 发送失败连续持续3次, 如果在失败等待1个小时后重试3次
if(againNumNew < 6){
Thread.sleep(3000);
logger.info("发送失败连续持续"+againNumNew+"次,存入延迟重试队列!!!!!!!!!");
}else {
logger.info("发送失败连续持续"+againNumNew+"次!!");
}
sendTodoLog.setErrNum(sendTodoLog.getErrNum()+1);
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setOperMesg(operMesg);
sendTodoLogMapper.updateById(sendTodoLog);
convertMq.setTodoDoneMq(object);
logger.info("已重新加入延迟队列");
}
private void sendTodoSave(NotifyTodoSendContext object, SimpleDateFormat sdf, String s,String operMesg) {
SendTodoLog sendTodoLog = new SendTodoLog();
sendTodoLog.setMsgType("1");
JSONObject json = JSONObject.fromObject(object);
sendTodoLog.setTodoId(object.getModelId());
sendTodoLog.setMesg(json.toString());
sendTodoLog.setMsgStatus(s);
sendTodoLog.setErrNum(1);
sendTodoLog.setOperMesg(operMesg);
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setUserId(object.getUserId());
sendTodoLogMapper.insert(sendTodoLog);
if(s.equals("2")){
logger.info("发送成功,存入OA日志");
}else{
convertMq.setTodoDoneMq(object);
logger.info("已重新加入延迟队列");
}
}
}
@@ -0,0 +1,212 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import com.ydw.bat.wkflow.util.Utils;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class SendMQService {
private static final Logger logger = LoggerFactory.getLogger(SendMQService.class);
@Autowired
private CreateMQService convertMq;
@Autowired
private EmailUtils emailUtils;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private LawsUserInfoService lawsUserInfoService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQ_SQ_GSAR", durable = "true"),
exchange = @Exchange(value = "send-exchange_MQ_GSAR", ignoreDeclarationExceptions = "true"),
key = "send-key_MQ_GSAR"))
public void createMQ(BusProcessNew object, Message message, Channel channel) throws Exception{
try{
try{
Thread.sleep(5000);
if(object.getTaskStatus() == 2 && object.getEndTime() != null && StringUtils.isNotBlank(object.getEndTime())){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int days = Utils.subDayNum(object.getEndTime());
// 3 天 外
if(days > 3){
// 执行日期
String execTime = Utils.subDay(object.getEndTime(),3);
net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(object);
// 执行任务对象 默认存储
OaTaskExec oaTaskExec = new OaTaskExec();
oaTaskExec.setExecType(2);
oaTaskExec.setTodoId(object.getId());
oaTaskExec.setUserId(object.getUserId());
oaTaskExec.setMesg(json.toString());
oaTaskExec.setCreateTime(sdf.format(new Date()));
oaTaskExec.setUpdateTime(sdf.format(new Date()));
oaTaskExec.setExecTime(execTime);
oaTaskExec.setEndTime(object.getEndTime());
oaTaskExec.setExecStatus(0);
oaTaskExecService.save(oaTaskExec);
object.setPrcName(object.getPrcName()+",请接受任务!");
// 3 天 外 发送 OA 接受待办
insertOrUpdateInfo(object);
}else {
// 3 天 内 发送 OA 待办
insertOrUpdateInfo(object);
}
}else {
// 正常逻辑发送 OA 待办
insertOrUpdateInfo(object);
}
}catch(InterruptedException e){
logger.error(e.toString());
Thread.currentThread().interrupt();
}
} catch (Exception e) {
logger.error("消息队列进入添加数据方法前失败!");
logger.error(e.getMessage(),e);
}finally {
Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag,false);
logger.debug("消息确认成功!!!!!!!!!");
}
}
public void insertOrUpdateInfo(BusProcessNew object) throws Exception {
try {
NotifyTodoAppResult todoAppResult = webServiceOAService.sendTodo(object);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(todoAppResult.getSIGN().equals("0") || todoAppResult.getMASSAGE().equals("操作成功")){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getId());
wrapper.eq("MSG_TYPE","0");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
if(!list.isEmpty()) {
SendTodoLog sendTodoLog = list.get(0);
sendTodoLog.setMsgStatus("2");
sendTodoLog.setOperMesg(todoAppResult.getMASSAGE());
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.updateById(sendTodoLog);
}else {
sendTodoSave(object, sdf, "2",todoAppResult.getMASSAGE());
}
}else {
// 重试发送待办
logger.info("重试发送待办");
this.restartSendMq(object,todoAppResult.getMASSAGE());
}
}catch (Exception e){
logger.error(e.getMessage(),e);
this.restartSendMq(object, e.getMessage());
}
}
public void restartSendMq(BusProcessNew object,String operMesg) throws Exception{
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getId());
wrapper.eq("MSG_TYPE","0");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(!list.isEmpty()){
SendTodoLog sendTodoLog = list.get(0);
int againNumNew = Integer.valueOf(sendTodoLog.getErrNum());
if(againNumNew >= 6){
ResponseMessage<UserVO> byId = lawsUserInfoService.getById("WY8J26MH23");
// 发送待办 或 发送给管理员邮箱
List<String> emailList = new ArrayList<>();
// 占时指定admin用户邮箱
emailList.add(byId == null ? "" : (byId.getData().getEmail() == null ? "" : byId.getData().getEmail()));
String[] arr = emailList.toArray(new String[emailList.size()]);
String title = "OA请求发送失败6次";
String countText = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
logger.info("发送失败6次,发送给管理员邮箱");
}else {
restSendTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
}
}else {
sendTodoSave(object, sdf, "3",operMesg);
}
}
private void restSendTodo(BusProcessNew object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew,String operMesg) throws Exception{
// 失败次数小于6次,放入失败队列延迟消费
if((againNumNew < 6)){
Thread.sleep(3000);
logger.info("发送失败连续持续"+againNumNew+"次,存入延迟重试队列!!!!!!!!!");
}else {
logger.info("发送失败连续持续"+againNumNew+"次!!");
}
sendTodoLog.setErrNum(sendTodoLog.getErrNum()+1);
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setOperMesg(operMesg);
sendTodoLogMapper.updateById(sendTodoLog);
convertMq.sendTodoMq(object);
logger.info("已重新加入延迟队列");
}
private void sendTodoSave(BusProcessNew object, SimpleDateFormat sdf, String s,String operMesg) {
SendTodoLog sendTodoLog = new SendTodoLog();
sendTodoLog.setMsgType("0");
sendTodoLog.setTodoId(object.getId());
sendTodoLog.setUserId(object.getUserId());
JSONObject json = JSONObject.fromObject(object);
sendTodoLog.setMesg(json.toString());
sendTodoLog.setMsgStatus(s);
sendTodoLog.setErrNum(1);
sendTodoLog.setOperMesg(operMesg);
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.insert(sendTodoLog);
if(s.equals("2")){
logger.info("发送成功,存入OA日志");
}else{
convertMq.sendTodoMq(object);
logger.info("已重新加入延迟队列");
}
}
}
@@ -0,0 +1,66 @@
package com.ydw.bat.wkflow.business_oa.common;
import com.ydw.bat.wkflow.business_oa.exception.CommonException;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.springframework.stereotype.Service;
import java.util.ResourceBundle;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 14:40
*/
@Service
public class WebServiceConf {
/**
* 调用webservice 接口
*
* @param method 调用方法名
* @param params 接口传入参数
* @return
*/
public static synchronized Object[] invoke(String wsdlUrl, String method, Object[] params) throws Exception {
Object[] objectArr = null;
//创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory
.newInstance();
Client client = dcf.createClient(wsdlUrl);
try {
//如果返回的address不是远程服务地址,重新制定地址
//添加发送请求拦截器
if (StringUtils.isEmpty(method)) {
throw new CommonException("cxf 调用webservice 执行方法名缺失:method 未传入");
}
// cxf 调用webservice method paramsStr
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); // 策略
httpClientPolicy.setConnectionTimeout(36000); //连接超时
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(10000); //接收超时
HTTPConduit http = (HTTPConduit) client.getConduit();
http.setClient(httpClientPolicy);
objectArr = client.invoke(method, params);
} catch (Exception e) {
throw new CommonException("cxf 调用webservice 执行错误:" + e.toString());
}finally {
client.close();
}
return objectArr;
}
}
@@ -0,0 +1,69 @@
package com.ydw.bat.wkflow.business_oa.config;
import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.concurrent.TimeUnit;
@Configuration
public class OkHttpConfig {
@Bean
public X509TrustManager x509TrustManager() {
return new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
};
}
@Bean
public SSLSocketFactory sslSocketFactory() {
try {
//信任任何链接
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom());
return sslContext.getSocketFactory();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
return null;
}
/**
* Create a new connection pool with tuning parameters appropriate for a single-user application.
* The tuning parameters in this pool are subject to change in future OkHttp releases. Currently
*/
@Bean
public ConnectionPool pool() {
return new ConnectionPool(200, 5, TimeUnit.MINUTES);
}
@Bean
public OkHttpClient okHttpClient() {
return new OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory(), x509TrustManager())
.retryOnConnectionFailure(false)//是否开启缓存
.connectionPool(pool())//连接池
.connectTimeout(10L, TimeUnit.SECONDS)
.readTimeout(10L, TimeUnit.SECONDS)
.build();
}
}
@@ -0,0 +1,12 @@
package com.ydw.bat.wkflow.business_oa.exception;
/**
* 自定义简单异常
*
*/
public class CommonException extends RuntimeException {
public CommonException(String message) {
super(message);
}
}
@@ -0,0 +1,342 @@
package com.ydw.bat.wkflow.business_oa.utils;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.UnsupportedEncodingException;
@Component
public class EmailUtils {
private final Logger logger = LoggerFactory.getLogger(getClass());
/**
* The Mail sender.
*/
@Autowired
JavaMailSenderImpl mailSender;
@Value("${mail.valid}")
private boolean mailValid;
@Value("${spring.mail.username}")
private String userName;
@Value("${spring.mail.password}")
private String mailPwd;
/**
* Send simple email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param content the content
* @throws ServiceException the service exception
*/
public void sendSimpleEmail(String deliver,String personName, String receiver, String subject, String content) throws ServiceException {
if(mailValid){
String[] receivers = {receiver};
sendSimpleEmail(deliver,personName, receivers, null, subject, content);
}
}
/**
* Send simple email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param carbonCopy the carbon copy
* @param subject the subject
* @param content the content
* @throws ServiceException the service exception
*/
public void sendSimpleEmail(String deliver,String personName, String[] receiver, String[] carbonCopy, String subject, String content) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send mail ... ");
try {
SimpleMailMessage message = new SimpleMailMessage();
personName=javax.mail.internet.MimeUtility.encodeText(personName);
message.setFrom(personName + "<"+deliver+">");
message.setTo(receiver);
if(carbonCopy!=null && carbonCopy.length>0){
message.setCc(carbonCopy);
}
message.setSubject(subject);
message.setText(content);
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MailException e) {
logger.error("Send mail failed, error message is : {} \n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
} catch (UnsupportedEncodingException e) {
logger.error("Send mail failed, error message is : {} \n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
}
}
/**
* Send html email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param content the content
* @throws ServiceException the service exception
*/
public void sendHtmlEmail(String deliver, String receiver, String subject, String content) throws ServiceException {
String[] receivers = {receiver};
sendHtmlEmail(deliver, receivers, null, subject, content, true);
}
/**
* Send html email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param carbonCopy the carbon copy
* @param subject the subject
* @param content the content
* @param isHtml the is html
* @throws ServiceException the service exception
*/
public void sendHtmlEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send email ...");
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message);
messageHelper.setFrom(deliver);
messageHelper.setTo(receiver);
if (null != carbonCopy) {
messageHelper.setCc(carbonCopy);
}
messageHelper.setSubject(subject);
messageHelper.setText(content, isHtml);
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
logger.info("Send email success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MessagingException e) {
logger.error("Send email failed, error message is {} \n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
}
}
/**
* Send attachment file email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param content the content
* @param fileName the file name
* @param file the file
* @throws ServiceException the service exception
*/
public void sendAttachmentFileEmail(String deliver, String receiver, String subject, String content, String fileName, File file) throws ServiceException {
String[] receivers = {receiver};
sendAttachmentFileEmail(deliver, receivers, null, subject, content, true, fileName, file);
}
/**
* Send attachment file mail.
*
* @param deliver the deliver
* @param receiver the receiver
* @param carbonCopy the carbon copy
* @param subject the subject
* @param content the content
* @param isHtml the is html
* @param fileName the file name
* @param file the file
* @throws ServiceException the service exception
*/
public void sendAttachmentFileEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml, String fileName, File file) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send mail ...");
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(deliver);
messageHelper.setTo(receiver);
messageHelper.setCc(carbonCopy);
messageHelper.setSubject(subject);
messageHelper.setText(content, isHtml);
messageHelper.addAttachment(fileName, file);
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MessagingException e) {
logger.error("Send mail failed, error message is {}\n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
}
}
/* *//**
* Send template email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param template the template
* @param context the context
* @throws ServiceException the service exception
*//*
public void sendTemplateEmail(String deliver, String receiver, String subject, String template, Context context) throws ServiceException {
String[] receivers = {receiver};
sendTemplateEmail(deliver, receivers, null, subject, template, context);
}*/
/* *//**
* Send template mail.
* @throws ServiceException the service exception
*//*
public void sendTemplateEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String template, Context context) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send mail ...");
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message);
String content = templateEngine.process(template, context);
messageHelper.setFrom(deliver);
messageHelper.setTo(receiver);
messageHelper.setCc(carbonCopy);
messageHelper.setSubject(subject);
messageHelper.setText(content, true);
mailSender.send(message);
logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MessagingException e) {
logger.error("Send mail failed, error message is {} \n", e.getMessage());
e.printStackTrace();
throw new ServiceException(e.getMessage());
}
}*/
@Async
public void sendMsg(String[] tos,String msg){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//邮件标题
message.setSubject(msg);
//邮件内容
message.setText(msg);
try {
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
} catch (MailException e) {
logger.error(e.getMessage(),e);
}
}
@Async
public void sendMsgNew(String[] tos,String msg,String title){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//邮件标题
message.setSubject(title);
//邮件内容
message.setText(msg);
try {
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
} catch (MailException e) {
logger.error(e.getMessage(),e);
}
}
@Async
public void sendMsgFeign(String[] tos,String title, String msg){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//邮件标题
message.setSubject(title);
//邮件内容
message.setText(msg);
try {
if (null != tos){
for (String to :tos){
sendHtmlEmail( userName, to, title, msg);
}
}
} catch (ServiceException e) {
e.printStackTrace();
}
}
@Async
public void sendMsgWithCC(String[] tos,String[] cc,String msg){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//抄送
message.setCc(cc);
//邮件标题
message.setSubject(msg);
//邮件内容
message.setText(msg);
try {
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
} catch (MailException e) {
logger.error(e.getMessage(),e);
}
}
}
@@ -0,0 +1,323 @@
package com.ydw.bat.wkflow.business_oa.utils;
import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@Component
public class OkHttpUtil {
private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class);
@Autowired
private OkHttpClient okHttpClient;
/**
* get
*
* @param url 请求的url
* @param queries 请求的参数,在浏览器?后面的数据,没有可以传null
* @return
*/
public String get(String url, Map<String, String> queries, Map<String, String> headerParams) {
String responseBody = "";
StringBuffer sb = new StringBuffer(url);
if (queries != null && queries.keySet().size() > 0) {
boolean firstFlag = true;
Iterator iterator = queries.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry<String, String>) iterator.next();
if (firstFlag) {
sb.append("?" + entry.getKey() + "=" + entry.getValue());
firstFlag = false;
} else {
sb.append("&" + entry.getKey() + "=" + entry.getValue());
}
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
if(headerParams != null){
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
}
Request request = requestBuilder.url(sb.toString())
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp put error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post
*
* @param url 请求的url
* @param params post form 提交的参数
* @return
*/
public String post(String url, Map<String, String> params, Map<String, String> headerParams) {
String responseBody = "";
FormBody.Builder builder = new FormBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
builder.add(key, params.get(key));
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
47
* 同步GET请求 带Authorization认证
48
*/
public String getAuthorization(String get_url, String json, String[] auth_base){
final String credential = Credentials.basic(auth_base[0], auth_base[1]);
String result = "";
String data_url = get_url + "?" + json;
Request request = new Request.Builder()
.url(data_url)
.header("Authorization", credential)
.get()
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return result;
}
/**
* Post请求 带Authorization认证
* */
public String postAuthorization(String get_url, HashMap<String, Object> getData, String[] authBase){
String result = "";
final String credential = Credentials.basic(authBase[0], authBase[1]);
RequestBody fromBody = generateParametersForPost(getData).build();
Request request = new Request.Builder()
.url(get_url)
.header("Authorization", credential)
.post(fromBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return result;
}
//拼接参数
private static String generateParameters(HashMap<String, Object> parameters) {
String urlAttachment = "";
if(parameters.size()>0){
urlAttachment = "?";
Object[] keys = parameters.keySet().toArray();
for(Object key : keys)
urlAttachment += key.toString() + "=" + parameters.get(key).toString() + "&";
urlAttachment = urlAttachment.substring(0,urlAttachment.length()-1);
}
return urlAttachment;
}
//拼接参数用于POST请求
private static FormBody.Builder generateParametersForPost(HashMap<String, Object> parameters) {
FormBody.Builder builder = new FormBody.Builder();
if(parameters.size()>0){
Object[] keys = parameters.keySet().toArray();
for(Object key : keys){
Object ff = parameters.get(key);
String aa = parameters.get(key).toString();
builder.add(key.toString(),parameters.get(key).toString());
}
}
return builder;
}
/**
* 发送私密API请求
*
* @paramget_url请求地址
* @paramget_data 请求参数列表
* @return 返回JSON数据
*/
private String auth_get(){
String result = "";
String api_key = "apikey";
String api_secret = "apisecret";
//认证信息
String[] baseAuth = {api_key,api_secret};
//请求的URL的参数
HashMap<String, Object> get_data = new HashMap<>();
get_data.put("page","1"); //page参数
get_data.put("name","test"); //name参数
// result = getAuthorization("http://www.superl.org/page-about.html", get_data, baseAuth);
return result;
}
/**
* post
*
* @param url 请求的url
* @param headerParams post form 提交的参数
* @return
*/
public String postForJson(String url, String json, Map<String, String> headerParams){
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
String responseBody = "";
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(requestBody).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
return "okhttp post error >> ex = {} "+ e.getMessage();
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post 上传文件
*
* @param url
* @param params
* @param fileType
* @return
*/
public String postFile(String url, Map<String, Object> params, String fileType, Map<String, String> headerParams) {
String responseBody = "";
MultipartBody.Builder builder = new MultipartBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
if (params.get(key) instanceof File) {
File file = (File) params.get(key);
builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse(fileType), file));
continue;
}
builder.addFormDataPart(key, params.get(key).toString());
}
}
Request.Builder requestBuilder = new Request.Builder();
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.url(url).post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp postFile error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
}
@@ -0,0 +1,69 @@
package com.ydw.bat.wkflow.business_oa.webService.controller;
import java.text.SimpleDateFormat;
import java.util.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tmsps.fk.common.util.JsonUtil;
import com.ydw.bat.wkflow.business_activiti.dto.*;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto;
import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService;
import org.activiti.engine.*;
import org.activiti.engine.history.*;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.tmsps.fk.common.base.action.BaseAction;
import com.tmsps.fk.common.util.ChkUtil;
import com.tmsps.fk.common.wrapper.WrapMapper;
import com.tmsps.fk.common.wrapper.Wrapper;
import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService;
import com.ydw.bat.wkflow.util.activiti.ActivitiTools;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@Api(description = "WebService管理")
@RestController
public class WebServiceOAController extends BaseAction {
@Autowired
private WebServiceOAService webServiceOAService;
@ApiOperation(value = "发送待办接口(")
@PostMapping("/sendTodo")
public NotifyTodoAppResult sendTodo() throws Exception{
return webServiceOAService.sendTodo(new BusProcessNew());
}
}
@@ -0,0 +1,13 @@
package com.ydw.bat.wkflow.business_oa.webService.service;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
public interface WebServiceOAService {
NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew) throws Exception;
NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext) throws Exception;
}
@@ -0,0 +1,179 @@
package com.ydw.bat.wkflow.business_oa.webService.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_oa.common.WebServiceConf;
import com.ydw.bat.wkflow.business_oa.utils.OkHttpUtil;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.HEAD;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.JsonSend;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import net.sf.json.JSONArray;
import okhttp3.Credentials;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 15:02
*/
@Service
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class WebServiceOAServiceImpl implements WebServiceOAService {
private static final Logger log = LoggerFactory.getLogger(WebServiceOAServiceImpl.class);
private String sonar = "sonar";
private String info = "info:{},{}";
private String errMes = "异常信息:";
private String api_key = "OA";
private String api_secret = "TEST_oa201611241710";
@Value("${webUrl}")
private String webUrl;
//认证信息
private String[] baseAuth = {api_key,api_secret};
private String credentials = "";
@Autowired
private OkHttpUtil okHttpUtil;
@Autowired
private LawsUserInfoService lawsUserInfoService;
@Autowired
private IBusProcessNameService iBusProcessNameService;
public WebServiceOAServiceImpl(){
credentials = Credentials.basic(api_key,api_secret);
}
@Override
@Async
public NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext) throws Exception{
NotifyTodoAppResult notifyTodoAppResult = new NotifyTodoAppResult();
String result = "";
SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
JsonSend jsonSend = new JsonSend();
HEAD head = new HEAD();
head.setACCOUNT("OA");
head.setBIZTRANSACTIONID("SYC_161320210206133219");
head.setCONSUMER("FOTON");
head.setCOUNT("1");
head.setPASSWORD("TEST_oa201611241710");
head.setSRVLEVEL("1");
List<Object> list = new ArrayList<>();
list.add(notifyTodoSendContext);
jsonSend.setHEAD(head);
jsonSend.setLIST(list);
net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(jsonSend);
Map<String,String> mapCtr = new TreeMap<>();
mapCtr.put("Authorization",credentials);
log.info("处理完文件数据,开始请求发送已办接口数据:【"+sdf.format(new Date())+"");
result = okHttpUtil.postForJson("http://172.24.12.64:85/WP_FOTON_FSOA/APP_DOC_SERVICES/Proxy_Services/TA_OA/DOC_SYC_1021_SendNotifyTodo_PS",json.toString(),mapCtr);
log.info("请求发送已办接口完毕,返回响应状态:【"+sdf.format(new Date())+"");
// JSONObject jsonObject = JSONObject.parseObject(result);
if(!result.contains("操作成功")){
log.error("请求发送已办接口出现异常:"+result);
notifyTodoAppResult.setSIGN("1");
notifyTodoAppResult.setMASSAGE(result);
}else {
log.info("--------------------------成功发送 ESP 已办 模块ID"+notifyTodoSendContext.getModelId()+"----------------------------");
log.info("okHttp请求发送已办接口成功结果:"+result);
notifyTodoAppResult = (NotifyTodoAppResult) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(result), NotifyTodoAppResult.class);
}
// try {
//
// } catch (Exception e) {
// log.error(errMes, e.getMessage());
// }
return notifyTodoAppResult;
}
@Override
@Async
public NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew) throws Exception{
NotifyTodoAppResult notifyTodoAppResult = new NotifyTodoAppResult();
String result = "";
SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
JsonSend jsonSend = new JsonSend();
HEAD head = new HEAD();
head.setACCOUNT("OA");
head.setBIZTRANSACTIONID("SYC_161320210206133219");
head.setCONSUMER("FOTON");
head.setCOUNT("1");
head.setPASSWORD("TEST_oa201611241710");
head.setSRVLEVEL("1");
List<Object> list = new ArrayList<>();
NotifyTodoSendContext notifyTodoSendContext = new NotifyTodoSendContext();
// 待办来源的系统
notifyTodoSendContext.setAppName("FOTON");
//创建时间
notifyTodoSendContext.setCreateTime(sdf.format(new Date()));
// 待办在原系统唯一标识
notifyTodoSendContext.setModelId(busProcessNew.getId());
//模块名称
notifyTodoSendContext.setModelName(busProcessNew.getTaskInfo());
//标题
notifyTodoSendContext.setSubject(busProcessNew.getPrcName());
//地址
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("PRC_ID", busProcessNew.getPId());
BusProcessName busProcessName = iBusProcessNameService.getOne(queryWrapper);
String linkParam = "&taskIds="+busProcessNew.getTaskId()+"&prcId="+busProcessNew.getPId()+"&prcNum="+busProcessName.getPrcNum()+"&prcName="+busProcessNew.getPrcName();
notifyTodoSendContext.setLink(webUrl+busProcessNew.getLink()+linkParam);
//待办类型
notifyTodoSendContext.setType("1");
Map<String, Object> map = new HashMap<>();
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(busProcessNew.getUserId());
map.put("LoginName",byId == null ? "" : byId.getData().getAccount());
JSONObject jsonLoginName = new JSONObject(map);
notifyTodoSendContext.setTargets(jsonLoginName.toJSONString());
list.add(notifyTodoSendContext);
jsonSend.setHEAD(head);
jsonSend.setLIST(list);
net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(jsonSend);
Map<String,String> mapCtr = new TreeMap<>();
mapCtr.put("Authorization",credentials);
log.info("处理完文件数据,开始请求发送待办接口数据:【"+sdf.format(new Date())+"");
result = okHttpUtil.postForJson("http://172.24.12.64:85/WP_FOTON_FSOA/APP_DOC_SERVICES/Proxy_Services/TA_OA/DOC_SYC_1019_SendTodo_PS",json.toString(),mapCtr);
log.info("请求发送待办接口完毕,返回响应状态:【"+sdf.format(new Date())+"");
// JSONObject jsonObject = JSONObject.parseObject(result);
if(!result.contains("操作成功")){
log.error("请求发送待办接口出现异常:"+result);
notifyTodoAppResult.setSIGN("1");
notifyTodoAppResult.setMASSAGE(result);
}else {
log.info("okHttp请求发送待办接口成功结果:"+result);
notifyTodoAppResult = (NotifyTodoAppResult) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(result), NotifyTodoAppResult.class);
}
// try {
//
//
// } catch (Exception e) {
// log.error(errMes, e.getMessage());
// }
return notifyTodoAppResult;
}
}
@@ -0,0 +1,19 @@
package com.ydw.bat.wkflow.business_oa.webService.todoContent;
import lombok.Data;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 17:12
*/
@Data
public class HEAD {
private String ACCOUNT;
private String BIZTRANSACTIONID;
private String CONSUMER;
private String COUNT;
private String PASSWORD;
private String SRVLEVEL;
}
@@ -0,0 +1,19 @@
package com.ydw.bat.wkflow.business_oa.webService.todoContent;
import lombok.Data;
import java.util.List;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 17:11
*/
@Data
public class JsonSend {
private HEAD HEAD;
private List<Object> LIST;
}
@@ -0,0 +1,77 @@
package com.ydw.bat.wkflow.business_oa.webService.todoContent;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 15:05
*/
@Data
public class NotifyTodoSendContext implements Serializable {
@ApiModelProperty(value = "标识待办来源的系统")
private String appName;
@ApiModelProperty(value = "标识待办来源的模块")
private String modelName;
@ApiModelProperty(value = "标识待办在原系统唯一标识")
private String modelId;
@ApiModelProperty(value = "待办标题")
private String subject;
@ApiModelProperty(value = "对应待办的链接地址(全路径)")
private String link;
@ApiModelProperty(value = "1:表示审批类待办 2:表示为通知类待办")
private String type;
//用于区分同一文档下不同类型待办, 如:会议文档的抄送待办和与会人参加待办属于同一文档的不同类型的待办
@ApiModelProperty(value = "待办关键字")
private String key;
//待办附加标识 功能同"关键字",辅助区分不同类型的待办
@ApiModelProperty(value = "参数1")
private String param1;
//待办附加标识功能同"关键字",辅助区分不同类型的待办
@ApiModelProperty(value = "参数2")
private String param2;
//数据格式为JSON,格式描述请查看组织架构
@ApiModelProperty(value = "待办对应接收人")
private String targets;
@ApiModelProperty(value = "创建时间")
private String createTime;
//数据格式为JSON,格式描述请查看组织架构
@ApiModelProperty(value = "待办的创建者")
private String docCreator;
@ApiModelProperty(value = "待办优先级。如:按紧急(1)、急(2)、一般(3)")
private String level;
//数据格式为JSON,格式描述请查看组织架构
@ApiModelProperty(value = "消息内容扩展")
private String extendContent;
//备用参数,方便以后参数的扩展。数据格式为JSON,格式如:{ke
//y1:value1,key2:value2}。
@ApiModelProperty(value = "扩展参数")
private String others;
// 1:表示设待办为已办操作
//2:表示设置目标待办所属人为已办操作
@ApiModelProperty(value = "操作类型")
private String optType;
@ApiModelProperty(value = "用户ID")
private String userId;
}
@@ -0,0 +1,26 @@
package com.ydw.bat.wkflow.business_oa.webService.todoResult;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 15:23
*/
@Data
public class NotifyTodoAppResult {
// @ApiModelProperty(value = "返回状态 0:表示未操作 1:表示操作失败 2:表示操作成功")
@ApiModelProperty(value = "返回状态 0:表示操作成功 1:表示操作失败")
private String SIGN;
// @ApiModelProperty(value = "返回信息 " +
// "返回状态值为0时,该值返回空 " +
// "返回状态值为1时,该值错误信息 " +
// "返回状态值为2时,该值返回空")
@ApiModelProperty(value = "返回信息 " +
"返回状态值为0时,表示操作成功 " +
"返回状态值为1时,该值错误信息 ")
private String MASSAGE;
}
@@ -0,0 +1,88 @@
package com.ydw.bat.wkflow.config;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.HistoryService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@EnableScheduling
@Component
@Slf4j
public class ScheduledJob {
/**
* 根据配置文件设置是否开启定时器
*/
@Value("${isNotScheduled}")
private boolean isNotScheduled; //是否开启定时器
@Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行
// @Scheduled(cron="*/5 * * * * ?")
@Async
public void SchedulingTask() {
if(isNotScheduled){
HistoryService historyService = SpringContextUtil.getBean(HistoryService.class);
IOaTaskExecService execService = SpringContextUtil.getBean(IOaTaskExecService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("EXEC_TYPE",2);
wrapper.eq("EXEC_STATUS",1);
wrapper.eq("EXEC_TIME",sdf.format(new Date()));
List<OaTaskExec> taskExecs = execService.list(wrapper);
if(!taskExecs.isEmpty()){
taskExecs.forEach(taskExec -> {
BusProcessNew object = (BusProcessNew) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(taskExec.getMesg()), BusProcessNew.class);
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(object.getPId()).taskId(object.getTaskId()).finished();
List<HistoricTaskInstance> list = historicTaskInstanceQuery.list();
// 判断定时任务的流程节点是否已完成
if(!list.isEmpty()){
// 业务系统流程节点已完成 则不再发送 OA 待办
updateTask(execService, sdf, taskExec);
}else {
// 业务系统流程节点未完成 再发送 OA 待办
// 任务状态 置为 已完成 业务流程 干活流程节点 均显示 提交
updateTask(execService, sdf, taskExec);
// 直接发送OA待办 重置任务状态 0
object.setTaskStatus(0);
oaService.sendTodoMq(object);
}
});
}
}
}
private void updateTask(IOaTaskExecService execService, SimpleDateFormat sdf, OaTaskExec taskExec) {
OaTaskExec exec = new OaTaskExec();
exec.setId(taskExec.getId());
exec.setExecStatus(2);
exec.setUpdateTime(sdf.format(new Date()));
execService.updateById(exec);
}
}
@@ -47,6 +47,13 @@ public class SwaggerConfig {
.build().groupName("表单接口");
}
@Bean
public Docket webServiceApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
.apis(RequestHandlerSelectors.basePackage("com.ydw.bat.wkflow.business_oa")).paths(allowPaths())
.build().groupName("webService接口");
}
private ApiInfo apiInfo() {
Contact contact = new Contact("工作流系统", "http://localhost:17211/foton-bat-wkflow", null);
return new ApiInfoBuilder().contact(contact).title("工作流系统 API").description("activiti接口及工作流相关业务接口")
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.NonConformanceRectification;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -25,6 +26,12 @@ public class DockingApprovalBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("wfhxzgStep5?prcType=8");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.NonConformanceRectification;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class SelectDockUserBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("wfhxzgStep2?prcType=8");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.NonConformanceRectification;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class SelectResponUserBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("wfhxzgStep3?prcType=8");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -28,6 +29,12 @@ public class UploadCommentBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("wfhxzgStep4?prcType=8");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAComplianceAssessmentBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step6?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAbzManagerApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step2?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAbzfgManagerApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step10?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,13 @@ public class PCAdlApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step12?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAffLiableApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step7?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAffLiableDistirbuteBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step5?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAgcManagerApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step9?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAgcManagerDeliverBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step3?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAjgManagerApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step8?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAjgManagerDistributeBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step4?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.ProjectComplianceAssessment;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -23,6 +24,12 @@ public class PCAsumBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpg2Step11?prcType=6");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class DirectorSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -21,6 +24,11 @@ public class DirectorSignBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep8?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,8 +14,7 @@ public class DockingApprovalBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
@@ -26,6 +26,11 @@ public class DockingApprovalBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep4?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class MinisterAndDockerSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class MinisterAndDockerSignBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo("标准法规部部长 "+"责任部门对接人 审批");
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep7?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class PresidentSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -22,6 +25,11 @@ public class PresidentSignBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep9?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class ResponUserSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -22,6 +25,11 @@ public class ResponUserSignBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep6?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class SelectResponsibleUserBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class SelectResponsibleUserBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep2?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -16,6 +17,8 @@ public class SummarySurveyBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -59,6 +62,11 @@ public class SummarySurveyBefore implements TaskListener {
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzzqyjStep5?prcType=3");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
/*JSONObject obj= JSON.parseObject(one1.getMesg());
//看全局变量里有没有存Summary,有的话就直接走,没的话就就初始化
@@ -1,9 +1,12 @@
package com.ydw.bat.wkflow.listener.StandardCommentProcess;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.Utils;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +16,8 @@ public class UploadResearchResultBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +28,15 @@ public class UploadResearchResultBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
JSONObject object = JSONObject.parseObject(one1.getMesg());
one1.setLink("bzzqyjStep3?prcType=3");
one1.setTaskInfo(delegateTask.getName());
// 干活节点流程
one1.setTaskStatus(2);
one1.setEndTime(Utils.interceptTime(object.getString("endTime")));
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class DirectorSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -21,6 +24,11 @@ public class DirectorSignBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep8?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,8 +14,7 @@ public class DockingApprovalBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
@@ -26,6 +26,11 @@ public class DockingApprovalBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep4?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class MinisterAndDockerSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class MinisterAndDockerSignBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep7?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class PresidentSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -22,6 +25,11 @@ public class PresidentSignBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep9?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class ResponUserSignBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -22,6 +25,11 @@ public class ResponUserSignBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep6?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class SelectResponsibleUserBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class SelectResponsibleUserBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep2?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -16,6 +17,8 @@ public class SummarySurveyBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -29,6 +32,11 @@ public class SummarySurveyBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep5?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.StandardSurvey;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -13,6 +14,8 @@ public class UploadResearchResultBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class UploadResearchResultBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzdyStep3?prcType=2");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.itemlistvalidationprocess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -22,6 +23,12 @@ public class bzApproveBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmqdqrStep3?prcType=10");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.itemlistvalidationprocess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -22,6 +23,12 @@ public class confirmBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmqdqrStep2?prcType=10");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.itemlistvalidationprocess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -22,6 +23,12 @@ public class itemlistvalidationprocessStartBefore implements TaskListener {
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmqdqrStep3?prcType=10");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.projectEvaluationProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -14,6 +15,7 @@ public class PEPDepartLeaderBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +25,12 @@ public class PEPDepartLeaderBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpgStep7?prcType=5");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.projectEvaluationProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -14,6 +15,8 @@ public class PEPSumBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class PEPSumBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpgStep6?prcType=5");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.projectEvaluationProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -14,6 +15,8 @@ public class PEPffresPersonBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class PEPffresPersonBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpgStep5?prcType=5");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.projectEvaluationProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -14,6 +15,8 @@ public class PEPmanagerApproveBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.isNull("TASK_ID");
@@ -22,6 +25,11 @@ public class PEPmanagerApproveBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpgStep2?prcType=5");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.projectEvaluationProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -14,6 +15,8 @@ public class PEPtaskEstimateBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +26,11 @@ public class PEPtaskEstimateBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("xmpgStep4?prcType=5");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
@@ -1,9 +1,12 @@
package com.ydw.bat.wkflow.listener.projectEvaluationProcess;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import com.ydw.bat.wkflow.util.Utils;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -14,6 +17,8 @@ public class PEPtaskLssueBefore implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -23,6 +28,15 @@ public class PEPtaskLssueBefore implements TaskListener {
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
JSONObject object = JSONObject.parseObject(one1.getMesg());
one1.setLink("xmpgStep3?prcType=5");
one1.setTaskInfo(delegateTask.getName());
// 干活节点流程
one1.setTaskStatus(2);
one1.setEndTime(Utils.interceptTime(object.getString("endTime")));
oaService.sendTodoMq(one1);
}
}
@@ -8,6 +8,7 @@ import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.delegate.DelegateTask;
@@ -6,6 +6,8 @@ import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -19,6 +21,8 @@ public class ApplyApplicantBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -28,6 +32,11 @@ public class ApplyApplicantBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzrkStep4?prcType=1");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -8,6 +8,7 @@ import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.delegate.DelegateTask;
@@ -3,6 +3,8 @@ package com.ydw.bat.wkflow.listener.standardLibrary;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -16,6 +18,7 @@ public class CountersignBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -25,6 +28,11 @@ public class CountersignBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzrkStep3?prcType=1");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -6,9 +6,13 @@ import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.task.Task;
import java.util.List;
@@ -19,6 +23,8 @@ public class ManagerApproveBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
queryWrapper1.eq("USER_ID",delegateTask.getAssignee());
@@ -27,7 +33,12 @@ public class ManagerApproveBefore implements TaskListener{
if(!list.isEmpty()){
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
one1.setTaskInfo(delegateTask.getName());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzrkStep2?prcType=1");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -8,6 +8,7 @@ import com.ydw.bat.wkflow.business_main.datas.entity.Datas;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.delegate.DelegateTask;
@@ -128,6 +129,7 @@ public class SLApplicantAfter implements TaskListener{
}
}
}
private String verifyObj(String str){
return (str == null || str.equals("")) ? "" : str;
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRead;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -15,6 +16,8 @@ public class DeptApplayBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -24,6 +27,11 @@ public class DeptApplayBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzjdStep6?prcType=9");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRead;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -15,6 +16,8 @@ public class DeptZrBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -24,6 +27,11 @@ public class DeptZrBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzjdStep2?prcType=9");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRead;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -15,6 +16,8 @@ public class EngineerApplayBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -24,6 +27,11 @@ public class EngineerApplayBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzjdStep5?prcType=9");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRead;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -15,6 +16,8 @@ public class ExpainBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -24,6 +27,11 @@ public class ExpainBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzjdStep3?prcType=9");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRead;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -15,6 +16,8 @@ public class ZrApplayBefore implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.isNull("TASK_ID");
queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId());
@@ -24,6 +27,11 @@ public class ZrApplayBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzjdStep4?prcType=9");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRegulatoryProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -25,6 +26,12 @@ public class CountersignSRPBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzqdfbStep2?prcType=4");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRegulatoryProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -25,6 +26,12 @@ public class SRPApplyApplicantBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzqdfbStep3?prcType=4");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.listener.standardRegulatoryProcess;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
@@ -25,6 +26,12 @@ public class SRPManagerApproveBefore implements TaskListener{
BusProcessNew one1 = list.get(0);
one1.setTaskId(delegateTask.getId());
busBean.saveOrUpdate(one1);
CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class);
// 发送 oa 待办 设置 跳转页面 router ? 后面流程类型
one1.setLink("bzqdfbStep4?prcType=4");
one1.setTaskInfo(delegateTask.getName());
oaService.sendTodoMq(one1);
}
}
}
@@ -2,11 +2,16 @@ package com.ydw.bat.wkflow.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
/**
* @Description: TODO
@@ -15,6 +20,49 @@ import java.util.Map;
*/
public class Utils {
public static int subDayNum(String endTime){
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate startDate = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()),fmt);
LocalDate endDate = LocalDate.parse(endTime,fmt);
int days = (int) startDate.until(endDate, ChronoUnit.DAYS);
return days;
}
public static String interceptTime(String timeStr) {
if (StringUtils.isNotBlank(timeStr)) {
System.out.println(timeStr.length());
if (timeStr.contains("T")) {
DateTimeFormatter df20 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH);
DateTimeFormatter df24 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse(timeStr, timeStr.length() > 20 ? df24:df20);
ZoneId currentZone = ZoneId.of("UTC");
ZoneId newZone = ZoneId.of("Asia/Shanghai");
timeStr = ldt.atZone(currentZone).withZoneSameInstant(newZone).toLocalDateTime().toString();
}
if (timeStr.length() >= 10) {
return timeStr.substring(0, 10);
}
}
return timeStr;
}
public static String subDay(String date, Integer dayInt) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date today = null;
try {
today = sdf.parse(date);
} catch (ParseException e) {
}
String endDate = sdf.format(today);//当前日期
Calendar theCa = Calendar.getInstance();
theCa.setTime(today);
theCa.add(theCa.DATE, -dayInt);//最后一个数字30可改,30天的意思
Date start = theCa.getTime();
String startDate = sdf.format(start);//三十天之前日期
return startDate;
}
public static Map<String, JSONArray> jsonArrGroup(JSONArray arr, String groupName, String sGroupName) {
Map<String, JSONArray> map = new HashMap<>();
String tempIdStr = "";
+64 -4
View File
@@ -15,10 +15,10 @@ logging:
eureka:
client:
serviceUrl:
defaultZone: http://192.168.10.47:8761/eureka/
defaultZone: http://62.234.136.153:8761/eureka/
spring:
application:
name: shan3
name: bat-wkflow
http:
encoding:
charset: UTF-8
@@ -27,11 +27,11 @@ spring:
servlet:
multipart:
maxFileSize: "100MB"
maxRequestSize: "100MB"
maxRequestSize: "100MB"
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.10.47:3306/foton-bat-wkflow?nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=utf-8
url: jdbc:mysql://39.100.23.127:3306/foton-bat-wkflow?nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=utf-8
username: root
password: root
activiti:
@@ -40,6 +40,56 @@ spring:
check-process-definitions: false
profiles:
active: dev
# 相关服务配置同业务系统
rabbitmq:
host: 62.234.136.153
port: 5672
username: guest
password: guest
listener:
direct:
# 默认加载 发版 需改为 true
auto-startup: false
simple:
concurrency: 5
max-concurrency: 10
acknowledge-mode: manual
#消费失败消息干掉
default-requeue-rejected: true
retry:
#5秒
initial-interval: 5000
enabled: true
#最大重试9次
max-attempts: 6
# 消费者默认加载 发版 需改为 true
auto-startup: false
# =============================================================================
# 邮箱配置-1
# =============================================================================
mail:
host: smtp.163.com
protocol: smtp
username: foton_admin@163.com
password: QDQMXXMCKFARNDEI
properties:
smtp:
auth: true
starttls:
enable: true
required: true
mail:
smtp:
ssl:
enable: true
port: 465
# =============================================================================
# 邮箱配置-2
# =============================================================================
mail:
valid: true
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
@@ -47,3 +97,13 @@ mybatis-plus:
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
# 配置 是否 启用 OA
oa:
flag: false
# 配置前端服务全路径地址 如下 /#/
webUrl: http://62.234.136.153:8038/#/
isNotScheduled: true
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ydw.bat.wkflow.business_main.datas.mapper.OaTaskExecMapper">
</mapper>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper">
</mapper>