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

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,170 @@
package com.ruoyi.web.controller.customer.customerinfo;
import java.util.List;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment;
import com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.customer.customerinfo.domain.BmsCustomer;
import com.ruoyi.customer.customerinfo.service.IBmsCustomerService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 客户管理Controller
*
* @author ruoyi
* @date 2026-09-08
*/
@RestController
@RequestMapping("/customersupplier/customerinfo")
public class BmsCustomerController extends BaseController
{
@Autowired
private IBmsCustomerService bmsCustomerService;
/**
* 查询客户信息列表
*/
@PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:list')")
@GetMapping("/list")
public TableDataInfo list(BmsCustomer bmsCustomer)
{
startPage();
List<BmsCustomer> list = bmsCustomerService.selectBmsCustomerList(bmsCustomer);
return getDataTable(list);
}
/**
* 导出客户信息列表
*/
@PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:export')")
@Log(title = "客户信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BmsCustomer bmsCustomer)
{
List<BmsCustomer> list = bmsCustomerService.selectBmsCustomerList(bmsCustomer);
ExcelUtil<BmsCustomer> util = new ExcelUtil<BmsCustomer>(BmsCustomer.class);
util.exportExcel(response, list, "客户主数据");
}
/**
* 获取客户信息详细信息
*/
@PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:query')")
@GetMapping(value = "/{customerId}")
public AjaxResult getInfo(@PathVariable("customerId") String customerId)
{
return success(bmsCustomerService.selectBmsCustomerByCustomerId(customerId));
}
/**
* 新增客户信息
*/
@PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:add')")
@Log(title = "客户信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BmsCustomer bmsCustomer)
{
return toAjax(bmsCustomerService.insertBmsCustomer(bmsCustomer));
}
/**
* 修改客户信息
*/
@PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:edit')")
@Log(title = "客户信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BmsCustomer bmsCustomer)
{
return toAjax(bmsCustomerService.updateBmsCustomer(bmsCustomer));
}
/**
* 删除客户信息
*/
@PreAuthorize("@ss.hasPermi('customersupplier:customerinfo:remove')")
@Log(title = "客户信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{customerIds}")
public AjaxResult remove(@PathVariable String[] customerIds)
{
return toAjax(bmsCustomerService.deleteBmsCustomerByCustomerIds(customerIds));
}
/**
* 查看附件列表数据
*/
// @PreAuthorize("")
@GetMapping("/attachment/list")
public TableDataInfo showattachmentlist(BmsCustomerAttachment bmsCustomerAttachment)
{
startPage();
List<BmsCustomerAttachment> list = bmsCustomerService.selectBmsCustomerAttachmentList(bmsCustomerAttachment);
return getDataTable(list);
}
/**
* 查询客户公司主体列表
*/
@GetMapping("/company/list")
public TableDataInfo companyList(BmsCustomerCompany bmsCustomerCompany)
{
startPage();
List<BmsCustomerCompany> list = bmsCustomerService.selectBmsCustomerCompanyList(bmsCustomerCompany);
return getDataTable(list);
}
/**
* 获取客户公司主体详细信息
*/
@GetMapping("/company/{companyId}")
public AjaxResult getCompanyInfo(@PathVariable("companyId") Long companyId)
{
return success(bmsCustomerService.selectBmsCustomerCompanyByCompanyId(companyId));
}
/**
* 新增客户公司主体(可关联客户主表,可不关联)
*/
@Log(title = "客户公司主体", businessType = BusinessType.INSERT)
@PostMapping("/company")
public AjaxResult addCompany(@RequestBody BmsCustomerCompany bmsCustomerCompany)
{
return toAjax(bmsCustomerService.insertBmsCustomerCompany(bmsCustomerCompany));
}
/**
* 修改客户公司主体
*/
@Log(title = "客户公司主体", businessType = BusinessType.UPDATE)
@PutMapping("/company")
public AjaxResult editCompany(@RequestBody BmsCustomerCompany bmsCustomerCompany)
{
return toAjax(bmsCustomerService.updateBmsCustomerCompany(bmsCustomerCompany));
}
/**
* 删除客户公司主体
*/
@Log(title = "客户公司主体", businessType = BusinessType.DELETE)
@DeleteMapping("/company/{companyIds}")
public AjaxResult removeCompany(@PathVariable Long[] companyIds)
{
return toAjax(bmsCustomerService.deleteBmsCustomerCompanyByCompanyIds(companyIds));
}
}
@@ -0,0 +1,113 @@
package com.ruoyi.web.controller.customer.supplierinfo;
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;
import com.ruoyi.customer.supplierinfo.service.IBmsSupplierService;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
/**
* 供应商管理Controller
*
* @author ruoyi
* @date 2026-09-09
*/
@RestController
@RequestMapping("/customersupplier/supplierinfo")
public class BmsSupplierController extends BaseController
{
@Autowired
private IBmsSupplierService bmsSupplierService;
/** 查询供应商列表 */
@PreAuthorize("@ss.hasPermi('customersupplier:supplierinfo:list')")
@GetMapping("/list")
public TableDataInfo list(BmsSupplier bmsSupplier)
{
startPage();
List<BmsSupplier> list = bmsSupplierService.selectBmsSupplierList(bmsSupplier);
return getDataTable(list);
}
/** 导出供应商列表 */
@PreAuthorize("@ss.hasPermi('customersupplier:supplierinfo:export')")
@Log(title = "供应商信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, BmsSupplier bmsSupplier)
{
List<BmsSupplier> list = bmsSupplierService.selectBmsSupplierList(bmsSupplier);
ExcelUtil<BmsSupplier> util = new ExcelUtil<BmsSupplier>(BmsSupplier.class);
util.exportExcel(response, list, "供应商数据");
}
/** 获取供应商详细信息 */
@PreAuthorize("@ss.hasPermi('customersupplier:supplierinfo:query')")
@GetMapping(value = "/{supplierId}")
public AjaxResult getInfo(@PathVariable("supplierId") String supplierId)
{
return success(bmsSupplierService.selectBmsSupplierBySupplierId(supplierId));
}
/** 新增供应商 */
@PreAuthorize("@ss.hasPermi('customersupplier:supplierinfo:add')")
@Log(title = "供应商信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BmsSupplier bmsSupplier)
{
return toAjax(bmsSupplierService.insertBmsSupplier(bmsSupplier));
}
/** 修改供应商 */
@PreAuthorize("@ss.hasPermi('customersupplier:supplierinfo:edit')")
@Log(title = "供应商信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BmsSupplier bmsSupplier)
{
return toAjax(bmsSupplierService.updateBmsSupplier(bmsSupplier));
}
/** 删除供应商 */
@PreAuthorize("@ss.hasPermi('customersupplier:supplierinfo:remove')")
@Log(title = "供应商信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{supplierIds}")
public AjaxResult remove(@PathVariable String[] supplierIds)
{
return toAjax(bmsSupplierService.deleteBmsSupplierBySupplierIds(supplierIds));
}
/** 查看供应商附件列表(子表共用) */
@GetMapping("/attachment/list")
public TableDataInfo attachmentList(BmsCustomerAttachment bmsCustomerAttachment)
{
startPage();
List<BmsCustomerAttachment> list = bmsSupplierService.selectBmsSupplierAttachmentList(bmsCustomerAttachment);
return getDataTable(list);
}
/** 查看供应商公司主体列表(子表共用) */
@GetMapping("/company/list")
public TableDataInfo companyList(BmsCustomerCompany bmsCustomerCompany)
{
startPage();
List<BmsCustomerCompany> list = bmsSupplierService.selectBmsSupplierCompanyList(bmsCustomerCompany);
return getDataTable(list);
}
}
@@ -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);
}
}
@@ -0,0 +1,473 @@
<?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="com.ruoyi.customer.customerinfo.mapper.BmsCustomerMapper">
<resultMap type="BmsCustomer" id="BmsCustomerResult">
<result property="customerId" column="customer_id" />
<result property="customerCode" column="customer_code" />
<result property="customerName" column="customer_name" />
<result property="customerCodeDw" column="customer_code_dw" />
<result property="creditCode" column="credit_code" />
<result property="customerType" column="customer_type" />
<result property="isEnable" column="is_enable" />
<result property="salesUserId" column="sales_user_id" />
<result property="salesUser" column="sales_user" />
<result property="ed" column="ed" />
<result property="zq" column="zq" />
<result property="settlementUserId" column="settlement_user_id" />
<result property="settlementUser" column="settlement_user" />
<result property="serviceUserId" column="service_user_id" />
<result property="serviceUser" column="service_user" />
<result property="settlementType" column="settlement_type" />
<result property="tempEd" column="temp_ed" />
<result property="accountBalance" column="account_balance" />
<result property="foreignCurrencyBalance" column="foreign_currency_balance" />
<result property="weightThreshold" column="weight_threshold" />
<result property="throwRatio" column="throw_ratio" />
<result property="creditEd" column="credit_ed" />
<result property="productIds" column="product_ids" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectBmsCustomerVo">
select customer_id, customer_code, customer_name, customer_code_dw, credit_code, customer_type, is_enable, sales_user_id, sales_user, ed, zq, settlement_user_id, settlement_user, service_user_id, service_user, settlement_type, temp_ed, account_balance, foreign_currency_balance, weight_threshold, throw_ratio, credit_ed, product_ids, remark, create_by, create_time, update_by, update_time, del_flag from bms_customer
</sql>
<select id="selectBmsCustomerList" parameterType="BmsCustomer" resultMap="BmsCustomerResult">
<include refid="selectBmsCustomerVo"/>
<where>
<if test="customerCode != null and customerCode != ''"> and customer_code = #{customerCode}</if>
<if test="customerName != null and customerName != ''"> and customer_name like concat('%', #{customerName}, '%')</if>
<if test="customerCodeDw != null and customerCodeDw != ''"> and customer_code_dw = #{customerCodeDw}</if>
<if test="creditCode != null and creditCode != ''"> and credit_code = #{creditCode}</if>
<if test="customerType != null and customerType != ''"> and customer_type = #{customerType}</if>
<if test="isEnable != null and isEnable != ''"> and is_enable = #{isEnable}</if>
<if test="salesUserId != null and salesUserId != ''"> and sales_user_id = #{salesUserId}</if>
<if test="salesUser != null and salesUser != ''"> and sales_user = #{salesUser}</if>
<if test="ed != null "> and ed = #{ed}</if>
<if test="zq != null "> and zq = #{zq}</if>
<if test="settlementUserId != null and settlementUserId != ''"> and settlement_user_id = #{settlementUserId}</if>
<if test="settlementUser != null and settlementUser != ''"> and settlement_user = #{settlementUser}</if>
<if test="serviceUserId != null and serviceUserId != ''"> and service_user_id = #{serviceUserId}</if>
<if test="serviceUser != null and serviceUser != ''"> and service_user = #{serviceUser}</if>
<if test="settlementType != null and settlementType != ''"> and settlement_type = #{settlementType}</if>
<if test="tempEd != null "> and temp_ed = #{tempEd}</if>
<if test="accountBalance != null "> and account_balance = #{accountBalance}</if>
<if test="foreignCurrencyBalance != null "> and foreign_currency_balance = #{foreignCurrencyBalance}</if>
<if test="weightThreshold != null "> and weight_threshold = #{weightThreshold}</if>
<if test="throwRatio != null "> and throw_ratio = #{throwRatio}</if>
<if test="creditEd != null "> and credit_ed = #{creditEd}</if>
<if test="productIds != null and productIds != ''"> and product_ids = #{productIds}</if>
</where>
</select>
<select id="selectBmsCustomerByCustomerId" parameterType="String" resultMap="BmsCustomerResult">
<include refid="selectBmsCustomerVo"/>
where customer_id = #{customerId}
</select>
<resultMap type="com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment" id="BmsCustomerAttachmentResult">
<result property="attachmentId" column="attachment_id" />
<result property="customerId" column="customer_id" />
<result property="fileName" column="file_name" />
<result property="filePath" column="file_path" />
<result property="fileSize" column="file_size" />
<result property="fileType" column="file_type" />
<result property="fileExtension" column="file_extension" />
<result property="attachmentType" column="attachment_type" />
<result property="isLogo" column="is_logo" />
<result property="sortOrder" column="sort_order" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectBmsCustomerAttachmentVo">
select attachment_id, customer_id, file_name, file_path, file_size, file_type, file_extension, attachment_type, is_logo, sort_order, remark, create_by, create_time, update_by, update_time, del_flag from bms_customer_attachment
</sql>
<select id="selectBmsCustomerAttachmentList" parameterType="com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment" resultMap="BmsCustomerAttachmentResult">
<include refid="selectBmsCustomerAttachmentVo"/>
<where>
<if test="customerId != null "> and customer_id = #{customerId}</if>
<if test="fileName != null and fileName != ''"> and file_name like concat('%', #{fileName}, '%')</if>
<if test="attachmentType != null and attachmentType != ''"> and attachment_type = #{attachmentType}</if>
<if test="isLogo != null and isLogo != ''"> and is_logo = #{isLogo}</if>
and del_flag = '0'
</where>
order by sort_order asc
</select>
<insert id="insertBmsCustomerAttachment" parameterType="com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment" useGeneratedKeys="true" keyProperty="attachmentId">
insert into bms_customer_attachment
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="customerId != null">customer_id,</if>
<if test="fileName != null">file_name,</if>
<if test="filePath != null">file_path,</if>
<if test="fileSize != null">file_size,</if>
<if test="fileType != null">file_type,</if>
<if test="fileExtension != null">file_extension,</if>
<if test="attachmentType != null">attachment_type,</if>
<if test="isLogo != null">is_logo,</if>
<if test="sortOrder != null">sort_order,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="customerId != null">#{customerId},</if>
<if test="fileName != null">#{fileName},</if>
<if test="filePath != null">#{filePath},</if>
<if test="fileSize != null">#{fileSize},</if>
<if test="fileType != null">#{fileType},</if>
<if test="fileExtension != null">#{fileExtension},</if>
<if test="attachmentType != null">#{attachmentType},</if>
<if test="isLogo != null">#{isLogo},</if>
<if test="sortOrder != null">#{sortOrder},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
<update id="updateBmsCustomerAttachment" parameterType="com.ruoyi.customer.customerinfo.domain.BmsCustomerAttachment">
update bms_customer_attachment
<trim prefix="SET" suffixOverrides=",">
<if test="customerId != null">customer_id = #{customerId},</if>
<if test="fileName != null">file_name = #{fileName},</if>
<if test="filePath != null">file_path = #{filePath},</if>
<if test="fileSize != null">file_size = #{fileSize},</if>
<if test="fileType != null">file_type = #{fileType},</if>
<if test="fileExtension != null">file_extension = #{fileExtension},</if>
<if test="attachmentType != null">attachment_type = #{attachmentType},</if>
<if test="isLogo != null">is_logo = #{isLogo},</if>
<if test="sortOrder != null">sort_order = #{sortOrder},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where attachment_id = #{attachmentId}
</update>
<delete id="deleteBmsCustomerAttachmentByCustomerId" parameterType="String">
update bms_customer_attachment set del_flag = '2' where customer_id = #{customerId}
</delete>
<delete id="deleteBmsCustomerAttachmentByAttachmentIds" parameterType="String">
update bms_customer_attachment set del_flag = '2' where attachment_id in
<foreach item="attachmentId" collection="array" open="(" separator="," close=")">
#{attachmentId}
</foreach>
</delete>
<insert id="insertBmsCustomer" parameterType="BmsCustomer">
insert into bms_customer
<trim prefix="(" suffix=")" suffixOverrides=",">
customer_id,
<if test="customerCode != null and customerCode != ''">customer_code,</if>
<if test="customerName != null and customerName != ''">customer_name,</if>
<if test="customerCodeDw != null">customer_code_dw,</if>
<if test="creditCode != null">credit_code,</if>
<if test="customerType != null">customer_type,</if>
<if test="isEnable != null">is_enable,</if>
<if test="salesUserId != null">sales_user_id,</if>
<if test="salesUser != null">sales_user,</if>
<if test="ed != null">ed,</if>
<if test="zq != null">zq,</if>
<if test="settlementUserId != null">settlement_user_id,</if>
<if test="settlementUser != null">settlement_user,</if>
<if test="serviceUserId != null">service_user_id,</if>
<if test="serviceUser != null">service_user,</if>
<if test="settlementType != null">settlement_type,</if>
<if test="tempEd != null">temp_ed,</if>
<if test="accountBalance != null">account_balance,</if>
<if test="foreignCurrencyBalance != null">foreign_currency_balance,</if>
<if test="weightThreshold != null">weight_threshold,</if>
<if test="throwRatio != null">throw_ratio,</if>
<if test="creditEd != null">credit_ed,</if>
<if test="productIds != null">product_ids,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{customerId},
<if test="customerCode != null and customerCode != ''">#{customerCode},</if>
<if test="customerName != null and customerName != ''">#{customerName},</if>
<if test="customerCodeDw != null">#{customerCodeDw},</if>
<if test="creditCode != null">#{creditCode},</if>
<if test="customerType != null">#{customerType},</if>
<if test="isEnable != null">#{isEnable},</if>
<if test="salesUserId != null">#{salesUserId},</if>
<if test="salesUser != null">#{salesUser},</if>
<if test="ed != null">#{ed},</if>
<if test="zq != null">#{zq},</if>
<if test="settlementUserId != null">#{settlementUserId},</if>
<if test="settlementUser != null">#{settlementUser},</if>
<if test="serviceUserId != null">#{serviceUserId},</if>
<if test="serviceUser != null">#{serviceUser},</if>
<if test="settlementType != null">#{settlementType},</if>
<if test="tempEd != null">#{tempEd},</if>
<if test="accountBalance != null">#{accountBalance},</if>
<if test="foreignCurrencyBalance != null">#{foreignCurrencyBalance},</if>
<if test="weightThreshold != null">#{weightThreshold},</if>
<if test="throwRatio != null">#{throwRatio},</if>
<if test="creditEd != null">#{creditEd},</if>
<if test="productIds != null">#{productIds},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
<update id="updateBmsCustomer" parameterType="BmsCustomer">
update bms_customer
<trim prefix="SET" suffixOverrides=",">
<if test="customerCode != null and customerCode != ''">customer_code = #{customerCode},</if>
<if test="customerName != null and customerName != ''">customer_name = #{customerName},</if>
<if test="customerCodeDw != null">customer_code_dw = #{customerCodeDw},</if>
<if test="creditCode != null">credit_code = #{creditCode},</if>
<if test="customerType != null">customer_type = #{customerType},</if>
<if test="isEnable != null">is_enable = #{isEnable},</if>
<if test="salesUserId != null">sales_user_id = #{salesUserId},</if>
<if test="salesUser != null">sales_user = #{salesUser},</if>
<if test="ed != null">ed = #{ed},</if>
<if test="zq != null">zq = #{zq},</if>
<if test="settlementUserId != null">settlement_user_id = #{settlementUserId},</if>
<if test="settlementUser != null">settlement_user = #{settlementUser},</if>
<if test="serviceUserId != null">service_user_id = #{serviceUserId},</if>
<if test="serviceUser != null">service_user = #{serviceUser},</if>
<if test="settlementType != null">settlement_type = #{settlementType},</if>
<if test="tempEd != null">temp_ed = #{tempEd},</if>
<if test="accountBalance != null">account_balance = #{accountBalance},</if>
<if test="foreignCurrencyBalance != null">foreign_currency_balance = #{foreignCurrencyBalance},</if>
<if test="weightThreshold != null">weight_threshold = #{weightThreshold},</if>
<if test="throwRatio != null">throw_ratio = #{throwRatio},</if>
<if test="creditEd != null">credit_ed = #{creditEd},</if>
<if test="productIds != null">product_ids = #{productIds},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
</trim>
where customer_id = #{customerId}
</update>
<delete id="deleteBmsCustomerByCustomerId" parameterType="String">
delete from bms_customer where customer_id = #{customerId}
</delete>
<delete id="deleteBmsCustomerByCustomerIds" parameterType="String">
delete from bms_customer where customer_id in
<foreach item="customerId" collection="array" open="(" separator="," close=")">
#{customerId}
</foreach>
</delete>
<!-- ========== bms_customer_company 子表 ========== -->
<resultMap type="com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany" id="BmsCustomerCompanyResult">
<result property="companyId" column="company_id" />
<result property="customerId" column="customer_id" />
<result property="companyNameFull" column="company_name_full" />
<result property="englishName" column="english_name" />
<result property="creditCode" column="credit_code" />
<result property="legalPerson" column="legal_person" />
<result property="legalPersonPhone" column="legal_person_phone" />
<result property="legalPersonIdCard" column="legal_person_id_card" />
<result property="registeredCapital" column="registered_capital" />
<result property="capitalCurrency" column="capital_currency" />
<result property="paidInCapital" column="paid_in_capital" />
<result property="establishDate" column="establish_date" />
<result property="businessTermStart" column="business_term_start" />
<result property="businessTermEnd" column="business_term_end" />
<result property="businessTermPermanent" column="business_term_permanent" />
<result property="registrationAuthority" column="registration_authority" />
<result property="registrationNumber" column="registration_number" />
<result property="operatingStatus" column="operating_status" />
<result property="businessScope" column="business_scope" />
<result property="shareholders" column="shareholders" />
<result property="employeeCount" column="employee_count" />
<result property="companyPhone" column="company_phone" />
<result property="companyFax" column="company_fax" />
<result property="companyWebsite" column="company_website" />
<result property="companyEmail" column="company_email" />
<result property="registeredProvince" column="registered_province" />
<result property="registeredCity" column="registered_city" />
<result property="registeredDistrict" column="registered_district" />
<result property="registeredAddressDetail" column="registered_address_detail" />
<result property="businessLicenseOssId" column="business_license_oss_id" />
<result property="attachmentIds" column="attachment_ids" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectBmsCustomerCompanyVo">
select company_id, customer_id, company_name_full, english_name, credit_code, legal_person, legal_person_phone, legal_person_id_card, registered_capital, capital_currency, paid_in_capital, establish_date, business_term_start, business_term_end, business_term_permanent, registration_authority, registration_number, operating_status, business_scope, shareholders, employee_count, company_phone, company_fax, company_website, company_email, registered_province, registered_city, registered_district, registered_address_detail, business_license_oss_id, attachment_ids, remark, create_by, create_time, update_by, update_time, del_flag from bms_customer_company
</sql>
<select id="selectBmsCustomerCompanyList" parameterType="com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany" resultMap="BmsCustomerCompanyResult">
<include refid="selectBmsCustomerCompanyVo"/>
<where>
<if test="customerId != null"> and customer_id = #{customerId}</if>
<if test="companyNameFull != null and companyNameFull != ''"> and company_name_full like concat('%', #{companyNameFull}, '%')</if>
<if test="creditCode != null and creditCode != ''"> and credit_code = #{creditCode}</if>
<if test="legalPerson != null and legalPerson != ''"> and legal_person like concat('%', #{legalPerson}, '%')</if>
<if test="operatingStatus != null and operatingStatus != ''"> and operating_status = #{operatingStatus}</if>
and del_flag = '0'
</where>
order by company_id asc
</select>
<select id="selectBmsCustomerCompanyByCompanyId" parameterType="Long" resultMap="BmsCustomerCompanyResult">
<include refid="selectBmsCustomerCompanyVo"/>
where company_id = #{companyId} and del_flag = '0'
</select>
<insert id="insertBmsCustomerCompany" parameterType="com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany" useGeneratedKeys="true" keyProperty="companyId">
insert into bms_customer_company
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="customerId != null">customer_id,</if>
<if test="companyNameFull != null">company_name_full,</if>
<if test="englishName != null">english_name,</if>
<if test="creditCode != null">credit_code,</if>
<if test="legalPerson != null">legal_person,</if>
<if test="legalPersonPhone != null">legal_person_phone,</if>
<if test="legalPersonIdCard != null">legal_person_id_card,</if>
<if test="registeredCapital != null">registered_capital,</if>
<if test="capitalCurrency != null">capital_currency,</if>
<if test="paidInCapital != null">paid_in_capital,</if>
<if test="establishDate != null">establish_date,</if>
<if test="businessTermStart != null">business_term_start,</if>
<if test="businessTermEnd != null">business_term_end,</if>
<if test="businessTermPermanent != null">business_term_permanent,</if>
<if test="registrationAuthority != null">registration_authority,</if>
<if test="registrationNumber != null">registration_number,</if>
<if test="operatingStatus != null">operating_status,</if>
<if test="businessScope != null">business_scope,</if>
<if test="shareholders != null">shareholders,</if>
<if test="employeeCount != null">employee_count,</if>
<if test="companyPhone != null">company_phone,</if>
<if test="companyFax != null">company_fax,</if>
<if test="companyWebsite != null">company_website,</if>
<if test="companyEmail != null">company_email,</if>
<if test="registeredProvince != null">registered_province,</if>
<if test="registeredCity != null">registered_city,</if>
<if test="registeredDistrict != null">registered_district,</if>
<if test="registeredAddressDetail != null">registered_address_detail,</if>
<if test="businessLicenseOssId != null">business_license_oss_id,</if>
<if test="attachmentIds != null">attachment_ids,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="customerId != null">#{customerId},</if>
<if test="companyNameFull != null">#{companyNameFull},</if>
<if test="englishName != null">#{englishName},</if>
<if test="creditCode != null">#{creditCode},</if>
<if test="legalPerson != null">#{legalPerson},</if>
<if test="legalPersonPhone != null">#{legalPersonPhone},</if>
<if test="legalPersonIdCard != null">#{legalPersonIdCard},</if>
<if test="registeredCapital != null">#{registeredCapital},</if>
<if test="capitalCurrency != null">#{capitalCurrency},</if>
<if test="paidInCapital != null">#{paidInCapital},</if>
<if test="establishDate != null">#{establishDate},</if>
<if test="businessTermStart != null">#{businessTermStart},</if>
<if test="businessTermEnd != null">#{businessTermEnd},</if>
<if test="businessTermPermanent != null">#{businessTermPermanent},</if>
<if test="registrationAuthority != null">#{registrationAuthority},</if>
<if test="registrationNumber != null">#{registrationNumber},</if>
<if test="operatingStatus != null">#{operatingStatus},</if>
<if test="businessScope != null">#{businessScope},</if>
<if test="shareholders != null">#{shareholders},</if>
<if test="employeeCount != null">#{employeeCount},</if>
<if test="companyPhone != null">#{companyPhone},</if>
<if test="companyFax != null">#{companyFax},</if>
<if test="companyWebsite != null">#{companyWebsite},</if>
<if test="companyEmail != null">#{companyEmail},</if>
<if test="registeredProvince != null">#{registeredProvince},</if>
<if test="registeredCity != null">#{registeredCity},</if>
<if test="registeredDistrict != null">#{registeredDistrict},</if>
<if test="registeredAddressDetail != null">#{registeredAddressDetail},</if>
<if test="businessLicenseOssId != null">#{businessLicenseOssId},</if>
<if test="attachmentIds != null">#{attachmentIds},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
<update id="updateBmsCustomerCompany" parameterType="com.ruoyi.customer.customerinfo.domain.BmsCustomerCompany">
update bms_customer_company
<trim prefix="SET" suffixOverrides=",">
<if test="customerId != null">customer_id = #{customerId},</if>
<if test="companyNameFull != null">company_name_full = #{companyNameFull},</if>
<if test="englishName != null">english_name = #{englishName},</if>
<if test="creditCode != null">credit_code = #{creditCode},</if>
<if test="legalPerson != null">legal_person = #{legalPerson},</if>
<if test="legalPersonPhone != null">legal_person_phone = #{legalPersonPhone},</if>
<if test="legalPersonIdCard != null">legal_person_id_card = #{legalPersonIdCard},</if>
<if test="registeredCapital != null">registered_capital = #{registeredCapital},</if>
<if test="capitalCurrency != null">capital_currency = #{capitalCurrency},</if>
<if test="paidInCapital != null">paid_in_capital = #{paidInCapital},</if>
<if test="establishDate != null">establish_date = #{establishDate},</if>
<if test="businessTermStart != null">business_term_start = #{businessTermStart},</if>
<if test="businessTermEnd != null">business_term_end = #{businessTermEnd},</if>
<if test="businessTermPermanent != null">business_term_permanent = #{businessTermPermanent},</if>
<if test="registrationAuthority != null">registration_authority = #{registrationAuthority},</if>
<if test="registrationNumber != null">registration_number = #{registrationNumber},</if>
<if test="operatingStatus != null">operating_status = #{operatingStatus},</if>
<if test="businessScope != null">business_scope = #{businessScope},</if>
<if test="shareholders != null">shareholders = #{shareholders},</if>
<if test="employeeCount != null">employee_count = #{employeeCount},</if>
<if test="companyPhone != null">company_phone = #{companyPhone},</if>
<if test="companyFax != null">company_fax = #{companyFax},</if>
<if test="companyWebsite != null">company_website = #{companyWebsite},</if>
<if test="companyEmail != null">company_email = #{companyEmail},</if>
<if test="registeredProvince != null">registered_province = #{registeredProvince},</if>
<if test="registeredCity != null">registered_city = #{registeredCity},</if>
<if test="registeredDistrict != null">registered_district = #{registeredDistrict},</if>
<if test="registeredAddressDetail != null">registered_address_detail = #{registeredAddressDetail},</if>
<if test="businessLicenseOssId != null">business_license_oss_id = #{businessLicenseOssId},</if>
<if test="attachmentIds != null">attachment_ids = #{attachmentIds},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where company_id = #{companyId}
</update>
<delete id="deleteBmsCustomerCompanyByCustomerId" parameterType="String">
update bms_customer_company set del_flag = '2' where customer_id = #{customerId}
</delete>
<delete id="deleteBmsCustomerCompanyByCompanyId" parameterType="Long">
update bms_customer_company set del_flag = '2' where company_id = #{companyId}
</delete>
</mapper>
@@ -0,0 +1,181 @@
<?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="com.ruoyi.customer.supplierinfo.mapper.BmsSupplierMapper">
<resultMap type="BmsSupplier" id="BmsSupplierResult">
<result property="supplierId" column="supplier_id" />
<result property="supplierCode" column="supplier_code" />
<result property="supplierName" column="supplier_name" />
<result property="supplierCodeDw" column="supplier_code_dw" />
<result property="creditCode" column="credit_code" />
<result property="supplierType" column="supplier_type" />
<result property="isEnable" column="is_enable" />
<result property="purchaserUserId" column="purchaser_user_id" />
<result property="purchaserUser" column="purchaser_user" />
<result property="settlementUserId" column="settlement_user_id" />
<result property="settlementUser" column="settlement_user" />
<result property="serviceUserId" column="service_user_id" />
<result property="serviceUser" column="service_user" />
<result property="ed" column="ed" />
<result property="zq" column="zq" />
<result property="settlementType" column="settlement_type" />
<result property="tempEd" column="temp_ed" />
<result property="accountBalance" column="account_balance" />
<result property="foreignCurrencyBalance" column="foreign_currency_balance" />
<result property="creditEd" column="credit_ed" />
<result property="weightThreshold" column="weight_threshold" />
<result property="throwRatio" column="throw_ratio" />
<result property="cooperationStartDate" column="cooperation_start_date" />
<result property="cooperationStatus" column="cooperation_status" />
<result property="channelIds" column="channel_ids" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectBmsSupplierVo">
select supplier_id, supplier_code, supplier_name, supplier_code_dw, credit_code, supplier_type, is_enable, purchaser_user_id, purchaser_user, settlement_user_id, settlement_user, service_user_id, service_user, ed, zq, settlement_type, temp_ed, account_balance, foreign_currency_balance, credit_ed, weight_threshold, throw_ratio, cooperation_start_date, cooperation_status, channel_ids, remark, create_by, create_time, update_by, update_time, del_flag from bms_supplier
</sql>
<select id="selectBmsSupplierList" parameterType="BmsSupplier" resultMap="BmsSupplierResult">
<include refid="selectBmsSupplierVo"/>
<where>
<if test="supplierCode != null and supplierCode != ''"> and supplier_code = #{supplierCode}</if>
<if test="supplierName != null and supplierName != ''"> and supplier_name like concat('%', #{supplierName}, '%')</if>
<if test="supplierCodeDw != null and supplierCodeDw != ''"> and supplier_code_dw = #{supplierCodeDw}</if>
<if test="creditCode != null and creditCode != ''"> and credit_code = #{creditCode}</if>
<if test="supplierType != null and supplierType != ''"> and supplier_type = #{supplierType}</if>
<if test="isEnable != null and isEnable != ''"> and is_enable = #{isEnable}</if>
<if test="purchaserUserId != null and purchaserUserId != ''"> and purchaser_user_id = #{purchaserUserId}</if>
<if test="purchaserUser != null and purchaserUser != ''"> and purchaser_user = #{purchaserUser}</if>
<if test="settlementUserId != null and settlementUserId != ''"> and settlement_user_id = #{settlementUserId}</if>
<if test="settlementUser != null and settlementUser != ''"> and settlement_user = #{settlementUser}</if>
<if test="serviceUserId != null and serviceUserId != ''"> and service_user_id = #{serviceUserId}</if>
<if test="serviceUser != null and serviceUser != ''"> and service_user = #{serviceUser}</if>
<if test="cooperationStatus != null and cooperationStatus != ''"> and cooperation_status = #{cooperationStatus}</if>
</where>
</select>
<select id="selectBmsSupplierBySupplierId" parameterType="String" resultMap="BmsSupplierResult">
<include refid="selectBmsSupplierVo"/>
where supplier_id = #{supplierId}
</select>
<insert id="insertBmsSupplier" parameterType="BmsSupplier">
insert into bms_supplier
<trim prefix="(" suffix=")" suffixOverrides=",">
supplier_id,
<if test="supplierCode != null and supplierCode != ''">supplier_code,</if>
<if test="supplierName != null and supplierName != ''">supplier_name,</if>
<if test="supplierCodeDw != null">supplier_code_dw,</if>
<if test="creditCode != null">credit_code,</if>
<if test="supplierType != null">supplier_type,</if>
<if test="isEnable != null">is_enable,</if>
<if test="purchaserUserId != null">purchaser_user_id,</if>
<if test="purchaserUser != null">purchaser_user,</if>
<if test="settlementUserId != null">settlement_user_id,</if>
<if test="settlementUser != null">settlement_user,</if>
<if test="serviceUserId != null">service_user_id,</if>
<if test="serviceUser != null">service_user,</if>
<if test="ed != null">ed,</if>
<if test="zq != null">zq,</if>
<if test="settlementType != null">settlement_type,</if>
<if test="tempEd != null">temp_ed,</if>
<if test="accountBalance != null">account_balance,</if>
<if test="foreignCurrencyBalance != null">foreign_currency_balance,</if>
<if test="creditEd != null">credit_ed,</if>
<if test="weightThreshold != null">weight_threshold,</if>
<if test="throwRatio != null">throw_ratio,</if>
<if test="cooperationStartDate != null">cooperation_start_date,</if>
<if test="cooperationStatus != null">cooperation_status,</if>
<if test="channelIds != null">channel_ids,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{supplierId},
<if test="supplierCode != null and supplierCode != ''">#{supplierCode},</if>
<if test="supplierName != null and supplierName != ''">#{supplierName},</if>
<if test="supplierCodeDw != null">#{supplierCodeDw},</if>
<if test="creditCode != null">#{creditCode},</if>
<if test="supplierType != null">#{supplierType},</if>
<if test="isEnable != null">#{isEnable},</if>
<if test="purchaserUserId != null">#{purchaserUserId},</if>
<if test="purchaserUser != null">#{purchaserUser},</if>
<if test="settlementUserId != null">#{settlementUserId},</if>
<if test="settlementUser != null">#{settlementUser},</if>
<if test="serviceUserId != null">#{serviceUserId},</if>
<if test="serviceUser != null">#{serviceUser},</if>
<if test="ed != null">#{ed},</if>
<if test="zq != null">#{zq},</if>
<if test="settlementType != null">#{settlementType},</if>
<if test="tempEd != null">#{tempEd},</if>
<if test="accountBalance != null">#{accountBalance},</if>
<if test="foreignCurrencyBalance != null">#{foreignCurrencyBalance},</if>
<if test="creditEd != null">#{creditEd},</if>
<if test="weightThreshold != null">#{weightThreshold},</if>
<if test="throwRatio != null">#{throwRatio},</if>
<if test="cooperationStartDate != null">#{cooperationStartDate},</if>
<if test="cooperationStatus != null">#{cooperationStatus},</if>
<if test="channelIds != null">#{channelIds},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
<update id="updateBmsSupplier" parameterType="BmsSupplier">
update bms_supplier
<trim prefix="SET" suffixOverrides=",">
<if test="supplierCode != null and supplierCode != ''">supplier_code = #{supplierCode},</if>
<if test="supplierName != null and supplierName != ''">supplier_name = #{supplierName},</if>
<if test="supplierCodeDw != null">supplier_code_dw = #{supplierCodeDw},</if>
<if test="creditCode != null">credit_code = #{creditCode},</if>
<if test="supplierType != null">supplier_type = #{supplierType},</if>
<if test="isEnable != null">is_enable = #{isEnable},</if>
<if test="purchaserUserId != null">purchaser_user_id = #{purchaserUserId},</if>
<if test="purchaserUser != null">purchaser_user = #{purchaserUser},</if>
<if test="settlementUserId != null">settlement_user_id = #{settlementUserId},</if>
<if test="settlementUser != null">settlement_user = #{settlementUser},</if>
<if test="serviceUserId != null">service_user_id = #{serviceUserId},</if>
<if test="serviceUser != null">service_user = #{serviceUser},</if>
<if test="ed != null">ed = #{ed},</if>
<if test="zq != null">zq = #{zq},</if>
<if test="settlementType != null">settlement_type = #{settlementType},</if>
<if test="tempEd != null">temp_ed = #{tempEd},</if>
<if test="accountBalance != null">account_balance = #{accountBalance},</if>
<if test="foreignCurrencyBalance != null">foreign_currency_balance = #{foreignCurrencyBalance},</if>
<if test="creditEd != null">credit_ed = #{creditEd},</if>
<if test="weightThreshold != null">weight_threshold = #{weightThreshold},</if>
<if test="throwRatio != null">throw_ratio = #{throwRatio},</if>
<if test="cooperationStartDate != null">cooperation_start_date = #{cooperationStartDate},</if>
<if test="cooperationStatus != null">cooperation_status = #{cooperationStatus},</if>
<if test="channelIds != null">channel_ids = #{channelIds},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
</trim>
where supplier_id = #{supplierId}
</update>
<delete id="deleteBmsSupplierBySupplierId" parameterType="String">
delete from bms_supplier where supplier_id = #{supplierId}
</delete>
<delete id="deleteBmsSupplierBySupplierIds" parameterType="String">
delete from bms_supplier where supplier_id in
<foreach item="supplierId" collection="array" open="(" separator="," close=")">
#{supplierId}
</foreach>
</delete>
</mapper>
@@ -0,0 +1,55 @@
DROP TABLE IF EXISTS `bms_customer`;
CREATE TABLE `bms_customer` (
`customer_id` VARCHAR(32) NOT NULL AUTO_INCREMENT COMMENT '客户ID',
`customer_code` varchar(50) NOT NULL COMMENT '客户编码',
`customer_name` varchar(100) NOT NULL COMMENT '客户名称',
`customer_code_dw` varchar(50) DEFAULT '' COMMENT '对外代码',
`credit_code` varchar(18) DEFAULT '' COMMENT '统一社会信用代码',
-- 业务类型(字典:直客、同行、集运)
`customer_type` char(1) DEFAULT '0' COMMENT '业务类型(0直客 1同行 2集运)',
`is_enable` char(1) DEFAULT '0' COMMENT '启用状态(0正常 1停用)',
-- 销售归属
`sales_user_id` varchar(64) DEFAULT '' COMMENT '业务员用户ID',
`sales_user` varchar(50) DEFAULT '' COMMENT '业务员姓名',
-- 财务等信息
`ed` decimal(15,2) DEFAULT 0.00 COMMENT '资金额度(元)',
`zq` int(11) DEFAULT 0 COMMENT '回款账期(天)',
`settlement_user_id` varchar(64) DEFAULT '' COMMENT '结算员用户ID',
`settlement_user` varchar(50) DEFAULT '' COMMENT '结算员姓名',
`service_user_id` varchar(64) DEFAULT '' COMMENT '客服用户ID',
`service_user` varchar(50) DEFAULT '' COMMENT '客服姓名',
`settlement_type` char(1) DEFAULT '0' COMMENT '结算方式(0月结 1周结 2日结)',
`temp_ed` decimal(15,2) DEFAULT 0.00 COMMENT '临时额度(元)',
`account_balance` decimal(15,2) DEFAULT 0.00 COMMENT '账户余额(元)',
`foreign_currency_balance` decimal(15,2) DEFAULT 0.00 COMMENT '外币余额(元)',
`weight_threshold` decimal(15,2) DEFAULT 0.00 COMMENT '重量阈值(kg)',
`throw_ratio` decimal(15,2) DEFAULT 0.00 COMMENT '抛比(%)',
`credit_ed` decimal(15,2) DEFAULT 0.00 COMMENT '信用额度(元)',
`product_ids` varchar(1000) DEFAULT NULL COMMENT '绑定产品ID(多个产品ID用逗号分隔,支持批量操作)',
-- ========== 附件字段(新增) ==========
`logo_oss_id` bigint(20) DEFAULT NULL COMMENT '客户Logo(图片,关联sys_oss.oss_id)',
`attachment_ids` varchar(1000) DEFAULT NULL COMMENT '附件资料(多个oss_id用逗号分隔,支持PDF/图片/压缩包等)',
-- 备注
`remark` varchar(500) DEFAULT NULL COMMENT '备注说明',
-- 若依标准审计字段
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记(0正常 2删除)',
PRIMARY KEY (`customer_id`)
-- UNIQUE KEY `uk_customer_code` (`customer_code`),
-- UNIQUE KEY `uk_credit_code` (`credit_code`),
-- KEY `idx_sales_user_id` (`sales_user_id`),
-- KEY `idx_customer_type` (`customer_type`),
-- KEY `idx_is_enable` (`is_enable`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='客户主表';
@@ -0,0 +1,74 @@
-- 假设开发库表里无重要数据,直接 ALTER;如有数据需先备份迁移
-- 1) 客户主表
ALTER TABLE bms_customer MODIFY COLUMN customer_id varchar(32) NOT NULL COMMENT '客户ID(UUID)';
-- 2) 供应商主表
ALTER TABLE bms_supplier MODIFY COLUMN supplier_id varchar(32) NOT NULL COMMENT '供应商ID(UUID)';
select * from sys_menu
DROP TABLE IF EXISTS `bms_supplier`;
CREATE TABLE `bms_supplier` (
-- ========== 主键 ==========
`supplier_id` VARCHAR(32) NOT NULL AUTO_INCREMENT COMMENT '供应商ID',
-- ========== 供应商基本信息 ==========
`supplier_code` varchar(50) NOT NULL COMMENT '供应商编码',
`supplier_name` varchar(100) NOT NULL COMMENT '供应商名称',
`supplier_code_dw` varchar(50) DEFAULT '' COMMENT '对外代码',
`credit_code` varchar(18) DEFAULT '' COMMENT '统一社会信用代码',
-- ========== 业务类型(字典:生产商、代理商、个人、物流商等) ==========
`supplier_type` char(1) DEFAULT '0' COMMENT '供应商类型(0生产商 1代理商 2个人 3物流商 4其他)',
`is_enable` char(1) DEFAULT '0' COMMENT '启用状态(0正常 1停用)',
-- ========== 采购归属 ==========
`purchaser_user_id` varchar(64) DEFAULT '' COMMENT '采购员用户ID',
`purchaser_user` varchar(50) DEFAULT '' COMMENT '采购员姓名',
-- ========== 财务人员(采购侧) ==========
`settlement_user_id` varchar(64) DEFAULT '' COMMENT '结算员用户ID',
`settlement_user` varchar(50) DEFAULT '' COMMENT '结算员姓名',
`service_user_id` varchar(64) DEFAULT '' COMMENT '跟单员用户ID',
`service_user` varchar(50) DEFAULT '' COMMENT '跟单员姓名',
-- ========== 财务信息(应付侧) ==========
`ed` decimal(15,2) DEFAULT 0.00 COMMENT '应付额度(元)', -- 供应商侧:可欠款上限
`zq` int(11) DEFAULT 0 COMMENT '应付账期(天)', -- 供应商侧:付款账期
`settlement_type` char(1) DEFAULT '0' COMMENT '结算方式(0月结 1周结 2日结 3票结)',
`temp_ed` decimal(15,2) DEFAULT 0.00 COMMENT '临时额度(元)',
`account_balance` decimal(15,2) DEFAULT 0.00 COMMENT '应付余额(元)', -- 累计欠款余额(正数表示欠供应商的钱)
`foreign_currency_balance` decimal(15,2) DEFAULT 0.00 COMMENT '外币应付余额(元)', -- 外币欠款余额
`credit_ed` decimal(15,2) DEFAULT 0.00 COMMENT '信用额度(元)',
-- ========== 供应商特有字段 ==========
`weight_threshold` decimal(15,2) DEFAULT 0.00 COMMENT '重量阈值(kg)',
`throw_ratio` decimal(15,2) DEFAULT 0.00 COMMENT '抛比(%)',
`cooperation_start_date` date DEFAULT NULL COMMENT '合作开始日期',
`cooperation_status` char(1) DEFAULT '0' COMMENT '合作状态(0正常 1暂停 2终止)',
-- ========== 绑定的产品/服务 ==========
`channel_ids` varchar(1000) DEFAULT NULL COMMENT '绑定的渠道/服务ID(多个用逗号分隔)',
-- ========== 备注 ==========
`remark` varchar(500) DEFAULT NULL COMMENT '备注说明',
-- ========== 若依标准审计字段 ==========
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标记(0正常 2删除)',
-- ========== 主键 & 索引 ==========
PRIMARY KEY (`supplier_id`)
-- UNIQUE KEY `uk_supplier_code` (`supplier_code`),
-- UNIQUE KEY `uk_credit_code` (`credit_code`),
-- KEY `idx_purchaser_user_id` (`purchaser_user_id`),
-- KEY `idx_supplier_type` (`supplier_type`),
-- KEY `idx_is_enable` (`is_enable`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='供应商主表';