Преглед изворни кода

fix(mdp): SQL Server 序列化兼容修复(双源转换层, server 1.0.269)

真实 dopdemorq 数据联调暴露 SQL Server 源经 raw_data JSON 序列化与 MySQL 不一致,STRICT 模式下转换报 500:
- datetime → ISO-8601 'T' 分隔: RctDate/Date/sxrq 用 REPLACE(LEFT(x,19),'T',' ') 兼容(std 秒级精度)
- bit → JSON boolean 'true'/'false': ProductionReceipt IsActive 改 LOWER(...) IN ('1','true')
- JSON null → 'null' 字符串: IpqcInspection Head ybl 的 DECIMAL 转换加 NULLIF(...,'null') 守卫
仅改双源转换层三服务已确认失败字段, 不改 MdpDbPullExecutor/Factory/Writer 核心; NULL 语义保留
YY968XX пре 2 недеља
родитељ
комит
acc69f9554

+ 3 - 3
server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj

@@ -11,9 +11,9 @@
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <Copyright>Admin.NET</Copyright>
     <Description>Admin.NET ͨ��Ȩ�޿���ƽ̨</Description>
-    <AssemblyVersion>1.0.268</AssemblyVersion>
-    <FileVersion>1.0.268</FileVersion>
-    <Version>1.0.268</Version>
+    <AssemblyVersion>1.0.269</AssemblyVersion>
+    <FileVersion>1.0.269</FileVersion>
+    <Version>1.0.269</Version>
   </PropertyGroup>
 
   <ItemGroup>

+ 2 - 2
server/Plugins/Admin.NET.Plugin.AiDOP/Manufacturing/IpqcInspectionMdpSyncService.cs

@@ -479,10 +479,10 @@ public class IpqcInspectionMdpSyncService : ITransient
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.gxbm')),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.gxmc')),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.sczyry')),
-                CAST(JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.ybl')) AS DECIMAL(18,6)),
+                CAST(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.ybl')),'null') AS DECIMAL(18,6)),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.bdbh')),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.bbh')),
-                STR_TO_DATE(NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.sxrq')),'null'),''), '%Y-%m-%d %H:%i:%s'),
+                STR_TO_DATE(REPLACE(LEFT(NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.sxrq')),'null'),''), 19), 'T', ' '), '%Y-%m-%d %H:%i:%s'),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.wlbm')),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.wlmc')),
                 JSON_UNQUOTE(JSON_EXTRACT(m.raw_data,'$.jgbb')),

+ 3 - 3
server/Plugins/Admin.NET.Plugin.AiDOP/MaterialWarehouse/ProductionReceiptMdpSyncService.cs

@@ -286,7 +286,7 @@ public class ProductionReceiptMdpSyncService : ITransient
              AND JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Nbr')) = JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.Nbr'))
             WHERE n.source_table='NbrMaster'
               AND JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Type'))='WOI'
-              AND CAST(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.IsActive')) AS SIGNED)=1
+              AND LOWER(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.IsActive'))) IN ('1','true')
               AND JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.RecID')) IS NOT NULL{srcClause}
             """, countPars);
         var insertSql =
@@ -304,7 +304,7 @@ public class ProductionReceiptMdpSyncService : ITransient
                 CAST(JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.RecID')) AS SIGNED),
                 JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Nbr')),
                 CAST(JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.Line')) AS SIGNED),
-                STR_TO_DATE(NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Date')),'null'),''), '%Y-%m-%d %H:%i:%s'),
+                STR_TO_DATE(REPLACE(LEFT(NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Date')),'null'),''), 19), 'T', ' '), '%Y-%m-%d %H:%i:%s'),
                 UPPER(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Status')), '')),
                 UPPER(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Status')), '')),
                 JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Remark')),
@@ -343,7 +343,7 @@ public class ProductionReceiptMdpSyncService : ITransient
              AND lf.location = JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.LocationFrom'))
             WHERE n.source_table='NbrMaster'
               AND JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.Type'))='WOI'
-              AND CAST(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.IsActive')) AS SIGNED)=1
+              AND LOWER(JSON_UNQUOTE(JSON_EXTRACT(n.raw_data,'$.IsActive'))) IN ('1','true')
               AND JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.RecID')) IS NOT NULL{srcClause}
             ON DUPLICATE KEY UPDATE
                 factory_id=VALUES(factory_id), master_rec_id=VALUES(master_rec_id), nbr=VALUES(nbr), line=VALUES(line),

+ 1 - 1
server/Plugins/Admin.NET.Plugin.AiDOP/MaterialWarehouse/PurchaseReceiptMdpSyncService.cs

@@ -303,7 +303,7 @@ public class PurchaseReceiptMdpSyncService : ITransient
                 JSON_UNQUOTE(JSON_EXTRACT(p.raw_data,'$.Domain')),
                 JSON_UNQUOTE(JSON_EXTRACT(p.raw_data,'$.Receiver')),
                 CAST(JSON_UNQUOTE(JSON_EXTRACT(p.raw_data,'$.Line')) AS SIGNED),
-                STR_TO_DATE(NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.RctDate')),'null'),''), '%Y-%m-%d %H:%i:%s'),
+                STR_TO_DATE(REPLACE(LEFT(NULLIF(NULLIF(JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.RctDate')),'null'),''), 19), 'T', ' '), '%Y-%m-%d %H:%i:%s'),
                 JSON_UNQUOTE(JSON_EXTRACT(p.raw_data,'$.Supp')),
                 TRIM(CONCAT(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(d.raw_data,'$.Supp')),''), ' ', IFNULL(s.SortName, ''))),
                 JSON_UNQUOTE(JSON_EXTRACT(p.raw_data,'$.ItemNum')), i.Descr, i.Descr1,