Browse Source
应收账款 新增销售订单创建收款凭证功能 新增销售订单创建收款凭证addReceivablesVoucher.html页面 新增应收账款记录domain 新增应收账款记录controller 新增应收账款记录service 新增应收账款记录serviceImpl 新增应收账款记录mapper 新增应收账款记录VO类dev
12 changed files with 1084 additions and 18 deletions
@ -0,0 +1,155 @@ |
|||||
|
package com.ruoyi.financial.domain; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.Date; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
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; |
||||
|
|
||||
|
/** |
||||
|
* 财务应收账款记录对象 financial_receivables_records |
||||
|
* |
||||
|
* @author 刘晓旭 |
||||
|
* @date 2024-05-08 |
||||
|
*/ |
||||
|
public class FinancialReceivablesRecords extends BaseEntity |
||||
|
{ |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** 财务应收账款记录id */ |
||||
|
private Long receivablesRecordsId; |
||||
|
|
||||
|
/** 应收单号 */ |
||||
|
private String financialReceivablesCode; |
||||
|
|
||||
|
/** 收款结案状态 */ |
||||
|
private String receivablesClosingStatus; |
||||
|
|
||||
|
/** 关联销售订单号 */ |
||||
|
private String salesOrderCode; |
||||
|
|
||||
|
/** 收款日期 */ |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd") |
||||
|
@Excel(name = "收款日期", width = 30, dateFormat = "yyyy-MM-dd") |
||||
|
private Date receivablesDate; |
||||
|
|
||||
|
/** 收款金额 */ |
||||
|
@Excel(name = "收款金额") |
||||
|
private BigDecimal receivablesPrice; |
||||
|
|
||||
|
/** 收款摘要 */ |
||||
|
@Excel(name = "收款摘要") |
||||
|
private String receivablesAbstract; |
||||
|
|
||||
|
/** 操作时间 */ |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd") |
||||
|
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd") |
||||
|
private Date operatingTime; |
||||
|
|
||||
|
/** 收款备注 */ |
||||
|
@Excel(name = "收款备注") |
||||
|
private String receivablesRemark; |
||||
|
|
||||
|
public void setReceivablesRecordsId(Long receivablesRecordsId) |
||||
|
{ |
||||
|
this.receivablesRecordsId = receivablesRecordsId; |
||||
|
} |
||||
|
|
||||
|
public Long getReceivablesRecordsId() |
||||
|
{ |
||||
|
return receivablesRecordsId; |
||||
|
} |
||||
|
public void setFinancialReceivablesCode(String financialReceivablesCode) |
||||
|
{ |
||||
|
this.financialReceivablesCode = financialReceivablesCode; |
||||
|
} |
||||
|
|
||||
|
public String getFinancialReceivablesCode() |
||||
|
{ |
||||
|
return financialReceivablesCode; |
||||
|
} |
||||
|
public void setReceivablesClosingStatus(String receivablesClosingStatus) |
||||
|
{ |
||||
|
this.receivablesClosingStatus = receivablesClosingStatus; |
||||
|
} |
||||
|
|
||||
|
public String getReceivablesClosingStatus() |
||||
|
{ |
||||
|
return receivablesClosingStatus; |
||||
|
} |
||||
|
public void setSalesOrderCode(String salesOrderCode) |
||||
|
{ |
||||
|
this.salesOrderCode = salesOrderCode; |
||||
|
} |
||||
|
|
||||
|
public String getSalesOrderCode() |
||||
|
{ |
||||
|
return salesOrderCode; |
||||
|
} |
||||
|
public void setReceivablesDate(Date receivablesDate) |
||||
|
{ |
||||
|
this.receivablesDate = receivablesDate; |
||||
|
} |
||||
|
|
||||
|
public Date getReceivablesDate() |
||||
|
{ |
||||
|
return receivablesDate; |
||||
|
} |
||||
|
public void setReceivablesPrice(BigDecimal receivablesPrice) |
||||
|
{ |
||||
|
this.receivablesPrice = receivablesPrice; |
||||
|
} |
||||
|
|
||||
|
public BigDecimal getReceivablesPrice() |
||||
|
{ |
||||
|
return receivablesPrice; |
||||
|
} |
||||
|
public void setReceivablesAbstract(String receivablesAbstract) |
||||
|
{ |
||||
|
this.receivablesAbstract = receivablesAbstract; |
||||
|
} |
||||
|
|
||||
|
public String getReceivablesAbstract() |
||||
|
{ |
||||
|
return receivablesAbstract; |
||||
|
} |
||||
|
public void setOperatingTime(Date operatingTime) |
||||
|
{ |
||||
|
this.operatingTime = operatingTime; |
||||
|
} |
||||
|
|
||||
|
public Date getOperatingTime() |
||||
|
{ |
||||
|
return operatingTime; |
||||
|
} |
||||
|
public void setReceivablesRemark(String receivablesRemark) |
||||
|
{ |
||||
|
this.receivablesRemark = receivablesRemark; |
||||
|
} |
||||
|
|
||||
|
public String getReceivablesRemark() |
||||
|
{ |
||||
|
return receivablesRemark; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String toString() { |
||||
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) |
||||
|
.append("receivablesRecordsId", getReceivablesRecordsId()) |
||||
|
.append("financialReceivablesCode", getFinancialReceivablesCode()) |
||||
|
.append("receivablesClosingStatus", getReceivablesClosingStatus()) |
||||
|
.append("salesOrderCode", getSalesOrderCode()) |
||||
|
.append("receivablesDate", getReceivablesDate()) |
||||
|
.append("receivablesPrice", getReceivablesPrice()) |
||||
|
.append("receivablesAbstract", getReceivablesAbstract()) |
||||
|
.append("operatingTime", getOperatingTime()) |
||||
|
.append("receivablesRemark", getReceivablesRemark()) |
||||
|
.append("createTime", getCreateTime()) |
||||
|
.append("createBy", getCreateBy()) |
||||
|
.append("updateBy", getUpdateBy()) |
||||
|
.append("updateTime", getUpdateTime()) |
||||
|
.toString(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
package com.ruoyi.financial.domain.VO; |
||||
|
|
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.ruoyi.common.annotation.Excel; |
||||
|
import com.ruoyi.common.core.domain.BaseEntity; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* 财务应收账款记录对象 financial_receivables_records |
||||
|
* |
||||
|
* @author 刘晓旭 |
||||
|
* @date 2024-05-09 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class FinancialReceivablesRecordsVO extends BaseEntity { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
|
||||
|
/** 财务应收账款记录id */ |
||||
|
private Long receivablesRecordsId; |
||||
|
|
||||
|
/** 应收单号 */ |
||||
|
private String financialReceivablesCode; |
||||
|
|
||||
|
/** 收款日期 */ |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd") |
||||
|
@Excel(name = "收款日期", width = 30, dateFormat = "yyyy-MM-dd") |
||||
|
private Date receivablesDate; |
||||
|
|
||||
|
/** 收款金额 */ |
||||
|
@Excel(name = "收款金额") |
||||
|
private BigDecimal receivablesPrice; |
||||
|
|
||||
|
/** 收款摘要 */ |
||||
|
@Excel(name = "收款摘要") |
||||
|
private String receivablesAbstract; |
||||
|
|
||||
|
/** 操作时间 */ |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd") |
||||
|
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd") |
||||
|
private Date operatingTime; |
||||
|
|
||||
|
/** 收款备注 */ |
||||
|
@Excel(name = "收款备注") |
||||
|
private String receivablesRemark; |
||||
|
} |
@ -0,0 +1,85 @@ |
|||||
|
package com.ruoyi.financial.mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import com.ruoyi.financial.domain.FinancialReceivablesRecords; |
||||
|
|
||||
|
/** |
||||
|
* 财务应收账款记录Mapper接口 |
||||
|
* |
||||
|
* @author 刘晓旭 |
||||
|
* @date 2024-05-08 |
||||
|
*/ |
||||
|
public interface FinancialReceivablesRecordsMapper |
||||
|
{ |
||||
|
/** |
||||
|
* 查询财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 财务应收账款记录 |
||||
|
*/ |
||||
|
public FinancialReceivablesRecords selectFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 查询财务应收账款记录列表 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 财务应收账款记录集合 |
||||
|
*/ |
||||
|
public List<FinancialReceivablesRecords> selectFinancialReceivablesRecordsList(FinancialReceivablesRecords financialReceivablesRecords); |
||||
|
|
||||
|
/** |
||||
|
* 新增财务应收账款记录 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int insertFinancialReceivablesRecords(FinancialReceivablesRecords financialReceivablesRecords); |
||||
|
|
||||
|
/** |
||||
|
* 修改财务应收账款记录 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int updateFinancialReceivablesRecords(FinancialReceivablesRecords financialReceivablesRecords); |
||||
|
|
||||
|
/** |
||||
|
* 删除财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int deleteFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 批量删除财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsIds 需要删除的数据ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int deleteFinancialReceivablesRecordsByIds(String[] receivablesRecordsIds); |
||||
|
|
||||
|
/** |
||||
|
* 作废财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int cancelFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 恢复财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int restoreFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 查询财务应收账款记录列表 |
||||
|
* |
||||
|
* @param financialReceivablesCode 财务应收单号 |
||||
|
* @return 财务应收账款记录集合 |
||||
|
*/ |
||||
|
List<FinancialReceivablesRecords> selectFinancialReceivablesRecordsListByCode(String financialReceivablesCode); |
||||
|
} |
@ -0,0 +1,80 @@ |
|||||
|
package com.ruoyi.financial.service; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import com.ruoyi.financial.domain.FinancialReceivablesRecords; |
||||
|
|
||||
|
/** |
||||
|
* 财务应收账款记录Service接口 |
||||
|
* |
||||
|
* @author 刘晓旭 |
||||
|
* @date 2024-05-08 |
||||
|
*/ |
||||
|
public interface IFinancialReceivablesRecordsService |
||||
|
{ |
||||
|
/** |
||||
|
* 查询财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 财务应收账款记录 |
||||
|
*/ |
||||
|
public FinancialReceivablesRecords selectFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 查询财务应收账款记录列表 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 财务应收账款记录集合 |
||||
|
*/ |
||||
|
public List<FinancialReceivablesRecords> selectFinancialReceivablesRecordsList(FinancialReceivablesRecords financialReceivablesRecords); |
||||
|
|
||||
|
/** |
||||
|
* 新增财务应收账款记录 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int insertFinancialReceivablesRecords(FinancialReceivablesRecords financialReceivablesRecords); |
||||
|
|
||||
|
/** |
||||
|
* 修改财务应收账款记录 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int updateFinancialReceivablesRecords(FinancialReceivablesRecords financialReceivablesRecords); |
||||
|
|
||||
|
/** |
||||
|
* 批量删除财务应收账款记录 |
||||
|
* |
||||
|
* @param ids 需要删除的数据ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int deleteFinancialReceivablesRecordsByIds(String ids); |
||||
|
|
||||
|
/** |
||||
|
* 删除财务应收账款记录信息 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
public int deleteFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 作废财务应收账款记录 |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return |
||||
|
*/ |
||||
|
int cancelFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 恢复财务应收账款记录 |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return |
||||
|
*/ |
||||
|
int restoreFinancialReceivablesRecordsById(Long receivablesRecordsId); |
||||
|
|
||||
|
/** |
||||
|
* 根据应收单号查找对应的收款记录 |
||||
|
* */ |
||||
|
List<FinancialReceivablesRecords> selectFinancialReceivablesRecordsListByCode(String financialReceivablesCode); |
||||
|
} |
@ -0,0 +1,145 @@ |
|||||
|
package com.ruoyi.financial.service.impl; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
import com.ruoyi.common.exception.BusinessException; |
||||
|
import com.ruoyi.common.utils.DateUtils; |
||||
|
import com.ruoyi.common.utils.ShiroUtils; |
||||
|
import com.ruoyi.common.utils.StringUtils; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import com.ruoyi.financial.mapper.FinancialReceivablesRecordsMapper; |
||||
|
import com.ruoyi.financial.domain.FinancialReceivablesRecords; |
||||
|
import com.ruoyi.financial.service.IFinancialReceivablesRecordsService; |
||||
|
import com.ruoyi.common.core.text.Convert; |
||||
|
|
||||
|
/** |
||||
|
* 财务应收账款记录Service业务层处理 |
||||
|
* |
||||
|
* @author 刘晓旭 |
||||
|
* @date 2024-05-08 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
public class FinancialReceivablesRecordsServiceImpl implements IFinancialReceivablesRecordsService |
||||
|
{ |
||||
|
@Autowired |
||||
|
private FinancialReceivablesRecordsMapper financialReceivablesRecordsMapper; |
||||
|
|
||||
|
/** |
||||
|
* 查询财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 财务应收账款记录 |
||||
|
*/ |
||||
|
@Override |
||||
|
public FinancialReceivablesRecords selectFinancialReceivablesRecordsById(Long receivablesRecordsId) |
||||
|
{ |
||||
|
return financialReceivablesRecordsMapper.selectFinancialReceivablesRecordsById(receivablesRecordsId); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查询财务应收账款记录列表 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 财务应收账款记录 |
||||
|
*/ |
||||
|
@Override |
||||
|
public List<FinancialReceivablesRecords> selectFinancialReceivablesRecordsList(FinancialReceivablesRecords financialReceivablesRecords) |
||||
|
{ |
||||
|
return financialReceivablesRecordsMapper.selectFinancialReceivablesRecordsList(financialReceivablesRecords); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 新增财务应收账款记录 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int insertFinancialReceivablesRecords(FinancialReceivablesRecords financialReceivablesRecords) |
||||
|
{ |
||||
|
financialReceivablesRecords.setCreateTime(DateUtils.getNowDate()); |
||||
|
String loginName = ShiroUtils.getLoginName(); |
||||
|
financialReceivablesRecords.setCreateBy(loginName); |
||||
|
return financialReceivablesRecordsMapper.insertFinancialReceivablesRecords(financialReceivablesRecords); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 修改财务应收账款记录 |
||||
|
* |
||||
|
* @param financialReceivablesRecords 财务应收账款记录 |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int updateFinancialReceivablesRecords(FinancialReceivablesRecords financialReceivablesRecords) |
||||
|
{ |
||||
|
String loginName = ShiroUtils.getLoginName(); |
||||
|
financialReceivablesRecords.setUpdateBy(loginName); |
||||
|
financialReceivablesRecords.setUpdateTime(DateUtils.getNowDate()); |
||||
|
return financialReceivablesRecordsMapper.updateFinancialReceivablesRecords(financialReceivablesRecords); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除财务应收账款记录对象 |
||||
|
* |
||||
|
* @param ids 需要删除的数据ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int deleteFinancialReceivablesRecordsByIds(String ids) |
||||
|
{ |
||||
|
return financialReceivablesRecordsMapper.deleteFinancialReceivablesRecordsByIds(Convert.toStrArray(ids)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除财务应收账款记录信息 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int deleteFinancialReceivablesRecordsById(Long receivablesRecordsId) |
||||
|
{ |
||||
|
return financialReceivablesRecordsMapper.deleteFinancialReceivablesRecordsById(receivablesRecordsId); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 作废财务应收账款记录 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int cancelFinancialReceivablesRecordsById(Long receivablesRecordsId) |
||||
|
{ |
||||
|
return financialReceivablesRecordsMapper.cancelFinancialReceivablesRecordsById(receivablesRecordsId); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 恢复财务应收账款记录信息 |
||||
|
* |
||||
|
* @param receivablesRecordsId 财务应收账款记录ID |
||||
|
* @return 结果 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int restoreFinancialReceivablesRecordsById(Long receivablesRecordsId) |
||||
|
{ |
||||
|
return financialReceivablesRecordsMapper.restoreFinancialReceivablesRecordsById(receivablesRecordsId); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查找收款记录列表 |
||||
|
*/ |
||||
|
@Override |
||||
|
public List<FinancialReceivablesRecords> selectFinancialReceivablesRecordsListByCode(String financialReceivablesCode) { |
||||
|
|
||||
|
List<FinancialReceivablesRecords> financialReceivablesRecordsList = financialReceivablesRecordsMapper.selectFinancialReceivablesRecordsListByCode(financialReceivablesCode); |
||||
|
if (StringUtils.isEmpty(financialReceivablesRecordsList)){ |
||||
|
log.warn("未查找到收款记录信息:{}",financialReceivablesCode); |
||||
|
throw new BusinessException("未查找到收款记录信息"); |
||||
|
} |
||||
|
return financialReceivablesRecordsList; |
||||
|
} |
||||
|
} |
@ -0,0 +1,114 @@ |
|||||
|
<?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.financial.mapper.FinancialReceivablesRecordsMapper"> |
||||
|
|
||||
|
<resultMap type="FinancialReceivablesRecords" id="FinancialReceivablesRecordsResult"> |
||||
|
<result property="receivablesRecordsId" column="receivables_records_id" /> |
||||
|
<result property="financialReceivablesCode" column="financial_receivables_code" /> |
||||
|
<result property="receivablesClosingStatus" column="receivables_closing_status" /> |
||||
|
<result property="salesOrderCode" column="sales_order_code" /> |
||||
|
<result property="receivablesDate" column="receivables_date" /> |
||||
|
<result property="receivablesPrice" column="receivables_price" /> |
||||
|
<result property="receivablesAbstract" column="receivables_abstract" /> |
||||
|
<result property="operatingTime" column="operating_time" /> |
||||
|
<result property="receivablesRemark" column="receivables_remark" /> |
||||
|
<result property="createTime" column="create_time" /> |
||||
|
<result property="createBy" column="create_by" /> |
||||
|
<result property="updateBy" column="update_by" /> |
||||
|
<result property="updateTime" column="update_time" /> |
||||
|
</resultMap> |
||||
|
|
||||
|
<sql id="selectFinancialReceivablesRecordsVo"> |
||||
|
select receivables_records_id, financial_receivables_code, receivables_closing_status, sales_order_code, receivables_date, receivables_price, receivables_abstract, operating_time, receivables_remark, create_time, create_by, update_by, update_time from financial_receivables_records |
||||
|
</sql> |
||||
|
|
||||
|
<select id="selectFinancialReceivablesRecordsList" parameterType="FinancialReceivablesRecords" resultMap="FinancialReceivablesRecordsResult"> |
||||
|
<include refid="selectFinancialReceivablesRecordsVo"/> |
||||
|
<where> |
||||
|
</where> |
||||
|
</select> |
||||
|
|
||||
|
<select id="selectFinancialReceivablesRecordsListByCode" parameterType="String" resultMap="FinancialReceivablesRecordsResult"> |
||||
|
<include refid="selectFinancialReceivablesRecordsVo"/> |
||||
|
where financial_receivables_code = #{financialReceivablesCode} |
||||
|
</select> |
||||
|
|
||||
|
|
||||
|
<select id="selectFinancialReceivablesRecordsById" parameterType="Long" resultMap="FinancialReceivablesRecordsResult"> |
||||
|
<include refid="selectFinancialReceivablesRecordsVo"/> |
||||
|
where receivables_records_id = #{receivablesRecordsId} |
||||
|
</select> |
||||
|
|
||||
|
<insert id="insertFinancialReceivablesRecords" parameterType="FinancialReceivablesRecords" useGeneratedKeys="true" keyProperty="receivablesRecordsId"> |
||||
|
insert into financial_receivables_records |
||||
|
<trim prefix="(" suffix=")" suffixOverrides=","> |
||||
|
<if test="financialReceivablesCode != null">financial_receivables_code,</if> |
||||
|
<if test="receivablesClosingStatus != null">receivables_closing_status,</if> |
||||
|
<if test="salesOrderCode != null">sales_order_code,</if> |
||||
|
<if test="receivablesDate != null">receivables_date,</if> |
||||
|
<if test="receivablesPrice != null">receivables_price,</if> |
||||
|
<if test="receivablesAbstract != null">receivables_abstract,</if> |
||||
|
<if test="operatingTime != null">operating_time,</if> |
||||
|
<if test="receivablesRemark != null">receivables_remark,</if> |
||||
|
<if test="createTime != null">create_time,</if> |
||||
|
<if test="createBy != null">create_by,</if> |
||||
|
<if test="updateBy != null">update_by,</if> |
||||
|
<if test="updateTime != null">update_time,</if> |
||||
|
</trim> |
||||
|
<trim prefix="values (" suffix=")" suffixOverrides=","> |
||||
|
<if test="financialReceivablesCode != null">#{financialReceivablesCode},</if> |
||||
|
<if test="receivablesClosingStatus != null">#{receivablesClosingStatus},</if> |
||||
|
<if test="salesOrderCode != null">#{salesOrderCode},</if> |
||||
|
<if test="receivablesDate != null">#{receivablesDate},</if> |
||||
|
<if test="receivablesPrice != null">#{receivablesPrice},</if> |
||||
|
<if test="receivablesAbstract != null">#{receivablesAbstract},</if> |
||||
|
<if test="operatingTime != null">#{operatingTime},</if> |
||||
|
<if test="receivablesRemark != null">#{receivablesRemark},</if> |
||||
|
<if test="createTime != null">#{createTime},</if> |
||||
|
<if test="createBy != null">#{createBy},</if> |
||||
|
<if test="updateBy != null">#{updateBy},</if> |
||||
|
<if test="updateTime != null">#{updateTime},</if> |
||||
|
</trim> |
||||
|
</insert> |
||||
|
|
||||
|
<update id="updateFinancialReceivablesRecords" parameterType="FinancialReceivablesRecords"> |
||||
|
update financial_receivables_records |
||||
|
<trim prefix="SET" suffixOverrides=","> |
||||
|
<if test="financialReceivablesCode != null">financial_receivables_code = #{financialReceivablesCode},</if> |
||||
|
<if test="receivablesClosingStatus != null">receivables_closing_status = #{receivablesClosingStatus},</if> |
||||
|
<if test="salesOrderCode != null">sales_order_code = #{salesOrderCode},</if> |
||||
|
<if test="receivablesDate != null">receivables_date = #{receivablesDate},</if> |
||||
|
<if test="receivablesPrice != null">receivables_price = #{receivablesPrice},</if> |
||||
|
<if test="receivablesAbstract != null">receivables_abstract = #{receivablesAbstract},</if> |
||||
|
<if test="operatingTime != null">operating_time = #{operatingTime},</if> |
||||
|
<if test="receivablesRemark != null">receivables_remark = #{receivablesRemark},</if> |
||||
|
<if test="createTime != null">create_time = #{createTime},</if> |
||||
|
<if test="createBy != null">create_by = #{createBy},</if> |
||||
|
<if test="updateBy != null">update_by = #{updateBy},</if> |
||||
|
<if test="updateTime != null">update_time = #{updateTime},</if> |
||||
|
</trim> |
||||
|
where receivables_records_id = #{receivablesRecordsId} |
||||
|
</update> |
||||
|
|
||||
|
<delete id="deleteFinancialReceivablesRecordsById" parameterType="Long"> |
||||
|
delete from financial_receivables_records where receivables_records_id = #{receivablesRecordsId} |
||||
|
</delete> |
||||
|
|
||||
|
<delete id="deleteFinancialReceivablesRecordsByIds" parameterType="String"> |
||||
|
delete from financial_receivables_records where receivables_records_id in |
||||
|
<foreach item="receivablesRecordsId" collection="array" open="(" separator="," close=")"> |
||||
|
#{receivablesRecordsId} |
||||
|
</foreach> |
||||
|
</delete> |
||||
|
|
||||
|
<update id="cancelFinancialReceivablesRecordsById" parameterType="Long"> |
||||
|
update financial_receivables_records set del_flag = '1' where receivables_records_id = #{receivablesRecordsId} |
||||
|
</update> |
||||
|
|
||||
|
<update id="restoreFinancialReceivablesRecordsById" parameterType="Long"> |
||||
|
update financial_receivables_records set del_flag = '0' where receivables_records_id = #{receivablesRecordsId} |
||||
|
</update> |
||||
|
|
||||
|
</mapper> |
@ -0,0 +1,350 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > |
||||
|
<head> |
||||
|
<th:block th:include="include :: header('修改财务应收账款')" /> |
||||
|
<th:block th:include="include :: datetimepicker-css" /> |
||||
|
<th:block th:include="include :: bootstrap-editable-css" /> |
||||
|
</head> |
||||
|
<body class="white-bg"> |
||||
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> |
||||
|
<form class="form-horizontal m" id="form-receivables-edit" th:object="${financialReceivables}"> |
||||
|
<input name="financialReceivablesId" th:field="*{financialReceivablesId}" type="hidden"> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">应收单号:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="financialReceivablesCode" th:field="*{financialReceivablesCode}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">收款状态:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<select name="receivablesClosingStatus" class="form-control m-b" th:with="type=${@dict.getType('receivables_closing_status')}"> |
||||
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{receivablesClosingStatus}"></option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">关联单号:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="salesOrderCode" th:field="*{salesOrderCode}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">贷方科目:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="creditAccount" th:field="*{creditAccount}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">贷方明细:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="creditDetail" th:field="*{creditDetail}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">开户银行:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="openBank" th:field="*{openBank}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">开户账号:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="openAccount" th:field="*{openAccount}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">客户ID:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="customerId" th:field="*{customerId}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">合同编号:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="contractNumber" th:field="*{contractNumber}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">币种:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<select name="currencyType" class="form-control m-b" th:with="type=${@dict.getType('sys_common_currency')}"> |
||||
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{currencyType}"></option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">不含税金额:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="priceExcludingTax" th:field="*{priceExcludingTax}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">含税金额:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="priceIncludesTax" th:field="*{priceIncludesTax}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">付款条件:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="paymentCondition" th:field="*{paymentCondition}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">发货状态:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<select name="financialDeliverStatus" class="form-control m-b" th:with="type=${@dict.getType('financial_deliver_status')}"> |
||||
|
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{financialDeliverStatus}"></option> |
||||
|
</select> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label class="col-sm-3 control-label">业务员:</label> |
||||
|
<div class="col-sm-8"> |
||||
|
<input name="businessMembers" th:field="*{businessMembers}" class="form-control" type="text"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</form> |
||||
|
<div class="container"> |
||||
|
<!-- 收款记录 --> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 select-table table-striped"> |
||||
|
<h3 class="mb-4">收款记录</h3> |
||||
|
<table id="bootstrap-receivablesRecords-table"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- 间隔行,用于分隔 --> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 mt-5"><!-- 使用mt-* 类来增加上边距,例如 mt-5 对应 Bootstrap 的 margin-top: 3rem; --></div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- 收款凭证 --> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 d-flex align-items-center"> |
||||
|
<span style="font-weight: bold; font-family: Arial, sans-serif; font-size: 15px;">收款凭证</span> |
||||
|
<a class="btn btn-success ml-auto" onclick="addReceivablesRecordsDetail()"> |
||||
|
<i class="fa fa-plus"></i> 添加收款明细 |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 select-table table-striped"> |
||||
|
<table id="bootstrap-receivablesVoucher-table"></table> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div id="totalReceivablesAmount" class="col-sm-12 d-flex align-items-center mt-3"> |
||||
|
<span style="font-family: Arial, sans-serif; font-size: 10px;">收款合计:</span> |
||||
|
<span id="totalAmountDisplay">0.00</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<th:block th:include="include :: footer" /> |
||||
|
<th:block th:include="include :: datetimepicker-js" /> |
||||
|
<th:block th:include="include :: bootstrap-table-editable-js" /> |
||||
|
<script th:inline="javascript"> |
||||
|
var financialReceivables = [[${financialReceivables}]]; |
||||
|
var prefix = ctx + "financial/receivables"; |
||||
|
$("#form-receivables-edit").validate({ |
||||
|
focusCleanup: true |
||||
|
}); |
||||
|
|
||||
|
function submitHandler() { |
||||
|
// 获取表单数据 |
||||
|
const financialReceivablesData = $("#form-receivables-edit").serializeArray().reduce((obj, item) => { |
||||
|
obj[item.name] = item.value; |
||||
|
return obj; |
||||
|
}, {}); |
||||
|
// 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据 |
||||
|
var table = $('#bootstrap-receivablesVoucher-table').bootstrapTable('getData'); |
||||
|
// 检查表格数据是否为空 |
||||
|
if (table.length===0){ |
||||
|
$.modal.alertWarning("请至少添加一条收款明细后再保存!"); |
||||
|
return; |
||||
|
} |
||||
|
// 将表数据转换成与complaintNoticeData格式一致的数组 |
||||
|
var financialReceivablesRecordsList = table.map(function(item) { |
||||
|
// 根据实际字段名调整 |
||||
|
return { |
||||
|
"receivablesDate": item.receivablesDate, |
||||
|
"receivablesPrice": item.receivablesPrice, |
||||
|
"receivablesAbstract": item.receivablesAbstract, |
||||
|
"receivablesRemark": item.receivablesRemark, |
||||
|
// ...其他字段 |
||||
|
}; |
||||
|
}); |
||||
|
|
||||
|
// 合并表单数据和表格数据 |
||||
|
const combinedData = Object.assign({}, financialReceivablesData, { receivablesRecordsVOList: financialReceivablesRecordsList }); |
||||
|
|
||||
|
console.log(combinedData) |
||||
|
// 使用 JSON.stringify() 序列化数据 |
||||
|
const jsonData = JSON.stringify(combinedData); |
||||
|
// 发送 AJAX 请求到后端接口 |
||||
|
$.operate.saveJson(prefix + "/addReceivablesVoucher", jsonData); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
$("input[name='receivablesDate']").datetimepicker({ |
||||
|
format: "yyyy-mm-dd", |
||||
|
minView: "month", |
||||
|
autoclose: true |
||||
|
}); |
||||
|
|
||||
|
$("input[name='operatingTime']").datetimepicker({ |
||||
|
format: "yyyy-mm-dd", |
||||
|
minView: "month", |
||||
|
autoclose: true |
||||
|
}); |
||||
|
|
||||
|
/*根据收款编号对应的收款明细*/ |
||||
|
$(function() { |
||||
|
var options = { |
||||
|
id:"bootstrap-receivablesRecords-table", |
||||
|
url: prefix + "/getReceivablesRecords", |
||||
|
modalName: "收款记录", |
||||
|
showColumns: false, |
||||
|
pagination: false, |
||||
|
showToggle: false, |
||||
|
showRefresh:false, |
||||
|
showSearch:false, |
||||
|
queryParams:queryParams, |
||||
|
columns: [ |
||||
|
{ |
||||
|
title: '财务应收账款记录id', |
||||
|
field: 'receivablesRecordsId', |
||||
|
visible: false |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款日期', |
||||
|
field: 'receivablesDate', |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款金额', |
||||
|
field: 'receivablesPrice', |
||||
|
formatter: function(value, row, index) { |
||||
|
// 格式化收款金额为保留两位小数的字符串 |
||||
|
return parseFloat(value).toFixed(2); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款摘要', |
||||
|
field: 'receivablesAbstract', |
||||
|
}, |
||||
|
{ |
||||
|
title: '操作时间', |
||||
|
field: 'operatingTime', |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款备注', |
||||
|
field: 'receivablesRemark', |
||||
|
}, |
||||
|
] |
||||
|
}; |
||||
|
$.table.init(options); |
||||
|
}) |
||||
|
function queryParams(params) { |
||||
|
var curParams = { |
||||
|
// 传递参数查询参数 |
||||
|
financialReceivablesCode: financialReceivables.financialReceivablesCode |
||||
|
}; |
||||
|
return curParams; |
||||
|
} |
||||
|
|
||||
|
//添加收款明细 |
||||
|
function addReceivablesRecordsDetail() { |
||||
|
// 生成一个简单的唯一标识,这里使用时间戳作为示例 |
||||
|
var uniqueId = new Date().getTime(); |
||||
|
// 创建一个新行数据模板,这里仅为示例,具体根据表格列来定义 |
||||
|
var newRow = { |
||||
|
receivablesRecordsId:uniqueId, |
||||
|
receivablesDate: "", |
||||
|
receivablesPrice: "", |
||||
|
receivablesAbstract: "", |
||||
|
operatingTime: "", |
||||
|
receivablesRemark: "" |
||||
|
}; |
||||
|
|
||||
|
// 使用Bootstrap Table的API插入新行 |
||||
|
$('#bootstrap-receivablesVoucher-table').bootstrapTable('append', newRow); |
||||
|
|
||||
|
} |
||||
|
//收款凭证table列表 |
||||
|
$(function() { |
||||
|
var options = { |
||||
|
id:"bootstrap-receivablesVoucher-table", |
||||
|
modalName: "收款凭证", |
||||
|
showColumns: false, |
||||
|
pagination: false, |
||||
|
showToggle: false, |
||||
|
showRefresh:false, |
||||
|
showSearch:false, |
||||
|
singleSelect:true, |
||||
|
columns: [{ |
||||
|
checkbox: false |
||||
|
}, |
||||
|
{ |
||||
|
title: '财务应收账款记录id', |
||||
|
field: 'receivablesRecordsId', |
||||
|
visible: false |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款日期', |
||||
|
field: 'receivablesDate', |
||||
|
editable : { |
||||
|
type: 'date', |
||||
|
clear: false, |
||||
|
title: '请选择日期:' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款金额', |
||||
|
field: 'receivablesPrice', |
||||
|
editable: { |
||||
|
type: 'text', // 表示该列可以被编辑为文本 |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款摘要', |
||||
|
field: 'receivablesAbstract', |
||||
|
editable: { |
||||
|
type: 'text', // 表示该列可以被编辑为文本 |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '收款备注', |
||||
|
field: 'receivablesRemark', |
||||
|
editable: { |
||||
|
type: 'text', // 表示该列可以被编辑为文本 |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
title: '操作', |
||||
|
align: 'center', |
||||
|
formatter: function(value, row, index) { |
||||
|
var actions = []; |
||||
|
actions.push('<a class="btn btn-danger btn-xs" href="javascript:void(0)" onclick="removeRow(\'' + row.receivablesRecordsId + '\')"><i class="fa fa-remove"></i>删除</a> '); |
||||
|
return actions.join(''); |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
$.table.init(options); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
// 逻辑删除收款凭证前端的一行数据 |
||||
|
function removeRow(receivablesRecordsId){ |
||||
|
console.log(receivablesRecordsId); |
||||
|
// 直接使用 receivablesRecordsId 值进行删除操作 |
||||
|
$("#bootstrap-receivablesVoucher-table").bootstrapTable('remove', { |
||||
|
field: 'receivablesRecordsId', |
||||
|
values: receivablesRecordsId |
||||
|
}); |
||||
|
} |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
Loading…
Reference in new issue