初步 提交客户/供应商管理

This commit is contained in:
luojiaquan
2026-09-09 17:37:31 +08:00
parent 49b1d2c321
commit 1fda723e3b
20 changed files with 5014 additions and 0 deletions
@@ -0,0 +1,415 @@
package com.ruoyi.customer.customerinfo.domain;
import java.math.BigDecimal;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 客户主对象 bms_customer
*
* @author ruoyi
* @date 2026-09-08
*/
public class BmsCustomer extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 客户ID(UUID) */
private String customerId;
/** 客户编码 */
@Excel(name = "客户编码")
private String customerCode;
/** 客户名称 */
@Excel(name = "客户名称")
private String customerName;
/** 对外代码 */
@Excel(name = "对外代码")
private String customerCodeDw;
/** 统一社会信用代码 */
@Excel(name = "统一社会信用代码")
private String creditCode;
/** 业务类型(0直客 1同行 2集运) */
@Excel(name = "业务类型", readConverterExp = "0=直客,1=同行,2=集运")
private String customerType;
/** 启用状态(0正常 1停用) */
@Excel(name = "启用状态", readConverterExp = "0=正常,1=停用")
private String isEnable;
/** 业务员用户ID */
@Excel(name = "业务员用户ID")
private String salesUserId;
/** 业务员姓名 */
@Excel(name = "业务员姓名")
private String salesUser;
/** 资金额度(元) */
@Excel(name = "资金额度", readConverterExp = "元=")
private BigDecimal ed;
/** 回款账期(天) */
@Excel(name = "回款账期", readConverterExp = "天=")
private Long zq;
/** 结算员用户ID */
@Excel(name = "结算员用户ID")
private String settlementUserId;
/** 结算员姓名 */
@Excel(name = "结算员姓名")
private String settlementUser;
/** 客服用户ID */
@Excel(name = "客服用户ID")
private String serviceUserId;
/** 客服姓名 */
@Excel(name = "客服姓名")
private String serviceUser;
/** 结算方式(0月结 1周结 2日结) */
@Excel(name = "结算方式", readConverterExp = "0=月结,1=周结,2=日结")
private String settlementType;
/** 临时额度(元) */
@Excel(name = "临时额度", readConverterExp = "元=")
private BigDecimal tempEd;
/** 账户余额(元) */
@Excel(name = "账户余额", readConverterExp = "元=")
private BigDecimal accountBalance;
/** 外币余额(元) */
@Excel(name = "外币余额", readConverterExp = "元=")
private BigDecimal foreignCurrencyBalance;
/** 重量阈值(kg) */
@Excel(name = "重量阈值", readConverterExp = "k=g")
private BigDecimal weightThreshold;
/** 抛比(%) */
@Excel(name = "抛比", readConverterExp = "%=")
private BigDecimal throwRatio;
/** 信用额度(元) */
@Excel(name = "信用额度", readConverterExp = "元=")
private BigDecimal creditEd;
/** 绑定产品ID(多个产品ID用逗号分隔,支持批量操作) */
@Excel(name = "绑定产品ID", readConverterExp = "多=个产品ID用逗号分隔,支持批量操作")
private String productIds;
/** 附件列表(子表 bms_customer_attachment) */
private List<BmsCustomerAttachment> attachmentList;
/** 公司主体列表(子表 bms_customer_company) */
private List<BmsCustomerCompany> companyList;
/** 删除标记(0正常 2删除) */
private String delFlag;
public void setCustomerId(String customerId)
{
this.customerId = customerId;
}
public String getCustomerId()
{
return customerId;
}
public void setCustomerCode(String customerCode)
{
this.customerCode = customerCode;
}
public String getCustomerCode()
{
return customerCode;
}
public void setCustomerName(String customerName)
{
this.customerName = customerName;
}
public String getCustomerName()
{
return customerName;
}
public void setCustomerCodeDw(String customerCodeDw)
{
this.customerCodeDw = customerCodeDw;
}
public String getCustomerCodeDw()
{
return customerCodeDw;
}
public void setCreditCode(String creditCode)
{
this.creditCode = creditCode;
}
public String getCreditCode()
{
return creditCode;
}
public void setCustomerType(String customerType)
{
this.customerType = customerType;
}
public String getCustomerType()
{
return customerType;
}
public void setIsEnable(String isEnable)
{
this.isEnable = isEnable;
}
public String getIsEnable()
{
return isEnable;
}
public void setSalesUserId(String salesUserId)
{
this.salesUserId = salesUserId;
}
public String getSalesUserId()
{
return salesUserId;
}
public void setSalesUser(String salesUser)
{
this.salesUser = salesUser;
}
public String getSalesUser()
{
return salesUser;
}
public void setEd(BigDecimal ed)
{
this.ed = ed;
}
public BigDecimal getEd()
{
return ed;
}
public void setZq(Long zq)
{
this.zq = zq;
}
public Long getZq()
{
return zq;
}
public void setSettlementUserId(String settlementUserId)
{
this.settlementUserId = settlementUserId;
}
public String getSettlementUserId()
{
return settlementUserId;
}
public void setSettlementUser(String settlementUser)
{
this.settlementUser = settlementUser;
}
public String getSettlementUser()
{
return settlementUser;
}
public void setServiceUserId(String serviceUserId)
{
this.serviceUserId = serviceUserId;
}
public String getServiceUserId()
{
return serviceUserId;
}
public void setServiceUser(String serviceUser)
{
this.serviceUser = serviceUser;
}
public String getServiceUser()
{
return serviceUser;
}
public void setSettlementType(String settlementType)
{
this.settlementType = settlementType;
}
public String getSettlementType()
{
return settlementType;
}
public void setTempEd(BigDecimal tempEd)
{
this.tempEd = tempEd;
}
public BigDecimal getTempEd()
{
return tempEd;
}
public void setAccountBalance(BigDecimal accountBalance)
{
this.accountBalance = accountBalance;
}
public BigDecimal getAccountBalance()
{
return accountBalance;
}
public void setForeignCurrencyBalance(BigDecimal foreignCurrencyBalance)
{
this.foreignCurrencyBalance = foreignCurrencyBalance;
}
public BigDecimal getForeignCurrencyBalance()
{
return foreignCurrencyBalance;
}
public void setWeightThreshold(BigDecimal weightThreshold)
{
this.weightThreshold = weightThreshold;
}
public BigDecimal getWeightThreshold()
{
return weightThreshold;
}
public void setThrowRatio(BigDecimal throwRatio)
{
this.throwRatio = throwRatio;
}
public BigDecimal getThrowRatio()
{
return throwRatio;
}
public void setCreditEd(BigDecimal creditEd)
{
this.creditEd = creditEd;
}
public BigDecimal getCreditEd()
{
return creditEd;
}
public void setProductIds(String productIds)
{
this.productIds = productIds;
}
public String getProductIds()
{
return productIds;
}
public void setAttachmentList(List<BmsCustomerAttachment> attachmentList)
{
this.attachmentList = attachmentList;
}
public List<BmsCustomerAttachment> getAttachmentList()
{
return attachmentList;
}
public void setCompanyList(List<BmsCustomerCompany> companyList)
{
this.companyList = companyList;
}
public List<BmsCustomerCompany> getCompanyList()
{
return companyList;
}
public void setDelFlag(String delFlag)
{
this.delFlag = delFlag;
}
public String getDelFlag()
{
return delFlag;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("customerId", getCustomerId())
.append("customerCode", getCustomerCode())
.append("customerName", getCustomerName())
.append("customerCodeDw", getCustomerCodeDw())
.append("creditCode", getCreditCode())
.append("customerType", getCustomerType())
.append("isEnable", getIsEnable())
.append("salesUserId", getSalesUserId())
.append("salesUser", getSalesUser())
.append("ed", getEd())
.append("zq", getZq())
.append("settlementUserId", getSettlementUserId())
.append("settlementUser", getSettlementUser())
.append("serviceUserId", getServiceUserId())
.append("serviceUser", getServiceUser())
.append("settlementType", getSettlementType())
.append("tempEd", getTempEd())
.append("accountBalance", getAccountBalance())
.append("foreignCurrencyBalance", getForeignCurrencyBalance())
.append("weightThreshold", getWeightThreshold())
.append("throwRatio", getThrowRatio())
.append("creditEd", getCreditEd())
.append("productIds", getProductIds())
.append("attachmentList", getAttachmentList())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.toString();
}
}
@@ -0,0 +1,190 @@
package com.ruoyi.customer.customerinfo.domain;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 客户附件对象 bms_customer_attachment
*
* @author ruoyi
* @date 2026-09-08
*/
@Getter
@Setter
public class BmsCustomerAttachment extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 附件ID */
private Long attachmentId;
/** 所属客户ID或供应商ID(UUID) */
private String customerId;
/** 文件原始名称 */
@Excel(name = "文件名称")
private String fileName;
/** 文件存储路径 */
private String filePath;
/** 文件大小(字节) */
@Excel(name = "文件大小")
private Long fileSize;
/** 文件类型 */
private String fileType;
/** 文件扩展名 */
@Excel(name = "文件扩展名")
private String fileExtension;
/** 附件类型(0附件资料 1客户Logo 2合同文件 3其他) */
@Excel(name = "附件类型", readConverterExp = "0=附件资料,1=客户Logo,2=合同文件,3=其他")
private String attachmentType;
/** 是否Logo(0否 1是) */
private String isLogo;
/** 排序 */
@Excel(name = "排序")
private Integer sortOrder;
/** 备注 */
private String remark;
/** 删除标记(0正常 2删除) */
private String delFlag;
public void setAttachmentId(Long attachmentId)
{
this.attachmentId = attachmentId;
}
public Long getAttachmentId()
{
return attachmentId;
}
public void setCustomerId(String customerId)
{
this.customerId = customerId;
}
public String getCustomerId()
{
return customerId;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getFileName()
{
return fileName;
}
public void setFilePath(String filePath)
{
this.filePath = filePath;
}
public String getFilePath()
{
return filePath;
}
public void setFileSize(Long fileSize)
{
this.fileSize = fileSize;
}
public Long getFileSize()
{
return fileSize;
}
public void setFileType(String fileType)
{
this.fileType = fileType;
}
public String getFileType()
{
return fileType;
}
public void setFileExtension(String fileExtension)
{
this.fileExtension = fileExtension;
}
public String getFileExtension()
{
return fileExtension;
}
public void setAttachmentType(String attachmentType)
{
this.attachmentType = attachmentType;
}
public String getAttachmentType()
{
return attachmentType;
}
public void setIsLogo(String isLogo)
{
this.isLogo = isLogo;
}
public String getIsLogo()
{
return isLogo;
}
public void setSortOrder(Integer sortOrder)
{
this.sortOrder = sortOrder;
}
public Integer getSortOrder()
{
return sortOrder;
}
public void setRemark(String remark)
{
this.remark = remark;
}
@Override
public String toString()
{
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("attachmentId", getAttachmentId())
.append("customerId", getCustomerId())
.append("fileName", getFileName())
.append("filePath", getFilePath())
.append("fileSize", getFileSize())
.append("fileType", getFileType())
.append("fileExtension", getFileExtension())
.append("attachmentType", getAttachmentType())
.append("isLogo", getIsLogo())
.append("sortOrder", getSortOrder())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.toString();
}
}
@@ -0,0 +1,207 @@
package com.ruoyi.customer.customerinfo.domain;
import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 客户公司主体对象 bms_customer_company
*
* @author ruoyi
* @date 2026-09-09
*/
public class BmsCustomerCompany extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 公司主体ID */
private Long companyId;
/** 所属客户ID或供应商ID(UUID) */
private String customerId;
/** 公司全称 */
@Excel(name = "公司全称")
private String companyNameFull;
/** 公司英文名称 */
private String englishName;
/** 统一社会信用代码 */
@Excel(name = "统一社会信用代码")
private String creditCode;
/** 法定代表人 */
@Excel(name = "法定代表人")
private String legalPerson;
/** 法定代表人电话 */
private String legalPersonPhone;
/** 法定代表人身份证号(加密存储) */
private String legalPersonIdCard;
/** 注册资本(万元) */
@Excel(name = "注册资本")
private BigDecimal registeredCapital;
/** 注册资本币种 */
private String capitalCurrency;
/** 实收资本(万元) */
private BigDecimal paidInCapital;
/** 成立日期 */
private Date establishDate;
/** 营业期限起始日 */
private Date businessTermStart;
/** 营业期限终止日 */
private Date businessTermEnd;
/** 是否长期有效(0否 1是) */
private String businessTermPermanent;
/** 登记机关 */
private String registrationAuthority;
/** 注册号 */
private String registrationNumber;
/** 经营状态 */
private String operatingStatus;
/** 经营范围 */
private String businessScope;
/** 主要股东信息 */
private String shareholders;
/** 员工人数 */
private Integer employeeCount;
/** 公司电话 */
private String companyPhone;
/** 公司传真 */
private String companyFax;
/** 公司网址 */
private String companyWebsite;
/** 公司邮箱 */
private String companyEmail;
/** 注册省份 */
private String registeredProvince;
/** 注册城市 */
private String registeredCity;
/** 注册区县 */
private String registeredDistrict;
/** 注册详细地址 */
private String registeredAddressDetail;
/** 营业执照 oss_id */
private Long businessLicenseOssId;
/** 其他附件 oss_id 逗号分隔 */
private String attachmentIds;
/** 备注 */
private String remark;
/** 删除标记 */
private String delFlag;
public void setCompanyId(Long companyId) { this.companyId = companyId; }
public Long getCompanyId() { return companyId; }
public void setCustomerId(String customerId) { this.customerId = customerId; }
public String getCustomerId() { return customerId; }
public void setCompanyNameFull(String companyNameFull) { this.companyNameFull = companyNameFull; }
public String getCompanyNameFull() { return companyNameFull; }
public void setEnglishName(String englishName) { this.englishName = englishName; }
public String getEnglishName() { return englishName; }
public void setCreditCode(String creditCode) { this.creditCode = creditCode; }
public String getCreditCode() { return creditCode; }
public void setLegalPerson(String legalPerson) { this.legalPerson = legalPerson; }
public String getLegalPerson() { return legalPerson; }
public void setLegalPersonPhone(String legalPersonPhone) { this.legalPersonPhone = legalPersonPhone; }
public String getLegalPersonPhone() { return legalPersonPhone; }
public void setLegalPersonIdCard(String legalPersonIdCard) { this.legalPersonIdCard = legalPersonIdCard; }
public String getLegalPersonIdCard() { return legalPersonIdCard; }
public void setRegisteredCapital(BigDecimal registeredCapital) { this.registeredCapital = registeredCapital; }
public BigDecimal getRegisteredCapital() { return registeredCapital; }
public void setCapitalCurrency(String capitalCurrency) { this.capitalCurrency = capitalCurrency; }
public String getCapitalCurrency() { return capitalCurrency; }
public void setPaidInCapital(BigDecimal paidInCapital) { this.paidInCapital = paidInCapital; }
public BigDecimal getPaidInCapital() { return paidInCapital; }
public void setEstablishDate(Date establishDate) { this.establishDate = establishDate; }
public Date getEstablishDate() { return establishDate; }
public void setBusinessTermStart(Date businessTermStart) { this.businessTermStart = businessTermStart; }
public Date getBusinessTermStart() { return businessTermStart; }
public void setBusinessTermEnd(Date businessTermEnd) { this.businessTermEnd = businessTermEnd; }
public Date getBusinessTermEnd() { return businessTermEnd; }
public void setBusinessTermPermanent(String businessTermPermanent) { this.businessTermPermanent = businessTermPermanent; }
public String getBusinessTermPermanent() { return businessTermPermanent; }
public void setRegistrationAuthority(String registrationAuthority) { this.registrationAuthority = registrationAuthority; }
public String getRegistrationAuthority() { return registrationAuthority; }
public void setRegistrationNumber(String registrationNumber) { this.registrationNumber = registrationNumber; }
public String getRegistrationNumber() { return registrationNumber; }
public void setOperatingStatus(String operatingStatus) { this.operatingStatus = operatingStatus; }
public String getOperatingStatus() { return operatingStatus; }
public void setBusinessScope(String businessScope) { this.businessScope = businessScope; }
public String getBusinessScope() { return businessScope; }
public void setShareholders(String shareholders) { this.shareholders = shareholders; }
public String getShareholders() { return shareholders; }
public void setEmployeeCount(Integer employeeCount) { this.employeeCount = employeeCount; }
public Integer getEmployeeCount() { return employeeCount; }
public void setCompanyPhone(String companyPhone) { this.companyPhone = companyPhone; }
public String getCompanyPhone() { return companyPhone; }
public void setCompanyFax(String companyFax) { this.companyFax = companyFax; }
public String getCompanyFax() { return companyFax; }
public void setCompanyWebsite(String companyWebsite) { this.companyWebsite = companyWebsite; }
public String getCompanyWebsite() { return companyWebsite; }
public void setCompanyEmail(String companyEmail) { this.companyEmail = companyEmail; }
public String getCompanyEmail() { return companyEmail; }
public void setRegisteredProvince(String registeredProvince) { this.registeredProvince = registeredProvince; }
public String getRegisteredProvince() { return registeredProvince; }
public void setRegisteredCity(String registeredCity) { this.registeredCity = registeredCity; }
public String getRegisteredCity() { return registeredCity; }
public void setRegisteredDistrict(String registeredDistrict) { this.registeredDistrict = registeredDistrict; }
public String getRegisteredDistrict() { return registeredDistrict; }
public void setRegisteredAddressDetail(String registeredAddressDetail) { this.registeredAddressDetail = registeredAddressDetail; }
public String getRegisteredAddressDetail() { return registeredAddressDetail; }
public void setBusinessLicenseOssId(Long businessLicenseOssId) { this.businessLicenseOssId = businessLicenseOssId; }
public Long getBusinessLicenseOssId() { return businessLicenseOssId; }
public void setAttachmentIds(String attachmentIds) { this.attachmentIds = attachmentIds; }
public String getAttachmentIds() { return attachmentIds; }
public void setRemark(String remark) { this.remark = remark; }
public String getRemark() { return remark; }
public void setDelFlag(String delFlag) { this.delFlag = delFlag; }
public String getDelFlag() { return delFlag; }
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("companyId", getCompanyId())
.append("customerId", getCustomerId())
.append("companyNameFull", getCompanyNameFull())
.append("englishName", getEnglishName())
.append("creditCode", getCreditCode())
.append("legalPerson", getLegalPerson())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.toString();
}
}
@@ -0,0 +1,133 @@
package com.ruoyi.customer.customerinfo.mapper;
import java.util.List;
import com.ruoyi.customer.customerinfo.domain.BmsCustomer;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
/**
* 客户主Mapper接口
*
* @author ruoyi
* @date 2026-09-08
*/
public interface BmsCustomerMapper
{
/**
* 查询客户主
*
* @param customerId 客户主主键
* @return 客户主
*/
public BmsCustomer selectBmsCustomerByCustomerId(String customerId);
/**
* 查询客户主列表
*
* @param bmsCustomer 客户主
* @return 客户主集合
*/
public List<BmsCustomer> selectBmsCustomerList(BmsCustomer bmsCustomer);
/**
* 新增客户主
*
* @param bmsCustomer 客户主
* @return 结果
*/
public int insertBmsCustomer(BmsCustomer bmsCustomer);
/**
* 修改客户主
*
* @param bmsCustomer 客户主
* @return 结果
*/
public int updateBmsCustomer(BmsCustomer bmsCustomer);
/**
* 删除客户主
*
* @param customerId 客户主主键
* @return 结果
*/
public int deleteBmsCustomerByCustomerId(String customerId);
/**
* 批量删除客户主
*
* @param customerIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteBmsCustomerByCustomerIds(String[] customerIds);
/**
* 查询客户附件列表
*
* @param bmsCustomerAttachment 客户附件
* @return 客户附件集合
*/
public List<BmsCustomerAttachment> selectBmsCustomerAttachmentList(BmsCustomerAttachment bmsCustomerAttachment);
/**
* 新增客户附件
*
* @param bmsCustomerAttachment 客户附件
* @return 结果
*/
public int insertBmsCustomerAttachment(BmsCustomerAttachment bmsCustomerAttachment);
/**
* 修改客户附件
*
* @param bmsCustomerAttachment 客户附件
* @return 结果
*/
public int updateBmsCustomerAttachment(BmsCustomerAttachment bmsCustomerAttachment);
/**
* 按客户ID删除附件
*
* @param customerId 客户主键
* @return 结果
*/
public int deleteBmsCustomerAttachmentByCustomerId(String customerId);
/**
* 批量删除客户附件
*
* @param attachmentIds 附件ID集合
* @return 结果
*/
public int deleteBmsCustomerAttachmentByAttachmentIds(Long[] attachmentIds);
/**
* 查询客户公司主体列表
*/
public List<BmsCustomerCompany> selectBmsCustomerCompanyList(BmsCustomerCompany bmsCustomerCompany);
/**
* 按ID查询客户公司主体
*/
public BmsCustomerCompany selectBmsCustomerCompanyByCompanyId(Long companyId);
/**
* 新增客户公司主体
*/
public int insertBmsCustomerCompany(BmsCustomerCompany bmsCustomerCompany);
/**
* 修改客户公司主体
*/
public int updateBmsCustomerCompany(BmsCustomerCompany bmsCustomerCompany);
/**
* 按客户ID删除公司主体(逻辑删除)
*/
public int deleteBmsCustomerCompanyByCustomerId(String customerId);
/**
* 按公司ID删除(逻辑删除)
*/
public int deleteBmsCustomerCompanyByCompanyId(Long companyId);
}
@@ -0,0 +1,117 @@
package com.ruoyi.customer.customerinfo.service;
import java.util.List;
import com.ruoyi.customer.customerinfo.domain.BmsCustomer;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
/**
* 客户主Service接口
*
* @author ruoyi
* @date 2026-09-08
*/
public interface IBmsCustomerService
{
/**
* 查询客户主
*
* @param customerId 客户主主键
* @return 客户主
*/
public BmsCustomer selectBmsCustomerByCustomerId(String customerId);
/**
* 查询客户主列表
*
* @param bmsCustomer 客户主
* @return 客户主集合
*/
public List<BmsCustomer> selectBmsCustomerList(BmsCustomer bmsCustomer);
/**
* 查询客户附件列表
*
* @param bmsCustomerAttachment 客户附件
* @return 客户附件集合
*/
public List<BmsCustomerAttachment> selectBmsCustomerAttachmentList(BmsCustomerAttachment bmsCustomerAttachment);
/**
* 批量保存客户附件(新增/修改)
*
* @param customerId 客户ID
* @param attachmentList 附件集合
*/
public void saveBmsCustomerAttachments(String customerId, List<BmsCustomerAttachment> attachmentList);
/**
* 按客户ID删除附件
*
* @param customerId 客户ID
* @return 结果
*/
public int deleteBmsCustomerAttachmentByCustomerId(String customerId);
/**
* 查询客户公司主体列表
*/
public List<BmsCustomerCompany> selectBmsCustomerCompanyList(BmsCustomerCompany bmsCustomerCompany);
/**
* 按ID查询客户公司主体
*/
public BmsCustomerCompany selectBmsCustomerCompanyByCompanyId(Long companyId);
/**
* 新增客户公司主体(独立接口,用于子表新增按钮)
*/
public int insertBmsCustomerCompany(BmsCustomerCompany bmsCustomerCompany);
/**
* 修改客户公司主体
*/
public int updateBmsCustomerCompany(BmsCustomerCompany bmsCustomerCompany);
/**
* 删除客户公司主体
*/
public int deleteBmsCustomerCompanyByCompanyIds(Long[] companyIds);
/**
* 批量保存客户公司主体(随主表提交时调用)
*/
public void saveBmsCustomerCompanies(String customerId, List<BmsCustomerCompany> companyList);
/**
* 新增客户主
*
* @param bmsCustomer 客户主
* @return 结果
*/
public int insertBmsCustomer(BmsCustomer bmsCustomer);
/**
* 修改客户主
*
* @param bmsCustomer 客户主
* @return 结果
*/
public int updateBmsCustomer(BmsCustomer bmsCustomer);
/**
* 批量删除客户主
*
* @param customerIds 需要删除的客户主主键集合
* @return 结果
*/
public int deleteBmsCustomerByCustomerIds(String[] customerIds);
/**
* 删除客户主信息
*
* @param customerId 客户主主键
* @return 结果
*/
public int deleteBmsCustomerByCustomerId(String customerId);
}
@@ -0,0 +1,289 @@
package com.ruoyi.customer.customerinfo.service.impl;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.customer.customerinfo.mapper.BmsCustomerMapper;
import com.ruoyi.customer.customerinfo.domain.BmsCustomer;
import com.ruoyi.customer.customerinfo.service.IBmsCustomerService;
/**
* 客户主Service业务层处理
*
* @author ruoyi
* @date 2026-09-08
*/
@Service
public class BmsCustomerServiceImpl implements IBmsCustomerService
{
@Autowired
private BmsCustomerMapper bmsCustomerMapper;
/**
* 查询客户主
*
* @param customerId 客户主主键
* @return 客户主
*/
@Override
public BmsCustomer selectBmsCustomerByCustomerId(String customerId)
{
BmsCustomer bmsCustomer = bmsCustomerMapper.selectBmsCustomerByCustomerId(customerId);
if (bmsCustomer != null)
{
BmsCustomerAttachment query = new BmsCustomerAttachment();
query.setCustomerId(customerId);
bmsCustomer.setAttachmentList(bmsCustomerMapper.selectBmsCustomerAttachmentList(query));
BmsCustomerCompany companyQuery = new BmsCustomerCompany();
companyQuery.setCustomerId(customerId);
bmsCustomer.setCompanyList(bmsCustomerMapper.selectBmsCustomerCompanyList(companyQuery));
}
return bmsCustomer;
}
/**
* 查询客户主列表
*
* @param bmsCustomer 客户主
* @return 客户主
*/
@Override
public List<BmsCustomer> selectBmsCustomerList(BmsCustomer bmsCustomer)
{
return bmsCustomerMapper.selectBmsCustomerList(bmsCustomer);
}
//查询附件子表数据
@Override
public List<BmsCustomerAttachment> selectBmsCustomerAttachmentList(BmsCustomerAttachment bmsCustomerAttachment) {
return bmsCustomerMapper.selectBmsCustomerAttachmentList(bmsCustomerAttachment);
}
/**
* 批量保存客户附件(新增/修改)
*/
@Override
public void saveBmsCustomerAttachments(String customerId, List<BmsCustomerAttachment> attachmentList)
{
if (attachmentList == null || attachmentList.isEmpty())
{
return;
}
SysUser user = SecurityUtils.getLoginUser().getUser();
for (BmsCustomerAttachment item : attachmentList)
{
item.setCustomerId(customerId);
if (item.getDelFlag() == null)
{
item.setDelFlag("0");
}
if (item.getAttachmentId() != null)
{
item.setUpdateBy(user.getUserName());
item.setUpdateTime(DateUtils.getNowDate());
bmsCustomerMapper.updateBmsCustomerAttachment(item);
}
else
{
item.setCreateBy(user.getUserName());
item.setCreateTime(DateUtils.getNowDate());
bmsCustomerMapper.insertBmsCustomerAttachment(item);
}
}
}
/**
* 按客户ID删除附件(逻辑删除)
*/
@Override
public int deleteBmsCustomerAttachmentByCustomerId(String customerId)
{
return bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(customerId);
}
/**
* 查询客户公司主体列表
*/
@Override
public List<BmsCustomerCompany> selectBmsCustomerCompanyList(BmsCustomerCompany bmsCustomerCompany)
{
return bmsCustomerMapper.selectBmsCustomerCompanyList(bmsCustomerCompany);
}
/**
* 按ID查询客户公司主体
*/
@Override
public BmsCustomerCompany selectBmsCustomerCompanyByCompanyId(Long companyId)
{
return bmsCustomerMapper.selectBmsCustomerCompanyByCompanyId(companyId);
}
/**
* 新增客户公司主体
*/
@Override
public int insertBmsCustomerCompany(BmsCustomerCompany bmsCustomerCompany)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
bmsCustomerCompany.setCreateBy(user.getUserName());
bmsCustomerCompany.setCreateTime(DateUtils.getNowDate());
if (bmsCustomerCompany.getDelFlag() == null)
{
bmsCustomerCompany.setDelFlag("0");
}
return bmsCustomerMapper.insertBmsCustomerCompany(bmsCustomerCompany);
}
/**
* 修改客户公司主体
*/
@Override
public int updateBmsCustomerCompany(BmsCustomerCompany bmsCustomerCompany)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
bmsCustomerCompany.setUpdateBy(user.getUserName());
bmsCustomerCompany.setUpdateTime(DateUtils.getNowDate());
return bmsCustomerMapper.updateBmsCustomerCompany(bmsCustomerCompany);
}
/**
* 删除客户公司主体(逻辑删除)
*/
@Override
public int deleteBmsCustomerCompanyByCompanyIds(Long[] companyIds)
{
int rows = 0;
for (Long companyId : companyIds)
{
rows += bmsCustomerMapper.deleteBmsCustomerCompanyByCompanyId(companyId);
}
return rows;
}
/**
* 批量保存客户公司主体(随主表提交)
*/
@Override
public void saveBmsCustomerCompanies(String customerId, List<BmsCustomerCompany> companyList)
{
if (companyList == null || companyList.isEmpty())
{
return;
}
SysUser user = SecurityUtils.getLoginUser().getUser();
for (BmsCustomerCompany item : companyList)
{
item.setCustomerId(customerId);
if (item.getDelFlag() == null)
{
item.setDelFlag("0");
}
if (item.getCompanyId() != null)
{
item.setUpdateBy(user.getUserName());
item.setUpdateTime(DateUtils.getNowDate());
bmsCustomerMapper.updateBmsCustomerCompany(item);
}
else
{
item.setCreateBy(user.getUserName());
item.setCreateTime(DateUtils.getNowDate());
bmsCustomerMapper.insertBmsCustomerCompany(item);
}
}
}
/**
* 新增客户主
*
* @param bmsCustomer 客户主
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int insertBmsCustomer(BmsCustomer bmsCustomer)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
// 应用层生成 UUID,避免与供应商主键在子表中冲突
bmsCustomer.setCustomerId(IdUtils.simpleUUID());
bmsCustomer.setCreateTime(DateUtils.getNowDate());
bmsCustomer.setCreateBy(user.getUserName());
int rows = bmsCustomerMapper.insertBmsCustomer(bmsCustomer);
if (rows > 0)
{
saveBmsCustomerAttachments(bmsCustomer.getCustomerId(), bmsCustomer.getAttachmentList());
saveBmsCustomerCompanies(bmsCustomer.getCustomerId(), bmsCustomer.getCompanyList());
}
return rows;
}
/**
* 修改客户主
*
* @param bmsCustomer 客户主
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int updateBmsCustomer(BmsCustomer bmsCustomer)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
bmsCustomer.setUpdateTime(DateUtils.getNowDate());
bmsCustomer.setUpdateBy(user.getUserName());
// 先逻辑删除原有附件,再按新列表重建(简化全量替换)
bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(bmsCustomer.getCustomerId());
if (bmsCustomer.getAttachmentList() != null)
{
for (BmsCustomerAttachment item : bmsCustomer.getAttachmentList())
{
item.setAttachmentId(null);
}
saveBmsCustomerAttachments(bmsCustomer.getCustomerId(), bmsCustomer.getAttachmentList());
}
// 公司主体表采用增量 upsert,不做全量重置(保留 companyId 稳定)
saveBmsCustomerCompanies(bmsCustomer.getCustomerId(), bmsCustomer.getCompanyList());
return bmsCustomerMapper.updateBmsCustomer(bmsCustomer);
}
/**
* 批量删除客户主
*
* @param customerIds 需要删除的客户主主键
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteBmsCustomerByCustomerIds(String[] customerIds)
{
for (String customerId : customerIds)
{
bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(customerId);
bmsCustomerMapper.deleteBmsCustomerCompanyByCustomerId(customerId);
}
return bmsCustomerMapper.deleteBmsCustomerByCustomerIds(customerIds);
}
/**
* 删除客户主信息
*
* @param customerId 客户主主键
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteBmsCustomerByCustomerId(String customerId)
{
bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(customerId);
bmsCustomerMapper.deleteBmsCustomerCompanyByCustomerId(customerId);
return bmsCustomerMapper.deleteBmsCustomerByCustomerId(customerId);
}
}
@@ -0,0 +1,225 @@
package com.ruoyi.customer.supplierinfo.domain;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
/**
* 供应商主对象 bms_supplier
*
* @author ruoyi
* @date 2026-09-09
*/
public class BmsSupplier extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 供应商ID(UUID) */
private String supplierId;
/** 供应商编码 */
@Excel(name = "供应商编码")
private String supplierCode;
/** 供应商名称 */
@Excel(name = "供应商名称")
private String supplierName;
/** 对外代码 */
@Excel(name = "对外代码")
private String supplierCodeDw;
/** 统一社会信用代码 */
@Excel(name = "统一社会信用代码")
private String creditCode;
/** 供应商类型(0生产商 1代理商 2个人 3物流商 4其他) */
@Excel(name = "供应商类型", readConverterExp = "0=生产商,1=代理商,2=个人,3=物流商,4=其他")
private String supplierType;
/** 启用状态(0正常 1停用) */
@Excel(name = "启用状态", readConverterExp = "0=正常,1=停用")
private String isEnable;
/** 采购员用户ID */
@Excel(name = "采购员用户ID")
private String purchaserUserId;
/** 采购员姓名 */
@Excel(name = "采购员姓名")
private String purchaserUser;
/** 结算员用户ID */
@Excel(name = "结算员用户ID")
private String settlementUserId;
/** 结算员姓名 */
@Excel(name = "结算员姓名")
private String settlementUser;
/** 跟单员用户ID */
@Excel(name = "跟单员用户ID")
private String serviceUserId;
/** 跟单员姓名 */
@Excel(name = "跟单员姓名")
private String serviceUser;
/** 应付额度(元) */
@Excel(name = "应付额度")
private BigDecimal ed;
/** 应付账期(天) */
@Excel(name = "应付账期")
private Long zq;
/** 结算方式(0月结 1周结 2日结 3票结) */
@Excel(name = "结算方式", readConverterExp = "0=月结,1=周结,2=日结,3=票结")
private String settlementType;
/** 临时额度(元) */
@Excel(name = "临时额度")
private BigDecimal tempEd;
/** 应付余额(元) */
@Excel(name = "应付余额")
private BigDecimal accountBalance;
/** 外币应付余额(元) */
@Excel(name = "外币应付余额")
private BigDecimal foreignCurrencyBalance;
/** 信用额度(元) */
@Excel(name = "信用额度")
private BigDecimal creditEd;
/** 重量阈值(kg) */
@Excel(name = "重量阈值")
private BigDecimal weightThreshold;
/** 抛比(%) */
@Excel(name = "抛比")
private BigDecimal throwRatio;
/** 合作开始日期 */
@Excel(name = "合作开始日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date cooperationStartDate;
/** 合作状态(0正常 1暂停 2终止) */
@Excel(name = "合作状态", readConverterExp = "0=正常,1=暂停,2=终止")
private String cooperationStatus;
/** 绑定的渠道/服务ID */
private String channelIds;
/** 附件列表(子表 bms_customer_attachment 共用) */
private List<BmsCustomerAttachment> attachmentList;
/** 公司主体列表(子表 bms_customer_company 共用) */
private List<BmsCustomerCompany> companyList;
/** 删除标记(0正常 2删除) */
private String delFlag;
public void setSupplierId(String supplierId) { this.supplierId = supplierId; }
public String getSupplierId() { return supplierId; }
public void setSupplierCode(String supplierCode) { this.supplierCode = supplierCode; }
public String getSupplierCode() { return supplierCode; }
public void setSupplierName(String supplierName) { this.supplierName = supplierName; }
public String getSupplierName() { return supplierName; }
public void setSupplierCodeDw(String supplierCodeDw) { this.supplierCodeDw = supplierCodeDw; }
public String getSupplierCodeDw() { return supplierCodeDw; }
public void setCreditCode(String creditCode) { this.creditCode = creditCode; }
public String getCreditCode() { return creditCode; }
public void setSupplierType(String supplierType) { this.supplierType = supplierType; }
public String getSupplierType() { return supplierType; }
public void setIsEnable(String isEnable) { this.isEnable = isEnable; }
public String getIsEnable() { return isEnable; }
public void setPurchaserUserId(String purchaserUserId) { this.purchaserUserId = purchaserUserId; }
public String getPurchaserUserId() { return purchaserUserId; }
public void setPurchaserUser(String purchaserUser) { this.purchaserUser = purchaserUser; }
public String getPurchaserUser() { return purchaserUser; }
public void setSettlementUserId(String settlementUserId) { this.settlementUserId = settlementUserId; }
public String getSettlementUserId() { return settlementUserId; }
public void setSettlementUser(String settlementUser) { this.settlementUser = settlementUser; }
public String getSettlementUser() { return settlementUser; }
public void setServiceUserId(String serviceUserId) { this.serviceUserId = serviceUserId; }
public String getServiceUserId() { return serviceUserId; }
public void setServiceUser(String serviceUser) { this.serviceUser = serviceUser; }
public String getServiceUser() { return serviceUser; }
public void setEd(BigDecimal ed) { this.ed = ed; }
public BigDecimal getEd() { return ed; }
public void setZq(Long zq) { this.zq = zq; }
public Long getZq() { return zq; }
public void setSettlementType(String settlementType) { this.settlementType = settlementType; }
public String getSettlementType() { return settlementType; }
public void setTempEd(BigDecimal tempEd) { this.tempEd = tempEd; }
public BigDecimal getTempEd() { return tempEd; }
public void setAccountBalance(BigDecimal accountBalance) { this.accountBalance = accountBalance; }
public BigDecimal getAccountBalance() { return accountBalance; }
public void setForeignCurrencyBalance(BigDecimal foreignCurrencyBalance) { this.foreignCurrencyBalance = foreignCurrencyBalance; }
public BigDecimal getForeignCurrencyBalance() { return foreignCurrencyBalance; }
public void setCreditEd(BigDecimal creditEd) { this.creditEd = creditEd; }
public BigDecimal getCreditEd() { return creditEd; }
public void setWeightThreshold(BigDecimal weightThreshold) { this.weightThreshold = weightThreshold; }
public BigDecimal getWeightThreshold() { return weightThreshold; }
public void setThrowRatio(BigDecimal throwRatio) { this.throwRatio = throwRatio; }
public BigDecimal getThrowRatio() { return throwRatio; }
public void setCooperationStartDate(Date cooperationStartDate) { this.cooperationStartDate = cooperationStartDate; }
public Date getCooperationStartDate() { return cooperationStartDate; }
public void setCooperationStatus(String cooperationStatus) { this.cooperationStatus = cooperationStatus; }
public String getCooperationStatus() { return cooperationStatus; }
public void setChannelIds(String channelIds) { this.channelIds = channelIds; }
public String getChannelIds() { return channelIds; }
public void setAttachmentList(List<BmsCustomerAttachment> attachmentList) { this.attachmentList = attachmentList; }
public List<BmsCustomerAttachment> getAttachmentList() { return attachmentList; }
public void setCompanyList(List<BmsCustomerCompany> companyList) { this.companyList = companyList; }
public List<BmsCustomerCompany> getCompanyList() { return companyList; }
public void setDelFlag(String delFlag) { this.delFlag = delFlag; }
public String getDelFlag() { return delFlag; }
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("supplierId", getSupplierId())
.append("supplierCode", getSupplierCode())
.append("supplierName", getSupplierName())
.append("supplierCodeDw", getSupplierCodeDw())
.append("creditCode", getCreditCode())
.append("supplierType", getSupplierType())
.append("isEnable", getIsEnable())
.append("purchaserUserId", getPurchaserUserId())
.append("purchaserUser", getPurchaserUser())
.append("settlementUserId", getSettlementUserId())
.append("settlementUser", getSettlementUser())
.append("serviceUserId", getServiceUserId())
.append("serviceUser", getServiceUser())
.append("ed", getEd())
.append("zq", getZq())
.append("settlementType", getSettlementType())
.append("tempEd", getTempEd())
.append("accountBalance", getAccountBalance())
.append("foreignCurrencyBalance", getForeignCurrencyBalance())
.append("creditEd", getCreditEd())
.append("weightThreshold", getWeightThreshold())
.append("throwRatio", getThrowRatio())
.append("cooperationStartDate", getCooperationStartDate())
.append("cooperationStatus", getCooperationStatus())
.append("channelIds", getChannelIds())
.append("attachmentList", getAttachmentList())
.append("companyList", getCompanyList())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.toString();
}
}
@@ -0,0 +1,31 @@
package com.ruoyi.customer.supplierinfo.mapper;
import java.util.List;
import com.ruoyi.customer.supplierinfo.domain.BmsSupplier;
/**
* 供应商主Mapper接口
*
* @author ruoyi
* @date 2026-09-09
*/
public interface BmsSupplierMapper
{
/** 查询供应商 */
public BmsSupplier selectBmsSupplierBySupplierId(String supplierId);
/** 查询供应商列表 */
public List<BmsSupplier> selectBmsSupplierList(BmsSupplier bmsSupplier);
/** 新增供应商 */
public int insertBmsSupplier(BmsSupplier bmsSupplier);
/** 修改供应商 */
public int updateBmsSupplier(BmsSupplier bmsSupplier);
/** 删除供应商 */
public int deleteBmsSupplierBySupplierId(String supplierId);
/** 批量删除供应商 */
public int deleteBmsSupplierBySupplierIds(String[] supplierIds);
}
@@ -0,0 +1,39 @@
package com.ruoyi.customer.supplierinfo.service;
import java.util.List;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
import com.ruoyi.customer.supplierinfo.domain.BmsSupplier;
/**
* 供应商主Service接口
*
* @author ruoyi
* @date 2026-09-09
*/
public interface IBmsSupplierService
{
/** 查询供应商 */
public BmsSupplier selectBmsSupplierBySupplierId(String supplierId);
/** 查询供应商列表 */
public List<BmsSupplier> selectBmsSupplierList(BmsSupplier bmsSupplier);
/** 新增供应商 */
public int insertBmsSupplier(BmsSupplier bmsSupplier);
/** 修改供应商 */
public int updateBmsSupplier(BmsSupplier bmsSupplier);
/** 批量删除供应商 */
public int deleteBmsSupplierBySupplierIds(String[] supplierIds);
/** 删除供应商 */
public int deleteBmsSupplierBySupplierId(String supplierId);
/** 查询供应商附件列表(子表共用) */
public List<BmsCustomerAttachment> selectBmsSupplierAttachmentList(BmsCustomerAttachment attachment);
/** 查询供应商公司主体列表(子表共用) */
public List<BmsCustomerCompany> selectBmsSupplierCompanyList(BmsCustomerCompany company);
}
@@ -0,0 +1,194 @@
package com.ruoyi.customer.supplierinfo.service.impl;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
import com.ruoyi.customer.customerinfo.mapper.BmsCustomerMapper;
import com.ruoyi.customer.supplierinfo.domain.BmsSupplier;
import com.ruoyi.customer.supplierinfo.mapper.BmsSupplierMapper;
import com.ruoyi.customer.supplierinfo.service.IBmsSupplierService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 供应商主Service业务层处理
*
* @author ruoyi
* @date 2026-09-09
*/
@Service
public class BmsSupplierServiceImpl implements IBmsSupplierService
{
@Autowired
private BmsSupplierMapper bmsSupplierMapper;
/** 子表 Mapper 复用客户模块(bms_customer_attachment / bms_customer_company 物理表共用,customer_id 列实际存 supplier_id) */
@Autowired
private BmsCustomerMapper bmsCustomerMapper;
@Override
public BmsSupplier selectBmsSupplierBySupplierId(String supplierId)
{
BmsSupplier bmsSupplier = bmsSupplierMapper.selectBmsSupplierBySupplierId(supplierId);
if (bmsSupplier != null)
{
// 复用子表查询,customer_id 实际传入 supplier_id
BmsCustomerAttachment attachQuery = new BmsCustomerAttachment();
attachQuery.setCustomerId(supplierId);
bmsSupplier.setAttachmentList(bmsCustomerMapper.selectBmsCustomerAttachmentList(attachQuery));
BmsCustomerCompany companyQuery = new BmsCustomerCompany();
companyQuery.setCustomerId(supplierId);
bmsSupplier.setCompanyList(bmsCustomerMapper.selectBmsCustomerCompanyList(companyQuery));
}
return bmsSupplier;
}
@Override
public List<BmsSupplier> selectBmsSupplierList(BmsSupplier bmsSupplier)
{
return bmsSupplierMapper.selectBmsSupplierList(bmsSupplier);
}
@Override
public List<BmsCustomerAttachment> selectBmsSupplierAttachmentList(BmsCustomerAttachment attachment)
{
return bmsCustomerMapper.selectBmsCustomerAttachmentList(attachment);
}
@Override
public List<BmsCustomerCompany> selectBmsSupplierCompanyList(BmsCustomerCompany company)
{
return bmsCustomerMapper.selectBmsCustomerCompanyList(company);
}
/**
* 批量保存供应商附件(复用子表,把 supplierId 设置到 customerId 字段)
*/
private void saveBmsSupplierAttachments(String supplierId, List<BmsCustomerAttachment> attachmentList)
{
if (attachmentList == null || attachmentList.isEmpty())
{
return;
}
SysUser user = SecurityUtils.getLoginUser().getUser();
for (BmsCustomerAttachment item : attachmentList)
{
item.setCustomerId(supplierId);
if (item.getDelFlag() == null)
{
item.setDelFlag("0");
}
if (item.getAttachmentId() != null)
{
item.setUpdateBy(user.getUserName());
item.setUpdateTime(DateUtils.getNowDate());
bmsCustomerMapper.updateBmsCustomerAttachment(item);
}
else
{
item.setCreateBy(user.getUserName());
item.setCreateTime(DateUtils.getNowDate());
bmsCustomerMapper.insertBmsCustomerAttachment(item);
}
}
}
/**
* 批量保存供应商公司主体(复用子表,把 supplierId 设置到 customerId 字段)
*/
private void saveBmsSupplierCompanies(String supplierId, List<BmsCustomerCompany> companyList)
{
if (companyList == null || companyList.isEmpty())
{
return;
}
SysUser user = SecurityUtils.getLoginUser().getUser();
for (BmsCustomerCompany item : companyList)
{
item.setCustomerId(supplierId);
if (item.getDelFlag() == null)
{
item.setDelFlag("0");
}
if (item.getCompanyId() != null)
{
item.setUpdateBy(user.getUserName());
item.setUpdateTime(DateUtils.getNowDate());
bmsCustomerMapper.updateBmsCustomerCompany(item);
}
else
{
item.setCreateBy(user.getUserName());
item.setCreateTime(DateUtils.getNowDate());
bmsCustomerMapper.insertBmsCustomerCompany(item);
}
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public int insertBmsSupplier(BmsSupplier bmsSupplier)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
// 应用层生成 UUID,与客户 UUID 互不冲突,子表 customer_id 列可同时容纳两者
bmsSupplier.setSupplierId(IdUtils.simpleUUID());
bmsSupplier.setCreateTime(DateUtils.getNowDate());
bmsSupplier.setCreateBy(user.getUserName());
int rows = bmsSupplierMapper.insertBmsSupplier(bmsSupplier);
if (rows > 0)
{
saveBmsSupplierAttachments(bmsSupplier.getSupplierId(), bmsSupplier.getAttachmentList());
saveBmsSupplierCompanies(bmsSupplier.getSupplierId(), bmsSupplier.getCompanyList());
}
return rows;
}
@Transactional(rollbackFor = Exception.class)
@Override
public int updateBmsSupplier(BmsSupplier bmsSupplier)
{
SysUser user = SecurityUtils.getLoginUser().getUser();
bmsSupplier.setUpdateTime(DateUtils.getNowDate());
bmsSupplier.setUpdateBy(user.getUserName());
// 附件先逻辑删除再重建(与客户模块保持一致)
bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(bmsSupplier.getSupplierId());
if (bmsSupplier.getAttachmentList() != null)
{
for (BmsCustomerAttachment item : bmsSupplier.getAttachmentList())
{
item.setAttachmentId(null);
}
saveBmsSupplierAttachments(bmsSupplier.getSupplierId(), bmsSupplier.getAttachmentList());
}
// 公司主体采用增量 upsert
saveBmsSupplierCompanies(bmsSupplier.getSupplierId(), bmsSupplier.getCompanyList());
return bmsSupplierMapper.updateBmsSupplier(bmsSupplier);
}
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteBmsSupplierBySupplierIds(String[] supplierIds)
{
for (String supplierId : supplierIds)
{
bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(supplierId);
bmsCustomerMapper.deleteBmsCustomerCompanyByCustomerId(supplierId);
}
return bmsSupplierMapper.deleteBmsSupplierBySupplierIds(supplierIds);
}
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteBmsSupplierBySupplierId(String supplierId)
{
bmsCustomerMapper.deleteBmsCustomerAttachmentByCustomerId(supplierId);
bmsCustomerMapper.deleteBmsCustomerCompanyByCustomerId(supplierId);
return bmsSupplierMapper.deleteBmsSupplierBySupplierId(supplierId);
}
}