1
llj
4 天以前 5283fa35215bc599aba8d4914d4ccb868da99596
WebAPI/Controllers/BaseSet/Xt_grdAlignment_WMESController.cs
@@ -903,7 +903,8 @@
            { "zh-Hans", "HFieldName"},
            { "zh-Hant", "HFieldName"},
            { "en", "HTranslationText_English"},
            { "es", "HTranslationText_Spain"}
            { "es", "HTranslationText_Spain"},
            { "Thai", "HTranslationText_Thai"}
        };
        /// <summary>
@@ -928,7 +929,7 @@
                    language = "zh-Hans";
                    lang = "HFieldName";
                }
                ds = oCN.RunProcReturn("select * from  h_v_Xt_LanModuleList where 1=1", "h_v_Xt_LanModuleList");
                ds = oCN.RunProcReturn("select * from  h_v_Xt_LanModuleList where 1=1 order by HUpdateDate desc", "h_v_Xt_LanModuleList");
                // 如果目录不存在则创建目录
                if (!Directory.Exists(path))
@@ -948,7 +949,7 @@
                using (StreamReader sr = new StreamReader(Path.Combine(path, $"{language}.json"), Encoding.UTF8))
                {
                    string lines;
                    while ((lines = sr.ReadLine()) != null)//一行一行去读,如果读取这一行赋值lines,并且lines= null证明读取完了
                    while ((lines = sr.ReadLine()) != null)
                    {
                        JsonStr1 += lines;
@@ -961,11 +962,17 @@
                {
                    languagePack["_Version"] = 0;
                }
                if (languagePack["_UpdateDate"] == null)
                {
                    languagePack["_UpdateDate"] = "";
                }
                LogService.Write("语言包中数据条数: " + languagePack["_Version"].ToString() + "\n数据库中数据条数: " + ds.Tables[0].Rows.Count.ToString());
                if (languagePack["_Version"].Value<int>() != ds.Tables[0].Rows.Count || forceUpdate == true)
                if (languagePack["_Version"].Value<int>() != ds.Tables[0].Rows.Count || forceUpdate == true || languagePack["_UpdateDate"].Value<string>() != ds.Tables[0].Rows[0]["HUpdateDate"].ToString())
                {
                    // 更新版本号(数据条目数)
                    languagePack["_Version"] = ds.Tables[0].Rows.Count;
                    //更新字段翻译日期
                    languagePack["_UpdateDate"] = ds.Tables[0].Rows[0]["HUpdateDate"].ToString();
                    // 统计每个字符模块中 字段码出现的次数 如果出现多次,则映射为JArray类型
                    Dictionary<string, int> HFieldCodeDict = ds.Tables[0].AsEnumerable()
                    .GroupBy(row => new
@@ -981,7 +988,7 @@
                        keySelector: p => $@"{p.HModuleCode}_{p.HFieldCode}",
                        elementSelector:  p => p.rowNum
                    );
                    int subIndex = 0;
                    // 版本号不一致 则读取数据库中的字段,将字段写入到json对象中
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
@@ -1007,8 +1014,23 @@
                                languagePack[HModuleCode][HFieldCode] = new JArray();
                            }
                            var targetJArray = (JArray)languagePack[HModuleCode][HFieldCode];
                            targetJArray.Add(row[lang].ToString());
                            var targetJArray = languagePack[HModuleCode][HFieldCode] as JArray;
                            if (subIndex < rowNum - 1)
                            {
                                if (targetJArray.Count < subIndex + 1)
                                {
                                    targetJArray.Add(row[lang].ToString());
                                }else
                                {
                                    targetJArray[subIndex] = row[lang].ToString();
                                }
                                subIndex++;
                            }else
                            {
                                subIndex = 0;
                            }
                        }
                        
                    }
@@ -1019,7 +1041,7 @@
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Success!";
                    objJsonResult.data = languagePack.ToString();
                    objJsonResult.data = languagePack;
                    return objJsonResult;
                } else
                {
@@ -1027,7 +1049,7 @@
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Success!";
                    objJsonResult.data = JsonStr1;
                    objJsonResult.data = JObject.Parse(JsonStr1);
                    return objJsonResult;
                }
            }
@@ -1036,6 +1058,72 @@
                LogService.Write("Exception!" + e.ToString());
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 单据翻译 语言包缺失的键 反向映射到数据库
        [Route("Xt_grdAlignment_WMES/syncMissingKeyToDB")]
        [HttpGet]
        public Object syncMissingKeyToDB(string missingObj)
        {
            oCN.BeginTran();
            try
            {
                // 递入的参数 结构是 { 模块名: [字段名1,字段名2] }
                JObject missingKeys = JObject.Parse(missingObj);
                // 遍历顶层JObject对象
                foreach(var HMouldNameKVP in missingKeys)
                {
                    // 查询主表中是否存在该模块 存在,则返回主表中的模块HInterID,不存在,则获取最大HInterID+1
                    string HMouldCode = HMouldNameKVP.Key;
                    ds = oCN.RunProcReturn($"Exec h_p_syncMissingKeyToDB @HModuleCode='{HMouldCode}'", "h_p_syncMissingKeyToDB");
                    int HInterID = (int)ds.Tables[0].Rows[0]["HInterID"];
                    int rowCount = (int)ds.Tables[0].Rows[0]["rc"];
                    int HEntryID = (int)ds.Tables[0].Rows[0]["HEntryID"];
                    // 插入主表
                    if (rowCount == 0)
                    {
                        oCN.RunProc($@"insert into Xt_LanModuleMain(HInterID, HBillType, HModuleName, HModuleCode)
                        values({HInterID}, 3033, '', '{HMouldCode}')");
                    }
                    string sql = $@"insert into Xt_LanModuleSub(HInterID, HEntryID, HFieldModelType, HFieldCode, HFieldName, HTranslationText_English, HTranslationText_Spain)
                                    values";
                    // 插入子表
                    JArray HFieldCodes = HMouldNameKVP.Value as JArray;
                    for(int i=0;i<HFieldCodes.Count; i++)
                    {
                        sql += $@"({HInterID}, {HEntryID+i}, 'i18n', '{HFieldCodes[i]}','{HFieldCodes[i]}','{HFieldCodes[i]}','{HFieldCodes[i]}'),";
                    }
                    sql = sql.Substring(0, sql.Length - 1) + ";";
                    oCN.RunProc(sql);
                }
                oCN.Commit();
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Success!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
                oCN.RollBack();
                LogService.Write("Exception!" + e.ToString());
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.Message.ToString();
                objJsonResult.data = null;
                return objJsonResult;