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; /** *

* 采购台账模板 前端控制器 *

* * @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() .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 id) { if(CollectionUtils.isEmpty(id)) return AjaxResult.error("请选择要删除的采购台账模板"); int result = purchaseLedgerTemplateMapper.deleteBatchIds(id); salesLedgerProductTemplateMapper.delete(new LambdaQueryWrapper() .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() .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() .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(); } }