Files
contract-manager/docs/create_vo.md
songqq 35b33d401b feat: 添加VendorGroupRequireFileTypeVo及相关服务功能
refactor: 重构多个服务类和方法,优化代码结构
fix: 修复PermissionVo中code字段更名为key的问题
docs: 更新create_vo.md文档,添加新创建的VO记录
perf: 优化WebSocketClientService中的session关闭逻辑
style: 清理无用导入和注释,统一代码格式
2025-09-21 23:08:34 +08:00

9.7 KiB
Raw Blame History

更新Vo

任务逻辑

根据 model 创建、更新 Vo先检查Vo是否存在如果不存在则创建Vo否则根据要求更新Vo 更新结果保存到 D:\idea-workspace\Contract-Manager\docs\create_vo.md Model和Vo的对应关系记录在 create_vo.md 结果记录中如果未找到对应的Vo从结果记录中查看是否有对应关系

model

  • 所在目录: D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\model
  • 注解为 @Entity 的 .java 文件
  • 请根据所在目录找到的Model更新本文件中的 Entity 类清单 如果 model 不在 Entity 类清单中,从清单中移除
  • Model 需要继承 Voable 接口的类,并且实现 toVo 方

参考

  • D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\model\Bank.java

ViewModel VM

  • 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm
  • 继承 IdentityViewModel
  • 包含一个 名为 from 的静态方法 public static BankViewModel from(BankVo v) { BankViewModel vm = new BankViewModel(); vm.update(v); return vm; }
  • 继承实现 void updateFrom(Vo v) 方法
  • 继承实现 void copyTo(Vo v) 方法
  • 关联对象 使用 ObjectProperty不使用 IntegerProperty
  • IdentityViewModel 不需要调整
  • 如果Vo的属性是 boolean使用 BooleanProperty

参考

  • D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm\BankViewModel.java
  • D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\vm\CompanyBankAccountViewModel.java

vo

  • 所在目录: D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\vo

参考

  • D:\idea-workspace\Contract-Manager\common\src\main\java\com\ecep\contract\vo\BankVo.java

Service

  • 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\service
  • 继承 QueryService<Vo, VM>
  • 指定 @Service 注解
  • 如果 指定了 @CacheConfig 注解,则需要实现 findById、findAll、save和delete方法并且方法上实现 Cache 相关注解,参考 D: \idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\service\BankService.java
  • find** 方法,则通过调用父类的 findAllparams, pageable) 方法实现,如下代码 public List<ContractVo> findAllByCompanyVendor(CompanyVendorVo vendor, LocalDate beginDate, LocalDate endDate) { return findAll(ParamUtils.builder() .equals("company", vendor.getCompanyId()) .between("setupDate", beginDate, endDate) .build(), Pageable.unpaged()).getContent(); }
  • 查询条件中的 .equals("company", vendor.getCompanyId()) 中的company 是对应 model 中对应的字段的名,不对 vo 中对应字段的名
  • 如果方法内没有具体的实现,也用如上代码实现

Controller

  • ManagerWindowController
    • 继承 AbstManagerWindowController<VO, VM, ManagerSkin>
    • 实现 createDefaultSkin 方法 返回 ManagerSkin
    • 实现 getViewModelService 方法 返回 对应的 Service
    • 需要给定以下注解 @Lazy、@Scope("prototype")、@Component、@FxmlPath("/ui/bank-manager.fxml")

参考

  • D: \idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\bank\BankManagerWindowController.java
  • D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\bank\BankManagerSkin.java

TabSkin

EditableEntityTableTabSkin<Vo, VM>

TableCell

  • 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\table\cell
  • TableCell extends AsyncUpdateTableCell<T, VO>
  • TableVIew 使用 TableCell
    • bankAccountTable_bankColumn.setCellValueFactory(param -> param.getValue().getBankId());
    • bankAccountTable_bankColumn.setCellFactory(param -> new BankTableCell<>(getBankService()));

参考

D:\idea-workspace\Contract-Manager\client\src\main\java\com\ecep\contract\controller\table\cell\BankTableCell.java

Combo

FXML UI 界面

  • 所在目录: D:\idea-workspace\Contract-Manager\client\src\main\resources\ui

其他要求

  • 检索到的Model先记录在 create_vo.md
  • 主键名称为id类型都是 Integer
  • 布尔类型的属性使用 boolean,不要使用 Boolean初始值为false
  • 注解为@Embeddable、@MappedSuperclass的Model不需要更新Vo
  • 更新结果以 ModelVo (状态) 保存, Model 和 VO 的名称后期后修改,可能会不一一对应

Entity 类清单

Bank CloudRk CloudTyc CloudYu Company CompanyBankAccount CompanyBlackReason CompanyContact CompanyContract CompanyCustomer CompanyCustomerEntity CompanyCustomerEvaluationFormFile CompanyCustomerFile CompanyCustomerFileTypeLocal CompanyExtendInfo CompanyFile CompanyFileTypeLocal CompanyInvoiceInfo CompanyOldName CompanyVendor CompanyVendorApprovedFile CompanyVendorApprovedItem CompanyVendorApprovedList CompanyVendorEntity CompanyVendorFile Contract ContractBidVendor ContractCatalog ContractFile ContractFileTypeLocal ContractGroup ContractItem ContractKind ContractPayPlan ContractType CustomerCatalog CustomerSatisfactionSurvey DeliverySignMethod ExtendVendorInfo HolidayTable Inventory InventoryCatalog InventoryHistoryPrice Invoice ProductType ProductUsage Project ProjectBid ProjectCost ProjectCostItem ProjectFile ProjectFileTypeLocal ProjectFundPlan ProjectIndustry ProjectQuotation ProjectSaleType ProjectSaleTypeRequireFileType ProjectType PurchaseBillVoucher PurchaseBillVoucherItem PurchaseOrder PurchaseOrderItem PurchaseReceipt PurchaseSettlementVoucher PurchaseSettlementVoucherItem SalesBillVoucher SalesBillVoucherItem SalesOrder SalesOrderInvoice SalesOrderItem SysConf Unit VendorCatalog VendorFileTypeLocal VendorGroup VendorGroupRequireFileType VendorTypeLocal VolumeSize

结果记录

EmployeeAuthBind: EmployeeAuthBindVo (已创建) EmployeeLoginHistory: EmployeeLoginHistoryVo (已创建) ProjectSaleTypeRequireFileType: ProjectSaleTypeRequireFileTypeVo (已创建) ProjectFundPlan: ProjectFundPlanVo (已创建) SalesOrderInvoice: SalesOrderInvoiceVo (已创建) SalesBillVoucherItem: SalesBillVoucherItemVo (已创建) SalesBillVoucher: SalesBillVoucherVo (已创建) PurchaseSettlementVoucherItem: PurchaseSettlementVoucherItemVo (已创建) PurchaseSettlementVoucher: PurchaseSettlementVoucherVo (已创建) PurchaseBillVoucherItem: PurchaseBillVoucherItemVo (已创建) PurchaseBillVoucher: PurchaseBillVoucherVo (已创建) CompanyOldName: CompanyOldNameVo (已创建) ContractCatalog: ContractCatalogVo (已创建) CompanyBlackReason: CompanyBlackReasonVo (已创建) CompanyContract: CompanyContractVo (已创建) CompanyCustomer: CompanyCustomerVo (已创建) CompanyCustomerEntity: CompanyCustomerEntityVo (已创建) CompanyCustomerEvaluationFormFile: CompanyCustomerEvaluationFormFileVo (已创建) CompanyCustomerFile: CompanyCustomerFileVo (已创建) CompanyCustomerFileTypeLocal: CompanyCustomerFileTypeLocalVo (已创建) CompanyExtendInfo: CompanyExtendInfoVo (已创建) CompanyFileTypeLocal: CompanyFileTypeLocalVo (已创建) CompanyVendor: CompanyVendorVo (已创建) CompanyVendorApprovedFile: CompanyVendorApprovedFileVo (已创建) CompanyVendorApprovedItem: CompanyVendorApprovedItemVo (已创建) CompanyVendorApprovedList: CompanyVendorApprovedListVo (已创建) CompanyVendorEntity: CompanyVendorEntityVo (已创建) CompanyVendorFile: CompanyVendorFileVo (已创建) CustomerSatisfactionSurvey: CustomerSatisfactionSurveyVo (已创建) EmployeeRole: EmployeeRoleVo (已创建) ProductType: ProductTypeVo (已创建) PurchaseOrder: PurchaseOrderVo (已创建) CloudRk: CloudRkVo (已创建) CloudTyc: CloudTycVo (已创建) CloudYu: CloudYuVo (已创建) ProjectFile: ProjectFileVo (已创建)

CompanyContact: CompanyContactVo (已更新) ContractType: ContractTypeVo (已更新) ContractKind: ContractKindVo (已更新) ContractPayPlan: ContractPayPlanVo (已更新) CustomerCatalog: CustomerCatalogVo (已更新) Department: DepartmentVo (已更新) Function: FunctionVo (已更新) ProjectType: ProjectTypeVo (已更新) ProductType: ProductTypeVo (已更新) ProductUsage: ProductUsageVo (已更新) Price: PriceVo (已更新) ContractGroup: ContractGroupVo (已更新) DeliverySignMethod: DeliverySignMethodVo (已更新) Employee: EmployeeVo (已更新) Inventory: InventoryVo (已更新) InventoryCatalog: InventoryCatalogVo (已更新) Project: ProjectVo (已更新) ProjectIndustry: ProjectIndustryVo (已更新) ProjectSaleType: ProjectSaleTypeVo (已更新) CompanyBankAccount: CompanyBankAccountVo (已更新) CompanyInvoiceInfo: CompanyInvoiceInfoVo (已更新) CompanyOldName: CompanyOldNameVo (已更新) Company: CompanyVo (已更新) Contract: ContractVo (已更新) PurchaseReceipt: PurchaseReceiptVo (已更新)

ContractItem: ContractItemVo (已检查) VolumeSize: VolumeSizeVo (已检查) Bank: BankVo (已检查) Contract: ContractVo (已检查) ContractBidVendor: ContractBidVendorVo (已检查) ContractCatalog: ContractCatalogVo (已检查) ContractFile: ContractFileVo (已检查) ContractFileTypeLocal: ContractFileTypeLocalVo (已检查) Employee: EmployeeVo (已检查) Department: DepartmentVo (已检查) Inventory: InventoryVo (已更新) InventoryCatalog: InventoryCatalogVo (已检查) Project: ProjectVo (已检查) ProjectIndustry: ProjectIndustryVo (已检查) ProjectSaleType: ProjectSaleTypeVo (已检查) Company: CompanyVo (已检查) Invoice: InvoiceVo (已更新) PurchaseOrder: PurchaseOrderVo (已更新) SalesOrder: SalesOrderVo (已更新) ProjectBid: ProjectBidVo (已创建) ProjectQuotation: ProjectQuotationVo (已创建) CompanyBankAccount: CompanyBankAccountVo (已检查) ExtendVendorInfo: ExtendVendorInfoVo (已创建) ProjectCost: ProjectCostVo (已更新) VendorGroup: VendorGroupVo (已创建) VendorGroupRequireFileType: VendorGroupRequireFileTypeVo (已创建)