From 0f98ec728d0403b1726273d94dc00f06993888b6 Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期四, 16 十二月 2021 18:36:01 +0800
Subject: [PATCH] 灯模块
---
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java | 154 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 149 insertions(+), 5 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
index 6da0e0d..0db1ff1 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java
@@ -1,15 +1,31 @@
package com.sandu.ximon.admin.service;
+import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
+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.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder;
+import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.request.A5LightTimerReqInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.response.A5LightTimerRespInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.WrapResponseCommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
+import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
import com.sandu.ximon.admin.param.LightTaskParam;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.dao.domain.LightTask;
+import com.sandu.ximon.dao.domain.LightTaskPoleRelation;
+import com.sandu.ximon.dao.domain.LightTaskQuartz;
import com.sandu.ximon.dao.mapper.LightTaskMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
/**
* @author chenjiantian
@@ -20,16 +36,17 @@
@AllArgsConstructor
public class LightTaskService extends BaseServiceImpl<LightTaskMapper, LightTask> {
- private final static int ORDER_LENGTH = 6;
private final LightTaskQuartzService lightTaskQuartzService;
+ private final PoleService poleService;
+ private final LightTaskPoleRelationService lightTaskPoleRelationService;
/**
* 鏂板璺伅浠诲姟
*/
@Transactional(rollbackFor = Exception.class)
public boolean addLightTask(LightTaskParam param) {
- if(StrUtil.length(param.getControlOrder()) % ORDER_LENGTH != 0){
+ if (StrUtil.length(param.getControlOrder()) % LightTaskParam.REQUEST_ORDER_LENGTH != 0) {
throw new BusinessException("鐏帶鍛戒护鏍煎紡涓嶆纭�");
}
LightTask lightTask = new LightTask();
@@ -40,10 +57,137 @@
lightTask.setOpenOrder(param.getOpenOrder());
lightTask.setControlOrder(param.getControlOrder());
lightTask.setCreateUser(SecurityUtils.getUsername());
- if(!save(lightTask)) {
+ if (!save(lightTask)) {
throw new BusinessException("淇濆瓨璺伅浠诲姟澶辫触");
}
- boolean result = lightTaskQuartzService.addLightTaskQuartz(lightTask);
- return false;
+ List<LightTaskQuartz> list = lightTaskQuartzService.addLightTaskQuartz(lightTask);
+ if (CollectionUtil.isEmpty(list)) {
+ throw new BusinessException("娣诲姞瀹氭椂浠诲姟澶辫触");
+ }
+ // 娣诲姞缁戝畾鐏潌
+ if (!lightTaskPoleRelationService.updateLightTaskPoleRelation(lightTask.getTaskId(), param.getPoleIdList())) {
+ throw new BusinessException("缁戝畾鐏潌澶辫触");
+ }
+
+ List<Long> poleIdList = param.getPoleIdList();
+ if (CollectionUtil.isNotEmpty(poleIdList)) {
+ List<String> deviceCodeList = poleService.listDeviceCodeByIds(poleIdList);
+ if (CollectionUtil.isEmpty(deviceCodeList)) {
+ throw new BusinessException("鎵句笉鍒扮伅鏉唌ac锛屾棤娉曞彂閫佸畾鏃朵换鍔�");
+ }
+ // 鑾峰彇瀹氭椂鐏帶鍛戒护
+ String framePayload = list.get(0).getFramePayload();
+
+ // rrpc 鍙戠敓瀹氭椂鍛戒护
+ for (String deviceCode : deviceCodeList) {
+ sendTimeRRpc(framePayload, deviceCode);
+ }
+ }
+ return true;
+ }
+
+ /**
+ * 鍙戦�佺伅鎺ц姹�
+ *
+ * @param framePayload 鐏帶鍙傛暟
+ * @param deviceCode 璁惧鍚�
+ * @return 杩斿洖甯�
+ */
+ public A5LightTimerRespInnerFrame sendTimeRRpc(String framePayload, String deviceCode) {
+ IRequestFrame requestFrame = FrameBuilder.builderA5().innerFrame(new A5LightTimerReqInnerFrame(framePayload))
+ .orderType(A5OrderEnum.REQUEST_LIGHT_DATA.getCode()).build();
+ WrapResponseCommonFrame<A5LightTimerRespInnerFrame> responseCommonFrame = MainBoardInvokeSyncService.getInstance()
+ .sendRRPC(deviceCode, requestFrame, A5LightTimerRespInnerFrame.class);
+ System.out.println("鍙戦�佺粨鏋�");
+ A5LightTimerRespInnerFrame responseInnerFrame = responseCommonFrame.getResponseInnerFrame();
+ System.out.println(responseInnerFrame.getResponseStatus());
+ return responseInnerFrame;
+ }
+
+ public List<LightTask> listLightTask(int pageNo, int pageSize, String keyword) {
+ LambdaQueryWrapper<LightTask> wrapper = Wrappers.lambdaQuery(LightTask.class);
+ if (StrUtil.isNotBlank(keyword)) {
+ wrapper.like(LightTask::getTaskName, keyword);
+ }
+ Long clientId = SecurityUtils.getClientId();
+ if (clientId != null) {
+ wrapper.eq(LightTask::getClientId, clientId);
+ }
+
+ PageHelper.startPage(pageNo, pageSize);
+ return list(wrapper);
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ public boolean updateLightTask(Long taskId, LightTaskParam param) {
+ if (StrUtil.length(param.getControlOrder()) % LightTaskParam.REQUEST_ORDER_LENGTH != 0) {
+ throw new BusinessException("鐏帶鍛戒护鏍煎紡涓嶆纭�");
+ }
+ LightTask lightTask = getById(taskId);
+ if (lightTask == null) {
+ throw new BusinessException("鎵句笉鍒拌矾鐏换鍔�");
+ }
+
+ lightTask.setTaskName(param.getTaskName());
+ lightTask.setWeek(param.getWeek());
+ lightTask.setControlOrder(param.getControlOrder());
+ lightTask.setOpenOrder(param.getOpenOrder());
+ lightTask.setCloseOrder(param.getCloseOrder());
+ lightTask.setUpdateTime(LocalDateTime.now());
+
+ if (!updateById(lightTask)) {
+ throw new BusinessException("缂栬緫浠诲姟澶辫触");
+ }
+
+ List<LightTaskQuartz> list = lightTaskQuartzService.updateLightTaskQuartz(lightTask);
+ if (CollectionUtil.isEmpty(list)) {
+ throw new BusinessException("缂栬緫瀹氭椂浠诲姟澶辫触");
+ }
+
+ // 娣诲姞缁戝畾鐏潌
+ if (!lightTaskPoleRelationService.updateLightTaskPoleRelation(lightTask.getTaskId(), param.getPoleIdList())) {
+ throw new BusinessException("缁戝畾鐏潌澶辫触");
+ }
+ List<Long> poleIdList = param.getPoleIdList();
+ if (CollectionUtil.isNotEmpty(poleIdList)) {
+ List<String> deviceCodeList = poleService.listDeviceCodeByIds(poleIdList);
+ if (CollectionUtil.isEmpty(deviceCodeList)) {
+ throw new BusinessException("鎵句笉鍒扮伅鏉唌ac锛屾棤娉曞彂閫佸畾鏃朵换鍔�");
+ }
+ // 鑾峰彇瀹氭椂鐏帶鍛戒护
+ String framePayload = list.get(0).getFramePayload();
+
+ // rrpc 鍙戠敓瀹氭椂鍛戒护
+ for (String deviceCode : deviceCodeList) {
+ sendTimeRRpc(framePayload, deviceCode);
+ }
+ }
+
+ return true;
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ public boolean delLightTask(List<Long> taskIdList) {
+ List<LightTask> lightTaskList = listByIds(taskIdList);
+ if (CollectionUtil.isEmpty(lightTaskList)) {
+ throw new BusinessException("鎵句笉鍒颁换鍔′俊鎭�");
+ }
+
+ // 鍒犻櫎浠诲姟
+ if (!removeByIds(taskIdList)) {
+ throw new BusinessException("鍒犻櫎浠诲姟澶辫触");
+ }
+
+ // 鍒犻櫎缁戝畾鐏潌
+ if (!lightTaskPoleRelationService.remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getTaskId, taskIdList))) {
+ throw new BusinessException("鍒犻櫎缁戝畾鐏潌澶辫触");
+ }
+
+ // 鍒犻櫎瀹氭椂鍣�
+ if (!lightTaskQuartzService.removeLightTaskQuartz(taskIdList)) {
+ throw new BusinessException("鍒犻櫎瀹氭椂鍣ㄥけ璐�");
+ }
+
+ return true;
}
}
--
Gitblit v1.9.3