From b9e1aef87da450d99587b56dbb31323fc6e0f3ea Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期五, 12 八月 2022 11:47:15 +0800
Subject: [PATCH] changes
---
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightTaskService.java | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 205 insertions(+), 31 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 b1906bb..cc93454 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
@@ -69,6 +69,7 @@
/**
* 鏂板璺伅浠诲姟
+ *
* @param param
* @return
*/
@@ -99,6 +100,7 @@
newLightTask.setLightAdress(param.getLightAddress());
newLightTask.setUpdateTime(LocalDateTime.now());
newLightTask.setFramePayload(buildControlFramePayload(param.getOpenOrder(), param.getCloseOrder(), param.getControlOrder(), week));
+
if (!save(newLightTask)) {
throw new BusinessException("淇濆瓨璺伅浠诲姟澶辫触");
}
@@ -116,7 +118,21 @@
//浼犲叆鐨勭伅鏉唅d闆嗗悎
List<Long> poleIdList = param.getPoleIdList();
//璁板綍杩欎簺鐏潌鍘熷厛鐨勪换鍔�
- List<LightTaskPoleRelation> oldLightTaskStatusAndPoles = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, poleIdList));
+ List<LightTaskPoleRelation> oldLightTaskStatusAndPoles;
+ if ("FFFF".equals(param.getLightAddress())) {
+ oldLightTaskStatusAndPoles = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, poleIdList).eq(LightTaskPoleRelation::getLightAddress, "0001").or(relation -> {
+ relation.eq(LightTaskPoleRelation::getLightAddress, "0002");
+ }));
+ } else {
+ oldLightTaskStatusAndPoles = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, poleIdList).eq(LightTaskPoleRelation::getLightAddress, param.getLightAddress()));
+ }
+
+ /**
+ * 閲嶅浠诲姟鐨勭伅澶�
+ */
+ if (!oldLightTaskStatusAndPoles.isEmpty()) {
+ throw new BusinessException("浠诲姟涓瓨鍦ㄥ凡鏈変换鍔$殑鍗曠伅," + "浠诲姟id涓簕" + oldLightTaskStatusAndPoles.stream().map(LightTaskPoleRelation::getTaskId).collect(Collectors.toList()) + "}, " + "鐏潌id涓簕" + oldLightTaskStatusAndPoles.stream().map(LightTaskPoleRelation::getPoleId).collect(Collectors.toList()) + "}");
+ }
//璁板綍杩欎簺鐏潌鍘熷厛鐨刬d
List<Long> oldList = oldLightTaskStatusAndPoles.stream().map(LightTaskPoleRelation::getPoleId).collect(Collectors.toList());
@@ -126,6 +142,19 @@
List<Long> oldPoleIdList = param.getPoleIdList().stream().filter(poleId -> oldList.contains(poleId)).collect(Collectors.toList());
//鏂板涓嶅瓨鍦ㄥ叧鐏搷浣�
+// //鍒ゆ柇鏃х伅鏉嗘槸鍚︽湁鏂扮伅澶村湴鍧�
+// List<Long> oldPoleIdListHasNewLightAddress = oldPoleIdList.stream().filter(poleId -> {
+// List<LightTaskPoleRelation> lightTaskPoleRelations = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class)
+// .eq(LightTaskPoleRelation::getPoleId, poleId).eq(LightTaskPoleRelation::getLightAddress, param.getLightAddress()));
+// if (CollectionUtil.isNotEmpty(lightTaskPoleRelations)) {
+// return !lightTaskPoleRelations.get(0).getLightAddress().equals(param.getLightAddress());
+// }
+// return false;
+// }).collect(Collectors.toList());
+
+// if (!oldPoleIdListHasNewLightAddress.isEmpty()) {
+// throw new BusinessException("浠诲姟涓瓨鍦ㄥ凡鏈変换鍔$殑鍗曠伅,鐏潌id涓簕" + oldPoleIdListHasNewLightAddress + "}");
+// }
List<LightTaskPoleRelation> newPoleMap = new ArrayList<>();
if (!newPoleIdList.isEmpty()) {
@@ -144,11 +173,9 @@
}
//瑕嗙洊鎴愬姛 娣诲姞鏂扮殑浠诲姟鍏崇郴
if (!oldPoleSuccess.isEmpty()) {
- oldPoleSuccess.forEach(
- success -> {
- success.setTaskId(newLightTask.getTaskId());
- }
- );
+ oldPoleSuccess.forEach(success -> {
+ success.setTaskId(newLightTask.getTaskId());
+ });
}
//鍒ゆ柇鏃х伅鏉嗚鐩栨搷浣滄槸鍚﹀瓨鍦ㄥけ璐� 濡傛灉瀛樺湪澶辫触锛屽垯淇濆瓨鏃х殑浠诲姟鍏崇郴
@@ -157,8 +184,7 @@
//鑾峰彇澶辫触鐨勭伅鏉唅d
List<Long> failPoleIdList = oldPoleFail.stream().map(LightTaskPoleRelation::getPoleId).collect(Collectors.toList());
//浠巓ldLightTaskStatusAndPoles鑾峰彇澶辫触鐨勭伅鏉嗗師鍏堢殑浠诲姟缁戝畾鍏崇郴.
- failOldLightTaskStatusAndPoles = oldLightTaskStatusAndPoles.stream()
- .filter(lightTaskPoleRelation -> failPoleIdList.contains(lightTaskPoleRelation.getPoleId())).collect(Collectors.toList());
+ failOldLightTaskStatusAndPoles = oldLightTaskStatusAndPoles.stream().filter(lightTaskPoleRelation -> failPoleIdList.contains(lightTaskPoleRelation.getPoleId())).collect(Collectors.toList());
}
/**
@@ -182,12 +208,17 @@
oldSuccessPoleId.add(bean.getPoleId());
}
if (!oldSuccessPoleId.isEmpty()) {
- lightTaskPoleRelationService.remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, oldSuccessPoleId));
+ lightTaskPoleRelationService.remove(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, oldSuccessPoleId).eq(LightTaskPoleRelation::getTaskId, oldLightTaskStatusAndPoles.get(0).getTaskId()));
}
//淇濆瓨鏂扮伅鏉嗕互鍙婃棫鐏潌瑕嗙洊鎴愬姛鐨勪换鍔″叧绯�
if (!all.isEmpty()) {
+// all.forEach(
+// bean->{
+// lightTaskPoleRelationService.save(bean);
+// }
+// );
lightTaskPoleRelationService.saveBatch(all);
}
@@ -251,6 +282,40 @@
List<Long> closeLight = oldList.stream().filter(poleId -> !param.getPoleIdList().contains(poleId)).collect(Collectors.toList());
+ //鍙栧嚭瑕嗙洊鎿嶄綔鐨勫叧绯讳俊鎭�
+ //璁板綍杩欎簺鐏潌鍘熷厛鐨勪换鍔�
+ List<LightTaskPoleRelation> oldRelation;
+ if ("FFFF".equals(param.getLightAddress())) {
+ // 鐏潌涓瓨鍦ㄥ叾浠栦换鍔$殑鐏ご
+ oldRelation = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, oldPoleIdList).eq(LightTaskPoleRelation::getLightAddress, "0001").or(relation -> {
+ relation.eq(LightTaskPoleRelation::getLightAddress, "0002");
+ }).ne(LightTaskPoleRelation::getTaskId, taskId));
+ } else {
+ oldRelation = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).in(LightTaskPoleRelation::getPoleId, oldPoleIdList).eq(LightTaskPoleRelation::getLightAddress, param.getLightAddress()));
+ }
+
+ /**
+ * 閲嶅浠诲姟鐨勭伅澶�
+ */
+ if (!oldLightTaskStatusAndPoles.isEmpty()) {
+ throw new BusinessException("浠诲姟涓瓨鍦ㄥ凡鏈変换鍔$殑鍗曠伅," + "浠诲姟id涓簕" + oldRelation.stream().map(LightTaskPoleRelation::getTaskId).collect(Collectors.toList()) + "}, " + "鐏潌id涓簕" + oldRelation.stream().map(LightTaskPoleRelation::getPoleId).collect(Collectors.toList()) + "}");
+ }
+
+
+ //鍒ゆ柇鏃х伅鏉嗘槸鍚︽湁鏂扮伅澶村湴鍧�
+ List<Long> oldPoleIdListHasNewLightAddress = oldPoleIdList.stream().filter(poleId -> {
+ List<LightTaskPoleRelation> lightTaskPoleRelations = lightTaskPoleRelationService.list(Wrappers.lambdaQuery(LightTaskPoleRelation.class).eq(LightTaskPoleRelation::getPoleId, poleId).eq(LightTaskPoleRelation::getLightAddress, param.getLightAddress()));
+ if (CollectionUtil.isNotEmpty(lightTaskPoleRelations)) {
+ return !lightTaskPoleRelations.get(0).getLightAddress().equals(param.getLightAddress());
+ }
+ return false;
+ }).collect(Collectors.toList());
+
+ if (!oldPoleIdListHasNewLightAddress.isEmpty()) {
+ throw new BusinessException("浠诲姟涓瓨鍦ㄥ凡鏈変换鍔$殑鍗曠伅,鐏潌id涓簕" + oldPoleIdListHasNewLightAddress + "}");
+ }
+
+
List<LightTaskPoleRelation> newPoleAll = new ArrayList<>();
List<LightTaskPoleRelation> newPoleSuccess = new ArrayList<>();
List<LightTaskPoleRelation> newPoleFail = new ArrayList<>();
@@ -276,7 +341,7 @@
List<LightTaskPoleRelation> closePoleFail = new ArrayList<>();
List<LightTaskPoleRelation> closePoleSuccess = new ArrayList<>();
if (CollectionUtil.isNotEmpty(closeLight)) {
- //鎵ц鍏崇伅鍐呭抚
+ //鍏崇伅鍐呭抚
String framePayloadClose = "7f0000007f173b00";
//瑕嗙洊鎿嶄綔鐏潌
Map<String, List<LightTaskPoleRelation>> closePoleMap = sendControllerFrame(closeLight, framePayloadClose, param.getLightAddress());
@@ -372,7 +437,7 @@
return "缂栬緫鎴愬姛";
} else if (newPoleSuccess.isEmpty() && oldPoleSuccess.isEmpty() && closePoleSuccess.isEmpty()) {
throw new BusinessException("缂栬緫澶辫触,璇锋鏌ョ紪杈戠殑璁惧鏄惁鍦ㄧ嚎!");
- } else if (!closePoleFail.isEmpty() || !oldPoleFail.isEmpty()) {
+ } else if (!closePoleFail.isEmpty() /*|| !oldPoleFail.isEmpty()*/) {
return "鍘熶换鍔′腑瀛樺湪涓嬪彂寮傚父锛屽師浠诲姟淇濈暀锛屽垱寤烘柊浠诲姟杩涜淇濆瓨";
} else if (!newPoleFail.isEmpty()) {
return "鏂颁换鍔′腑瀛樺湪涓嬪彂寮傚父锛屽拷鐣ュ紓甯告搷浣滅殑鐏潌";
@@ -437,6 +502,11 @@
LightTaskDto lightTaskDto = new LightTaskDto();
BeanUtils.copyProperties(lightTask, lightTaskDto);
lightTaskDto.setWeekList(TaskOrderUtil.parseLightWeek2List(lightTask.getWeek()));
+
+
+ //鍒ゆ柇鐏ご鏄惁瀛樺湪浠诲姟
+ List<LightTaskPoleRelation> lightTaskPoleRelationList = lightTaskPoleRelationService.list(Wrappers.<LightTaskPoleRelation>lambdaQuery().eq(LightTaskPoleRelation::getTaskId, lightTask.getTaskId()));
+
//涓嬪彂鎴愬姛鐨勭伅鏉嗘暟閲�
Integer successCount = baseMapper.successCount(lightTaskDto.getTaskId());
///浠诲姟涓�荤殑鐏潌鏁伴噺
@@ -514,22 +584,71 @@
}
for (Pole pole : poles) {
+ if (pole.getDeviceCode() == null || pole.getDeviceCode().equals("")) {
+ removeById(lightTask.getTaskId());
+ throw new BusinessException("鐏潌涓嶅瓨鍦╩ac,涓嶈兘涓嬪彂浠诲姟 璇锋鏌ョ伅鏉嗘槸鍚﹀瓨鍦ㄥ崟鐏�");
+ }
LightTaskPoleRelation lightTaskPoleRelation = new LightTaskPoleRelation();
lightTaskPoleRelation.setPoleId(pole.getId());
lightTaskPoleRelation.setTaskId(lightTask.getTaskId());
// rrpc 鍙戠敓瀹氭椂鍛戒护
- try {
- A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame = sendTimeRRpc(framePayload, pole.getDeviceCode(), lightAddress);
- if (a5LightTimerRespInnerFrame == null) {
- lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
- } else {
- lightTaskPoleRelation.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame.getResponseStatus()));
+ if ("FFFF".equals(lightAddress)) {
+ LightTaskPoleRelation lightTaskPoleRelation01 = new LightTaskPoleRelation();
+ lightTaskPoleRelation01.setPoleId(pole.getId());
+ lightTaskPoleRelation01.setTaskId(lightTask.getTaskId());
+ lightTaskPoleRelation01.setLightAddress("0001");
+
+ LightTaskPoleRelation lightTaskPoleRelation02 = new LightTaskPoleRelation();
+ lightTaskPoleRelation02.setPoleId(pole.getId());
+ lightTaskPoleRelation02.setTaskId(lightTask.getTaskId());
+ lightTaskPoleRelation02.setLightAddress("0002");
+
+ // 鐏ご1 rrpc 鍙戠敓瀹氭椂鍛戒护
+ try {
+ A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame01 = sendTimeRRpc(framePayload, pole.getDeviceCode(), "0001");
+ //鐏ご1
+ if (a5LightTimerRespInnerFrame01 == null) {
+ lightTaskPoleRelation01.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ } else {
+ lightTaskPoleRelation01.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame01.getResponseStatus()));
+ }
+
+ } catch (BusinessException e) {
+ lightTaskPoleRelation01.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
}
- } catch (BusinessException e) {
- lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+
+ // 鐏ご2 rrpc 鍙戠敓瀹氭椂鍛戒护
+ try {
+ A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame02 = sendTimeRRpc(framePayload, pole.getDeviceCode(), "0002");
+ //鐏ご2
+ if (a5LightTimerRespInnerFrame02 == null) {
+ lightTaskPoleRelation02.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ } else {
+ lightTaskPoleRelation02.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame02.getResponseStatus()));
+ }
+
+ } catch (BusinessException e) {
+ lightTaskPoleRelation02.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ }
+
+ lightTaskPoleRelationList.add(lightTaskPoleRelation01);
+ lightTaskPoleRelationList.add(lightTaskPoleRelation02);
+ } else {
+ lightTaskPoleRelation.setLightAddress(lightAddress);
+ // rrpc 鍙戠敓瀹氭椂鍛戒护
+ try {
+ A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame = sendTimeRRpc(framePayload, pole.getDeviceCode(), lightAddress);
+ if (a5LightTimerRespInnerFrame == null) {
+ lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ } else {
+ lightTaskPoleRelation.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame.getResponseStatus()));
+ }
+ } catch (BusinessException e) {
+ lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ }
+ lightTaskPoleRelationList.add(lightTaskPoleRelation);
}
- lightTaskPoleRelationList.add(lightTaskPoleRelation);
}
return lightTaskPoleRelationList;
}
@@ -557,25 +676,80 @@
}
for (Pole pole : poles) {
+ if (pole.getDeviceCode() == null || pole.getDeviceCode().equals("")) {
+ throw new BusinessException("鐏潌涓嶅瓨鍦╩ac,涓嶈兘涓嬪彂浠诲姟 璇锋鏌ョ伅鏉嗘槸鍚﹀瓨鍦ㄥ崟鐏�");
+ }
LightTaskPoleRelation lightTaskPoleRelation = new LightTaskPoleRelation();
lightTaskPoleRelation.setPoleId(pole.getId());
-// lightTaskPoleRelation.setTaskId(lightTask.getTaskId());
+ //鍏崇郴琛ㄦ彃鍏ョ伅澶村湴鍧�
+ lightTaskPoleRelation.setLightAddress(lightAddress);
+
+
// rrpc 鍙戠敓瀹氭椂鍛戒护
- try {
- A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame = sendTimeRRpc(framePayload, pole.getDeviceCode(), lightAddress);
- if (a5LightTimerRespInnerFrame == null) {
+ if ("FFFF".equals(lightAddress)) {
+ LightTaskPoleRelation lightTaskPoleRelation01 = new LightTaskPoleRelation();
+ lightTaskPoleRelation01.setPoleId(pole.getId());
+ lightTaskPoleRelation01.setLightAddress("0001");
+
+ LightTaskPoleRelation lightTaskPoleRelation02 = new LightTaskPoleRelation();
+ lightTaskPoleRelation02.setPoleId(pole.getId());
+ lightTaskPoleRelation02.setLightAddress("0002");
+
+ // 鐏ご1 rrpc 鍙戠敓瀹氭椂鍛戒护
+ try {
+ A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame01 = sendTimeRRpc(framePayload, pole.getDeviceCode(), "0001");
+ //鐏ご1
+ if (a5LightTimerRespInnerFrame01 == null) {
+ lightTaskPoleRelation01.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ fail.add(lightTaskPoleRelation01);
+ } else {
+ lightTaskPoleRelation01.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame01.getResponseStatus()));
+ success.add(lightTaskPoleRelation01);
+ }
+
+ } catch (BusinessException e) {
+ lightTaskPoleRelation01.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ fail.add(lightTaskPoleRelation01);
+ }
+
+ // 鐏ご2 rrpc 鍙戠敓瀹氭椂鍛戒护
+ try {
+ A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame02 = sendTimeRRpc(framePayload, pole.getDeviceCode(), "0002");
+ //鐏ご2
+ if (a5LightTimerRespInnerFrame02 == null) {
+ lightTaskPoleRelation02.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ fail.add(lightTaskPoleRelation02);
+ } else {
+ lightTaskPoleRelation02.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame02.getResponseStatus()));
+ success.add(lightTaskPoleRelation02);
+ }
+
+ } catch (BusinessException e) {
+ lightTaskPoleRelation02.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ fail.add(lightTaskPoleRelation02);
+ }
+
+ lightTaskPoleRelationList.add(lightTaskPoleRelation01);
+ lightTaskPoleRelationList.add(lightTaskPoleRelation02);
+ } else {
+ lightTaskPoleRelation.setLightAddress(lightAddress);
+ // rrpc 鍙戠敓瀹氭椂鍛戒护
+ try {
+ A5LightTimerRespInnerFrame a5LightTimerRespInnerFrame = sendTimeRRpc(framePayload, pole.getDeviceCode(), lightAddress);
+ if (a5LightTimerRespInnerFrame == null) {
+ lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
+ fail.add(lightTaskPoleRelation);
+ } else {
+ lightTaskPoleRelation.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame.getResponseStatus()));
+ success.add(lightTaskPoleRelation);
+ }
+ } catch (BusinessException e) {
lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
fail.add(lightTaskPoleRelation);
- } else {
- lightTaskPoleRelation.setIssueStatus(HexUtil.hexToInt(a5LightTimerRespInnerFrame.getResponseStatus()));
- success.add(lightTaskPoleRelation);
}
- } catch (BusinessException e) {
- lightTaskPoleRelation.setIssueStatus(DeviceRespStatusEnums.OTHER_ERROR.getCode());
- fail.add(lightTaskPoleRelation);
+ lightTaskPoleRelationList.add(lightTaskPoleRelation);
}
- lightTaskPoleRelationList.add(lightTaskPoleRelation);
}
map.put("success", success);
map.put("fail", fail);
--
Gitblit v1.9.3