From 27eb4345391857725fb75035ad342016a696edcf Mon Sep 17 00:00:00 2001 From: Kris <2893855659@qq.com> Date: Mon, 7 Jul 2025 10:52:50 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90feat=E3=80=91=E6=94=AF=E6=8C=81SF?= =?UTF-8?q?=E5=BA=95=E5=B1=82=E5=AF=B9=E8=B1=A1Update=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=97=A0=E9=9C=80=E5=86=99=E5=85=A5Old=20ID?= =?UTF-8?q?=E5=92=8COld=20Owner=20ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CommonServiceImpl.java | 41 +++++++++++--- .../impl/DataImportBatchServiceImpl.java | 18 +++++-- .../impl/DataImportNewServiceImpl.java | 18 ++----- .../service/impl/DataImportServiceImpl.java | 53 +++++++++---------- 4 files changed, 73 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/celnet/datadump/service/impl/CommonServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/CommonServiceImpl.java index eb0c093..dc70c4e 100644 --- a/src/main/java/com/celnet/datadump/service/impl/CommonServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/CommonServiceImpl.java @@ -772,9 +772,16 @@ public class CommonServiceImpl implements CommonService { paramwhoMap.put("value", jsonObject.get("Who_Type")); maps.add(paramwhoMap); Map paramwhatMap = Maps.newHashMap(); - paramwhoMap.put("key", "WhatId_Type__c"); - paramwhoMap.put("value", jsonObject.get("What_Type")); - maps.add(paramwhoMap); + paramwhatMap.put("key", "WhatId_Type__c"); + paramwhatMap.put("value", jsonObject.get("What_Type")); + maps.add(paramwhatMap); + } + + if ("TaskRelation".equals(api) || "EventRelation".equals(api)){ + Map paramMap = Maps.newHashMap(); + paramMap.put("key", "Relation_Type__c"); + paramMap.put("value", jsonObject.get("Relation_Type")); + maps.add(paramMap); } //附件关联表 插入更新时给关联对象赋值 @@ -958,6 +965,18 @@ public class CommonServiceImpl implements CommonService { LinkedMap1.put("comment", "whoId关联对象"); LinkedMap1.put("name", "WhoId_Type__c"); list.add(LinkedMap1); + +// DataField dataField = new DataField(); +// dataField.setApi(apiName); +// dataField.setField("WhoId_Type__c"); +// dataField.setName("whoId关联对象"); +// fieldList.add(dataField); +// +// DataField dataField1 = new DataField(); +// dataField1.setApi(apiName); +// dataField1.setField("WhatId_Type__c"); +// dataField1.setName("whatId关联对象"); +// fieldList.add(dataField1); } if ("TaskRelation".equals(apiName) || "EventRelation".equals(apiName)){ @@ -966,6 +985,12 @@ public class CommonServiceImpl implements CommonService { LinkedMap.put("comment", "relationId关联对象"); LinkedMap.put("name", "Relation_Type__c"); list.add(LinkedMap); + +// DataField dataField = new DataField(); +// dataField.setApi(apiName); +// dataField.setField("Relation_Type__c"); +// dataField.setName("relationId关联对象"); +// fieldList.add(dataField); } if ("ContentDocumentLink".equals(apiName)){ @@ -986,11 +1011,11 @@ public class CommonServiceImpl implements CommonService { LinkedMap.put("name", "Parent_Type"); list.add(LinkedMap); - DataField dataField = new DataField(); - dataField.setApi(apiName); - dataField.setField("Parent.Type"); - dataField.setName("关联对象"); - fieldList.add(dataField); +// DataField dataField = new DataField(); +// dataField.setApi(apiName); +// dataField.setField("Parent.Type"); +// dataField.setName("关联对象"); +// fieldList.add(dataField); } customMapper.createTable(apiName, label, list, index); diff --git a/src/main/java/com/celnet/datadump/service/impl/DataImportBatchServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/DataImportBatchServiceImpl.java index 4255958..0f1044a 100644 --- a/src/main/java/com/celnet/datadump/service/impl/DataImportBatchServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/DataImportBatchServiceImpl.java @@ -234,11 +234,19 @@ public class DataImportBatchServiceImpl implements DataImportBatchService { || "Id".equals(dataField.getField())){ continue; } - if (dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) { + if (dataField.getIsCreateable() !=null && dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) { if ("reference".equals(dataField.getSfType())){ String reference = dataField.getReferenceTo(); - if (reference == null){ - reference = data.get(j-1).get("Parent_Type").toString(); + if (StringUtils.isEmpty(reference)){ + if ("ParentId".equals(dataField.getField())){ + reference = data.get(j-1).get("Parent_Type").toString(); + }else if ("RelationId".equals(dataField.getField())){ + reference = data.get(j-1).get("Relation_Type__c").toString(); + }else if ("WhatId".equals(dataField.getField())){ + reference = data.get(j-1).get("WhatId_Type__c").toString(); + }else if ("WhoId".equals(dataField.getField())){ + reference = data.get(j-1).get("WhoId_Type__c").toString(); + } } List> referenceMap = customMapper.list("new_id", reference, "new_id is not null limit 1"); if (referenceMap.isEmpty()){ @@ -362,7 +370,7 @@ public class DataImportBatchServiceImpl implements DataImportBatchService { index ++; log.info("Created Success row with id " + id); } else if (!insertStatus) { - log.info("Created Fail with error: " + error); + log.error("Created Fail with error: " + error); } } } @@ -626,7 +634,7 @@ public class DataImportBatchServiceImpl implements DataImportBatchService { index ++; log.info("Update Success row with id " + id); } else { - log.info("Update Fail with error: " + error); + log.error("Update Fail with error: " + error); } } } diff --git a/src/main/java/com/celnet/datadump/service/impl/DataImportNewServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/DataImportNewServiceImpl.java index c41c6ca..1295754 100644 --- a/src/main/java/com/celnet/datadump/service/impl/DataImportNewServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/DataImportNewServiceImpl.java @@ -767,22 +767,10 @@ public class DataImportNewServiceImpl implements DataImportNewService { } } } else { - if ("WhatId_Type__c".equals(field) || "WhoId_Type__c".equals(field) || "Relation_Type__c".equals(field)){ - Map m = customMapper.getById("new_id", String.valueOf(map.get(field)), value); - if (m != null && !m.isEmpty()) { - account.setField(field, m.get("new_id")); - }else { - String message = "对象类型:" + api + "的数据:"+ map.get("Id") +"的引用对象:" + dataField.getReferenceTo() + "的数据:"+ map.get(field) +"不存在!"; - EmailUtil.send("DataDump ERROR", message); - log.info(message); - return; - } + if (map.get(field) != null && StringUtils.isNotBlank(dataField.getSfType())) { + account.setField(field, DataUtil.localDataToSfData(dataField.getSfType(), value)); }else { - if (map.get(field) != null && StringUtils.isNotBlank(dataField.getSfType())) { - account.setField(field, DataUtil.localDataToSfData(dataField.getSfType(), value)); - }else { - account.setField(field, map.get(field)); - } + account.setField(field, map.get(field)); } } } diff --git a/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java b/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java index 6150dc6..48633d8 100644 --- a/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java +++ b/src/main/java/com/celnet/datadump/service/impl/DataImportServiceImpl.java @@ -296,12 +296,20 @@ public class DataImportServiceImpl implements DataImportService { || "Id".equals(dataField.getField())){ continue; } - if (dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) { + if (dataField.getIsCreateable() != null && dataField.getIsCreateable() && !dataField.getIsNillable() && !dataField.getIsDefaultedOnCreate()) { if ("reference".equals(dataField.getSfType())){ log.info("----------" + dataField.getField() + " ------------" + dataField.getSfType()); String reference = dataField.getReferenceTo(); - if (reference == null){ - reference = data.get(j-1).get("Parent_Type").toString(); + if (StringUtils.isEmpty(reference)){ + if ("ParentId".equals(dataField.getField())){ + reference = data.get(j-1).get("Parent_Type").toString(); + }else if ("RelationId".equals(dataField.getField())){ + reference = data.get(j-1).get("Relation_Type__c").toString(); + }else if ("WhatId".equals(dataField.getField())){ + reference = data.get(j-1).get("WhatId_Type__c").toString(); + }else if ("WhoId".equals(dataField.getField())){ + reference = data.get(j-1).get("WhoId_Type__c").toString(); + } } List> referenceMap = customMapper.list("new_id", reference, "new_id is not null limit 1"); if (referenceMap.isEmpty()){ @@ -326,35 +334,22 @@ public class DataImportServiceImpl implements DataImportService { account.setField(dataField.getField(), DataUtil.fieldTypeToSf(dataField)); } } - if (!api.equals("Product2")){ - //object类型转Date类型 - Date date; - try { - date = sdf.parse(String.valueOf(data.get(j - 1).get("CreatedDate"))); - }catch (ParseException e){ - //解决当时间秒为0时,转换秒精度丢失问题 - date = sdf.parse(data.get(j - 1).get("CreatedDate")+":00"); - } - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - account.setField("CreatedDate", calendar); - Map CreatedByIdMap = customMapper.getById("new_id", "User", data.get(j-1).get("CreatedById").toString()); - if(CreatedByIdMap.get("new_id") != null && StringUtils.isNotEmpty(CreatedByIdMap.get("new_id").toString())){ - account.setField("CreatedById", CreatedByIdMap.get("new_id")); - } + //object类型转Date类型 + Date date; + try { + date = sdf.parse(String.valueOf(data.get(j - 1).get("CreatedDate"))); + }catch (ParseException e){ + //解决当时间秒为0时,转换秒精度丢失问题 + date = sdf.parse(data.get(j - 1).get("CreatedDate")+":00"); } - if (api.equals("Task")){ - account.setField("TaskSubtype",data.get(j - 1).get("TaskSubtype")); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + account.setField("CreatedDate", calendar); + Map CreatedByIdMap = customMapper.getById("new_id", "User", data.get(j-1).get("CreatedById").toString()); + if(CreatedByIdMap.get("new_id") != null && StringUtils.isNotEmpty(CreatedByIdMap.get("new_id").toString())){ + account.setField("CreatedById", CreatedByIdMap.get("new_id")); } - if (api.equals("Event")){ - account.setField("EventSubtype", String.valueOf(data.get(j - 1).get("EventSubtype"))); -// account.setField("IsRecurrence", String.valueOf(data.get(j - 1).get("IsRecurrence"))); - } -// if (api.equals("Account")){ -// Map referenceMap = customMapper.list("new_id","RecordType", "new_id is not null and id = '"+ data.get(j - 1).get("RecordTypeId")+"' limit 1").get(0); -// account.setField("RecordTypeId", referenceMap.get("new_id") ); -// } if (api.equals("vlink__Wechat_User__c")){ List> maps = customMapper.list("new_id", "vlink__Wechat_Account__c", "new_id is not null and id = '" + data.get(j - 1).get("vlink__Wechat_Account__c") + "' limit 1"); if (!maps.isEmpty()){