diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiPurchaseTransactionController.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiPurchaseTransactionController.java new file mode 100644 index 0000000..96b1c78 --- /dev/null +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiPurchaseTransactionController.java @@ -0,0 +1,170 @@ +package com.ruoyi.ccdi.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.ccdi.domain.dto.CcdiPurchaseTransactionAddDTO; +import com.ruoyi.ccdi.domain.dto.CcdiPurchaseTransactionEditDTO; +import com.ruoyi.ccdi.domain.dto.CcdiPurchaseTransactionQueryDTO; +import com.ruoyi.ccdi.domain.excel.CcdiPurchaseTransactionExcel; +import com.ruoyi.ccdi.domain.vo.CcdiPurchaseTransactionVO; +import com.ruoyi.ccdi.domain.vo.ImportFailureVO; +import com.ruoyi.ccdi.domain.vo.ImportStatusVO; +import com.ruoyi.ccdi.service.ICcdiPurchaseTransactionImportService; +import com.ruoyi.ccdi.service.ICcdiPurchaseTransactionService; +import com.ruoyi.ccdi.utils.EasyExcelUtil; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.PageDomain; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.page.TableSupport; +import com.ruoyi.common.enums.BusinessType; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * 采购交易信息Controller + * + * @author ruoyi + * @date 2026-02-06 + */ +@Tag(name = "采购交易信息管理") +@RestController +@RequestMapping("/ccdi/purchaseTransaction") +public class CcdiPurchaseTransactionController extends BaseController { + + @Resource + private ICcdiPurchaseTransactionService transactionService; + + @Resource + private ICcdiPurchaseTransactionImportService transactionImportService; + + /** + * 查询采购交易列表 + */ + @Operation(summary = "查询采购交易列表") + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:list')") + @GetMapping("/list") + public TableDataInfo list(CcdiPurchaseTransactionQueryDTO queryDTO) { + // 使用MyBatis Plus分页 + PageDomain pageDomain = TableSupport.buildPageRequest(); + Page page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize()); + Page result = transactionService.selectTransactionPage(page, queryDTO); + return getDataTable(result.getRecords(), result.getTotal()); + } + + /** + * 导出采购交易列表 + */ + @Operation(summary = "导出采购交易列表") + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:export')") + @Log(title = "采购交易信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CcdiPurchaseTransactionQueryDTO queryDTO) { + List list = transactionService.selectTransactionListForExport(queryDTO); + EasyExcelUtil.exportExcel(response, list, CcdiPurchaseTransactionExcel.class, "采购交易信息"); + } + + /** + * 获取采购交易详细信息 + */ + @Operation(summary = "获取采购交易详细信息") + @Parameter(name = "purchaseId", description = "采购事项ID", required = true) + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:query')") + @GetMapping(value = "/{purchaseId}") + public AjaxResult getInfo(@PathVariable String purchaseId) { + return success(transactionService.selectTransactionById(purchaseId)); + } + + /** + * 新增采购交易 + */ + @Operation(summary = "新增采购交易") + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:add')") + @Log(title = "采购交易信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@Validated @RequestBody CcdiPurchaseTransactionAddDTO addDTO) { + return toAjax(transactionService.insertTransaction(addDTO)); + } + + /** + * 修改采购交易 + */ + @Operation(summary = "修改采购交易") + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:edit')") + @Log(title = "采购交易信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@Validated @RequestBody CcdiPurchaseTransactionEditDTO editDTO) { + return toAjax(transactionService.updateTransaction(editDTO)); + } + + /** + * 删除采购交易 + */ + @Operation(summary = "删除采购交易") + @Parameter(name = "purchaseIds", description = "采购事项ID数组", required = true) + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:remove')") + @Log(title = "采购交易信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{purchaseIds}") + public AjaxResult remove(@PathVariable String[] purchaseIds) { + return toAjax(transactionService.deleteTransactionByIds(purchaseIds)); + } + + /** + * 下载带字典下拉框的导入模板 + * 使用@DictDropdown注解自动添加下拉框 + */ + @Operation(summary = "下载导入模板") + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + EasyExcelUtil.importTemplateWithDictDropdown(response, CcdiPurchaseTransactionExcel.class, "采购交易信息"); + } + + /** + * 异步导入采购交易 + */ + @Operation(summary = "异步导入采购交易") + @Parameter(name = "file", description = "导入文件", required = true) + @Parameter(name = "updateSupport", description = "是否更新支持,true-存在则更新,false-存在则跳过", required = true) + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')") + @Log(title = "采购交易信息", businessType = BusinessType.IMPORT) + @PostMapping("/importData") + public AjaxResult importData(@Parameter(description = "导入文件") MultipartFile file, + @Parameter(description = "是否更新支持") boolean updateSupport) throws Exception { + List list = EasyExcelUtil.importExcel(file.getInputStream(), CcdiPurchaseTransactionExcel.class); + String taskId = transactionService.importTransaction(list, updateSupport); + return success("导入任务已提交,任务ID:" + taskId); + } + + /** + * 查询导入状态 + */ + @Operation(summary = "查询导入状态") + @Parameter(name = "taskId", description = "任务ID", required = true) + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')") + @GetMapping("/importStatus/{taskId}") + public AjaxResult getImportStatus(@PathVariable String taskId) { + ImportStatusVO statusVO = transactionImportService.getImportStatus(taskId); + return success(statusVO); + } + + /** + * 查询导入失败记录 + */ + @Operation(summary = "查询导入失败记录") + @Parameter(name = "taskId", description = "任务ID", required = true) + @PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')") + @GetMapping("/importFailures/{taskId}") + public AjaxResult getImportFailures(@PathVariable String taskId) { + List failures = transactionImportService.getImportFailures(taskId); + return success(failures); + } +}