数仓成本科目同步接口2.0
This commit is contained in:
parent
d181caf69a
commit
c1f8d27004
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue