docs
This commit is contained in:
@@ -1,26 +1,68 @@
|
||||
# Contract-Manager 项目规则
|
||||
|
||||
## 技术栈规范
|
||||
|
||||
# server 模块
|
||||
Java 21
|
||||
Spring Boot 3.3.7
|
||||
Spring Data JPA 3.3.7
|
||||
MySQL 8.0.33
|
||||
Lombok 1.18.32
|
||||
POI 5.2.5
|
||||
PDFBox 3.0.1
|
||||
Redis
|
||||
### server 模块
|
||||
- Java 21
|
||||
- Spring Boot 3.3.7
|
||||
- Spring Data JPA 3.3.7
|
||||
- MySQL 8.0.33
|
||||
- Lombok 1.18.32
|
||||
- POI 5.2.5
|
||||
- PDFBox 3.0.1
|
||||
- Redis
|
||||
|
||||
# client 模块
|
||||
Java 21
|
||||
JavaFX 21
|
||||
ControlsFX 11.1.2
|
||||
Lombok 1.18.32
|
||||
caffeine 3.1.8
|
||||
.fxml 界面UI, /client/src/main/resources/ui/ 目录下
|
||||
websocket 与 server 模块通信
|
||||
### client 模块
|
||||
- Java 21
|
||||
- JavaFX 21
|
||||
- ControlsFX 11.1.2
|
||||
- Lombok 1.18.32
|
||||
- caffeine 3.1.8
|
||||
- .fxml 界面UI, 放置于 /client/src/main/resources/ui/ 目录下
|
||||
- websocket 与 server 模块通信
|
||||
|
||||
# common 模块
|
||||
### common 模块
|
||||
- Java 21
|
||||
- Lombok 1.18.32
|
||||
|
||||
## 文件命名规范
|
||||
- Java类名:使用驼峰命名法,首字母大写,如 `ContractService.java`
|
||||
- 接口名:使用驼峰命名法,首字母大写,以I开头,如 `IContractService.java`
|
||||
- 控制器类名:以Controller结尾,如 `ContractController.java`
|
||||
- 服务类名:以Service结尾,如 `ContractService.java`
|
||||
- 实体类名:使用驼峰命名法,首字母大写,如 `Contract.java`
|
||||
- FXML文件:使用小写字母和下划线,如 `contract_view.fxml`
|
||||
- SQL文件:表名使用大写和下划线,如 `CONTRACT_TYPE_LOCAL.sql`
|
||||
|
||||
## 目录结构规范
|
||||
- 源代码位于 `src/main/java` 目录
|
||||
- 资源文件位于 `src/main/resources` 目录
|
||||
- 测试代码位于 `src/test` 目录
|
||||
- 数据库脚本位于 `docs/db` 目录
|
||||
|
||||
## 数据库规范
|
||||
- 表名使用大写字母和下划线,如 `COMPANY_VENDOR_FILE_TYPE_LOCAL`
|
||||
- 字段名使用大写字母和下划线,如 `CREATE_DATE`
|
||||
- 主键命名为 `ID`
|
||||
- 外键命名格式为 `[关联表名]_ID`
|
||||
- 唯一约束命名格式为 `UK_[表名缩写]_[字段名]`
|
||||
|
||||
## 代码规范
|
||||
- 使用Lombok注解简化代码,如 `@Data`、`@Slf4j` 等
|
||||
- 类和方法应有适当的JavaDoc注释
|
||||
- 变量命名应清晰表达其含义
|
||||
- 避免魔法数字,使用常量替代
|
||||
- 异常处理使用统一的异常处理机制
|
||||
|
||||
## 忽略文件
|
||||
ignore:
|
||||
- .idea
|
||||
- target
|
||||
- *.iml
|
||||
- .gitignore
|
||||
- .gitattributes
|
||||
- out/
|
||||
- *.log
|
||||
- build/
|
||||
- .DS_Store
|
||||
- *.class
|
||||
|
||||
@@ -3,8 +3,10 @@ package com.ecep.contract.controller.customer;
|
||||
import com.ecep.contract.MyDateTimeUtils;
|
||||
import com.ecep.contract.controller.AbstEntityManagerSkin;
|
||||
import com.ecep.contract.controller.table.cell.CompanyTableCell;
|
||||
import com.ecep.contract.controller.table.cell.CustomerCatalogTableCell;
|
||||
import com.ecep.contract.service.CompanyCustomerService;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.service.CustomerCatalogService;
|
||||
import com.ecep.contract.vm.CompanyCustomerViewModel;
|
||||
import com.ecep.contract.vo.CompanyCustomerVo;
|
||||
import com.ecep.contract.vo.CompanyVo;
|
||||
@@ -31,7 +33,10 @@ public class CompanyCustomerManagerSkin
|
||||
public void initializeTable() {
|
||||
controller.idColumn.setCellValueFactory(param -> param.getValue().getId());
|
||||
controller.companyColumn.setCellValueFactory(param -> param.getValue().getCompany());
|
||||
controller.companyColumn.setCellFactory(param -> new CompanyTableCell<>(getCompanyService()));
|
||||
controller.companyColumn.setCellFactory(CompanyTableCell.forTableColumn(getCompanyService()));
|
||||
|
||||
controller.catalogColumn.setCellValueFactory(param -> param.getValue().getCatalog());
|
||||
controller.catalogColumn.setCellFactory(CustomerCatalogTableCell.forTableColumn(getBean(CustomerCatalogService.class)));
|
||||
|
||||
controller.developDateColumn.setCellValueFactory(param -> param.getValue().getDevelopDate());
|
||||
controller.pathColumn.setCellValueFactory(param -> param.getValue().getPath());
|
||||
|
||||
@@ -52,7 +52,7 @@ public class CompanyCustomerManagerWindowController
|
||||
* 客户所属公司,Company
|
||||
*/
|
||||
public TableColumn<CompanyCustomerViewModel, Integer> companyColumn;
|
||||
public TableColumn<CompanyCustomerViewModel, String> catalogColumn;
|
||||
public TableColumn<CompanyCustomerViewModel, Integer> catalogColumn;
|
||||
public TableColumn<CompanyCustomerViewModel, LocalDate> developDateColumn;
|
||||
public TableColumn<CompanyCustomerViewModel, String> pathColumn;
|
||||
public TableColumn<CompanyCustomerViewModel, String> createdColumn;
|
||||
|
||||
@@ -68,7 +68,7 @@ public class CustomerTabSkinSatisfactionSurvey
|
||||
bindLocalDateColumn(dateColumn, CustomerSatisfactionSurveyViewModel::getDate);
|
||||
bindNumberColumn(totalScoreColumn, CustomerSatisfactionSurveyViewModel::getTotalScore);
|
||||
applicantColumn.setCellValueFactory(param -> param.getValue().getApplicant());
|
||||
applicantColumn.setCellFactory(cell -> new EmployeeTableCell<>(getEmployeeService()));
|
||||
applicantColumn.setCellFactory(EmployeeTableCell.forTableColumn(getEmployeeService()));
|
||||
bindLocalDateTimeColumn(applyTimeColumn, CustomerSatisfactionSurveyViewModel::getApplyTime);
|
||||
bindColumn(descriptionColumn, CustomerSatisfactionSurveyViewModel::getDescription);
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ public class CompanyCustomerViewModel extends IdentityViewModel<CompanyCustomerV
|
||||
* 关联的企业,Company
|
||||
*/
|
||||
private SimpleObjectProperty<Integer> company = new SimpleObjectProperty<>();
|
||||
|
||||
private SimpleObjectProperty<Integer> catalog = new SimpleObjectProperty<>();
|
||||
/**
|
||||
* 发展日期
|
||||
*/
|
||||
@@ -46,6 +48,7 @@ public class CompanyCustomerViewModel extends IdentityViewModel<CompanyCustomerV
|
||||
public void updateFrom(CompanyCustomerVo c) {
|
||||
super.updateFrom(c);
|
||||
getCompany().set(c.getCompanyId());
|
||||
getCatalog().set(c.getCatalogId());
|
||||
getDevelopDate().set(c.getDevelopDate());
|
||||
getContact().set(c.getContactId());
|
||||
getPath().set(c.getPath());
|
||||
@@ -60,6 +63,10 @@ public class CompanyCustomerViewModel extends IdentityViewModel<CompanyCustomerV
|
||||
v.setCompanyId(company.get());
|
||||
modified = true;
|
||||
}
|
||||
if (!Objects.equals(catalog.get(), v.getCatalogId())) {
|
||||
v.setCatalogId(catalog.get());
|
||||
modified = true;
|
||||
}
|
||||
if (!Objects.equals(contact.get(), v.getContactId())) {
|
||||
v.setContactId(contact.get());
|
||||
modified = true;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<?import javafx.scene.layout.*?>
|
||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"
|
||||
xmlns:fx="http://javafx.com/fxml/1"
|
||||
fx:controller="com.ecep.contract.manager.ds.customer.controller.CustomerTabSkinSatisfactionSurvey">
|
||||
fx:controller="com.ecep.contract.controller.customer.CustomerTabSkinSatisfactionSurvey">
|
||||
<children>
|
||||
<VBox AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0"
|
||||
AnchorPane.topAnchor="5.0">
|
||||
@@ -41,7 +41,8 @@
|
||||
</TableView>
|
||||
<Pane prefHeight="50.0">
|
||||
<children>
|
||||
<Label layoutX="14.0" layoutY="7.0" text="相关项是U8系统中的客户,更新日期表示数据从U8系统中获取数据有变化时记录的日期,同步时间表示发生从U8系统中获取时的时间戳。"/>
|
||||
<Label layoutX="14.0" layoutY="7.0"
|
||||
text="以抽查的方式,使用电话或者现场要求客户对服务质量评价。"/>
|
||||
</children>
|
||||
</Pane>
|
||||
</children>
|
||||
|
||||
@@ -43,6 +43,14 @@ public class CompanyCustomer implements IdentityEntity, CompanyBasedEntity, Seri
|
||||
@ToString.Exclude
|
||||
private Company company;
|
||||
|
||||
/**
|
||||
* 客户分组
|
||||
*/
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "CUS_CLS")
|
||||
@ToString.Exclude
|
||||
private CustomerCatalog catalog;
|
||||
|
||||
/**
|
||||
* 发展日期
|
||||
*/
|
||||
@@ -97,6 +105,7 @@ public class CompanyCustomer implements IdentityEntity, CompanyBasedEntity, Seri
|
||||
CompanyCustomerVo vo = new CompanyCustomerVo();
|
||||
vo.setId(id);
|
||||
vo.setCompanyId(company != null ? company.getId() : null);
|
||||
vo.setCatalogId(catalog != null ? catalog.getId() : null);
|
||||
vo.setDevelopDate(developDate);
|
||||
vo.setPath(path);
|
||||
vo.setContactId(contact != null ? contact.getId() : null);
|
||||
|
||||
@@ -14,6 +14,7 @@ public class CompanyCustomerVo implements IdentityEntity, CompanyBasedVo {
|
||||
* 公司
|
||||
*/
|
||||
private Integer companyId;
|
||||
private Integer catalogId;
|
||||
private LocalDate developDate;
|
||||
private String path;
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ecep.contract.ds.project.service;
|
||||
import java.util.List;
|
||||
|
||||
import com.ecep.contract.QueryService;
|
||||
import com.ecep.contract.constant.ServiceConstant;
|
||||
import com.ecep.contract.model.CompanyBankAccount;
|
||||
import com.ecep.contract.util.SpecificationUtils;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
@@ -94,8 +95,15 @@ public class CustomerSatisfactionSurveyService
|
||||
@Override
|
||||
public Page<CustomerSatisfactionSurvey> findAll(JsonNode paramsNode, Pageable pageable) {
|
||||
Specification<CustomerSatisfactionSurvey> spec = null;
|
||||
if (paramsNode.has("searchText")) {
|
||||
spec = getSpecification(paramsNode.get("searchText").asText());
|
||||
if (paramsNode.has(ServiceConstant.KEY_SEARCH_TEXT)) {
|
||||
spec = getSpecification(paramsNode.get(ServiceConstant.KEY_SEARCH_TEXT).asText());
|
||||
}
|
||||
|
||||
if (paramsNode.has("project.customer")) {
|
||||
int customerId = paramsNode.get("project.customer").asInt();
|
||||
spec = SpecificationUtils.and(spec, (root, query, builder) -> {
|
||||
return builder.equal(root.get("project").get("customer").get("id"), customerId);
|
||||
});
|
||||
}
|
||||
// field
|
||||
spec = SpecificationUtils.andParam(spec, paramsNode, "project", "applicant");
|
||||
|
||||
Reference in New Issue
Block a user