欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring定時任務(wù)輪詢本地數(shù)據(jù)庫實現(xiàn)過程解析

 更新時間:2020年01月10日 10:00:10   作者:不會打打八萬  
這篇文章主要介紹了Spring定時任務(wù)輪詢本地數(shù)據(jù)庫實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了Spring定時任務(wù)輪詢本地數(shù)據(jù)庫實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

要做的東西很莫名其妙 可以說是數(shù)據(jù)互通的一個接口吧 當(dāng)本地有表單提交后 處理一下數(shù)據(jù) 發(fā)送給另一個公司的接口

在表單提交的存庫的controller里 直接處理數(shù)據(jù) 封裝 并發(fā)送就完事了 .

然而領(lǐng)導(dǎo)叫我寫一個接口...接收數(shù)據(jù) 處理 并發(fā)送. 到最后又改成用觸發(fā)器的方式 然而寫觸發(fā)器的并不會用它發(fā)送http請求 我只能用Spring的定時任務(wù) 讀取數(shù)據(jù)庫的更新狀態(tài) 并且處理數(shù)據(jù) 發(fā)送到那個公司的接口里

這是httpclient的示例

復(fù)制代碼
1 public class HttpClinet {
2
3 public static String doPost(Object object ) {
4
5 String responseJson = null;
6 //獲得http客戶端
7 CloseableHttpClient httpClient = HttpClientBuilder.create().build();
8 //創(chuàng)建post請求
9 //處理參數(shù)
10 String uri = null;
11 try{
12 uri ="http://10.145.1.12:80/promo/api/approval/todoItem?sourceID=XZBZ&secretKey=OHzwIVM6";
13
14
15 }catch (Exception e){
16 e.printStackTrace();
17 }
18
19 HttpPost httpPost = new HttpPost(uri);
20
21
22 //將對象轉(zhuǎn)換成json字符串 然后存入entity中 請求body
23 System.out.println(JSON.toJSONString(object));
24 StringEntity entity = new StringEntity(JSON.toJSONString(object),"UTF-8");
25
26 //將json字符串放入請求body中
27 httpPost.setEntity(entity);
28
29 //設(shè)置請求頭
30 httpPost.setHeader("Content-Type","application/json;charset=utf-8");
31
32 //獲取response模型
33
34 CloseableHttpResponse response = null;
35 try {
36 //發(fā)送post請求后 由response模型接收
37 response = httpClient.execute(httpPost);
38 //從響應(yīng)模型中獲取body
39 HttpEntity responseEntity = response.getEntity();
40
41
42 responseJson = EntityUtils.toString(responseEntity);
43
44 if(responseEntity != null){
45 System.out.println("相應(yīng)內(nèi)容為:" + responseJson);
46 }
47 }catch (Exception e){
48 e.printStackTrace();
49 }finally {
50 try {
51 if (httpClient != null){
52 httpClient.close();
53 }if (response != null){
54 response.close();
55 }
56 }catch (Exception e){
57 e.printStackTrace();
58 }
59 }
60 return responseJson;
61
62 }
63 }
復(fù)制代碼

這是定時任務(wù)(非quartz)

復(fù)制代碼
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd">

<!-- mybatis配置 -->
<import resource="classpath:applicationContext-mybatis.xml"/>
<task:annotation-driven />
<context:component-scan base-package="com.litsoft.workflowApi.task"/>
復(fù)制代碼

任務(wù)的具體方法

@Component
public class SendDataTask {
  
  
  
  @Autowired
  WorkFlowService workFlowServiceImpl;

  
  //首次推送待審
  @Scheduled(cron = "0 */1 * * * ?") // 間隔一分鐘執(zhí)行
  public void taskCycle() throws UnsupportedEncodingException {
    
    

    
    

    //第一次推送任務(wù)(產(chǎn)生任務(wù)),產(chǎn)生新任務(wù)則產(chǎn)生審批人,還需要取消掉沒有認(rèn)領(lǐng)任務(wù)的審批人的消息
    List<ToDoTaskModel> list = workFlowServiceImpl.getToDoTaskInfoBySendStatus("0","100");
    ToDoTaskModel toDoTaskModel = new ToDoTaskModel();
    for (int i = 0; i < list.size(); i++) {
      toDoTaskModel = list.get(i);
      //自拼title
      //根據(jù)workflowID 判斷拼接url
      String taskID = toDoTaskModel.getTaskID();
      String realTaskID = ChangeTaskIDUitl.changeTaskIDUitl(taskID);
      String workflowID = toDoTaskModel.getWorkflowID();
      String docID = toDoTaskModel.getDocID();
      String title = "您有一條新的待審任務(wù)" + toDoTaskModel.getTodoTitle() +"等待審批";
      String taskStatus = "1";
      String submitorID = toDoTaskModel.getSubmitorID();
      String loginName = workFlowServiceImpl.getLoginName(submitorID);
      String submitorName = toDoTaskModel.getSubmitorName();
      String submitDateTime = toDoTaskModel.getSubmitDateTime();
      String openUrl = null;
      String beforeUrl = "http://oa20.cctv.com/";
      String afterUrl = "/myWork/workWait/gwWeChatWait.do?instanceId=";      
      //5合同
      if(workflowID.equals("5")){
        openUrl = beforeUrl + "HT_WeChat" + afterUrl +docID +"&workflowId="+workflowID;
      }else{
        openUrl = beforeUrl + "GW_WeChat" + afterUrl +docID +"&workflowId="+workflowID;
      }    
      String sendStatus = toDoTaskModel.getSendStatus();
      
      //查詢審批人的真實ID
      //根據(jù)docid 和taskstatus =40 來查審批者的submitorID 然后根據(jù)這個來查真實工號
      
      //獲取數(shù)據(jù)庫查詢的 當(dāng)前審批層級信息
      List<ThisLevelInfoModel> tlist = toDoTaskModel.getThisLevelInfoList();
      //new一個移動端要的格式的模型
      List<ApproverPOJO> approverList = new ArrayList<ApproverPOJO>();
      ApproverPOJO approverPOJO = new ApproverPOJO();
      for (int j = 0; j < tlist.size(); j++) {

        String realApproverID = workFlowServiceImpl.getLoginName(tlist.get(j).getApproverID());
        approverPOJO.setDocID(tlist.get(j).getDocID());
        approverPOJO.setApproverName(tlist.get(j).getApproverName());
        approverPOJO.setApproverID(realApproverID);
        approverList.add(approverPOJO);
      }
      //ToDoTaskPOJO里的最高層對象(list(模型))
      ThisLevelInfoPOJO thisLevelInfoPOJO = new ThisLevelInfoPOJO();
      thisLevelInfoPOJO.setApproverList(approverList);
      
      ToDoTaskPOJO toDoTaskPOJO = new ToDoTaskPOJO(realTaskID,workflowID,docID,title,taskStatus,
          loginName,submitorName,submitDateTime,openUrl,sendStatus,thisLevelInfoPOJO);
      
      JSONObject jsonObject= JSONObject.fromObject(toDoTaskPOJO);
    
      String jsonStr = HttpClinet.doPost(jsonObject);
      JSONObject jsonCode = JSONObject.fromObject(jsonStr);
      
      
      if("0".equals(jsonCode.get("errCode"))) {
        //這要加判斷? 是否是終審人? 條件:提交人工號=審核人工號時 該審批層級未最終審批????        
        //或者終審層級 有沒有審核人 如果沒有 移動端返回錯誤碼 
        if (workFlowServiceImpl.isFirstSend() == 1) {
          workFlowServiceImpl.updateSendStatus("2", taskID);
        }else{
        workFlowServiceImpl.updateSendStatus("1", taskID);}
      }else if("當(dāng)前層級待審人不能為空".equals(jsonCode.get("errDesc"))){
        workFlowServiceImpl.updateSendStatus("1", taskID);
      }
      
  /*_____________________________________________________________________________________*/    
      
      //查詢舊表該docID下的所有taskID 并將(taskID和docID)插入新表
      //先查詢docID下所有的taskID
      List<String> taskIDList = new ArrayList<String>();
        taskIDList = workFlowServiceImpl.selectAllByDocID(docID);
      for (int j = 0; j < taskIDList.size(); j++) {
        //想新表插入所有taskID和docID
        workFlowServiceImpl.creatAllInfo(taskIDList.get(j), docID);  
      }
      
      TaskStatusPOJO taskStatusPOJO = new TaskStatusPOJO();
      
      //查詢新表和舊表 對比 舊表不存在二新表存在的taskID 通過第二個url推送給WeChat端,刪掉消息
      List<String> invalidList = new ArrayList<String>();
      invalidList = workFlowServiceImpl.SelectInvalidApprover();
      String invalidTaskID = null;
      for (int j = 0; j < invalidList.size(); j++) {
        invalidTaskID = ChangeTaskIDUitl.changeTaskIDUitl(invalidList.get(j));
        taskStatusPOJO.setTaskID(invalidTaskID);
        taskStatusPOJO.setTaskStatus("2");
        JSONObject jsonObj= JSONObject.fromObject(taskStatusPOJO);
        HttpSecondSend.doPost(jsonObj);
      }

      
    }
    
    //第二個接口 告訴當(dāng)前待辦人審批完結(jié)

    List<TaskStatusPOJO> secondList = workFlowServiceImpl.getNewStatus("1","100");
    TaskStatusPOJO taskStatusPOJO = new TaskStatusPOJO();
    for (int i = 0; i < secondList.size(); i++) {
      String dID = secondList.get(i).getTaskID();
      String docID = secondList.get(i).getOnlyDocID();
      String realTaskID =ChangeTaskIDUitl.changeTaskIDUitl(workFlowServiceImpl.getTrueTaskID(docID));        
        taskStatusPOJO.setTaskID(realTaskID);
        taskStatusPOJO.setTaskStatus("2");
        JSONObject jsonObject= JSONObject.fromObject(taskStatusPOJO);
        String Str = HttpSecondSend.doPost(jsonObject);
        JSONObject json = JSONObject.fromObject(Str);
        if ("0".equals(json.get("errCode"))) {
          workFlowServiceImpl.updateSendStatus("2", dID);      
      }        
    }    
  }
}

其實這個東西很簡單 只是需求變?nèi)?從提交表單給我發(fā)數(shù)據(jù) 到用觸發(fā)器給我發(fā)http請求(json串 自己處理數(shù)據(jù)) 再到最后 我只能去數(shù)據(jù)庫自己查 自己處理數(shù)據(jù) 自己發(fā)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于spring項目中無法加載resources下文件問題及解決方法

    關(guān)于spring項目中無法加載resources下文件問題及解決方法

    在學(xué)習(xí)Spring過程中,TestContext框架試圖檢測一個默認(rèn)的XML資源位置,再resources下創(chuàng)建了一個com.example的文件夾,執(zhí)行時,報錯,本文給大家介紹spring項目中無法加載resources下文件,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 基于request.getAttribute與request.getParameter的區(qū)別詳解

    基于request.getAttribute與request.getParameter的區(qū)別詳解

    本篇文章小編為大家介紹,基于request.getAttribute與request.getParameter的區(qū)別詳解。需要的朋友參考下
    2013-04-04
  • Java同步鎖Synchronized底層源碼和原理剖析(推薦)

    Java同步鎖Synchronized底層源碼和原理剖析(推薦)

    這篇文章主要介紹了Java同步鎖Synchronized底層源碼和原理剖析,釋放后,進入減減操作、直到為0然后喚醒隊列,讓他們?nèi)帄Z鎖,循環(huán)前面步驟,對Java同步鎖Synchronized相關(guān)知識感興趣的朋友一起看看吧
    2022-05-05
  • 淺談Java源碼ConcurrentHashMap

    淺談Java源碼ConcurrentHashMap

    最近剛?cè)腴Tjava,覺得看源碼挺有意思的,就記錄一下一些常用類的源碼吧,從而能夠總結(jié)一些使用細(xì)節(jié).本文對源碼ConcurrentHashMap介紹的非常詳細(xì),對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java中Stream流中map和forEach的區(qū)別詳解

    Java中Stream流中map和forEach的區(qū)別詳解

    本文主要介紹了Java中Stream流中map和forEach的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java全能工具類之Hutool的用法詳解

    Java全能工具類之Hutool的用法詳解

    Hutool是一個Java工具類庫,由國內(nèi)的程序員loolly開發(fā),目的是提供一些方便、快捷、實用的工具類和工具方法,本文就來詳細(xì)聊聊它的使用吧
    2023-03-03
  • SpringBoot實現(xiàn)埋點監(jiān)控

    SpringBoot實現(xiàn)埋點監(jiān)控

    本文主要介紹了SpringBoot實現(xiàn)埋點監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • IDEA實現(xiàn)添加 前進后退 到工具欄的操作

    IDEA實現(xiàn)添加 前進后退 到工具欄的操作

    這篇文章主要介紹了IDEA 前進 后退 添加到工具欄的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 詳解SpringBoot啟動類的掃描注解的用法及沖突原則

    詳解SpringBoot啟動類的掃描注解的用法及沖突原則

    這篇文章主要介紹了詳解SpringBoot啟動類的掃描注解的用法及沖突原則,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Spring Boot實戰(zhàn)之靜態(tài)資源處理

    Spring Boot實戰(zhàn)之靜態(tài)資源處理

    這篇文章主要介紹了Spring Boot實戰(zhàn)之靜態(tài)資源處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論