refactor(vo): 重构VO对象结构,统一字段命名和接口实现
重构所有VO对象,统一字段命名规范,移除冗余字段,优化接口实现 新增Voable接口用于VO对象转换 调整BaseViewModel和ProjectBasedViewModel接口定义 更新相关服务和控制器以适应VO对象变更
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package com.ecep.contract.task;
|
||||
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.model.ContractGroup;
|
||||
import com.ecep.contract.service.ContractService;
|
||||
import com.ecep.contract.vo.ContractGroupVo;
|
||||
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -11,7 +11,7 @@ public class ContractFilesRebuildAllTasker extends Tasker<Object>{
|
||||
private ContractService contractService;
|
||||
|
||||
@Setter
|
||||
private ContractGroup group;
|
||||
private ContractGroupVo group;
|
||||
|
||||
@Override
|
||||
protected Object execute(MessageHolder holder) throws Exception {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ecep.contract.task;
|
||||
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.model.Company;
|
||||
import com.ecep.contract.vo.CompanyVo;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -9,7 +9,7 @@ import lombok.Setter;
|
||||
public class ContractRepairByCompanyTask extends Tasker<Object> {
|
||||
@Getter
|
||||
@Setter
|
||||
private Company company;
|
||||
private CompanyVo company;
|
||||
@Getter
|
||||
boolean repaired = false;
|
||||
|
||||
|
||||
@@ -2,11 +2,10 @@ package com.ecep.contract.task;
|
||||
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.SpringApp;
|
||||
import com.ecep.contract.WebSocketClientService;
|
||||
import com.ecep.contract.WebSocketClientTasker;
|
||||
import com.ecep.contract.model.Contract;
|
||||
import com.ecep.contract.service.ContractService;
|
||||
import com.ecep.contract.vo.ContractVo;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -16,7 +15,7 @@ import lombok.Setter;
|
||||
public class ContractRepairTask extends Tasker<Object> implements WebSocketClientTasker {
|
||||
@Getter
|
||||
@Setter
|
||||
private Contract contract;
|
||||
private ContractVo contract;
|
||||
|
||||
@Getter
|
||||
boolean repaired = false;
|
||||
@@ -42,10 +41,10 @@ public class ContractRepairTask extends Tasker<Object> implements WebSocketClien
|
||||
super.updateProgress(current, total);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Object execute(MessageHolder holder) throws Exception {
|
||||
updateTitle("修复合同 " + contract.toPrettyString());
|
||||
ContractService contractService = SpringApp.getBean(ContractService.class);
|
||||
updateTitle("修复合同 " + contractService.getStringConverter().toString(contract));
|
||||
return callRemoteTask(holder, getLocale(), contract.getId());
|
||||
}
|
||||
|
||||
|
||||
@@ -13,8 +13,7 @@ import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.ecep.contract.controller.project.cost.ProjectCostImportItemsFromContractsTasker;
|
||||
import com.ecep.contract.util.ProxyUtils;
|
||||
import com.ecep.contract.vo.*;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import com.ecep.contract.CompanyCustomerFileType;
|
||||
@@ -23,23 +22,10 @@ import com.ecep.contract.ContractPayWay;
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.MyDateTimeUtils;
|
||||
import com.ecep.contract.SpringApp;
|
||||
import com.ecep.contract.model.Company;
|
||||
import com.ecep.contract.model.CompanyCustomer;
|
||||
import com.ecep.contract.model.CompanyCustomerFile;
|
||||
import com.ecep.contract.model.CompanyExtendInfo;
|
||||
import com.ecep.contract.controller.project.cost.ProjectCostImportItemsFromContractsTasker;
|
||||
import com.ecep.contract.model.Contract;
|
||||
import com.ecep.contract.model.ContractBidVendor;
|
||||
import com.ecep.contract.model.ContractFile;
|
||||
import com.ecep.contract.model.ContractFileTypeLocal;
|
||||
import com.ecep.contract.model.Employee;
|
||||
import com.ecep.contract.model.ExtendVendorInfo;
|
||||
import com.ecep.contract.model.Project;
|
||||
import com.ecep.contract.model.ProjectBid;
|
||||
import com.ecep.contract.model.ProjectCost;
|
||||
import com.ecep.contract.model.ProjectQuotation;
|
||||
import com.ecep.contract.model.ProjectSaleType;
|
||||
import com.ecep.contract.model.ProjectSaleTypeRequireFileType;
|
||||
import com.ecep.contract.model.VendorGroup;
|
||||
import com.ecep.contract.model.VendorGroupRequireFileType;
|
||||
import com.ecep.contract.service.CompanyCustomerFileService;
|
||||
import com.ecep.contract.service.CompanyCustomerService;
|
||||
@@ -284,38 +270,51 @@ public class ContractVerifyComm {
|
||||
* @param contract 要验证的合同对象
|
||||
* @param holder 输出
|
||||
*/
|
||||
public void verify(Contract contract, MessageHolder holder) {
|
||||
public void verify(ContractVo contract, MessageHolder holder) {
|
||||
LocalDate setupDate = contract.getSetupDate();
|
||||
if (setupDate == null) {
|
||||
holder.error("未设置合同提交日期");
|
||||
return;
|
||||
}
|
||||
|
||||
Company company = contract.getCompany();
|
||||
if (company == null) {
|
||||
Integer companyId = contract.getCompanyId();
|
||||
if (companyId == null) {
|
||||
holder.error("未关联企业");
|
||||
return;
|
||||
}
|
||||
CompanyVo company = getCompanyService().findById(companyId);
|
||||
if (company == null) {
|
||||
holder.error("合同关联公司 #" + companyId + " 异常,无法读取");
|
||||
return;
|
||||
}
|
||||
company = getCompanyService().findById(company.getId());
|
||||
verify(company, contract, holder);
|
||||
}
|
||||
|
||||
public void verify(Company company, Contract contract, MessageHolder holder) {
|
||||
public void verify(CompanyVo company, ContractVo contract, MessageHolder holder) {
|
||||
LocalDate setupDate = contract.getSetupDate();
|
||||
Integer handlerId = contract.getHandlerId();
|
||||
if (handlerId == null) {
|
||||
handlerId = contract.getEmployeeId();
|
||||
}
|
||||
if (handlerId == null) {
|
||||
holder.error("未关联处理人");
|
||||
return;
|
||||
}
|
||||
|
||||
Employee employee = contract.getEmployee();
|
||||
EmployeeVo employee = getEmployeeService().findById(handlerId);
|
||||
if (employee == null) {
|
||||
holder.error("未关联业务员");
|
||||
holder.error("关联处理人 #" + handlerId + " 异常,无法读取");
|
||||
return;
|
||||
}
|
||||
|
||||
if (contract.getAmount() == null || contract.getAmount() <= 0) {
|
||||
holder.error("合同金额小于等于0");
|
||||
}
|
||||
|
||||
CompanyExtendInfo companyExtendInfo = getCompanyExtendInfoService().findByCompany(company);
|
||||
CompanyExtendInfoVo companyExtendInfo = getCompanyExtendInfoService().findByCompany(company);
|
||||
if (companyExtendInfo == null) {
|
||||
CompanyExtendInfo extendInfo = new CompanyExtendInfo();
|
||||
extendInfo.setCompany(company);
|
||||
CompanyExtendInfoVo extendInfo = new CompanyExtendInfoVo();
|
||||
extendInfo.setCompanyId(company.getId());
|
||||
extendInfo.setDisableVerify(false);
|
||||
companyExtendInfo = getCompanyExtendInfoService().save(extendInfo);
|
||||
}
|
||||
@@ -349,9 +348,9 @@ public class ContractVerifyComm {
|
||||
verifyAsCustomer(company, companyExtendInfo, contract, holder);
|
||||
|
||||
// 销售合同下的采购合同
|
||||
List<Contract> list = getContractService().findAllBySaleContract(contract);
|
||||
List<ContractVo> list = getContractService().findAllBySaleContract(contract);
|
||||
if (!list.isEmpty()) {
|
||||
for (Contract v : list) {
|
||||
for (ContractVo v : list) {
|
||||
MessageHolder subHolder = holder.sub(v.getCode() + " -> ");
|
||||
subHolder.info("采购合同 : " + v.getName());
|
||||
verify(v, subHolder);
|
||||
@@ -394,30 +393,31 @@ public class ContractVerifyComm {
|
||||
}
|
||||
}
|
||||
|
||||
private void verifyAsVendor(Company company, Contract contract, MessageHolder holder) {
|
||||
private void verifyAsVendor(CompanyVo company, ContractVo contract, MessageHolder holder) {
|
||||
// 供应商,检查评价表
|
||||
ExtendVendorInfo vendorInfo = getExtendVendorInfoService().findByContract(contract);
|
||||
ExtendVendorInfoVo vendorInfo = getExtendVendorInfoService().findByContract(contract);
|
||||
if (vendorInfo == null) {
|
||||
ExtendVendorInfo info = getExtendVendorInfoService().newInstanceByContract(contract);
|
||||
ExtendVendorInfoVo info = getExtendVendorInfoService().newInstanceByContract(contract);
|
||||
vendorInfo = getExtendVendorInfoService().save(info);
|
||||
holder.info("创建供应商信息 #" + vendorInfo.getId());
|
||||
}
|
||||
VendorGroup group = vendorInfo.getGroup();
|
||||
Integer groupId = vendorInfo.getGroupId();
|
||||
VendorGroupVo group = vendorGroupService.findById(groupId);
|
||||
boolean assignedProvider = vendorInfo.isAssignedProvider();
|
||||
if (assignedProvider) {
|
||||
holder.debug("采购信息中设定为指定供应商");
|
||||
}
|
||||
|
||||
if (group != null) {
|
||||
group = getVendorGroupService().findById(group.getId());
|
||||
vendorInfo.setGroup(group);
|
||||
group = getVendorGroupService().findById(groupId);
|
||||
vendorInfo.setGroupId(group.getId());
|
||||
}
|
||||
if (verifyCustomerSubContractDate.get()) {
|
||||
// 检查子合同日期是否在销售合同之后
|
||||
if (!vendorInfo.isPrePurchase()) {
|
||||
String parentCode = contract.getParentCode();
|
||||
if (StringUtils.hasText(parentCode)) {
|
||||
Contract parent = getContractService().findByCode(parentCode);
|
||||
ContractVo parent = getContractService().findByCode(parentCode);
|
||||
if (parent != null) {
|
||||
if (contract.getSetupDate().isBefore(parent.getSetupDate())) {
|
||||
holder.warn("采购合同:" + contract.getCode() + " 提交日期在销售合同之前");
|
||||
@@ -436,13 +436,14 @@ public class ContractVerifyComm {
|
||||
}
|
||||
}
|
||||
|
||||
private void verifyVendorFile(VendorGroup group, boolean assignedProvider, Contract contract,
|
||||
private void verifyVendorFile(VendorGroupVo group, boolean assignedProvider, ContractVo contract,
|
||||
MessageHolder holder) {
|
||||
if (group == null) {
|
||||
return;
|
||||
}
|
||||
boolean loseFile = false;
|
||||
List<ContractFile> files = getContractFileService().findAllByContract(contract);
|
||||
ContractFileService fileService = getContractFileService();
|
||||
List<ContractFileVo> files = fileService.findAllByContract(contract);
|
||||
List<VendorGroupRequireFileType> list = getVendorGroupRequireFileTypeService().findByGroupId(group.getId());
|
||||
if (list != null && !list.isEmpty()) {
|
||||
for (VendorGroupRequireFileType item : list) {
|
||||
@@ -473,16 +474,16 @@ public class ContractVerifyComm {
|
||||
holder.error("未上报供应商比价");
|
||||
} else {
|
||||
for (ContractBidVendor bidVendor : bidVendors) {
|
||||
ContractFile contractFile = bidVendor.getQuotationSheet();
|
||||
ContractFileVo contractFile = fileService.findById(bidVendor.getQuotationSheet().getId());
|
||||
if (contractFile == null) {
|
||||
if (requireQuotation && bidVendor.getCompany().equals(contract.getCompany())) {
|
||||
if (requireQuotation && bidVendor.getCompany().getId().equals(contract.getCompanyId())) {
|
||||
holder.debug("供应商类型启用了允许选中供应商不必须要有报价表");
|
||||
} else {
|
||||
holder.error("供应商比价:" + bidVendor.getCompany().getName() + " 未上传/关联报价表");
|
||||
loseFile = true;
|
||||
}
|
||||
} else {
|
||||
contractFile = getContractFileService().findById(contractFile.getId());
|
||||
contractFile = fileService.findById(contractFile.getId());
|
||||
ContractFileType type = contractFile.getType();
|
||||
if (type != ContractFileType.QuotationSheet) {
|
||||
holder.error("供应商比价:" + contractFile.getFileName() + " 报价表记录异常,类型错误");
|
||||
@@ -518,11 +519,11 @@ public class ContractVerifyComm {
|
||||
return fileTypeLocal.getValue();
|
||||
}
|
||||
|
||||
private boolean hasFileType(List<ContractFile> files, ContractFileType fileType) {
|
||||
private boolean hasFileType(List<ContractFileVo> files, ContractFileType fileType) {
|
||||
if (files == null || files.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
for (ContractFile file : files) {
|
||||
for (ContractFileVo file : files) {
|
||||
if (file.getType() == fileType) {
|
||||
return true;
|
||||
}
|
||||
@@ -530,11 +531,12 @@ public class ContractVerifyComm {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void verifyAsCustomer(Company company, CompanyExtendInfo companyExtendInfo, Contract contract,
|
||||
private void verifyAsCustomer(CompanyVo company, CompanyExtendInfoVo companyExtendInfo, ContractVo contract,
|
||||
MessageHolder holder) {
|
||||
boolean valiad = true;
|
||||
Project project = contract.getProject();
|
||||
if (project == null) {
|
||||
ProjectVo project = null;
|
||||
Integer projectId = contract.getProject();
|
||||
if (projectId == null) {
|
||||
// 收款的合同时,检查是否关联了项目,如果没有则创建
|
||||
if (contract.getPayWay() == ContractPayWay.RECEIVE) {
|
||||
project = getProjectService().findByCode(contract.getCode());
|
||||
@@ -548,30 +550,28 @@ public class ContractVerifyComm {
|
||||
throw new RuntimeException("code=" + contract.getCode(), e);
|
||||
}
|
||||
}
|
||||
contract.setProject(project);
|
||||
contract.setProject(project.getId());
|
||||
contract = getContractService().save(contract);
|
||||
}
|
||||
}
|
||||
if (project != null) {
|
||||
project = getProjectService().findById(project.getId());
|
||||
// fixed
|
||||
contract.setProject(project);
|
||||
} else {
|
||||
project = getProjectService().findById(projectId);
|
||||
}
|
||||
|
||||
if (project != null) {
|
||||
holder.info("验证项目信息:" + project.getCode() + " " + project.getName());
|
||||
verifyProject(contract, project, holder.sub("项目"));
|
||||
|
||||
ProjectSaleType saleType = project.getSaleType();
|
||||
if (!ProxyUtils.isInitialized(saleType)) {
|
||||
saleType = getSaleTypeService().findById(saleType.getId());
|
||||
}
|
||||
if (saleType != null) {
|
||||
if (getContractService().existsContractPath(contract)) {
|
||||
saleType = getSaleTypeService().findById(saleType.getId());
|
||||
project.setSaleType(saleType);
|
||||
if (!contract.getPath().startsWith(saleType.getPath())) {
|
||||
holder.error("合同目录未在销售类型目录下");
|
||||
Integer saleTypeId = project.getSaleTypeId();
|
||||
|
||||
if (saleTypeId != null) {
|
||||
ProjectSaleTypeVo saleType = getSaleTypeService().findById(saleTypeId);
|
||||
if (saleType != null) {
|
||||
if (getContractService().existsContractPath(contract)) {
|
||||
saleType = getSaleTypeService().findById(saleType.getId());
|
||||
project.setSaleTypeId(saleType.getId());
|
||||
if (!contract.getPath().startsWith(saleType.getPath())) {
|
||||
holder.error("合同目录未在销售类型目录下");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -594,18 +594,19 @@ public class ContractVerifyComm {
|
||||
/**
|
||||
* 客户,检查评估表
|
||||
*/
|
||||
private boolean verifyCustomerContract(Contract contract, MessageHolder holder) {
|
||||
private boolean verifyCustomerContract(ContractVo contract, MessageHolder holder) {
|
||||
if (!verifyCustomer.get()) {
|
||||
return false;
|
||||
}
|
||||
boolean valid = true;
|
||||
Company company = contract.getCompany();
|
||||
Integer companyId = contract.getCompanyId();
|
||||
CompanyVo company = getCompanyService().findById(companyId);
|
||||
if (company == null) {
|
||||
holder.warn("合同未关联公司");
|
||||
valid = false;
|
||||
}
|
||||
|
||||
CompanyCustomer companyCustomer = getCompanyCustomerService().findByCompany(company);
|
||||
CompanyCustomerVo companyCustomer = getCompanyCustomerService().findByCompany(company);
|
||||
if (companyCustomer == null) {
|
||||
holder.warn("合同未关联客户");
|
||||
valid = false;
|
||||
@@ -626,7 +627,7 @@ public class ContractVerifyComm {
|
||||
return valid;
|
||||
}
|
||||
|
||||
private boolean verifyCustomerFileByContract(CompanyCustomer companyCustomer, Contract contract,
|
||||
private boolean verifyCustomerFileByContract(CompanyCustomerVo companyCustomer, ContractVo contract,
|
||||
MessageHolder holder) {
|
||||
List<LocalDate> verifyDates = new ArrayList<>();
|
||||
LocalDate minDate = LocalDate.of(2022, 1, 1);
|
||||
@@ -679,14 +680,14 @@ public class ContractVerifyComm {
|
||||
}
|
||||
|
||||
// 客户
|
||||
List<CompanyCustomerFile> files = getCompanyCustomerFileService().findAllByCustomer(companyCustomer);
|
||||
List<CompanyCustomerFileVo> files = getCompanyCustomerFileService().findAllByCustomer(companyCustomer);
|
||||
if (files == null || files.isEmpty()) {
|
||||
holder.warn("未见客户评估表");
|
||||
return false;
|
||||
}
|
||||
|
||||
for (LocalDate verifyDate : verifyDates) {
|
||||
CompanyCustomerFile customerFile = files.stream()
|
||||
CompanyCustomerFileVo customerFile = files.stream()
|
||||
.filter(v -> v.getSignDate() != null && v.isValid())
|
||||
.filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm)
|
||||
.filter(v -> MyDateTimeUtils.dateValidFilter(verifyDate, v.getSignDate(),
|
||||
@@ -697,10 +698,10 @@ public class ContractVerifyComm {
|
||||
}
|
||||
}
|
||||
|
||||
CompanyCustomerFile latestFile = files.stream()
|
||||
CompanyCustomerFileVo latestFile = files.stream()
|
||||
.filter(v -> v.getSignDate() != null && v.isValid())
|
||||
.filter(v -> v.getType() == CompanyCustomerFileType.EvaluationForm)
|
||||
.max(Comparator.comparing(CompanyCustomerFile::getSignDate))
|
||||
.max(Comparator.comparing(CompanyCustomerFileVo::getSignDate))
|
||||
.orElse(null);
|
||||
|
||||
if (latestFile == null) {
|
||||
@@ -713,13 +714,20 @@ public class ContractVerifyComm {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void verifyProject(Contract contract, Project project, MessageHolder holder) {
|
||||
ProjectSaleType saleType = project.getSaleType();
|
||||
if (saleType == null) {
|
||||
private void verifyProject(ContractVo contract, ProjectVo project, MessageHolder holder) {
|
||||
Integer saleTypeId = project.getSaleTypeId();
|
||||
ProjectSaleTypeVo saleType = null;
|
||||
if (saleTypeId == null) {
|
||||
String code = contract.getCode();
|
||||
if (code != null && code.length() > 5) {
|
||||
saleType = getSaleTypeService().findByCode(code.substring(0, 1));
|
||||
if (saleType != null) {
|
||||
project.setSaleTypeId(saleType.getId());
|
||||
holder.info("根据合同代码设置项目销售类型:" + saleType.getName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
saleType = getSaleTypeService().findById(saleTypeId);
|
||||
}
|
||||
|
||||
if (saleType == null) {
|
||||
@@ -733,12 +741,12 @@ public class ContractVerifyComm {
|
||||
boolean needImport = false;
|
||||
|
||||
ProjectCostService projectCostService = getProjectCostService();
|
||||
ProjectCost autoCost = projectCostService.findAutoCostByProject(project);
|
||||
ProjectCostVo autoCost = projectCostService.findAutoCostByProject(project);
|
||||
if (autoCost == null) {
|
||||
// 创建 V0 项目成本
|
||||
ProjectCost cost = projectCostService.newInstanceByProject(project);
|
||||
ProjectCostVo cost = projectCostService.newInstanceByProject(project);
|
||||
cost.setVersion(0);
|
||||
cost.setApplicant(getEmployeeService().findById(EmployeeService.DEFAULT_SYSTEM_EMPLOYEE_ID));
|
||||
cost.setApplicantId(EmployeeService.DEFAULT_SYSTEM_EMPLOYEE_ID);
|
||||
cost.setApplyTime(LocalDateTime.now());
|
||||
cost.setDescription("自动导入");
|
||||
autoCost = projectCostService.save(cost);
|
||||
@@ -756,7 +764,7 @@ public class ContractVerifyComm {
|
||||
|
||||
if (needImport && !autoCost.isImportLock()) {
|
||||
holder.debug("更新V0项目成本");
|
||||
ProjectCost cost = projectCostService.findAutoCostByProject(project);
|
||||
ProjectCostVo cost = projectCostService.findAutoCostByProject(project);
|
||||
if (cost == null) {
|
||||
cost = projectCostService.newInstanceByProject(project);
|
||||
cost.setVersion(0);
|
||||
@@ -768,15 +776,15 @@ public class ContractVerifyComm {
|
||||
}
|
||||
|
||||
// 检查最新的项目成本,默认 V1
|
||||
ProjectCost latestCost = projectCostService.findLatestByProject(project);
|
||||
ProjectCostVo latestCost = projectCostService.findLatestByProject(project);
|
||||
if (latestCost == null) {
|
||||
ProjectCost cost = projectCostService.newInstanceByProject(project);
|
||||
ProjectCostVo cost = projectCostService.newInstanceByProject(project);
|
||||
cost.setVersion(1);
|
||||
Employee applicant = project.getApplicant();
|
||||
if (applicant == null) {
|
||||
applicant = contract.getEmployee();
|
||||
Integer applicantId = project.getApplicantId();
|
||||
if (applicantId == null) {
|
||||
applicantId = contract.getEmployeeId();
|
||||
}
|
||||
cost.setApplicant(applicant);
|
||||
cost.setApplicantId(applicantId);
|
||||
cost.setApplyTime(project.getCreated().atTime(LocalTime.now()));
|
||||
latestCost = projectCostService.save(cost);
|
||||
} else {
|
||||
@@ -797,22 +805,22 @@ public class ContractVerifyComm {
|
||||
}
|
||||
|
||||
if (project.isUseBid()) {
|
||||
List<ProjectBid> bids = getProjectBidService().findAllByProject(project);
|
||||
List<ProjectBidVo> bids = getProjectBidService().findAllByProject(project);
|
||||
if (bids.isEmpty()) {
|
||||
holder.warn("投标未创建");
|
||||
}
|
||||
}
|
||||
if (project.isUseOffer()) {
|
||||
List<ProjectQuotation> quotations = getProjectQuotationService().findAllByProject(project);
|
||||
List<ProjectQuotationVo> quotations = getProjectQuotationService().findAllByProject(project);
|
||||
if (quotations.isEmpty()) {
|
||||
holder.warn("报价未创建");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean verifyContractFileAsCustomer(Project project, Contract contract, MessageHolder holder) {
|
||||
private boolean verifyContractFileAsCustomer(ProjectVo project, ContractVo contract, MessageHolder holder) {
|
||||
boolean loseFile = false;
|
||||
List<ContractFile> files = getContractFileService().findAllByContract(contract);
|
||||
List<ContractFileVo> files = getContractFileService().findAllByContract(contract);
|
||||
if (project != null) {
|
||||
// 投标
|
||||
if (project.isUseBid()) {
|
||||
@@ -834,12 +842,12 @@ public class ContractVerifyComm {
|
||||
loseFile = true;
|
||||
}
|
||||
}
|
||||
|
||||
ProjectSaleType saleType = project.getSaleType();
|
||||
Integer saleTypeId = project.getSaleTypeId();
|
||||
ProjectSaleTypeVo saleType = getSaleTypeService().findById(saleTypeId);
|
||||
if (saleType != null) {
|
||||
List<ProjectSaleTypeRequireFileType> list = getSaleTypeRequireFileTypeService()
|
||||
List<ProjectSaleTypeRequireFileTypeVo> list = getSaleTypeRequireFileTypeService()
|
||||
.findBySaleTypeId(saleType.getId());
|
||||
for (ProjectSaleTypeRequireFileType item : list) {
|
||||
for (ProjectSaleTypeRequireFileTypeVo item : list) {
|
||||
ContractFileType fileType = item.getFileType();
|
||||
if (fileType != null) {
|
||||
if (!hasFileType(files, fileType)) {
|
||||
|
||||
@@ -24,10 +24,10 @@ import com.ecep.contract.Message;
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.SpringApp;
|
||||
import com.ecep.contract.controller.contract.ContractVerifyWindowController;
|
||||
import com.ecep.contract.model.Contract;
|
||||
import com.ecep.contract.model.Employee;
|
||||
import com.ecep.contract.service.ContractService;
|
||||
import com.ecep.contract.service.EmployeeService;
|
||||
import com.ecep.contract.vo.ContractVo;
|
||||
import com.ecep.contract.vo.EmployeeVo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -64,13 +64,14 @@ public class ContractVerifyResultExportAsExcelFileTasker extends Tasker<Object>
|
||||
protected Object execute(MessageHolder holder) throws Exception {
|
||||
holder.debug("共有信息 " + models.size() + " 条");
|
||||
|
||||
Employee unnamed = new Employee();
|
||||
EmployeeVo unnamed = new EmployeeVo();
|
||||
unnamed.setName("未命名");
|
||||
|
||||
// 按员工分组
|
||||
Map<Employee, List<ContractVerifyWindowController.Model>> listMap = models.stream()
|
||||
Map<EmployeeVo, List<ContractVerifyWindowController.Model>> listMap = models.stream()
|
||||
.collect(Collectors.groupingBy(model -> {
|
||||
Employee employee = model.getEmployee().get();
|
||||
Integer employeeId = model.getEmployee().get();
|
||||
EmployeeVo employee = getEmployeeService().findById(employeeId);
|
||||
if (employee == null) {
|
||||
employee = unnamed;
|
||||
}
|
||||
@@ -89,8 +90,8 @@ public class ContractVerifyResultExportAsExcelFileTasker extends Tasker<Object>
|
||||
wrapStyle.setWrapText(true); // 关键设置:自动换行
|
||||
|
||||
AtomicInteger counter = new AtomicInteger();
|
||||
for (Map.Entry<Employee, List<ContractVerifyWindowController.Model>> entry : listMap.entrySet()) {
|
||||
Employee employee = entry.getKey();
|
||||
for (Map.Entry<EmployeeVo, List<ContractVerifyWindowController.Model>> entry : listMap.entrySet()) {
|
||||
EmployeeVo employee = entry.getKey();
|
||||
List<ContractVerifyWindowController.Model> list = entry.getValue();
|
||||
|
||||
//
|
||||
@@ -118,7 +119,7 @@ public class ContractVerifyResultExportAsExcelFileTasker extends Tasker<Object>
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
try {
|
||||
ContractVerifyWindowController.Model model = list.get(i);
|
||||
Contract contract = getContractService().findByCode(model.getCode().get());
|
||||
ContractVo contract = getContractService().findByCode(model.getCode().get());
|
||||
Row row = sheet.createRow(i + 1);
|
||||
setCellValue(sheet, row.getRowNum(), 0, model.getCode().get());
|
||||
setCellValue(sheet, row.getRowNum(), 1, model.getName().get());
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.ecep.contract.task;
|
||||
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.model.Contract;
|
||||
import com.ecep.contract.vo.ContractVo;
|
||||
|
||||
import lombok.Setter;
|
||||
|
||||
public class ContractVerifyTasker extends Tasker<Object> {
|
||||
@Setter
|
||||
private Contract contract;
|
||||
private ContractVo contract;
|
||||
|
||||
@Override
|
||||
protected Object execute(MessageHolder holder) throws Exception {
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
package com.ecep.contract.task;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeansException;
|
||||
|
||||
import com.ecep.contract.Desktop;
|
||||
import com.ecep.contract.Message;
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.SpringApp;
|
||||
import com.ecep.contract.model.Employee;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.service.EmployeeService;
|
||||
import com.ecep.contract.service.SysConfService;
|
||||
import com.ecep.contract.vo.EmployeeVo;
|
||||
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.concurrent.Task;
|
||||
import javafx.scene.control.ListCell;
|
||||
import lombok.Setter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeansException;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Level;
|
||||
|
||||
public abstract class Tasker<T> extends Task<T> {
|
||||
private static final Logger logger = LoggerFactory.getLogger(Tasker.class);
|
||||
@Setter
|
||||
protected java.util.function.Predicate<Message> messageHandler;
|
||||
private Employee currentUser;
|
||||
private EmployeeVo currentUser;
|
||||
@Setter
|
||||
private CompanyService companyService;
|
||||
@Setter
|
||||
@@ -57,7 +59,7 @@ public abstract class Tasker<T> extends Task<T> {
|
||||
return SpringApp.getBean(requiredType);
|
||||
}
|
||||
|
||||
public Employee getCurrentUser() {
|
||||
public EmployeeVo getCurrentUser() {
|
||||
if (currentUser == null) {
|
||||
currentUser = getEmployeeService().findById(Desktop.instance.getActiveEmployeeId());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user