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