package com.tievd.jyz.controller;
|
|
import cn.hutool.core.util.NumberUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.tievd.cube.commons.annotations.AutoLog;
|
import com.tievd.cube.commons.annotations.DictApi;
|
import com.tievd.cube.commons.base.CubeController;
|
import com.tievd.cube.commons.base.Result;
|
import com.tievd.cube.commons.constant.CommonConst;
|
import com.tievd.cube.commons.mybatisplus.QueryGenerator;
|
import com.tievd.cube.commons.utils.SystemContextUtil;
|
import com.tievd.cube.modules.system.model.LoginUser;
|
import com.tievd.cube.modules.system.model.SysDepartTreeModel;
|
import com.tievd.cube.modules.system.service.ISysDepartService;
|
import com.tievd.jyz.cache.DeviceCache;
|
import com.tievd.jyz.constants.SystemConstant;
|
import com.tievd.jyz.dto.DeviceDTO;
|
import com.tievd.jyz.entity.Device;
|
import com.tievd.jyz.handler.BaseDataSyncHandler;
|
import com.tievd.jyz.handler.DeviceStatusHandler;
|
import com.tievd.jyz.service.IDeviceService;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* Device
|
*
|
* @author cube
|
* @version V2.0.0
|
* @since 2023-02-27
|
*/
|
@Slf4j
|
@DictApi
|
@RestController
|
@RequestMapping("/jyz/device")
|
public class DeviceController extends CubeController<Device, IDeviceService> {
|
|
@Autowired
|
private IDeviceService deviceService;
|
|
@Autowired
|
private DeviceCache deviceCache;
|
|
@Autowired
|
private ISysDepartService sysDepartService;
|
@Autowired
|
private BaseDataSyncHandler baseDataSyncHandler;
|
|
/**
|
* 分页列表查询
|
*/
|
@GetMapping("/list")
|
public Result<?> queryPageList(Device device,
|
@RequestParam(defaultValue = "1") Integer pageNo,
|
@RequestParam(defaultValue = "10") Integer pageSize,
|
HttpServletRequest req) {
|
QueryWrapper<Device> queryWrapper = QueryGenerator.initQueryWrapper(device, req.getParameterMap());
|
Page<Device> page = new Page<>(pageNo, pageSize);
|
IPage<Device> pageList = deviceService.page(page, queryWrapper);
|
return Result.ok(pageList);
|
}
|
|
@GetMapping("/tables")
|
public Result<?> tables(Device device,
|
@RequestParam(defaultValue = "1") Integer pageNo,
|
@RequestParam(defaultValue = "10") Integer pageSize,
|
@RequestParam(required = false) String searchKey,
|
@RequestParam(required = false) String parentCode,
|
@RequestParam(required = false) Byte status) {
|
|
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
|
if (StringUtils.isNotBlank(searchKey)) {
|
queryWrapper.like("name", searchKey);
|
}
|
if (StringUtils.isNotBlank(parentCode)) {
|
queryWrapper.likeRight("org_code", parentCode);
|
}
|
if (status != null) {
|
queryWrapper.eq("status", status);
|
}
|
Page<Device> page = new Page<>(pageNo, pageSize);
|
IPage<DeviceDTO> pageList = deviceService.tables(page, queryWrapper);
|
Map<String, String> cameraStatusMap = DeviceStatusHandler.getCameraStatusMap();
|
for (DeviceDTO deviceDTO : pageList.getRecords()) {
|
String sn = deviceDTO.getSn();
|
int onlineCount = 0;
|
for (Map.Entry<String, String> entry : cameraStatusMap.entrySet()) {
|
if (entry.getKey().contains(sn)) {
|
if (NumberUtil.parseInt(entry.getValue()) == SystemConstant.DEVICE_ONLINE) {
|
onlineCount++;
|
}
|
}
|
}
|
deviceDTO.setCameraOnlineCount(onlineCount);
|
}
|
return Result.ok(pageList);
|
}
|
|
@GetMapping("/allList")
|
public Result<?> allList(Device device, HttpServletRequest req) {
|
QueryWrapper<Device> queryWrapper = new QueryWrapper<>(device);
|
List<Device> deviceList = deviceService.list(queryWrapper);
|
return Result.ok(deviceList);
|
}
|
|
/**
|
* 添加
|
*/
|
@AutoLog("Device-添加")
|
@PostMapping("/add")
|
public Result<?> add(@RequestBody Device device) {
|
device.setStatus(SystemConstant.DEVICE_OFFLINE);
|
deviceService.save(device);
|
deviceCache.init();
|
return Result.ok();
|
}
|
|
/**
|
* 同步网关基础数据
|
* @param deviceSn 网关序列号
|
* @return
|
*/
|
@AutoLog("拉取/同步网关基础数据")
|
@GetMapping("/syncData")
|
public Result<?> syncData(@RequestParam String deviceSn) {
|
//同步网关基础数据
|
baseDataSyncHandler.pullData(SystemConstant.ALL_REQ_SOURCE,deviceSn);
|
return Result.ok();
|
}
|
|
/**
|
* 编辑
|
*/
|
@AutoLog("Device-编辑")
|
@PutMapping("/edit")
|
public Result<?> edit(@RequestBody Device device) {
|
deviceService.updateById(device);
|
deviceCache.init();
|
return Result.ok();
|
}
|
|
/**
|
* 通过id删除
|
*/
|
@AutoLog("Device-通过id删除")
|
@DeleteMapping("/delete")
|
public Result<?> delete(@RequestParam String id) {
|
deviceService.deleteById(id);
|
deviceCache.init();
|
return Result.ok();
|
}
|
|
/**
|
* 通过id查询
|
*/
|
@GetMapping("/queryById")
|
public Result<?> queryById(@RequestParam String id) {
|
Device device = deviceService.getById(id);
|
return Result.ok(device);
|
}
|
|
/**
|
* 导出excel
|
*/
|
@RequestMapping("/exportXls")
|
public void exportXls(HttpServletRequest request, HttpServletResponse response, Device device) throws IOException {
|
super.exportXls(request, response, device, "Device");
|
}
|
|
/**
|
* 通过excel导入数据
|
*/
|
@PostMapping("/importExcel")
|
public Result<?> importExcel(HttpServletRequest request) throws Exception {
|
Result<?> result = super.importExcel(request, Device.class);
|
deviceCache.init();
|
return result;
|
}
|
|
@GetMapping("/queryTreeList")
|
public Result<?> queryTreeList(@RequestParam(required = false) boolean myself) {
|
List<SysDepartTreeModel> list;
|
if (myself) {
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
list = sysDepartService.queryMyDeptTreeList(user.getDepartIds());
|
} else {
|
list = sysDepartService.queryTreeList();
|
}
|
deviceService.assembleDevice(list);
|
return Result.ok(list);
|
}
|
|
@GetMapping("/searchBy")
|
public Result<List<SysDepartTreeModel>> searchBy(@Parameter(name = "关键词") String keyWord, @Parameter(name = "我的部门下搜索") @RequestParam(required = false) String myDeptSearch) {
|
//部门查询,myDeptSearch为1时为我的部门查询,登录用户为上级时查只查负责部门下数据
|
LoginUser user = SystemContextUtil.currentLoginUser();
|
String departIds = null;
|
if (user.getUserIdentity() != null && user.getUserIdentity().equals(CommonConst.USER_IDENTITY_2)) {
|
departIds = user.getDepartIds();
|
}
|
List<SysDepartTreeModel> treeList = sysDepartService.searchBy(keyWord, myDeptSearch, departIds);
|
if (treeList == null || treeList.size() == 0) {
|
return Result.error("未查询匹配数据!");
|
}
|
deviceService.assembleDevice(treeList);
|
return Result.ok(treeList);
|
}
|
}
|