diff --git a/pom.xml b/pom.xml index a6c58dae..377df6dd 100644 --- a/pom.xml +++ b/pom.xml @@ -35,11 +35,6 @@ spring-cloud-starter-netflix-eureka-client 2.0.0.RELEASE - - - org.springframework - spring-context-support - org.springframework.boot spring-boot-starter-amqp diff --git a/src/main/java/com/ydw/bat/wkflow/BatWkflowApplication.java b/src/main/java/com/ydw/bat/wkflow/BatWkflowApplication.java index 5ae2a9eb..55fc0520 100644 --- a/src/main/java/com/ydw/bat/wkflow/BatWkflowApplication.java +++ b/src/main/java/com/ydw/bat/wkflow/BatWkflowApplication.java @@ -24,6 +24,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class, org.activiti.spring.boot.SecurityAutoConfiguration.class }) @MapperScan("com.ydw.bat.wkflow.business.*.mapper") +@MapperScan("com.ydw.bat.wkflow.business_oa.*") @EnableScheduling public class BatWkflowApplication { diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java index 15e5ae05..e3a7049e 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java @@ -22,11 +22,13 @@ 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_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.*; @@ -39,6 +41,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; @@ -89,7 +92,7 @@ public class TodoTaskController extends BaseAction { private LawsUserInfoService lawsUserInfoService; @Autowired - private WebServiceOAService webServiceOAService; + private CreateMQService mqService; @ApiOperation(value = "我的待办任务列表") @ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"), @@ -337,8 +340,12 @@ public class TodoTaskController extends BaseAction { formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey()); //发送OA已办 - completeOA(task); - + try { + //发送OA已办 + completeOA(task); + }catch (Exception e){ + logger.error(e.toString()); + } taskService.complete(busMes.getTaskId()); } return WrapMapper.ok(task.getProcessInstanceId()); @@ -359,9 +366,13 @@ public class TodoTaskController extends BaseAction { formSubmitDto.setForm(busMes.getJson()); formSubmitDto.setTask_id(taskId); formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey()); - //发送OA已办 - completeOA(task); + try { + //发送OA已办 + completeOA(task); + }catch (Exception e){ + logger.error(e.toString()); + } taskService.complete(taskId); } } @@ -382,6 +393,7 @@ public class TodoTaskController extends BaseAction { } 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(); @@ -401,16 +413,8 @@ public class TodoTaskController extends BaseAction { map.put("LoginName",byId == null ? "" : byId.getData().getAccount()); JSONObject jsonLoginName = new JSONObject(map); notifyTodoSendContext.setTargets(jsonLoginName.toJSONString()); - NotifyTodoAppResult notifyTodoAppResult = webServiceOAService.setTodoDone(notifyTodoSendContext); - if(notifyTodoAppResult != null){ - if(notifyTodoAppResult.getSIGN().equals("0") && notifyTodoAppResult.getMASSAGE().equals("操作成功")){ - logger.info("--------------------------成功发送 ESP 已办任务----------------------------"); - }else { - logger.error("ESP 发送待办任务异常 :" + "SIGN: "+notifyTodoAppResult.getSIGN()+",MASSAGE: "+notifyTodoAppResult.getMASSAGE()); - } - }else { - logger.error("--------------------ESP 发送待办任务异常----------------------"); - } + notifyTodoSendContext.setUserId(task.getAssignee()); + oaService.setTodoDoneMq(notifyTodoSendContext); } } diff --git a/src/main/java/com/ydw/bat/wkflow/business_mq/service/CreateMQService.java b/src/main/java/com/ydw/bat/wkflow/business_mq/service/CreateMQService.java index ad6b7359..c97ffbe7 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_mq/service/CreateMQService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_mq/service/CreateMQService.java @@ -1,6 +1,7 @@ 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; @@ -19,7 +20,7 @@ public class CreateMQService { * @author: super_liu * @date: 2021年09月17日 14:40 **/ - public void setTodoDoneMq(BusProcessNew object) throws Exception{ + public void setTodoDoneMq(NotifyTodoSendContext object){ //发送消息队列 this.rabbitTemplate.convertAndSend("sendDone-exchange_MQ_GSAR", "sendDone-key_MQ_GSAR", object); diff --git a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java new file mode 100644 index 00000000..6d153160 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendDoneMQService.java @@ -0,0 +1,142 @@ +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_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_oa.sendTodoLog.entity.SendTodoLog; +import com.ydw.bat.wkflow.business_oa.sendTodoLog.mapper.SendTodoLogMapper; +import com.ydw.bat.wkflow.business_oa.sendTodoLog.service.ISendTodoLogService; +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.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.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +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 WebServiceOAService webServiceOAService; + + @Autowired + private SendTodoLogMapper sendTodoLogMapper; + + @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 createMQ(NotifyTodoSendContext object, Message message, Channel channel) throws Exception{ + try{ + try{ + 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 已办任务----------------------------"); + sendTodoSave(object, sdf, "2"); + }else { + logger.error("ESP 发送待办任务异常 :" + "SIGN: "+todoAppResult.getSIGN()+",MASSAGE: "+todoAppResult.getMASSAGE()); + // 重试发送待办 + logger.info("重试发送待办"); + this.restartSendMq(object); + } + }catch (Exception e){ + logger.error(e.getMessage(),e); + this.restartSendMq(object); + } + } + + public void restartSendMq(NotifyTodoSendContext object) throws Exception{ + SendTodoLog sendTodoLog = new SendTodoLog(); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("TODO_ID",object.getModelId()); + wrapper.eq("MSG_TYPE","1"); + List list = sendTodoLogMapper.selectList(wrapper); + if(!list.isEmpty()){ + sendTodoLog = list.get(0); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); + if(sendTodoLog != null){ + int againNumNew = Integer.valueOf(sendTodoLog.getErrNum()); + if(againNumNew >= 6){ + // 发送待办 或 发送给管理员邮箱 + logger.info("发送失败9次,发送给管理员邮箱"); + + }else { + restSendDoneTodo(object, sdf, sendTodoLog, againNumNew); + } + }else { + sendTodoSave(object, sdf, "3"); + } + } + + private void restSendDoneTodo(NotifyTodoSendContext object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew) 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())); + sendTodoLogMapper.updateById(sendTodoLog); + convertMq.setTodoDoneMq(object); + logger.info("已重新加入延迟队列"); + } + + private void sendTodoSave(NotifyTodoSendContext object, SimpleDateFormat sdf, String s) { + 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.setCreateTime(sdf.format(new Date())); + sendTodoLog.setUpdateTime(sdf.format(new Date())); + sendTodoLog.setUserId(object.getUserId()); + sendTodoLogMapper.insert(sendTodoLog); + convertMq.setTodoDoneMq(object); + logger.info("已重新加入延迟队列"); + } + +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java index 8530a921..07398b1d 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_mq/service/SendMQService.java @@ -4,8 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.rabbitmq.client.Channel; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_oa.sendTodoLog.entity.SendTodoLog; +import com.ydw.bat.wkflow.business_oa.sendTodoLog.mapper.SendTodoLogMapper; import com.ydw.bat.wkflow.business_oa.sendTodoLog.service.ISendTodoLogService; import com.ydw.bat.wkflow.business_oa.sendTodoLog.service.impl.SendTodoLogServiceImpl; +import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService; +import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult; +import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.rabbit.annotation.Exchange; @@ -15,8 +19,11 @@ 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.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; @Component @@ -28,8 +35,10 @@ public class SendMQService { private CreateMQService convertMq; @Autowired - private ISendTodoLogService iSendTodoLogService; + private WebServiceOAService webServiceOAService; + @Autowired + private SendTodoLogMapper sendTodoLogMapper; @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "createMQ_SQ_GSAR", durable = "true"), @@ -38,7 +47,6 @@ public class SendMQService { public void createMQ(BusProcessNew object, Message message, Channel channel) throws Exception{ try{ try{ - Thread.sleep(5000); insertOrUpdateInfo(object); }catch(InterruptedException e){ logger.error(e.toString()); @@ -57,6 +65,16 @@ public class SendMQService { 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("1")){ + // 重试发送待办 + logger.info("重试发送待办"); + this.restartSendMq(object); + }else { + sendTodoSave(object, sdf, "2"); + } }catch (Exception e){ logger.error(e.getMessage(),e); @@ -65,41 +83,54 @@ public class SendMQService { } public void restartSendMq(BusProcessNew object) throws Exception{ - SendTodoLog sendTodoLog = new SendTodoLog(); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("TODO_ID",object.getId()); - List list = iSendTodoLogService.list(wrapper); + wrapper.eq("MSG_TYPE","0"); + List list = sendTodoLogMapper.selectList(wrapper); + SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); if(!list.isEmpty()){ - sendTodoLog = list.get(0); - } - if(sendTodoLog != null){ + SendTodoLog sendTodoLog = list.get(0); int againNumNew = Integer.valueOf(sendTodoLog.getErrNum()); - if(againNumNew >= 9){ + if(againNumNew >= 6){ // 发送待办 或 发送给管理员邮箱 - logger.info("发送失败9次,发送给管理员邮箱"); - + logger.info("发送失败6次,发送给管理员邮箱"); }else { - // 发送失败连续持续3次, 如果在失败等待1个小时后重试3次 - if(againNumNew == 3 || againNumNew == 6){ - Thread.sleep(3600000); - logger.info("发送失败连续持续3次,等待1个小时后重试3次!!!!!!!!!"); - - }else { - logger.info("发送失败连续持续"+againNumNew+"次!!"); - } - sendTodoLog.setErrNum(sendTodoLog.getErrNum()+1); - iSendTodoLogService.save(sendTodoLog); - convertMq.sendTodoMq(object); - logger.info("已重新加入转换"); + restSendTodo(object, sdf, sendTodoLog, againNumNew); } }else { - sendTodoLog.setMsgType("0"); - sendTodoLog.setTodoId(object.getId()); - sendTodoLog.setUserId(object.getUserId()); -// sendTodoLog.set + sendTodoSave(object, sdf, "3"); } + } + private void restSendTodo(BusProcessNew object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew) 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())); + sendTodoLogMapper.updateById(sendTodoLog); + convertMq.sendTodoMq(object); + logger.info("已重新加入延迟队列"); + } + private void sendTodoSave(BusProcessNew object, SimpleDateFormat sdf, String s) { + 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.setCreateTime(sdf.format(new Date())); + sendTodoLog.setUpdateTime(sdf.format(new Date())); + sendTodoLogMapper.insert(sendTodoLog); + convertMq.sendTodoMq(object); + logger.info("已重新加入延迟队列"); } } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/entity/SendTodoLog.java b/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/entity/SendTodoLog.java index 89a62f57..83ec9622 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/entity/SendTodoLog.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/entity/SendTodoLog.java @@ -1,5 +1,6 @@ package com.ydw.bat.wkflow.business_oa.sendTodoLog.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; @@ -30,7 +31,7 @@ public class SendTodoLog implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "主键") - @TableId("ID") + @TableId(value = "ID", type = IdType.UUID) private String id; @ApiModelProperty(value = "类型 0 待办, 1已办, 2 取消, 3 删除") diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/mapper/SendTodoLogMapper.java b/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/mapper/SendTodoLogMapper.java index 6629bea1..e72f815b 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/mapper/SendTodoLogMapper.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/mapper/SendTodoLogMapper.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.business_oa.sendTodoLog.mapper; import com.ydw.bat.wkflow.business_oa.sendTodoLog.entity.SendTodoLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; /** *

@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; * @author super_liu * @since 2021-09-17 */ +@Repository public interface SendTodoLogMapper extends BaseMapper { } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/service/impl/SendTodoLogServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/service/impl/SendTodoLogServiceImpl.java index 94a939aa..f37385f4 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/service/impl/SendTodoLogServiceImpl.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/sendTodoLog/service/impl/SendTodoLogServiceImpl.java @@ -4,6 +4,7 @@ import com.ydw.bat.wkflow.business_oa.sendTodoLog.entity.SendTodoLog; import com.ydw.bat.wkflow.business_oa.sendTodoLog.mapper.SendTodoLogMapper; import com.ydw.bat.wkflow.business_oa.sendTodoLog.service.ISendTodoLogService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +18,7 @@ import org.springframework.stereotype.Service; @Service public class SendTodoLogServiceImpl extends ServiceImpl implements ISendTodoLogService { + @Autowired + private SendTodoLogMapper sendTodoLogMapper; + } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java index 82fdeb15..c4a5a7f4 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java @@ -63,7 +63,7 @@ public class WebServiceOAController extends BaseAction { @ApiOperation(value = "发送待办接口(") @PostMapping("/sendTodo") - public NotifyTodoAppResult sendTodo(){ + public NotifyTodoAppResult sendTodo() throws Exception{ return webServiceOAService.sendTodo(new BusProcessNew()); } } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java index 6972e3a3..2c2bc19b 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java @@ -6,8 +6,8 @@ import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult; public interface WebServiceOAService { - NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew); + NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew) throws Exception; - NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext); + NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext) throws Exception; } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java index 31dadf34..a5966656 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java @@ -69,106 +69,108 @@ public class WebServiceOAServiceImpl implements WebServiceOAService { @Override @Async - public NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext){ + public NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext) throws Exception{ NotifyTodoAppResult notifyTodoAppResult = new NotifyTodoAppResult(); String result = ""; SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); - try { - 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 list = new ArrayList<>(); - list.add(notifyTodoSendContext); - jsonSend.setHEAD(head); - jsonSend.setLIST(list); - net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(jsonSend); - Map 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())+"】"); - notifyTodoAppResult = (NotifyTodoAppResult) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(result), NotifyTodoAppResult.class); -// JSONObject jsonObject = JSONObject.parseObject(result); - if(!result.contains("操作成功")){ - log.error("请求发送已办接口出现异常:"+result); - }else { - log.info("--------------------------成功发送 ESP 已办 模块ID"+notifyTodoSendContext.getModelId()+"----------------------------"); - log.info("okHttp请求发送已办接口成功结果:"+result); - } - } catch (Exception e) { - log.error(errMes, e.getMessage()); + 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 list = new ArrayList<>(); + list.add(notifyTodoSendContext); + jsonSend.setHEAD(head); + jsonSend.setLIST(list); + net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(jsonSend); + Map 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())+"】"); + notifyTodoAppResult = (NotifyTodoAppResult) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(result), NotifyTodoAppResult.class); +// JSONObject jsonObject = JSONObject.parseObject(result); + if(!result.contains("操作成功")){ + log.error("请求发送已办接口出现异常:"+result); + }else { + log.info("--------------------------成功发送 ESP 已办 模块ID"+notifyTodoSendContext.getModelId()+"----------------------------"); + log.info("okHttp请求发送已办接口成功结果:"+result); } +// try { +// +// } catch (Exception e) { +// log.error(errMes, e.getMessage()); +// } return notifyTodoAppResult; } @Override @Async - public NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew){ + public NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew) throws Exception{ NotifyTodoAppResult notifyTodoAppResult = new NotifyTodoAppResult(); String result = ""; SimpleDateFormat sdf=new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); - try { - 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 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"); + 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 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 map = new HashMap<>(); - ResponseMessage 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 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())+"】"); - notifyTodoAppResult = (NotifyTodoAppResult) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(result), NotifyTodoAppResult.class); + Map map = new HashMap<>(); + ResponseMessage 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 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())+"】"); + notifyTodoAppResult = (NotifyTodoAppResult) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(result), NotifyTodoAppResult.class); // JSONObject jsonObject = JSONObject.parseObject(result); - if(!result.contains("操作成功")){ - log.error("请求发送待办接口出现异常:"+result); - }else { - log.info("okHttp请求发送待办接口成功结果:"+result); - } - - } catch (Exception e) { - log.error(errMes, e.getMessage()); + if(!result.contains("操作成功")){ + log.error("请求发送待办接口出现异常:"+result); + }else { + log.info("okHttp请求发送待办接口成功结果:"+result); } +// try { +// +// +// } catch (Exception e) { +// log.error(errMes, e.getMessage()); +// } return notifyTodoAppResult; } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/NotifyTodoSendContext.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/NotifyTodoSendContext.java index f14d435e..25005d4e 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/NotifyTodoSendContext.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/NotifyTodoSendContext.java @@ -69,4 +69,7 @@ public class NotifyTodoSendContext { @ApiModelProperty(value = "操作类型") private String optType; + @ApiModelProperty(value = "用户ID") + private String userId; + } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoResult/NotifyTodoAppResult.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoResult/NotifyTodoAppResult.java index 4f74362e..d1f46618 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoResult/NotifyTodoAppResult.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoResult/NotifyTodoAppResult.java @@ -11,12 +11,16 @@ import lombok.Data; @Data public class NotifyTodoAppResult { - @ApiModelProperty(value = "返回状态 0:表示未操作 1:表示操作失败 2:表示操作成功") +// @ApiModelProperty(value = "返回状态 0:表示未操作 1:表示操作失败 2:表示操作成功") + @ApiModelProperty(value = "返回状态 0:表示操作成功 1:表示操作失败") private String SIGN; +// @ApiModelProperty(value = "返回信息 " + +// "返回状态值为0时,该值返回空 " + +// "返回状态值为1时,该值错误信息 " + +// "返回状态值为2时,该值返回空") @ApiModelProperty(value = "返回信息 " + - "返回状态值为0时,该值返回空 " + - "返回状态值为1时,该值错误信息 " + - "返回状态值为2时,该值返回空") + "返回状态值为0时,表示操作成功 " + + "返回状态值为1时,该值错误信息 ") private String MASSAGE; } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ApplyApplicantBefore.java b/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ApplyApplicantBefore.java index f7c0932b..5aeb8006 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ApplyApplicantBefore.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ApplyApplicantBefore.java @@ -6,6 +6,7 @@ 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; @@ -20,7 +21,7 @@ public class ApplyApplicantBefore implements TaskListener{ @Override public void notify(DelegateTask delegateTask) { IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class); - WebServiceOAService oaService = SpringContextUtil.getBean(WebServiceOAService.class); + CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class); QueryWrapper queryWrapper1 = new QueryWrapper(); queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId()); @@ -34,7 +35,7 @@ public class ApplyApplicantBefore implements TaskListener{ // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 one1.setLink("bzrkStep4?prcType=1"); - oaService.sendTodo(one1); + oaService.sendTodoMq(one1); } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ManagerApproveBefore.java b/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ManagerApproveBefore.java index 2ca5a3a7..136a93ea 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ManagerApproveBefore.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/standardLibrary/ManagerApproveBefore.java @@ -6,6 +6,7 @@ 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; @@ -22,7 +23,7 @@ public class ManagerApproveBefore implements TaskListener{ @Override public void notify(DelegateTask delegateTask) { IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class); - WebServiceOAService oaService = SpringContextUtil.getBean(WebServiceOAService.class); + CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class); QueryWrapper queryWrapper1 = new QueryWrapper(); queryWrapper1.eq("P_ID",delegateTask.getProcessInstanceId()); @@ -36,7 +37,7 @@ public class ManagerApproveBefore implements TaskListener{ busBean.saveOrUpdate(one1); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 one1.setLink("bzrkStep2?prcType=1"); - oaService.sendTodo(one1); + oaService.sendTodoMq(one1); } } }