|
@@ -25,6 +25,7 @@ import org.dromara.hotel.api.service.RemoteLockPowerService;
|
|
|
import org.dromara.hotel.api.service.RemoteOpenDoorService;
|
|
import org.dromara.hotel.api.service.RemoteOpenDoorService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -168,14 +169,19 @@ public class LockBusiness {
|
|
|
public Integer queryOpenDoorRecord(Integer pageNo) {
|
|
public Integer queryOpenDoorRecord(Integer pageNo) {
|
|
|
AtomicReference<Integer> openDoorRecord = new AtomicReference<>(0);
|
|
AtomicReference<Integer> openDoorRecord = new AtomicReference<>(0);
|
|
|
List<PtRoomVo> roomVos = roomService.queryHotelRoomList();
|
|
List<PtRoomVo> roomVos = roomService.queryHotelRoomList();
|
|
|
|
|
+ List<RemoteDoorOpenBo> list = new ArrayList<>();
|
|
|
if (CollectionUtil.isNotEmpty(roomVos)) {
|
|
if (CollectionUtil.isNotEmpty(roomVos)) {
|
|
|
roomVos.parallelStream().forEach(p -> {
|
|
roomVos.parallelStream().forEach(p -> {
|
|
|
String lockId = p.getLockId();
|
|
String lockId = p.getLockId();
|
|
|
// 定时任务只查询最近1天的数据
|
|
// 定时任务只查询最近1天的数据
|
|
|
- openDoorRecord.updateAndGet(v -> v + this.queryOpenDoorRecord(lockId, p.getRoomCode(), p.getRoomName(),pageNo,true));
|
|
|
|
|
|
|
+ List<RemoteDoorOpenBo> bos = this.queryOpenDoorRecordForSchedule(lockId, p.getRoomCode(), p.getRoomName(), pageNo);
|
|
|
|
|
+ list.addAll(bos);
|
|
|
});
|
|
});
|
|
|
|
|
+ if(CollectionUtil.isNotEmpty(list)){
|
|
|
|
|
+ remoteOpenDoorService.insertBatchByBo(list);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- return openDoorRecord.get();
|
|
|
|
|
|
|
+ return list.size();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public Integer queryOpenDoorRecordByRoomCode(String RoomCode) {
|
|
public Integer queryOpenDoorRecordByRoomCode(String RoomCode) {
|
|
@@ -190,7 +196,7 @@ public class LockBusiness {
|
|
|
public Integer queryOpenDoorRecordByRoomCode(String RoomCode,int pageNo) {
|
|
public Integer queryOpenDoorRecordByRoomCode(String RoomCode,int pageNo) {
|
|
|
PtRoomVo vo = roomService.selectHotelRoom(RoomCode);
|
|
PtRoomVo vo = roomService.selectHotelRoom(RoomCode);
|
|
|
if (ObjectUtil.isNotEmpty(vo)) {
|
|
if (ObjectUtil.isNotEmpty(vo)) {
|
|
|
- return queryOpenDoorRecord(vo.getLockId(), vo.getRoomCode(), vo.getRoomName(),pageNo,false);
|
|
|
|
|
|
|
+ return queryOpenDoorRecord(vo.getLockId(), vo.getRoomCode(), vo.getRoomName(),pageNo);
|
|
|
} else {
|
|
} else {
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -216,7 +222,7 @@ public class LockBusiness {
|
|
|
if (ObjectUtil.equals(flag, "0")) {
|
|
if (ObjectUtil.equals(flag, "0")) {
|
|
|
int totalPage = JSONUtil.parseObj(result).getInt("totalPage");
|
|
int totalPage = JSONUtil.parseObj(result).getInt("totalPage");
|
|
|
for (int i = 0; i < totalPage; i++) {
|
|
for (int i = 0; i < totalPage; i++) {
|
|
|
- syncCount += queryOpenDoorRecord(lockId, roomCode, roomName, i + 1, false);
|
|
|
|
|
|
|
+ syncCount += queryOpenDoorRecord(lockId, roomCode, roomName, i + 1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return syncCount;
|
|
return syncCount;
|
|
@@ -229,42 +235,16 @@ public class LockBusiness {
|
|
|
* @param roomCode
|
|
* @param roomCode
|
|
|
* @param roomName
|
|
* @param roomName
|
|
|
* @param pageNo 页码
|
|
* @param pageNo 页码
|
|
|
- * @param isSchedule 是否定时任务
|
|
|
|
|
* @return 记录条数
|
|
* @return 记录条数
|
|
|
*/
|
|
*/
|
|
|
- private Integer queryOpenDoorRecord(String lockId, String roomCode, String roomName, int pageNo, boolean isSchedule) {
|
|
|
|
|
- Map<String, Object> formMap = new HashMap<>();
|
|
|
|
|
- formMap.put("KEYLOCKID", lockId);
|
|
|
|
|
- formMap.put("CARDPSWBIT", "1");
|
|
|
|
|
- formMap.put("OPERATETYPE", "2");
|
|
|
|
|
- formMap.put("PAGENO", pageNo);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ private Integer queryOpenDoorRecord(String lockId, String roomCode, String roomName, int pageNo) {
|
|
|
|
|
+ JSONObject resultObj = buildAndSendLockRecordRequest(lockId, pageNo);
|
|
|
|
|
+ String flag = resultObj.getStr("result");
|
|
|
AtomicReference<Integer> syncCount = new AtomicReference<>(0);
|
|
AtomicReference<Integer> syncCount = new AtomicReference<>(0);
|
|
|
- String result = lockUtils.sendPost(formMap, "operateLockRecord");
|
|
|
|
|
- String flag = JSONUtil.parseObj(result).getStr("result");
|
|
|
|
|
if (ObjectUtil.equals(flag, "0")) {
|
|
if (ObjectUtil.equals(flag, "0")) {
|
|
|
- JSONArray pageData = JSONUtil.parseObj(result).getJSONArray("pageData");
|
|
|
|
|
- pageData.parallelStream().map(JSONUtil::parseObj).filter(p -> {
|
|
|
|
|
- if(isSchedule){
|
|
|
|
|
- // 当前时间与开门时间相差大于25小时,则continue
|
|
|
|
|
- DateTime operateTime = DateUtil.parse(p.getStr("operateTime"), DefaultConstants.DATE_TIME_FORMAT);
|
|
|
|
|
- return operateTime != null && DateUtil.between(DateUtil.date(), operateTime, DateUnit.HOUR) <= 25;
|
|
|
|
|
- }
|
|
|
|
|
- return true;
|
|
|
|
|
- }).forEach(p -> {
|
|
|
|
|
-// JSONObject record = JSONUtil.parseObj(p);
|
|
|
|
|
- RemoteDoorOpenBo remoteBo = new RemoteDoorOpenBo();
|
|
|
|
|
- remoteBo.setRoomCode(roomCode);
|
|
|
|
|
- remoteBo.setRoomName(roomName);
|
|
|
|
|
- remoteBo.setOpenDoorMode(p.getStr("openWay"));
|
|
|
|
|
- remoteBo.setOpenTime(DateUtil.parse(p.getStr("operateTime"), DefaultConstants.DATE_TIME_FORMAT));
|
|
|
|
|
- remoteBo.setOpenResult(p.getStr("openResult"));
|
|
|
|
|
- if (ObjectUtil.isNotEmpty(p.get("cardId"))) {
|
|
|
|
|
- remoteBo.setFactoryId(p.getStr("cardId"));
|
|
|
|
|
- } else {
|
|
|
|
|
- remoteBo.setFactoryId("");
|
|
|
|
|
- }
|
|
|
|
|
- remoteBo.setOpenDoorUser(0L);
|
|
|
|
|
|
|
+ JSONArray pageData = resultObj.getJSONArray("pageData");
|
|
|
|
|
+ pageData.parallelStream().map(JSONUtil::parseObj).forEach(p -> {
|
|
|
|
|
+ RemoteDoorOpenBo remoteBo = buildRemoteDoorOpenBo(p, roomCode, roomName);
|
|
|
try {
|
|
try {
|
|
|
int iCount = remoteOpenDoorService.insertOpenDoorByBo(remoteBo);
|
|
int iCount = remoteOpenDoorService.insertOpenDoorByBo(remoteBo);
|
|
|
if (iCount > 0) {
|
|
if (iCount > 0) {
|
|
@@ -278,6 +258,56 @@ public class LockBusiness {
|
|
|
return syncCount.get();
|
|
return syncCount.get();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private List<RemoteDoorOpenBo> queryOpenDoorRecordForSchedule(String lockId, String roomCode, String roomName, int pageNo) {
|
|
|
|
|
+ List<RemoteDoorOpenBo> list = new ArrayList<>();
|
|
|
|
|
+ JSONObject resultObj = buildAndSendLockRecordRequest(lockId, pageNo);
|
|
|
|
|
+ String flag = resultObj.getStr("result");
|
|
|
|
|
+ if (ObjectUtil.equals(flag, "0")) {
|
|
|
|
|
+ JSONArray pageData = resultObj.getJSONArray("pageData");
|
|
|
|
|
+ pageData.parallelStream().map(JSONUtil::parseObj).filter(p -> {
|
|
|
|
|
+ // 当前时间与开门时间相差大于25小时
|
|
|
|
|
+ DateTime operateTime = DateUtil.parse(p.getStr("operateTime"), DefaultConstants.DATE_TIME_FORMAT);
|
|
|
|
|
+ return operateTime != null && DateUtil.between(DateUtil.date(), operateTime, DateUnit.HOUR) <= 24;
|
|
|
|
|
+ }).forEach(p -> {
|
|
|
|
|
+ RemoteDoorOpenBo remoteBo = buildRemoteDoorOpenBo(p, roomCode, roomName);
|
|
|
|
|
+ list.add(remoteBo);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 构建并发送门锁开门记录请求
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param lockId 门锁ID
|
|
|
|
|
+ * @param pageNo 页码
|
|
|
|
|
+ * @return 请求响应数据
|
|
|
|
|
+ */
|
|
|
|
|
+private JSONObject buildAndSendLockRecordRequest(String lockId, int pageNo) {
|
|
|
|
|
+ Map<String, Object> formMap = new HashMap<>();
|
|
|
|
|
+ formMap.put("KEYLOCKID", lockId);
|
|
|
|
|
+ formMap.put("CARDPSWBIT", "1");
|
|
|
|
|
+ formMap.put("OPERATETYPE", "2");
|
|
|
|
|
+ formMap.put("PAGENO", pageNo);
|
|
|
|
|
+
|
|
|
|
|
+ String result = lockUtils.sendPost(formMap, "operateLockRecord");
|
|
|
|
|
+ return JSONUtil.parseObj(result);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+ // 构造 RemoteDoorOpenBo 对象
|
|
|
|
|
+ private RemoteDoorOpenBo buildRemoteDoorOpenBo(JSONObject p, String roomCode, String roomName) {
|
|
|
|
|
+ RemoteDoorOpenBo remoteBo = new RemoteDoorOpenBo();
|
|
|
|
|
+ remoteBo.setRoomCode(roomCode);
|
|
|
|
|
+ remoteBo.setRoomName(roomName);
|
|
|
|
|
+ remoteBo.setOpenDoorMode(p.getStr("openWay"));
|
|
|
|
|
+ remoteBo.setOpenTime(DateUtil.parse(p.getStr("operateTime"), DefaultConstants.DATE_TIME_FORMAT));
|
|
|
|
|
+ remoteBo.setOpenResult(p.getStr("openResult"));
|
|
|
|
|
+ remoteBo.setFactoryId(ObjectUtil.isNotEmpty(p.get("cardId")) ? p.getStr("cardId") : "");
|
|
|
|
|
+ remoteBo.setOpenDoorUser(0L);
|
|
|
|
|
+ return remoteBo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 门锁电量入库
|
|
* 门锁电量入库
|
|
|
*
|
|
*
|