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();
}
}