jiangping
2024-12-13 77cb365302cc814df041e31e4a880d804a93383f
最新版本541200007
已添加4个文件
已修改8个文件
730 ■■■■■ 文件已修改
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunActController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 452 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/request/CarsAlarmListRequest.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/response/CarsAlarmListResponse.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/response/CarsAlarmResultListResponse.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/response/CarsEfcEventInfoResponse.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKCarOpenService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/tms/model/response/TmsCircleStatusListResponse.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/BoardCarsListVO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/TmsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunActController.java
@@ -71,6 +71,7 @@
        BoardCarsListVO data = boardService.platformJobCarsList();
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("根据车牌号查询作业信息和合同信息集合")
    @PostMapping("/getCarsJobDetails")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
@@ -36,12 +36,10 @@
@Slf4j
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/security")
public class SecurityController extends BaseController {
    @Autowired
    private BoardService boardService;
    @Autowired
    private VisitsService visitsService;
    @LoginNoRequired
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
@@ -49,7 +47,6 @@
        SecurityBoardVO data = boardService.centerSecurityData();
        return ApiResponse.success(data);
    }
    @LoginNoRequired
    @ApiOperation("园区安防设备")
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -1,10 +1,15 @@
package com.doumee.core.haikang.model;
import com.doumee.core.tms.model.TMSContants;
import com.doumee.core.utils.Constants;
import javafx.scene.effect.BlendMode;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
@Data
public class HKConstants {
@@ -26,6 +31,453 @@
     */
    public static final String ARTEMIS_PATH = "/artemis";
    public static void main(String[] args) {
        String t ="里程\t-30\t100\n" +
                " è¶…速报警 (设备围栏)\t-30\t8\n" +
                " è¿›å‡ºåŒºåŸŸ/路线报警(设备围栏)\t-30\t2\n" +
                " äººè„¸è€ƒå‹¤\t-30\t11\n" +
                " IC卡考勤\t-30\t11\n" +
                " äººè„¸æ¯”对结果\t-30\t10\n" +
                " ç‰¹æ®Šå¼‚常报警\t-30\t12\n" +
                " å‰å‘碰撞报警\t100\t1\n" +
                " è½¦é“偏向报警\t100\t2\n" +
                " è½¦è·è¿‡è¿‘报警\t100\t3\n" +
                " è¡Œäººç¢°æ’žæŠ¥è­¦\t100\t4\n" +
                " é¢‘繁变道报警\t100\t5\n" +
                " é“路标识超限报警\t100\t6\n" +
                " é“路标志超速报警\t100\t16\n" +
                " ä¸»åŠ¨æŠ“æ‹äº‹ä»¶\t100\t17\n" +
                " è½¦åŽ¢è¿‡é“è¡Œäººæ£€æµ‹\t100\t19\n" +
                " è½¦é“偏离右\t100\t20\n" +
                " è½¦é“偏离左\t100\t21\n" +
                " è·¯å£æŠ¥è­¦\t100\t30\n" +
                " è¶…速报警\t100\t31\n" +
                " æ–‘马线超速\t100\t32\n" +
                " æœªç¤¼è®©è¡Œäºº\t100\t33\n" +
                " è¿è§„占道行驶\t100\t34\n" +
                " é—¯çº¢ç¯\t100\t35\n" +
                " ç–²åŠ³é©¾é©¶æŠ¥è­¦\t101\t1\n" +
                " æŽ¥æ‰“电话报警\t101\t2\n" +
                " æŠ½çƒŸæŠ¥è­¦\t101\t3\n" +
                " åˆ†ç¥žé©¾é©¶æŠ¥è­¦\t101\t4\n" +
                " é©¾é©¶å‘˜å¼‚常 (包括驾驶员离岗)\t101\t5\n" +
                " é®æŒ¡\t101\t6\n" +
                " é©¾é©¶å‘˜äººè„¸èº«ä»½è¯†åˆ«äº‹ä»¶ (驾驶员检测异常,人脸不在库中)\t101\t9\n" +
                " æœªç³»å®‰å…¨å¸¦\t101\t17\n" +
                " æœªç³»å®‰å…¨å¸¦æŠ¥è­¦ å·¥ç¨‹è½¦\t101\t10\n" +
                " çº¢å¤–阻断墨镜\t101\t11\n" +
                " åŒæ‰‹è„±ç¦»æ–¹å‘盘\t101\t18\n" +
                " å•手脱离方向盘\t101\t13\n" +
                " æœªæˆ´å®‰å…¨å¸½\t101\t14\n" +
                " è‡ªåŠ¨æŠ“æ‹\t101\t16\n" +
                " éžæ³•关门\t101\t29\n" +
                " éžæ³•开门\t101\t30\n" +
                " çŽ©æ‰‹æœº\t101\t31\n" +
                " é¥®é…’驾驶\t101\t32\n" +
                " é†‰é…’驾驶\t101\t33\n" +
                " å¤šäººè„¸æŠ¥è­¦\t101\t48\n" +
                " é—­çœ¼\t101\t34\n" +
                " å‰AEB报警\t101\t101\n" +
                " ä¸æˆ´å£ç½©æŠ¥è­¦\t101\t100\n" +
                " èƒŽåŽ‹æŠ¥è­¦\t103\n" +
                " åŽæ–¹æŽ¥è¿‘报警\t102\t1\n" +
                " å·¦ä¾§åŽæ–¹æŽ¥è¿‘报警\t102\t2\n" +
                " å³ä¾§åŽæ–¹æŽ¥è¿‘报警\t102\t3\n" +
                " å‰å‘接近报警\t102\t4\n" +
                " ç–‘似非法注水报警\t102\t5\n" +
                " å‰è¶…声波报警\t102\t238\n" +
                " åŽè¶…声波报警\t102\t239\n" +
                " ç´§æ€¥æŠ¥è­¦\t102\t240\n" +
                " æ€¥åŠ é€Ÿ\t104\t1\n" +
                " æ€¥å‡é€Ÿ\t104\t2\n" +
                " ç¢°æ’ž\t104\t3\n" +
                " ä¾§ç¿»\t104\t4\n" +
                " æ€¥å·¦è½¬å¼¯\t104\t5\n" +
                " æ€¥å³è½¬å¼¯\t104\t6\n" +
                " æ€¥è½¬å¼¯(不区分左和右)\t104\t7\n" +
                " å‰§çƒˆé¢ ç°¸\t104\t255\n" +
                " æµ‹æ¸©æŠ¥è­¦\t170\n" +
                " é©¾é©¶å‘˜è¯ä»¶\t163\t163\n" +
                " å³è½¬å¼¯è¶…速\t238\t1\n" +
                " å³è½¬å¼¯ä¸åœè½¦\t238\t2\n" +
                " ä¸¾å‡äº‹ä»¶\t172\t1\n" +
                " å¯†é—­äº‹ä»¶\t172\t2\n" +
                " è½½é‡äº‹ä»¶\t172\t3\n" +
                " å‰è§†ç›²åŒºåˆ¶åЍ\t249 0xF9\t1\n" +
                " åŽè§†ç›²åŒºåˆ¶åЍ\t249\t2\n" +
                " å‰è¶…声波制动\t249\t3\n" +
                " åŽè¶…声波制动\t249\t4\n" +
                " å·¦è§†ç›²åŒºåˆ¶åЍ\t249\t5\n" +
                " å³è§†ç›²åŒºåˆ¶åЍ\t249\t6\n" +
                " å‰AEB制动\t249\t7\n" +
                " å‰è§†ç›²åŒºé¢„è­¦\t249\t21\n" +
                " åŽè§†ç›²åŒºé¢„è­¦\t249\t22\n" +
                " å‰è¶…声波预警\t249\t23\n" +
                " åŽè¶…声波预警\t249\t24\n" +
                " å·¦è§†ç›²åŒºé¢„è­¦\t249\t25\n" +
                " å³è§†ç›²åŒºé¢„è­¦\t249\t26\n" +
                " å‰AEB预警\t249\t27\n" +
                " ä¸»åŠ¨ä¸ŠæŠ¥æŠ¥è­¦äº‹ä»¶\t160\t0\n" +
                " å·¡æ£€ä¸ŠæŠ¥äº‹ä»¶\t160\t1\n" +
                " ç´§æ€¥æŠ¥è­¦\t25\t1\n" +
                " ç´§æ€¥æŠ¥è­¦\t-32\t0\n" +
                " è¶…速报警\t-32\t16\n" +
                " ç–²åг驾驶\t-32\t32\n" +
                " å±é™©é¢„è­¦\t-32\t33\n" +
                " GNSS模块故障\t-32\t2\n" +
                " GNSS天线未接入\t-32\t3\n" +
                " GNSS天线短路\t-32\t4\n" +
                " ç»ˆç«¯ä¸»ç”µæºæ¬ åŽ‹\t-32\t5\n" +
                " ç»ˆç«¯ä¸»ç”µæºæŽ‰ç”µ\t-32\t6\n" +
                " LCD或者显示屏故障\t-32\t7\n" +
                " TTS模块故障\t-32\t46\n" +
                " æ‘„像头故障\t-32\t9\n" +
                " é“路运输证IC卡模块故障\t-32\t34\n" +
                " è¶…速预警\t-32\t43\n" +
                " ç–²åŠ³é©¾é©¶é¢„è­¦\t-32\t35\n" +
                " è¿è§„行驶报警(2019)\t-32\t45\n" +
                " èƒŽåŽ‹(2019)\t-32\t44\n" +
                " å½“天累计驾驶超时\t-32\t18\n" +
                " è¶…时停车\t-32\t19\n" +
                " è¿›å‡ºåŒºåŸŸ\t-32\t20\n" +
                " è¿›å‡ºè·¯çº¿\t-32\t20\n" +
                " è·¯æ®µè¡Œé©¶æ—¶é—´ä¸è¶³/过长\t-32\t21\n" +
                " è·¯çº¿åç¦»æŠ¥è­¦\t-32\t36\n" +
                " è½¦è¾†VSS故障\t-32\t37\n" +
                " è½¦è¾†æ²¹é‡å¼‚常\t-32\t38\n" +
                " è½¦è¾†è¢«ç›—\t-32\t39\n" +
                " è½¦è¾†éžæ³•点火\t-32\t24\n" +
                " è½¦è¾†éžæ³•位移\t-32\t25\n" +
                " ç¢°æ’žæŠ¥è­¦\t-32\t40\n" +
                " ä¾§ç¿»é¢„è­¦\t-32\t41\n" +
                " äººè„¸é€šçŸ¥\t-30\t13\n" +
                " ä¸Šç­æ‰“卡\t-30\t14\n" +
                " å­˜å‚¨å™¨æ•…障报警\t-30\t23\n" +
                " å¸æœºæ‹”了TF卡\t-30\t50\n" +
                " å‰©ä½™æ²¹é‡ç™¾åˆ†æ¯”\t-30\t102\n" +
                " å¹³å‡æ²¹è€—\t-30\t103\n" +
                " æµ·æ‹”高度\t-30\t104\n" +
                " æ•æ„Ÿè¯äº‹ä»¶\t-30\t900\n" +
                " è½½å®¢ä¸æ‰“表\t-33\t0\n" +
                " ç©ºè½¬é‡\t-33\t2\n" +
                " æ€¥åŠ é€Ÿ\t104\t1\n" +
                " æ€¥å‡é€Ÿ\t104\t2\n" +
                " ç¢°æ’ž\t104\t3\n" +
                " ä¾§ç¿»\t104\t4\n" +
                " æ€¥å·¦è½¬å¼¯\t104\t5\n" +
                " æ€¥å³è½¬å¼¯\t104\t6\n" +
                " è¿è§„运营报警\t-33\t1\n" +
                " å¼‚常交接班\t0\t1\n" +
                " è½½å®¢çŠ¶æ€é•¿æ—¶é—´åœç•™\t0\t2\n" +
                " è¶…速\t0\t3\n" +
                " è€è™Žè¡¨\t0\t5\n" +
                " åŠ«æŒæŠ¥è­¦\t1\t0\n" +
                " è®¾å¤‡ç ´åæŠ¥è­¦\t1\t1\n" +
                " ç”Ÿç†ç–²åŠ³æŠ¥è­¦\t101\t1\n" +
                " å¼€è½¦æ‰“电话报警\t101\t2\n" +
                " å¼€è½¦æŠ½çƒŸæŠ¥è­¦\t101\t3\n" +
                " æ³¨æ„åŠ›åˆ†æ•£\t101\t4\n" +
                " è¶…时驾驶\t101\t8\n" +
                " é©¾é©¶å‘˜æ£€æµ‹å¼‚常(人脸不在库中)\t101\t9\n" +
                " æœªç³»å®‰å…¨å¸¦\t101\t17\n" +
                " åŒæ‰‹è„±ç¦»æ–¹å‘盘\t101\t18\n" +
                " é©¾é©¶å‘˜æ£€æµ‹å¼‚常(未检测到驾驶员)\t101\t5\n" +
                " æŽ¢å¤´é®æŒ¡\t101\t6\n" +
                " ä¸æˆ´å£ç½©æŠ¥è­¦\t101\t100\n" +
                " å…¶ä»–\t101\t255\n" +
                " è·¯å£è¶…速\t100\t7\n" +
                " ä¸ç¤¼è®©è¡Œäºº\t100\t18\n" +
                " è¡Œäººé˜²æ’ž\t100\t19\n" +
                " è½¦è·ç¦»è¿‡è¿‘\t100\t3\n" +
                " è½¦é“偏离右\t100\t20\n" +
                " è½¦é“偏离左\t100\t21\n" +
                " å‰å‘碰撞\t100\t1\n" +
                " å…¶ä»–\t100\t255\n" +
                " ç´§æ€¥æŠ¥è­¦\t-32\t0\n" +
                " é¢„è­¦\t-32\t1\n" +
                " å«æ˜Ÿå®šä½æ¨¡å—发生故障\t-32\t2\n" +
                " å«æ˜Ÿå®šä½å¤©çº¿æœªæŽ¥æˆ–者被剪断\t-32\t3\n" +
                " å«æ˜Ÿå®šä½å¤©çº¿çŸ­è·¯\t-32\t4\n" +
                " ISU ä¸»ç”µæºæ¬ åŽ‹\t-32\t5\n" +
                " ISU ä¸»ç”µæºæŽ‰ç”µ\t-32\t6\n" +
                " LCD显示ISU故障\t-32\t7\n" +
                " è¯­éŸ³åˆæˆæ¨¡å—æ•…éšœ\t-32\t8\n" +
                " æ‘„像头故障\t-32\t9\n" +
                " è®¡ä»·å™¨æ•…éšœ\t-32\t10\n" +
                " æœåŠ¡è¯„ä»·å™¨æ•…éšœ\t-32\t11\n" +
                " LED广告屏幕故障\t-32\t12\n" +
                " LCD显示屏故障\t-32\t13\n" +
                " å®‰å…¨è®¿é—®æ¨¡å—æ•…éšœ\t-32\t14\n" +
                " LED预灯故障\t-32\t15\n" +
                " è¶…速报警\t-32\t16\n" +
                " è¿žç»­é©¾é©¶è¶…æ—¶\t-32\t17\n" +
                " å½“天累计驾驶超时\t-32\t18\n" +
                " è¶…时停车\t-32\t19\n" +
                " è¿›å‡ºåŒºåŸŸ/路线\t-32\t20\n" +
                " è·¯æ®µè¡Œé©¶æ—¶é—´ä¸è¶³\t-32\t21\n" +
                " ç¦è¡Œè·¯æ®µè¡Œé©¶\t-32\t22\n" +
                " è½¦é€Ÿä¼ æ„Ÿå™¨æ•…éšœ\t-32\t23\n" +
                " è½¦è¾†éžæ³•点火\t-32\t24";
        String[] tt  = t.split("\n");
        List<String> list= new ArrayList<>();
        int index = 0;
        for(String s : tt){
            String[] ttt =s.split("\t");
            if(ttt.length<=2){
                System.err.println(s);
                continue;
            }
            String sss = "type"+index+"("+ index+",\""+ttt[0].replace(" ","")+"\"," + ttt[1]+","+ttt[2]+"),";
            list.add(sss);
            index++;
        }
        for(String s :list){
            System.out.println(s);
        }
    }
    public  enum CarsEventType {
        type0(0,"里程",-30,100),
        type1(1,"超速报警(设备围栏)",-30,8),
        type2(2,"进出区域/路线报警(设备围栏)",-30,2),
        type3(3,"人脸考勤",-30,11),
        type4(4,"IC卡考勤",-30,11),
        type5(5,"人脸比对结果",-30,10),
        type6(6,"特殊异常报警",-30,12),
        type7(7,"前向碰撞报警",100,1),
        type8(8,"车道偏向报警",100,2),
        type9(9,"车距过近报警",100,3),
        type10(10,"行人碰撞报警",100,4),
        type11(11,"频繁变道报警",100,5),
        type12(12,"道路标识超限报警",100,6),
        type13(13,"道路标志超速报警",100,16),
        type14(14,"主动抓拍事件",100,17),
        type15(15,"车厢过道行人检测",100,19),
        type16(16,"车道偏离右",100,20),
        type17(17,"车道偏离左",100,21),
        type18(18,"路口报警",100,30),
        type19(19,"超速报警",100,31),
        type20(20,"斑马线超速",100,32),
        type21(21,"未礼让行人",100,33),
        type22(22,"违规占道行驶",100,34),
        type23(23,"闯红灯",100,35),
        type24(24,"疲劳驾驶报警",101,1),
        type25(25,"接打电话报警",101,2),
        type26(26,"抽烟报警",101,3),
        type27(27,"分神驾驶报警",101,4),
        type28(28,"驾驶员异常(包括驾驶员离岗)",101,5),
        type29(29,"遮挡",101,6),
        type30(30,"驾驶员人脸身份识别事件(驾驶员检测异常,人脸不在库中)",101,9),
        type31(31,"未系安全带",101,17),
        type32(32,"未系安全带报警工程车",101,10),
        type33(33,"红外阻断墨镜",101,11),
        type34(34,"双手脱离方向盘",101,18),
        type35(35,"单手脱离方向盘",101,13),
        type36(36,"未戴安全帽",101,14),
        type37(37,"自动抓拍",101,16),
        type38(38,"非法关门",101,29),
        type39(39,"非法开门",101,30),
        type40(40,"玩手机",101,31),
        type41(41,"饮酒驾驶",101,32),
        type42(42,"醉酒驾驶",101,33),
        type43(43,"多人脸报警",101,48),
        type44(44,"闭眼",101,34),
        type45(45,"前AEB报警",101,101),
        type46(46,"不戴口罩报警",101,100),
        type47(47,"后方接近报警",102,1),
        type48(48,"左侧后方接近报警",102,2),
        type49(49,"右侧后方接近报警",102,3),
        type50(50,"前向接近报警",102,4),
        type51(51,"疑似非法注水报警",102,5),
        type52(52,"前超声波报警",102,238),
        type53(53,"后超声波报警",102,239),
        type54(54,"紧急报警",102,240),
        type55(55,"急加速",104,1),
        type56(56,"急减速",104,2),
        type57(57,"碰撞",104,3),
        type58(58,"ä¾§ç¿»",104,4),
        type59(59,"急左转弯",104,5),
        type60(60,"急右转弯",104,6),
        type61(61,"急转弯(不区分左和右)",104,7),
        type62(62,"剧烈颠簸",104,255),
        type63(63,"驾驶员证件",163,163),
        type64(64,"右转弯超速",238,1),
        type65(65,"右转弯不停车",238,2),
        type66(66,"举升事件",172,1),
        type67(67,"密闭事件",172,2),
        type68(68,"载重事件",172,3),
        type69(69,"前视盲区制动",249 ,1),
        type70(70,"后视盲区制动",249,2),
        type71(71,"前超声波制动",249,3),
        type72(72,"后超声波制动",249,4),
        type73(73,"左视盲区制动",249,5),
        type74(74,"右视盲区制动",249,6),
        type75(75,"前AEB制动",249,7),
        type76(76,"前视盲区预警",249,21),
        type77(77,"后视盲区预警",249,22),
        type78(78,"前超声波预警",249,23),
        type79(79,"后超声波预警",249,24),
        type80(80,"左视盲区预警",249,25),
        type81(81,"右视盲区预警",249,26),
        type82(82,"前AEB预警",249,27),
        type83(83,"主动上报报警事件",160,0),
        type84(84,"巡检上报事件",160,1),
        type85(85,"紧急报警",25,1),
        type86(86,"紧急报警",-32,0),
        type87(87,"超速报警",-32,16),
        type88(88,"疲劳驾驶",-32,32),
        type89(89,"危险预警",-32,33),
        type90(90,"GNSS模块故障",-32,2),
        type91(91,"GNSS天线未接入",-32,3),
        type92(92,"GNSS天线短路",-32,4),
        type93(93,"终端主电源欠压",-32,5),
        type94(94,"终端主电源掉电",-32,6),
        type95(95,"LCD或者显示屏故障",-32,7),
        type96(96,"TTS模块故障",-32,46),
        type97(97,"摄像头故障",-32,9),
        type98(98,"道路运输证IC卡模块故障",-32,34),
        type99(99,"超速预警",-32,43),
        type100(100,"疲劳驾驶预警",-32,35),
        type101(101,"违规行驶报警(2019)",-32,45),
        type102(102,"胎压(2019)",-32,44),
        type103(103,"当天累计驾驶超时",-32,18),
        type104(104,"超时停车",-32,19),
        type105(105,"进出区域",-32,20),
        type106(106,"进出路线",-32,20),
        type107(107,"路段行驶时间不足/过长",-32,21),
        type108(108,"路线偏离报警",-32,36),
        type109(109,"车辆VSS故障",-32,37),
        type110(110,"车辆油量异常",-32,38),
        type111(111,"车辆被盗",-32,39),
        type112(112,"车辆非法点火",-32,24),
        type113(113,"车辆非法位移",-32,25),
        type114(114,"碰撞报警",-32,40),
        type115(115,"侧翻预警",-32,41),
        type116(116,"人脸通知",-30,13),
        type117(117,"上班打卡",-30,14),
        type118(118,"存储器故障报警",-30,23),
        type119(119,"司机拔了TF卡",-30,50),
        type120(120,"剩余油量百分比",-30,102),
        type121(121,"平均油耗",-30,103),
        type122(122,"海拔高度",-30,104),
        type123(123,"敏感词事件",-30,900),
        type124(124,"载客不打表",-33,0),
        type125(125,"空转重",-33,2),
        type126(126,"急加速",104,1),
        type127(127,"急减速",104,2),
        type128(128,"碰撞",104,3),
        type129(129,"ä¾§ç¿»",104,4),
        type130(130,"急左转弯",104,5),
        type131(131,"急右转弯",104,6),
        type132(132,"违规运营报警",-33,1),
        type133(133,"异常交接班",0,1),
        type134(134,"载客状态长时间停留",0,2),
        type135(135,"超速",0,3),
        type136(136,"老虎表",0,5),
        type137(137,"劫持报警",1,0),
        type138(138,"设备破坏报警",1,1),
        type139(139,"生理疲劳报警",101,1),
        type140(140,"开车打电话报警",101,2),
        type141(141,"开车抽烟报警",101,3),
        type142(142,"注意力分散",101,4),
        type143(143,"超时驾驶",101,8),
        type144(144,"驾驶员检测异常(人脸不在库中)",101,9),
        type145(145,"未系安全带",101,17),
        type146(146,"双手脱离方向盘",101,18),
        type147(147,"驾驶员检测异常(未检测到驾驶员)",101,5),
        type148(148,"探头遮挡",101,6),
        type149(149,"不戴口罩报警",101,100),
        type150(150,"其他",101,255),
        type151(151,"路口超速",100,7),
        type152(152,"不礼让行人",100,18),
        type153(153,"行人防撞",100,19),
        type154(154,"车距离过近",100,3),
        type155(155,"车道偏离右",100,20),
        type156(156,"车道偏离左",100,21),
        type157(157,"前向碰撞",100,1),
        type158(158,"其他",100,255),
        type159(159,"紧急报警",-32,0),
        type160(160,"预警",-32,1),
        type161(161,"卫星定位模块发生故障",-32,2),
        type162(162,"卫星定位天线未接或者被剪断",-32,3),
        type163(163,"卫星定位天线短路",-32,4),
        type164(164,"ISU主电源欠压",-32,5),
        type165(165,"ISU主电源掉电",-32,6),
        type166(166,"LCD显示ISU故障",-32,7),
        type167(167,"语音合成模块故障",-32,8),
        type168(168,"摄像头故障",-32,9),
        type169(169,"计价器故障",-32,10),
        type170(170,"服务评价器故障",-32,11),
        type171(171,"LED广告屏幕故障",-32,12),
        type172(172,"LCD显示屏故障",-32,13),
        type173(173,"安全访问模块故障",-32,14),
        type174(174,"LED预灯故障",-32,15),
        type175(175,"超速报警",-32,16),
        type176(176,"连续驾驶超时",-32,17),
        type177(177,"当天累计驾驶超时",-32,18),
        type178(178,"超时停车",-32,19),
        type179(179,"进出区域/路线",-32,20),
        type180(180,"路段行驶时间不足",-32,21),
        type181(181,"禁行路段行驶",-32,22),
        type182(182,"车速传感器故障",-32,23),
        type183(183,"车辆非法点火",-32,24),
        type184(184,"胎压报警",103,null),
        type185(185,"测温报警",170,null)
        ;
        // æˆå‘˜å˜é‡
        private int key;
        private  Integer type    ;
        private  Integer subType    ;
        private String name;
        public static String getName(Integer type,Integer subType) {
            for (CarsEventType c : CarsEventType.values()) {
                if (Constants.equalsInteger(c.getType(),type) && Constants.equalsInteger(c.getSubType(),subType)) {
                    return c.getName();
                }
            }
            return null;
        }
        // æž„造方法
        CarsEventType(int key, String name,  Integer type,Integer subType) {
            this.key = key;
            this.subType = subType;
            this.type = type;
            this.name = name;
        }
        public Integer getType() {
            return type;
        }
        public Integer getSubType() {
            return subType;
        }
        public void setSubType(Integer subType) {
            this.subType = subType;
        }
        public int getKey() {
            return key;
        }
        public void setKey(int key) {
            this.key = key;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public void setType(Integer type) {
            this.type = type;
        }
    }
    /**
     å•点登录模块菜单标识:
     1、安防中心:afzx
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/request/CarsAlarmListRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.doumee.core.haikang.model.cars.request;
import lombok.Data;
/**
 * è®¾å¤‡åˆ—表请求信息
 */
@Data
public class CarsAlarmListRequest {
    private Integer   pageSize;//    é¡µé¢å¤§å°    Integer    1000    å¦
    private Integer   pageNo    ;//当前页    Integer    1
    private String   deviceCode    ;//设备终端手机号    String    æ—     æ˜¯
    private String   startTime    ;//开始时间yyyy-MM-dd HH:mm:ss    String    æ—     æ˜¯
    private String   endTime    ;//结束时间yyyy-MM-dd HH:mm:ss    String    æ—     æ˜¯
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/response/CarsAlarmListResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.doumee.core.haikang.model.cars.response;
import lombok.Data;
import java.util.List;
import java.util.List;
/**
 * è®¾å¤‡åˆ—表单元信息
 * @param <T>
 */
@Data
public class CarsAlarmListResponse<T> {
        private String   deviceCode;//    è®¾å¤‡ç»ˆç«¯æ‰‹æœºå·    String
        private String   productKey    ;//设备所属型号的产品密钥    String
        private Integer   type    ;//报警类型    Integer
        private Integer   subType    ;//报警子类(报警类型和报警子类可确定唯一报警类型)    Integer
        private Integer   level    ;//报警级别 0x01:1预警 0x02:2报警    Integer
        private Integer   frontCarSpeed    ;//前车速度Km/h    Integer
        private Integer   frontDistance    ;//前车/行人距离    Integer
        private Integer   deviationType    ;//偏离类型 0x01:左侧偏离 0x02:右侧偏离    Integer
        private Integer   roadSignsType    ;//道路标志识别类型 0x01:限速标志 0x02:限高标志 0x03:限重标志    Integer
        private Integer   roadSignsValue    ;//道路标志识别数据    Integer
        private Integer   speed;//    è½¦é€Ÿ å•位Km/h    Integer
        private Integer   altitude;//    æµ·æ‹”高度 å•位m    Short
        private Double   longitude;//    ç»åº¦    Double
        private Double   latitude;//    çº¬åº¦    Double
        private String   time;//    YY-MM-DD-hh-mm-ss ï¼ˆGMT+8时间)    String
        private Integer   accState;//    acc状态    Integer
        private Integer   leftTurnState    ;//左转向状态,0:关闭,1:打开    Integer
        private Integer   rightTurnState;//    å³è½¬å‘状态,0:关闭,1:打开    Integer
        private Integer   wiperState;//    é›¨åˆ®å™¨çŠ¶æ€ï¼Œ 0:关闭,1:打开    Integer
        private Integer   brakingState;//    åˆ¶åŠ¨çŠ¶æ€ï¼Œ0:未制动,1:制动    Integer
        private Integer   cardState    ;//插卡状态,0:未插卡,1:已插卡    Integer
        private Integer   gpsValid;//    å®šä½çŠ¶æ€ï¼Œ0:未定位,1:已定位    Integer
        private String   deviceId;//    ç»ˆç«¯ID    String
        private String   alarmSignTime    ;//报警标识时间    String
        private Integer   index    ;//序号    Integer
        private Integer   attachCount;//    é™„件个数,附件数>0的报警,可以调用“查询设备报警附件”接口查询附件信息    Integer
        private String   alarmSign    ;//报警标识号 ç»ˆç«¯ID-时间-序号-附件数量    String
        private Integer   fatigueDegree;//    ç–²åŠ³ç¨‹åº¦ï¼ŒèŒƒå›´1~10。数值越大表示疲劳程度越严重    Integer
        private String   carSign;//车牌颜色为0时,表示车辆 VIN;否则,表示公安交通管理部门颁发的机动车号牌    String
        private Integer   areaType;//区域、道路类型    Integer
        private Integer   areaId    ;//区域、道路编号    Integer
        private Integer   efcType;//    è¿›å‡ºæŠ¥è­¦ç±»åž‹(0:进入区域,1:离开区域)    Integer
        private String   qualificationNumber    ;//驾驶员从业资格证号    String
        private Integer   chanNo    ;//逻辑通道号    Integer
        private String   attachInfo    ;//报警附件信息,attachFlag为true时该字段有效,详细字段见*表2    Object
        private String   efcName    ;//电子围栏名称    String
        private String   efcUuid    ;//电子围栏uuid    String
        private Integer   limitState    ;//出入限制(1:禁止驶入;2:禁止驶出:3:路线偏离)    Integer
        private String   position;//    æŠ¥è­¦ä½ç½®    String
        private Integer   moveState    ;//运动状态,0:停止,1:行驶    Integer
        private Integer   voltage;//    ç”µç“¶ç”µåŽ‹ï¼Œæ”¾å¤§1000倍    Integer
        private Integer   temperature;//    è®¾å¤‡æ¸©åº¦ï¼Œæ”¾å¤§1000倍    Integer
        private Integer   wakeupType    ;//设备唤醒源    Integer
        private Integer   Tvistatus    ;//后拉相机录像状态    Integer
        private Integer   LTEpower;//    4G模块供电    Integer
        private Integer   LTEstatus;//    4G模块在位信号    Integer
        private Integer   parkmode;//    åœè½¦ç›‘控模式    Integer
        private Integer   uploadType;//    ä¸ŠæŠ¥æ¶ˆæ¯ç±»åž‹    Integer
        private Integer   stayTime ;//    æŠ¥è­¦æ—¶å·²ç»åœç•™çš„æ—¶é•¿ï¼Œåˆ†é’Ÿ    Integer
        private Long   stayId    ;//途经点id    Long
    private String   efcEventInfo;//    ç”µå­å›´æ æŠ¥è­¦è¯¦æƒ…信息    Object
    private String   gpsData    ;//报警对应的GPS信息    Object
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/response/CarsAlarmResultListResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.doumee.core.haikang.model.cars.response;
import lombok.Data;
/**
 * è®¾å¤‡åˆ—表单元信息
 */
@Data
public class CarsAlarmResultListResponse{
        private Integer   type    ;//报警类型    Integer
        private Integer   subType    ;//报警子类(报警类型和报警子类可确定唯一报警类型)    Integer
        private String   time;//    YY-MM-DD-hh-mm-ss ï¼ˆGMT+8时间)    String
        private String carCode;//车牌号
        private String title;//类型名称
        private long timeStamp;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/cars/response/CarsEfcEventInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.doumee.core.haikang.model.cars.response;
import lombok.Data;
/**
 * è®¾å¤‡åˆ—表单元信息
 * @param <T>
 */
@Data
public class CarsEfcEventInfoResponse<T> {
        private String   deviceCode;//    è®¾å¤‡ç»ˆç«¯æ‰‹æœºå·    String
        private String   productKey    ;//设备所属型号的产品密钥    String
        private Integer   type    ;//报警类型    Integer
        private Integer   subType    ;//报警子类(报警类型和报警子类可确定唯一报警类型)    Integer
        private Integer   level    ;//报警级别 0x01:1预警 0x02:2报警    Integer
        private Integer   frontCarSpeed    ;//前车速度Km/h    Integer
        private Integer   frontDistance    ;//前车/行人距离    Integer
        private Integer   deviationType    ;//偏离类型 0x01:左侧偏离 0x02:右侧偏离    Integer
        private Integer   roadSignsType    ;//道路标志识别类型 0x01:限速标志 0x02:限高标志 0x03:限重标志    Integer
        private Integer   roadSignsValue    ;//道路标志识别数据    Integer
        private Integer   speed;//    è½¦é€Ÿ å•位Km/h    Integer
        private Integer   altitude;//    æµ·æ‹”高度 å•位m    Short
        private Double   longitude;//    ç»åº¦    Double
        private Double   latitude;//    çº¬åº¦    Double
        private String   time;//    YY-MM-DD-hh-mm-ss ï¼ˆGMT+8时间)    String
        private Integer   accState;//    acc状态    Integer
        private Integer   leftTurnState    ;//左转向状态,0:关闭,1:打开    Integer
        private Integer   rightTurnState;//    å³è½¬å‘状态,0:关闭,1:打开    Integer
        private Integer   wiperState;//    é›¨åˆ®å™¨çŠ¶æ€ï¼Œ 0:关闭,1:打开    Integer
        private Integer   brakingState;//    åˆ¶åŠ¨çŠ¶æ€ï¼Œ0:未制动,1:制动    Integer
        private Integer   cardState    ;//插卡状态,0:未插卡,1:已插卡    Integer
        private Integer   gpsValid;//    å®šä½çŠ¶æ€ï¼Œ0:未定位,1:已定位    Integer
        private String   deviceId;//    ç»ˆç«¯ID    String
        private String   alarmSignTime    ;//报警标识时间    String
        private Integer   index    ;//序号    Integer
        private Integer   attachCount;//    é™„件个数,附件数>0的报警,可以调用“查询设备报警附件”接口查询附件信息    Integer
        private String   alarmSign    ;//报警标识号 ç»ˆç«¯ID-时间-序号-附件数量    String
        private Integer   fatigueDegree;//    ç–²åŠ³ç¨‹åº¦ï¼ŒèŒƒå›´1~10。数值越大表示疲劳程度越严重    Integer
        private String   carSign;//车牌颜色为0时,表示车辆 VIN;否则,表示公安交通管理部门颁发的机动车号牌    String
        private Integer   areaType;//区域、道路类型    Integer
        private Integer   areaId    ;//区域、道路编号    Integer
        private Integer   efcType;//    è¿›å‡ºæŠ¥è­¦ç±»åž‹(0:进入区域,1:离开区域)    Integer
        private String   qualificationNumber    ;//驾驶员从业资格证号    String
        private Integer   chanNo    ;//逻辑通道号    Integer
        private String   attachInfo    ;//报警附件信息,attachFlag为true时该字段有效,详细字段见*表2    Object
        private String   efcName    ;//电子围栏名称    String
        private String   efcUuid    ;//电子围栏uuid    String
        private Integer   limitState    ;//出入限制(1:禁止驶入;2:禁止驶出:3:路线偏离)    Integer
        private String   position;//    æŠ¥è­¦ä½ç½®    String
        private Integer   moveState    ;//运动状态,0:停止,1:行驶    Integer
        private Integer   voltage;//    ç”µç“¶ç”µåŽ‹ï¼Œæ”¾å¤§1000倍    Integer
        private Integer   temperature;//    è®¾å¤‡æ¸©åº¦ï¼Œæ”¾å¤§1000倍    Integer
        private Integer   wakeupType    ;//设备唤醒源    Integer
        private Integer   Tvistatus    ;//后拉相机录像状态    Integer
        private Integer   LTEpower;//    4G模块供电    Integer
        private Integer   LTEstatus;//    4G模块在位信号    Integer
        private Integer   parkmode;//    åœè½¦ç›‘控模式    Integer
        private Integer   uploadType;//    ä¸ŠæŠ¥æ¶ˆæ¯ç±»åž‹    Integer
        private Integer   stayTime ;//    æŠ¥è­¦æ—¶å·²ç»åœç•™çš„æ—¶é•¿ï¼Œåˆ†é’Ÿ    Integer
        private Long   stayId    ;//途经点id    Long
    private String   efcEventInfo;//    ç”µå­å›´æ æŠ¥è­¦è¯¦æƒ…信息    Object
    private String   gpsData    ;//报警对应的GPS信息    Object
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKCarOpenService.java
@@ -2,13 +2,13 @@
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.TypeReference;
    import com.doumee.core.haikang.model.HKConstants;
    import com.doumee.core.haikang.model.cars.BaseCarsPageResponse;
    import com.doumee.core.haikang.model.cars.BaseCarsResponse;
    import com.doumee.core.haikang.model.cars.request.CarsAlarmListRequest;
    import com.doumee.core.haikang.model.cars.request.CarsDeviceRequest;
    import com.doumee.core.haikang.model.cars.request.CarsGpsRequest;
    import com.doumee.core.haikang.model.cars.response.CarsDeviceDetaisResponse;
    import com.doumee.core.haikang.model.cars.response.CarsDeviceResponse;
    import com.doumee.core.haikang.model.cars.response.CarsGpsResponse;
    import com.doumee.core.haikang.model.cars.response.*;
    import com.doumee.core.haikang.model.param.BaseListPageResponse;
    import com.doumee.core.haikang.model.param.BaseResponse;
    import com.doumee.core.haikang.model.param.respose.FindHomeAlarmInfoPageResponse;
@@ -124,6 +124,40 @@
        }
        return list;
    }
    public static List<CarsAlarmResultListResponse> getAlarmEvemtList(List<CarsDeviceDetaisResponse> detaisResponses ,  Date date) {
        List<CarsAlarmResultListResponse> list = new ArrayList<>();
        if(detaisResponses ==null || detaisResponses.size()==0){
            return list ;
        }
        CarsAlarmListRequest param = new CarsAlarmListRequest();
        param.setStartTime(DateUtil.getPlusTime2(DateUtil.getStartOfDay(date)));
        param.setEndTime(DateUtil.getPlusTime2(DateUtil.getEndOfDay(date)));
        param.setPageNo(1);
        param.setPageSize(100);
        for( CarsDeviceDetaisResponse de :detaisResponses ){
            param.setDeviceCode(de.getTerminalID());
            BaseCarsPageResponse<CarsAlarmListResponse>  data = getAlarmList(param);
            if(data!=null &&data.getResults()!=null){
                for(CarsAlarmListResponse model :data.getResults()){
                    CarsAlarmResultListResponse tm = new CarsAlarmResultListResponse();
                    tm.setTime(model.getTime());
                    tm.setCarCode(de.getPlateNum());
                    tm.setType(model.getType());
                    tm.setSubType(model.getSubType());
                    Date tmDate = DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss", tm.getTime() );
                    if(tmDate!=null){
                        tm.setTimeStamp(tmDate.getTime());
                    }
                    tm.setTitle(HKConstants.CarsEventType.getName(tm.getType(),tm.getSubType()));
                    list.add(tm);
                }
            }
        }
        Collections.sort(list, (o1, o2) -> {
            return (int) (o1.getTimeStamp() - o2.getTimeStamp()); //按数量从大到小排序
        });
        return list;
    }
    private static CarsDeviceDetaisResponse getFromListById(String key, List<CarsDeviceDetaisResponse> list) {
        for(CarsDeviceDetaisResponse dd  :list){
@@ -220,7 +254,7 @@
        String url = BASE_URL + "device/list/";
        TreeMap<String, String> BASE_PARAMS = getBaseParams();
        if(StringUtils.isNotBlank(param.getProductKey())){
            BASE_PARAMS.put("productKey", "");//设备型号秘钥
            BASE_PARAMS.put("productKey", param.getProductKey());//设备型号秘钥
        }
        BASE_PARAMS.put("pageSize",Constants.equalsInteger(param.getPageSize(),0)? "100":param.getPageSize().toString());//页面大小
        BASE_PARAMS.put("pageNo", Constants.equalsInteger(param.getPageNo(),0)? "1":param.getPageNo().toString());//当前页
@@ -233,4 +267,25 @@
        }
        return  null;
    }
    public static BaseCarsPageResponse<CarsAlarmListResponse> getAlarmList(CarsAlarmListRequest param)  {
        String url = BASE_URL + "alarm/list/";
        TreeMap<String, String> BASE_PARAMS = getBaseParams();
        if(StringUtils.isNotBlank(param.getStartTime())){
            BASE_PARAMS.put("startTime", param.getStartTime());
        }
        if(StringUtils.isNotBlank(param.getEndTime())){
            BASE_PARAMS.put("endTime", param.getEndTime());
        }
        BASE_PARAMS.put("deviceCode", param.getDeviceCode());
        BASE_PARAMS.put("pageSize",Constants.equalsInteger(param.getPageSize(),0)? "100":param.getPageSize().toString());//页面大小
        BASE_PARAMS.put("pageNo", Constants.equalsInteger(param.getPageNo(),0)? "1":param.getPageNo().toString());//当前页
        String str = sendRequest(url,BASE_PARAMS);
        TypeReference typeReference =
                new TypeReference<BaseCarsResponse<BaseCarsPageResponse<CarsAlarmListResponse>>>(){};
        BaseCarsResponse<BaseCarsPageResponse<CarsAlarmListResponse>>   result = JSONObject.parseObject(str, typeReference.getType());
        if(result!=null && Constants.equalsInteger(result.getStatus(),0)){
            return  result.getData();
        }
        return  null;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/tms/model/response/TmsCircleStatusListResponse.java
@@ -13,8 +13,12 @@
   /**
    */
   private String  recordDate    ;//字符串    çŠ¶æ€è®°å½•æ—¶é—´
   private Integer   orderStatus    ;//字符串    è®¢å•状态码
   private String orderStatusDes    ;//字符串    è®¢å•状态描述
   private String recordDate    ;//字符串    çŠ¶æ€è®°å½•æ—¶é—´
   private Integer  orderStatus;//    å­—符串    è®¢å•状态码
   private Integer type;//    å­—符串    è®¢å•状态记录类型
   private String  canCelReason;//    å­—符串    æ’¤é”€åŽŸå› 
   private String  tel    ;//字符串    å·ç 
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/BoardCarsListVO.java
@@ -1,5 +1,6 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.core.haikang.model.cars.response.CarsAlarmResultListResponse;
import com.doumee.core.haikang.model.cars.response.CarsDeviceDetaisResponse;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -25,6 +26,7 @@
    @ApiModelProperty(value = "离线数量")
    private int offlineNum;
    @ApiModelProperty(value = "报警信息列表")
    List<CarsAlarmResultListResponse> eventList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -5,6 +5,7 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.cars.response.CarsAlarmResultListResponse;
import com.doumee.core.haikang.model.cars.response.CarsDeviceDetaisResponse;
import com.doumee.core.haikang.model.param.BaseListPageRequest;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
@@ -952,6 +953,7 @@
    public     BoardCarsListVO platformJobCarsList(){
        BoardCarsListVO data = new BoardCarsListVO();
        List<CarsDeviceDetaisResponse> detaisResponses = HKCarOpenService.getAllCarsDetais();
        List<CarsAlarmResultListResponse> eventList = HKCarOpenService.getAlarmEvemtList(detaisResponses,new Date());
        data.setCarsList(detaisResponses);
        if(data.getCarsList()!=null && data.getCarsList().size()>0){
            List<String> codes = new ArrayList<>();
@@ -959,7 +961,7 @@
            int online = 0;
            for(CarsDeviceDetaisResponse model:detaisResponses){
                if(Constants.equalsInteger(model.getStatus(),Constants.ONE) ||Constants.equalsInteger(model.getStatus(),Constants.TWO)){
                   //如果是在线或者休眠,查询在途还是空闲
                   //如果是在线或者休眠,查询在途还是空闲ty
                    codes.add(model.getPlateNum());
                }else
                    data.setOfflineNum(data.getOfflineNum()+1);
@@ -1219,7 +1221,8 @@
        param.setPeriodType("day");
        BigDecimal total = new BigDecimal(0);
        BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null&& response.getData().getYvalues()!=null ){
            for (int i = 0; i < response.getData().getYvalues().get(0).getValue().length; i++) {
                total = total.add(new BigDecimal(StringUtils.defaultString( response.getData().getYvalues().get(0).getValue()[i],"0")));
            }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/TmsServiceImpl.java
@@ -134,22 +134,24 @@
                TmsCircleStatusResultListResponse t = new TmsCircleStatusResultListResponse();
                TMSContants.TopStatusLevel tem = TMSContants.TopStatusLevel.ddsc;
                if(i == 0){
                    tem=TMSContants.TopStatusLevel.ddsc;
                    tem=TMSContants.TopStatusLevel.yrk;
                } if(i == 1){
                    tem=TMSContants.TopStatusLevel.ydpzz;
                    tem=TMSContants.TopStatusLevel.ydh;
                } if(i == 2){
                    tem=TMSContants.TopStatusLevel.ckckz;
                } if(i == 3){
                    tem=TMSContants.TopStatusLevel.clysz;
                } if(i == 4){
                    tem=TMSContants.TopStatusLevel.ydh;
                    tem=TMSContants.TopStatusLevel.ckckz;
                } if(i == 3){
                    tem=TMSContants.TopStatusLevel.ydpzz;
                } if(i == 5){
                    tem=TMSContants.TopStatusLevel.yrk;
                    tem=TMSContants.TopStatusLevel.ddsc;
                }
                t.setName(tem.getName());
                t.setKey(tem.getKey());
                t.setSecondList(getSecondCircleStatusList(tem,response.getData()));
                list.add(t);
                if(t.getSecondList()!=null & t.getSecondList().size()>0){
                    list.add(t);
                }
            }
        }
@@ -166,11 +168,11 @@
            for(Integer t :statusList){
                for(TmsCircleStatusListResponse status :data){
                    if(Constants.equalsInteger(status.getOrderStatus(),Constants.FOUR)
                            && Constants.equalsInteger(status.getOrderStatus(),TMSContants.StatusCode.app)) {
                            && Constants.equalsInteger(status.getType(),TMSContants.StatusCode.app)) {
                        status.setOrderStatus(TMSContants.ChildStatusLevel.clqdapp.getKey());
                    }
                    if(Constants.equalsInteger(status.getOrderStatus(),Constants.FIVE)
                            && Constants.equalsInteger(status.getOrderStatus(),TMSContants.StatusCode.app)) {
                            && Constants.equalsInteger(status.getType(),TMSContants.StatusCode.app)) {
                        status.setOrderStatus(TMSContants.ChildStatusLevel.ddzhd.getKey());
                    }
                    if(Constants.equalsInteger(status.getOrderStatus(),t )){