diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java index aa28992f..2e1578ec 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/base/service/impl/TemplateVariableAssignServiceImpl.java @@ -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 assignContractTemplateVariables(TemplateVariableAssignRequest request) { - // 1. 根据模板类型查询所有模板变量配置 + // 根据模板类型查询所有模板变量配置 BaseTemplateVariableBo queryBo = new BaseTemplateVariableBo(); queryBo.setTemplateType(request.getTemplateType()); List allTemplateVariables = baseTemplateVariableService.queryList(queryBo); @@ -87,16 +86,23 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig // 构建变量名到配置的映射 Map variableMap = buildVariableMap(allTemplateVariables); - // 2. 查询合同信息 + // 查询合同信息 ErpContractInfoVo contractInfo = erpContractInfoService.queryById(request.getContractId()); if (StringUtils.isNull(contractInfo)) { throw new ServiceException("合同信息不存在,合同ID:" + request.getContractId()); } - // 3. 合同物料列表 + // 合同物料列表 List contractMaterials = contractInfo.getContractMaterialList(); - - // 4. 为所有模板变量赋值 + // 付款方式 + List 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); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpContractInfo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpContractInfo.java index 2a02e82a..73f2e1a6 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpContractInfo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/ErpContractInfo.java @@ -132,6 +132,11 @@ public class ErpContractInfo extends TenantEntity { */ private String ossId; + /** + * 付款账户ID + */ + private Long paymentAccountId; + /** * 付款方式 */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java index 7729b2fd..17ebaed4 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/bo/ErpContractInfoBo.java @@ -135,6 +135,11 @@ public class ErpContractInfoBo extends BaseEntity { */ private String ossId; + /** + * 付款账户ID + */ + private Long paymentAccountId; + /** * 付款方式 */ diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractInfoVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractInfoVo.java index 5ece335b..d4672f4d 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractInfoVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractInfoVo.java @@ -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; + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractMaterialVo.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractMaterialVo.java index 477ccce9..87fb9421 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractMaterialVo.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/domain/vo/ErpContractMaterialVo.java @@ -169,4 +169,11 @@ public class ErpContractMaterialVo implements Serializable { @ExcelProperty(value = "序号") private Long seq; + /** + * 付款方式 + */ + @ExcelProperty(value = "付款方式") + private String paymentMethod; + + } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java index 9aa02a19..4120fa6e 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpContractInfoServiceImpl.java @@ -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 infoLqw = JoinWrappers.lambda(ErpContractInfo.class) + .selectAll(ErpContractInfo.class) + .eq(contractId != null, ErpContractInfo::getContractId, contractId) + .eq("t.del_flag", "0"); + List infoList = baseMapper.selectCustomErpContractInfoVoList(infoLqw); + ErpContractInfoVo contractInfoVo = infoList.isEmpty() ? null : infoList.get(0); + if (contractInfoVo == null) { + return null; + } MPJLambdaWrapper lqw = JoinWrappers.lambda(ErpContractMaterial.class) .selectAll(ErpContractMaterial.class) .eq(contractId != null, ErpContractMaterial::getContractId, contractId) .eq("t.del_flag", "0"); List contractMaterialList = contractMaterialMapper .selectCustomErpContractMaterialVoList(lqw); + for (int i = 0; i < contractMaterialList.size(); i++) { + contractMaterialList.get(i).setSeq(i + 1L); + } contractInfoVo.setContractMaterialList(contractMaterialList); // 查询合同付款方式列表 MPJLambdaWrapper paymentLqw = JoinWrappers.lambda(ErpContractPaymentMethod.class) @@ -87,9 +102,46 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService { .eq(ErpContractPaymentMethod::getDelFlag, "0"); List 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(); + } + /** * 分页查询合同信息列表 * diff --git a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpContractInfoMapper.xml b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpContractInfoMapper.xml index 87e14550..a3245b4a 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpContractInfoMapper.xml +++ b/ruoyi-modules/ruoyi-oa/src/main/resources/mapper/oa/erp/ErpContractInfoMapper.xml @@ -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