From 1729474b4c7ffacb1790bb70981e64e7744bffb2 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 26 一月 2026 17:51:06 +0800
Subject: [PATCH] feat: BOM导入模板下载接口,导入导出接口添加权限

---
 src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerTemplateController.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerTemplateController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerTemplateController.java
new file mode 100644
index 0000000..3f5aca6
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerTemplateController.java
@@ -0,0 +1,111 @@
+package com.ruoyi.purchase.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.purchase.dto.PurchaseLedgerDto;
+import com.ruoyi.purchase.mapper.PurchaseLedgerTemplateMapper;
+import com.ruoyi.purchase.mapper.SalesLedgerProductTemplateMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedgerTemplate;
+import com.ruoyi.purchase.pojo.SalesLedgerProductTemplate;
+import com.ruoyi.purchase.service.PurchaseLedgerTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 閲囪喘鍙拌处妯℃澘 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-01-26 11:21:44
+ */
+@RestController
+@RequestMapping("/purchaseLedgerTemplate")
+@Api(tags = "閲囪喘鍙拌处妯℃澘")
+public class PurchaseLedgerTemplateController {
+
+    @Autowired
+    private PurchaseLedgerTemplateMapper purchaseLedgerTemplateMapper;
+
+    @Autowired
+    private SalesLedgerProductTemplateMapper salesLedgerProductTemplateMapper;
+
+    @PostMapping("/add")
+    @Log(title = "娣诲姞閲囪喘鍙拌处妯℃澘", businessType = BusinessType.INSERT)
+    @ApiOperation(value = "娣诲姞閲囪喘鍙拌处妯℃澘")
+    public AjaxResult add(@RequestBody PurchaseLedgerDto purchaseLedgerDto) {
+        // 閲囪喘妯℃澘
+        if(StringUtils.isNotEmpty(purchaseLedgerDto.getTemplateName())){
+            // 妯℃澘鍚嶇О涓嶈兘閲嶅锛屾湁閲嶅灏变笉闇�瑕佹柊澧炰簡
+            PurchaseLedgerTemplate purchaseLedgerTemplate = purchaseLedgerTemplateMapper
+                    .selectOne(new LambdaQueryWrapper<PurchaseLedgerTemplate>()
+                            .eq(PurchaseLedgerTemplate::getTemplateName, purchaseLedgerDto.getTemplateName())
+                            .last("limit 1"));
+            if(purchaseLedgerTemplate == null){
+                purchaseLedgerTemplate = new PurchaseLedgerTemplate();
+                BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedgerTemplate);
+                purchaseLedgerTemplate.setTemplateName(purchaseLedgerDto.getTemplateName());
+                purchaseLedgerTemplateMapper.insert(purchaseLedgerTemplate);
+                // 浜у搧妯℃澘鏂板
+                PurchaseLedgerTemplate finalPurchaseLedgerTemplate = purchaseLedgerTemplate;
+                purchaseLedgerDto.getProductData().forEach(product -> {
+                    SalesLedgerProductTemplate salesLedgerProductTemplate = new SalesLedgerProductTemplate();
+                    BeanUtils.copyProperties(product, salesLedgerProductTemplate);
+                    salesLedgerProductTemplate.setSalesLedgerId(finalPurchaseLedgerTemplate.getId());
+                    salesLedgerProductTemplate.setType(2);
+                    salesLedgerProductTemplateMapper.insert(salesLedgerProductTemplate);
+                });
+            }
+        }
+        return AjaxResult.success();
+    }
+
+    @DeleteMapping("/delete")
+    @Log(title = "閲囪喘鍙拌处妯℃澘", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "鍒犻櫎閲囪喘鍙拌处妯℃澘")
+    public AjaxResult delete(@RequestBody List<Long> id) {
+        if(CollectionUtils.isEmpty(id)) return AjaxResult.error("璇烽�夋嫨瑕佸垹闄ょ殑閲囪喘鍙拌处妯℃澘");
+        int result = purchaseLedgerTemplateMapper.deleteBatchIds(id);
+        salesLedgerProductTemplateMapper.delete(new LambdaQueryWrapper<SalesLedgerProductTemplate>()
+                .in(SalesLedgerProductTemplate::getSalesLedgerId, id));
+        return AjaxResult.success(result);
+    }
+
+    @PostMapping("/update")
+    @Log(title = "淇敼閲囪喘鍙拌处妯℃澘", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "淇敼閲囪喘鍙拌处妯℃澘")
+    public AjaxResult update(@RequestBody PurchaseLedgerDto purchaseLedgerDto) {
+        // 妯℃澘鍚嶇О涓嶈兘閲嶅锛屾湁閲嶅灏变笉闇�瑕佹柊澧炰簡
+        PurchaseLedgerTemplate purchaseLedgerTemplate = purchaseLedgerTemplateMapper
+                .selectOne(new LambdaQueryWrapper<PurchaseLedgerTemplate>()
+                        .eq(PurchaseLedgerTemplate::getTemplateName, purchaseLedgerDto.getTemplateName())
+                        .last("limit 1"));
+        if(purchaseLedgerTemplate != null){
+            BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedgerTemplate);
+            purchaseLedgerTemplate.setTemplateName(purchaseLedgerDto.getTemplateName());
+            purchaseLedgerTemplateMapper.updateById(purchaseLedgerTemplate);
+            // 浜у搧妯℃澘鍒犻櫎
+            salesLedgerProductTemplateMapper.delete(new LambdaQueryWrapper<SalesLedgerProductTemplate>()
+                    .in(SalesLedgerProductTemplate::getSalesLedgerId, purchaseLedgerTemplate.getId()));
+            // 浜у搧妯℃澘鏂板
+            purchaseLedgerDto.getProductData().forEach(product -> {
+                SalesLedgerProductTemplate salesLedgerProductTemplate = new SalesLedgerProductTemplate();
+                BeanUtils.copyProperties(product, salesLedgerProductTemplate);
+                salesLedgerProductTemplate.setSalesLedgerId(purchaseLedgerTemplate.getId());
+                salesLedgerProductTemplateMapper.insert(salesLedgerProductTemplate);
+            });
+        }
+        return AjaxResult.success();
+    }
+
+}

--
Gitblit v1.9.3