From ce0fef1c976ede5d77dfba1c285bbd0436d02d04 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 08 八月 2024 14:00:21 +0800 Subject: [PATCH] 优云录像可用接口调通 --- ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 121 +++++++++++++++++++++++++++++----------- 1 files changed, 88 insertions(+), 33 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index 8485cc6..0491c4f 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java @@ -8,15 +8,18 @@ import com.ycl.exception.ServiceException; import com.ycl.platform.domain.entity.*; import com.ycl.platform.domain.form.*; -import com.ycl.platform.domain.query.DistributeWorkOrderQuery; -import com.ycl.platform.domain.query.WorkOrderQuery; +import com.ycl.platform.domain.query.*; import com.ycl.platform.domain.vo.DistributeWorkOrderVO; import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO; +import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO; +import com.ycl.platform.domain.vo.screen.WorkOrderRegionVO; +import com.ycl.platform.domain.vo.screen.WorkOrderTotalVO; import com.ycl.platform.mapper.*; import com.ycl.platform.service.NotifyService; import com.ycl.platform.service.WorkOrderAuditingRecordService; import com.ycl.platform.service.WorkOrderService; +import com.ycl.platform.service.YwPointService; import com.ycl.system.Result; import com.ycl.system.model.LoginUser; import com.ycl.system.page.PageUtil; @@ -24,24 +27,23 @@ import com.ycl.utils.SecurityUtils; import com.ycl.utils.redis.RedisCache; import com.ycl.utils.uuid.IdUtils; -import constant.PointConfigConstants; -import enumeration.general.*; +import enumeration.general.NotifyTypeEnum; +import enumeration.general.UrgentLevelEnum; +import enumeration.general.WorkOrderDistributeWayEnum; +import enumeration.general.WorkOrderStatusEnum; import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.ArrayUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.TimeUnit; +import java.util.*; import java.util.stream.Collectors; /** @@ -50,24 +52,38 @@ * @author xp * @since 2024-03-05 */ +@Slf4j @Service @RequiredArgsConstructor public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService { private final WorkOrderMapper workOrderMapper; - private final YwUnitMapper ywUnitMapper; - private final YwPeopleMapper ywPeopleMapper; + private final YwPointService ywPointService; private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper; private final WorkOrderAuditingRecordService workOrderAuditingRecordService; private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper; private final NotifyService notifyService; private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper; + private final TMonitorMapper monitorMapper; private final String DISTRIBUTE_LOCK_KEY = "distributeLock"; private final static String IMPORTANT = "important"; @Autowired private RedisCache redisCache; + + @Override + public Boolean innerAdd(List<WorkOrder> workOrderList) { + int total = workOrderList.size(); + workOrderList.stream().filter(item -> { + return StringUtils.hasText(item.getSerialNumber()) && Objects.nonNull(item.getStatus()) && StringUtils.hasText(item.getErrorType()); + }); + // TODO 鑷姩涓嬪彂宸ュ崟 + int real = workOrderList.size(); + boolean result = this.saveBatch(workOrderList); + log.info("浼犲叆宸ュ崟鎬绘暟: {}锛屽疄闄呮坊鍔犲伐鍗曟暟锛歿}", total, real); + return result; + } /** * 娣诲姞 @@ -126,6 +142,10 @@ UrgentLevelEnum.WARNING, workOrder.getWorkOrderNo()); notifyService.save(notify); + // 鍚屾鐐逛綅鐘舵�� + if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) { + ywPointService.updateRecovery(Arrays.asList(workOrder.getSerialNumber()), 0); + } return Result.ok("鎿嶄綔鎴愬姛"); } @@ -269,53 +289,49 @@ } @Override + @Transactional public Result distributeFast(DistributeWorkOrderVO data) { // 鑾峰彇褰撳墠鏃堕棿 LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault()); + data.setEnd(now); switch (data.getFastWay()) { case LAST_HALF_HOUR: data.setStart(now.minusMinutes(30)); - data.setEnd(now); break; case LAST_HOUR: data.setStart(now.minusHours(1)); - data.setEnd(now); break; case LAST_TWO_HOUR: data.setStart(now.minusHours(2)); - data.setEnd(now); break; case LAST_DAY: data.setStart(now.minusDays(1)); - data.setEnd(now); break; } // 鏌ヨ绗﹀悎鏉′欢鐨勫伐鍗� - List<Integer> ids = new LambdaQueryChainWrapper<>(baseMapper) + List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper) + .select(WorkOrder::getSerialNumber, WorkOrder::getSerialNumber) .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) .eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId()) .eq(WorkOrder::getErrorType, data.getErrorType()) .between(WorkOrder::getCreateTime, data.getStart(), data.getEnd()) .orderByDesc(WorkOrder::getCreateTime) .last("limit " + data.getFastNumLimit()) - .list() - .stream() - .map(WorkOrder::getId) - .toList(); + .list(); + List<Integer> ids = list.stream().map(WorkOrder::getId).toList(); + List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList(); - if (ids.isEmpty()) { - return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); - } - if (!getDistributeLock()) { - return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); - } + if (ids.isEmpty()) { return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); } + if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); } try { new LambdaUpdateChainWrapper<>(baseMapper) .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) .in(WorkOrder::getId, ids) .update(); addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE); + // 鍚屾鐐逛綅鐘舵�� + ywPointService.updateRecovery(serialNumberList, 1); return Result.ok("鎴愬姛涓嬪彂" + ids.size() + "鏉″伐鍗�"); } catch (Exception e) { return Result.error("鎿嶄綔澶辫触"); @@ -325,11 +341,10 @@ } @Override + @Transactional public Result selectedIdsDistribute(DistributeWorkOrderQuery query) { WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE; - if (!getDistributeLock()) { - return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); - } + if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); } try { if (query.getIds().isEmpty()) { query.setIds(new LambdaQueryChainWrapper<>(baseMapper) @@ -342,14 +357,15 @@ .collect(Collectors.toList())); distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE; } - if (query.getIds().isEmpty()) { - return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); - } + if (query.getIds().isEmpty()) { return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); } new LambdaUpdateChainWrapper<>(baseMapper) .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) .in(WorkOrder::getId, query.getIds()) .update(); addDistributeRecord(query.getIds(), distributeWayEnum); + // 鍚屾鐐逛綅鐘舵�� + List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getSerialNumber).toList(); + ywPointService.updateRecovery(serialNumberList, 1); return Result.ok("鎴愬姛涓嬪彂" + query.getIds().size() + "鏉″伐鍗�"); } catch (Exception e) { return Result.error("鎿嶄綔澶辫触"); @@ -419,4 +435,43 @@ .collect(Collectors.toList()); return Result.ok().data(vos); } + + @Override + public Result screenWorkOrder(ScreenQuery query) { + ScreenWorkOrderVO screen = baseMapper.screenWorkOrder(query); + return Result.ok().data(screen); + } + + @Override + public Map<String, Object> home(HomeQuery monitorQuery) { + Map<String, Object> dataMap = new HashMap<>(); + Map<String, Object> data1 = new HashMap<>(); + Map<String, Object> data2 = new HashMap<>(); + Map<String, Object> data3 = new HashMap<>(); + List<Map<String, Object>> home = baseMapper.home(monitorQuery); + if (ObjectUtils.isNotEmpty(home)) { + for (Map<String, Object> map : home) { + if (Objects.nonNull(map.get("dateType")) && StringUtils.hasText(map.get("dateType").toString())) { + data1.put(map.get("dateType").toString(), map.get("num1")); + data2.put(map.get("dateType").toString(), map.get("num2")); + data3.put(map.get("dateType").toString(), map.get("num3")); + } + } + dataMap.put("name", home.get(0).get("name")); + } + dataMap.put("complete", data1); + dataMap.put("waiting", data2); + dataMap.put("pending", data3); + return dataMap; + } + + @Override + public WorkOrderTotalVO workOrderTotal(DashboardQuery dashboardQuery) { + return baseMapper.workOrderTotal(dashboardQuery); + } + + @Override + public List<WorkOrderRegionVO> workOrderRegion(DashboardQuery dashboardQuery) { + return baseMapper.workOrderRegion(dashboardQuery); + } } -- Gitblit v1.8.0