✨ 结算单支持业务模式与运输方式,并修复组织合同流水号空值
预结算/正式结算主表新增业务模式、运输方式及列表导出字典翻译;组织合同初始流水号未填时不落-1,OA同步保留本地合同配置。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+3
-1
@@ -877,7 +877,9 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
|
||||
|
||||
private void validateContractInitialSerial(Dept dept) {
|
||||
Integer serial = dept.getContractInitialSerial();
|
||||
if (serial == null) {
|
||||
// -1 为空占位,未填写时按 null 落库,不自动保留 -1
|
||||
if (serial == null || serial == -1) {
|
||||
dept.setContractInitialSerial(null);
|
||||
return;
|
||||
}
|
||||
if (serial < 1 || serial > 999) {
|
||||
|
||||
+34
-1
@@ -923,7 +923,8 @@ public class OASyncServiceImpl implements IOASyncService {
|
||||
.ne(Dept::getOaId, "")
|
||||
.select(Dept::getId, Dept::getDeptCode, Dept::getDeptName, Dept::getFullName,
|
||||
Dept::getOaModified, Dept::getParentId, Dept::getOaId, Dept::getBelongCompanyCode,
|
||||
Dept::getParentCode, Dept::getOaSupSubComId));
|
||||
Dept::getParentCode, Dept::getOaSupSubComId,
|
||||
Dept::getContractCodePrefix, Dept::getContractInitialSerial));
|
||||
Map<String, Dept> byOaId = new HashMap<>();
|
||||
for (Dept dept : deptList) {
|
||||
if (StringUtils.isNotBlank(dept.getOaId())) {
|
||||
@@ -986,6 +987,9 @@ public class OASyncServiceImpl implements IOASyncService {
|
||||
} else {
|
||||
dept.setId(DefaultIdentifierGenerator.getInstance().nextId(null));
|
||||
}
|
||||
// OA 不同步合同本地配置:保留已有值,并把 -1 空占位规范为 null,避免 ALWAYS 策略写回 -1/清空
|
||||
preserveLocalContractFields(dept, existing);
|
||||
normalizeContractInitialSerial(dept);
|
||||
if (StringUtils.isNotBlank(dept.getDeptCode())) {
|
||||
deptIdByCode.put(dept.getDeptCode(), dept.getId());
|
||||
}
|
||||
@@ -1046,6 +1050,35 @@ public class OASyncServiceImpl implements IOASyncService {
|
||||
return new OrgSyncCount(syncedCount, skippedCount, notHandledList);
|
||||
}
|
||||
|
||||
/**
|
||||
* OA 同步对象不含合同本地配置,更新时保留库中已有合同编码前缀与初始流水号。
|
||||
*/
|
||||
private void preserveLocalContractFields(Dept incoming, Dept existing) {
|
||||
if (incoming == null || existing == null) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(incoming.getContractCodePrefix())) {
|
||||
incoming.setContractCodePrefix(existing.getContractCodePrefix());
|
||||
}
|
||||
Integer incomingSerial = incoming.getContractInitialSerial();
|
||||
if (incomingSerial == null || incomingSerial == -1) {
|
||||
incoming.setContractInitialSerial(existing.getContractInitialSerial());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 合同初始流水号 -1 为空占位,同步落库前规范为 null。
|
||||
*/
|
||||
private void normalizeContractInitialSerial(Dept dept) {
|
||||
if (dept == null) {
|
||||
return;
|
||||
}
|
||||
Integer serial = dept.getContractInitialSerial();
|
||||
if (serial != null && serial == -1) {
|
||||
dept.setContractInitialSerial(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* oaModified 一致则跳过更新;任一侧为空无法确认一致,执行更新以补齐字段。
|
||||
* 组织编码已按新规则重算、父子挂载不一致、或名称字段与当前映射不一致时,即使 modified 相同也要更新。
|
||||
|
||||
Reference in New Issue
Block a user