dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaGroupListBo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.sandu.ximon.dao.bo; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; /** * @author LiuHaoNan * @date 2022/11/15 */ @Data public class NewNovaGroupListBo { private Long id; /** * ææ¾å¨åç§°(database) */ private String name; /** * ææ¾å¨ID(Vnnox) */ private String sn; } dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaProgramBo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package com.sandu.ximon.dao.bo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.util.Date; /** * @author LiuHaoNan * @date 2022/11/17 */ @Data public class NewNovaProgramBo { private Long id; /** * èç®åç§° */ private String name; /** * èç®ç¼©ç¥å¾ */ private String screenShot; /** * å建æ¶é´ */ private Date createTime; /** * æ´æ°æ¶é´ */ private Date updateTime; } dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaFile.java
@@ -38,6 +38,11 @@ private String name; /** * çå®åç§° */ private String realName; /** * å¤§å° */ private String size; dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaGroup.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ package com.sandu.ximon.dao.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * æ°è¯ºç¦åç» * * @TableName new_nova_group */ @TableName(value = "new_nova_group") @Data public class NewNovaGroup implements Serializable { /** * åç»id */ @TableId(type = IdType.AUTO) private Long groupId; /** * åç»åç§° */ private String groupName; /** * ä¸çº§å®¢æ·id */ @JsonIgnore private Long clientId; /** * ç¨æ·id */ private Long userId; /** * ç¨æ·å */ @TableField(exist = false) private String userName; /** * å建æ¶é´ */ private Date createTime; /** * æ´æ°æ¶é´ */ private Date updateTime; @TableField(exist = false) private static final long serialVersionUID = 1L; } dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaGroupRelation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.sandu.ximon.dao.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; import lombok.Data; /** * æ°è¯ºç¦åç»å ³ç³» * @TableName new_nova_group_relation */ @TableName(value ="new_nova_group_relation") @Data public class NewNovaGroupRelation implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Long id; /** * 诺ç¦id */ private Long novaId; /** * åç»id */ private Long novaGroupId; /** * å建æ¶é´ */ private Date createTime; /** * */ private Date updateTime; @TableField(exist = false) private static final long serialVersionUID = 1L; } dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java
@@ -99,7 +99,7 @@ private BigDecimal brightness = BigDecimal.ZERO; /** * åæ¥ç¶æ * åæ¥ç¶æ 0æªåæ¥ 1已忥 -1 åæ¥å¤±è´¥ */ @TableField(exist = false) private Integer sync = 0; dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaProFileRelation.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.sandu.ximon.dao.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; /** * æ°è¯ºç¦èç®æä»¶å ³è表 * @TableName new_nova_pro_file_relation */ @TableName(value ="new_nova_pro_file_relation") @Data public class NewNovaProFileRelation implements Serializable { /** * */ @TableId private Long id; /** * 诺ç¦èç®è¡¨id */ private Long newNovaProgramId; /** * è¯ºç¦æä»¶è¡¨id */ private Long newNovaFileId; @TableField(exist = false) private static final long serialVersionUID = 1L; } dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaProgram.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,100 @@ package com.sandu.ximon.dao.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; /** * æ°è¯ºç¦èç®è¡¨ * @TableName new_nova_program */ @TableName(value ="new_nova_program") @Data public class NewNovaProgram implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Long id; /** * èç®id */ private Integer pid; /** * èç®åç§° */ private String name; /** * æ¯å¦ææ 0å¦ 1æ¯ */ private Integer insertPlay; /** * æ¯å¦ç«å³ææ¾ 0å¦ 1æ¯ */ private Integer startPlayAfterTransferred; /** * èç®å 容 */ @TableField(exist = false) private List<Map> pageInfo; /** * èç®å 容 */ @JsonIgnore private String pageInfoJsonStr; /** * èç®æä»¶ */ @TableField(exist = false) private List<String> files; /** * èç®å®½ */ private Integer width; /** * èç®é« */ private Integer height; /** * èç®ç¼©ç¥å¾ */ private String screenShot; /** * ç¨æ·id */ private Long userId; /** * å建æ¶é´ */ private Date createTime; /** * æ´æ°æ¶é´ */ private Date updateTime; @TableField(exist = false) private static final long serialVersionUID = 1L; } dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
@@ -247,6 +247,22 @@ LED_NEW_VOL("æ°è¯ºç¦é³éè°è"), LED_NEW_BRIGHTNESS("æ°è¯ºç¦äº®åº¦è°è"), LED_NEW_POWER("æ°è¯ºç¦å¼å ³è°è"), LED_NEW_SYNC("æ°è¯ºç¦åæ¥"), LED_NEW_REBOOT("æ°è¯ºç¦éå¯"), LED_NEW_SCREENSHOT("æ°è¯ºç¦æªå±"), LED_NEW_NTP("æ°è¯ºç¦ntp"), LED_NEW_GROUB_ADD("æ°è¯ºç¦åç»æ°å¢"), LED_NEW_GROUB_UPDATE("æ°è¯ºç¦åç»ç¼è¾"), LED_NEW_GROUB_DEL("æ°è¯ºç¦åç»å é¤"), LED_NEW_GROUB_LIST("æ°è¯ºç¦åç»å表"), LED_NEW_GROUB_BIND("ç»å®æ°è¯ºç¦åç»"), LED_NEW_GROUB_INFO("ç»æ°è¯ºç¦åç»è¯¦æ "), LED_NEW_PROGRAM_ADD("诺ç¦èç®å¶ä½å¹¶åé"), LED_NEW_PROGRAM_UPDATE("诺ç¦èç®ç¼è¾"), LED_NEW_PROGRAM_DEL("诺ç¦èç®å é¤"), LED_NEW_PROGRAM_LIST("诺ç¦èç®å表"), LED_NEW_PROGRAM_INFO("诺ç¦èç®è¯¦æ "), LED_NEW_PUSH_AIR("è¯ºç¦æ¨é大æ°ä¿¡æ¯"), ; dao/src/main/java/com/sandu/ximon/dao/enums/PoleBindingEnums.java
@@ -64,4 +64,9 @@ * åè */ public static final String ATMOSPHERIC_NONG_GENG = "11"; /** * æ°è¯ºç¦ */ public static final String NEW_NOVA = "12"; } dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaGroupMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.sandu.ximon.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sandu.ximon.dao.domain.NewNovaGroup; import org.apache.ibatis.annotations.Mapper; /** * @author Administrator * @description é对表ãnew_nova_group(æ°è¯ºç¦åç»)ãçæ°æ®åºæä½Mapper * @createDate 2022-11-15 09:48:48 * @Entity com.sandu.ximon.dao.domain.NewNovaGroup */ @Mapper public interface NewNovaGroupMapper extends BaseMapper<NewNovaGroup> { } dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaGroupRelationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.sandu.ximon.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sandu.ximon.dao.domain.NewNovaGroupRelation; import org.apache.ibatis.annotations.Mapper; /** * @author Administrator * @description é对表ãnew_nova_group_relation(æ°è¯ºç¦åç»å ³ç³»)ãçæ°æ®åºæä½Mapper * @createDate 2022-11-15 09:49:00 * @Entity com.sandu.ximon.dao.domain.NewNovaGroupRelation */ @Mapper public interface NewNovaGroupRelationMapper extends BaseMapper<NewNovaGroupRelation> { } dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java
@@ -1,7 +1,7 @@ package com.sandu.ximon.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sandu.ximon.dao.bo.NewNovaListBo; import com.sandu.ximon.dao.bo.NewNovaGroupListBo; import com.sandu.ximon.dao.domain.NewNovaLed; import org.apache.ibatis.annotations.Mapper; @@ -16,7 +16,9 @@ @Mapper public interface NewNovaLedMapper extends BaseMapper<NewNovaLed> { List<NewNovaLed> listLed(String keyword, Long userId); List<NewNovaLed> listLed(String keyword,Long groupId, Long userId); List<NewNovaGroupListBo> getListByGroupId(Long groupId, Long clientId); } dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaProFileRelationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.sandu.ximon.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sandu.ximon.dao.domain.NewNovaProFileRelation; import org.apache.ibatis.annotations.Mapper; /** * @author Administrator * @description é对表ãnew_nova_pro_file_relation(æ°è¯ºç¦èç®æä»¶å ³è表)ãçæ°æ®åºæä½Mapper * @createDate 2022-11-16 14:15:31 * @Entity com.sandu.ximon.dao.domain.NewNovaProFileRelation */ @Mapper public interface NewNovaProFileRelationMapper extends BaseMapper<NewNovaProFileRelation> { } dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaProgramMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.sandu.ximon.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sandu.ximon.dao.bo.NewNovaProgramBo; import com.sandu.ximon.dao.domain.NewNovaProgram; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * @author Administrator * @description é对表ãnew_nova_program(æ°è¯ºç¦èç®è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2022-11-17 10:24:26 * @Entity com.sandu.ximon.dao.domain.NewNovaProgram */ @Mapper public interface NewNovaProgramMapper extends BaseMapper<NewNovaProgram> { List<NewNovaProgramBo> listProgram(String keyword, Long userId); } dao/src/main/resources/mapper/LedPlayerEntityMapper.xml
@@ -99,9 +99,9 @@ AND t5.group_id=#{groupId} </if> <if test="keyword != null and keyword != ''"> AND t1.name LIKE CONCAT(CONCAT('%', #{keyword}), '%') AND (t1.name LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.sn LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.id LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.id LIKE CONCAT(CONCAT('%', #{keyword}), '%')) </if> <if test="userId != null"> AND (t3.user_id = #{userId} OR t3.client_id = #{userId}) dao/src/main/resources/mapper/NewNovaFileMapper.xml
@@ -9,6 +9,7 @@ <result property="userId" column="user_id" jdbcType="BIGINT"/> <result property="userName" column="user_name" jdbcType="VARCHAR"/> <result property="name" column="name" jdbcType="VARCHAR"/> <result property="realName" column="real_name" jdbcType="VARCHAR"/> <result property="size" column="size" jdbcType="VARCHAR"/> <result property="fileType" column="file_type" jdbcType="VARCHAR"/> <result property="fileUrl" column="file_url" jdbcType="VARCHAR"/> dao/src/main/resources/mapper/NewNovaGroupMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sandu.ximon.dao.mapper.NewNovaGroupMapper"> <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.NewNovaGroup"> <id property="groupId" column="group_id" jdbcType="BIGINT"/> <result property="groupName" column="group_name" jdbcType="VARCHAR"/> <result property="clientId" column="client_id" jdbcType="BIGINT"/> <result property="userId" column="user_id" jdbcType="BIGINT"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> </resultMap> <sql id="Base_Column_List"> group_id,group_name,client_id, user_id,create_time,update_time </sql> </mapper> dao/src/main/resources/mapper/NewNovaGroupRelationMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sandu.ximon.dao.mapper.NewNovaGroupRelationMapper"> <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.NewNovaGroupRelation"> <id property="id" column="id" jdbcType="BIGINT"/> <result property="novaId" column="nova_id" jdbcType="BIGINT"/> <result property="novaGroupId" column="nova_group_id" jdbcType="BIGINT"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> </resultMap> <sql id="Base_Column_List"> id,nova_id,nova_group_id, create_time,update_time </sql> </mapper> dao/src/main/resources/mapper/NewNovaLedMapper.xml
@@ -29,15 +29,34 @@ LEFT JOIN pole_binding t2 ON t1.sn = t2.device_code AND t2.device_type = 12 LEFT JOIN pole t3 ON t2.pole_id = t3.id LEFT JOIN new_nova_group_relation t4 ON t4.nova_id = t1.id LEFT JOIN new_nova_group t5 ON t5.group_id = t4.nova_group_id <where> 1=1 <if test="groupId != null"> AND t5.group_id=#{groupId} </if> <if test="keyword != null and keyword != ''"> AND t1.name LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.sn LIKE CONCAT(CONCAT('%', #{keyword}), '%') AND (t1.name LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.sn LIKE CONCAT(CONCAT('%', #{keyword}), '%')) </if> <if test="userId != null"> AND (t3.user_id = #{userId} OR t3.client_id = #{userId}) </if> </where> GROUP BY t1.id </select> <select id="getListByGroupId" resultType="com.sandu.ximon.dao.bo.NewNovaGroupListBo"> SELECT t1.* FROM new_nova_led t1 INNER JOIN new_nova_group_relation t2 ON t1.id = t2.nova_id LEFT JOIN new_nova_group t3 ON t3.group_id = t2.nova_group_id WHERE t3.group_id=#{groupId} <if test="clientId != null"> AND (t3.user_id = #{clientId} OR t3.client_id = #{clientId}) </if> </select> </mapper> dao/src/main/resources/mapper/NewNovaProFileRelationMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sandu.ximon.dao.mapper.NewNovaProFileRelationMapper"> <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.NewNovaProFileRelation"> <id property="id" column="id" jdbcType="BIGINT"/> <result property="newNovaProgramId" column="new_nova_program_id" jdbcType="BIGINT"/> <result property="newNovaFileId" column="new_nova_file_id" jdbcType="BIGINT"/> </resultMap> <sql id="Base_Column_List"> id,new_nova_program_id,new_nova_file_id </sql> </mapper> dao/src/main/resources/mapper/NewNovaProgramMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sandu.ximon.dao.mapper.NewNovaProgramMapper"> <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.NewNovaProgram"> <id property="id" column="id" jdbcType="BIGINT"/> <result property="pid" column="pid" jdbcType="INTEGER"/> <result property="name" column="name" jdbcType="VARCHAR"/> <result property="insertPlay" column="insert_play" jdbcType="INTEGER"/> <result property="startPlayAfterTransferred" column="start_play_after_transferred" jdbcType="INTEGER"/> <result property="pageInfoJsonStr" column="page_info_json_str" jdbcType="VARCHAR"/> <result property="width" column="width" jdbcType="INTEGER"/> <result property="height" column="height" jdbcType="INTEGER"/> <result property="screenShot" column="screen_shot" jdbcType="VARCHAR"/> <result property="userId" column="user_id" jdbcType="BIGINT"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> </resultMap> <sql id="Base_Column_List"> id ,pid,name, insert_play,start_play_after_transferred,page_info_json_str, width,height,screen_shot, user_id,create_time,update_time </sql> <select id="listProgram" resultType="com.sandu.ximon.dao.bo.NewNovaProgramBo"> SELECT * FROM `new_nova_program` <where> 1=1 <if test="keyword != null and keyword != ''"> AND name LIKE CONCAT(CONCAT('%', #{keyword}), '%') </if> <if test="userId != null"> AND user_id = #{userId} </if> </where> </select> </mapper> sandu-common/src/main/java/com/sandu/common/file/config/NovaFileConfig.java
@@ -20,5 +20,11 @@ /** * æå¡å¨ipåç«¯å£ */ private String realUrl; private String fileUrl; /** * æªå¾åæ¾è·¯å¾ */ private String screenShotPath; } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -225,7 +225,7 @@ } boolean result = poleService.unBindPole(poleId, param.getDeviceCode(), param.getDeviceType()); if (result) { //设å¤ç±»åï¼0è·¯ç¯ï¼1ledå±å¹ï¼2å çµæ¡©ï¼3大æ°çæµï¼4æ°´è´¨çæµï¼5ip鳿±ï¼6lcdå¹¿åæºï¼7æå头ï¼8æä½å¾æµï¼9ä¸é®æå©, 10ç讯, 11åè //设å¤ç±»åï¼0è·¯ç¯ï¼1ledå±å¹ï¼2å çµæ¡©ï¼3大æ°çæµï¼4æ°´è´¨çæµï¼5ip鳿±ï¼6lcdå¹¿åæºï¼7æå头ï¼8æä½å¾æµï¼9ä¸é®æå©, 10ç讯, 11åè, 12æ°è¯ºç¦ switch (param.getDeviceType().toString()) { case PoleBindingEnums.LIGHT: //å é¤ç¯æçdevicescode @@ -258,6 +258,8 @@ break; case PoleBindingEnums.ATMOSPHERIC_NONG_GENG: break; case PoleBindingEnums.NEW_NOVA: break; default: break; } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/VnnoxController.java
@@ -274,9 +274,9 @@ */ @GetMapping("/getByGroupId") public ResponseVO<Object> getByGroupId(@RequestParam(value = "groupId", required = true) Long groupId) { // if (!permissionConfig.check(MenuEnum.LED_N_GROUP_INFO.getCode())) { // return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); // } if (!permissionConfig.check(MenuEnum.LED_N_GROUP_INFO.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (groupId == null) { throw new BusinessException("groupIdä¸è½ä¸ºç©º"); } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/ProgramPathConfig.java
ÎļþÃû´Ó ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/FilePathConfig.java ÐÞ¸Ä @@ -11,7 +11,7 @@ @Data @Configuration @ConfigurationProperties(prefix = "new-nova") public class FilePathConfig { public class ProgramPathConfig { /** * ä¾èµåæ¾è·¯å¾ ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileController.java
@@ -61,9 +61,9 @@ PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); List<NewNovaFile> list = newNovaFileService.list(wrapper); list.forEach(file -> { file.setFileUrl(fileConfig.getRealUrl() + file.getFileUrl()); file.setFileUrl(fileConfig.getFileUrl() + file.getFileUrl()); if (file.getScreenShot() != null) { file.setScreenShot(fileConfig.getRealUrl() + file.getScreenShot()); file.setScreenShot(fileConfig.getFileUrl() + file.getScreenShot()); } }); return ResponseUtil.success(list); ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileService.java
@@ -106,6 +106,7 @@ NewNovaFile novaFile = new NewNovaFile(); novaFile.setName(fileUploadDto.getOriginName()); novaFile.setRealName(fileUploadDto.getFileName()); novaFile.setFileType(fileUploadDto.getFileType()); novaFile.setRealUrl(fileUploadDto.getRealUrl()); novaFile.setFileUrl(fileUploadDto.getFileUrl()); ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/grouping/NewNovaGroupController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,122 @@ package com.sandu.ximon.admin.newnova.grouping; import com.github.pagehelper.PageHelper; import com.sandu.common.domain.ResponseVO; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.param.GroupParam; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.dao.enums.MenuEnum; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author LiuHaoNan * @date 2022/11/15 */ @RestController @AllArgsConstructor @RequestMapping("/v1/newNova/group") public class NewNovaGroupController { private PermissionConfig permissionConfig; private final NewNovaGroupService ledGroupService; /** * æ°å¢åç» * * @param param * @return */ @PostMapping("/add") public ResponseVO<Object> addGroup(@RequestBody @Validated GroupParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_GROUB_ADD.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } boolean b = ledGroupService.addGroup(param); if (b) { return ResponseUtil.success("æ·»å æå"); } else { return ResponseUtil.fail("æ·»å 失败"); } } /** * ç¼è¾åç» * * @param param * @return */ @PostMapping("/update") public ResponseVO<Object> updateGroup(@RequestBody @Validated GroupParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_GROUB_UPDATE.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } boolean b = ledGroupService.updateGroup(param); if (b) { return ResponseUtil.success("ç¼è¾æå"); } else { return ResponseUtil.fail("ç¼è¾å¤±è´¥"); } } /** * å é¤åç» * * @param groupIds * @return */ @PostMapping("/delete") public ResponseVO<Object> delGroup(@RequestBody List<Long> groupIds) { if (!permissionConfig.check(MenuEnum.LED_NEW_GROUB_DEL.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } boolean b = ledGroupService.deleteGroup(groupIds); if (b) { return ResponseUtil.success("å 餿å"); } else { return ResponseUtil.fail("å é¤å¤±è´¥"); } } /** * åç»å表 * * @param baseConditionVO * @param keyword * @return */ @GetMapping("/list") public ResponseVO<Object> listGroup(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) { if (!permissionConfig.check(MenuEnum.LED_NEW_GROUB_LIST.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); return ResponseUtil.success(ledGroupService.groupList(baseConditionVO, keyword)); } /** * ç»å®LEDå°åç»å * * @param param * @return */ @PostMapping("/bind") public ResponseVO<Object> bindPole(@RequestBody GroupParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_GROUB_BIND.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } boolean b = ledGroupService.bindLed(param.getGroupId(), param.getLedIdList()); if (b) { return ResponseUtil.success("æ·»å æå"); } else { return ResponseUtil.fail("æ·»å 失败"); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/grouping/NewNovaGroupRelationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,56 @@ package com.sandu.ximon.admin.newnova.grouping; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.dao.domain.NewNovaGroupRelation; import com.sandu.ximon.dao.mapper.NewNovaGroupRelationMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * @author LiuHaoNan * @date 2022/11/15 */ @Service @AllArgsConstructor public class NewNovaGroupRelationService extends BaseServiceImpl<NewNovaGroupRelationMapper, NewNovaGroupRelation> { /** * æ·»å ç»å®å ³ç³» * * @param groupId * @param novaIdList * @return */ public boolean saveBinding(Long groupId, List<Long> novaIdList) { remove(Wrappers.lambdaQuery(NewNovaGroupRelation.class).eq(NewNovaGroupRelation::getNovaGroupId, groupId)); if (CollectionUtil.isEmpty(novaIdList)) { return true; } List<NewNovaGroupRelation> batchList = new ArrayList<>(); for (Long novaId : novaIdList) { NewNovaGroupRelation poleGroupRelation = new NewNovaGroupRelation(); poleGroupRelation.setNovaGroupId(groupId); poleGroupRelation.setNovaId(novaId); batchList.add(poleGroupRelation); } return saveBatch(batchList); } /** * å é¤ç»å®å ³ç³» * * @param groupIds */ public void deleteBinding(List<Long> groupIds) { remove(Wrappers.lambdaQuery(NewNovaGroupRelation.class).in(NewNovaGroupRelation::getNovaGroupId, groupIds)); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/grouping/NewNovaGroupService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,138 @@ package com.sandu.ximon.admin.newnova.grouping; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.param.GroupParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.service.AdminService; import com.sandu.ximon.admin.service.ClientService; import com.sandu.ximon.dao.domain.Admin; import com.sandu.ximon.dao.domain.Client; import com.sandu.ximon.dao.domain.NewNovaGroup; import com.sandu.ximon.dao.mapper.NewNovaGroupMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; /** * @author LiuHaoNan * @date 2022/11/15 */ @Service @AllArgsConstructor public class NewNovaGroupService extends BaseServiceImpl<NewNovaGroupMapper, NewNovaGroup> { private final ClientService clientService; private final AdminService adminService; private final NewNovaGroupRelationService relationService; /** * æ°å¢åç» * * @param param * @return */ public boolean addGroup(GroupParam param) { NewNovaGroup group = new NewNovaGroup(); group.setUserId(SecurityUtils.getUserId()); // group.setClientId(clientService.getClientId(SecurityUtils.getUserId())); group.setGroupName(param.getGroupName()); return save(group); } /** * ç¼è¾åç» * * @param * @param param * @return */ public boolean updateGroup(GroupParam param) { if (param.getGroupId() == null) { throw new BusinessException("åç»idä¸è½ä¸ºç©º"); } NewNovaGroup poleGroup = getById(param.getGroupId()); if (poleGroup == null) { throw new BusinessException("æªæ¾å°è¯¥åç»"); } poleGroup.setGroupName(param.getGroupName()); return updateById(poleGroup); } /** * å é¤åç» * * @param groupIds * @return */ public boolean deleteGroup(List<Long> groupIds) { List<NewNovaGroup> ledNovaGroups = listByIds(groupIds); if (ledNovaGroups == null) { throw new BusinessException("æªæ¾å°è¯¥åç»"); } /** * åªé¤å ³ç³» */ relationService.deleteBinding(groupIds); return removeByIds(groupIds); } /** * åç»å表 * * @param baseConditionVO * @param keyword * @return */ public Object groupList(BaseConditionVO baseConditionVO, String keyword) { if (keyword == null) { throw new BusinessException("å ³é®åä¸è½ä¸ºnull,ä¸éè¦æ¨¡ç³æ¥è¯¢è¯·ä¼ 空å符串"); } List<NewNovaGroup> list; if (SecurityUtils.getClientId() == null) { //è¶ ç®¡ PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); list = list(Wrappers.lambdaQuery(NewNovaGroup.class).like(NewNovaGroup::getGroupName, keyword)); } else { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); list = list(Wrappers.lambdaQuery(NewNovaGroup.class).eq(NewNovaGroup::getUserId, SecurityUtils.getUserId()).like(NewNovaGroup::getGroupName, keyword)); } list.forEach(gro -> { Admin byId = adminService.getById(gro.getUserId()); if (byId != null) { gro.setUserName(byId.getUsername()); } else { Client client = clientService.getById(gro.getUserId()); if (client == null) { gro.setUserName(gro.getUserName()); } else { gro.setUserName("admin"); } } }); return list; } /** * ç»å® * * @param groupId * @param ledIdList * @return */ public boolean bindLed(Long groupId, List<Long> ledIdList) { NewNovaGroup ledNovaGroup = getById(groupId); if (ledNovaGroup == null) { throw new BusinessException("æªæ¾å°è¯¥åç»"); } return relationService.saveBinding(groupId, ledIdList); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java
@@ -1,12 +1,17 @@ package com.sandu.ximon.admin.newnova.led; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.newnova.grouping.NewNovaGroupService; import com.sandu.ximon.admin.newnova.param.NewNovaLedParam; import com.sandu.ximon.admin.newnova.param.NewNovaStatusParam; import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.NewNovaGroup; import com.sandu.ximon.dao.domain.NewNovaLed; import com.sandu.ximon.dao.enums.MenuEnum; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -24,6 +29,7 @@ public class NewNovaLedController { private final PermissionConfig permissionConfig; private final NewNovaLedService newNovaLedService; private final NewNovaGroupService groupService; /** @@ -69,11 +75,12 @@ */ @GetMapping("/listLed") public ResponseVO listLed(BaseConditionVO baseConditionVO, @RequestParam(required = false, value = "keyword") String keyword, @RequestParam(required = false, value = "onlineStatus") boolean onlineStatus) { @RequestParam(required = false, value = "onlineStatus") boolean onlineStatus, @RequestParam(required = false, value = "groupId") Long groupId) { if (!permissionConfig.check(MenuEnum.LED_NEW_LIST.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(newNovaLedService.listLed(baseConditionVO, keyword, onlineStatus)); return ResponseUtil.success(newNovaLedService.listLed(baseConditionVO, keyword, groupId, onlineStatus)); } /** @@ -90,12 +97,13 @@ return ResponseUtil.success(newNovaLedService.getInfo(ledId)); } /** * 设置亮度 */ @PostMapping("/setBrightness") public ResponseVO setScreenBrightness(@RequestBody @Validated NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_VOL.getCode())) { if (!permissionConfig.check(MenuEnum.LED_NEW_BRIGHTNESS.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (param.getBrightness() == null) { @@ -105,17 +113,160 @@ return ResponseUtil.fail("亮度èå´ä¸º: 0-100"); } } if (newNovaLedService.getById(param.getId()) == null) { NewNovaLed byId = newNovaLedService.getById(param.getId()); if (byId == null) { return ResponseUtil.fail("设å¤ä¸åå¨"); } else { if (!byId.getSn().equals(param.getSn())) { return ResponseUtil.fail("snä¸idä¸å¹é "); } } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().setScreenBrightness(param)); } /** * 设置é³é */ @PostMapping("/setVolume") public ResponseVO setVolume(@RequestBody @Validated NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_VOL.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (param.getVolume() == null) { return ResponseUtil.fail("é³éä¸è½ä¸ºç©º"); } else { if (param.getVolume() > 100 || param.getVolume() < 0) { return ResponseUtil.fail("é³éèå´ä¸º: 0-100"); } } NewNovaLed byId = newNovaLedService.getById(param.getId()); if (byId == null) { return ResponseUtil.fail("设å¤ä¸åå¨"); } else { if (!byId.getSn().equals(param.getSn())) { return ResponseUtil.fail("snä¸idä¸å¹é "); } } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().setVolume(param)); } /** * è®¾ç½®åæ¥ */ @PostMapping("/setSync") public ResponseVO setSync(@RequestBody NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_SYNC.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (param.getNovaList() == null || param.getNovaList().isEmpty()) { return ResponseUtil.fail("è¯·éæ©è®¾å¤"); } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().setSync(param)); } /** * 设置å±å¹å¼å ³ */ @PostMapping("/setPowerStatus") public ResponseVO setPowerStatus(@RequestBody NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_POWER.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } NewNovaLed byId = newNovaLedService.getById(param.getId()); if (byId == null) { return ResponseUtil.fail("设å¤ä¸åå¨"); } else { if (!byId.getSn().equals(param.getSn())) { return ResponseUtil.fail("snä¸idä¸å¹é "); } } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().setPowerStatus(param)); } /** * éå¯ */ @PostMapping("/reboot") public ResponseVO reboot(@RequestBody NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_REBOOT.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (param.getNovaList() == null || param.getNovaList().isEmpty()) { return ResponseUtil.fail("è¯·éæ©è®¾å¤"); } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().reboot(param)); } /** * ntp */ @PostMapping("/ntp") public ResponseVO ntp(@RequestBody NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_NTP.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (param.getNovaList() == null || param.getNovaList().isEmpty()) { return ResponseUtil.fail("è¯·éæ©è®¾å¤"); } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().ntp(param)); } /** * æªå± */ @PostMapping("/screenShot") public ResponseVO screenShot(@RequestBody NewNovaStatusParam param) { if (!permissionConfig.check(MenuEnum.LED_NEW_SCREENSHOT.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (param.getScreenShotList() == null || param.getScreenShotList().isEmpty()) { return ResponseUtil.fail("è¯·éæ©è®¾å¤"); } return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().screenShot(param)); } /** * æ ¹æ®åç»idè·åç»å çå±å¹ */ @GetMapping("/getByGroupId") public ResponseVO<Object> getByGroupId(@RequestParam(value = "groupId", required = true) Long groupId) { if (!permissionConfig.check(MenuEnum.LED_NEW_GROUB_INFO.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (groupId == null) { throw new BusinessException("groupIdä¸è½ä¸ºç©º"); } NewNovaGroup byId = groupService.getById(groupId); if (SecurityUtils.getClientId() != null && !SecurityUtils.getUserId().equals(byId.getUserId())) { throw new BusinessException("ä¸è½æ¥çä¸å±äºèªå·±åç»çå 容!"); } if (byId == null) { throw new BusinessException("åç»ä¸åå¨"); } return ResponseUtil.success(newNovaLedService.getListByGroupId(groupId)); } /** * æ¨éå¤§æ° */ @GetMapping("/pushAirData") public ResponseVO<Object> pushAirData(@RequestParam(value = "id", required = true) Long id , @RequestParam(value = "duration", required = true) Long duration , @RequestParam(value = "fontSize", required = true) Long fontSize) throws InterruptedException { if (!permissionConfig.check(MenuEnum.LED_NEW_PUSH_AIR.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(newNovaLedService.pushAirData(id, duration,fontSize)); } // @PostMapping("/tranPro") // public ResponseVO<Object> tranPro(@RequestBody Map pageInfo) throws InterruptedException { // NovaAPIUtil a = NovaAPIUtil.getInstanceUtil(); // StatusVO login = a.login("MZVA51930N2113017308"); // StatusVO login = a.login("MZVA51930N2113017308", 0); // if (login.getStatusCode() != 0) { // return ResponseUtil.fail("genVO"); // } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
@@ -1,16 +1,26 @@ package com.sandu.ximon.admin.newnova.led; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame; import com.sandu.ximon.admin.newnova.conf.ProgramPathConfig; import com.sandu.ximon.admin.newnova.param.NewNovaLedParam; import com.sandu.ximon.admin.newnova.param.ProgramPrarm; import com.sandu.ximon.admin.newnova.program.NewNovaProgramService; import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil; import com.sandu.ximon.admin.newnova.vo.ProWHVO; import com.sandu.ximon.admin.newnova.vo.StatusVO; import com.sandu.ximon.admin.newnova.vo.TrasfromStatusVO; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.service.AirDataService; import com.sandu.ximon.admin.service.PoleBindingService; import com.sandu.ximon.admin.service.PoleService; import com.sandu.ximon.dao.bo.NewNovaGroupListBo; import com.sandu.ximon.dao.domain.NewNovaLed; import com.sandu.ximon.dao.domain.Pole; import com.sandu.ximon.dao.domain.PoleBinding; @@ -18,8 +28,12 @@ import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** @@ -30,6 +44,8 @@ @AllArgsConstructor public class NewNovaLedService extends BaseServiceImpl<NewNovaLedMapper, NewNovaLed> { private final PoleBindingService poleBindingService; private ProgramPathConfig filePathConfig; /** * å±å¹æ³¨å @@ -101,17 +117,18 @@ * * @param baseConditionVO * @param keyword * @param groupId * @param onlineStatus * @return */ public List<NewNovaLed> listLed(BaseConditionVO baseConditionVO, String keyword, boolean onlineStatus) { public List<NewNovaLed> listLed(BaseConditionVO baseConditionVO, String keyword, Long groupId, boolean onlineStatus) { NovaAPIUtil instanceUtil = NovaAPIUtil.getInstanceUtil(); //æåº PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); List<NewNovaLed> newNovaListBos = baseMapper.listLed(keyword, SecurityUtils.getClientId()); List<NewNovaLed> newNovaListBos = baseMapper.listLed(keyword, groupId, SecurityUtils.getClientId()); //è·åå¨çº¿ç¶æ instanceUtil.getOnlineStatus(newNovaListBos); instanceUtil.getOnlineStatus(newNovaListBos, onlineStatus); //è·åå±å¹å¼å ³ instanceUtil.getScreenPowerState(newNovaListBos); //è·åé³é @@ -141,7 +158,7 @@ List<NewNovaLed> list = new ArrayList<>(); list.add(byId); //è·åå¨çº¿ç¶æ instanceUtil.getOnlineStatus(list); instanceUtil.getOnlineStatus(list, false); //è·åå±å¹å¼å ³ instanceUtil.getScreenPowerState(list); //è·åé³é @@ -154,4 +171,210 @@ instanceUtil.getInfo(byId); return list.get(0); } /** * è·åæ´ç»çå±å¹ * * @param groupId */ public List<NewNovaGroupListBo> getListByGroupId(Long groupId) { List<NewNovaGroupListBo> listByGroupId = baseMapper.getListByGroupId(groupId, SecurityUtils.getClientId()); return listByGroupId; } /** * æ¨éå¤§æ° * * @param id * @param duration * @param fontSize */ public Object pushAirData(Long id, Long duration, Long fontSize) throws InterruptedException { NovaAPIUtil apiUtil = NovaAPIUtil.getInstanceUtil(); NewNovaLed byId = getById(id); PoleBinding nova = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, byId.getSn()).eq(PoleBinding::getDeviceType, 12)); if (nova == null) { throw new BusinessException("æªç»å®è¯ºç¦è®¾å¤"); } PoleBinding air = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, nova.getPoleId()).eq(PoleBinding::getDeviceType, 3)); if (air == null) { throw new BusinessException("æªç»å®å¤§æ°è®¾å¤"); } //è·å大æ°çæµæ°æ® A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data = SpringContextHolder.getBean(AirDataService.class).getDataByPoleid(nova.getPoleId()); //è§£æå¤§æ°æ°æ® Map pageInfo = parseData(data, duration,fontSize); ProgramPrarm page = new ProgramPrarm(); page.setPageInfo(pageInfo); page.setInsertPlay(true); ProWHVO whvo = new ProWHVO("大æ°çæµ", 128, 256); page.setProgramMsg(whvo); StatusVO createPro = apiUtil.createPro(whvo); Integer pid = Integer.valueOf(createPro.getStatusData()); page.setProgramID(pid); StatusVO editPro = apiUtil.editProgram(pid, pageInfo); if(editPro.getStatusCode()!=0){ throw new BusinessException(editPro.getStatusData()); } StatusVO genVO = apiUtil.genrateProgram(pid); if(genVO.getStatusCode()!=0){ throw new BusinessException(genVO.getStatusData()); } page.setProgramID(Integer.valueOf(createPro.getStatusData())); page.setStartPlayAfterTransferred(true); List<String> sns = new ArrayList<String>(); sns.add(byId.getSn()); page.setSnList(sns); List<TrasfromStatusVO> trasfromStatusVOS = apiUtil.trasfromProgram(page); File file = new File(filePathConfig.getOutPutPath() + "/program" + pid); SpringContextHolder.getBean(NewNovaProgramService.class).deleteFile(file); return trasfromStatusVOS; } /** * å¤çå¤§æ°æ°æ® * * @param data * @param duration * @param fontSize * @return */ private Map parseData(A5AtmosphereHeartbeatReportInnerFrame.HeartBeatDataPackage data, Long duration, Long fontSize) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z+8:00'"); Date end = new Date(); end.setTime(end.getTime()+duration); String str = "{\n" + " \"name\": \"大æ°çæµ\",\n" + " \"widgetContainers\": [\n" + " {\n" + " \"contents\": {\n" + " \"widgets\": [\n" + " {\n" + " \"constraints\": [\n" + " {\n" + " \"cron\": [\n" + " \"\"\n" + " ],\n" + " \"endTime\": \"" + sdf.format(end) + "\",\n" + " \"startTime\": \"" + sdf.format(new Date()) + "\"\n" + " }\n" + " ],\n" + " \"duration\":" + duration + ",\n" + " \"metadata\": {\n" + " \"content\": {\n" + " \"autoPaging\": true,\n" + " \"backgroundMusic\": {\n" + " \"duration\": 0,\n" + " \"isTextSync\": false\n" + " },\n" + " \"displayStyle\": {\n" + " \"scrollAttributes\": {\n" + " \"effects\": {\n" + " \"animation\": \"MARQUEE_LEFT\",\n" + " \"speed\": 3\n" + " }\n" + " },\n" + " \"type\": \"STATIC\"\n" + " },\n" + " \"paragraphs\": [\n" + " {\n" + " \"backgroundColor\": \"#00000000\",\n" + " \"horizontalAlignment\": \"LEFT\",\n" + " \"letterSpacing\": 0,\n" + " \"lineSpacing\": 0,\n" + " \"lines\": [\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"ç¯å¢çæµï¼\"\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"温度ï¼" + (data == null || data.getTemperature() == null ? " - " : data.getTemperature()) + "°\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"湿度ï¼" + (data == null || data.getHumidity() == null ? " - " : data.getHumidity()) + "%\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"pm25ï¼" + (data == null || data.getPm25() == null ? " - " : data.getPm25()) + "μg/m³\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"pm10ï¼" + (data == null || data.getPm10() == null ? " - " : data.getPm10()) + "μg/m³\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"ç²éï¼" + (data == null || data.getEch2o() == null ? " - " : data.getEch2o()) + "μg/m³\"" + "\n" + " }\n" + " ]\n" + " },\n" + " {\n" + " \"segs\": [\n" + " {\n" + " \"content\": \"CO2ï¼" + (data == null || data.getCo2() == null ? " - " : data.getCo2()) + "ppm\"" + "\n" + " }\n" + " ]\n" + " }\n" + " ],\n" + " \"verticalAlignment\": \"TOP\"\n" + " }\n" + " ],\n" + " \"textAttributes\": [\n" + " {\n" + " \"backgroundColor\": \"#ff000000\",\n" + " \"attributes\": {\n" + " \"font\": {\n" + " \"family\": [\n" + " \"Helvetica\"\n" + " ],\n" + " \"isUnderline\": false,\n" + " \"size\": "+fontSize+",\n" + " \"style\": \"NORMAL\"\n" + " },\n" + " \"letterSpacing\": 0,\n" + " \"textColor\": \"#ffff0000\"\n" + " }\n" + " }\n" + " ]\n" + " }\n" + " },\n" + " \"name\": \"ç¯å¢çæµ\",\n" + " \"type\": \"ARCH_TEXT\"\n" + " }\n" + " ]\n" + " },\n" + " \"id\": 1,\n" + " \"name\": \"widgetContainers1\"\n" + " }\n" + " ]\n" + " }"; return JSON.parseObject(str, Map.class); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaFileParam.java
@@ -19,6 +19,9 @@ @NotBlank(message = "æä»¶åä¸è½ä¸ºç©º") private String name; private String realName; /** * å¤§å° */ ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaStatusParam.java
@@ -48,8 +48,21 @@ */ private boolean ntp = true; /** * å±å¹å¼å ³ 0å ³ 1å¼ */ private int powerStatus =0; /** * é³é亮度ç */ private List<NovaDTO> novaList; /** * æªå¾ */ private List<NovascreenShotDTO> screenShotList; @NoArgsConstructor @@ -65,4 +78,20 @@ private boolean status = false; } @NoArgsConstructor @Data public static class NovascreenShotDTO { private Long id; private String sn; private String name; private int code; private String screenShot; } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/ProgramPrarm.java
@@ -1,8 +1,12 @@ package com.sandu.ximon.admin.newnova.param; import com.sandu.ximon.admin.newnova.vo.ProWHVO; import lombok.Data; import javax.validation.constraints.NotNull; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author LiuHaoNan @@ -19,7 +23,18 @@ /** * èç®id */ @NotNull(message = "èç®idä¸è½ä¸ºç©º") private Integer programID; /** * èç®ä¿¡æ¯ */ private ProWHVO programMsg; /** * 缩ç¥å¾ */ private String screenShot; /** * æ¯å¦ç«å³ææ¾èç® @@ -31,4 +46,25 @@ */ private Boolean insertPlay; /** * 大æ°èç® */ private Map pageInfo; /** * èç®å 容 */ private List<Map> sceneItems; /** * æä»¶id */ private List<Long> fileIds; /** * èç®æä»¶Map */ private Map<String, String> fileMap=new HashMap<String, String>(); } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProFileRelationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,44 @@ package com.sandu.ximon.admin.newnova.program; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.dao.domain.NewNovaProFileRelation; import com.sandu.ximon.dao.mapper.NewNovaProFileRelationMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * @author LiuHaoNan * @date 2022/11/16 */ @Service @AllArgsConstructor public class NewNovaProFileRelationService extends BaseServiceImpl<NewNovaProFileRelationMapper, NewNovaProFileRelation> { /** * ä¿åèç®,æä»¶å ³ç³» * * @param programId * @param fileIds * @return */ public boolean saveRelation(Long programId, List<Long> fileIds) { remove(Wrappers.lambdaQuery(NewNovaProFileRelation.class).eq(NewNovaProFileRelation::getNewNovaProgramId, programId)); if (CollectionUtil.isEmpty(fileIds)) { return true; } List<NewNovaProFileRelation> batchList = new ArrayList<>(); for (Long fileId : fileIds) { NewNovaProFileRelation fileRelation = new NewNovaProFileRelation(); fileRelation.setNewNovaFileId(fileId); fileRelation.setNewNovaProgramId(programId); batchList.add(fileRelation); } return saveBatch(batchList); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProgramController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,108 @@ package com.sandu.ximon.admin.newnova.program; import com.sandu.common.domain.ResponseVO; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.newnova.param.ProgramPrarm; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.dao.enums.MenuEnum; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author LiuHaoNan * @date 2022/11/16 */ @RestController @AllArgsConstructor @RequestMapping("/v1/nova/program") public class NewNovaProgramController { private final NewNovaProgramService newNovaProgramService; private final PermissionConfig permissionConfig; /** * èç®æ°å¢ * * @param programPrarm * @return * @throws InterruptedException */ @PostMapping("/addProgram") public ResponseVO<Object> addProgram(@RequestBody ProgramPrarm programPrarm) throws InterruptedException { if (!permissionConfig.check(MenuEnum.LED_NEW_PROGRAM_ADD.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (programPrarm.getProgramID() != null) { return ResponseUtil.fail("èç®æ°å¢æ éä¼ å ¥èç®id"); } return ResponseUtil.success(newNovaProgramService.addProgram(programPrarm)); } /** * èç®ç¼è¾ * * @param programPrarm * @return * @throws InterruptedException */ @PostMapping("/updateProgram") public ResponseVO<Object> updateProgram(@RequestBody @Validated ProgramPrarm programPrarm) throws InterruptedException { if (!permissionConfig.check(MenuEnum.LED_NEW_PROGRAM_UPDATE.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } if (programPrarm.getProgramID() == null) { return ResponseUtil.fail("èç®idä¸è½ä¸ºç©º"); } return ResponseUtil.success(newNovaProgramService.addProgram(programPrarm)); } /** * èç®å é¤ * * @param pids * @return */ @PostMapping("/deleteProgram") public ResponseVO<Object> delProgram(@RequestBody List<Long> pids) { if (!permissionConfig.check(MenuEnum.LED_NEW_PROGRAM_DEL.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(newNovaProgramService.delProgram(pids)); } /** * èç®è¯¦æ * * @param id * @return */ @PostMapping("/programInfo") public ResponseVO<Object> programInfo(@RequestParam(value = "id", required = true) Long id) { if (!permissionConfig.check(MenuEnum.LED_NEW_PROGRAM_INFO.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(newNovaProgramService.programInfo(id)); } /** * èç®å表 * * @param baseConditionVO * @param keyword * @return */ @GetMapping("/listProgram") public ResponseVO listProgram(BaseConditionVO baseConditionVO, @RequestParam(required = false, value = "keyword") String keyword) { if (!permissionConfig.check(MenuEnum.LED_NEW_PROGRAM_LIST.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(newNovaProgramService.listProgram(baseConditionVO, keyword)); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/program/NewNovaProgramService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,230 @@ package com.sandu.ximon.admin.newnova.program; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.execption.BusinessException; import com.sandu.common.file.config.NovaFileConfig; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.newnova.conf.ProgramPathConfig; import com.sandu.ximon.admin.newnova.file.NewNovaFileService; import com.sandu.ximon.admin.newnova.param.ProgramPrarm; import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil; import com.sandu.ximon.admin.newnova.vo.StatusVO; import com.sandu.ximon.admin.newnova.vo.TrasfromStatusVO; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.bo.NewNovaProgramBo; import com.sandu.ximon.dao.domain.NewNovaFile; import com.sandu.ximon.dao.domain.NewNovaProFileRelation; import com.sandu.ximon.dao.domain.NewNovaProgram; import com.sandu.ximon.dao.mapper.NewNovaProgramMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author LiuHaoNan * @date 2022/11/16 */ @Service @AllArgsConstructor public class NewNovaProgramService extends BaseServiceImpl<NewNovaProgramMapper, NewNovaProgram> { private NewNovaProFileRelationService fileRelationService; private NewNovaFileService fileService; private ProgramPathConfig filePathConfig; /** * èç®æ°å¢ * * @param programPrarm * @return */ public List<TrasfromStatusVO> addProgram(ProgramPrarm programPrarm) throws InterruptedException { NovaAPIUtil instanceUtil = NovaAPIUtil.getInstanceUtil(); NewNovaProgram newNovaProgram = new NewNovaProgram(); newNovaProgram.setName(programPrarm.getProgramMsg().getName()); newNovaProgram.setWidth(programPrarm.getProgramMsg().getWidth()); newNovaProgram.setHeight(programPrarm.getProgramMsg().getHeight()); newNovaProgram.setScreenShot(programPrarm.getScreenShot()); if (programPrarm.getInsertPlay()) { newNovaProgram.setInsertPlay(1); } else { newNovaProgram.setInsertPlay(0); } if (programPrarm.getStartPlayAfterTransferred()) { newNovaProgram.setStartPlayAfterTransferred(1); } else { newNovaProgram.setStartPlayAfterTransferred(0); } Integer pid = null; //å建èç® if (programPrarm.getProgramID() == null) { StatusVO createPro = instanceUtil.createPro(programPrarm.getProgramMsg()); pid = Integer.valueOf(createPro.getStatusData()); checkProgram(createPro); } else { NewNovaProgram byId = getById(programPrarm.getProgramID()); if (byId == null) { throw new BusinessException("æªæ¾å°èç®"); } pid = byId.getPid(); newNovaProgram.setId(byId.getId()); } System.out.println("pid = " + pid); programPrarm.setProgramID(pid); newNovaProgram.setPid(pid); //ç¼è¾èç® StatusVO editProgram = instanceUtil.editPrograms(pid, programPrarm.getSceneItems()); checkProgram(editProgram); newNovaProgram.setPageInfoJsonStr(JSON.toJSONString(programPrarm.getSceneItems())); //çæèç® StatusVO genrateProgram = instanceUtil.genrateProgram(pid); checkProgram(genrateProgram); //åå¸èç® List<TrasfromStatusVO> trasfromStatusVOS = new ArrayList<>(); if (!programPrarm.getSnList().isEmpty()) { Map<String, String> proFile = getProFile(programPrarm); programPrarm.setFileMap(proFile); trasfromStatusVOS = instanceUtil.trasfromProgram(programPrarm); } newNovaProgram.setUserId(SecurityUtils.getUserId()); saveOrUpdate(newNovaProgram); fileRelationService.saveRelation(newNovaProgram.getId(), programPrarm.getFileIds()); return trasfromStatusVOS; } /** * æ ¡éªæ¯å¦æ§è¡æå */ public void checkProgram(StatusVO statusVO) { if (statusVO.getStatusCode() != 0) { throw new BusinessException("èç®æ°å¢å¤±è´¥ : " + statusVO.getStatusData()); } } /** * è·åèç®æä»¶ * * @return */ public Map<String, String> getProFile(ProgramPrarm programPrarm) { List<NewNovaFile> novaFiles = fileService.listByIds(programPrarm.getFileIds()); if (novaFiles == null || novaFiles.size() == 0) { return new HashMap<String, String>(); } Map<String, String> fileMap = new HashMap<String, String>(); novaFiles.forEach(file -> { fileMap.put(file.getRealUrl(), file.getRealName()); }); return fileMap; } /** * å é¤èç® * * @param pids * @return */ public Boolean delProgram(List<Long> pids) { if (pids.isEmpty()) { throw new BusinessException("èç®idä¸è½ä¸ºç©º"); } List<NewNovaProgram> newNovaPrograms = listByIds(pids); if (newNovaPrograms.isEmpty()) { throw new BusinessException("æªæ¾å°èç®"); } newNovaPrograms.forEach(newNovaProgram -> { if (SecurityUtils.getClientId() != null) { if (!newNovaProgram.getUserId().equals(SecurityUtils.getUserId())) { throw new BusinessException("ä¸è½æä½ä¸å±äºä½ çèç®"); } } File file = new File(filePathConfig.getOutPutPath() + "/program" + newNovaProgram.getPid()); deleteFile(file); }); return removeByIds(pids); } /** * . * å 餿¬å°æä»¶å 容 * * @param file * @return */ public Boolean deleteFile(File file) { //夿æä»¶ä¸ä¸ºnullææä»¶ç®å½åå¨ if (file == null || !file.exists()) { System.out.println("æä»¶å é¤å¤±è´¥,è¯·æ£æ¥æä»¶æ¯å¦åå¨ä»¥åæä»¶è·¯å¾æ¯å¦æ£ç¡®"); return false; } //è·åç®å½ä¸åæä»¶ File[] files = file.listFiles(); //éå该ç®å½ä¸çæä»¶å¯¹è±¡ for (File f : files) { //夿åç®å½æ¯å¦åå¨åç®å½,å¦ææ¯æä»¶åå é¤ if (f.isDirectory()) { //éå½å é¤ç®å½ä¸çæä»¶ deleteFile(f); } else { //æä»¶å é¤ f.delete(); //æå°æä»¶å System.out.println("æä»¶åï¼" + f.getName()); } } //æä»¶å¤¹å é¤ file.delete(); System.out.println("ç®å½åï¼" + file.getName()); return true; } /** * èç®è¯¦æ * * @param id * @return */ public NewNovaProgram programInfo(Long id) { NewNovaProgram byId = getById(id); if (byId == null) { throw new BusinessException("æªæ¾å°èç® ! "); } List<NewNovaProFileRelation> fileRelations = fileRelationService.list(Wrappers.lambdaQuery(NewNovaProFileRelation.class).eq(NewNovaProFileRelation::getNewNovaProgramId, id)); if (!fileRelations.isEmpty()) { List<Long> fileIds = fileRelations.stream().map(NewNovaProFileRelation::getNewNovaFileId).collect(Collectors.toList()); List<NewNovaFile> newNovaFiles = fileService.listByIds(fileIds); List<String> fileUrls = new ArrayList<>(); NovaFileConfig config = SpringContextHolder.getBean(NovaFileConfig.class); for (NewNovaFile newNovaFile : newNovaFiles) { fileUrls.add(config.getFileUrl() + newNovaFile.getFileUrl()); } byId.setFiles(fileUrls); } byId.setPageInfo(JSON.parseObject(byId.getPageInfoJsonStr(), List.class)); return byId; } public List<NewNovaProgramBo> listProgram(BaseConditionVO baseConditionVO, String keyword) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); List<NewNovaProgramBo> list = baseMapper.listProgram(keyword, SecurityUtils.getClientId()); return list; } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
@@ -3,8 +3,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.sandu.common.execption.BusinessException; import com.sandu.common.file.config.NovaFileConfig; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.newnova.conf.FilePathConfig; import com.sandu.ximon.admin.newnova.conf.ProgramPathConfig; import com.sandu.ximon.admin.newnova.param.NewNovaStatusParam; import com.sandu.ximon.admin.newnova.param.ProgramPrarm; import com.sandu.ximon.admin.newnova.vo.*; @@ -12,7 +13,9 @@ import com.sandu.ximon.dao.bo.NewNovaInfoBo; import com.sandu.ximon.dao.domain.NewNovaLed; import com.sun.jna.Native; import org.joda.time.DateTime; import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; @@ -28,7 +31,7 @@ public class NovaAPIUtil { private FilePathConfig filePathConfig; private ProgramPathConfig filePathConfig; private Map<String, Boolean> loginSn = new HashMap(); @@ -39,7 +42,7 @@ private static String loginInfo = null; private NovaAPIUtil() { filePathConfig = SpringContextHolder.getBean(FilePathConfig.class); filePathConfig = SpringContextHolder.getBean(ProgramPathConfig.class); String rootDir = filePathConfig.getOutPutPath(); instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class); System.setProperty("jna.encoding", "UTF-8"); @@ -51,7 +54,7 @@ System.out.println(instance.nvInit(rootDir, companyInfo)); // login("MZVA51930N2113017308");//todo æå¨ç»å½è¿æ¯èªå¨ç»å½ // login("MZVA51930N2113017308"); } public static NovaAPIUtil getInstanceUtil() { @@ -67,8 +70,14 @@ /** * ç»å½ * loginType * 0ï¼ç»éå°å±ä½ç®¡ç * 1ï¼ç»éå°ç³»ç»è®¾ç½®ï¼æé¨ç»å½ï¼ * 2ï¼ç»éå°è¯ææ¨¡å * 3ï¼LCTç»å½ * 5ï¼å ¬ç½SDKç»å½ */ public StatusVO login(String sn) { public StatusVO login(String sn, Integer loginType) { StatusVO searchVO = new StatusVO(); System.out.println("ViplexCore Demo nvSearchTerminalAsync(æç´¢) begin... "); @@ -87,7 +96,7 @@ } }); try { countDownLatch1.await(); countDownLatch1.await(10000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } @@ -95,15 +104,19 @@ if (loginSn.get(sn) != null && loginSn.get(sn)) { return new StatusVO(0); } if (!loginInfo.contains(String.format("\"sn\":\"%s\",", sn))) { if (loginInfo == null) { return new StatusVO(10086); } if (!loginInfo.contains(String.format("\"sn\":\"%s\",", sn)) && loginType == 0) { //æªæç´¢å°å±å¹ ç»å½ä¸æå System.out.println("loginType : " + loginType); return new StatusVO(10086); } StatusVO statusVO = new StatusVO(); System.out.println("ViplexCore Demo nvLoginAsync(ç»å½) begin... "); String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":0}", sn); String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":" + loginType + "}", sn); CountDownLatch countDownLatch2 = new CountDownLatch(1); instance.nvLoginAsync(loginParam, new ViplexCore.CallBack() { @@ -112,8 +125,8 @@ public void dataCallBack(int code, String data) { statusVO.setStatusCode(code); statusVO.setStatusData(data); System.out.println("\nViplexCore Demo code:" + code); System.out.println("\nViplexCore Demo data:" + data); System.out.println("\nViplexCore ç»å½ code:" + code); System.out.println("\nViplexCore ç»å½ data:" + data); countDownLatch2.countDown(); } @@ -180,6 +193,7 @@ System.out.println("ViplexCore Demo nvSetPageProgramAsync(ç¼è¾èç®) begin... "); StatusVO statusVO = new StatusVO(); CountDownLatch countDownLatch = new CountDownLatch(1); System.out.println("editProgram: " + JSON.toJSONString(programInfoVO)); instance.nvSetPageProgramAsync(JSON.toJSONString(programInfoVO), new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { @@ -199,6 +213,42 @@ return statusVO; } /** * å¶ä½å¤é¡µèç® * * @param pageInfo * @return */ public StatusVO editPrograms(int pid, List<Map> pageInfo) { ProgramsInfoVO programInfoVO = new ProgramsInfoVO(); programInfoVO.setProgramID(pid); programInfoVO.setSceneItems(pageInfo); System.out.println("ViplexCore Demo nvSetPageProgramAsync(ç¼è¾èç®) begin... "); StatusVO statusVO = new StatusVO(); CountDownLatch countDownLatch = new CountDownLatch(1); System.out.println("editProgram: " + JSON.toJSONString(programInfoVO)); instance.nvSetPageProgramsAsync(JSON.toJSONString(programInfoVO), new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { statusVO.setStatusCode(code); statusVO.setStatusData(data); System.out.println("\nViplexCore ç¼è¾å¤é¡µèç® code:" + code); System.out.println("\nViplexCore ç¼è¾å¤é¡µèç® data:" + data); countDownLatch.countDown(); } }); try { countDownLatch.await(30000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } return statusVO; } /** @@ -243,15 +293,16 @@ public List<TrasfromStatusVO> trasfromProgram(ProgramPrarm pageInfo) { TransfromProgramVO transfromProgramVO = new TransfromProgramVO(); transfromProgramVO.setProgramName("èç®01"); transfromProgramVO.setProgramName(pageInfo.getProgramMsg().getName()); //设置èç®å 容 TransfromProgramVO.SendProgramFilePathsDTO sendProgramFilePaths = new TransfromProgramVO.SendProgramFilePathsDTO(); //èç® sendProgramFilePaths.setProgramPath(filePathConfig.getOutPutPath() + "/program" + pageInfo.getProgramID()); //æä»¶ Map<String, String> mediasPath = new HashMap(); mediasPath.put("C:/Users/Administrator/Desktop/novaWin/demo/java/test.png", "test.png"); sendProgramFilePaths.setMediasPath(mediasPath); // Map<String, String> mediasPath = new HashMap(); // mediasPath.put("C:/Users/Administrator/Desktop/novaWin/demo/java/test.png", "test.png"); // sendProgramFilePaths.setMediasPath(mediasPath); sendProgramFilePaths.setMediasPath(pageInfo.getFileMap()); transfromProgramVO.setSendProgramFilePaths(sendProgramFilePaths); //èç®æ è¯ @@ -277,10 +328,16 @@ } transfromProgramVO.setSn(sn); System.out.println(transfromProgramVO); StatusVO login = login(sn, 0); //æ¨éç»æ TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO(); trasfromStatusVO.setSn(sn); if (login.getStatusCode() != 0) { trasfromStatusVO.setStatusCode(login.getStatusCode()); trasfromStatusVO.setStatusData(login.getStatusData()); return; } System.out.println("program: " + JSON.toJSONString(transfromProgramVO)); instance.nvStartTransferProgramAsync(JSON.toJSONString(transfromProgramVO), new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { @@ -316,12 +373,17 @@ return svoList; } /** * æ¥è¯¢å¨çº¿ç¶æ * * @return */ public List<NewNovaLed> getOnlineStatus(List<NewNovaLed> newNovaListBos) { public List<NewNovaLed> getOnlineStatus(List<NewNovaLed> newNovaListBos, boolean onlineStatus) { List<NewNovaLed> online = new ArrayList<>(); //设置å¼å ³å±ç¶æ newNovaListBos.forEach(led -> { //è·åä¿¡æ¯ä¹åå ç»å½ @@ -329,11 +391,12 @@ new Thread(new Runnable() { @Override public void run() { StatusVO login = login(led.getSn()); StatusVO login = login(led.getSn(), 0); if (login.getStatusCode() == 0) { //ç»éæå 设置为å¨çº¿ led.setIsOnline(1); led.setOnlineSign(1); online.add(led); } else { led.setIsOnline(0); } @@ -346,6 +409,9 @@ throw new RuntimeException(e); } }); if (onlineStatus) { return online; } return newNovaListBos; } @@ -356,7 +422,7 @@ public NewNovaLed getInfo(NewNovaLed led) { System.out.println("ViplexCore Demo nvGetProductInfoAsync(è·åå±å¹ä¿¡æ¯) begin... "); StatusVO login = login(led.getSn()); StatusVO login = login(led.getSn(), 0); StatusVO result = new StatusVO(); if (login.getStatusCode() == 0) { @@ -393,7 +459,6 @@ } NewNovaInfoBo newNovaInfoBo = JSON.parseObject(result.getStatusData(), NewNovaInfoBo.class); led.setInfo(newNovaInfoBo); System.out.println(JSON.toJSONString(led.getInfo()) + "--------"); return led; } @@ -437,6 +502,52 @@ return newNovaLsit; } /** * 设置å¼å ³å± */ public boolean setPowerStatus(NewNovaStatusParam param) { System.out.println("ViplexCore Demo nvSetScreenPowerStateAsync(设置å±å¹å¼å ³) begin... "); CountDownLatch countDownLatch = new CountDownLatch(1); StatusVO login = login(param.getSn(), 0); String status = "CLOSE"; if (param.getPowerStatus() == 1) { status = "OPEN"; } if (login.getStatusCode() == 0) { String jsonStr = "{\n" + " \"sn\":\"" + param.getSn() + "\",\n" + " \"taskInfo\":{\n" + " \"state\":\"" + status + "\"\n" + " }\n" + "}"; instance.nvSetScreenPowerStateAsync(jsonStr, new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { System.out.println("\nViplexCore 设置å±å¹å¼å ³ code:" + code); System.out.println("\nViplexCore 设置å±å¹å¼å ³ data:" + data); countDownLatch.countDown(); if (code == 0) { login.setStatusCode(10086); } } }); try { countDownLatch.await(); } catch (InterruptedException e) { throw new RuntimeException(e); } } if (login.getStatusCode() == 10086) { return true; } else { return false; } } /** * è·åé³é @@ -486,11 +597,11 @@ System.out.println("ViplexCore Demo nvSetScreenBrightnessAsync(Volume) begin... "); CountDownLatch countDownLatch = new CountDownLatch(1); StatusVO login = login(param.getSn()); StatusVO login = login(param.getSn(), 0); if (login.getStatusCode() == 0) { String jsonStr = "{\n" + " \"sn\":\"" + param.getSn() + "\",\n" + " \"screenBrightnessInfo\":{\n" + " \"volumeInfo\":{\n" + " \"ratio\":" + param.getVolume() + "\n" + " }\n" + "}"; @@ -568,7 +679,7 @@ System.out.println("ViplexCore Demo nvSetScreenBrightnessAsync(设置亮度) begin... "); CountDownLatch countDownLatch = new CountDownLatch(1); StatusVO login = login(param.getSn()); StatusVO login = login(param.getSn(), 0); if (login.getStatusCode() == 0) { String jsonStr = "{\n" + " \"sn\":\"" + param.getSn() + "\",\n" + @@ -620,10 +731,15 @@ @Override public void dataCallBack(int code, String data) { System.out.println("\nViplexCore è·å亮度 code:" + code); System.out.println("\nViplexCore è·å亮度 data:" + data); System.out.println("\nViplexCore è·å忥 code:" + code); System.out.println("\nViplexCore è·å忥 data:" + data); if (code == 0) { newNova.setSync(1); boolean enable = (boolean) JSON.parseObject(data, Map.class).get("enable"); if (enable) { newNova.setSync(1); } } else { newNova.setSync(-1); } countDownLatch.countDown(); } @@ -656,11 +772,15 @@ new Thread(new Runnable() { @Override public void run() { //æ¨éç»æ instance.nvSetSyncPlayAsync("{\n" + login(newNova.getSn(), 0); String str = "{\n" + " \"sn\":\"" + newNova.getSn() + "\",\n" + " \"enable\":" + param.isSync() + "\n" + "}", new ViplexCore.CallBack() { "}"; System.out.println("str : " + str); //æ¨éç»æ instance.nvSetSyncPlayAsync(str, new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { @@ -695,52 +815,59 @@ throw new BusinessException("éå¯è®¾å¤ä¸è½ä¸ºç©º !"); } param.getNovaList().forEach(newNova -> { CountDownLatch countDownLatch = new CountDownLatch(1); new Thread(new Runnable() { @Override public void run() { //æ¨éç»æ instance.nvSetReBootTaskAsync("{\n" + " \"sn\":\"" + newNova.getSn() + "\",\n" + " \"taskInfo\":{\n" + " \"type\":\"REBOOT\",\n" + " \"source\":{\n" + " \"type\":0,\n" + " \"platform\":4\n" + " },\n" + " \"executionType\":\"IMMEDIATELY\",\n" + " \"reason\":\"Just to reboot\",\n" + " \"conditions\":[\n" + " {\n" + " \"cron\":[\n" + " \"0 15 10 ? * *\",\n" + " \"0 0 12 * * ?\"\n" + " ],\n" + " \"enable\":false\n" + " }\n" + " ]\n" + " }\n" + "}", new ViplexCore.CallBack() { CountDownLatch countDownLatch = new CountDownLatch(1); new Thread(new Runnable() { @Override public void dataCallBack(int code, String data) { System.out.println("\nViplexCore éå¯ code:" + code); System.out.println("\nViplexCore éå¯ data:" + data); if (code == 0) { newNova.setStatus(true); public void run() { StatusVO login = login(newNova.getSn(), 1); if (login.getStatusCode() != 0) { countDownLatch.countDown(); return; } countDownLatch.countDown(); } }); //æ¨éç»æ instance.nvSetReBootTaskAsync("{\n" + " \"sn\":\"" + newNova.getSn() + "\",\n" + " \"taskInfo\":{\n" + " \"type\":\"REBOOT\",\n" + " \"source\":{\n" + " \"type\":0,\n" + " \"platform\":4\n" + " },\n" + " \"executionType\":\"IMMEDIATELY\",\n" + " \"reason\":\"Just to reboot\",\n" + " \"conditions\":[\n" + " {\n" + " \"cron\":[\n" + " \"0 15 10 ? * *\",\n" + " \"0 0 12 * * ?\"\n" + " ],\n" + " \"enable\":false\n" + " }\n" + " ]\n" + " }\n" + "}", new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { System.out.println("\nViplexCore éå¯ code:" + code); System.out.println("\nViplexCore éå¯ data:" + data); if (code == 0) { newNova.setStatus(true); } countDownLatch.countDown(); } }); } }).start(); try { countDownLatch.await(30000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } login(newNova.getSn(), 0); } }).start(); try { countDownLatch.await(30000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } }); ); return param.getNovaList(); } @@ -761,9 +888,9 @@ new Thread(new Runnable() { @Override public void run() { //æ¨éç»æ instance.nvSetNetTimingInfoAsync("{\n" + " \"sn\":\"" + newNova.getSn() + "\",\n" + // login(newNova.getSn(), 0); String ntpStr="{\n" + " \"sn\":\""+newNova.getSn()+"\",\n" + " \"TimingInfo\":{\n" + " \"source\":{\n" + " \"type\":1,\n" + @@ -774,19 +901,25 @@ " \"type\":\"NTP_CONFIG\",\n" + " \"action\":4,\n" + " \"data\":{\n" + " \"enable\":" + param.isNtp() + ",\n" + " \"server\":\"http://ntpsss.net\"\n" + " \"enable\":"+param.isNtp()+",\n" + " \"server\":\"http://ntp1.aliyun.com\"\n" + " }\n" + " }\n" + " ]\n" + " }\n" + "}", new ViplexCore.CallBack() { "}"; System.out.println("ntpStr"+ ntpStr); //æ¨éç»æ instance.nvSetNetTimingInfoAsync(ntpStr, new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { System.out.println("\nViplexCore éå¯ code:" + code); System.out.println("\nViplexCore éå¯ data:" + data); if (code == 0) { System.out.println("\nViplexCore ntp code:" + code); System.out.println("\næ¶é´ ntp :" + DateTime.now()); System.out.println("\nViplexCore ntp data:" + data); if (code == 0 && data.contains("\"status\":1")) { System.out.println("results: " + data.contains("\"status\":1")); newNova.setStatus(true); } countDownLatch.countDown(); @@ -805,4 +938,61 @@ return param.getNovaList(); } /** * æªå± */ public List<NewNovaStatusParam.NovascreenShotDTO> screenShot(NewNovaStatusParam param) { System.out.println("ViplexCore Demo nvDownLoadScreenshotAsync(æªå±) begin... "); NovaFileConfig config = SpringContextHolder.getBean(NovaFileConfig.class); String shotPath = config.getScreenShotPath(); param.getScreenShotList().forEach(newNova -> { CountDownLatch countDownLatch = new CountDownLatch(1); new Thread(new Runnable() { @Override public void run() { login(newNova.getSn(), 0); String pictureName = newNova.getSn() + ".png"; String str = "{\n" + " \"sn\":\"" + newNova.getSn() + "\",\n" + " \"width\":400,\n" + " \"height\":400,\n" + " \"downLoadDirectoryPath\":\"" + shotPath.replace(File.separator, "/") + "\",\n" + " \"pictureName\":\"" + pictureName + "\",\n" + " \"pictureType\":0\n" + "}"; System.out.println("str" + str); //æ¨éç»æ instance.nvDownLoadScreenshotAsync(str, new ViplexCore.CallBack() { @Override public void dataCallBack(int code, String data) { System.out.println("\nViplexCore æªå± code:" + code); System.out.println("\nViplexCore æªå± data:" + data); newNova.setCode(code); if (code == 0) { String img = config.getScreenShotPath() + pictureName; newNova.setScreenShot(config.getFileUrl() + img.replace(config.getUploadRootPath(), "").replace(File.separator, "/")); } else { newNova.setScreenShot(data); } countDownLatch.countDown(); } }); } }).start(); try { countDownLatch.await(30000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } }); return param.getScreenShotList(); } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/AirDataVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,185 @@ package com.sandu.ximon.admin.newnova.vo; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; /** * @author LiuHaoNan * @date 2022/11/18 */ @NoArgsConstructor @Data public class AirDataVO { private String name; private List<WidgetContainersDTO> widgetContainers; @NoArgsConstructor @Data public static class WidgetContainersDTO { private ContentsDTO contents; private Integer id; private String name; @NoArgsConstructor @Data public static class ContentsDTO { private List<WidgetsDTO> widgets; @NoArgsConstructor @Data public static class WidgetsDTO { private List<ConstraintsDTO> constraints; private Integer duration; private MetadataDTO metadata; private String name; private String type; @NoArgsConstructor @Data public static class MetadataDTO { @JsonProperty("content") private ContentDTO content; @NoArgsConstructor @Data public static class ContentDTO { private Boolean autoPaging; private BackgroundMusicDTO backgroundMusic; private DisplayStyleDTO displayStyle; private List<ParagraphsDTO> paragraphs; private List<TextAttributesDTO> textAttributes; @NoArgsConstructor @Data public static class BackgroundMusicDTO { private Integer duration; private Boolean isTextSync; } @NoArgsConstructor @Data public static class DisplayStyleDTO { private ScrollAttributesDTO scrollAttributes; private String type; @NoArgsConstructor @Data public static class ScrollAttributesDTO { private EffectsDTO effects; @NoArgsConstructor @Data public static class EffectsDTO { private String animation; private Integer speed; } } } @NoArgsConstructor @Data public static class ParagraphsDTO { private String backgroundColor; private String horizontalAlignment; private Integer letterSpacing; private Integer lineSpacing; private List<LinesDTO> lines; private String verticalAlignment; @NoArgsConstructor @Data public static class LinesDTO { private List<SegsDTO> segs; @NoArgsConstructor @Data public static class SegsDTO { private String content; } } } @NoArgsConstructor @Data public static class TextAttributesDTO { private String backgroundColor; private AttributesDTO attributes; @NoArgsConstructor @Data public static class AttributesDTO { private FontDTO font; private Integer letterSpacing; private String textColor; @NoArgsConstructor @Data public static class FontDTO { private List<String> family; private Boolean isUnderline; private Integer size; private String style; } } } } } @NoArgsConstructor @Data public static class ConstraintsDTO { private List<String> cron; private String endTime; private String startTime; } } } } } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProgramsInfoVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.sandu.ximon.admin.newnova.vo; import lombok.Data; import java.util.List; import java.util.Map; /** * @author LiuHaoNan * @date 2022/11/18 */ @Data public class ProgramsInfoVO { /** * èç®id(å建èç®è¿åçid) */ private int programID; /** * pageId(å½åçæ¬pageId为1) */ private int pageID = 1; /** * åºæ¯å表ï¼ä¸ä¸ªåºæ¯å å«ä¸ä¸ªææ¾é¡µé¢ï¼å¤ä¸ªåºæ¯å¯¹åºå¤ä¸ªææ¾é¡µé¢ */ private List<Map> sceneItems; } ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TransfromProgramVO.java
@@ -3,6 +3,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.HashMap; import java.util.Map; /** @@ -67,7 +68,7 @@ /** * {åªä½è·¯å¾ : åªä½åç§°}(ä» æ¬å°å¾çï¼è§é¢ï¼GIFæä»¶éè¦æ¬¡è·¯å¾) */ private Map<String, String> mediasPath; private Map<String, String> mediasPath = new HashMap<>(); } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
@@ -5,6 +5,7 @@ import com.sandu.common.execption.BusinessException; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.newnova.led.NewNovaLedService; import com.sandu.ximon.admin.param.PoleBindingParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.*; @@ -97,6 +98,9 @@ case PoleBindingEnums.ATMOSPHERIC_NONG_GENG: size = SpringContextHolder.getBean(AirEquipmentNongGengService.class).list(Wrappers.lambdaQuery(AirEquipmentNongGeng.class).eq(AirEquipmentNongGeng::getMac, param.getDeviceCode())).size(); break; case PoleBindingEnums.NEW_NOVA: size = SpringContextHolder.getBean(NewNovaLedService.class).list(Wrappers.lambdaQuery(NewNovaLed.class).eq(NewNovaLed::getSn, param.getDeviceCode())).size(); break; default: break; } ximon-admin/src/main/resources/application-local.yml
@@ -65,7 +65,7 @@ nova-conf: #诺ç¦åè° nova-conf: #诺ç¦åè° notify-url: http://39.103.154.108:20018/serv/vnnox/progress screen-shot-notify-url: http://39.103.154.108:20018/serv/vnnox/screenshot status-notify-url: http://39.103.154.108:20018/serv/vnnox/asyncStatus @@ -86,6 +86,7 @@ new-nova: #ä¾èµå°å string-path: C:\Users\Administrator\Desktop\novaWin\bin\viplexcore.dll #èç®çæè·¯å¾ out-put-path: E:\IdeaProjects\XMPoleManager/temp new-nova-file: @@ -94,4 +95,6 @@ upload-root-path: E:\file\ storage: local #æå¡å¨æä»¶åç¼ real-url: http://183.45.76.239:8089/file/ file-url: http://183.45.76.239:8089/file/ #è¯ºç¦æªå±åæ¾è·¯å¾ æä»¶å¤¹å¿ é¡»åå¨ ä¸æ¯æå¡å¨æä»¶è·¯å¾(upload-root-path)ä¸çåæä»¶å¤¹ screen-shot-path: E:\file\screenShot\