feat(contract): 新增合同余额功能及重构文件管理

重构合同文件管理逻辑,增加错误处理和日志记录
新增ContractBalance实体、Repository和VO类
完善Voable接口文档和实现规范
更新项目架构文档和数据库设计
修复SmbFileService的连接问题
移动合同相关TabSkin类到contract包
添加合同文件重建任务的WebSocket支持
This commit is contained in:
2025-11-19 00:50:16 +08:00
parent 87290f15b0
commit 02afa189f8
49 changed files with 7577 additions and 441 deletions

View File

@@ -0,0 +1,180 @@
package com.ecep.contract.vm;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.UUID;
import com.ecep.contract.vo.ContractBalanceVo;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class ContractBalanceViewModel extends IdentityViewModel<ContractBalanceVo> {
/**
* 余额ID (对应cBalanceID)
*/
private SimpleStringProperty refId = new SimpleStringProperty();
/**
* GUID余额在系统中的唯一标识 (对应GUID字段)
*/
private SimpleObjectProperty<UUID> guid = new SimpleObjectProperty<>();
/**
* 关联合同ID (对应cContractID)
*/
private SimpleObjectProperty<Integer> contractId = new SimpleObjectProperty<>();
/**
* 业务员ID (对应cFunctionaryID)
*/
private SimpleObjectProperty<Integer> employeeId = new SimpleObjectProperty<>();
/**
* 余额类型ID (对应cBalancelTypeID)
*/
private SimpleStringProperty balanceTypeId = new SimpleStringProperty();
/**
* 汇率 (对应decExchangeRate)
*/
private SimpleObjectProperty<Double> exchangeRate = new SimpleObjectProperty<>();
/**
* 发票号码 (对应cBalanceDetails)
*/
private SimpleStringProperty invoiceNumber = new SimpleStringProperty();
/**
* 创建人 (对应cProducer)
*/
private SimpleObjectProperty<Integer> setupPersonId = new SimpleObjectProperty<>();
/**
* 创建日期 (对应dtProduceDate)
*/
private SimpleObjectProperty<LocalDate> setupDate = new SimpleObjectProperty<>();
/**
* 审核人 (对应cAuditer)
*/
private SimpleObjectProperty<Integer> auditerId = new SimpleObjectProperty<>();
/**
* 审核日期 (对应dtAuditeDate)
*/
private SimpleObjectProperty<LocalDate> auditeDate = new SimpleObjectProperty<>();
/**
* 管理员 (对应cAdmin)
*/
private SimpleObjectProperty<Integer> adminId = new SimpleObjectProperty<>();
/**
* 管理员日期 (对应dtAdminDate)
*/
private SimpleObjectProperty<LocalDate> adminDate = new SimpleObjectProperty<>();
/**
* 凭证ID (对应cPZID)
*/
private SimpleStringProperty pzId = new SimpleStringProperty();
/**
* 凭证编号 (对应cPZNum)
*/
private SimpleStringProperty pzNum = new SimpleStringProperty();
/**
* JSD类型 (对应cJsdType)
*/
private SimpleStringProperty jsdType = new SimpleStringProperty();
/**
* 源余额ID (对应cSrcBalanceID)
*/
private SimpleStringProperty srcBalanceId = new SimpleStringProperty();
/**
* 创建时间 (对应dtCreateTime)
*/
private SimpleObjectProperty<LocalDateTime> createTime = new SimpleObjectProperty<>();
/**
* 修改时间 (对应dtModifyTime)
*/
private SimpleObjectProperty<LocalDateTime> modifyTime = new SimpleObjectProperty<>();
/**
* 修改人 (对应cModifer)
*/
private SimpleObjectProperty<Integer> modiferId = new SimpleObjectProperty<>();
/**
* 生效时间 (对应dtEffectTime)
*/
private SimpleObjectProperty<LocalDateTime> effectTime = new SimpleObjectProperty<>();
@Override
protected void updateFrom(ContractBalanceVo v) {
super.updateFrom(v);
// 设置各个属性值
refId.set(v.getRefId());
guid.set(v.getGuid());
contractId.set(v.getContractId());
employeeId.set(v.getEmployeeId());
balanceTypeId.set(v.getBalanceTypeId());
exchangeRate.set(v.getExchangeRate());
invoiceNumber.set(v.getInvoiceNumber());
setupPersonId.set(v.getSetupPersonId());
setupDate.set(v.getSetupDate());
auditerId.set(v.getAuditerId());
auditeDate.set(v.getAuditeDate());
adminId.set(v.getAdminId());
adminDate.set(v.getAdminDate());
pzId.set(v.getPzId());
pzNum.set(v.getPzNum());
jsdType.set(v.getJsdType());
srcBalanceId.set(v.getSrcBalanceId());
createTime.set(v.getCreateTime());
modifyTime.set(v.getModifyTime());
modiferId.set(v.getModiferId());
effectTime.set(v.getEffectTime());
}
@Override
public boolean copyTo(ContractBalanceVo v) {
boolean result = super.copyTo(v);
// 从ViewModel复制属性到VO
v.setRefId(refId.get());
v.setGuid(guid.get());
v.setContractId(contractId.get());
v.setEmployeeId(employeeId.get());
v.setBalanceTypeId(balanceTypeId.get());
v.setExchangeRate(exchangeRate.get());
v.setInvoiceNumber(invoiceNumber.get());
v.setSetupPersonId(setupPersonId.get());
v.setSetupDate(setupDate.get());
v.setAuditerId(auditerId.get());
v.setAuditeDate(auditeDate.get());
v.setAdminId(adminId.get());
v.setAdminDate(adminDate.get());
v.setPzId(pzId.get());
v.setPzNum(pzNum.get());
v.setJsdType(jsdType.get());
v.setSrcBalanceId(srcBalanceId.get());
v.setCreateTime(createTime.get());
v.setModifyTime(modifyTime.get());
v.setModiferId(modiferId.get());
v.setEffectTime(effectTime.get());
return result;
}
}