提交 5328aab6 authored 作者: hzh's avatar hzh

部分功能实现

上级 ce814d3d
package org.dromara.server.constant;
/**
* @author wenhe
*/
public enum InvoiceType {
//企业
ENTERPRISE,
//个人
PERSONAL;
}
...@@ -77,6 +77,16 @@ public class CrmAddressController extends BaseController { ...@@ -77,6 +77,16 @@ public class CrmAddressController extends BaseController {
return toAjax(crmAddressService.insertByBo(bo)); return toAjax(crmAddressService.insertByBo(bo));
} }
/**
* 设为默认
*/
@Log(title = "crm-常用地址-设为默认", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PostMapping()
public R<Void> setDefault( @RequestBody Long id) {
return toAjax(crmAddressService.setDefault(id));
}
/** /**
* 修改crm-常用地址 * 修改crm-常用地址
*/ */
......
package org.dromara.server.controller;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.web.core.BaseController;
import org.dromara.server.domain.bo.CrmInvoiceHeaderBo;
import org.dromara.server.domain.vo.CrmInvoiceHeaderVo;
import org.dromara.server.service.ICrmInvoiceHeaderService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* crm-发票抬头管理
* 前端访问路由地址为:/server/invoiceHeader
*
* @author hzh
* @date 2024-12-24
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/invoiceHeader")
public class CrmInvoiceHeaderController extends BaseController {
private final ICrmInvoiceHeaderService crmInvoiceHeaderService;
/**
* 查询crm-发票抬头管理列表
*/
@GetMapping("/list")
public TableDataInfo<CrmInvoiceHeaderVo> list(PageQuery pageQuery) {
CrmInvoiceHeaderBo bo = new CrmInvoiceHeaderBo().setUserId(LoginHelper.getUserId());
return crmInvoiceHeaderService.queryPageList(bo, pageQuery);
}
/**
* 查询crm-发票抬头管理全量列表
*/
@GetMapping("/listAll")
public R<List<CrmInvoiceHeaderVo>> listAll() {
CrmInvoiceHeaderBo bo = new CrmInvoiceHeaderBo().setUserId(LoginHelper.getUserId());
return R.ok(crmInvoiceHeaderService.queryList(bo));
}
/**
* 获取crm-发票抬头管理详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<CrmInvoiceHeaderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(crmInvoiceHeaderService.queryById(id));
}
/**
* 新增crm-发票抬头管理
*/
@Log(title = "crm-发票抬头管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody CrmInvoiceHeaderBo bo) {
bo.setUserId(LoginHelper.getUserId());
return toAjax(crmInvoiceHeaderService.insertByBo(bo));
}
/**
* 修改crm-发票抬头管理
*/
@Log(title = "crm-发票抬头管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CrmInvoiceHeaderBo bo) {
return toAjax(crmInvoiceHeaderService.updateByBo(bo));
}
/**
* 删除crm-发票抬头管理
*
* @param ids 主键串
*/
@Log(title = "crm-发票抬头管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(crmInvoiceHeaderService.deleteWithValidByIds(List.of(ids), true));
}
}
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableLogic; ...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial; import java.io.Serial;
...@@ -17,6 +18,7 @@ import java.math.BigDecimal; ...@@ -17,6 +18,7 @@ import java.math.BigDecimal;
* @date 2024-12-24 * @date 2024-12-24
*/ */
@Data @Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("crm_address") @TableName("crm_address")
public class CrmAddress extends TenantEntity { public class CrmAddress extends TenantEntity {
...@@ -65,6 +67,11 @@ public class CrmAddress extends TenantEntity { ...@@ -65,6 +67,11 @@ public class CrmAddress extends TenantEntity {
*/ */
private String remark; private String remark;
/**
* 是否为默认地址(布尔型,例如 0 表示否,1 表示是)
*/
private Boolean isDefault;
/** /**
* 删除标志(0代表存在 2代表删除) * 删除标志(0代表存在 2代表删除)
*/ */
......
package org.dromara.server.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* crm-发票抬头管理对象 crm_invoice_header
*
* @author hzh
* @date 2024-12-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("crm_invoice_header")
public class CrmInvoiceHeader extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 发票类型
*/
private String invoiceType;
/**
* 公司名称
*/
private String companyName;
/**
* 税号
*/
private String taxId;
/**
* 是否专票
*/
private Boolean isSpecialInvoice;
/**
* 地址
*/
private String address;
/**
* 联系电话
*/
private String phoneNumber;
/**
* 邮箱
*/
private String email;
/**
* 开户银行名称
*/
private String bankName;
/**
* 银行账号
*/
private String bankAccount;
/**
* 是否为默认抬头(布尔型,例如 0 表示否,1 表示是)
*/
private Boolean isDefault;
/**
* 备注
*/
private String remark;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private String delFlag;
}
...@@ -66,6 +66,11 @@ public class CrmAddressBo extends BaseEntity { ...@@ -66,6 +66,11 @@ public class CrmAddressBo extends BaseEntity {
@NotBlank(message = "标签不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "标签不能为空", groups = {AddGroup.class, EditGroup.class})
private String tag; private String tag;
/**
* 是否为默认地址(布尔型,例如 0 表示否,1 表示是)
*/
private Boolean isDefault;
/** /**
* 备注 * 备注
*/ */
......
package org.dromara.server.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.server.domain.CrmInvoiceHeader;
/**
* crm-发票抬头管理业务对象 crm_invoice_header
*
* @author hzh
* @date 2024-12-24
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CrmInvoiceHeader.class, reverseConvertGenerate = false)
public class CrmInvoiceHeaderBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 发票类型
*/
@NotBlank(message = "发票类型不能为空", groups = {AddGroup.class, EditGroup.class})
private String invoiceType;
/**
* 公司名称
*/
@NotBlank(message = "公司名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String companyName;
/**
* 税号
*/
private String taxId;
/**
* 是否专票
*/
private Boolean isSpecialInvoice;
/**
* 地址
*/
private String address;
/**
* 联系电话
*/
private String phoneNumber;
/**
* 邮箱
*/
private String email;
/**
* 开户银行名称
*/
private String bankName;
/**
* 银行账号
*/
private String bankAccount;
/**
* 是否为默认抬头(布尔型,例如 0 表示否,1 表示是)
*/
private Boolean isDefault;
/**
* 备注
*/
private String remark;
}
...@@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; ...@@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.server.domain.CrmAddress; import org.dromara.server.domain.CrmAddress;
import java.io.Serial; import java.io.Serial;
...@@ -67,6 +69,13 @@ public class CrmAddressVo implements Serializable { ...@@ -67,6 +69,13 @@ public class CrmAddressVo implements Serializable {
@ExcelProperty(value = "标签") @ExcelProperty(value = "标签")
private String tag; private String tag;
/**
* 是否为默认地址(布尔型,例如 0 表示否,1 表示是)
*/
@ExcelProperty(value = "是否为默认地址", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "布=尔型,例如,0=,表=示否,1,表=示是")
private Boolean isDefault;
/** /**
* 备注 * 备注
*/ */
......
package org.dromara.server.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.server.domain.CrmInvoiceHeader;
import java.io.Serial;
import java.io.Serializable;
/**
* crm-发票抬头管理视图对象 crm_invoice_header
*
* @author hzh
* @date 2024-12-24
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CrmInvoiceHeader.class)
public class CrmInvoiceHeaderVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 用户id
*/
@ExcelProperty(value = "用户id")
private Long userId;
/**
* 发票类型
*/
@ExcelProperty(value = "发票类型")
private String invoiceType;
/**
* 公司名称
*/
@ExcelProperty(value = "公司名称")
private String companyName;
/**
* 税号
*/
@ExcelProperty(value = "税号")
private String taxId;
/**
* 是否专票
*/
@ExcelProperty(value = "是否专票", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "布=尔型,例如,0=,表=示否,1,表=示是")
private Boolean isSpecialInvoice;
/**
* 地址
*/
@ExcelProperty(value = "地址")
private String address;
/**
* 联系电话
*/
@ExcelProperty(value = "联系电话")
private String phoneNumber;
/**
* 邮箱
*/
@ExcelProperty(value = "邮箱")
private String email;
/**
* 开户银行名称
*/
@ExcelProperty(value = "开户银行名称")
private String bankName;
/**
* 银行账号
*/
@ExcelProperty(value = "银行账号")
private String bankAccount;
/**
* 是否为默认抬头(布尔型,例如 0 表示否,1 表示是)
*/
@ExcelProperty(value = "是否为默认抬头", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "布=尔型,例如,0=,表=示否,1,表=示是")
private Boolean isDefault;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}
package org.dromara.server.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.server.domain.CrmInvoiceHeader;
import org.dromara.server.domain.vo.CrmInvoiceHeaderVo;
/**
* crm-发票抬头管理Mapper接口
*
* @author hzh
* @date 2024-12-24
*/
public interface CrmInvoiceHeaderMapper extends BaseMapperPlus<CrmInvoiceHeader, CrmInvoiceHeaderVo> {
}
...@@ -13,5 +13,11 @@ import org.dromara.server.domain.vo.CrmAddressVo; ...@@ -13,5 +13,11 @@ import org.dromara.server.domain.vo.CrmAddressVo;
*/ */
public interface ICrmAddressService extends IBaseService<CrmAddressVo, CrmAddressBo, CrmAddress> { public interface ICrmAddressService extends IBaseService<CrmAddressVo, CrmAddressBo, CrmAddress> {
/**
* 设置为默认地址
*
* @param id id
* @return 是否成功
*/
boolean setDefault(Long id);
} }
package org.dromara.server.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.server.domain.CrmInvoiceHeader;
import org.dromara.server.domain.bo.CrmInvoiceHeaderBo;
import org.dromara.server.domain.vo.CrmInvoiceHeaderVo;
/**
* crm-发票抬头管理Service接口
*
* @author hzh
* @date 2024-12-24
*/
public interface ICrmInvoiceHeaderService extends IBaseService<CrmInvoiceHeaderVo, CrmInvoiceHeaderBo, CrmInvoiceHeader> {
}
...@@ -2,17 +2,22 @@ package org.dromara.server.service.impl; ...@@ -2,17 +2,22 @@ package org.dromara.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.base.Objects;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService; import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.server.domain.CrmAddress; import org.dromara.server.domain.CrmAddress;
import org.dromara.server.domain.bo.CrmAddressBo; import org.dromara.server.domain.bo.CrmAddressBo;
import org.dromara.server.domain.vo.CrmAddressVo; import org.dromara.server.domain.vo.CrmAddressVo;
import org.dromara.server.mapper.CrmAddressMapper; import org.dromara.server.mapper.CrmAddressMapper;
import org.dromara.server.service.ICrmAddressService; import org.dromara.server.service.ICrmAddressService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -37,6 +42,7 @@ public class CrmAddressServiceImpl extends AbstractBaseService<CrmAddressVo, Crm ...@@ -37,6 +42,7 @@ public class CrmAddressServiceImpl extends AbstractBaseService<CrmAddressVo, Crm
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CrmAddress> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<CrmAddress> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, CrmAddress::getUserId, bo.getUserId()); lqw.eq(bo.getUserId() != null, CrmAddress::getUserId, bo.getUserId());
lqw.eq(bo.getIsDefault() != null, CrmAddress::getIsDefault, bo.getIsDefault());
lqw.eq(StringUtils.isNotBlank(bo.getAddress()), CrmAddress::getAddress, bo.getAddress()); lqw.eq(StringUtils.isNotBlank(bo.getAddress()), CrmAddress::getAddress, bo.getAddress());
lqw.like(StringUtils.isNotBlank(bo.getAddressName()), CrmAddress::getAddressName, bo.getAddressName()); lqw.like(StringUtils.isNotBlank(bo.getAddressName()), CrmAddress::getAddressName, bo.getAddressName());
lqw.eq(bo.getLatitude() != null, CrmAddress::getLatitude, bo.getLatitude()); lqw.eq(bo.getLatitude() != null, CrmAddress::getLatitude, bo.getLatitude());
...@@ -45,4 +51,38 @@ public class CrmAddressServiceImpl extends AbstractBaseService<CrmAddressVo, Crm ...@@ -45,4 +51,38 @@ public class CrmAddressServiceImpl extends AbstractBaseService<CrmAddressVo, Crm
return lqw; return lqw;
} }
@Override
public void validEntityBeforeSave(CrmAddress entity) {
super.validEntityBeforeSave(entity);
if (Boolean.TRUE.equals(entity.getIsDefault())) {
List<CrmAddress> list = baseMapper.selectList(
buildQueryWrapper(new CrmAddressBo()
.setUserId(LoginHelper.getUserId())
.setIsDefault(true)));
CrmAddress address = StreamUtils.findFirst(list, header -> entity.getId() == null || !Objects.equal(header.getId(), entity.getId()));
if (address != null) {
throw new IllegalArgumentException("只能有一个默认地址");
}
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean setDefault(Long id) {
List<CrmAddress> list = baseMapper.selectList(
buildQueryWrapper(new CrmAddressBo()
.setUserId(LoginHelper.getUserId())
.setIsDefault(true)));
list.forEach(address -> {
address.setIsDefault(false);
baseMapper.updateById(address);
});
CrmAddress address = baseMapper.selectById(id);
if (address == null) {
throw new RuntimeException("地址不存在");
}
address.setIsDefault(true);
baseMapper.updateById(address);
return true;
}
} }
package org.dromara.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.base.Objects;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.server.constant.InvoiceType;
import org.dromara.server.domain.CrmInvoiceHeader;
import org.dromara.server.domain.bo.CrmInvoiceHeaderBo;
import org.dromara.server.domain.vo.CrmInvoiceHeaderVo;
import org.dromara.server.mapper.CrmInvoiceHeaderMapper;
import org.dromara.server.service.ICrmInvoiceHeaderService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* crm-发票抬头管理Service业务层处理
*
* @author hzh
* @date 2024-12-24
*/
@RequiredArgsConstructor
@Service
public class CrmInvoiceHeaderServiceImpl extends AbstractBaseService<CrmInvoiceHeaderVo, CrmInvoiceHeaderBo, CrmInvoiceHeader> implements ICrmInvoiceHeaderService {
private final CrmInvoiceHeaderMapper baseMapper;
@Override
public BaseMapperPlus<CrmInvoiceHeader, CrmInvoiceHeaderVo> mapper() {
return baseMapper;
}
@Override
public LambdaQueryWrapper<CrmInvoiceHeader> buildQueryWrapper(CrmInvoiceHeaderBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CrmInvoiceHeader> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, CrmInvoiceHeader::getUserId, bo.getUserId());
lqw.eq(StringUtils.isNotBlank(bo.getInvoiceType()), CrmInvoiceHeader::getInvoiceType, bo.getInvoiceType());
lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), CrmInvoiceHeader::getCompanyName, bo.getCompanyName());
lqw.eq(StringUtils.isNotBlank(bo.getTaxId()), CrmInvoiceHeader::getTaxId, bo.getTaxId());
lqw.eq(bo.getIsSpecialInvoice() != null, CrmInvoiceHeader::getIsSpecialInvoice, bo.getIsSpecialInvoice());
lqw.eq(StringUtils.isNotBlank(bo.getAddress()), CrmInvoiceHeader::getAddress, bo.getAddress());
lqw.eq(StringUtils.isNotBlank(bo.getPhoneNumber()), CrmInvoiceHeader::getPhoneNumber, bo.getPhoneNumber());
lqw.eq(StringUtils.isNotBlank(bo.getEmail()), CrmInvoiceHeader::getEmail, bo.getEmail());
lqw.like(StringUtils.isNotBlank(bo.getBankName()), CrmInvoiceHeader::getBankName, bo.getBankName());
lqw.eq(StringUtils.isNotBlank(bo.getBankAccount()), CrmInvoiceHeader::getBankAccount, bo.getBankAccount());
lqw.eq(bo.getIsDefault() != null, CrmInvoiceHeader::getIsDefault, bo.getIsDefault());
return lqw;
}
@Override
public void validEntityBeforeSave(CrmInvoiceHeader entity) {
super.validEntityBeforeSave(entity);
if (StringUtils.equals(entity.getInvoiceType(), InvoiceType.ENTERPRISE.name())) {
if (StringUtils.isEmpty(entity.getTaxId())) {
throw new IllegalArgumentException("企业类型发票抬头必须填写税号");
}
if (Boolean.TRUE.equals(entity.getIsSpecialInvoice())) {
if (StringUtils.isEmpty(entity.getAddress())) {
throw new IllegalArgumentException("专票类型发票抬头必须填写公司地址");
}
if (StringUtils.isEmpty(entity.getPhoneNumber())) {
throw new IllegalArgumentException("专票类型发票抬头必须填写公司电话");
}
if (StringUtils.isEmpty(entity.getBankName())) {
throw new IllegalArgumentException("专票类型发票抬头必须填写银行名称");
}
if (StringUtils.isEmpty(entity.getBankAccount())) {
throw new IllegalArgumentException("专票类型发票抬头必须填写银行账号");
}
}
}
if (Boolean.TRUE.equals(entity.getIsDefault())) {
List<CrmInvoiceHeader> list = baseMapper.selectList(
buildQueryWrapper(new CrmInvoiceHeaderBo()
.setUserId(LoginHelper.getUserId())
.setIsDefault(true)));
CrmInvoiceHeader cih = StreamUtils.findFirst(list, header -> entity.getId() == null || !Objects.equal(header.getId(), entity.getId()));
if (cih != null) {
throw new IllegalArgumentException("只能有一个默认发票抬头");
}
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.server.mapper.CrmInvoiceHeaderMapper">
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论