|
@@ -0,0 +1,139 @@
|
|
|
+package com.xy.service;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.xy.collections.list.JArrayList;
|
|
|
+import com.xy.collections.map.JMap;
|
|
|
+import com.xy.dto.DeviceFaultInfoDto;
|
|
|
+import com.xy.dto.be.MercDto;
|
|
|
+import com.xy.entity.DeviceFaultInfo;
|
|
|
+import com.xy.entity.DeviceFaultLog;
|
|
|
+import com.xy.entity.DeviceInfo;
|
|
|
+import com.xy.error.CommRuntimeException;
|
|
|
+import com.xy.mapper.DeviceFaultInfoMapper;
|
|
|
+import com.xy.service.be.MercService;
|
|
|
+import com.xy.utils.Emptys;
|
|
|
+import com.xy.utils.MybatisPlusQuery;
|
|
|
+import com.xy.utils.PageBean;
|
|
|
+import com.xy.utils.R;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static com.xy.utils.Beans.copy;
|
|
|
+import static com.xy.utils.PlusBeans.toIPage;
|
|
|
+import static com.xy.utils.PlusBeans.toPageBean;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 设备故障信息 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author 谭斌
|
|
|
+ * @since 2024-01-08
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Api(tags = "设备故障信息")
|
|
|
+public class DeviceFaultInfoServiceImpl extends ServiceImpl<DeviceFaultInfoMapper, DeviceFaultInfo> implements DeviceFaultInfoService {
|
|
|
+
|
|
|
+ private final DeviceFaultLogServiceImpl deviceFaultLogService;
|
|
|
+ private final MercService mercService;
|
|
|
+ private final DeviceInfoServiceImpl deviceInfoService;
|
|
|
+
|
|
|
+ @PostMapping("obj")
|
|
|
+ @ApiOperation("对象查询")
|
|
|
+ public R<DeviceFaultInfoDto.Vo> obj(@RequestBody DeviceFaultInfoDto.Vo vo) {
|
|
|
+ DeviceFaultInfoDto.SelectList selectList = copy(DeviceFaultInfoDto.SelectList.class, vo);
|
|
|
+ List<DeviceFaultInfoDto.Vo> list = list(selectList).getData();
|
|
|
+ if (Emptys.check(list)) {
|
|
|
+ return R.ok(list.get(0));
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("list")
|
|
|
+ @ApiOperation("集合查询")
|
|
|
+ public R<List<DeviceFaultInfoDto.Vo>> list(@RequestBody DeviceFaultInfoDto.SelectList selectList) {
|
|
|
+ LambdaQueryWrapper<DeviceFaultInfo> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, DeviceFaultInfo.class).build();
|
|
|
+ List<DeviceFaultInfo> list = list(lambdaQueryWrapper);
|
|
|
+ return R.ok(copy(DeviceFaultInfoDto.Vo.class, list));
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("page")
|
|
|
+ @ApiOperation("分页查询")
|
|
|
+ public R<PageBean<DeviceFaultInfoDto.Vo>> page(@RequestBody DeviceFaultInfoDto.Page page) {
|
|
|
+ PageBean pageBean = page.getPage();
|
|
|
+ LocalDateTime beginTime = page.getBeginCreateTime();
|
|
|
+ LocalDateTime endTime = page.getEndCreateTime();
|
|
|
+ LambdaQueryWrapper<DeviceFaultInfo> lambdaQueryWrapper = new MybatisPlusQuery()
|
|
|
+ .eqWrapper(page, DeviceFaultInfo.class).build()
|
|
|
+ .ge(beginTime != null, DeviceFaultInfo::getCreateTime, beginTime)
|
|
|
+ .le(endTime != null, DeviceFaultInfo::getCreateTime, endTime);
|
|
|
+ IPage<DeviceFaultInfo> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
|
|
|
+ PageBean<DeviceFaultInfoDto.Vo> data = toPageBean(DeviceFaultInfoDto.Vo.class, iPage);
|
|
|
+ List<DeviceFaultInfoDto.Vo> records = data.getRecords();
|
|
|
+ if (CollUtil.isNotEmpty(records)) {
|
|
|
+ List<Long> mercIds = records.stream().map(DeviceFaultInfoDto.Vo::getMercId).distinct().collect(Collectors.toList());
|
|
|
+ List<MercDto.Vo> mercs = mercService.list(new MercDto.SelectList().setMercIds(mercIds)).getData();
|
|
|
+ JMap<Long, MercDto.Vo> longVoJMap = new JArrayList<>(mercs).toMap(MercDto.Vo::getId).cover();
|
|
|
+ records.forEach(r -> {
|
|
|
+ Long mercId = r.getMercId();
|
|
|
+ if (longVoJMap.get(mercId) != null) {
|
|
|
+ r.setMercName(longVoJMap.get(mercId).getName());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ data.setRecords(records);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("save")
|
|
|
+ @ApiOperation("添加")
|
|
|
+ public R save(@RequestBody @Validated DeviceFaultInfoDto.Save save) {
|
|
|
+ DeviceFaultInfo saveInfo = copy(DeviceFaultInfo.class, save);
|
|
|
+ save(saveInfo);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("update")
|
|
|
+ @ApiOperation("修改")
|
|
|
+ public R update(@RequestBody @Validated DeviceFaultInfoDto.Update update) {
|
|
|
+ DeviceFaultInfo updateInfo = copy(DeviceFaultInfo.class, update);
|
|
|
+ updateById(updateInfo);
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("resolve")
|
|
|
+ @ApiOperation("标记已解决")
|
|
|
+ public R resolve(@RequestBody @Validated DeviceFaultInfoDto.Update update) {
|
|
|
+ DeviceFaultInfo deviceFaultInfo = this.getById(update.getFaultId());
|
|
|
+ if (deviceFaultInfo == null) {
|
|
|
+ throw new CommRuntimeException("操作对象不存在!");
|
|
|
+ }
|
|
|
+ DeviceFaultInfo updateInfo = copy(DeviceFaultInfo.class, update);
|
|
|
+ updateInfo.setState(true);
|
|
|
+ updateInfo.setFaultLevel(-1);
|
|
|
+ boolean b = updateById(updateInfo);
|
|
|
+ if (b) {
|
|
|
+ //清理日志 故障信息表标记已解决,清除日志表中对应设备事件在标记已解决时间之前所有事件。
|
|
|
+ deviceFaultLogService.remove(Wrappers.<DeviceFaultLog>lambdaUpdate().le(DeviceFaultLog::getEventTime, LocalDateTime.now()));
|
|
|
+ //更新故障等级为正常
|
|
|
+ deviceInfoService.updateById(new DeviceInfo().setDeviceId(deviceFaultInfo.getDeviceId()).setFaultLevel(-1));
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+}
|