Explorar el Código

河南郸城调度计划列表 定时任务计划逻辑修改

1037015548@qq.com hace 11 meses
padre
commit
0f30a0e9b3

+ 34 - 27
src/main/java/com/shkpr/service/aimodelpower/bizmgr/WODispatchPlanTmDoBizFun.java

@@ -86,13 +86,13 @@ public class WODispatchPlanTmDoBizFun {
             andWheres.put("plan_id", planId);
             List<DispatchCmdBatchItemModel> itemModels = getItemDBService()
                     .listAllWithsExByDispoal("", "", andWheres, new HashMap<>(), "handle_start_time", "");
-            if(model.getNextTakeTime()!=null&&model.getNextTakeTime()>0L
-                    &&model.getPlanStatus()==1
-                    &&(checkTm <=nowLoc&&isWithinFiveMinutes(checkTm,nowLoc))
+            if(checkTm == model.getNextTakeTime()
                     &&!CollectionUtils.isEmpty(itemModels)){
                 //TODO 满足以上条件就派发调用远程接口生成指令工单
+                JSONArray jsonArray = new JSONArray();
+
                 for (DispatchCmdBatchItemModel item:itemModels) {
-                    Map<String, Object> planCommandParam = new HashMap<>();
+                    JSONObject planCommandParam = new JSONObject();
                     planCommandParam.put("type", 1);
                     planCommandParam.put("title", model.getTitle());
                     planCommandParam.put("zoneId", model.getZoneId());
@@ -118,10 +118,11 @@ public class WODispatchPlanTmDoBizFun {
                     }
                     planCommandParam.put("sugBeginTime",sugBeginTime);
                     String endTimeStr = item.getHandleEndTime();
-                    planCommandParam.put("sugEndTime", LocalDateTime.now()
+                    planCommandParam.put("sugEndTime", TimeTool.convertDateStr2UTC(LocalDateTime.now()
                             .withHour(Integer.valueOf(endTimeStr.split(":")[0]))
                             .withMinute(Integer.valueOf(endTimeStr.split(":")[1]))
-                            .withSecond(Integer.valueOf(endTimeStr.split(":")[2])));
+                            .withSecond(Integer.valueOf(endTimeStr.split(":")[2]))
+                            .format(DateTimeFormatter.ofPattern(TimeTool.TIMESTAMP_FORMAT))));
                     List<Map<String,Object>> suggestions = new ArrayList<>();
                     if(!CollectionUtils.isEmpty(item.getDispoalModels())){
                         for(DispatchCmdBatchDispoalModel dispoalModel:item.getDispoalModels()) {
@@ -134,27 +135,35 @@ public class WODispatchPlanTmDoBizFun {
                             suggestions.add(sug);
                         }
                     }
-                    planCommandParam.put("suggestions",FastJsonUtil.toJSON(suggestions));
+                    planCommandParam.put("suggestions",suggestions);
                     planCommandParam.put("fromSource",planId);
                     planCommandParam.put("level",model.getUrgentLevel());
                     planCommandParam.put("sendway",model.getSendway());
                     planCommandParam.put("remark",model.getDispatchRemark());
                     planCommandParam.put("gis",item.getGis());
                     planCommandParam.put("address",item.getHandleAddress());
-
-                    //TODO 调用数据接口
+                    jsonArray.add(planCommandParam);
+                }
+                //TODO 调用数据接口
+                if(jsonArray.size()>0) {
                     try {
-                        ResponseRes res = ServiceMgrProxy.getInstance().applyTaskServiceApi().postPlanCommand(planCommandParam);
-                        if(ResponseCode.RESULT_NORMAL.equals(res.getRescode())){
+                        JSONObject jsonParam = new JSONObject();
+                        jsonParam.put("total",jsonArray.size());
+                        jsonParam.put("data",jsonArray);
+                        ResponseRes res = ServiceMgrProxy.getInstance().applyTaskServiceApi().postPlanCommand(jsonParam);
+                        JSONObject resDataObj = JSONObject.parseObject(res.getResdata().toString());
+                        if (ResponseCode.RESULT_NORMAL.equals(res.getRescode())
+                                &&resDataObj.getJSONArray("data").size()>0
+                                &&"0".equals(resDataObj.getJSONArray("data").getJSONObject(0).getString("code"))) {
                             //TODO 再计算下一次的时间,并且更新至调度计划的数据库
-                            Map<String,Object> upPlanUpWhere = new HashMap<>();//修改计划的条件
-                            upPlanUpWhere.put("plan_id",model.getPlanId());
-                            Map<String,Object> upPlan = new HashMap<>();//要修改的计划
+                            Map<String, Object> upPlanUpWhere = new HashMap<>();//修改计划的条件
+                            upPlanUpWhere.put("plan_id", model.getPlanId());
+                            Map<String, Object> upPlan = new HashMap<>();//要修改的计划
                             DispatchPlanInfoNextTimeModel nextTimeModel = new DispatchPlanInfoNextTimeModel();
                             List<DispatchCmdBatchItemNextTimeModel> itemModelNextTimes = new ArrayList<>();
-                            if(!CollectionUtils.isEmpty(itemModels)){
-                                for(DispatchCmdBatchItemModel jpItem:itemModels){
-                                    DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel =new DispatchCmdBatchItemNextTimeModel();
+                            if (!CollectionUtils.isEmpty(itemModels)) {
+                                for (DispatchCmdBatchItemModel jpItem : itemModels) {
+                                    DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel = new DispatchCmdBatchItemNextTimeModel();
                                     dispatchCmdBatchItemNextTimeModel.setHandleStartTime(jpItem.getHandleStartTime());
                                     itemModelNextTimes.add(dispatchCmdBatchItemNextTimeModel);
                                 }
@@ -163,19 +172,19 @@ public class WODispatchPlanTmDoBizFun {
                             nextTimeModel.setPlanType(model.getPlanType());
                             nextTimeModel.setDispatchLeadTime(model.getDispatchLeadTime());
                             nextTimeModel.setCycles(model.getCycles());
-                            if(model.getPlanType()==0){
-                                upPlan.put("next_take_time",0L);
-                            }else {
+                            if (model.getPlanType() == 0) {
+                                upPlan.put("next_take_time", 0L);
+                            } else {
                                 upPlan.put("next_take_time", returnNextTakeTime(nextTimeModel));
-                                upPlan.put("last_take_time", model.getNextTakeTime());
                             }
+                            upPlan.put("last_take_time",resDataObj.getJSONArray("data").getJSONObject(0).getLong("okTime"));
                             getThisDBService().updateWiths(upPlan, upPlanUpWhere);
 
                             code = ResponseCode.RESULT_NORMAL;
                         }
-                    }catch(Exception ex){
+                    } catch (Exception ex) {
                         LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mStrClassName, mStrClassName
-                                ,String.format("check planInfo errorMsg:%s end<====",
+                                , String.format("check planInfo errorMsg:%s end<====",
                                         ex.getLocalizedMessage()));
                     }
                 }
@@ -268,11 +277,9 @@ public class WODispatchPlanTmDoBizFun {
         String sql = "";
         if(jsonParam.getDownFlag()!=null) {
             if(jsonParam.getDownFlag()==0) {
-                sql += " AND " + WODispatchPlanInfoTable.R_INFO.LAST_TAKE_TIME + " !=0 AND "
-                        + WODispatchPlanInfoTable.R_INFO.LAST_TAKE_TIME + " IS NOT NULL";
+                sql += " AND " + WODispatchPlanInfoTable.R_INFO.LAST_TAKE_TIME + " = 0 ";
             }else{
-                sql += " AND (" + WODispatchPlanInfoTable.R_INFO.LAST_TAKE_TIME + " = 0 OR "
-                        + WODispatchPlanInfoTable.R_INFO.LAST_TAKE_TIME + " IS NULL )";
+                sql += " AND " + WODispatchPlanInfoTable.R_INFO.LAST_TAKE_TIME + " > 0 ";
             }
         }
         int nTotals = getThisDBService().totalCountsEx("", andWheres, null, lilterExtend+sql);

+ 1 - 1
src/main/java/com/shkpr/service/aimodelpower/dbdao/services/WODispatchCmdBatchItemDBServiceImpl.java

@@ -64,7 +64,7 @@ public class WODispatchCmdBatchItemDBServiceImpl implements WODispatchCmdBatchIt
                     //查询相关联的处置建议
                     Map<String,Object> queryMap = new HashMap<>();
                     queryMap.put(R_INFO.PRIMARY_KEY,arrRes.get(i).get(R_INFO.PRIMARY_KEY));
-                    List<Map<String,Object>> disposalMapList = woDispatchCmdPatchDisposalMapper.batchQueryWiths("","",queryMap,new HashMap<>(),"","");
+                    List<Map<String,Object>> disposalMapList = woDispatchCmdPatchDisposalMapper.batchQueryWiths("","",queryMap,new HashMap<>(),"ordering,create_time","");
                     List<DispatchCmdBatchDispoalModel> dispoalModels = new ArrayList<>();
                     if(!CollectionUtils.isEmpty(disposalMapList)){
                         dispoalModels = FastJsonUtil.batchMap2Obj(disposalMapList,DispatchCmdBatchDispoalModel.class,true);

+ 20 - 18
src/main/java/com/shkpr/service/aimodelpower/dbdao/services/WODispatchPlanDBServiceImpl.java

@@ -257,7 +257,7 @@ public class WODispatchPlanDBServiceImpl implements WODispatchPlanDBService,WODi
         //TODO 修改计划
         Map<String,Object> andWhereUp = new HashMap<>();
         andWhereUp.put(R_INFO.PRIMARY_KEY,model.getPlanId());
-        Map<String,Object> upMap = FastJsonUtil.objPositiveData2Map(model, true);
+        Map<String,Object> upMap = FastJsonUtil.obj2Map(model, true);
         upMap.put("update_time",TimeTool.getCurMsUTC());
         upMap.put("next_take_time",nextTakeTime);
         upMap.remove(R_INFO.PRIMARY_KEY);
@@ -268,25 +268,27 @@ public class WODispatchPlanDBServiceImpl implements WODispatchPlanDBService,WODi
         woDispatchPlanMapper.updateWiths(upMap,andWhereUp,new HashMap<>(),"");
 
         //TODO 删除所有规则, 作全量更新
-        Map<String, Object> andWherePlanTags = new HashMap<>();
-        andWherePlanTags.put("plan_id", model.getPlanId());
-        woDispatchPlanTagsMapper.deleteWiths(andWherePlanTags, new HashMap<>(), "");
-        Map<String, Object> andWhereRuls = new HashMap<>();
-        andWhereRuls.put("plan_id", model.getPlanId());
-        //TODO 删除排班
-        Map<String,Object> andWheresItems = new HashMap<>();
-        andWheresItems.put("plan_id",model.getPlanId());
-        List<DispatchCmdBatchItemModel> woMap = woDispatchCmdBatchItemDBService.listAllWithsExByDispoal("","",andWheresItems,new HashMap<>(),"handle_start_time","");
-        if(!CollectionUtils.isEmpty(woMap)){
-            for (DispatchCmdBatchItemModel item:woMap){
-                woDispatchCmdPatchItemMapper.deleteWiths(andWheresItems,new HashMap<>(),"");
-                //删除对应的处置建议
-                Map<String,Object> andWheresItemDisposals = new HashMap<>();
-                andWheresItemDisposals.put("batch_item_id",item.getBatchItemId());
-                woDispatchCmdPatchDisposalMapper.deleteWiths(andWheresItemDisposals,new HashMap<>(),"");
+        if(model.getChufaRulsFlag()!=-1) {
+            Map<String, Object> andWherePlanTags = new HashMap<>();
+            andWherePlanTags.put("plan_id", model.getPlanId());
+            woDispatchPlanTagsMapper.deleteWiths(andWherePlanTags, new HashMap<>(), "");
+            Map<String, Object> andWhereRuls = new HashMap<>();
+            andWhereRuls.put("plan_id", model.getPlanId());
+            //TODO 删除排班
+            Map<String, Object> andWheresItems = new HashMap<>();
+            andWheresItems.put("plan_id", model.getPlanId());
+            List<DispatchCmdBatchItemModel> woMap = woDispatchCmdBatchItemDBService.listAllWithsExByDispoal("", "", andWheresItems, new HashMap<>(), "create_time", "");
+            if (!CollectionUtils.isEmpty(woMap)) {
+                for (DispatchCmdBatchItemModel item : woMap) {
+                    woDispatchCmdPatchItemMapper.deleteWiths(andWheresItems, new HashMap<>(), "");
+                    //删除对应的处置建议
+                    Map<String, Object> andWheresItemDisposals = new HashMap<>();
+                    andWheresItemDisposals.put("batch_item_id", item.getBatchItemId());
+                    woDispatchCmdPatchDisposalMapper.deleteWiths(andWheresItemDisposals, new HashMap<>(), "");
+                }
             }
+            woDispatchPlanRulsMapper.deleteWiths(andWhereRuls, new HashMap<>(), "");
         }
-        woDispatchPlanRulsMapper.deleteWiths(andWhereRuls, new HashMap<>(), "");
         if(model.getChufaRulsFlag()==1) {
             for (JPDispatchPlanInfoRuleSave jp : rulesList) {
                 //先判断是否修改

+ 5 - 2
src/main/java/com/shkpr/service/aimodelpower/services/CloudTaskService.java

@@ -1,10 +1,13 @@
 package com.shkpr.service.aimodelpower.services;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
 import com.global.base.tools.EncryptionUtil;
 import com.global.base.tools.FastJsonUtil;
 import com.global.base.tools.RandomUtil;
+import com.google.gson.JsonArray;
 import com.shkpr.service.aimodelpower.constants.ApiURI;
 import com.shkpr.service.aimodelpower.constants.LogFlagBusiType;
 import com.shkpr.service.aimodelpower.dto.MsgNotifyBean;
@@ -86,7 +89,7 @@ public class CloudTaskService {
     }
 
     @Retryable(value = {RemoteAccessException.class}, maxAttempts = 3, backoff = @Backoff(delay = 200L, multiplier = 1))
-    public ResponseRes<String> postPlanCommand(final Map<String,Object> jsonParam) throws Exception{
+    public ResponseRes<String> postPlanCommand(final JSONObject jsonObject) throws Exception{
         ResponseRes<String> resResult = new ResponseRes<String>();
         resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
         resResult.setResmsg(MSG_FAILED);
@@ -97,7 +100,7 @@ public class CloudTaskService {
         headers.add(ApiURI.HEADER_CLIENT_TYPE, GlobalData.getInstance().getServerId());
         headers.add(ApiURI.HEADER_AUTH_VERIFY, mStrTaskCallPassword);
 
-        String body = FastJsonUtil.toJSON(jsonParam);
+        String body = jsonObject.toJSONString();
         HttpEntity<String> request = new HttpEntity<>(body, headers);
         try {
             ResponseEntity<String> response = restTemplate.postForEntity(mPlanCommandPath, request, String.class);