dao/src/main/java/com/sandu/ximon/dao/bo/InterphoneSubBo.java
@@ -11,4 +11,5 @@ public class InterphoneSubBo extends InterphoneSub { private String poleId; private String PoleName; private Integer hostId; } dao/src/main/java/com/sandu/ximon/dao/domain/Pole.java
@@ -4,13 +4,13 @@ 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 com.sandu.ximon.dao.bo.BindEquipments; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import com.sandu.ximon.dao.bo.BindEquipments; import lombok.Data; /** * ç¯æè¡¨ @@ -97,6 +97,19 @@ private Integer bindingCount; /** * æ¯å¦ä¸ºä¸å¿ */ @JsonIgnore private Integer centre; /** * æ¯å¦ä¸ºä¸å¿ */ @TableField(exist = false) private boolean Center = false; /** * å建æ¶é´ */ private LocalDateTime createTime; dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java
@@ -15,7 +15,7 @@ boolean updateDeviceCode(Long id); List<Pole> queryPoleOnLineStatesList(Long userid, Integer isTrue, Integer bingStates, Long groupid, String keyword, String orderBy); List<Pole> queryPoleOnLineStatesList(Long userid, Integer isTrue, Integer bingStates, Long groupid, String keyword,Integer center, String orderBy); List<Pole> getPoleListOnBinding(Long userid, String keyword); } dao/src/main/resources/mapper/PoleMapper.xml
@@ -9,6 +9,7 @@ <result property="poleCode" column="pole_code" jdbcType="BIGINT"/> <result property="poleName" column="pole_name" jdbcType="VARCHAR"/> <result property="deviceType" column="device_type" jdbcType="INTEGER"/> <result property="centre" column="centre" jdbcType="INTEGER"/> <result property="userId" column="user_id" jdbcType="BIGINT"/> <result property="clientId" column="client_id" jdbcType="BIGINT"/> <result property="province" column="province" jdbcType="VARCHAR"/> @@ -51,7 +52,8 @@ </if> <if test="keyword != null and keyword != ''"> AND ( t1.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.device_code LIKE CONCAT(CONCAT('%', #{keyword}), '%')) OR t1.device_code LIKE CONCAT(CONCAT('%', #{keyword}), '%') OR t1.centre LIKE CONCAT(CONCAT('%', #{keyword}), '%')) </if> <if test="isTrue != null and isTrue == 1"> AND t1.device_type = -1 @@ -68,6 +70,9 @@ <if test="bingStates != null and bingStates == 1 "> AND t1.user_id = -1 </if> <if test="center != null and center != ''"> AND t1.centre = #{center} </if> </where> GROUP BY t1.id <if test="orderBy != null"> ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java
@@ -27,6 +27,8 @@ public static String SIMU_LCAST = "/v1/player/immediateControl/simulcast"; // NTPå¯¹æ¶ public static String NTP_SYNC = "/v1/player/immediateControl/ntp"; //å¤©æ° public static String WEATHER = "/v1/player/program/weather"; public static String getUrl(String urlSuffix) { ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java
@@ -91,6 +91,22 @@ return ResponseUtil.success(playPlanNvService.pushProgram(pid, playerIds)); } @PostMapping(value = "/pushWeather/{pid}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushWeather(@PathVariable Long pid, @RequestBody List<NovaPushResultVO> playerIds) { if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(playPlanNvService.pushProgram(pid, playerIds)); } @PostMapping(value = "/pushWeatherPlan/{id}", produces = "application/json;charset=UTF-8") public ResponseVO<Object> pushWeatherPlan(@PathVariable Long id, @RequestBody List<NovaPushResultVO> playerIds) { if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) { return ResponseUtil.fail("缺å°å¯¹åºç¨æ·æé"); } return ResponseUtil.success(playPlanNvService.pushWeatherToLed(id, playerIds)); } @GetMapping("/listPlan") public ResponseVO<Object> list(BaseConditionVO baseConditionVO, @RequestParam(value = "order", required = false) Integer order, ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/NormalProgramDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ package com.sandu.ximon.admin.dto.nova; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; /** * @author LiuHaoNan * @date 2022/8/1 * æ®éèç®å®ä½ */ @NoArgsConstructor @Data public class NormalProgramDto { private String name; private List<SchedulesDTO> schedules; private List<WidgetsDTO> widgets; @NoArgsConstructor @Data public static class SchedulesDTO { private String startDate; private String endDate; private List<PlansDTO> plans; @NoArgsConstructor @Data public static class PlansDTO { private List<Integer> weekDays; private String startTime; private String endTime; } } @NoArgsConstructor @Data public static class WidgetsDTO { private Integer zIndex; private String type; private Integer size; private String md5; private Integer duration; private String url; private LayoutDTO layout; private InAnimationDTO inAnimation; @NoArgsConstructor @Data public static class LayoutDTO { private String x; private String y; private String width; private String height; } @NoArgsConstructor @Data public static class InAnimationDTO { private String type; private Integer duration; } } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/WeatherDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,84 @@ package com.sandu.ximon.admin.dto.nova; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; /** * @author LiuHaoNan * @date 2022/8/1 */ @NoArgsConstructor @Data public class WeatherDto { private String name; private List<WidgetsDTO> widgets; @NoArgsConstructor @Data public static class WidgetsDTO { private Integer zIndex; private String type; private String address; private Double latitude; private Double longitude; private Integer width; private Integer height; private Integer refreshPeriod; private Integer fontSize; private Boolean bold; private Boolean italic; private Boolean underline; private String color; private Integer tempUnit; private Integer unitSymbol; private Boolean weatherEnable; private Boolean tempEnable; private Boolean windEnable; private Boolean humidEnable; private Boolean currentTempEnable; private Boolean isShowInOneLine; private Integer duration; private LayoutDTO layout; @NoArgsConstructor @Data public static class LayoutDTO { private String x; private String y; private String width; private String height; } } } ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/WeatherProgram.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ package com.sandu.ximon.admin.dto.nova; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.utils.request.VnnoxRequest; import lombok.Data; import java.util.List; import java.util.Map; /** * @author LiuHaoNan * @date 2022/8/1 */ @Data public class WeatherProgram implements VnnoxRequest { // éè¦å¤ççææ¾å¨IDéå,æå¤æ¯æ100ä¸ªææ¾å¨åæ¶å¤ç private List<String> playerIds; // ææ¾æ¶é´ææï¼å¦æä¸ºç©ºï¼ä¼å ¨å¤©24å°æ¶å¾ªç¯ææ¾ private Map schedule; // éè¦ææ¾ç页é¢å 容éå private List<WeatherDto> pages; // èç®ä¸è½½è¿åº¦éç¥æ¥å£ï¼ä¼éè¿æ¤æ¥å£å°èç®çä¸è½½è¿åº¦åç»å®¢æ·ï¼æ¥å£çååºæ¶é´ä¸è½è¶ è¿3s private String noticeUrl; @Override public String toJson() { return VnnoxConstant.GSON.toJson(this); } } ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleParam.java
@@ -71,5 +71,11 @@ private String deviceCode; /** * æ¯å¦ä¸ºä¸å¿ 0æ¯ 1å¦ */ private Integer isCenter; } ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleStatesParam.java
@@ -32,5 +32,10 @@ */ private Integer isTrue; /** * æ¯å¦ä¸å¿ 0æ¯/1å¦/2å ¨é¨ */ private Integer center; } ximon-admin/src/main/java/com/sandu/ximon/admin/service/InterphoneHostSubService.java
@@ -8,6 +8,7 @@ import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.InterphoneHost; import com.sandu.ximon.dao.domain.InterphoneHostSubPole; import com.sandu.ximon.dao.domain.InterphoneSub; import com.sandu.ximon.dao.mapper.InterphoneHostSubPoleMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -29,7 +30,7 @@ } InterphoneHostSubPole pole = new InterphoneHostSubPole(); InterphoneHost host = SpringContextHolder.getBean(InterphoneHostService.class).getById(hostId); InterphoneHost sub = SpringContextHolder.getBean(InterphoneHostService.class).getById(subId); InterphoneSub sub = SpringContextHolder.getBean(InterphoneSubService.class).getById(subId); if (host == null || sub == null) { throw new BusinessException("ä¸»è®¾å¤æå设å¤ä¸åå¨"); } ximon-admin/src/main/java/com/sandu/ximon/admin/service/InterphoneSubService.java
@@ -148,6 +148,13 @@ } else { list = interphoneSubMapper.getInterphoneSubList(keyword, SecurityUtils.getUserId()); } list.forEach(interphoneSubBo -> { InterphoneHostSubPole one = SpringContextHolder.getBean(InterphoneHostSubService.class).getOne(Wrappers.lambdaQuery(InterphoneHostSubPole.class) .eq(InterphoneHostSubPole::getSubId, interphoneSubBo.getSubId())); if (one != null) { interphoneSubBo.setHostId(one.getHostId()); } }); return list; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java
@@ -10,10 +10,7 @@ import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.dto.PlanDto; import com.sandu.ximon.admin.dto.SchedulesDTO; import com.sandu.ximon.admin.dto.nova.PlayerProgram; import com.sandu.ximon.admin.dto.nova.ProgramDto; import com.sandu.ximon.admin.dto.nova.ProgramPush; import com.sandu.ximon.admin.dto.nova.ProgramSchedule; import com.sandu.ximon.admin.dto.nova.*; import com.sandu.ximon.admin.entity.Plans; import com.sandu.ximon.admin.param.PlayPlanParam; import com.sandu.ximon.admin.security.SecurityUtils; @@ -168,6 +165,12 @@ return removeByIds(ids); } /** * æ¨é宿¶èç® * @param planId * @param nova * @return */ public Map<String, Object> pushToLed(Long planId, List<NovaPushResultVO> nova) { if (nova == null) { throw new BusinessException("è¯·éæ©æ£ç¡®çLEDå±"); @@ -496,4 +499,103 @@ return result; } /** * 宿¶æ¨éå¤©æ° * @param planId * @param nova * @return */ public Map<String, Object> pushWeatherToLed(Long planId, List<NovaPushResultVO> nova) { if (nova == null) { throw new BusinessException("è¯·éæ©æ£ç¡®çLEDå±"); } PushToLed pushToLed = playPlanMapper.pushToLed(planId); if (pushToLed.getPages() == null) { throw new BusinessException("èç®å 容丢失"); } PlayPlanNv byId = getById(planId); if (pushToLed == null) { throw new BusinessException("æªæ¾å°è¯¥ææ¾è®¡å"); } List<String> playerIds = new ArrayList<>(); nova.forEach(n -> { playerIds.add(n.getPlayerId()); }); WeatherProgram program = new WeatherProgram(); program.setPlayerIds(playerIds); //è·åèç®å®ä½ List<WeatherDto> programDtos = JSON.parseArray(pushToLed.getPages(), WeatherDto.class); program.setPages(programDtos); //è·åèç®å®æ¶å®ä½ program.setSchedule((JSON.parseObject(pushToLed.getSchedule(), Map.class))); Map map = JSON.parseObject(pushToLed.getSchedule(), Map.class); map.get("plans"); List<Plans> plans = JSON.parseArray(map.get("plans").toString(), Plans.class); plans.forEach(p -> { //å é¤å两ä½å符串 p.setStartTime(p.getStartTime().substring(0, p.getStartTime().length() - 3)); p.setEndTime(p.getEndTime().substring(0, p.getEndTime().length() - 3)); }); map.put("plans", plans); program.setSchedule(map); program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.pushWeather(program); vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(pushToLed.getVolume()).intValue()); List<String> success = new ArrayList<>(); List<String> fail = new ArrayList<>(); if (vnnoxResultResponse.getData() != null) { success = vnnoxResultResponse.getData().getSuccess(); fail = vnnoxResultResponse.getData().getFail(); } //æ¼æ¥æå失败çç»æ Map<String, Object> result = new HashMap<>(); List<NovaPushResultVO> successList = new ArrayList<>(); List<NovaPushResultVO> faileList = new ArrayList<>(); List<String> finalSuccess = success; List<String> finalFail = fail; nova.forEach(n -> { if (finalSuccess.contains(n.getPlayerId())) { successList.add(n); } else if (finalFail.contains(n.getPlayerId())) { faileList.add(n); } }); result.put("success", successList); result.put("fail", faileList); /** * è¯ºç¦æ¨éèç®æ¥å¿è®°å½å¼å§ */ List<LedPlayerEntity> list = SpringContextHolder.getBean(LedPlayerEntityService.class) .list(Wrappers.lambdaQuery(LedPlayerEntity.class).in(LedPlayerEntity::getId, nova.stream().map(NovaPushResultVO::getPlayerId).toArray())); List<String> listCode = new ArrayList<>(); for (LedPlayerEntity temp : list) { listCode.add(temp.getSn()); } String content = "{èç®IDï¼" + planId + "ï¼ èç®åç§°ï¼" + byId.getName() + "}," + " æ¨éç»æï¼" + result + " }"; StoreOperationRecordsUtils.storeOperationData(listCode, null, "è¯ºç¦æ¨éææ¾è®¡å", content); /** * è¯ºç¦æ¨éèç®æ¥å¿è®°å½ç»æ */ return result; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -14,7 +14,6 @@ import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.common.util.SpringContextHolder; import com.sandu.ximon.admin.dto.DeviceStatus; import com.sandu.ximon.admin.dto.WaterQualityDataDto; import com.sandu.ximon.admin.manager.iot.frame.A1Frame; import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder; import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame; @@ -25,14 +24,18 @@ import com.sandu.ximon.admin.manager.iot.frame.inner.response.A1DeviceMacRespInnerFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.response.A1TernaryCodeRespInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.*; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A1OrderEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A2OrderEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum; import com.sandu.ximon.admin.manager.iot.rrpc.enums.DeviceStateEnum; import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; import com.sandu.ximon.admin.param.*; import com.sandu.ximon.admin.param.PoleBindingParam; import com.sandu.ximon.admin.param.PoleParam; import com.sandu.ximon.admin.param.PoleStatesParam; import com.sandu.ximon.admin.redis.LightKey; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.LightemitUtils; import com.sandu.ximon.admin.utils.ListPagingUtils; import com.sandu.ximon.admin.utils.RedisUtils; import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; import com.sandu.ximon.admin.utils.response.VnnoxResult; import com.sandu.ximon.admin.vo.PoleBindVO; @@ -71,6 +74,7 @@ BeanUtils.copyProperties(param, pole); pole.setPoleCode(generatePoleCode()); pole.setDeviceType(-1); pole.setCentre(1); boolean save = save(pole); /** @@ -99,6 +103,9 @@ Pole update = new Pole(); BeanUtils.copyProperties(param, update); update.setId(poleId); if (param.getIsCenter() != null) { update.setCentre(param.getIsCenter()); } /** * ä¿®æ¹ç¯ææ¥å¿è®°å½å¼å§ */ @@ -257,12 +264,19 @@ List<Pole> poleList; if (SecurityUtils.getClientId() == null) { poleList = poleMapper.queryPoleOnLineStatesList(null, param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword(), orderBy); param.getBingStates(), param.getGroupid(), param.getKeyword(), param.getCenter(), orderBy); } else { poleList = poleMapper.queryPoleOnLineStatesList(SecurityUtils.getUserId(), param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword(), orderBy); param.getIsTrue(), param.getBingStates(), param.getGroupid(), param.getKeyword(), param.getCenter(), orderBy); } poleList.forEach( centre -> { if (centre.getCentre() == 0) { centre.setCenter(true); } } ); List<Pole> PoleResult = isOnLine(poleList, param); setCount(PoleResult); ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
@@ -2,11 +2,8 @@ import com.alibaba.fastjson.JSON; import com.sandu.ximon.admin.config.VnnoxUrl; import com.sandu.ximon.admin.dto.nova.AirDataProgram; import com.sandu.ximon.admin.dto.nova.ProgramPush; import com.sandu.ximon.admin.dto.nova.ProgramSchedule; import com.sandu.ximon.admin.dto.nova.*; import com.sandu.ximon.admin.utils.request.CommonHeader; import com.sandu.ximon.admin.dto.nova.PlayerProgram; import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -92,4 +89,22 @@ } /** * å¤©æ° * @param program * @return */ public VnnoxResultResponse pushWeather(WeatherProgram program) { String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.WEATHER), program.toJson(), new CommonHeader(CommonHeader.JSON, true) ); System.out.println(program.toJson()); LogUtils.error("天æ°èç®ææ¾response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); } }