dao/src/main/java/com/sandu/ximon/dao/domain/FileOperationRecord.java
@@ -61,6 +61,11 @@ */ private String fileName; /** * 1:LEDè¯ºç¦ 2:LEDç讯 3:ip鳿± */ private Integer dataType; @TableField(exist = false) private static final long serialVersionUID = 1L; } dao/src/main/java/com/sandu/ximon/dao/domain/PoleXixunPlayerEntity.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ 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.time.LocalDateTime; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** * * @TableName pole_xixun_player */ @TableName(value ="pole_xixun_player") @Data public class PoleXixunPlayerEntity implements Serializable { /** * */ @TableId(type = IdType.AUTO) private Long programId; /** * */ private String programCode; /** * */ private String programName; /** * */ private String totalSize; /** * */ private Long width; /** * */ private Long height; /** * */ private String requestBody; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private String creatTime; /** * */ private Long createUserId; @TableField(exist = false) private static final long serialVersionUID = 1L; } dao/src/main/java/com/sandu/ximon/dao/mapper/PoleXixunPlayerEntityMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.sandu.ximon.dao.mapper; import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; /** * @Entity com.sandu.ximon.dao.domain.PoleXixunPlayerEntity */ @Mapper public interface PoleXixunPlayerEntityMapper extends BaseMapper<PoleXixunPlayerEntity> { } dao/src/main/resources/mapper/FileOperationRecordMapper.xml
@@ -14,11 +14,13 @@ <result property="width" column="width" jdbcType="INTEGER"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="fileName" column="file_name" jdbcType="VARCHAR"/> <result property="dataType" column="data_type" jdbcType="INTEGER"/> </resultMap> <sql id="Base_Column_List"> file_id,origin_name,file_url, file_type,file_size,height, width,create_time,file_name width,create_time,file_name, data_type </sql> </mapper> dao/src/main/resources/mapper/PoleXixunPlayerEntityMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ <?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.PoleXixunPlayerEntityMapper"> <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.PoleXixunPlayerEntity"> <id property="programId" column="program_id" jdbcType="BIGINT"/> <result property="programCode" column="program_code" jdbcType="VARCHAR"/> <result property="programName" column="program_name" jdbcType="VARCHAR"/> <result property="totalSize" column="total_size" jdbcType="VARCHAR"/> <result property="width" column="width" jdbcType="BIGINT"/> <result property="height" column="height" jdbcType="BIGINT"/> <result property="requestBody" column="request_body" jdbcType="VARCHAR"/> <result property="creatTime" column="creat_time" jdbcType="TIMESTAMP"/> <result property="createUserId" column="create_user_id" jdbcType="BIGINT"/> </resultMap> <sql id="Base_Column_List"> program_id,program_code,program_name, total_size,width,height, request_body,creat_time,create_user_id </sql> </mapper> ximon-admin/src/main/java/com/sandu/ximon/admin/config/XiXunConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.sandu.ximon.admin.config; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; /** * @Author liuhaonan * @Date 2022/1/18 16:58 * @Version 1.0 */ @Data @Configuration public class XiXunConfig { @Value("${server.port}") private String port; private String ip = "222.129.11.36"; } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeFileController.java
@@ -38,11 +38,11 @@ @GetMapping("/list") public ResponseVO<Object> list(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword){ PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); LambdaQueryWrapper<IpVolumeFile> wrapper = ipVolumeFileService.listFile(keyword); if (null != keyword) { // PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); LambdaQueryWrapper<IpVolumeFile> wrapper = ipVolumeFileService.listFile(baseConditionVO, keyword); /* if (null != keyword) { wrapper.like(IpVolumeFile::getFileName, keyword); } return ResponseUtil.successPage(ipVolumeFileService.list(wrapper)); }*/ return ResponseUtil.success(ipVolumeFileService.list(wrapper)); } } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LedSFileController.java
@@ -54,12 +54,14 @@ return ResponseUtil.success(ledProgramFileService.list(wrapper)); } @PostMapping("/uploading") public ResponseVO<Object> uploadingFile(@RequestParam("file") MultipartFile file) { @PostMapping("/uploading/{dateType}") public ResponseVO<Object> uploadingFile(@RequestParam("file") MultipartFile file,@PathVariable Integer dateType) { FileUploadDto fileUploadDto = aliOssFileService.uploadFile(file); FileOperationRecord fileOperationRecord = new FileOperationRecord(); BeanUtils.copyProperties(fileUploadDto, fileOperationRecord); return ResponseUtil.success(fileOperationRecordService.save(fileOperationRecord)); fileOperationRecord.setDataType(dateType); fileOperationRecordService.save(fileOperationRecord); return ResponseUtil.success(fileUploadDto); } } ximon-admin/src/main/java/com/sandu/ximon/admin/entity/CommandPro.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.sandu.ximon.admin.entity; import lombok.Data; @Data public class CommandPro { private String id; private String preDownloadURL; private String notificationURL; private TaskPro task; private String _type = "PlayXixunTask"; } ximon-admin/src/main/java/com/sandu/ximon/admin/entity/ItemPro.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.sandu.ximon.admin.entity; import lombok.Data; import java.util.List; @Data public class ItemPro { private String _id; //UUID private ProgramPro _program; //å°å è£ å¥½çèç®èµå¼ç»ä» private int repeatTimes; //é夿¬¡æ° private List<SchedulePro> schedulePros =null; //å¯ä»¥ä¸ºä¸ä¸ªprogramæ·»å å¤ä¸ªå®æ¶æ®µ } ximon-admin/src/main/java/com/sandu/ximon/admin/entity/ProgramPro.java
@@ -9,10 +9,10 @@ private Long programId; private String _id; //请使ç¨UUIDèµå¼ private String name; //好记çåå private int width; //èç®å®½ private int height; //èç®é«åº¦ private Long width; //èç®å®½ private Long height; //èç®é«åº¦ private List<LayerPro> layers; //ææç´ æé½å å«å¨è¯¥listä¸ private long totalSize; //å°layersä¸çsourcesçsizeç´¯å èµå¼ç»ä»ï¼è¡¨ç¤ºèç®ææç´ æå ç¨çç©ºé´ private Long totalSize; //å°layersä¸çsourcesçsizeç´¯å èµå¼ç»ä»ï¼è¡¨ç¤ºèç®ææç´ æå ç¨çç©ºé´ //å¦æä¸ºtrueï¼å该èç®æ¥èªç¬¬ä¸æ¹æ¥å£ï¼ä¸æ¯æ¥èªæä»¬èªå·±çwebï¼äºæ¬¡å¼å请å¡å¿ èµå¼ä¸ºtrue private boolean isOthers=true; private int version; //2ä¸ºç®æèç®ï¼9为å®ç¹èç®ï¼å ¶ä»ä¸ºé«çº§èç®ï¼è¯·èµå¼å ¶ä»ã ximon-admin/src/main/java/com/sandu/ximon/admin/entity/SchedulePro.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ package com.sandu.ximon.admin.entity; public class SchedulePro { } ximon-admin/src/main/java/com/sandu/ximon/admin/entity/TaskPro.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.sandu.ximon.admin.entity; import lombok.Data; import java.util.List; @Data public class TaskPro { private String _id; //使ç¨UUIDèµå¼ private String name; //èç®å private List<ItemPro> items; } ximon-admin/src/main/java/com/sandu/ximon/admin/entity/XixunPlayerPro.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.sandu.ximon.admin.entity; import lombok.Data; @Data public class XixunPlayerPro { private String type="commandXixunPlayer"; private String _id; private CommandPro command; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java
@@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.IpVolumeFileParam; import com.sandu.ximon.admin.param.ReceiveParam; @@ -48,8 +50,9 @@ return removeById(fileId); } public LambdaQueryWrapper<IpVolumeFile> listFile(String keyword) { public LambdaQueryWrapper<IpVolumeFile> listFile(BaseConditionVO baseConditionVO, String keyword) { LambdaQueryWrapper<IpVolumeFile> wrapper = Wrappers.lambdaQuery(IpVolumeFile.class).eq(IpVolumeFile::getClientId, clientService.getClientId()); PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); if (keyword.isEmpty()) { return wrapper; } else { ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,102 @@ package com.sandu.ximon.admin.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.config.XiXunConfig; import com.sandu.ximon.admin.entity.*; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.JsonUtil; import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; import com.sandu.ximon.dao.mapper.PoleXixunPlayerEntityMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.*; @Service @AllArgsConstructor public class XiXunPlayerService extends BaseServiceImpl<PoleXixunPlayerEntityMapper, PoleXixunPlayerEntity> { private final PoleXixunPlayerEntityMapper poleXixunPlayerEntityMapper; private final XiXunConfig config; public void insert(ProgramPro programPro, Long userId) { SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd HH:mm:ss"); Date date = new Date(); // Program program = new Program(); // try { // program = JsonUtil.convertJsonStringToObject(json,Program.class); // } catch (Exception e) { // e.printStackTrace(); // } String json = JsonUtil.jsonObj2Sting(programPro); PoleXixunPlayerEntity poleXixunPlayer = new PoleXixunPlayerEntity(); poleXixunPlayer.setProgramCode(programPro.get_id()); poleXixunPlayer.setProgramName(programPro.getName()); poleXixunPlayer.setHeight(programPro.getHeight()); poleXixunPlayer.setWidth(programPro.getWidth()); poleXixunPlayer.setTotalSize((float) programPro.getTotalSize()/1000000+"MB"); poleXixunPlayer.setRequestBody(json); poleXixunPlayer.setCreatTime(sdf.format(date)); poleXixunPlayer.setCreateUserId(SecurityUtils.getClientId()); this.save(poleXixunPlayer); } public void videoXixunPlayer(long programId,Long[] lightemitIds) { ProgramPro pro = new ProgramPro(); ItemPro items = new ItemPro(); TaskPro taskPro = new TaskPro(); CommandPro command = new CommandPro(); XixunPlayerPro xixun = new XixunPlayerPro(); PoleXixunPlayerEntity poleXixunPlayerEntity = new PoleXixunPlayerEntity(); items.set_id(UUID.randomUUID().toString()); QueryWrapper<PoleXixunPlayerEntity> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("program_id",programId); poleXixunPlayerEntity = this.getOne(queryWrapper); String json = poleXixunPlayerEntity.getRequestBody(); try { pro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); } catch (Exception e) { e.printStackTrace(); } items.set_program(pro); items.setRepeatTimes(1); items.setSchedulePros(null);//宿¶æ®µï¼ä¸å宿¶å¯ä¸ºnull taskPro.set_id(UUID.randomUUID().toString()); taskPro.setName(poleXixunPlayerEntity.getProgramName()); List<ItemPro> list2=new ArrayList<ItemPro>(); list2.add(items); taskPro.setItems(list2); command.setId(UUID.randomUUID().toString()); //è¿éæ¯ä¸æ¹çpoståè°å°åï¼éè¦ä¿®æ¹IPå°å command.setNotificationURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/getJSON"); //èµæºä¸è½½é¾æ¥ç请æ±å¤´ // command.setPreDownloadURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/downliadFileById/"); // command.setTask(taskPro); // xixun.set_id(UUID.randomUUID().toString()); // xixun.setCommand(command); // xixun.setType("commandXixunPlayer"); //å½ä»¤åºå®ç±»åï¼ä¸å¯æ´æ¹ Gson gson = new GsonBuilder().disableHtmlEscaping().create(); // String jsondata = JSON.toJSONString(xixun); String jsondata = gson.toJson(xixun); /* Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(Arrays.asList(lightemitIds)); if(poleLightemitEntities != null){ for (PoleLightemitEntity entity: poleLightemitEntities) { lightemitUtils.clear(entity.getLightemitControlCode()); poleLightemitService.updateRequestBody(entity.getLightemitControlCode(), jsondata); lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), jsondata); } }*/ } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/JsonUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,129 @@ package com.sandu.ximon.admin.utils; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import jdk.nashorn.internal.ir.ObjectNode; import java.io.IOException; public class JsonUtil { private static ObjectMapper objectMapper; static { objectMapper = new ObjectMapper(); // çå§çFAIL_ON_EMPTY_BEANSçç´ï¿½Ñç´è¤°æ³ç°éæ¥å¯²ç»åî®çâ²ç¬çä½¹å§å¯®åç¶ objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // çå§çFAIL_ON_UNKNOWN_PROPERTIESçç´ï¿½Ñç´è¤°æSONçæ¥îæ¶è¹è çæ¨ºæ¹ªJavaçµç¡ èå¨âæ¹é¨å«çé¬Ñç´è¹çæ objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } /** * Convert Object to JsonString * * @param jsonObj * @return */ public static String jsonObj2Sting(Object jsonObj) { String jsonString = null; try { jsonString = objectMapper.writeValueAsString(jsonObj); } catch (IOException e) { System.out.printf("pasre json Object[{}] to string failed.",jsonString); } return jsonString; } /** * Convert JsonString to Simple Object * * @param jsonString * @param cls * @return */ public static <T> T jsonString2SimpleObj(String jsonString, Class<T> cls) { T jsonObj = null; try { jsonObj = objectMapper.readValue(jsonString, cls); } catch (IOException e) { System.out.printf("pasre json Object[{}] to string failed.",jsonString); } return jsonObj; } /** * Method that will convert object to the ObjectNode. * * @param object * the source data; if null, will return null. * @return the ObjectNode data after converted. * @throws Exception */ public static <T> ObjectNode convertObject2ObjectNode(T object) throws Exception { if (null == object) { return null; } ObjectNode objectNode = null; if (object instanceof String) { objectNode = convertJsonStringToObject((String) object, ObjectNode.class); } else { objectNode = convertValue(object, ObjectNode.class); } return objectNode; } /** * Method that will convert the json string to destination by the type(cls). * * @param jsonString * the source json string; if null, will return null. * @param cls * the destination data type. * @return * @throws Exception */ public static <T> T convertJsonStringToObject(String jsonString, Class<T> cls) throws Exception { if (StringUtil.strIsNullOrEmpty(jsonString)) { return null; } try { T object = objectMapper.readValue(jsonString, cls); return object; } catch (Exception e) { throw new Exception(e); } } /** * Method that will convert from given value into instance of given value * type. * * @param fromValue * @param toValueType * @return * @throws Exception */ private static <T> T convertValue(Object fromValue, Class<T> toValueType) throws Exception { try { return objectMapper.convertValue(fromValue, toValueType); } catch (IllegalArgumentException e) { throw new Exception(e); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/StringUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ package com.sandu.ximon.admin.utils; public class StringUtil { public static boolean strIsNullOrEmpty(String s) { return (null == s || s.trim().length() < 1); } }