1.0.67 合同关联付款账户并格式化为付款账户信息

dev
yinq 2 days ago
parent 182c5e971e
commit f45c9f1f55

@ -10,10 +10,9 @@ import org.dromara.oa.base.domain.vo.BaseTemplateVariableVo;
import org.dromara.oa.base.domain.vo.TemplateVariableAssignVo;
import org.dromara.oa.base.service.IBaseTemplateVariableService;
import org.dromara.oa.base.service.ITemplateVariableAssignService;
import org.dromara.oa.erp.domain.bo.ErpContractInfoBo;
import org.dromara.oa.erp.domain.bo.ErpContractMaterialBo;
import org.dromara.oa.erp.domain.vo.ErpContractInfoVo;
import org.dromara.oa.erp.domain.vo.ErpContractMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpContractPaymentMethodVo;
import org.dromara.oa.erp.service.IErpContractInfoService;
import org.dromara.oa.erp.service.IErpContractMaterialService;
import lombok.RequiredArgsConstructor;
@ -79,7 +78,7 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
* @return
*/
private List<TemplateVariableAssignVo> assignContractTemplateVariables(TemplateVariableAssignRequest request) {
// 1. 根据模板类型查询所有模板变量配置
// 根据模板类型查询所有模板变量配置
BaseTemplateVariableBo queryBo = new BaseTemplateVariableBo();
queryBo.setTemplateType(request.getTemplateType());
List<BaseTemplateVariableVo> allTemplateVariables = baseTemplateVariableService.queryList(queryBo);
@ -87,16 +86,23 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
// 构建变量名到配置的映射
Map<String, BaseTemplateVariableVo> variableMap = buildVariableMap(allTemplateVariables);
// 2. 查询合同信息
// 查询合同信息
ErpContractInfoVo contractInfo = erpContractInfoService.queryById(request.getContractId());
if (StringUtils.isNull(contractInfo)) {
throw new ServiceException("合同信息不存在合同ID" + request.getContractId());
}
// 3. 合同物料列表
// 合同物料列表
List<ErpContractMaterialVo> contractMaterials = contractInfo.getContractMaterialList();
// 4. 为所有模板变量赋值
// 付款方式
List<ErpContractPaymentMethodVo> contractPaymentMethodList = contractInfo.getContractPaymentMethodList();
if (!contractPaymentMethodList.isEmpty()) {
String paymentMethod = contractPaymentMethodList.stream()
.map(ErpContractPaymentMethodVo::getPaymentDescription)
.collect(Collectors.joining("\n"));
contractInfo.setPaymentMethod(paymentMethod);
}
// 为所有模板变量赋值
return buildAssignResultList(allTemplateVariables, variableMap, contractInfo, contractMaterials);
}

@ -132,6 +132,11 @@ public class ErpContractInfo extends TenantEntity {
*/
private String ossId;
/**
* ID
*/
private Long paymentAccountId;
/**
*
*/

@ -135,6 +135,11 @@ public class ErpContractInfoBo extends BaseEntity {
*/
private String ossId;
/**
* ID
*/
private Long paymentAccountId;
/**
*
*/

@ -12,6 +12,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import org.dromara.oa.erp.domain.vo.ErpContractPaymentMethodVo;
import org.dromara.oa.crm.domain.vo.CrmPaymentAccountVo;
import java.io.Serial;
import java.io.Serializable;
@ -92,9 +93,9 @@ public class ErpContractInfoVo implements Serializable {
private Long contractDeptId;
/**
*
*
*/
@ExcelProperty(value = "合同时间")
@ExcelProperty(value = "合同签订日期")
private Date contractDate;
/**
@ -164,6 +165,18 @@ public class ErpContractInfoVo implements Serializable {
@ExcelProperty(value = "附件ID")
private String ossId;
/**
* ID
*/
@ExcelProperty(value = "付款账户ID")
private Long paymentAccountId;
/**
*
*/
@ExcelProperty(value = "付款账户信息")
private String paymentAccountInfo;
/**
*
*/
@ -290,4 +303,10 @@ public class ErpContractInfoVo implements Serializable {
@ExcelDictFormat(dictType = "contract_template_flag")
private String contractTemplateFlag;
/**
*
*/
@ExcelProperty(value = "办公地")
private String detailedAddress;
}

@ -169,4 +169,11 @@ public class ErpContractMaterialVo implements Serializable {
@ExcelProperty(value = "序号")
private Long seq;
/**
*
*/
@ExcelProperty(value = "付款方式")
private String paymentMethod;
}

@ -27,6 +27,8 @@ import org.dromara.oa.erp.mapper.ErpContractMaterialMapper;
import org.dromara.oa.erp.mapper.ErpContractPaymentMethodMapper;
import org.dromara.oa.base.domain.bo.BaseRelationMaterialBo;
import org.dromara.oa.base.service.IBaseRelationMaterialService;
import org.dromara.oa.crm.domain.vo.CrmPaymentAccountVo;
import org.dromara.oa.crm.service.ICrmPaymentAccountService;
import org.dromara.workflow.api.RemoteWorkflowService;
import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.event.ProcessEvent;
@ -61,6 +63,8 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
private final IBaseRelationMaterialService baseRelationMaterialService;
private final ICrmPaymentAccountService crmPaymentAccountService;
@DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService;
@ -72,13 +76,24 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
*/
@Override
public ErpContractInfoVo queryById(Long contractId) {
ErpContractInfoVo contractInfoVo = baseMapper.selectVoById(contractId);
MPJLambdaWrapper<ErpContractInfo> infoLqw = JoinWrappers.lambda(ErpContractInfo.class)
.selectAll(ErpContractInfo.class)
.eq(contractId != null, ErpContractInfo::getContractId, contractId)
.eq("t.del_flag", "0");
List<ErpContractInfoVo> infoList = baseMapper.selectCustomErpContractInfoVoList(infoLqw);
ErpContractInfoVo contractInfoVo = infoList.isEmpty() ? null : infoList.get(0);
if (contractInfoVo == null) {
return null;
}
MPJLambdaWrapper<ErpContractMaterial> lqw = JoinWrappers.lambda(ErpContractMaterial.class)
.selectAll(ErpContractMaterial.class)
.eq(contractId != null, ErpContractMaterial::getContractId, contractId)
.eq("t.del_flag", "0");
List<ErpContractMaterialVo> contractMaterialList = contractMaterialMapper
.selectCustomErpContractMaterialVoList(lqw);
for (int i = 0; i < contractMaterialList.size(); i++) {
contractMaterialList.get(i).setSeq(i + 1L);
}
contractInfoVo.setContractMaterialList(contractMaterialList);
// 查询合同付款方式列表
MPJLambdaWrapper<ErpContractPaymentMethod> paymentLqw = JoinWrappers.lambda(ErpContractPaymentMethod.class)
@ -87,9 +102,46 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
.eq(ErpContractPaymentMethod::getDelFlag, "0");
List<ErpContractPaymentMethodVo> contractPaymentMethodList = contractPaymentMethodMapper.selectCustomErpContractPaymentMethodVoList(paymentLqw);
contractInfoVo.setContractPaymentMethodList(contractPaymentMethodList);
// 查询关联的付款账户并格式化为付款账户信息字符串
if (contractInfoVo.getPaymentAccountId() != null) {
CrmPaymentAccountVo paymentAccount = crmPaymentAccountService.queryById(contractInfoVo.getPaymentAccountId());
contractInfoVo.setPaymentAccountInfo(buildPaymentAccountInfo(paymentAccount));
} else {
contractInfoVo.setPaymentAccountInfo("");
}
return contractInfoVo;
}
/**
*
*
* @param paymentAccount
* @return
*/
private String buildPaymentAccountInfo(CrmPaymentAccountVo paymentAccount) {
if (paymentAccount == null) {
return "";
}
String accountType = paymentAccount.getAccountType();
String accountName = paymentAccount.getAccountName() != null ? paymentAccount.getAccountName() : "";
String accountNumber = paymentAccount.getAccountNumber() != null ? paymentAccount.getAccountNumber() : "";
String bankName = paymentAccount.getBankName() != null ? paymentAccount.getBankName() : "";
String bankCode = paymentAccount.getBankCode() != null ? paymentAccount.getBankCode() : "";
String swiftCode = paymentAccount.getSwiftCode() != null ? paymentAccount.getSwiftCode() : "";
StringBuilder sb = new StringBuilder();
sb.append(accountType).append("\n");
sb.append("账户名称:").append(accountName).append("\n");
sb.append("账户:").append(accountNumber).append("\n");
sb.append("开户行:").append(bankName).append("\n");
if (StringUtils.isNotBlank(swiftCode)) {
sb.append("SWIFT号").append(swiftCode);
} else {
sb.append("开户银行代码:").append(bankCode);
}
return sb.toString();
}
/**
*
*

@ -29,6 +29,7 @@
t.flow_status,
t.template_id,
t.oss_id,
t.payment_account_id,
t.payment_method,
t.signature_appendix,
t.internal_contract_code,
@ -53,7 +54,8 @@
c1.customer_name oneCustomerName,
c2.customer_name twoCustomerName,
d.dept_name,
u.nick_name contractManagerName
u.nick_name contractManagerName,
c1.detailed_address detailedAddress
from erp_contract_info t
left join crm_customer_info c1 on t.one_customer_id = c1.customer_id
left join crm_customer_info c2 on t.two_customer_id = c2.customer_id

Loading…
Cancel
Save