package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.dto.asset.AssetInventoryTaskDTO; import com.ruoyi.system.dto.asset.AssetInventoryTaskItemDTO; import com.ruoyi.system.dto.asset.AssetInventoryTaskItemUpdateDTO; import com.ruoyi.system.dto.asset.AssetInventoryUserUpdateDTO; import com.ruoyi.system.query.AssertInventoryQuery; import com.ruoyi.system.query.InventoryTaskQuery; import com.ruoyi.system.service.AssetInventoryTaskService; import com.ruoyi.system.vo.asset.AssetInventoryTaskDetailVO; import com.ruoyi.system.vo.asset.AssetInventoryTaskVO; import com.ruoyi.system.vo.asset.AssetMainInventoryVO; import com.ruoyi.system.vo.asset.InventoryTaskStatisticsVO; import com.ruoyi.system.vo.asset.InventoryTaskTabVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; /** *

* 盘点任务表 前端控制器 *

* * @author WuGuanFengYue * @since 2025-09-15 */ @Slf4j @Api(tags = {"资产盘点相关接口"}) @Validated @RestController @RequestMapping("/asset-inventory-task") @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class AssetInventoryTaskController { private final AssetInventoryTaskService assetInventoryTaskService; @ApiOperation("资产盘点列表") @PostMapping("/page") public R> getInventoryTaskPage(@RequestBody AssertInventoryQuery query){ IPage page = assetInventoryTaskService.getInventoryTaskPage(query); return R.ok(page); } @ApiOperation("创建盘点任务") @PostMapping("/create") public R createInventoryTask(@RequestBody @Valid AssetInventoryTaskDTO dto){ log.info("创建盘点任务,查询参数:{}", dto); boolean result = assetInventoryTaskService.createInventoryTask(dto); return result ? R.ok("创建成功") : R.fail("创建失败"); } @ApiOperation(value ="删除盘点任务") @DeleteMapping("/{id}") public R deleteById(@ApiParam(name = "id",value = "盘点任务ID",required = true) @PathVariable Integer id){ assetInventoryTaskService.deleteById(id); return R.ok(); } @ApiOperation("获取盘点任务选项卡数据") @PostMapping("/tab-data") public R> getInventoryTaskTabData(){ try { List data = assetInventoryTaskService.getInventoryTaskTabData(); log.info("成功获取盘点任务选项卡数据,数量:{}", data.size()); return R.ok(data); } catch (Exception e) { log.error("获取盘点任务选项卡数据失败", e); return R.fail("获取数据失败:" + e.getMessage()); } } @ApiOperation("获取盘点任务详情") @GetMapping("/detail/{id}") public R getDetail(@ApiParam(name = "id", value = "盘点任务ID") @PathVariable Integer id) { return R.ok(assetInventoryTaskService.getDetail(id)); } @ApiOperation("根据任务ID获取盘点资产列表(开始盘点页面)") @PostMapping("/list-by-task-id") public R> getListByTaskId(@Valid @RequestBody InventoryTaskQuery query) { return R.ok(assetInventoryTaskService.getListByTaskId(query)); } @ApiOperation("获取盘点任务统计数据") @GetMapping("/statistics/{id}") public R getInventoryTaskStatistics( @ApiParam(name = "id", value = "盘点任务ID", required = true) @PathVariable Integer id) { try { InventoryTaskStatisticsVO statistics = assetInventoryTaskService.getInventoryTaskStatistics(id); log.info("成功获取盘点任务统计数据,任务ID:{},统计数据:{}", id, statistics); return R.ok(statistics); } catch (Exception e) { log.error("获取盘点任务统计数据失败,任务ID:{}", id, e); return R.fail("获取统计数据失败:" + e.getMessage()); } } @ApiOperation("开始盘点") @GetMapping("/start/{id}") public R start(@ApiParam(name = "id", value = "盘点任务ID", required = true) @PathVariable Integer id){ assetInventoryTaskService.start(id); return R.ok(); } @ApiOperation("修改盘点人") @PostMapping("/update-inventory-user") public R updateInventoryUser( @ApiParam(name = "dto", value = "修改盘点人请求参数", required = true) @RequestBody @Valid AssetInventoryUserUpdateDTO dto) { log.info("接收到修改盘点人请求,参数:{}", dto); assetInventoryTaskService.updateInventoryUser(dto); return R.ok("修改成功"); } @ApiOperation("盘点结果处理") @PostMapping("/result") public R handleResult(@Valid @RequestBody List dtoList) { assetInventoryTaskService.handleResult(dtoList); return R.ok(); } @ApiOperation("取消盘点") @PostMapping("/cancel/{id}") public R cancel (@ApiParam(name = "id", value = "盘点任务ID", required = true) @PathVariable Integer id){ if (assetInventoryTaskService.cancel(id)) { return R.ok(); } else { return R.fail("取消失败"); } } @ApiOperation("保存盘点") @PostMapping("/save") public R saveInventory(@Valid @RequestBody List dtoList) { assetInventoryTaskService.saveInventory(dtoList); return R.ok(); } }