jiangping
2024-11-04 2b4ecab8cb9d048f0ef64e48ac3ff7da6a56d8c8
最新版本541200007
已添加12个文件
已修改14个文件
1474 ■■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/TestTool.java 465 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarsCloudController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageRequest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CameraPreviewURLsRequest.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SensorStatusListRequest.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/CamerasPreviewURLsResponse.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageCameraInfoResponse.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageFireChannelInfoResponse.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageSensorStatusResponse.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/request/CarsImport.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarmeraListVO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/RegionTreeVO.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarsService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncInitConfigServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -426,6 +426,7 @@
    public interface RedisKeys {
        public static final String IMPORTING_CARS ="IMPORTING_CARS";
        public static final String IMPORTING_MEMBER ="IMPORTING_MEMBER";
        public static final String IMPORTING_GAS ="IMPORTING_GAS";
        public static final String ERP_TOKEN ="ERP_TOKEN";
@@ -920,7 +921,7 @@
    /**
     * æœˆå°ä½œä¸š çŠ¶æ€
     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å·
     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å· 12已取消
     */
    public  enum PlatformJobStatus {
        WAIT_CONFIRM(0, "待确认","待确认" ),
server/system_service/src/main/java/com/doumee/core/utils/TestTool.java
@@ -911,11 +911,450 @@
        };
        String[] carsPhone = new String[]{
                "皖AB6219-15256553434",
                "皖AE301R-13866781208",
                "皖A01213-13856004205",
                "皖A9G467-18855126212",
                "皖AAT569-13705600310",
                "皖AA8196-13705691362",
                "皖AAT561-13705600310",
                "皖AA8593-15055179136",
                "皖AA8559-13485727850",
                "皖AA8565-17505515701",
                "皖AA8573-13966686381",
                "皖AA8117-15155165536",
                "皖AA8580-18949230358",
                "皖AJ5118-15955159992",
                "皖AJ1371-18010863058",
                "皖AJ0691-13965105584",
                "皖AJ0665-15255133586",
                "皖AJ8818-13955160295",
                "皖AJ9221-13966655585",
                "皖AJ0609-13866171458",
                "皖AJ3080-13075519010",
                "皖AL0601-15055107708",
                "皖AL1971-13655604645",
                "皖AL8313-13965137528",
                "皖AL1761-17505690187",
                "皖AL9179-13965020562",
                "皖AL0390-18010882575",
                "皖AL5131-13515644306",
                "皖AL0201-13905601520",
                "皖AL2771-13637094407",
                "皖AL7131-13865991467",
                "皖K9072C-15905583796",
                "皖AF69F5-13955008600",
                "皖MGG862-13955008855",
                "皖AC669Y-13605511715",
                "皖AY6Y57-13856987728",
                "皖AA99719-13855002548",
                "皖AF727Y-13965073377",
                "皖A7H319-15375258610",
                "皖AA32898-13965029965",
                "皖AD15312-18056098020",
                "皖ABB189-13855191889",
                "皖A81B27-18856963616",
                "皖A783GX-15255621599",
                "皖AQM306-18856963616",
                "皖A22U80-13866161051",
                "皖ASJ523-13866161051",
                "皖AWX972-13956088283",
                "皖AXU128-13956055677",
                "皖AA1535-13956055677",
                "皖AY9T09-13856085586",
                "皖AFJ4499-13856085586",
                "皖BX111S-13966767600",
                "皖AD9Z39-18055162696",
                "晥ACH956-13855159797",
                "晥ADR5227-13865509512",
                "晥AJ617Z-13866754556",
                "晥AV063U-18855192890",
                "晥AV5P23-18155183418",
                "晥A6VF72-18656025577",
                "晥ANR728-13866796112",
                "皖A43970-13956077896",
                "皖ANN900-13956975120",
                "皖AL1Z26-13956975120",
                "皖ALP828-13739262204",
                "皖AC289Y-13956008165",
                "皖AA0G39-19956003192",
                "皖AGU016-13856056195",
                "皖AL56R0-13956908148",
                "皖AA01110-18055417732",
                "皖APY305-18055417732",
                "皖ARL218-13955132837",
                "皖AZH216-15155141103",
                "皖AG2088-18005694101",
                "皖AA61999-18255991615",
                "皖AA38669-19956003192",
                "皖ADK9306-13956808695",
                "皖A10110-13855153156",
                "皖A135NR-13339299171",
                "皖A38566-18919690881",
                "皖A39961-18919690772",
                "皖AE4W46-18856910835",
                "皖AF293T-18919690767",
                "皖A2953B-18919690767",
                "皖AB13A8-18956055277",
                "皖AQ69X7-13956977985",
                "皖AB7M36-18856910817",
                "皖AH39X5-13856019166",
                "皖A7UK93-13855176573",
                "皖A1DK59-13855140034",
                "皖A3MK59-18919690767",
                "皖A0BL38-18856910907",
                "皖AV31B8-13665655857",
                "皖AEE842-18919690767",
                "皖A8315A-13856063769",
                "皖A2NK09-18856910815",
                "皖A1729B-18919690767",
                "皖AE0W92-18919690767",
                "皖AEN372-18919690767",
                "皖AVM416-18919690767",
                "皖AYC151-18919690767",
                "皖A0265F-18919690767",
                "皖AE5N69-18919690767",
                "皖A0CM93-18919690767",
                "皖AC935U-18919690767",
                "皖AW092Z-13855123707",
                "皖AV50A0-18856910853",
                "皖A7VM93-13956079487",
                "皖AW5B19-18955151555",
                "皖A2EL08-13855195399",
                "皖AP33B9-13505612412",
                "皖AM39A3-18856910800",
                "皖AD2250-15395033218",
                "皖A46E69-13855192234",
                "皖AX32A1-13764070633",
                "皖AAC748-19956056535",
                "皖A0352Z-13605516917",
                "皖A5X011-13605516917",
                "皖AA1292-13605516917",
                "皖ADD1065-13605516917",
                "皖AQ23R8-19159080805",
                "皖AM17R9-13965056178",
                "皖AH31S9-19956075570",
                "皖A091R6-13739278846",
                "皖ACB455-15375429056",
                "皖AD1372-15395033218",
                "皖AL1W38-18655123031",
                "皖AK08R2-18256958373",
                "皖AR5497-15256591763",
                "皖AF700T-13955140157",
                "皖A03X40-17856513485",
                "皖A69S96-18356525286",
                "皖AU23G6-13866669923",
                "皖A62Y24-19956056535",
                "皖AD77683-19956056535",
                "浙EQE628-13339117728",
                "皖A0R0B5-13956041029",
                "皖A32MC8-13955140157",
                "皖A3QM38-13739278846",
                "皖A7U2B9-18956078866",
                "皖ADW275-13605516917",
                "皖AE181E-18175335887",
                "皖AXJ332-13866685119",
                "皖A13C37-18956078866",
                "皖A2U747-13615606800",
                "皖AX63G1-13615606800",
                "皖A2651Z-13956041029",
                "皖A12931-13339299171",
                "皖AH4Y07-18919690772",
                "皖AFH3616-18919690781",
                "皖AX7K28-18919690781",
                "皖A05LG0-17818588089",
                "皖AA7985-17818588089",
                "皖A98E57-18919690762",
                "皖A916N9-13965103313",
                "皖AAT378-13855153156",
                "皖A29601-18919690881",
                "皖ADN1577-13966384376",
                "皖ABR530-15375352357",
                "皖AQ360T-13966384376",
                "皖AC2M88-13855196288",
                "皖A63917-13955186028",
                "皖A6607G-13866683455",
                "皖A9158Z-13645651772",
                "皖ADM3277-13645651772",
                "皖AG277B-13955199214",
                "皖A711G1-13505658626",
                "皖AG67E6-15256507992",
                "皖A0KM07-13966334117",
                "皖A9LC70-18856910807",
                "皖AFB925-15956505627",
                "皖A7LZ59-13866700557",
                "皖AR335F-13866700557",
                "皖ALT825-19159082371",
                "皖A18J84-13866984826",
                "皖ADH0855-13856960608",
                "皖AT067X-13856960608",
                "皖AQ6L13-13966375158",
                "皖AW983Z-18949847129",
                "皖A9HH77-13856004013",
                "皖A09L92-13966379444",
                "皖A61K85-18005657566",
                "皖A98X01-13956095631",
                "皖AWE926-18919690770",
                "皖AN0412-18919690771",
                "皖APV960-18919690890",
                "皖AM261P-18955150503",
                "皖A3T655-13956917233",
                "皖AG85H1-13956917233",
                "皖A3XJ79-13966696265",
                "皖A59CM8-13856515377",
                "皖ATT645-18919690668",
                "皖APX519-17333068189",
                "皖ALV519-18955151555",
                "皖A818E5-18856910910",
                "皖AMM988-13035066988",
                "皖ADS3180-13866666650",
                "皖AC333A-13866666650",
                "皖ADS3810-13866666650",
                "皖AV0282-13855195399",
                "皖AD4Y98-13605697998",
                "皖AD7L59-18856910823",
                "皖AR67M2-13856063769",
                "皖AD67620-19965044178",
                "皖AL5Y13-19965044178",
                "皖A9T097-13855176573",
                "皖AF177Z-18919690775",
                "皖A1C196-13956919655",
                "皖AY731G-18856910780",
                "皖A157FM-13966670004",
                "皖ADC9936-13505612412",
                "皖AGH153-18856910894",
                "皖AR0R28-18856910835",
                "皖AH906T-13965052135",
                "皖AH306Q-13856001805",
                "皖AR903R-18856910891",
                "皖A57H80-13966687088",
                "皖CFD672-13856057477",
                "皖A0CT25-13805604117",
                "皖A39R99-18956055277",
                "皖AS5399-18956055277",
                "皖NYC109-18856910800",
                "皖A7XG67-13956977985",
                "皖A5L003-18856910803",
                "皖A8D2B0-18856910803",
                "皖AW6595-18856910826",
                "皖AS6K77-18856910847",
                "皖A833H7-13956079487",
                "皖A2L428-13856019166",
                "皖A0Q880-18856910827",
                "皖A833GJ-13955171029",
                "皖A860J6-18856910791",
                "皖AU3Z77-18856910804",
                "皖AK327T-13965104222",
                "皖AK6N66-13965104222",
                "皖A0780R-18919690780",
                "皖AA77996-18919690767",
                "皖AM6847-18919690767",
                "皖A912D3-18856910802",
                "皖A9UV52-18856910832",
                "皖AL218F-18856910832",
                "皖A6TW79-18856910837",
                "皖A009B9-18856910901",
                "皖A52AA8-18856910806",
                "皖AP981A-18856910794",
                "皖A62W52-18856910843",
                "皖ASF208-18856910789",
                "皖ATG275-18856910885",
                "皖A388S3-18856910829",
                "皖A64691-18856910866",
                "皖AP252C-18856910836",
                "皖AV7B16-18856910833",
                "皖AUX783-13956957683",
                "皖A21C11-13956918895",
                "皖A276FV-18856910907",
                "皖AE5170-13665655857",
                "皖AQ83G7-18856910788",
                "皖AF2347-18856910801",
                "皖AMB148-13965121479",
                "皖A3WR69-18856910813",
                "皖A950ZJ-13515609707",
                "皖A50KF9-18856910815",
                "皖A7NZ95-18856910841",
                "皖AT063K-13855140034",
                "皖A3A237-13965109187",
                "皖A4Y333-13856954333",
                "皖AD11433-13856954333",
                "皖AZ427Y-17333038030",
                "皖AN006Z-13855123707",
                "皖AZU635-18856080703",
                "皖A022P6-18856910895",
                "皖ALM129-18856910895",
                "皖ABB479-18856910853",
                "皖AH708Z-18856910906",
                "皖AK222N-18856910876",
                "皖A6013L-18856910913",
                "皖A802RD-18856910910",
                "皖AA81395-18856910804",
                "皖AGZ396-18919690782",
                "皖AV25V3-18856910892",
                "皖ADX8899-15856391419",
                "皖AA1R27-18856910892",
                "皖AL9Q85-18155166465",
                "皖AR977R-13856557658",
                "皖AD11948-15856391419",
                "皖AD23329-15856391419",
                "皖AFD8929-13905600222",
                "皖AFJ4994-13966334117",
                "皖A918HP-18856910836",
                "皖AP6021-18919690780",
                "皖AF16980-13955190131",
                "皖AD80156-13956917233",
                "皖AD46432-15209856136",
                "皖AL2A95-13685695039",
                "皖AP015K-13865918124",
                "皖AS7306-15855138721",
                "皖A5189D-13764070633",
                "皖AD60216-13866683455",
                "皖AQ3U58-13866794323",
                "皖ADM9383-19159080805",
                "皖A9787S-19956075570",
                "皖A19F82-13739278846",
                "皖A7HL78-15375429056",
                "皖AF5386-13865918124",
                "皖AY2981-15395033218",
                "皖AU712D-18655123031",
                "皖ADZ1413-18324700273",
                "皖A36BJ6-15357746918",
                "苏AH783E-18155175195",
                "皖A208S8-13966727745",
                "皖AU99S0-13966727745",
                "皖AR3L55-13866745813",
                "皖AY13L9-15851629713",
                "皖AR67C1-15056091913",
                "皖A53P02-13866134408",
                "皖A847R8-13856536567",
                "皖AS7X22-13866134408",
                "皖AT329C-18256958373",
                "皖A578VX-18956022800",
                "皖A680PB-18225600905",
                "皖AD69563-15256591763",
                "皖ADS6785-18326009919",
                "皖AK88T7-13866669923",
                "皖AS3W13-13866669923",
                "皖AU28Z3-13866669923",
                "皖AL4717-18326042219",
                "皖A9A826-13855192234",
                "皖A810GD-13955140157",
                "皖A3ME38-15155956381",
                "皖AQC660-18356525286",
                "皖AF26531-15026632182",
                "皖AN0224-15026632182",
                "皖AFD9565-18792130858",
                "皖HZC115-18175335887",
                "皖A6J275-17333038030",
                "皖AD23053-13866685119",
                "皖ADN3355-13866685119",
                "皖A2VY16-18956078866",
                "皖AHB882-15256703850",
                "皖A20634-13956041029",
                "皖AA61213-19956075570",
                "皖AAB5386-13865918124",
                "皖AQ66D5-19965465419",
                "皖A172ZR-13955190131",
                "皖AV2X71-13866669923",
                "皖ADG2839-13865918124",
                "皖A05HH7-15956505555",
                "皖A7H955-15956505555",
                "皖AJ38C0-18919690550",
                "皖A09AC8-13856566161",
                "皖ADN8219-18919690669",
                "皖A86768-",
                "皖A64565-",
                "皖AF6869-18919690669",
                "皖AK510F-18919690681",
                "皖AE7556-13865926243",
                "皖AS1119-18955110529",
                "皖A9WR16-18955110570",
                "皖ANB777-18955111333",
                "皖AW3263-18919690976",
                "皖AD86556-13635517189",
                "皖AE385å­¦-13866170921",
                "皖AA3339-13955160295",
                "皖A1LX68-15956972822",
                "皖AA27620-13866721086",
                "皖A753NH-15955105569",
                "皖DHS500-13355690737",
                "皖A96G59-18949846563",
                "皖AG596H-15256938193",
                "皖A90059-15855155005",
                "皖ADG301-13865991467",
                "皖ADG5027-13655604645",
                "皖AZS392-13856004205",
                "皖AN03G8-15900512688",
                "皖AVV938-13866171458",
                "皖A5WB51-13075519010",
                "皖AG6G57-13705600310",
                "皖AD12718-15055107708",
                "皖A2AP97-17505690187",
                "皖AV9709-13515644306",
                "皖A6H0F8-13661571869",
                "皖AD207M-15855102446",
                "皖AT35Z8-18019919636",
                "皖AX108S-13965053771",
                "皖AM818W-13965137528",
                "皖AV08L2-15955159992",
                "皖AX677C-18715603668",
                "皖A92K29-18855126212",
                "皖AF08F0-15155165536",
                "皖AX1U50-17333152686",
                "皖A00F85-13485727850",
                "皖A105B5-13966686381",
                "皖A33Z13-17505515701",
                "皖A377AF-15375439937",
                "皖LM9202-17769930887",
                "皖AW785K-15055179136",
                "皖A621G7-13865966506",
                "皖AK661G-13965020562",
                "皖AZF353-13965105584",
                "皖AM528Y-15255133586",
                "皖AS2G87-18010863058",
                "皖AHX962-13905601520",
                "皖A2NL59-18010882575",
                "皖A39L66-13637094407",
                "皖AW130C-13966655585",
                "皖AV502K-18326156618",
                "皖EA5002-13701829756",
                "皖AG11D2-18895374416",
                "皖AG2Q90-13721067138",
                "皖A088PX-18095652570",
                "皖RB6090-15256666090",
                "皖ADD4298-13033052361",
                "皖AMOT18-13996529050",
                "皖A7CA06-18055115106",
                "皖A1YR63-18949230358",
                "皖AC616P-18155182329",
                "皖AF8905-18755162349",
                "皖AU796W-13956994808",
                "皖A852YX-13309691098",
                "皖ALH073-13865980010",
                "皖A2ZM95-13856018311",
                "皖AW7F21-13966653390",
                "皖A7P081-13955196906",
                "皖AAB9158-13955196906",
                "皖AM205G-13865957523",
                "皖AD19422-18315335159",
                "皖A65D99-18315335159",
                "皖A825R2-",
                "皖A9TL21-13965109187",
                "皖AY4619-18856080703",
                "皖A0PQ03-18856910788",
                "皖AFP638-13955188202",
                "皖A0VW17-18855187627",
                "皖ATR386-13965689770",
                "皖AC503H-13856537989",
        };
        List<String> noCars = new ArrayList<>();
        List<String> yesCars = new ArrayList<>();
        List<String> phoneNoCars = new ArrayList<>();
        FLAG: for(String str :allCars){
            String[] temp =  str.split("-");
            for(String s : cars){
                String[] temp =  str.split("-");
                if(StringUtils.equals(s,temp[0])){
                    yesCars.add(s);
                    continue FLAG;
@@ -923,12 +1362,36 @@
            }
            noCars.add(str);
        }
        FLAG1:
        for(String s : carsPhone){
            String[] tt  =  s.split("-");
            for(String str : allCars){
                String[] temp=  str.split("-");
                if(StringUtils.equals(tt[0],temp[0])
                        ){
                    if((tt.length>1
                            && temp.length>4
                            && !StringUtils.equals(tt[1],temp[4]))
                    || (tt.length >1 && temp.length<=4)
                    || (tt.length <=1 && temp.length>4) )
                    phoneNoCars.add(s + "|最新车主:"+temp[4]);
                    continue FLAG1;
                }
            }
        }
       for(String t :noCars){
           System.out.println(t);
       }
        System.out.println("--------完整车辆:"+allCars.length);
        System.out.println("--------已录入车辆:"+cars.length);
        System.out.println("--------对应录入车辆:"+yesCars.size());
        System.out.println("--------对应录入车辆:"+yesCars.size());
        System.out.println("--------未录车辆:"+noCars.size());
        for(String t :phoneNoCars){
            System.out.println(t);
        }
        System.out.println("--------车主对不上的车辆:"+phoneNoCars.size());
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarsCloudController.java
@@ -11,12 +11,13 @@
import com.doumee.dao.business.model.Cars;
import com.doumee.service.business.CarsService;
import com.doumee.service.business.impl.hksync.fhk.HkSyncVehicleFromHKServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
@@ -110,4 +111,14 @@
    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        return ApiResponse.success(carsService.findById(id));
    }
    @ApiOperation(value = "车辆信息导入" ,notes = "车辆信息导入")
    @PostMapping("/importExcel")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
    })
    @CloudRequiredPermission("business:cars:create")
    public ApiResponse<String> importExcel (@ApiParam(value = "file") MultipartFile file, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(carsService.importBatch(file,this.getLoginUser(token)));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/OnSitDispatchController.java
@@ -1,23 +1,18 @@
package com.doumee.cloud.board;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.PlatformLogMapper;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.business.model.PlatformLog;
import com.doumee.dao.openapi.request.HkBaseTokenRequest;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.web.response.platformReport.*;
import com.doumee.service.business.PlatformJobService;
import com.doumee.service.business.PlatformLogService;
import io.swagger.annotations.*;
import com.doumee.service.business.third.BoardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +21,9 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
 * Created by IntelliJ IDEA.
@@ -43,6 +40,8 @@
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private BoardService boardService;
@@ -50,12 +49,15 @@
    @ApiOperation("中心数据")
    @GetMapping("/centerData")
    public ApiResponse<OnSitDispatchBoardVO> centerData() {
        OnSitDispatchBoardVO data = new OnSitDispatchBoardVO();
        data.setPlatformTotal(100);
        data.setFreePlatform(8);
        data.setReservationCar(97);
        data.setWorkingCar(56);
        data.setLineUpCar(35);
        OnSitDispatchBoardVO data = boardService.getCnddCenterData();
        if(data == null){
            data = new OnSitDispatchBoardVO();
            data.setPlatformTotal(100);
            data.setFreePlatform(8);
            data.setReservationCar(97);
            data.setWorkingCar(56);
            data.setLineUpCar(35);
        }
        return ApiResponse.success(data);
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/SecurityController.java
@@ -2,15 +2,18 @@
import com.doumee.api.BaseController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.dao.web.response.platformReport.*;
import com.doumee.service.business.third.BoardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -34,6 +37,8 @@
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/board/api/security")
public class SecurityController extends BaseController {
    @Autowired
    private BoardService boardService;
    @LoginNoRequired
    @ApiOperation("中心数据")
@@ -117,8 +122,18 @@
        visitDataVO.setRetentionRata(BigDecimal.valueOf(random.nextInt(20)));
        return ApiResponse.success(visitDataVO);
    }
    @LoginNoRequired
    @ApiOperation("树形区域集合接口")
    @GetMapping("/regionTree")
    public ApiResponse<List<PageRegionInfoResponse>> regionTree(CarmeraListVO param) {
        return ApiResponse.success(boardService.getRegionTree(param));
    }
    @LoginNoRequired
    @ApiOperation("平铺结果区域集合接口")
    @GetMapping("/regionList")
    public ApiResponse<List<PageRegionInfoResponse>> regionList(CarmeraListVO param) {
        return ApiResponse.success(boardService.regionList(param));
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -139,9 +139,54 @@
        String[] loginOut= new String[]{"/xauthplus-plugin/logout","退出登录"};//退出登录
        String[] sendSms= new String[]{"/api/smsps/v1/smsService/sms","短信验证码"};//短信验证码
        String[] getMenus= new String[]{"/api/privilegeService/v1/menus/list","获取用户有权限的菜单功能项"};//获取用户有权限的菜单功能项
        String[] rootRegion= new String[]{"/api/resource/v1/regions/root","获取根区域信息接口"};//获取根区域信息接口
        String[] subRegions= new String[]{"/api/resource/v1/regions/subRegions","根据区域编号获取下一级区域列表"};//根据区域编号获取下一级区域列表
        String[] pageRegions= new String[]{"/api/resource/v1/regions","分页获取区域列表"};//分页获取区域列表
        String[] pageCameras= new String[]{"/api/resource/v1/cameras","分页获取监控点资源"};//分页获取监控点资源
        String[] cameraPreviewURLs= new String[]{"/api/video/v1/cameras/previewURLs","获取监控点预览取流URL"};//获取监控点预览取流URL
        String[] pageFireChannel= new String[]{"/api/resource/v1/fireChannel/get","分页获取消防传感器列表"};//分页获取消防传感器列表
        String[] pageSensorStatus= new String[]{"/api/fpnms/v2/sensor/status/search","分页查询消防传感器部件状态v2"};//分页查询消防传感器部件状态v2
    }
    /**
     * é™„录A.55消防设备类型
     */
    public interface  XiaofangCGQType{
        String[] hzbjzj = new String[]{"1020001" ,    "火灾报警主机"     }     ;
        String[] gycgq = new String[]{"1020002" ,    "感烟传感器"     }     ;
        String[] gwcgs = new String[]{"1020003" ,    "感温传感器"     }     ;
        String[] sdbjan = new String[]{"1020004" ,    "手动报警按钮"     }     ;
        String[] krqtcgq = new String[]{"1020005" ,    "可燃气体传感器"     }     ;
        String[] dqwdcgq = new String[]{"1020007" ,    "电气温度传感器"     }     ;
        String[] sydlcgq = new String[]{"1020008" ,    "剩余电流传感器"     }     ;
        String[] ywcgq = new String[]{"1020009" ,    "液位传感器"     }     ;
        String[] sycgq = new String[]{"1020010" ,    "水压传感器"     }     ;
        String[] tycgq = new String[]{"1020011" ,    "通用传感器"     }     ;
        String[] sgbjq = new String[]{"1020015" ,    "声光报警器"     }     ;
    }
    /**
     * é™„录A.55消防设备类型
     */
    public interface  XiaofangDeviceType{
        String[] uitDevice = new String[]{"20001" ,    "uitDevice","用户信息传输装置"    }     ;
        String[] electricDevice = new String[]{"20002" ,    "electricDevice","用电主机"    }     ;
        String[] wirelessWaterDevice = new String[]{"20003" ,    "wirelessWaterDevice","用水主机"    }     ;
        String[] independentGasDevice = new String[]{"20004" ,    "independentGasDevice","独立式可燃气体报警器"    }     ;
        String[] independentSmokeDevice = new String[]{"20005" ,    "independentSmokeDevice","独立式感烟报警器"    }     ;
        String[] iogDTUDevice = new String[]{"20008" ,    "iogDTUDevice","物联网网关(DTU)"    }     ;
        String[] siterwell433gwDevice = new String[]{"20009" ,    "siterwell433gwDevice","物联网消防报警网关(433)"    }     ;
        String[] outdoorHydrantDevice = new String[]{"20010" ,    "outdoorHydrantDevice","室外消火栓"    }     ;
        String[] cameraSmokeDevice = new String[]{"20011" ,    "cameraSmokeDevice","视频烟感"    }     ;
        String[] cameraTempDevice = new String[]{"20012" ,    "cameraTempDevice","视频温感"    }     ;
        String[] intelligentAnalyzer = new String[]{"20013" ,    "intelligentAnalyzer","智能分析仪"    }     ;
        String[] chargingPile = new String[]{"20014" ,    "chargingPile","充电桩"    }     ;
        String[] iPCVideoGateway = new String[]{"20015" ,    "IPCVideoGateway","IPC视频网关"    }     ;
        String[] smartElectricityGateway = new String[]{"20016" ,    "smartElectricityGateway","智能用电网关"    }     ;
    }
    /**
     * ä»»å‹™é¡žåž‹
     */
    public  enum TASK_TYPE {
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -743,6 +743,22 @@
        return startDoPostStringArtemis(HKConstants.InterfacePath.platformsList,body);
    }
    /**
     * èŽ·å–æ¶ˆé˜²ä¼ æ„Ÿå™¨åˆ—è¡¨
     * @param body
     * @return
     */
    public static String pageFireChannel(String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.pageFireChannel,body);
    }
    /**
     * æŸ¥è¯¢æ¶ˆé˜²ä¼ æ„Ÿå™¨éƒ¨ä»¶çŠ¶æ€v2
     * @param body
     * @return
     */
    public static String pageSensorStatus(String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.pageSensorStatus,body);
    }
    /**
     * èŽ·å–æœˆå°çŠ¶æ€
     * @return
     */
@@ -762,6 +778,30 @@
    public static String getHkMenu(Map<String,String> body) {
        return startDoGetStringArtemis(HKConstants.InterfacePath.getMenus,body);
    }
    /**
     * åˆ†é¡µèŽ·å–åŒºåŸŸåˆ—è¡¨
     * @param body
     * @return
     */
    public static String pageRegions(Map<String,String> header,String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.pageRegions,null,header,body);
    }
    /**
     * åˆ†é¡µèŽ·å–ç›‘æŽ§ç‚¹èµ„æº
     * @param body
     * @return
     */
    public static String pageCameras(Map<String,String> header,String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.pageCameras,null,header,body);
    }
    /**
     * èŽ·å–ç›‘æŽ§ç‚¹é¢„è§ˆå–æµURL
     * @param body
     * @return
     */
    public static String cameraPreviewURLs(Map<String,String> header,String body) {
        return startDoPostStringArtemis(HKConstants.InterfacePath.cameraPreviewURLs,null,header,body);
    }
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.doumee.core.haikang.model.param;
import lombok.Data;
@Data
public class BaseListPageRequest {
  private String   userId;//     Head      String      true      ç”¨æˆ·ID
  private Integer  pageNo    ;//integer    True    é¡µç ,pageNo≥1
  private Integer  pageSize;//    integer    True    åˆ†é¡µå¤§å°
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/CameraPreviewURLsRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class CameraPreviewURLsRequest {
  private String   userId;//     Head      String      true      ç”¨æˆ·ID
  private String    domainId ;//     Head      Number      true      ç½‘域ID
  private String   cameraIndexCode  ;//         Body      String      true      ç›‘控点唯一标识,#API@分页获取监控点资源@#接口获取返回参数cameraIndexCode
  private Integer   streamType  ;//         Body      Number      false      ç æµç±»åž‹ï¼Œ0:主码流<br>1:子码流<br>2:第三码流<br>参数不填,默认为主码流
  private String   protocol      ;//     Body      String      false      å–流协议(应用层协议),“rtsp”:RTSP协议,“rtmp”:RTMP协议,“hls”:HLS协议(HLS协议只支持海康SDK协议、EHOME协议、GB28181协议、ONVIF协议接入的设备;只支持H264视频编码和AAC音频编码),参数不填,默认为RTSP协议
  private Integer  transmode  ;//         Body      Number      false      ä¼ è¾“协议(传输层协议),0:UDP<br>1:TCP<br>默认是TCP<br>注:<br>GB28181 2011及以前版本只支持UDP传输
  private String  expand      ;//     Body      String      false      æ ‡è¯†æ‰©å±•内容,格式:key=value,<br>调用方根据其播放控件支持的解码格式选择相应的封装类型;<br>支持的内容详见[附录F expand扩展内容说明]@[智慧园区管理平台V1.6.0-附录-附录F expand扩展内容说明]
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/SensorStatusListRequest.java
@@ -10,6 +10,7 @@
    private Integer channelType;//    Number    false    ä¼ æ„Ÿå™¨ç±»åž‹ï¼Œè¯¦è§[附录A.57 æ¶ˆé˜²ä¼ æ„Ÿå™¨å¤§ç±»åž‹]@[智慧园区管理平台V1.4.301-附录-附录A æ•°æ®å­—å…¸#附录A.57 æ¶ˆé˜²ä¼ æ„Ÿå™¨å¤§ç±»åž‹]
    private Integer unitStatus;//    Number    false    éƒ¨ä»¶çŠ¶æ€ï¼Œ0:未注册 1:正常 2: ä¿®å¤ä¸­ 3:异常状态(修复中状态目前没用到,未注册时设备没有在离线状态) ç©º-所有状态
    private String channelIndexCode    ;//String    false    ä¼ æ„Ÿå™¨ç¼–号
    private String userId     ;
    private int   pageNo;//    Query    Number    false    é¡µç 
    private int   pageSize;//    Query    Number    false    é¡µå¤§å°
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/CamerasPreviewURLsResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.core.haikang.model.param.respose;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class CamerasPreviewURLsResponse {
     private String url ;//     Body      String      false      å–流URL
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageCameraInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.doumee.core.haikang.model.param.respose;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class PageCameraInfoResponse {
 private String altitude ;//     Body      String      false      æµ·æ‹”
 private String cameraIndexCode      ;// Body      String      false      ç›‘控点唯一标识
 private String cameraName       ;//Body      String      false      ç›‘控点名称
 private Integer cameraType ;//      Body      Number      false      ç›‘控点类型
 private String cameraTypeName  ;//     Body      String      false      ç›‘控点类型说明
 private String capabilitySet  ;//     Body      String      false      èƒ½åŠ›é›†ï¼ˆè¯¦è§æ•°æ®å­—å…¸ï¼ŒtypeCode为xresmgr.capability_set)<br><br>
 private String capabilitySetName  ;//     Body      String      false      èƒ½åŠ›é›†è¯´æ˜Ž
 private String intelligentSet  ;//     Body      String      false      æ™ºèƒ½åˆ†æžèƒ½åЛ集
 private String intelligentSetName  ;//     Body      String      false      æ™ºèƒ½åˆ†æžèƒ½åŠ›é›†è¯´æ˜Ž
 private String channelNo      ;// Body      String      false      é€šé“编号
 private String channelType      ;// Body      String      false      é€šé“类型
 private String channelTypeName  ;//     Body      String      false      é€šé“子类型说明
 private String createTime      ;// Body      String      false      åˆ›å»ºæ—¶é—´
 private String encodeDevIndexCode  ;//     Body      String      false      æ‰€å±žç¼–码设备唯一标识
 private String encodeDevResourceType      ;// Body      String      false      æ‰€å±žè®¾å¤‡ç±»åž‹ï¼ˆè¯¦è§æ•°æ®å­—典,typeCode为xresmgr.resource_type)<br><br>
 private String encodeDevResourceTypeName      ;// Body      String      false      æ‰€å±žè®¾å¤‡ç±»åž‹è¯´æ˜Ž
 private String gbIndexCode      ;// Body      String      false      ç›‘控点国标编号
 private String installLocation      ;// Body      String      false      å®‰è£…位置
 private String keyBoardCode  ;//     Body      String      false      é”®ç›˜æŽ§åˆ¶ç 
 private String latitude  ;//     Body      String      false      çº¬åº¦
 private String longitude  ;//     Body      String      false      ç»åº¦
 private Integer pixel  ;//     Body      Number      false      æ‘„像机像素(1-普通像素,2-130万高清,3-200万高清,4-300万高清,取值参考数据字典,typeCode为xresmgr.piexl)<br><br>
 private Integer ptz  ;//     Body      Number      false      äº‘镜类型(1-全方位云台(带转动和变焦),2-只有变焦,不带转动,3-只有转动,不带变焦,4-无云台,无变焦,取值参考数据字典,typeCode为xresmgr.ptz_type)<br><br>
 private Integer ptzController ;//      Body      Number      false      äº‘台控制(1-DVR,2-模拟矩阵,3-MU4000,4-NC600,取值参考数据字典,typeCode为xresmgr.ptz_control_type)<br><br>
 private String ptzControllerName      ;// Body      String      false      äº‘台控制说明
 private String ptzName      ;// Body      String      false      äº‘镜类型说明
 private String recordLocation      ;// Body      String      false      å½•像存储位置(0-中心存储,1-设备存储,取值参考数据字典,typeCode为xresmgr.record_location)<br><br>
 private String recordLocationName  ;//     Body      String      false      å½•像存储位置说明
 private String regionIndexCode  ;//     Body      String      false      æ‰€å±žåŒºåŸŸå”¯ä¸€æ ‡è¯†
 private Integer status ;//      Body      Number      false      åœ¨çº¿çŠ¶æ€ï¼ˆ0-不在线,1-在线,取值参考数据字典,typeCode为xresmgr.status)<br><br>
 private String statusName      ;// Body      String      false      çŠ¶æ€è¯´æ˜Ž
 private Integer transType      ;// Body      Number      false      ä¼ è¾“协议(0-UDP,1-TCP)
  private String transTypeName  ;//     Body      String      false      ä¼ è¾“协议类型说明
 private String treatyType  ;//     Body      String      false      æŽ¥å…¥åè®®ï¼ˆè¯¦è§æ•°æ®å­—典,typeCode为xresmgr.protocol_type)<br><br>
 private String treatyTypeName  ;//     Body      String      false      æŽ¥å…¥åè®®ç±»åž‹è¯´æ˜Ž
 private String viewshed       ;//Body      String      false      å¯è§†åŸŸç›¸å…³ï¼ˆJSON格式)
  private String updateTime       ;//Body      String      false      æ›´æ–°æ—¶é—´<br>采用ISO8601标准,如2018-07-26T21:30:08+08:00<br>表示北京时间2017å¹´7月26日21时30分08秒<br>
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageFireChannelInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
@Data
public class PageFireChannelInfoResponse {
    private String regionPath      ;//Body      String      false      æ‰€å±žåŒºåŸŸå±‚级,格式:@根节点@子区域1@
    private String regionIndexCode      ;//Body      String      false      æ‰€å±žåŒºåŸŸç¼–号
    private String regionPathName      ;//Body      String      false      æ‰€å±žåŒºåŸŸå±‚级名称
    private String fireproChannelSubType      ;//Body      Number      false      ä¼ æ„Ÿå™¨å°ç±»åž‹ï¼Œè¯¦è§[附录A.56]
    private String indexCode      ;//Body      String      false      èµ„源唯一标志
    private String description      ;//Body      String      false      æè¿°
    private String updateTime      ;//Body      String      false      æ›´æ–°æ—¶é—´ï¼ŒISO8601标准
    private String fireproChannelMaxValue      ;//Body      String      false      æœ€å¤§é˜ˆå€¼
    private String createTime      ;//Body      String      false      åˆ›å»ºæ—¶é—´ï¼ŒISO8601标准
    private String name      ;//Body      String      false      èµ„源名称
    private String fireproChannelAddressCode      ;//Body      String      false      ä¼ æ„Ÿå™¨åœ°å€ç 
    private String comId      ;//Body      String      false      ç»„ä»¶ID
    private String fireproChannelType      ;//Body      Number      false      ä¼ æ„Ÿå™¨å¤§ç±»åž‹ï¼Œè¯¦è§[附录A.64]
    private String parentIndexCode      ;//Body      String      false      æ‰€å±žè®¾å¤‡ç¼–码
    private String resourceType      ;//Body      String      false      èµ„源类型,fireSensor:消防传感器,详见[附录A.64]
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageRegionInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.core.haikang.model.param.respose;
import com.doumee.dao.web.response.platformReport.CarmeraListVO;
import com.doumee.dao.web.response.platformReport.RegionTreeVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class PageRegionInfoResponse {
     @ApiModelProperty(value = "区域唯一标识码")
     private String regionIndexCode;//     Body      String      false      åŒºåŸŸå”¯ä¸€æ ‡è¯†ç 
     @ApiModelProperty(value = "区域名称")
     private String regionName     ;// Body      String      false      åŒºåŸŸåç§°
     @ApiModelProperty(value = "父区域唯一标识码")
     private String parentIndexCode ;//     Body      String      false      çˆ¶åŒºåŸŸå”¯ä¸€æ ‡è¯†ç 
     @ApiModelProperty(value = "树编号")
     private String treeCode ;//     Body      String      false      æ ‘编号
     @ApiModelProperty(value = "下级集合")
     private List<PageRegionInfoResponse> childList;
     @ApiModelProperty(value = "监控点集合")
     private    List<CarmeraListVO> carmeraList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/PageSensorStatusResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.core.haikang.model.param.respose;
import lombok.Data;
@Data
public class PageSensorStatusResponse {
    private String regionPath      ;//Body      String      false      æ‰€å±žåŒºåŸŸå±‚级,格式:@根节点@子区域1@
    private String regionIndexCode      ;//Body      String      false      æ‰€å±žåŒºåŸŸç¼–号
    private String regionPathName      ;//Body      String      false      æ‰€å±žåŒºåŸŸå±‚级名称
    private String fireproChannelSubType      ;//Body      Number      false      ä¼ æ„Ÿå™¨å°ç±»åž‹ï¼Œè¯¦è§[附录A.56]
    private String indexCode      ;//Body      String      false      èµ„源唯一标志
    private String description      ;//Body      String      false      æè¿°
    private String updateTime      ;//Body      String      false      æ›´æ–°æ—¶é—´ï¼ŒISO8601标准
    private String fireproChannelMaxValue      ;//Body      String      false      æœ€å¤§é˜ˆå€¼
    private String createTime      ;//Body      String      false      åˆ›å»ºæ—¶é—´ï¼ŒISO8601标准
    private String name      ;//Body      String      false      èµ„源名称
    private String fireproChannelAddressCode      ;//Body      String      false      ä¼ æ„Ÿå™¨åœ°å€ç 
    private String comId      ;//Body      String      false      ç»„ä»¶ID
    private String fireproChannelType      ;//Body      Number      false      ä¼ æ„Ÿå™¨å¤§ç±»åž‹ï¼Œè¯¦è§[附录A.64]
    private String parentIndexCode      ;//Body      String      false      æ‰€å±žè®¾å¤‡ç¼–码
    private String resourceType      ;//Body      String      false      èµ„源类型,fireSensor:消防传感器,详见[附录A.64]
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1,19 +1,16 @@
package com.doumee.core.haikang.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
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.HKTools;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseRequst;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.BaseListPageRequest;
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -25,7 +22,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
public class HKService {
@@ -1431,6 +1427,103 @@
        return  null;
    }
    /**
     *分页获取区域列表(分页)
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<PageRegionInfoResponse>>   pageRegions(BaseListPageRequest param){
        log.info("【海康分页获取区域列表】================开始===="+JSONObject.toJSONString(param));
        try {
            Map<String ,String> header = new HashMap<>();
//            header.put("userId",param.getUserId());
            String res = HKTools.pageRegions(header,JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<BaseListPageResponse<PageRegionInfoResponse>> >(){};
            BaseResponse<BaseListPageResponse<PageRegionInfoResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康分页获取区域列表");
            return  result;
        }catch (Exception e){
            log.error("【海康分页获取区域列表】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *获取监控点预览取流URL
     * @return
     */
    public  static  BaseResponse<CamerasPreviewURLsResponse>   cameraPreviewURLs(CameraPreviewURLsRequest param){
        log.info("【海康获取监控点预览取流URL】================开始===="+JSONObject.toJSONString(param));
        try {
            Map<String ,String> header = new HashMap<>();
//            header.put("userId",param.getUserId());
//            header.put("domainId ",param.getDomainId());
            String res = HKTools.cameraPreviewURLs(header,JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<CamerasPreviewURLsResponse> >(){};
            BaseResponse<CamerasPreviewURLsResponse> result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康获取监控点预览取流URL");
            return  result;
        }catch (Exception e){
            log.error("【海康获取监控点预览取流URL】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *分页获取监控点资源(分页)
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<PageCameraInfoResponse>>   pageCameras(BaseListPageRequest param){
        log.info("【海康分页获取监控点资源】================开始===="+JSONObject.toJSONString(param));
        try {
            Map<String ,String> header = new HashMap<>();
            header.put("userId",param.getUserId());
            String res = HKTools.pageCameras(header,JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<BaseListPageResponse<PageCameraInfoResponse>> >(){};
            BaseResponse<BaseListPageResponse<PageCameraInfoResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康分页获取监控点资源");
            return  result;
        }catch (Exception e){
            log.error("【海康分页获取监控点资源】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *获取消防传感器列表(分页)
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<PageFireChannelInfoResponse>>   pageFireChannel(BaseListPageRequest param){
        log.info("【海康分页获取消防传感器列表】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.pageFireChannel(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<BaseListPageResponse<PageFireChannelInfoResponse>> >(){};
            BaseResponse<BaseListPageResponse<PageFireChannelInfoResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康分页获取消防传感器列表");
            return  result;
        }catch (Exception e){
            log.error("【海康分页获取消防传感器列表】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *查询消防传感器部件状态v2(分页)
     * @return
     */
    public  static  BaseResponse<BaseListPageResponse<PageSensorStatusResponse>>   pageSensorStatus(SensorStatusListRequest param){
        log.info("【海康分页查询消防传感器部件状态v2】================开始===="+JSONObject.toJSONString(param));
        try {
            String res = HKTools.pageSensorStatus(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse<BaseListPageResponse<PageSensorStatusResponse>> >(){};
            BaseResponse<BaseListPageResponse<PageSensorStatusResponse>>   result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,"海康分页查询消防传感器部件状态v2");
            return  result;
        }catch (Exception e){
            log.error("【海康分页查询消防传感器部件状态v2】================失败====:\n"+ e.getMessage());
        }
        return  null;
    }
    /**
     *根据用户标识获取客户端TGC接口
     * @return
     */
server/visits/dmvisit_service/src/main/java/com/doumee/dao/admin/request/CarsImport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.doumee.dao.admin.request;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * å‘˜å·¥ä¿¡æ¯å¯¼å…¥è¡¨
 * @author æ±Ÿè¹„蹄
 * @date 2024/01/16 10:03
 */
@Data
@ApiModel("员工信息导入")
public class CarsImport {
    @ExcelColumn(name="*车牌号码",value = "code",index = 1)
    private String code;
    @ExcelColumn(name="*业务类型",value = "categoryName",index = 2)
    private String categoryName;
    @ExcelColumn(name="*组织路径",value = "companyName",index = 3)
    private String companyName;
    @ExcelColumn(name="车主姓名" , value = "memberName" ,index = 4)
    private String memberName;
    @ExcelColumn(name="手机号" , value = "phone",index = 5)
    private String phone;
    @ExcelColumn(name="性别" , value = "sex",index = 6)
    private String sex;
    @ExcelColumn(name="身份证号" , value = "idcard",index = 7)
    private String idcard;
    @ExcelColumn(name="停车库名称" , value = "parkName",index = 8)
    private String parkName;
    @ExcelColumn(name="开始时间" , value = "startTime",index = 9)
    private String startTime;
    @ExcelColumn(name="结束时间" , value = "endTime",index = 10)
    private String endTime;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -274,6 +274,9 @@
    @ApiModelProperty(value = "作业量" ,hidden = true)
    @TableField(exist = false)
    private BigDecimal workNum ;
    @ApiModelProperty(value = "统计量" ,hidden = true)
    @TableField(exist = false)
    private Integer countum ;
    @ApiModelProperty(value = "WMS任务时间")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/CarmeraListVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * ç›‘控点集合
 *
 * @Author : JP
 * @create 2024/10/25 10:59
 */
@Data
public class CarmeraListVO {
    @ApiModelProperty(value = "监控点名称")
    private String name;
    @ApiModelProperty(value = "唯一索引")
    private String indexCode;
    @ApiModelProperty(value = "区域编码")
    private String reginCode;
    @ApiModelProperty(value = "是否查询监控点数据,0不包含 1包含")
    private Integer withCameras;
    @ApiModelProperty(value = "设备状态:不在线,1-在线")
    private Integer status;
    @ApiModelProperty(value = "设备状态描述")
    private String statusName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/OnSitDispatchBoardVO.java
@@ -15,19 +15,19 @@
public class OnSitDispatchBoardVO {
    @ApiModelProperty(value = "月台数量")
    private Integer platformTotal;
    private int platformTotal;
    @ApiModelProperty(value = "空闲月台数量")
    private Integer freePlatform;
    private int freePlatform;
    @ApiModelProperty(value = "预约车辆")
    private Integer reservationCar;
    private int reservationCar;
    @ApiModelProperty(value = "作业车辆")
    private Integer workingCar;
    private int workingCar;
    @ApiModelProperty(value = "排队车辆")
    private Integer lineUpCar;
    private int lineUpCar;
    @ApiModelProperty(value = "今日月台完成订单统计" , hidden = true)
    private List<PlatformGroupFinishVO> platformGroupFinishList;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/RegionTreeVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.doumee.dao.web.response.platformReport;
import com.doumee.config.DataSyncConfig;
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import com.doumee.dao.business.model.Company;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * åŒºåŸŸæ ‘形结构
 *
 * @Author : JP
 * @create 2024/10/25 10:59
 */
@Data
public class RegionTreeVO {
    public List<PageRegionInfoResponse> nodeList = new ArrayList<>();
    /**
     *  æž„造方法
     *  @param nodeList å°†æ•°æ®é›†åˆèµ‹å€¼ç»™nodeList,即所有数据作为所有节点。
     */
    public RegionTreeVO(List<PageRegionInfoResponse> nodeList ){
        this.nodeList = nodeList;
    }
    /**
     *   èŽ·å–éœ€æž„å»ºçš„æ‰€æœ‰æ ¹èŠ‚ç‚¹ï¼ˆé¡¶çº§èŠ‚ç‚¹ï¼‰ "0"
     *   @return æ‰€æœ‰æ ¹èŠ‚ç‚¹List集合
     */
    public List<PageRegionInfoResponse> getRootNode(){
        // ä¿å­˜æ‰€æœ‰æ ¹èŠ‚ç‚¹ï¼ˆæ‰€æœ‰æ ¹èŠ‚ç‚¹çš„æ•°æ®ï¼‰
        List<PageRegionInfoResponse> rootNodeList = new ArrayList<>();
        // treeNode:查询出的每一条数据(节点)
        for (PageRegionInfoResponse treeNode : nodeList){
            // åˆ¤æ–­å½“前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。
            if (Objects.isNull(treeNode.getParentIndexCode())
                    || StringUtils.equals(treeNode.getParentIndexCode(),"null")) {
                // æ˜¯ï¼Œæ·»åŠ 
                rootNodeList.add(treeNode);
            }
        }
        return rootNodeList;
    }
    /**
     *  æ ¹æ®æ¯ä¸€ä¸ªé¡¶çº§èŠ‚ç‚¹ï¼ˆæ ¹èŠ‚ç‚¹ï¼‰è¿›è¡Œæž„å»ºæ ‘å½¢ç»“æž„
     *  @return  æž„建整棵树
     */
    public List<PageRegionInfoResponse> buildTree(){
        // treeNodes:保存一个顶级节点所构建出来的完整树形
        List<PageRegionInfoResponse> treeNodes = new ArrayList<PageRegionInfoResponse>();
        // getRootNode():获取所有的根节点
        for (PageRegionInfoResponse treeRootNode : getRootNode()) {
            // å°†é¡¶çº§èŠ‚ç‚¹è¿›è¡Œæž„å»ºå­æ ‘
            treeRootNode = buildChildTree(treeRootNode);
            // å®Œæˆä¸€ä¸ªé¡¶çº§èŠ‚ç‚¹æ‰€æž„å»ºçš„æ ‘å½¢ï¼Œå¢žåŠ è¿›æ¥
            treeNodes.add(treeRootNode);
        }
        return treeNodes;
    }
    /**
     *  é€’å½’-----构建子树形结构
     *  @param  pNode æ ¹èŠ‚ç‚¹ï¼ˆé¡¶çº§èŠ‚ç‚¹ï¼‰
     *  @return æ•´æ£µæ ‘
     */
    public PageRegionInfoResponse buildChildTree(PageRegionInfoResponse pNode){
        List<PageRegionInfoResponse> childTree = new ArrayList<>();
        // nodeList:所有节点集合(所有数据)
        for (PageRegionInfoResponse treeNode : nodeList) {
            // åˆ¤æ–­å½“前节点的父节点ID是否等于根节点的ID,即当前节点为其下的子节点
                if (!Objects.isNull(treeNode.getParentIndexCode())&&treeNode.getParentIndexCode().equals(pNode.getRegionIndexCode())) {
                    // å†é€’归进行判断当前节点的情况,调用自身方法
                    childTree.add(buildChildTree(treeNode));
                }
        }
        // for循环结束,即节点下没有任何节点,树形构建结束,设置树结果
        pNode.setChildList(childTree);
        return pNode;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarsService.java
@@ -6,6 +6,8 @@
import com.doumee.dao.admin.request.CarsQuery;
import com.doumee.dao.admin.response.CarsDTO;
import com.doumee.dao.business.model.Cars;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
@@ -89,7 +91,7 @@
     * @return PageData<Cars>
     */
    PageData<Cars> findPage(PageWrap<Cars> pageWrap);
    String importBatch(MultipartFile file, LoginUserInfo loginUserInfo);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -4,14 +4,18 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.ScientificNotationTUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.CarsImport;
import com.doumee.dao.admin.request.CarsQuery;
import com.doumee.dao.admin.request.MemberImport;
import com.doumee.dao.admin.response.CarsDTO;
import com.doumee.dao.business.CarsMapper;
import com.doumee.dao.business.MemberMapper;
@@ -25,9 +29,11 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
@@ -42,6 +48,8 @@
    @Autowired
    private CarsMapper carsMapper;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private CarJoinMapper carJoinMapper;
    @Autowired
@@ -382,4 +390,59 @@
        return PageData.from(carsDTOIPage);
    }
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public String importBatch(MultipartFile file,  LoginUserInfo loginUserInfo){
        Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_CARS);
        if(importing!=null && importing){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,已存在车辆导入任务正在执行中,请稍后再试!");
        }
        redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_CARS,true);
        try {
            ExcelImporter ie = null;
            List<CarsImport> dataList =null;
            try {
                ie = new ExcelImporter(file,1,0);
                dataList = ie.getDataList(CarsImport.class,null);
            }  catch (Exception e) {
                e.printStackTrace();
            }
            if(dataList == null || dataList.size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!");
            }
            List<Cars> list =  carJoinMapper.selectJoinList(Cars.class,new MPJLambdaWrapper<Cars>()
                    .selectAll(Cars.class)
                    .eq(Cars::getIsdeleted,Constants.ZERO)
            );
            List<Member> memberList  = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                    .eq(Member::getType,Constants.TWO)
                    .eq(Member::getIsdeleted,Constants.ZERO));
            List<Cars> newList = new ArrayList<>();
            for(int i=0;i<dataList.size();i++){
                CarsImport model = dataList.get(i);
                model.setPhone(ScientificNotationTUtil.convertToString(model.getPhone()));
               /* if(StringUtils.isBlank(model.getCode())
                        &&StringUtils.isBlank(model.getIdcardNo())
                        &&StringUtils.isBlank(model.getPhone())
                        &&StringUtils.isBlank(model.getCompanyName())){
                    continue;
                }
                Cars car = checkModelParam(model,newList,i,loginUserInfo,list,companyList,);
                newList.add(car);*/
            }
            if(newList == null || newList.size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入有效数据为空!");
            }
//          dealHkUserBizBatch(newList);
            return "导入成功";
        }catch (BusinessException e){
            throw e;
        }catch (Exception e){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"车辆信息导入失败,请稍后重试");
        }finally {
            redisTemplate.delete(Constants.RedisKeys.IMPORTING_CARS);
        }
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncInitConfigServiceImpl.java
@@ -28,11 +28,10 @@
    @PostConstruct
    public  int  initHkConfig(){
            ArtemisConfig.host = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HOST).getCode();
            ArtemisConfig.appKey = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPKEY).getCode();
            ArtemisConfig.appSecret = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPSECRET).getCode();
            HKConstants.https = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HTTPS).getCode();
        ArtemisConfig.host = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HOST).getCode();
        ArtemisConfig.appKey = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPKEY).getCode();
        ArtemisConfig.appSecret = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPSECRET).getCode();
        HKConstants.https = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HTTPS).getCode();
        HKTools.interfaceLogService=interfaceLogService;
        return  0;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,289 @@
package com.doumee.service.business.impl.thrid;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.BaseListPageRequest;
import com.doumee.core.haikang.model.param.request.SensorStatusListRequest;
import com.doumee.core.haikang.model.param.respose.PageCameraInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageFireChannelInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.PlatformJobMapper;
import com.doumee.dao.business.PlatformLogMapper;
import com.doumee.dao.business.PlatformMapper;
import com.doumee.dao.business.model.Platform;
import com.doumee.dao.business.model.PlatformJob;
import com.doumee.dao.web.response.platformReport.CarmeraListVO;
import com.doumee.dao.web.response.platformReport.OnSitDispatchBoardVO;
import com.doumee.dao.web.response.platformReport.RegionTreeVO;
import com.doumee.service.business.third.BoardService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * TMS平台对接Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class BoardServiceImpl implements BoardService {
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private PlatformMapper platformMapper;
    /**
     * èŽ·å–åŒºåŸŸæ ‘å½¢ç»“æž„æ•°æ®
     * @return
     */
    @Override
    public List<PageRegionInfoResponse> getRegionTree(CarmeraListVO req){
        List<PageRegionInfoResponse> allList = new ArrayList<>();
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            BaseListPageRequest param = new BaseListPageRequest();
            param.setUserId("admin");
            param.setPageSize(100);
            param.setPageNo(curPage);
            BaseResponse<BaseListPageResponse<PageRegionInfoResponse>> response = HKService.pageRegions(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            BaseListPageResponse<PageRegionInfoResponse> r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allList.addAll(r.getList());
            }
            curPage++;
        }
        if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){
            initReginCameralList(allList,req.getName());//获取全部监控点数据
        }
        List<PageRegionInfoResponse> data = new RegionTreeVO(allList).buildTree();
        return  data;
    }
    private void initReginCameralList(List<PageRegionInfoResponse> allList,String name) {
        List<CarmeraListVO> carmeraListVOList = cameraList(null);
        if(carmeraListVOList!=null && carmeraListVOList.size()>0){
            for(PageRegionInfoResponse p : allList){
                for(CarmeraListVO c : carmeraListVOList){
                    if(StringUtils.equals(p.getRegionIndexCode(),c.getReginCode())
                            && (StringUtils.contains(c.getName(),name) ||StringUtils.isBlank(name))){
                        if(p.getCarmeraList()==null){
                            p.setCarmeraList(new ArrayList<>());
                        }
                        p.getCarmeraList().add(c);
                    }
                }
            }
        }
    }
    /**
     * èŽ·å–åŒºåŸŸæ ‘å½¢ç»“æž„æ•°æ®
     * @return
     */
    @Override
    public List<PageRegionInfoResponse> regionList(CarmeraListVO req){
        List<PageRegionInfoResponse> allList = new ArrayList<>();
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            BaseListPageRequest param = new BaseListPageRequest();
            param.setUserId("admin");
            param.setPageSize(100);
            param.setPageNo(curPage);
            BaseResponse<BaseListPageResponse<PageRegionInfoResponse>> response = HKService.pageRegions(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            BaseListPageResponse<PageRegionInfoResponse> r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allList.addAll(r.getList());
            }
            curPage++;
        }
        if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){
            initReginCameralList(allList,req.getName());//获取全部监控点数据
        }
        return  allList;
    }
    @Override
    public     List<CarmeraListVO> cameraList(CarmeraListVO req){
        List<PageCameraInfoResponse> allList = new ArrayList<>();
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            BaseListPageRequest param = new BaseListPageRequest();
            param.setUserId("admin");
            param.setPageSize(100);
            param.setPageNo(curPage);
            BaseResponse<BaseListPageResponse<PageCameraInfoResponse>> response = HKService.pageCameras(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            BaseListPageResponse<PageCameraInfoResponse> r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allList.addAll(r.getList());
            }
            curPage++;
        }
        List<CarmeraListVO> data = new ArrayList<>();
        for(PageCameraInfoResponse p : allList){
            CarmeraListVO t = new CarmeraListVO();
            t.setIndexCode(p.getCameraIndexCode());
            t.setReginCode(p.getRegionIndexCode());
            t.setName(p.getCameraName());
            t.setStatus(p.getStatus());
            t.setStatusName(p.getStatusName());
            data.add(t);
        }
        return  data;
    }
    @Override
    public    List<PageFireChannelInfoResponse> fireChannelList(){
        List<PageFireChannelInfoResponse> allList = new ArrayList<>();
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            BaseListPageRequest param = new BaseListPageRequest();
            param.setUserId("admin");
            param.setPageSize(100);
            param.setPageNo(curPage);
            BaseResponse<BaseListPageResponse<PageFireChannelInfoResponse>> response = HKService.pageFireChannel(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            BaseListPageResponse<PageFireChannelInfoResponse> r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allList.addAll(r.getList());
            }
            curPage++;
        }
        return  allList;
    }
    @Override
    public    List<PageSensorStatusResponse> sensorStatusList(){
        List<PageSensorStatusResponse> allList = new ArrayList<>();
        boolean hasNext = true;
        int curTotal = 0;
        int curPage = 1;
        while (hasNext){
            //分页遍历循环查询所有门禁设备数据
            SensorStatusListRequest param = new SensorStatusListRequest();
            param.setPageSize(100);
            param.setPageNo(curPage);
            BaseResponse<BaseListPageResponse<PageSensorStatusResponse>> response = HKService.pageSensorStatus(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            BaseListPageResponse<PageSensorStatusResponse> r = response.getData();
            curTotal += 100;
            if(curTotal >= r.getTotal()){
                hasNext = false;
            }
            if(r.getList() == null || r.getList().size()==0){
                hasNext =false;
            }else{
                allList.addAll(r.getList());
            }
            curPage++;
        }
        return  allList;
    }
    @Override
    public OnSitDispatchBoardVO getCnddCenterData(){
        OnSitDispatchBoardVO data = new OnSitDispatchBoardVO();
        //月台总数
        List<Platform> list =  platformMapper.selectJoinList(Platform.class,new MPJLambdaWrapper<Platform>()
                .selectAll(Platform.class)
                .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ")
                .eq(Platform::getIsdeleted,Constants.ZERO)
        );
        data.setPlatformTotal(list==null?0:list.size());
        //空闲月台数量
        data.setFreePlatform(
                list.stream().filter(i->Constants.formatIntegerNum(i.getWorkStatus())<=Constants.ZERO).collect(Collectors.toList()).size()
        );
        //查询今日月台个状态作业数量
        List<PlatformJob> jobList =  platformJobMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                .selectAll(PlatformJob.class)
                .select("count(id)" ,PlatformJob::getCountum)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_data) = to_days(now())" )
                .groupBy(PlatformJob::getStatus )
        );
        if(jobList!=null){
            //     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 å·²è¿‡å· 12已取消
            for(PlatformJob model : jobList){
                //预约车辆
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())
                ||Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum()));
                }
                // ä½œä¸šè½¦è¾†
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
                    data.setWorkingCar(data.getWorkingCar()+Constants.formatIntegerNum(model.getCountum()));
                }
                //排队车辆
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                        ||Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())){
                     data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum()));
                }
            }
        }
        return  data;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.doumee.service.business.third;
import com.doumee.core.haikang.model.param.respose.PageFireChannelInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
import com.doumee.core.tms.model.request.TmsOrderInfoRequest;
import com.doumee.core.tms.model.request.TmsOrderListRequest;
import com.doumee.core.tms.model.response.TmsBaseResponse;
import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.tms.model.response.TmsOrderInfoResponse;
import com.doumee.core.tms.model.response.TmsOrderListResponse;
import com.doumee.dao.web.response.platformReport.CarmeraListVO;
import com.doumee.dao.web.response.platformReport.OnSitDispatchBoardVO;
import com.doumee.dao.web.response.platformReport.RegionTreeVO;
import java.util.List;
/**
 * æœˆå°ä¿¡æ¯è¡¨Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/06/28 10:03
 */
public interface BoardService {
    /**
     * èŽ·å–åŒºåŸŸæ ‘å½¢ç»“æž„æ•°æ®
     * @return
     */
    List<PageRegionInfoResponse> getRegionTree(CarmeraListVO param);
    List<PageRegionInfoResponse> regionList(CarmeraListVO param);
    List<CarmeraListVO> cameraList(CarmeraListVO param);
    List<PageFireChannelInfoResponse> fireChannelList();
    List<PageSensorStatusResponse> sensorStatusList();
    OnSitDispatchBoardVO getCnddCenterData();
}