瀏覽代碼

河南郸城调度计划 计算下次生效时间公用方法参数优化、更改处置建议传入key的逻辑

1037015548@qq.com 11 月之前
父節點
當前提交
bd82f934bd

+ 46 - 8
src/main/java/com/shkpr/service/aimodelpower/bizmgr/WODispatchPlanTmDoBizFun.java

@@ -261,8 +261,8 @@ public class WODispatchPlanTmDoBizFun {
     public static Long returnNextTakeTime(DispatchPlanInfoNextTimeModel model){
         Long nextTakeTime = 0L;
         if(!CollectionUtils.isEmpty(model.getItemsList())){
-            List<JPDispatchCmdBatchItem> newList = model.getItemsList().stream()
-                    .sorted(Comparator.comparing(JPDispatchCmdBatchItem::getHandleStartTime))
+            List<DispatchCmdBatchItemNextTimeModel> newList = model.getItemsList().stream()
+                    .sorted(Comparator.comparing(DispatchCmdBatchItemNextTimeModel::getHandleStartTime))
                     .collect(Collectors.toList());
             if(model.getPlanType()==0) {
                 //TODO 临时计划
@@ -287,7 +287,7 @@ public class WODispatchPlanTmDoBizFun {
             }else if(model.getPlanType()==1){
                 //TODO 日计划
                 boolean isToDay = false;//生效时间是否小于等于当前时刻
-                for (JPDispatchCmdBatchItem item:newList){
+                for (DispatchCmdBatchItemNextTimeModel item:newList){
                     Instant nowTime = Instant.ofEpochMilli(
                             TimeTool.convertDateStr2UTC
                                     (JSONArray.parseArray(model.getCycles()).getString(0)
@@ -332,7 +332,7 @@ public class WODispatchPlanTmDoBizFun {
                 List<String> dateTimeStrings = new ArrayList<>();
                 for (Object obj:newJSONArray){
                     LocalDateTime nowDate = LocalDateTime.now().with(DayOfWeek.of(Integer.valueOf(obj.toString())));
-                    for (JPDispatchCmdBatchItem item : newList){
+                    for (DispatchCmdBatchItemNextTimeModel item : newList){
                         String[] times = item.getHandleStartTime().split(":");
                         dateTimeStrings.add(nowDate.withHour(Integer.valueOf(times[0]))
                                 .withMinute(Integer.valueOf(times[1])).withSecond(Integer.valueOf(times[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -381,7 +381,7 @@ public class WODispatchPlanTmDoBizFun {
                 List<String> dateTimeStrings = new ArrayList<>();
                 for (Object obj:newJSONArray){
                     LocalDateTime nowDate = LocalDateTime.now().withDayOfMonth(Integer.valueOf(obj.toString()));
-                    for (JPDispatchCmdBatchItem item : newList){
+                    for (DispatchCmdBatchItemNextTimeModel item : newList){
                         String[] times = item.getHandleStartTime().split(":");
                         dateTimeStrings.add(nowDate.withHour(Integer.valueOf(times[0]))
                                 .withMinute(Integer.valueOf(times[1])).withSecond(Integer.valueOf(times[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -433,7 +433,7 @@ public class WODispatchPlanTmDoBizFun {
                     String[] monthDays = obj.toString().split("-");
                     LocalDateTime nowDate = LocalDateTime.now().withMonth(Integer.valueOf(monthDays[0]))
                             .withDayOfMonth(Integer.valueOf(monthDays[1]));
-                    for (JPDispatchCmdBatchItem item : newList){
+                    for (DispatchCmdBatchItemNextTimeModel item : newList){
                         String[] times = item.getHandleStartTime().split(":");
                         dateTimeStrings.add(nowDate.withHour(Integer.valueOf(times[0]))
                                 .withMinute(Integer.valueOf(times[1])).withSecond(Integer.valueOf(times[2])).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -495,7 +495,15 @@ public class WODispatchPlanTmDoBizFun {
 
             DispatchPlanInfoNextTimeModel nextTimeModel = new DispatchPlanInfoNextTimeModel();
             nextTimeModel.setPlanType(oJsonParam.getPlanType());
-            nextTimeModel.setItemsList(oJsonParam.getItemsList());
+            List<DispatchCmdBatchItemNextTimeModel> itemModels = new ArrayList<>();
+            if(!CollectionUtils.isEmpty(oJsonParam.getItemsList())){
+                for(JPDispatchCmdBatchItem jpItem:oJsonParam.getItemsList()){
+                    DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel =new DispatchCmdBatchItemNextTimeModel();
+                    dispatchCmdBatchItemNextTimeModel.setHandleStartTime(jpItem.getHandleStartTime());
+                    itemModels.add(dispatchCmdBatchItemNextTimeModel);
+                }
+            }
+            nextTimeModel.setItemsList(itemModels);
             nextTimeModel.setDispatchLeadTime(oJsonParam.getDispatchLeadTime());
             nextTimeModel.setCycles(oJsonParam.getCycles());
             nextTakeTime = returnNextTakeTime(nextTimeModel);
@@ -537,7 +545,16 @@ public class WODispatchPlanTmDoBizFun {
 
             DispatchPlanInfoNextTimeModel nextTimeModel = new DispatchPlanInfoNextTimeModel();
             nextTimeModel.setPlanType(oJsonParam.getPlanType());
-            nextTimeModel.setItemsList(oJsonParam.getItemsList());
+            List<DispatchCmdBatchItemNextTimeModel> itemModels = new ArrayList<>();
+            if(!CollectionUtils.isEmpty(oJsonParam.getItemsList())){
+                for(JPDispatchCmdBatchItem jpItem:oJsonParam.getItemsList()){
+                    DispatchCmdBatchItemNextTimeModel dispatchCmdBatchItemNextTimeModel =new DispatchCmdBatchItemNextTimeModel();
+                    dispatchCmdBatchItemNextTimeModel.setHandleStartTime(jpItem.getHandleStartTime());
+                    itemModels.add(dispatchCmdBatchItemNextTimeModel);
+                }
+            }
+            nextTimeModel.setPlanType(oJsonParam.getPlanType());
+            nextTimeModel.setItemsList(itemModels);
             nextTimeModel.setDispatchLeadTime(oJsonParam.getDispatchLeadTime());
             nextTimeModel.setCycles(oJsonParam.getCycles());
             nextTakeTime = returnNextTakeTime(nextTimeModel);
@@ -561,4 +578,25 @@ public class WODispatchPlanTmDoBizFun {
 
         return sdf.format(new Date(timestamp1)).equals(sdf.format(new Date(timestamp2)));
     }
+
+
+    //TODO 全量查询标签字典信息
+    public static ResponseRes selectAllTags(){
+        ResponseRes oRes = new ResponseRes();
+        oRes.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        oRes.setResmsg(ResponseCode.RESULT_BAD.toStrMsg());
+        try{
+            List<Map<String,Object>> map = getThisDBService().selectAllTags("","",new HashMap<>(),new HashMap<>()
+            ,"","");
+            if(map!=null||map.size()>0){
+                oRes.setResdata(FastJsonUtil.toJSON(map,true));
+            }
+
+            oRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+            oRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
+            return oRes;
+        }catch (Exception ex){
+            return oRes;
+        }
+    }
 }

+ 1 - 0
src/main/java/com/shkpr/service/aimodelpower/constants/ApiURI.java

@@ -124,4 +124,5 @@ public class ApiURI {
     public static final String URI_WATER_ZILAISHUI_HOUR_PUMP_OUT= "hourOutdata";
 
     public static final String URI_DISPATCH_PLAN_H = URI_CURRENCY_H+"/dispatch/plan";
+    public static final String URI_DISPATCH_TAG_DICT = "tag/dict";
 }

+ 44 - 0
src/main/java/com/shkpr/service/aimodelpower/controllerapi/woDispatchPlan/WoDispatchPlanInfoController.java

@@ -264,4 +264,48 @@ public class WoDispatchPlanInfoController {
                         ,resResult.getTimestamp()-llReqBefore));
         return resResult;
     }
+
+    @PostMapping(value = ApiURI.URI_DISPATCH_TAG_DICT)
+    public ResponseRes tagDict(HttpServletRequest request
+            , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
+            , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
+        final String URI_PATH = request.getRequestURI();
+        final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
+        final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
+        long llReqBefore = System.currentTimeMillis();
+        String strRunSeq = String.format("%d-%d", llReqBefore, mSeqSS.incrementAndGet());
+        LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBusinessType, mStrClassName, strUserId
+                ,String.format("%s:%s seq:{%s} begin====>"
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq));
+
+        ResponseRes<String> resResult = new ResponseRes<String>();
+        resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        resResult.setResmsg(MSG_FAILED);
+        resResult.setResdata("");
+
+        ResponseRes oRes = WODispatchPlanTmDoBizFun.selectAllTags();
+        if(oRes  != null ) {
+            if (ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
+                resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+                resResult.setResmsg(MSG_SUCCESS);
+                resResult.setResdata(oRes.getResdata().toString());
+            } else {
+                resResult.setRescode(oRes.getRescode());
+                resResult.setResmsg(oRes.getResmsg());
+            }
+        }
+
+        resResult.setTimestamp(System.currentTimeMillis());
+        LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBusinessType, mStrClassName, strUserId
+                ,String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq
+                        ,resResult.getRescode()
+                        ,resResult.getResmsg()
+                        ,resResult.getTimestamp()-llReqBefore));
+        return resResult;
+    }
 }

+ 1 - 0
src/main/java/com/shkpr/service/aimodelpower/controllerfilter/third/ThirdJWTCurrencyFilter.java

@@ -29,6 +29,7 @@ public class ThirdJWTCurrencyFilter extends JWTAuthenticationFilter {
         msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_XXX_SK), "POST");
         msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_XXX_NEW_INFO), "POST");
         msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_XXX_RESET), "POST");
+        msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_TAG_DICT), "POST");
     }
 
     public ThirdJWTCurrencyFilter(AuthenticationManager authenticationManager) {

+ 79 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/mapper/WODispatchTagDictMapper.java

@@ -0,0 +1,79 @@
+package com.shkpr.service.aimodelpower.dbdao.mapper;
+
+import com.shkpr.service.aimodelpower.dbdao.providers.WODispatchTagDictSqlProvider;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName WODispatchTagDictMapper
+ * @Description: TODO
+ * @Author LX
+ * @Date 2024/7/10
+ * @Version V1.0
+ **/
+public interface WODispatchTagDictMapper {
+
+    @SelectProvider(type = WODispatchTagDictSqlProvider.class, method = "totalCounts")
+    int totalCounts(@Param("table") String table
+            , @Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("extend") String extend);
+
+    @SelectProvider(type = WODispatchTagDictSqlProvider.class, method = "listAllWiths")
+    List<Map<String, Object>> listAllWiths(@Param("table") String table, @Param("filed") String file
+            , @Param("limit") int limit
+            , @Param("offset") int offset
+            , @Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("order") String order
+            , @Param("extend") String extend);
+
+    @SelectProvider(type = WODispatchTagDictSqlProvider.class, method = "getByUniqueId")
+    Map<String, Object> getOne(@Param("table") String table, @Param("filed") String filed, @Param("id") Object id);
+
+    @SelectProvider(type = WODispatchTagDictSqlProvider.class, method = "batchQueryIn")
+    List<Map<String, Object>> batchQueryIn(@Param("table") String table, @Param("filed") String file
+            , @Param("ids") List<? extends Object> ids
+            , @Param("order") String order
+            , @Param("extend") String extend);
+
+    @SelectProvider(type = WODispatchTagDictSqlProvider.class, method = "batchQueryWiths")
+    List<Map<String, Object>> batchQueryWiths(@Param("table") String table, @Param("filed") String filed
+            , @Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("order") String order
+            , @Param("extend") String extend);
+
+    @InsertProvider(type = WODispatchTagDictSqlProvider.class, method = "inserts")
+    int inserts(@Param("inserts") Map<String, Object> inserts);
+
+    /**
+     * update和delete返回受影响条数需要配合useAffectedRows=true
+     * @param datas
+     * @param andWheres
+     * @return
+     */
+    @UpdateProvider(type = WODispatchTagDictSqlProvider.class, method = "updateWiths")
+    int updateWiths(@Param("datas") Map<String, Object> datas
+            , @Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("extend") String extend);
+
+    @SelectProvider(type = WODispatchTagDictSqlProvider.class, method = "existsLine")
+    boolean existLine(@Param("table") String table
+            , @Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("extend") String extend);
+
+    @UpdateProvider(type = WODispatchTagDictSqlProvider.class, method = "batchUpdateWiths")
+    int batchUpdateWiths(@Param("andWheres") List<Map<String, Object>> andWheres
+            , @Param("datas") List<Map<String, Object>> datas);
+
+    @DeleteProvider(type = WODispatchTagDictSqlProvider.class, method = "deleteWiths")
+    int deleteWiths(@Param("andWheres") Map<String, Object> andWheres
+            , @Param("orWheres") Map<String, Object> orWheres
+            , @Param("extend") String extend);
+    
+}

+ 46 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/providers/WODispatchTagDictSqlProvider.java

@@ -0,0 +1,46 @@
+package com.shkpr.service.aimodelpower.dbdao.providers;
+
+import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchTagDictTable;
+
+public class WODispatchTagDictSqlProvider extends BaseSqlProvider implements WODispatchTagDictTable {
+    @Override
+    public String getRTableName() {
+        return R_INFO.TABLE;
+    }
+
+    @Override
+    public String getWTableName() {
+        return W_INFO.TABLE;
+    }
+
+    @Override
+    public String getRUniqueId() {
+        return R_INFO.UNIQUE_ID;
+    }
+
+    @Override
+    public String getWUniqueId() {
+        return W_INFO.UNIQUE_ID;
+    }
+
+    @Override
+    public String getSAllFiled() {
+        return R_INFO.ALL_FILED;
+    }
+
+    @Override
+    public String getRPrimaryKey() {
+        return R_INFO.PRIMARY_KEY;
+    }
+
+    @Override
+    public String getWPrimaryKey() {
+        return W_INFO.PRIMARY_KEY;
+    }
+
+    @Override
+    public boolean isWJsonForFiled(String filedName) {
+        return false;
+    }
+    
+}

+ 29 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/services/WODispatchPlanDBServiceImpl.java

@@ -64,6 +64,10 @@ public class WODispatchPlanDBServiceImpl implements WODispatchPlanDBService,WODi
     @Autowired
     WODispatchCmdBatchItemDBService woDispatchCmdBatchItemDBService;
 
+    @SuppressWarnings("all")
+    @Autowired
+    WODispatchTagDictMapper woDispatchTagDictMapper;
+
     @Override
     public List<Map<String, Object>> listAllWithsEx(String table, String filed, int limit, int offset, Map<String, Object> andWheres, Map<String, Object> orWheres, String orderBy, String extend) {
         int nCode = 0;
@@ -318,4 +322,29 @@ public class WODispatchPlanDBServiceImpl implements WODispatchPlanDBService,WODi
         }
         return ResponseCode.RESULT_NORMAL;
     }
+
+    @Override
+    public List<Map<String, Object>> selectAllTags(String table, String filed, Map<String, Object> andWheres, Map<String, Object> orWheres, String orderBy, String extend) {
+        int nCode = 0;
+        String strMsg = "Success";
+        List<Map<String, Object>> arrRes = null;
+        try {
+            arrRes = woDispatchTagDictMapper.batchQueryWiths(table, filed, andWheres, orWheres, orderBy, extend);
+        }catch (Exception e){
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , mBusinessType
+                    , mStrClassName
+                    , String.format("Batch Query %s:{andWhere.size=%d, orWhere.size=%d, orderBy=%s, extend=%s, back.size=%d} from database, code:{%d} msg:{%s} ..."
+                            , logTag
+                            , CommTool.mapSize(andWheres)
+                            , CommTool.mapSize(orWheres)
+                            , orderBy, extend
+                            , CommTool.listSize(arrRes)
+                            , nCode, strMsg));
+        }
+        return arrRes;
+    }
 }

+ 6 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/services/intef/WODispatchPlanDBService.java

@@ -45,5 +45,11 @@ public interface WODispatchPlanDBService extends BaseDBService {
                                        List<JPDispatchPlanInfoTagsSave> tagsList,
                                        //③ 排班班次项
                                        List<JPDispatchCmdBatchItem> itemsList);
+    //TODO 获取全量的字典标签集合
+    List<Map<String,Object>> selectAllTags(String table, String filed
+            , Map<String, Object> andWheres
+            , Map<String, Object> orWheres
+            , String orderBy
+            , String extend);
 }
 

+ 24 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/tables/WODispatchTagDictTable.java

@@ -0,0 +1,24 @@
+package com.shkpr.service.aimodelpower.dbdao.tables;
+
+/**
+ * @ClassName WODispatchTagDictTable
+ * @Description: TODO
+ * @Author LX
+ * @Date 2024/7/10
+ * @Version V1.0
+ **/
+public interface WODispatchTagDictTable {
+
+    interface R_INFO{
+        String TABLE = "k4_wo_dispatch_plan_tag_dict";
+        String PRIMARY_KEY = "key";
+        String ALL_FILED = "*";
+        String UNIQUE_ID = "key";
+    }
+
+    interface W_INFO{
+        String TABLE = "k4_wo_dispatch_plan_tag_dict";
+        String PRIMARY_KEY = "key";
+        String UNIQUE_ID = "key";
+    }
+}

+ 24 - 0
src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchPlanModel/DispatchCmdBatchItemNextTimeModel.java

@@ -0,0 +1,24 @@
+package com.shkpr.service.aimodelpower.dto.woDispatchPlanModel;
+
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchCmdBatchDispoal;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchPlanInfoSave;
+import lombok.Data;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.util.List;
+
+/**
+ * @ClassName DispatchCmdBatchItemModel
+ * @Description: TODO 水量调度指令排班项用于计算下次生效时间的模型
+ * @Author LX
+ * @Date 2024/6/28
+ * @Version V1.0
+ **/
+@Data
+public class DispatchCmdBatchItemNextTimeModel implements Serializable {
+    private String handleStartTime;//指定处理有效起始时间(HH:mm:ss) 日期为计划的预计开始时间
+
+}

+ 1 - 1
src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchPlanModel/DispatchPlanInfoNextTimeModel.java

@@ -15,7 +15,7 @@ import java.util.List;
 @Data
 public class DispatchPlanInfoNextTimeModel {
     //③ 排班班次项
-    private List<JPDispatchCmdBatchItem> itemsList;
+    private List<DispatchCmdBatchItemNextTimeModel> itemsList;
 
     private Integer planType;