数仓成本科目同步接口2.0

This commit is contained in:
李贵强 2025-06-20 13:12:11 +08:00
parent d181caf69a
commit c1f8d27004
1 changed files with 35 additions and 30 deletions

View File

@ -27,10 +27,7 @@ import okhttp3.Response;
import shkd.utils.DobeDWUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 后台任务插件
@ -113,6 +110,7 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin {
List<JSONObject> toAddList = new ArrayList<>();
int updateCount = 0; // 记录更新条数
int addCount = 0; // 记录新增条数
Set<String> processedCodes = new HashSet<>(); // 记录已处理的编码
for (int i = 0; i < detailsJson.size(); i++) {
JSONObject jsonObject = detailsJson.getJSONObject(i);
@ -120,6 +118,13 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin {
if ("启用".equals(status)) {
String code = jsonObject.getString("costsubject_code");
// 如果已经处理过这个编码则跳过
if (processedCodes.contains(code)) {
logger.info("跳过重复编码: {}", code);
System.out.println("[MyLog]跳过重复编码: " + code);
continue;
}
processedCodes.add(code); // 标记为已处理
if (code != null) {
boolean found = false;
@ -144,13 +149,17 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin {
System.out.println("[MyLog]更新科目: " + jsonName + ", 编码: " + code);
logger.info("更新科目名称: {}, 编码: {}", jsonName, code);
}
int caentryLevel = dynamicObject.getInt("caentry_level");
if (caentryLevel!=3){
continue;
}
//会计科目
String accSubjectCode = jsonObject.getString("accsubject_code");
if (accSubjectCode!=null){
DynamicObject sysAccount = dynamicObject.getDynamicObject("caentry_account");
if (sysAccount==null){
//直接匹配会计科目赋值id
Long accountId=this.getSysAccountId(accSubjectCode);
DynamicObject accountId=this.getSysAccountId(accSubjectCode);
if (accountId!=null){
dynamicObject.set("caentry_account",accountId);
logger.info("成功关联会计科目,科目编码: {}, 会计科目ID: {}", code, accountId);
@ -161,7 +170,7 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin {
String number = sysAccount.getString("number");
if (!accSubjectCode.equals(number)){
//匹配会计科目赋值id
Long accountId=this.getSysAccountId(accSubjectCode);
DynamicObject accountId=this.getSysAccountId(accSubjectCode);
if (accountId!=null){
dynamicObject.set("caentry_account",accountId);
logger.info("更新会计科目关联成功,科目编码: {}, 新会计科目ID: {}", code, accountId);
@ -201,14 +210,10 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin {
* @param accSubjectCode
* @return
*/
private Long getSysAccountId(String accSubjectCode) {
Long pkValue = null;
private DynamicObject getSysAccountId(String accSubjectCode) {
QFilter number = new QFilter("number", QCP.equals, accSubjectCode);
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("bd_accountview", number.toArray());
if (dynamicObject!=null){
pkValue= (Long) dynamicObject.getPkValue();
}
return pkValue;
return BusinessDataServiceHelper.loadSingle("bd_accountview", number.toArray());
}
/**
@ -360,7 +365,7 @@ public class DobeDWaccountTask extends AbstractTask implements Plugin {
// 3. 会计科目
String accSubjectCode = jsonObject.getString("accsubject_code");
if (jsonObject.getString("accsubject_code") != null) {
Long accountId=this.getSysAccountId(accSubjectCode);
DynamicObject accountId=this.getSysAccountId(accSubjectCode);
if (accountId!=null){
dynamicObject.set("caentry_account",accountId);
}