fix: 金蝶付款申请部门编码改传项目业务部门自身金蝶编码
A103-3 付款申请保存 awrp_department_number 原与结算/申请/付款组织同传上溯平台公司编码,现拆分:组织三字段仍走 kingdeeOrgNumber(平台公司),部门编码新增 kingdeeDeptNumber 取业务部门自身 blade_dept.kingdee_dept_code(不上溯,未维护拦截)
This commit is contained in:
+2
-2
@@ -1223,8 +1223,8 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
|
|||||||
param.setAwrpSrcSys(bfiProperties.getSrcSys());
|
param.setAwrpSrcSys(bfiProperties.getSrcSys());
|
||||||
// 结算组织.编码
|
// 结算组织.编码
|
||||||
param.setSettleorgNumber(orgNumber);
|
param.setSettleorgNumber(orgNumber);
|
||||||
// 部门.编码
|
// 部门.编码:项目业务部门自身的金蝶编码(结算/申请/付款组织仍传上溯平台公司编码)
|
||||||
param.setAwrpDepartmentNumber(orgNumber);
|
param.setAwrpDepartmentNumber(kingdeeApBillSyncSupport.kingdeeDeptNumber(contract.getProjectId(), context));
|
||||||
// 【必填】单据类型.编码
|
// 【必填】单据类型.编码
|
||||||
param.setBilltypeNumber(bfiProperties.getPayApply().getBilltype());
|
param.setBilltypeNumber(bfiProperties.getPayApply().getBilltype());
|
||||||
// 【必填】申请日期:yyyy-MM-dd HH:mm:ss(各接口统一格式)
|
// 【必填】申请日期:yyyy-MM-dd HH:mm:ss(各接口统一格式)
|
||||||
|
|||||||
+33
-10
@@ -974,16 +974,7 @@ public class KingdeeApBillSyncSupport {
|
|||||||
* @return 组织编码
|
* @return 组织编码
|
||||||
*/
|
*/
|
||||||
public String kingdeeOrgNumber(Long projectId, KingdeeSyncContext context) {
|
public String kingdeeOrgNumber(Long projectId, KingdeeSyncContext context) {
|
||||||
if (projectId == null) {
|
ProjectApply project = this.requireOrgProject(projectId, context);
|
||||||
throw new ServiceException("推送金蝶失败,单据未关联项目,无法确定金蝶组织编码");
|
|
||||||
}
|
|
||||||
ProjectApply project = context.projectCache().computeIfAbsent(projectId, projectApplyMapper::selectById);
|
|
||||||
if (project == null) {
|
|
||||||
throw new ServiceException("推送金蝶失败,项目[" + projectId + "]不存在,无法确定金蝶组织编码");
|
|
||||||
}
|
|
||||||
if (project.getBusinessDeptId() == null) {
|
|
||||||
throw new ServiceException("推送金蝶失败,项目[" + Func.toStr(project.getProjectName()) + "]未维护业务部门,无法确定金蝶组织编码");
|
|
||||||
}
|
|
||||||
// 沿部门树向上反查平台公司,上限 20 级防脏数据成环死循环
|
// 沿部门树向上反查平台公司,上限 20 级防脏数据成环死循环
|
||||||
Dept dept = SysCache.getDept(project.getBusinessDeptId());
|
Dept dept = SysCache.getDept(project.getBusinessDeptId());
|
||||||
for (int depth = 0; dept != null && depth < 20; depth++) {
|
for (int depth = 0; dept != null && depth < 20; depth++) {
|
||||||
@@ -998,6 +989,38 @@ public class KingdeeApBillSyncSupport {
|
|||||||
throw new ServiceException("推送金蝶失败,项目业务部门[" + Func.toStr(project.getBusinessDeptName()) + "]未归属平台公司,无法确定金蝶组织编码");
|
throw new ServiceException("推送金蝶失败,项目业务部门[" + Func.toStr(project.getBusinessDeptName()) + "]未归属平台公司,无法确定金蝶组织编码");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 金蝶部门编码:项目业务部门自身的金蝶编码(blade_dept.kingdee_dept_code,不上溯平台公司),
|
||||||
|
* 用于付款申请单 awrp_department_number(部门.编码);项目未关联/未维护业务部门/业务部门未维护金蝶编码时拦截
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @param context 金蝶同步上下文(缓存载体)
|
||||||
|
* @return 部门编码
|
||||||
|
*/
|
||||||
|
public String kingdeeDeptNumber(Long projectId, KingdeeSyncContext context) {
|
||||||
|
ProjectApply project = this.requireOrgProject(projectId, context);
|
||||||
|
Dept dept = SysCache.getDept(project.getBusinessDeptId());
|
||||||
|
if (dept == null || Func.isBlank(dept.getKingdeeDeptCode())) {
|
||||||
|
throw new ServiceException("推送金蝶失败,项目业务部门[" + Func.toStr(project.getBusinessDeptName()) + "]未维护金蝶编码,请检查部门数据");
|
||||||
|
}
|
||||||
|
return dept.getKingdeeDeptCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 金蝶组织/部门编码共用校验:项目存在且已维护业务部门 */
|
||||||
|
private ProjectApply requireOrgProject(Long projectId, KingdeeSyncContext context) {
|
||||||
|
if (projectId == null) {
|
||||||
|
throw new ServiceException("推送金蝶失败,单据未关联项目,无法确定金蝶组织编码");
|
||||||
|
}
|
||||||
|
ProjectApply project = context.projectCache().computeIfAbsent(projectId, projectApplyMapper::selectById);
|
||||||
|
if (project == null) {
|
||||||
|
throw new ServiceException("推送金蝶失败,项目[" + projectId + "]不存在,无法确定金蝶组织编码");
|
||||||
|
}
|
||||||
|
if (project.getBusinessDeptId() == null) {
|
||||||
|
throw new ServiceException("推送金蝶失败,项目[" + Func.toStr(project.getProjectName()) + "]未维护业务部门,无法确定金蝶组织编码");
|
||||||
|
}
|
||||||
|
return project;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合同结算币种转金蝶币别代码(RMB 统一映射 CNY)
|
* 合同结算币种转金蝶币别代码(RMB 统一映射 CNY)
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user