Quellcode durchsuchen

河南郸城调度方案库增删改查以及详情查询五个接口

1037015548@qq.com vor 11 Monaten
Ursprung
Commit
25aabdbd45
19 geänderte Dateien mit 871 neuen und 17 gelöschten Zeilen
  1. 73 6
      src/main/java/com/shkpr/service/aimodelpower/bizmgr/WODispatchDatabaseBizFun.java
  2. 7 0
      src/main/java/com/shkpr/service/aimodelpower/commtools/CommTool.java
  3. 6 0
      src/main/java/com/shkpr/service/aimodelpower/constants/ApiURI.java
  4. 274 0
      src/main/java/com/shkpr/service/aimodelpower/controllerapi/woDispatchPlan/WoDispatchPlanInfoController.java
  5. 5 0
      src/main/java/com/shkpr/service/aimodelpower/controllerfilter/third/ThirdJWTCurrencyFilter.java
  6. 5 0
      src/main/java/com/shkpr/service/aimodelpower/dbdao/mapper/WODispatchDatabaseDisposalMapper.java
  7. 5 1
      src/main/java/com/shkpr/service/aimodelpower/dbdao/providers/WODispatchDatabaseDisposalSqlProvider.java
  8. 7 1
      src/main/java/com/shkpr/service/aimodelpower/dbdao/providers/WODispatchDatabaseSqlProvider.java
  9. 142 2
      src/main/java/com/shkpr/service/aimodelpower/dbdao/services/WODispatchDatabaseDBServiceImpl.java
  10. 9 0
      src/main/java/com/shkpr/service/aimodelpower/dbdao/services/intef/WODispatchDatabaseDBService.java
  11. 5 5
      src/main/java/com/shkpr/service/aimodelpower/dbdao/tables/WODispatchDatabaseTable.java
  12. 23 0
      src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchDatabaseModel/DispatchDataBaseDispoalModel.java
  13. 3 1
      src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchDatabaseModel/DispatchDatabaseSSModel.java
  14. 22 0
      src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchDatabaseModel/DispatchDatabaseViewModel.java
  15. 34 0
      src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoDel.java
  16. 27 1
      src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoSS.java
  17. 90 0
      src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoSave.java
  18. 106 0
      src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoUpdate.java
  19. 28 0
      src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoView.java

+ 73 - 6
src/main/java/com/shkpr/service/aimodelpower/bizmgr/WODispatchDatabaseBizFun.java

@@ -1,21 +1,22 @@
 package com.shkpr.service.aimodelpower.bizmgr;
 
 import com.global.base.tools.FastJsonUtil;
+import com.shkpr.service.aimodelpower.commtools.CommTool;
 import com.shkpr.service.aimodelpower.commtools.TimeTool;
 import com.shkpr.service.aimodelpower.dbdao.DBMgrProxy;
-import com.shkpr.service.aimodelpower.dbdao.services.WODispatchDatabaseDBServiceImpl;
-import com.shkpr.service.aimodelpower.dbdao.services.intef.WODispatchCmdBatchItemDBService;
 import com.shkpr.service.aimodelpower.dbdao.services.intef.WODispatchDatabaseDBService;
 import com.shkpr.service.aimodelpower.dbdao.services.intef.WODispatchDatabaseDisposalDBService;
-import com.shkpr.service.aimodelpower.dbdao.services.intef.WODispatchPlanDBService;
 import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchDatabaseTable;
 import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchPlanInfoTable;
 import com.shkpr.service.aimodelpower.dto.PageRecordRes;
 import com.shkpr.service.aimodelpower.dto.ResponseCode;
+import com.shkpr.service.aimodelpower.dto.ResponseRes;
 import com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel.DispatchDatabaseSSModel;
-import com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase.JPDispatchDatabaseInfoSS;
+import com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel.DispatchDatabaseViewModel;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase.*;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchPlanInfoDetailsSS;
+import org.springframework.util.StringUtils;
 
-import java.sql.Time;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -45,7 +46,7 @@ public class WODispatchDatabaseBizFun {
             return oRes;
         final String lilterExtend = jsonParam.genQueryExtend();
         Map<String,Object> andWheres = new HashMap<>();
-        String sql = "";
+        String sql = " AND del_flag = 1";
         if(jsonParam.getStartDate()!=null&&jsonParam.getEndDate()!=null) {
             sql += " AND ("+ WODispatchDatabaseTable.R_INFO.CREATE_TIME + " BETWEEN '"
                     + TimeTool.convertUTC2DateStr(jsonParam.getStartDate(),TimeTool.TIMESTAMP_FORMAT)
@@ -72,4 +73,70 @@ public class WODispatchDatabaseBizFun {
         }
         return oRes;
     }
+    //查询详情
+    public static ResponseRes selectView(JPDispatchDatabaseInfoView oJsonParam) {
+        ResponseRes oRes = new ResponseRes();
+        oRes.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        oRes.setResmsg(ResponseCode.RESULT_BAD.toStrMsg());
+
+        Map<String,Object> andWheres = new HashMap<>();
+        andWheres.put(WODispatchDatabaseTable.R_INFO.PRIMARY_KEY,oJsonParam.getDatabaseId());
+        DispatchDatabaseViewModel viewModel = getThisDBService().viewInfo(andWheres,new HashMap<>(),"");
+        if(viewModel!=null){
+            oRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+            oRes.setResmsg(ResponseCode.RESULT_NORMAL.toStrMsg());
+            oRes.setResdata(FastJsonUtil.toJSON(viewModel));
+        }
+        return oRes;
+    }
+    //添加方案库
+    public static ResponseCode save(JPDispatchDatabaseInfoSave jsonParams){
+        if (jsonParams == null)
+            return ResponseCode.RESULT_BAD;
+
+        Map<String,Object> insertMap = FastJsonUtil.obj2Map(jsonParams,true);
+        insertMap.remove("dispoalList");
+        insertMap.put(WODispatchDatabaseTable.W_INFO.PRIMARY_KEY, CommTool.genDatabaseId());
+        insertMap.put(WODispatchDatabaseTable.W_INFO.CREATE_TIME, TimeTool.getCurMsUTC());
+        insertMap.put("del_flag", 1);
+        int res = getThisDBService().insertByMapEx(insertMap,jsonParams.getDispoalList());
+        if(res==0){
+            return ResponseCode.RESULT_NORMAL;
+        }else{
+            return ResponseCode.RESULT_BAD;
+        }
+    }
+
+    //修改方案库
+    public static ResponseCode update(JPDispatchDatabaseInfoUpdate jsonParams){
+        if (jsonParams == null)
+            return ResponseCode.RESULT_BAD;
+
+        Map<String,Object> andWheres = new HashMap<>();
+        andWheres.put(WODispatchDatabaseTable.R_INFO.PRIMARY_KEY,jsonParams.getDatabaseId());
+        int res = getThisDBService().updateWithsEx(jsonParams.genUpdateMapObj(),andWheres,jsonParams.getDispoalList());
+        if(res==0){
+            return ResponseCode.RESULT_NORMAL;
+        }else{
+            return ResponseCode.RESULT_BAD;
+        }
+    }
+
+    //删除方案库,及其相关联的处置建议,即修改删除状态
+    public static ResponseCode delDatabase(JPDispatchDatabaseInfoDel jsonParams){
+        if (jsonParams == null)
+            return ResponseCode.RESULT_BAD;
+
+        Map<String,Object> andWheres = new HashMap<>();
+        andWheres.put(WODispatchDatabaseTable.R_INFO.PRIMARY_KEY,jsonParams.getDatabaseId());
+
+        Map<String,Object> updateFiled = new HashMap<>();
+        updateFiled.put("del_flag",0);
+        int res = getThisDBService().updateWiths(updateFiled,andWheres);
+        if(res>=1){
+            return ResponseCode.RESULT_NORMAL;
+        }else{
+            return ResponseCode.RESULT_BAD;
+        }
+    }
 }

+ 7 - 0
src/main/java/com/shkpr/service/aimodelpower/commtools/CommTool.java

@@ -149,6 +149,13 @@ public class CommTool {
         return (new StringBuilder("PLD")).append(SnowFlakeEx.getInstance().nextHexStrId(4)).toString();
     }
 
+    public static String genDatabaseId(){
+        return (new StringBuilder("DTB")).append(SnowFlakeEx.getInstance().nextHexStrId(2)).toString();
+    }
+    public static String genDatabaseDisposalId(){
+        return (new StringBuilder("DTD")).append(SnowFlakeEx.getInstance().nextHexStrId(2)).toString();
+    }
+
     public static String genPatrolItemTypeId(String puid){
         return String.format("%s%s%s"
                 ,puid

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

@@ -126,4 +126,10 @@ public class ApiURI {
     public static final String URI_DISPATCH_PLAN_H = URI_CURRENCY_H+"/dispatch/plan";
     public static final String URI_DISPATCH_TAG_DICT = "tag/dict";
     public static final String URI_DISPATCH_PLAN_STATUS_RESET = "status/reset";
+    public static final String URI_DISPATCH_DATABASE_LISTS = "database/lists";
+    public static final String URI_DISPATCH_DATABASE_SVAE = "database/save";
+    public static final String URI_DISPATCH_DATABASE_UPDATE = "database/update";
+    public static final String URI_DISPATCH_DATABASE_DEL = "database/del";
+    public static final String URI_DISPATCH_DATABASE_VIEW = "database/view";
+
 }

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

@@ -2,19 +2,23 @@ package com.shkpr.service.aimodelpower.controllerapi.woDispatchPlan;
 
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
+import com.shkpr.service.aimodelpower.bizmgr.WODispatchDatabaseBizFun;
 import com.shkpr.service.aimodelpower.bizmgr.WODispatchPlanTmDoBizFun;
 import com.shkpr.service.aimodelpower.commtools.CommTool;
 import com.shkpr.service.aimodelpower.constants.ApiURI;
 import com.shkpr.service.aimodelpower.controllerfilter.TokenAuthenticationService;
 import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidNew;
 import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidReset;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidSK;
 import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidSS;
 import com.shkpr.service.aimodelpower.dto.PageRecordRes;
 import com.shkpr.service.aimodelpower.dto.ResponseCode;
 import com.shkpr.service.aimodelpower.dto.ResponseRes;
+import com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel.DispatchDatabaseSSModel;
 import com.shkpr.service.aimodelpower.dto.woDispatchPlanModel.DispatchPlanInfoModel;
 import com.shkpr.service.aimodelpower.dto.woDispatchPlanModel.DispatchPlanInfoSSModel;
 import com.shkpr.service.aimodelpower.exception.SelfException;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase.*;
 import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.*;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
@@ -358,4 +362,274 @@ public class WoDispatchPlanInfoController {
         return resResult;
     }
 
+
+
+    /**
+     * @Author Lx
+     * @Description //TODO 方案库相关
+     * @Date
+     * @Param
+     * @return
+     **/
+    //分页
+    @PostMapping(value = ApiURI.URI_DISPATCH_DATABASE_LISTS)
+    public ResponseRes databaseLists(HttpServletRequest request
+            , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
+            , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent
+            , @RequestBody(required=false) @Validated(value={CommonParamValidSS.class}) JPDispatchDatabaseInfoSS oJsonParam
+            , BindingResult bindRes) throws Exception{
+        final String URI_PATH = request.getRequestURI();
+        final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
+        final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
+        if (oJsonParam == null || bindRes.hasErrors() || !oJsonParam.checkValid()){
+            throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
+                    , String.format(ApiURI.EXCEPTION_FORMAT
+                    , strPlatform
+                    , URI_PATH
+                    , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
+        }
+        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} param:%s begin====>"
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq
+                        ,oJsonParam.toString()));
+
+        ResponseRes<String> resResult = new ResponseRes<String>();
+        resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        resResult.setResmsg(MSG_FAILED);
+        resResult.setResdata("");
+
+        PageRecordRes<DispatchDatabaseSSModel> pageRecordRes = WODispatchDatabaseBizFun.queryPageList(oJsonParam);
+        if (pageRecordRes != null && pageRecordRes.getCode() == 0){
+            resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+            resResult.setResmsg(MSG_SUCCESS);
+        }
+        resResult.setResdata(oJsonParam.genJsonStrForResponse(pageRecordRes));
+        if (pageRecordRes != null)
+            pageRecordRes.clearData();
+        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;
+    }
+
+    //添加方案库
+    @PostMapping(value = ApiURI.URI_DISPATCH_DATABASE_SVAE)
+    public ResponseRes databaseSave(HttpServletRequest request
+            , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
+            , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent
+            , @RequestBody(required=false) @Validated(value={CommonParamValidNew.class}) JPDispatchDatabaseInfoSave oJsonParam
+            , BindingResult bindRes) throws Exception{
+        final String URI_PATH = request.getRequestURI();
+        final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
+        final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
+        if (oJsonParam == null || bindRes.hasErrors() || !oJsonParam.checkValid()){
+            throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
+                    , String.format(ApiURI.EXCEPTION_FORMAT
+                    , strPlatform
+                    , URI_PATH
+                    , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
+        }
+        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} param:%s begin====>"
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq
+                        ,oJsonParam.toString()));
+
+        ResponseRes<String> resResult = new ResponseRes<String>();
+        resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        resResult.setResmsg(MSG_FAILED);
+        resResult.setResdata("");
+
+        ResponseCode resCode = WODispatchDatabaseBizFun.save(oJsonParam);
+        if (resCode!=null&&resCode==ResponseCode.RESULT_NORMAL){
+            resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+            resResult.setResmsg(MSG_SUCCESS);
+        }else{
+            if(resCode!=null) {
+                resResult.setRescode(resCode.toStrCode());
+                resResult.setResmsg(resCode.toStrMsg());
+            }
+        }
+        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;
+    }
+
+    @PostMapping(value = ApiURI.URI_DISPATCH_DATABASE_UPDATE)
+    public ResponseRes databaseUpdate(HttpServletRequest request
+            , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
+            , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent
+            , @RequestBody(required=false) @Validated(value={CommonParamValidReset.class}) JPDispatchDatabaseInfoUpdate oJsonParam
+            , BindingResult bindRes) throws Exception{
+        final String URI_PATH = request.getRequestURI();
+        final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
+        final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
+        if (oJsonParam == null || bindRes.hasErrors() || !oJsonParam.checkValid()){
+            throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
+                    , String.format(ApiURI.EXCEPTION_FORMAT
+                    , strPlatform
+                    , URI_PATH
+                    , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
+        }
+        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} param:%s begin====>"
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq
+                        ,oJsonParam.toString()));
+
+        ResponseRes<String> resResult = new ResponseRes<String>();
+        resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        resResult.setResmsg(MSG_FAILED);
+        resResult.setResdata("");
+
+        ResponseCode resCode = WODispatchDatabaseBizFun.update(oJsonParam);
+        if (resCode!=null&&resCode==ResponseCode.RESULT_NORMAL){
+            resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+            resResult.setResmsg(MSG_SUCCESS);
+        }else{
+            if(resCode!=null) {
+                resResult.setRescode(resCode.toStrCode());
+                resResult.setResmsg(resCode.toStrMsg());
+            }
+        }
+        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;
+    }
+
+    @PostMapping(value = ApiURI.URI_DISPATCH_DATABASE_DEL)
+    public ResponseRes databaseDel(HttpServletRequest request
+            , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
+            , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent
+            , @RequestBody(required=false) @Validated(value={CommonParamValidReset.class}) JPDispatchDatabaseInfoDel oJsonParam
+            , BindingResult bindRes) throws Exception{
+        final String URI_PATH = request.getRequestURI();
+        final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
+        final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
+        if (oJsonParam == null || bindRes.hasErrors() || !oJsonParam.checkValid()){
+            throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
+                    , String.format(ApiURI.EXCEPTION_FORMAT
+                    , strPlatform
+                    , URI_PATH
+                    , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
+        }
+        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} param:%s begin====>"
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq
+                        ,oJsonParam.toString()));
+
+        ResponseRes<String> resResult = new ResponseRes<String>();
+        resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        resResult.setResmsg(MSG_FAILED);
+        resResult.setResdata("");
+
+        ResponseCode resCode = WODispatchDatabaseBizFun.delDatabase(oJsonParam);
+        if (resCode!=null&&resCode==ResponseCode.RESULT_NORMAL){
+            resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
+            resResult.setResmsg(MSG_SUCCESS);
+        }else{
+            if(resCode!=null) {
+                resResult.setRescode(resCode.toStrCode());
+                resResult.setResmsg(resCode.toStrMsg());
+            }
+        }
+        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;
+    }
+
+    @PostMapping(value = ApiURI.URI_DISPATCH_DATABASE_VIEW)
+    public ResponseRes databaseView(HttpServletRequest request
+            , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
+            , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent
+            , @RequestBody(required=false) @Validated(value={CommonParamValidSK.class}) JPDispatchDatabaseInfoView oJsonParam
+            , BindingResult bindRes) throws Exception{
+        final String URI_PATH = request.getRequestURI();
+        final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
+        final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
+        if (oJsonParam == null || bindRes.hasErrors()){
+            throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
+                    , String.format(ApiURI.EXCEPTION_FORMAT
+                    , strPlatform
+                    , URI_PATH
+                    , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
+        }
+        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} param:%s begin====>"
+                        ,strPlatform
+                        ,URI_PATH
+                        ,strRunSeq
+                        ,oJsonParam.toString()));
+
+        ResponseRes<String> resResult = new ResponseRes<String>();
+        resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
+        resResult.setResmsg(MSG_FAILED);
+        resResult.setResdata("");
+
+        ResponseRes oRes = WODispatchDatabaseBizFun.selectView(oJsonParam);
+        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;
+    }
 }

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

@@ -31,6 +31,11 @@ public class ThirdJWTCurrencyFilter extends JWTAuthenticationFilter {
         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");
         msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_PLAN_STATUS_RESET), "POST");
+        msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_DATABASE_LISTS), "POST");
+        msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_DATABASE_SVAE), "POST");
+        msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_DATABASE_UPDATE), "POST");
+        msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_DATABASE_DEL ), "POST");
+        msMapURI2Method.put(String.format("%s/%s", ApiURI.URI_DISPATCH_PLAN_H, ApiURI.URI_DISPATCH_DATABASE_VIEW), "POST");
     }
 
     public ThirdJWTCurrencyFilter(AuthenticationManager authenticationManager) {

+ 5 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/mapper/WODispatchDatabaseDisposalMapper.java

@@ -78,4 +78,9 @@ public interface WODispatchDatabaseDisposalMapper {
 
     @DeleteProvider(type = WODispatchDatabaseDisposalSqlProvider.class, method = "deleteInIds")
     int batchDeleteIn(@Param("ids") List<? extends Object> ids, @Param("extend") String extend);
+
+    @InsertProvider(type = WODispatchDatabaseDisposalSqlProvider.class, method = "insertOrUpdateEx")
+    int insertOrUpdate(@Param("inserts") Map<String, Object> inserts
+            , @Param("uniques") List<? extends Object> uniques
+            , @Param("updates") List<? extends Object> updates);
 }

+ 5 - 1
src/main/java/com/shkpr/service/aimodelpower/dbdao/providers/WODispatchDatabaseDisposalSqlProvider.java

@@ -43,5 +43,9 @@ public class WODispatchDatabaseDisposalSqlProvider extends BaseSqlProvider imple
     public boolean isWJsonForFiled(String filedName) {
         return false;
     }
-    
+
+    @Override
+    protected boolean isWTimeForFiled(String filedName) {
+        return (filedName.endsWith("time"));
+    }
 }

+ 7 - 1
src/main/java/com/shkpr/service/aimodelpower/dbdao/providers/WODispatchDatabaseSqlProvider.java

@@ -43,5 +43,11 @@ public class WODispatchDatabaseSqlProvider extends BaseSqlProvider implements WO
     public boolean isWJsonForFiled(String filedName) {
         return false;
     }
-    
+
+    @Override
+    protected boolean isWTimeForFiled(String filedName) {
+        if (filedName.endsWith("sample_begin_time")||filedName.equals("sample_end_time"))
+            return false;
+        return (filedName.endsWith("time"));
+    }
 }

+ 142 - 2
src/main/java/com/shkpr/service/aimodelpower/dbdao/services/WODispatchDatabaseDBServiceImpl.java

@@ -2,22 +2,36 @@ package com.shkpr.service.aimodelpower.dbdao.services;
 
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
+import com.global.base.tools.FastJsonUtil;
 import com.shkpr.service.aimodelpower.commtools.CommTool;
+import com.shkpr.service.aimodelpower.commtools.TimeTool;
 import com.shkpr.service.aimodelpower.constants.LogFlagBusiType;
 import com.shkpr.service.aimodelpower.dbdao.mapper.WODispatchCmdInfoMapper;
+import com.shkpr.service.aimodelpower.dbdao.mapper.WODispatchDatabaseDisposalMapper;
 import com.shkpr.service.aimodelpower.dbdao.mapper.WODispatchDatabaseMapper;
 import com.shkpr.service.aimodelpower.dbdao.services.intef.WODispatchCmdInfoDBService;
 import com.shkpr.service.aimodelpower.dbdao.services.intef.WODispatchDatabaseDBService;
 import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchCmdInfoTable;
+import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchDatabaseDisposalTable;
 import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchDatabaseTable;
+import com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel.DispatchDataBaseDispoalModel;
+import com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel.DispatchDatabaseViewModel;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchCmdBatchDispoal;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.TimeToLive;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
+import java.sql.Time;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.shkpr.service.aimodelpower.commtools.CommTool.genDatabaseDisposalId;
+
 @Service
 public class WODispatchDatabaseDBServiceImpl implements WODispatchDatabaseDBService,WODispatchDatabaseTable{
     private String mStrClassName = "";
@@ -33,6 +47,10 @@ public class WODispatchDatabaseDBServiceImpl implements WODispatchDatabaseDBServ
     @Autowired
     WODispatchDatabaseMapper woDispatchDatabaseMapper;
 
+    @SuppressWarnings("all")
+    @Autowired
+    WODispatchDatabaseDisposalMapper woDispatchDatabaseDisposalMapper;
+
     @Override
     public Map<String, Object> getOne(Object id) {
         return null;
@@ -139,13 +157,135 @@ public class WODispatchDatabaseDBServiceImpl implements WODispatchDatabaseDBServ
     }
 
     @Override
+    public DispatchDatabaseViewModel viewInfo(Map<String, Object> andWheres, Map<String, Object> orWheres, String extend) {
+        int nCode = 0;
+        String strMsg = "Success";
+        try {
+            List<Map<String,Object>> listOne = woDispatchDatabaseMapper.listAllWiths("", "", 1, 0, andWheres, orWheres, "", extend);
+            Map<String, Object> res = CollectionUtils.isEmpty(listOne)?null:listOne.get(0);
+            if (res == null)
+                return null;
+            else {
+                DispatchDatabaseViewModel viewModel = FastJsonUtil.map2Obj(res,DispatchDatabaseViewModel.class,true);
+                //TODO 查出相关联的处置建议列表
+                Map<String, Object> dispoalQueryMap = new HashMap<>();
+                dispoalQueryMap.put(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY,
+                        andWheres.get(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY));
+                List<Map<String,Object>> dispoalModels = woDispatchDatabaseDisposalMapper.batchQueryWiths("",
+                        "",dispoalQueryMap, new HashMap<>(), "", "");
+                if(!CollectionUtils.isEmpty(dispoalModels)){
+                    viewModel.setDispoalModels(FastJsonUtil.batchMap2Obj(dispoalModels,
+                            DispatchDataBaseDispoalModel.class,true));
+                }
+                return viewModel;
+            }
+        }catch (Exception e){
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+            return null;
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , LogFlagBusiType.BUSI_DB_USER.toStrValue()
+                    , mStrClassName
+                    , String.format("Get from database, code:{%d} msg:{%s} ...", nCode, strMsg));
+        }
+    }
+
+    @Override
+    @Transactional(transactionManager = "mainDbTransactionManager",rollbackFor = Exception.class)
+    public int insertByMapEx(Map<String, Object> maps,List<JPDispatchCmdBatchDispoal> dispoalList) {
+        int nCode = 0;
+        woDispatchDatabaseMapper.inserts(maps);
+        //TODO 先添加完方案库,再添加处置建议
+        if(!CollectionUtils.isEmpty(dispoalList)) {
+            for (JPDispatchCmdBatchDispoal dispoal : dispoalList) {
+                Map<String, Object> entityMap = FastJsonUtil.obj2Map(dispoal, true);
+                entityMap.put(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY, maps.get(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY));
+                entityMap.put("key", genDatabaseDisposalId());
+                entityMap.put("create_time", TimeTool.getCurMsUTC());
+                entityMap.put("usage", 0);
+                woDispatchDatabaseDisposalMapper.inserts(entityMap);
+            }
+        }
+        return nCode;
+    }
+
+    @Override
+    @Transactional(transactionManager = "mainDbTransactionManager",rollbackFor = Exception.class)
+    public int updateWithsEx(Map<String, Object> datas, Map<String, Object> andWheres,List<JPDispatchCmdBatchDispoal> dispoalList) {
+        int nCode = 0;
+        woDispatchDatabaseMapper.updateWiths(datas, andWheres, null, "");
+        //TODO 先修改完方案库,再添加/处置建议
+        if(!CollectionUtils.isEmpty(dispoalList)) {
+            for (JPDispatchCmdBatchDispoal dispoal : dispoalList) {
+                Map<String, Object> entityMap = FastJsonUtil.obj2Map(dispoal, true);
+                entityMap.put(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY, andWheres.get(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY));
+                if (StringUtils.isEmpty(dispoal.getKey())) {
+                    entityMap.put("key", genDatabaseDisposalId());
+                    entityMap.put("create_time", TimeTool.getCurMsUTC());
+                    entityMap.put("usage", 0);
+                    woDispatchDatabaseDisposalMapper.inserts(entityMap);
+                } else {
+                    //TODO 查询是否存在, 如果不存在则以传递值为值然后新增
+                    Map<String, Object> dispoalQueryMap = new HashMap<>();
+                    dispoalQueryMap.put(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY, andWheres.get(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY));
+                    dispoalQueryMap.put(WODispatchDatabaseDisposalTable.W_INFO.PRIMARY_KEY_TWO, dispoal.getKey());
+                    List<Map<String, Object>> dispoalListMap = woDispatchDatabaseDisposalMapper.batchQueryWiths("", "",
+                            dispoalQueryMap, new HashMap<>(), "", "");
+                    if (CollectionUtils.isEmpty(dispoalListMap)) {
+                        //TODO 说明不存在
+                        entityMap.put("key", dispoal.getKey());
+                        entityMap.put("create_time", TimeTool.getCurMsUTC());
+                        entityMap.put("usage", 0);
+                        woDispatchDatabaseDisposalMapper.inserts(entityMap);
+                    } else {
+                        //TODO 说明存在 ,则修改
+                        //TODO 说明不存在
+                        entityMap.put("key", dispoal.getKey());
+                        entityMap.put("update_time", TimeTool.getCurMsUTC());
+                        entityMap.put("usage", 0);
+                        woDispatchDatabaseDisposalMapper.updateWiths(entityMap, dispoalQueryMap, new HashMap<>(), "");
+                    }
+                }
+            }
+        }
+        return nCode;
+    }
+
+    @Override
     public int insertByMap(Map<String, Object> maps) {
-        return 0;
+        int nCode = 0;
+        String strMsg = "Success";
+        try {
+            return woDispatchDatabaseMapper.inserts(maps);
+        }catch (Exception e){
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+            return -1;
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , mBusinessType
+                    , mStrClassName
+                    , String.format("Insert New %s to database, code:{%d} msg:{%s} ...", logTag, nCode, strMsg));
+        }
     }
 
     @Override
     public int updateWiths(Map<String, Object> datas, Map<String, Object> andWheres) {
-        return 0;
+        int nCode = 0;
+        String strMsg = "Success";
+        try {
+            return woDispatchDatabaseMapper.updateWiths(datas, andWheres, null, "");
+        }catch (Exception e){
+            nCode = LogLevelFlag.LOG_ERROR.ordinal();
+            strMsg = e.getLocalizedMessage();
+            return -1;
+        }finally {
+            LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.valueFromInt(nCode)
+                    , mBusinessType
+                    , mStrClassName
+                    , String.format("Update %s to database, code:{%d} msg:{%s} ...", logTag, nCode, strMsg));
+        }
     }
 
     @Override

+ 9 - 0
src/main/java/com/shkpr/service/aimodelpower/dbdao/services/intef/WODispatchDatabaseDBService.java

@@ -1,5 +1,9 @@
 package com.shkpr.service.aimodelpower.dbdao.services.intef;
 
+import com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel.DispatchDatabaseViewModel;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchCmdBatchDispoal;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -12,8 +16,13 @@ import java.util.Map;
 public interface WODispatchDatabaseDBService extends BaseDBService {
     public Map<String, Object> getOneBy(Map<String, Object> andWheres, Map<String, Object> orWheres, String extend);
 
+    DispatchDatabaseViewModel viewInfo(Map<String, Object> andWheres, Map<String, Object> orWheres, String extend);
+
     int totalCountsEx(String table
             , Map<String, Object> andWheres
             , Map<String, Object> orWheres
             , String extend);
+
+    int insertByMapEx(Map<String, Object> maps, List<JPDispatchCmdBatchDispoal> dispoalList);
+    int updateWithsEx(Map<String, Object> datas, Map<String, Object> andWheres,List<JPDispatchCmdBatchDispoal> dispoalList);
 }

+ 5 - 5
src/main/java/com/shkpr/service/aimodelpower/dbdao/tables/WODispatchDatabaseTable.java

@@ -10,10 +10,10 @@ package com.shkpr.service.aimodelpower.dbdao.tables;
 public interface WODispatchDatabaseTable {
 
     interface R_INFO{
-        String TABLE = "k4_wo_dispatch_database";
-        String PRIMARY_KEY = "key";
+        String TABLE = "v_k4_wo_dispatch_database";
+        String PRIMARY_KEY = "database_id";
         String ALL_FILED = "*";
-        String UNIQUE_ID = "key";
+        String UNIQUE_ID = "database_id";
 
         String CREATE_TIME = "create_time";
         String UPDATE_TIME = "update_time";
@@ -21,8 +21,8 @@ public interface WODispatchDatabaseTable {
 
     interface W_INFO{
         String TABLE = "k4_wo_dispatch_database";
-        String PRIMARY_KEY = "key";
-        String UNIQUE_ID = "key";
+        String PRIMARY_KEY = "database_id";
+        String UNIQUE_ID = "database_id";
 
         String CREATE_TIME = "create_time";
         String UPDATE_TIME = "update_time";

+ 23 - 0
src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchDatabaseModel/DispatchDataBaseDispoalModel.java

@@ -0,0 +1,23 @@
+package com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel;
+
+import lombok.Data;
+
+/**
+ * @ClassName DispatchCmdBatchDispoalModel
+ * @Description: TODO
+ * @Author LX
+ * @Date 2024/6/28
+ * @Version V1.0
+ **/
+@Data
+public class DispatchDataBaseDispoalModel {
+    private String key;//处置建议_id
+    private String databaseId;//排班id
+    private long createTime;//数据创建时间
+    private long updateTime;//数据修改时间
+    private String data;//处置内容
+    private String did;//处置建议id(如存分区或站点id)
+    private String dname;//工单关心以及需要存储的事情(如存处置对象名称)
+    private Integer ordering;//处置建议在app上的排序值
+    private Integer usage;//引用次数
+}

+ 3 - 1
src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchDatabaseModel/DispatchDatabaseSSModel.java

@@ -19,7 +19,8 @@ public class DispatchDatabaseSSModel {
 
     private String weathe;//			适用天气
     private String temperature;//				适用气温(气温范围 如 0~30) 单位℃
-    private String param1;//				复合参数2
+    private String param1;//				复合参数1
+    private String param2;//				复合参数2
     private String createUser;//				创建人id(创建者id)
     private Long sampleBeginTime;//	int8		参考样本的起始时间(毫秒级UTC),如:iot采集数据的起始时间
     private Long sampleEndTime;//	int8		参考样本的截止时间(毫秒级UTC),如:iot采集数据的截止时间
@@ -29,5 +30,6 @@ public class DispatchDatabaseSSModel {
     private String zoneType		;//		监测分区的主类型
     private Long createTime		;//		数据创建时间
     private Long updateTime		;//		数据修改时间
+    private String zone		;//		监测分区名称
 
 }

+ 22 - 0
src/main/java/com/shkpr/service/aimodelpower/dto/woDispatchDatabaseModel/DispatchDatabaseViewModel.java

@@ -0,0 +1,22 @@
+package com.shkpr.service.aimodelpower.dto.woDispatchDatabaseModel;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName DispatchDatabaseSSModel
+ * @Description: TODO 方案库详情数据模型
+ * @Author LX
+ * @Date 2024/7/16
+ * @Version V1.0
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DispatchDatabaseViewModel extends DispatchDatabaseSSModel{
+
+    private List<DispatchDataBaseDispoalModel> dispoalModels = new ArrayList<>();
+
+}

+ 34 - 0
src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoDel.java

@@ -0,0 +1,34 @@
+package com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase;
+
+import com.alibaba.fastjson.JSONArray;
+import com.global.base.tools.FastJsonUtil;
+import com.shkpr.service.aimodelpower.components.validators.IntInitOrRange;
+import com.shkpr.service.aimodelpower.components.validators.StrNullOrSize;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidReset;
+import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchDatabaseTable;
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.Map;
+
+/**
+ * @ClassName JPDispatchDatabaseInfoSave
+ * @Description: TODO 删除模型
+ * @Author LX
+ * @Date 2024/7/25
+ * @Version V1.0
+ **/
+@Data
+public class JPDispatchDatabaseInfoDel {
+//    private Integer id;//自增序列号
+
+    @NotBlank(groups = { CommonParamValidReset.class})
+    @Size(min = 1,max = 255, groups = { CommonParamValidReset.class})
+    private String databaseId;//方案库Id
+
+    public boolean checkValid(){
+        return true;
+    }
+}

+ 27 - 1
src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoSS.java

@@ -1,5 +1,6 @@
 package com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase;
 
+import com.alibaba.fastjson.JSONArray;
 import com.global.base.log.LogLevelFlag;
 import com.global.base.log.LogPrintMgr;
 import com.shkpr.service.aimodelpower.commtools.TimeTool;
@@ -97,6 +98,21 @@ public class JPDispatchDatabaseInfoSS extends JPPageLO {
             endDate = TimeTool.convertDateStr2UTC(endLocalDate.format(formatter));
         }
 
+        if(!StringUtils.isEmpty(temperature)){
+            //TODO 说明传递了气温范围数组
+            try {
+                JSONArray jsonArray = JSONArray.parseArray(temperature);
+                if(jsonArray==null||jsonArray.size()!=2){
+                    return false;
+                }
+                if (jsonArray.getDouble(0)>=jsonArray.getDouble(1)){
+                    return false;
+                }
+            }catch(Exception ex){
+                //TODO 说明异常则返回false
+                return false;
+            }
+        }
         return true;
     }
 
@@ -117,7 +133,17 @@ public class JPDispatchDatabaseInfoSS extends JPPageLO {
         if (!StringUtils.isEmpty(this.param2)) {
             str.append(" OR param2 like '%" + this.param2 + "%' ");
         }
-
+        if(!StringUtils.isEmpty(temperature)){
+            JSONArray jsonArray = JSONArray.parseArray(temperature);
+            str.append(" AND (" +
+                    "(min_temp <= " + jsonArray.getDouble(0)+ " AND max_temp >= " + jsonArray.getDouble(1)+")"+//包含
+                    " OR " +
+                    "(min_temp <= "+jsonArray.getDouble(1)+" AND min_temp >= "+ jsonArray.getDouble(0) +")"+//交集
+                    " OR " +
+                    "(min_temp <= "+jsonArray.getDouble(1)+" AND min_temp <= "+ jsonArray.getDouble(0)+
+                    " AND max_temp >= " + jsonArray.getDouble(0) +")"+//交集
+            ")");
+        }
         return str.length()>0?String.format(" AND ( 1=2 %s )" ,str.toString()):str.toString();
     }
 }

+ 90 - 0
src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoSave.java

@@ -0,0 +1,90 @@
+package com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase;
+
+import com.alibaba.fastjson.JSONArray;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidNew;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchCmdBatchDispoal;
+import lombok.Data;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+/**
+ * @ClassName JPDispatchDatabaseInfoSave
+ * @Description: TODO 添加模型
+ * @Author LX
+ * @Date 2024/7/25
+ * @Version V1.0
+ **/
+@Data
+public class JPDispatchDatabaseInfoSave {
+//    private Integer id;//自增序列号
+
+//    private String databaseId;//方案库Id
+
+    @NotBlank(groups = { CommonParamValidNew.class})
+    @Size(min = 1,max = 255, groups = { CommonParamValidNew.class})
+    private String databaseName;//方案库名称
+
+    @Size(min = 0,max = 255, groups = { CommonParamValidNew.class})
+    private String weathe;//			适用天气
+
+    @Size(min = 0,max = 255, groups = { CommonParamValidNew.class})
+    private String temperature;//				适用气温(气温范围 如 0~30) 单位℃
+
+    @Size(min = 0,max = 1024, groups = { CommonParamValidNew.class})
+    private String param1;//				复合参数1
+
+    @Size(min = 0,max = 1024, groups = { CommonParamValidNew.class})
+    private String param2;//				复合参数1
+
+    @NotBlank(groups = { CommonParamValidNew.class})
+    @Size(min = 1,max = 255, groups = { CommonParamValidNew.class})
+    private String createUser;//				创建人id(创建者id)
+
+
+    private Long sampleBeginTime = 0L;//	int8		参考样本的起始时间(毫秒级UTC),如:iot采集数据的起始时间
+    private Long sampleEndTime = 0L;//	int8		参考样本的截止时间(毫秒级UTC),如:iot采集数据的截止时间
+    private String tags;//	附属标签项JSON串,如:[{"key":"k1","name":"突发事件","data":"停电"}]
+    private String remark;//		方案库描述
+
+    @Size(min = 0,max = 255, groups = { CommonParamValidNew.class})
+    private String zoneId	;//			监测分区ID
+
+    @Size(min = 0,max = 255, groups = { CommonParamValidNew.class})
+    private String zoneType		;//		监测分区的主类型
+
+    @Size(min = 0,max = 255, groups = { CommonParamValidNew.class})
+    private String zone		;//		监测分区的名称
+//    private Long createTime		;//		数据创建时间
+//    private Long updateTime		;//		数据修改时间
+
+    //对应的处置建议
+    private List<JPDispatchCmdBatchDispoal> dispoalList;
+
+    public boolean checkValid(){
+        if(!StringUtils.isEmpty(temperature)){
+            //TODO 说明传递了气温范围数组
+            try {
+                JSONArray jsonArray = JSONArray.parseArray(temperature);
+                if(jsonArray==null||jsonArray.size()!=2){
+                    return false;
+                }
+                if (jsonArray.getDouble(0)>=jsonArray.getDouble(1)){
+                    return false;
+                }
+            }catch(Exception ex){
+                //TODO 说明异常则返回false
+                return false;
+            }
+        }
+        if(!CollectionUtils.isEmpty(dispoalList)){
+            if(dispoalList.stream().anyMatch(x -> !x.checkValid())){
+                return false;
+            }
+        }
+        return true;
+    }
+}

+ 106 - 0
src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoUpdate.java

@@ -0,0 +1,106 @@
+package com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase;
+
+import com.alibaba.fastjson.JSONArray;
+import com.global.base.tools.FastJsonUtil;
+import com.shkpr.service.aimodelpower.components.validators.IntInitOrRange;
+import com.shkpr.service.aimodelpower.components.validators.StrNullOrSize;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidReset;
+import com.shkpr.service.aimodelpower.dbdao.tables.WODispatchDatabaseTable;
+import com.shkpr.service.aimodelpower.jsonbean.woDispatchPlan.JPDispatchCmdBatchDispoal;
+import lombok.Data;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName JPDispatchDatabaseInfoSave
+ * @Description: TODO 修改模型
+ * @Author LX
+ * @Date 2024/7/25
+ * @Version V1.0
+ **/
+@Data
+public class JPDispatchDatabaseInfoUpdate {
+//    private Integer id;//自增序列号
+
+    @NotBlank(groups = { CommonParamValidReset.class})
+    @Size(min = 1,max = 255, groups = { CommonParamValidReset.class})
+    private String databaseId;//方案库Id
+
+    @StrNullOrSize(min = 1,max = 255,groups = {CommonParamValidReset.class})
+    private String databaseName = null;//方案库名称
+
+    @StrNullOrSize(min = 0,max = 255, groups = { CommonParamValidReset.class})
+    private String weathe = null;//			适用天气
+
+    @StrNullOrSize(min = 0,max = 255, groups = { CommonParamValidReset.class})
+    private String temperature = null;//				适用气温(气温范围 如 0~30) 单位℃
+
+    @StrNullOrSize(min = 0,max = 1024, groups = { CommonParamValidReset.class})
+    private String param1 = null;//				复合参数1
+
+    @StrNullOrSize(min = 0,max = 1024, groups = { CommonParamValidReset.class})
+    private String param2 = null;//				复合参数1
+
+
+    @IntInitOrRange(init = -1, groups = {CommonParamValidReset.class})
+    private Long sampleBeginTime = -1L;//	int8		参考样本的起始时间(毫秒级UTC),如:iot采集数据的起始时间
+    private Long sampleEndTime = -1L;//	int8		参考样本的截止时间(毫秒级UTC),如:iot采集数据的截止时间
+
+    @StrNullOrSize(groups = { CommonParamValidReset.class})
+    private String tags = null;//	附属标签项JSON串,如:[{"key":"k1","name":"突发事件","data":"停电"}]
+
+    @StrNullOrSize(groups = { CommonParamValidReset.class})
+    private String remark = null;//		方案库描述
+
+    @StrNullOrSize(min = 0,max = 255, groups = { CommonParamValidReset.class})
+    private String zoneId = null;//			监测分区ID
+
+    @StrNullOrSize(min = 0,max = 255, groups = { CommonParamValidReset.class})
+    private String zoneType = null;//		监测分区的主类型
+
+    @Size(min = 0,max = 255, groups = { CommonParamValidReset.class})
+    private String zone = null;//		监测分区的名称
+
+//    private Long updateTime		;//		数据修改时间
+
+    //对应的处置建议
+    private List<JPDispatchCmdBatchDispoal> dispoalList;
+
+    public boolean checkValid(){
+        if(!StringUtils.isEmpty(temperature)){
+            //TODO 说明传递了气温范围数组
+            try {
+                JSONArray jsonArray = JSONArray.parseArray(temperature);
+                if(jsonArray==null||jsonArray.size()!=2){
+                    return false;
+                }
+                if (jsonArray.getDouble(0)>=jsonArray.getDouble(1)){
+                    return false;
+                }
+            }catch(Exception ex){
+                //TODO 说明异常则返回false
+                return false;
+            }
+        }
+        if(!CollectionUtils.isEmpty(dispoalList)){
+            if(dispoalList.stream().anyMatch(x -> !x.checkValid())){
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public Map<String, Object> genUpdateMapObj(){
+        Map<String, Object> mapData = FastJsonUtil.objPositiveData2Map(this, true);
+        if (mapData != null){
+            mapData.remove(WODispatchDatabaseTable.W_INFO.PRIMARY_KEY);
+            mapData.remove("dispoalList");
+        }
+        return mapData;
+    }
+}

+ 28 - 0
src/main/java/com/shkpr/service/aimodelpower/jsonbean/woDispatchDatabase/JPDispatchDatabaseInfoView.java

@@ -0,0 +1,28 @@
+package com.shkpr.service.aimodelpower.jsonbean.woDispatchDatabase;
+
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidReset;
+import com.shkpr.service.aimodelpower.controllervalid.CommonParamValidSK;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+
+/**
+ * @ClassName JPDispatchDatabaseInfoSave
+ * @Description: TODO 删除模型
+ * @Author LX
+ * @Date 2024/7/25
+ * @Version V1.0
+ **/
+@Data
+public class JPDispatchDatabaseInfoView {
+//    private Integer id;//自增序列号
+
+    @NotBlank(groups = { CommonParamValidSK.class})
+    @Size(min = 1,max = 255, groups = { CommonParamValidSK.class})
+    private String databaseId;//方案库Id
+
+    public boolean checkValid(){
+        return true;
+    }
+}