| | |
| | | */ |
| | | package org.sxkj.fw.device.controller; |
| | | |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
| | | import lombok.AllArgsConstructor; |
| | | import javax.validation.Valid; |
| | | |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.sxkj.fw.device.entity.FwDeviceEntity; |
| | | import org.sxkj.fw.device.vo.FwDeviceVO; |
| | | import org.sxkj.fw.device.excel.FwDeviceExcel; |
| | | import org.sxkj.fw.device.wrapper.FwDeviceWrapper; |
| | | import org.sxkj.fw.device.service.IFwDeviceService; |
| | | import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
| | | import io.swagger.annotations.*; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.boot.ctrl.BladeController; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.excel.util.ExcelUtil; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.secure.BladeUser; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.constant.BladeConstant; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.sxkj.fw.cockpit.vo.DeviceStatisticsVO; |
| | | import org.sxkj.fw.common.GenericConverter; |
| | | import org.sxkj.fw.common.IdParam; |
| | | import org.sxkj.fw.device.dto.FwDeviceDTO; |
| | | import org.sxkj.fw.device.dto.FwDevicePolygonQueryDTO; |
| | | import org.sxkj.fw.device.entity.FwDeviceEntity; |
| | | import org.sxkj.fw.device.excel.FwDeviceExcel; |
| | | import org.sxkj.fw.device.param.FwDevicePageParam; |
| | | import org.sxkj.fw.device.service.IFwDeviceService; |
| | | import org.sxkj.fw.device.vo.CockpitFwDeviceVO; |
| | | import org.sxkj.fw.device.vo.DeviceTypeStatisticsVO; |
| | | import org.sxkj.fw.device.vo.FwDeviceVO; |
| | | import org.sxkj.fw.device.wrapper.FwDeviceWrapper; |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | import java.util.Map; |
| | | import java.util.List; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 反无设备表 控制器 |
| | | * 设备表 控制器 |
| | | * |
| | | * @author AIX |
| | | * @since 2026-01-06 |
| | | * @author aix |
| | | * @since 2026-01-08 |
| | | */ |
| | | @RestController |
| | | @AllArgsConstructor |
| | | @RequestMapping("fwDevice/fwDevice") |
| | | @Api(value = "反无设备表", tags = "反无设备表接口") |
| | | @RequestMapping("device/fwDevice") |
| | | @Api(value = "设备表", tags = "设备表接口") |
| | | public class FwDeviceController extends BladeController { |
| | | |
| | | private final IFwDeviceService fwDeviceService; |
| | | |
| | | /** |
| | | * 反无设备表 详情 |
| | | * 设备表 详情 |
| | | */ |
| | | @GetMapping("/detail") |
| | | @ApiOperationSupport(order = 1) |
| | | @ApiOperation(value = "详情", notes = "传入fwDevice") |
| | | public R<FwDeviceVO> detail(FwDeviceEntity fwDevice) { |
| | | FwDeviceEntity detail = fwDeviceService.getOne(Condition.getQueryWrapper(fwDevice)); |
| | | public R<FwDeviceVO> detail(@Valid IdParam fwDevice) { |
| | | FwDeviceEntity detail = fwDeviceService.getOne(Condition.getQueryWrapper(GenericConverter.convert(fwDevice, FwDeviceEntity.class))); |
| | | |
| | | if (detail == null) { |
| | | return R.fail("该设备不存在"); |
| | | } |
| | | |
| | | return R.data(FwDeviceWrapper.build().entityVO(detail)); |
| | | } |
| | | /** |
| | | * 反无设备表 分页 |
| | | */ |
| | | @GetMapping("/list") |
| | | @ApiOperationSupport(order = 2) |
| | | @ApiOperation(value = "分页", notes = "传入fwDevice") |
| | | public R<IPage<FwDeviceVO>> list(@ApiIgnore @RequestParam Map<String, Object> fwDevice, Query query) { |
| | | IPage<FwDeviceEntity> pages = fwDeviceService.page(Condition.getPage(query), Condition.getQueryWrapper(fwDevice, FwDeviceEntity.class)); |
| | | return R.data(FwDeviceWrapper.build().pageVO(pages)); |
| | | } |
| | | |
| | | /** |
| | | * 反无设备表 自定义分页 |
| | | * 设备表 列表 |
| | | */ |
| | | @GetMapping("/list") |
| | | @ApiOperationSupport(order = 2) |
| | | @ApiOperation(value = "列表", notes = "传入isAreaSelect、areaId、areaIds、status") |
| | | public R<List<FwDeviceVO>> list(@RequestParam(value = "isAreaSelect", required = false) Integer isAreaSelect, |
| | | @RequestParam(value = "areaId", required = false) Long areaId, |
| | | @RequestParam(value = "areaIds", required = false) String areaIds, |
| | | @RequestParam(value = "status", required = false) Integer status, |
| | | @RequestParam(value = "isTrack", required = false) Integer isTrack) { |
| | | List<Long> areaIdList = Func.toLongList(areaIds); |
| | | List<FwDeviceEntity> list = fwDeviceService.selectFwDeviceList(isAreaSelect, areaId, areaIdList, status, isTrack); |
| | | FwDeviceWrapper wrapper = FwDeviceWrapper.build(); |
| | | return R.data(list.stream().map(wrapper::entityVO).collect(Collectors.toList())); |
| | | } |
| | | |
| | | /** |
| | | * 设备表 列表(多边形过滤) |
| | | */ |
| | | @PostMapping("/listByPolygons") |
| | | @ApiOperationSupport(order = 2) |
| | | @ApiOperation(value = "列表-多边形过滤", notes = "传入isAreaSelect、areaId、status、isTrack、polygons") |
| | | public R<List<FwDeviceVO>> listByPolygons(@Valid @RequestBody FwDevicePolygonQueryDTO query) { |
| | | List<FwDeviceEntity> list = fwDeviceService.selectFwDeviceListByPolygons(query); |
| | | FwDeviceWrapper wrapper = FwDeviceWrapper.build(); |
| | | return R.data(list.stream().map(wrapper::entityVO).collect(Collectors.toList())); |
| | | } |
| | | |
| | | /** |
| | | * 设备表 自定义分页 |
| | | */ |
| | | @GetMapping("/page") |
| | | @ApiOperationSupport(order = 3) |
| | | @ApiOperation(value = "分页", notes = "传入fwDevice") |
| | | public R<IPage<FwDeviceVO>> page(FwDeviceVO fwDevice, Query query) { |
| | | IPage<FwDeviceVO> pages = fwDeviceService.selectFwDevicePage(Condition.getPage(query), fwDevice); |
| | | return R.data(pages); |
| | | public R<IPage<FwDeviceVO>> page(FwDevicePageParam fwDevice, Query query) { |
| | | return R.data(fwDeviceService.selectFwDevicePageVo(fwDevice, query)); |
| | | } |
| | | |
| | | /** |
| | | * 反无设备表 新增 |
| | | */ |
| | | @PostMapping("/save") |
| | | @ApiOperationSupport(order = 4) |
| | | @ApiOperation(value = "新增", notes = "传入fwDevice") |
| | | public R save(@Valid @RequestBody FwDeviceEntity fwDevice) { |
| | | return R.status(fwDeviceService.save(fwDevice)); |
| | | } |
| | | |
| | | /** |
| | | * 反无设备表 修改 |
| | | */ |
| | | @PostMapping("/update") |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入fwDevice") |
| | | public R update(@Valid @RequestBody FwDeviceEntity fwDevice) { |
| | | return R.status(fwDeviceService.updateById(fwDevice)); |
| | | } |
| | | |
| | | /** |
| | | * 反无设备表 新增或修改 |
| | | * 设备表 新增或修改 |
| | | */ |
| | | @PostMapping("/submit") |
| | | @ApiOperationSupport(order = 6) |
| | | @ApiOperationSupport(order = 4) |
| | | @ApiOperation(value = "新增或修改", notes = "传入fwDevice") |
| | | public R submit(@Valid @RequestBody FwDeviceEntity fwDevice) { |
| | | return R.status(fwDeviceService.saveOrUpdate(fwDevice)); |
| | | public R submit(@Valid @RequestBody FwDeviceDTO fwDevice) { |
| | | return R.status(fwDeviceService.saveOrUpdateDevice(FwDeviceWrapper.build().entityDTO(fwDevice))); |
| | | } |
| | | |
| | | /** |
| | | * 反无设备表 删除 |
| | | * 设备表 新增或修改 |
| | | */ |
| | | @PostMapping("/updateTrackStatus") |
| | | @ApiOperationSupport(order = 4) |
| | | @ApiOperation(value = "修改设备出入库状态", notes = "传入fwDevice") |
| | | public R updateTrackStatus(@ApiParam(value = "", required = true) @RequestParam Long deviceId) { |
| | | return R.status(fwDeviceService.updateTrackStatusByDeviceId(deviceId, 0, "", "")); |
| | | } |
| | | |
| | | /** |
| | | * 设备表 删除 |
| | | */ |
| | | @PostMapping("/remove") |
| | | @ApiOperationSupport(order = 7) |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "逻辑删除", notes = "传入ids") |
| | | public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { |
| | | return R.status(fwDeviceService.deleteLogic(Func.toLongList(ids))); |
| | | } |
| | | |
| | | /** |
| | | * 设备类型统计 |
| | | * |
| | | * @return 统计数据 |
| | | */ |
| | | @GetMapping("/statisticalDeviceType") |
| | | @ApiOperationSupport(order = 6) |
| | | @ApiOperation(value = "设备类型统计", notes = "设备类型统计") |
| | | public R<List<DeviceTypeStatisticsVO>> statisticalDeviceType() { |
| | | return R.data(fwDeviceService.getDeviceTypeStatistics()); |
| | | } |
| | | |
| | | /** |
| | | * 设备出库去向统计 |
| | | * |
| | | * @return 统计数据 |
| | | */ |
| | | @GetMapping("/statisticalDeviceOut") |
| | | @ApiOperationSupport(order = 7) |
| | | @ApiOperation(value = "设备出库去向统计", notes = "设备出库去向统计") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "effectiveRangeKmIsNotNull", value = "有效范围是否为空:0-不处理 1-不为空 2-为空", paramType = "query", dataType = "string") |
| | | }) |
| | | public R<List<DeviceStatisticsVO>> statisticalDeviceOut(String effectiveRangeKmIsNotNull) { |
| | | return R.data(fwDeviceService.getDeviceOutStatistics(effectiveRangeKmIsNotNull)); |
| | | } |
| | | |
| | | /** |
| | | * 设备生产厂商统计 |
| | | * |
| | | * @return 统计数据 |
| | | */ |
| | | @GetMapping("/statisticalDeviceManufacturer") |
| | | @ApiOperationSupport(order = 8) |
| | | @ApiOperation(value = "设备生产厂商统计", notes = "设备生产厂商统计") |
| | | public R<List<DeviceStatisticsVO>> statisticalDeviceManufacturer() { |
| | | return R.data(fwDeviceService.getDeviceManufacturerStatistics()); |
| | | } |
| | | |
| | | /** |
| | | * 查询非本部门区域的设备 |
| | | * |
| | | * @param regionCode 区域编码,用于查询不在该区域内的设备 |
| | | * @param deptId 机构ID,用于限定查询范围 |
| | | * @return 设备列表 |
| | | */ |
| | | @GetMapping("/nonDeptAreaDevices") |
| | | @ApiOperationSupport(order = 9) |
| | | @ApiOperation(value = "查询非本部门区域的设备", notes = "查询不在当前部门及其子部门区域内的设备") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "regionCode", value = "区域编码", paramType = "query", dataType = "string", required = true), |
| | | @ApiImplicitParam(name = "deptId", value = "机构ID", paramType = "query", dataType = "string", required = true) |
| | | }) |
| | | public R<List<FwDeviceVO>> getNonDeptAreaDevices( |
| | | @ApiParam(value = "区域编码", required = true) @RequestParam String regionCode, |
| | | @ApiParam(value = "机构ID", required = true) @RequestParam String deptId) { |
| | | return R.data(fwDeviceService.getNonDeptAreaDevices(regionCode, deptId)); |
| | | } |
| | | |
| | | /** |
| | | * 设备区域绑定校验 |
| | | */ |
| | | @GetMapping("/checkAreaBind") |
| | | @ApiOperationSupport(order = 9) |
| | | @ApiOperation(value = "设备区域绑定校验", notes = "传入deviceId") |
| | | public R<Boolean> checkAreaBind(@ApiParam(value = "设备ID", required = true) @RequestParam Long deviceId) { |
| | | FwDeviceEntity device = fwDeviceService.getById(deviceId); |
| | | if (device == null || (device.getIsDeleted() != null && device.getIsDeleted() != 0)) { |
| | | return R.fail("该设备不存在"); |
| | | } |
| | | return R.data(fwDeviceService.existsAreaBindByDeviceId(deviceId)); |
| | | } |
| | | |
| | | /** |
| | | * 导出数据 |
| | | */ |
| | | @GetMapping("/export-fwDevice") |
| | | @ApiOperationSupport(order = 9) |
| | | @ApiOperationSupport(order = 99) |
| | | @ApiOperation(value = "导出数据", notes = "传入fwDevice") |
| | | @ApiIgnore |
| | | public void exportFwDevice(@ApiIgnore @RequestParam Map<String, Object> fwDevice, BladeUser bladeUser, HttpServletResponse response) { |
| | | QueryWrapper<FwDeviceEntity> queryWrapper = Condition.getQueryWrapper(fwDevice, FwDeviceEntity.class); |
| | | //if (!AuthUtil.isAdministrator()) { |
| | | // if (!AuthUtil.isAdministrator()) { |
| | | // queryWrapper.lambda().eq(FwDevice::getTenantId, bladeUser.getTenantId()); |
| | | //} |
| | | queryWrapper.lambda().eq(FwDeviceEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); |
| | | List<FwDeviceExcel> list = fwDeviceService.exportFwDevice(queryWrapper); |
| | | ExcelUtil.export(response, "反无设备表数据" + DateUtil.time(), "反无设备表数据表", list, FwDeviceExcel.class); |
| | | ExcelUtil.export(response, "设备表数据" + DateUtil.time(), "设备表数据表", list, FwDeviceExcel.class); |
| | | } |
| | | |
| | | // 任务调度使用 |
| | | @GetMapping("/listByTask") |
| | | @ApiOperationSupport(order = 10) |
| | | @ApiOperation(value = "任务调度使用") |
| | | public R<IPage<CockpitFwDeviceVO>> listByTask(FwDeviceDTO fwDevice, Query query) { |
| | | IPage<CockpitFwDeviceVO> pages = fwDeviceService.selectCockpitDevicePage(Condition.getPage(query), fwDevice); |
| | | return R.data(pages); |
| | | } |
| | | } |