HandleData/AE_MES_ERP.cs
@@ -147,6 +147,8 @@
                case "TB_MESTOERP_TransferIn"://分布式调入单
                case "TB_MESTOERP_ZJDB"://直接调拨单
                case "TB_MESTOERP_WWDDXD"://委外订单下达
                case "TB_MESTOERP_WWLL"://委外领料单
                case "TB_MESTOERP_XSTH"://销售退货
                case "TB_MESTOERP_WWCG"://委外下推采购
                    result = MesToErp(drSource, ref msg, rtaskid);
                    break;
@@ -182,7 +184,14 @@
                case "TB_ERPTOMES_WW":
                    result = TB_ERPTOMES_WW(taskid, inputds, operatype, ref msg);
                    break;
                //26.TB_ERPTOMES_XSTH销售退货通知单
                case "TB_ERPTOMES_XSTH":
                    result = TB_ERPTOMES_XSTH(taskid, inputds, operatype, ref msg);
                    break;
                //27.TB_ERPTOMES_CGTH销售退货通知单
                case "TB_ERPTOMES_CGTH":
                    result = TB_ERPTOMES_CGTH(taskid, inputds, operatype, ref msg);
                    break;
                case "TB_XKY_GET_DHD"://推送审核送货单
                    result = XKY_GET_DHD(drSource, ref msg);
                    break;
@@ -1252,6 +1261,10 @@
                    colMapping[4] = new SqlBulkCopyColumnMapping("GYSA005", "GYS005"); //   组织号
                    colMapping[5] = new SqlBulkCopyColumnMapping("ERPID", "ERPID"); //   ERPID
                    colMapping[6] = new SqlBulkCopyColumnMapping("FUseOrgId", "FUseOrgId"); //   内/外销
                    if (dt.Columns.Contains("GYSA006"))
                    {
                        colMapping[7] = new SqlBulkCopyColumnMapping("GYSA006", "GYSA006"); //备注
                    }
                    //colMapping[8] = new SqlBulkCopyColumnMapping("AUDITING", "AUDITING");
                    return DataTableToSQLServer(dt, conStr, "GS_GYS", colMapping, ref ErrorMsg);
@@ -1273,8 +1286,24 @@
                                        FUseOrgld='{6}'
                                    where ERPID='{0}'; ", dr["ERPID"]
                                                        , dr["GYSA001"], dr["GYSA002"], dr["GYSA003"], dr["GYSA004"], dr["GYSA005"], dr["FUseOrgld"]);
                        if (dt.Columns.Contains("GYSA006"))
                        {
                            sql = string.Format(@" update GS_GYS
                                    set
                                        GYS001='{1}',
                                        GYS002='{2}',
                                        GYS003='{3}',
                                        GYS004='{4}',
                                        GYS005='{5}',
                                        FUseOrgld='{6}',
                                        GYS006='{7}'
                                    where ERPID='{0}'; ", dr["ERPID"]
                                , dr["GYSA001"], dr["GYSA002"], dr["GYSA003"], dr["GYSA004"], dr["GYSA005"], dr["FUseOrgld"], dr["GYSA006"]);
                        }
                    }
                    return _sqlHelper.ExecuteNonQuery(sql) > 0;
                    #endregion
                }
                else //DELETE
@@ -1847,6 +1876,8 @@
            //用来拼ID集合
            List<string> IDList = new List<string>();
            string dtName = "";
            string statue = "";
            string CGA001 = "";
            if (operatype != "INSERT" && operatype != "UPDATE")
            {
                sql = string.Format(@" delete from GS_CG where CGA001 in ('{0}') ", operatype);
@@ -1915,6 +1946,12 @@
                                {
                                    dr["CGA002"] = task_name == "TB_ERPTOMES_CG" ? "3301" : "3302";
                                }
                                if (dr["CGA005"].ToString() == "标准委外订单")
                                {
                                    statue = "委外";
                                    CGA001 = dr["CGA001"].ToString();
                                }
                            }
                            //插入前先删除重复键
@@ -1926,7 +1963,7 @@
                            //}
                            SqlBulkCopyColumnMapping[] colMapping = new SqlBulkCopyColumnMapping[dt.Columns.Count];
                            int i = 19;
                            colMapping[0] = new SqlBulkCopyColumnMapping("AUDITING", "flagApp");
                            colMapping[1] = new SqlBulkCopyColumnMapping("NEWERPID", "ID"); //ID 
                            colMapping[2] = new SqlBulkCopyColumnMapping("CGA001", "CGA001"); //采购单号
@@ -1948,7 +1985,7 @@
                            colMapping[18] = new SqlBulkCopyColumnMapping("CGA0017", "CGA017"); //备注
                            if (dt.Columns.Contains("CGAORG"))
                            {
                                colMapping[19] = new SqlBulkCopyColumnMapping("CGAORG", "CGAORG"); //备注
                                colMapping[i++] = new SqlBulkCopyColumnMapping("CGAORG", "CGAORG"); //备注
                            }
                            else
                            {
@@ -1956,11 +1993,15 @@
                            }
                            if (dt.Columns.Contains("CGA018"))
                            {
                                colMapping[20] = new SqlBulkCopyColumnMapping("CGA018", "CGA018"); //备注
                                colMapping[i++] = new SqlBulkCopyColumnMapping("CGA018", "CGA018"); //备注
                            }
                            if (dt.Columns.Contains("CGA0018"))
                            {
                                colMapping[20] = new SqlBulkCopyColumnMapping("CGA0018", "CGA018"); //备注
                                colMapping[i++] = new SqlBulkCopyColumnMapping("CGA0018", "CGA018"); //备注
                            }
                            if (dt.Columns.Contains("CGA0019"))
                            {
                                colMapping[i++] = new SqlBulkCopyColumnMapping("CGA0019", "CGA019"); //备注
                            }
@@ -2073,6 +2114,18 @@
                            colMapping[22] = new SqlBulkCopyColumnMapping("CGB0020", "CGB020"); //超收比例
                            colMapping[23] = new SqlBulkCopyColumnMapping("CGB0021", "CGB021"); //含税单价
                            colMapping[24] = new SqlBulkCopyColumnMapping("CGB0022", "CGB022"); //价税合计
                            if (dt.Columns.Contains("CGB0024"))
                            {
                                colMapping[25] = new SqlBulkCopyColumnMapping("CGB0024", "CGB024"); //源单类型
                            }
                            if (dt.Columns.Contains("CGB0025"))
                            {
                                colMapping[26] = new SqlBulkCopyColumnMapping("CGB0025", "CGB025"); //源单单号
                            }
                            if (dt.Columns.Contains("CGB0026"))
                            {
                                colMapping[27] = new SqlBulkCopyColumnMapping("CGB0026", "CGB026"); //源单明细ID
                            }
                            DataTableToSQLServer(dt, conStr, "CGDB", colMapping, ref ErrorMsg);
                            foreach (DataRow dF in dt.Rows)
@@ -2080,7 +2133,7 @@
                                string UP = string.Format(@"EXEC API_UPDATE_CGDB {0},{1} ", dF["CGB001"].ToString(), dF["CGB002"].ToString());
                                _sqlHelper.ExecuteNonQuery(UP);
                            }
                            #endregion
                        }
@@ -2102,6 +2155,13 @@
                        #endregion
                    }
                }
                //if (statue == "委外")
                //{
                //    string WWSQL = string.Format(@"EXEC API_CREATE_LLD '{0}' ", CGA001);
                //    _sqlHelper.ExecuteNonQuery(WWSQL);
                //}
                return true;
            }
            catch (Exception ex)
@@ -3125,7 +3185,10 @@
        /// <returns></returns>
        private bool MesToErp(DataRow dr, ref string ErrorMsg,string rtaskid)
        {
            string sql = string.Format(@" update  sysdec set  states='NEWIN' WHERE TASK_ID='{0}' ", rtaskid);
            var logId = Guid.NewGuid();
            string sql = string.Format(@" update  sysdec set  states='NEWIN' WHERE TASK_ID='{0}'
                                    insert into SYSDECLOG
                                    select *,'{1}',GETDATE(),GETDATE() from SYSDEC where TASK_ID = '{0}' ", rtaskid, logId);
            _sqlHelper.ExecuteNonQuery(sql);
            try
@@ -3153,13 +3216,31 @@
                _sqlHelper.ExecuteNonQuery(sql);
                if (res.Contains("OK") || res.Contains("MES单号唯一检测不通过"))
                {
                    sql = string.Format(@" update  SYSDECLOG set  states='SUCCESS',msg = '{1}',endtime = GETDATE() WHERE logId='{0}' ", logId, res);
                    _sqlHelper.ExecuteNonQuery(sql);
                }
                else
                {
                    sql = string.Format(@" update  SYSDECLOG set  states='FAIL',msg = '{1}',endtime = GETDATE()  WHERE logId='{0}' ", logId, res);
                    _sqlHelper.ExecuteNonQuery(sql);
                }
                if (string.IsNullOrWhiteSpace(res)) {
                    res = "数据有异常";
                }
                //string res = a.arg0.ws.MES_TO_ERP_DataTransport(task_name, descript, create_time, creator, operatype, source_table, target_table, data, data_inserted, data_deleted);
                if (res.Contains("OK"))
                {
                    ErrorMsg = res;
                    return true;
                }
                else if (res.Contains("MES单号唯一检测不通过"))
                else if(res.Contains("MES单号唯一检测不通过"))
                {
                    ErrorMsg = res;
                    return true;
@@ -4269,6 +4350,404 @@
        }
        #endregion
        #region 26.ERPTHA销售退货通知单(同步推送) bool TB_ERPTOMES_XSTH(string task_name,DataSet ds, string operatype, ref string ErrorMsg)
        /// <summary>
        /// ERPTHA销售退货通知单(同步推送)
        /// </summary>
        /// <param name="task_name">任务名称</param>
        /// <param name="ds">数据集</param>
        /// <param name="operatype">执行类型</param>
        /// <param name="ErrorMsg">错误说明</param>
        /// <returns></returns>
        private bool TB_ERPTOMES_XSTH(string task_name, DataSet ds, string operatype, ref string ErrorMsg)
        {
            string sql = "";
            //用来拼ID集合
            List<string> IDList = new List<string>();
            string dtName = "";
            string XSTHA001 = "";
            if (operatype != "INSERT" && operatype != "UPDATE")
            {
                sql = string.Format(@" delete from GS_XSTHA where XSTHA001 in ('{0}') ", operatype);
                string sqlTT = string.Format(@" delete from GS_XSTHB where XSTHB001 in ('{0}') ", operatype);
                _sqlHelper.ExecuteNonQuery(sql);
                _sqlHelper.ExecuteNonQuery(sqlTT);
                return true;
            }
            if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
            {
                ErrorMsg = "生成数据表失败";
                return false;
            }
            try
            {
                foreach (DataTable dt in ds.Tables)
                {
                    dtName = dt.TableName;
                    IDList.Clear();
                    //主从表的同步,修改和新增一样,先删除原记录后插入新记录,要求同步过来的数据也是整单完整数据
                    if (operatype == "INSERT" || operatype == "UPDATE")
                    {
                        #region INSERT
                        if (dt.TableName == "ERPSALRETURNNOTICEA")
                        {
                            #region 销售退货通知单主表的处理
                            dt.Columns.Add("AUDITING", typeof(string));
                            foreach (DataRow dr in dt.Rows)
                            {
                                IDList.Add(dr["ERPID"].ToString());
                                dr["AUDITING"] = "Y";
                                XSTHA001 = dr["XSTHA001"].ToString();
                                switch (dr["XSTHA005"].ToString())
                                {
                                    case "A":
                                        dr["XSTHA005"] = "创建";
                                        break;
                                    case "B":
                                        dr["XSTHA005"] = "审核中";
                                        break;
                                    case "C":
                                        dr["XSTHA005"] = "已审核";
                                        break;
                                    case "D":
                                        dr["XSTHA005"] = "重新审核";
                                        break;
                                    case "Z":
                                        dr["XSTHA005"] = "暂存";
                                        break;
                                }
                            }
                            //插入前先删除重复键
                            DeleteDataBeforeInsert("GS_XSTHA", "ID", string.Join("','", IDList), "");
                            //if (!DeleteDataBeforeInsert("PURDDA", "ERPID", string.Join("','", IDList), ""))
                            //{
                            //    ErrorMsg = "PURDDA重复键删除失败!";
                            //    return false;
                            //}
                            SqlBulkCopyColumnMapping[] colMapping = new SqlBulkCopyColumnMapping[dt.Columns.Count];
                            colMapping[0] = new SqlBulkCopyColumnMapping("AUDITING", "flagApp");
                            colMapping[1] = new SqlBulkCopyColumnMapping("ERPID", "ID"); //ID
                            colMapping[2] = new SqlBulkCopyColumnMapping("XSTHA001", "XSTHA001"); //退货通知单号
                            colMapping[3] = new SqlBulkCopyColumnMapping("XSTHA003", "XSTHA003"); //单据日期
                            colMapping[4] = new SqlBulkCopyColumnMapping("XSTHA004", "XSTHA004"); //单据类型
                            colMapping[5] = new SqlBulkCopyColumnMapping("XSTHA005", "XSTHA005"); //单据状态
                            colMapping[6] = new SqlBulkCopyColumnMapping("XSTHA006", "XSTHA006"); //单据类型
                            colMapping[7] = new SqlBulkCopyColumnMapping("XSTHA007", "XSTHA007"); //销售组织
                            colMapping[8] = new SqlBulkCopyColumnMapping("XSTHA008", "XSTHA008"); //销售部门
                            colMapping[9] = new SqlBulkCopyColumnMapping("XSTHA009", "XSTHA009"); //退货客户
                            colMapping[10] = new SqlBulkCopyColumnMapping("XSTHA010", "XSTHA010"); //结算币别
                            colMapping[11] = new SqlBulkCopyColumnMapping("XSTHA011", "XSTHA011"); //库存组织
                            colMapping[12] = new SqlBulkCopyColumnMapping("XSTHA012", "XSTHA012"); //备注
                            colMapping[13] = new SqlBulkCopyColumnMapping("XSTHA013", "XSTHA013"); //退货原因
                            DataTableToSQLServer(dt, conStr, "GS_XSTHA", colMapping, ref ErrorMsg);
                            #endregion
                        }
                        if (dt.TableName == "ERPSALRETURNNOTICEB")
                        {
                            #region 采购订单明细的处理
                            dt.Columns.Add("AUDITING", typeof(string));
                            foreach (DataRow dr in dt.Rows)
                            {
                                IDList.Add(dr["ERPID"].ToString());
                                dr["AUDITING"] = "Y";
                            }
                            //插入前先删除重复键
                            DeleteDataBeforeInsert("GS_XSTHB", "PID", string.Join("','", IDList), "");
                            //if (!DeleteDataBeforeInsert("PURDDB", "ERPID+DDB002", string.Join("','", IDList), ""))
                            //{
                            //    ErrorMsg = "PURDDB重复键删除失败!";
                            //    return false;
                            //}
                            SqlBulkCopyColumnMapping[] colMapping = new SqlBulkCopyColumnMapping[dt.Columns.Count];
                            colMapping[0] = new SqlBulkCopyColumnMapping("AUDITING", "flagApp");
                            colMapping[1] = new SqlBulkCopyColumnMapping("ERPID", "PID"); //ERPID
                            colMapping[2] = new SqlBulkCopyColumnMapping("XSTHB001", "XSTHB001"); //物料ID
                            colMapping[3] = new SqlBulkCopyColumnMapping("XSTHB002", "XSTHB002"); //物料编码
                            colMapping[4] = new SqlBulkCopyColumnMapping("XSTHB003", "XSTHB003"); //物料名称
                            colMapping[5] = new SqlBulkCopyColumnMapping("XSTHB004", "XSTHB004"); //规格型号
                            colMapping[6] = new SqlBulkCopyColumnMapping("XSTHB005", "XSTHB005"); //销售单位
                            colMapping[7] = new SqlBulkCopyColumnMapping("XSTHB006", "XSTHB006"); //实退数量
                            colMapping[8] = new SqlBulkCopyColumnMapping("XSTHB007", "XSTHB007"); //客户物料编码
                            colMapping[9] = new SqlBulkCopyColumnMapping("XSTHB008", "XSTHB008"); //客户物料名称
                            colMapping[10] = new SqlBulkCopyColumnMapping("XSTHB009", "XSTHB009"); //退货类型
                            colMapping[11] = new SqlBulkCopyColumnMapping("XSTHB010", "XSTHB010"); //仓库
                            colMapping[12] = new SqlBulkCopyColumnMapping("XSTHB011", "XSTHB011"); //退货日期
                            colMapping[13] = new SqlBulkCopyColumnMapping("ERP_EntryID", "ID"); //明细ID
                            //colMapping[14] = new SqlBulkCopyColumnMapping("XSTHB006", "XSTHB012"); //明细ID
                            DataTableToSQLServer(dt, conStr, "GS_XSTHB", colMapping, ref ErrorMsg);
                            #endregion
                        }
                        #endregion
                    }
                    else //DELETE
                    {
                        //ErrorMsg = "执行删除数据表";
                        #region DELETE
                        //if (dt.TableName == "ERPCGA")
                        //{
                        //    foreach (DataRow dr in dt.Rows)
                        //    {
                        //        IDList.Add(dr["ERPID"].ToString());
                        //    }
                        //    sql = string.Format(@" delete from PURDDA where ERPID in ('{0}');  delete from PURDDB where ERPID in ('{0}'); ", string.Join("','", IDList));
                        //}
                        //_sqlHelper.ExecuteNonQuery(sql);
                        #endregion
                    }
                }
                    string UP = string.Format(@"EXEC API_UPDATE_XSTH '{0}' ", XSTHA001);
                    _sqlHelper.ExecuteNonQuery(UP);
                return true;
            }
            catch (Exception ex)
            {
                ErrorMsg = "[" + dtName + "]" + ex.Message;
                return false;
            }
        }
        #endregion
        #region 27.ERPCTHA采购退货通知单(同步推送) bool TB_ERPTOMES_CGTH(string task_name,DataSet ds, string operatype, ref string ErrorMsg)
        /// <summary>
        /// ERPCGA采购订单|委外订单(同步推送)
        /// </summary>
        /// <param name="task_name">任务名称</param>
        /// <param name="ds">数据集</param>
        /// <param name="operatype">执行类型</param>
        /// <param name="ErrorMsg">错误说明</param>
        /// <returns></returns>
        private bool TB_ERPTOMES_CGTH(string task_name, DataSet ds, string operatype, ref string ErrorMsg)
        {
            string sql = "";
            //用来拼ID集合
            List<string> IDList = new List<string>();
            string dtName = "";
            if (operatype != "INSERT" && operatype != "UPDATE")
            {
                sql = string.Format(@" delete from GS_CGTHA where CGTHA001 in ('{0}') ", operatype);
                string sqlTT = string.Format(@" delete from GS_CGTHB where CGTHB001 in ('{0}') ", operatype);
                _sqlHelper.ExecuteNonQuery(sql);
                _sqlHelper.ExecuteNonQuery(sqlTT);
                return true;
            }
            if (ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
            {
                ErrorMsg = "生成数据表失败";
                return false;
            }
            try
            {
                foreach (DataTable dt in ds.Tables)
                {
                    dtName = dt.TableName;
                    IDList.Clear();
                    //主从表的同步,修改和新增一样,先删除原记录后插入新记录,要求同步过来的数据也是整单完整数据
                    if (operatype == "INSERT" || operatype == "UPDATE")
                    {
                        #region INSERT
                        if (dt.TableName == "ERPCGTHA")
                        {
                            #region 销售退货通知单主表的处理
                            dt.Columns.Add("AUDITING", typeof(string));
                            foreach (DataRow dr in dt.Rows)
                            {
                                IDList.Add(dr["ERPID"].ToString());
                                dr["AUDITING"] = "Y";
                                dr["AUDITING"] = "Y";
                                switch (dr["CGTHA008"].ToString())
                                {
                                    case "A":
                                        dr["CGTHA008"] = "检验退料";
                                        break;
                                    case "B":
                                        dr["CGTHA008"] = "库存退料";
                                        break;
                                }
                                switch (dr["CGTHA009"].ToString())
                                {
                                    case "A":
                                        dr["CGTHA009"] = "退料补料";
                                        break;
                                    case "B":
                                        dr["CGTHA009"] = "退料扣款";
                                        break;
                                }
                                switch (dr["CGTHA015"].ToString())
                                {
                                    case "A":
                                        dr["CGTHA015"] = "创建";
                                        break;
                                    case "B":
                                        dr["CGTHA015"] = "审核中";
                                        break;
                                    case "C":
                                        dr["CGTHA015"] = "已审核";
                                        break;
                                    case "D":
                                        dr["CGTHA015"] = "重新审核";
                                        break;
                                    case "Z":
                                        dr["CGTHA015"] = "暂存";
                                        break;
                                }
                            }
                            //插入前先删除重复键
                            DeleteDataBeforeInsert("GS_CGTHA", "ID", string.Join("','", IDList), "");
                            //if (!DeleteDataBeforeInsert("PURDDA", "ERPID", string.Join("','", IDList), ""))
                            //{
                            //    ErrorMsg = "PURDDA重复键删除失败!";
                            //    return false;
                            //}
                            SqlBulkCopyColumnMapping[] colMapping = new SqlBulkCopyColumnMapping[dt.Columns.Count];
                            colMapping[0] = new SqlBulkCopyColumnMapping("CGTHA001", "CGTHA001"); //单据编号
                            colMapping[1] = new SqlBulkCopyColumnMapping("CGTHA002", "CGTHA002"); //单据日期
                            colMapping[2] = new SqlBulkCopyColumnMapping("CGTHA003", "CGTHA003"); //单据类型
                            colMapping[3] = new SqlBulkCopyColumnMapping("CGTHA004", "CGTHA004"); //单据类型
                            colMapping[4] = new SqlBulkCopyColumnMapping("CGTHA005", "CGTHA005"); //业务类型
                            colMapping[5] = new SqlBulkCopyColumnMapping("CGTHA006", "CGTHA006"); //供应商
                            colMapping[6] = new SqlBulkCopyColumnMapping("CGTHA007", "CGTHA007"); //采购组织
                            colMapping[7] = new SqlBulkCopyColumnMapping("CGTHA008", "CGTHA008"); //退料类型
                            colMapping[8] = new SqlBulkCopyColumnMapping("CGTHA009", "CGTHA009"); //退料方式
                            colMapping[9] = new SqlBulkCopyColumnMapping("CGTHA010", "CGTHA010"); //补料方式
                            colMapping[10] = new SqlBulkCopyColumnMapping("CGTHA011", "CGTHA011"); //申请组织
                            colMapping[11] = new SqlBulkCopyColumnMapping("CGTHA012", "CGTHA012"); //需求组织
                            colMapping[12] = new SqlBulkCopyColumnMapping("CGTHA013", "CGTHA013"); //币别
                            colMapping[13] = new SqlBulkCopyColumnMapping("CGTHA015", "CGTHA015"); //单据状态
                            colMapping[14] = new SqlBulkCopyColumnMapping("CGTHA016", "CGTHA016"); //备注
                            colMapping[15] = new SqlBulkCopyColumnMapping("CGTHA017", "CGTHA017"); //结算组织
                            colMapping[16] = new SqlBulkCopyColumnMapping("ERPID", "ID"); //ERPID
                            colMapping[17] = new SqlBulkCopyColumnMapping("AUDITING", "flagApp");
                            DataTableToSQLServer(dt, conStr, "GS_CGTHA", colMapping, ref ErrorMsg);
                            #endregion
                        }
                        if (dt.TableName == "ERPCGTHB")
                        {
                            #region 采购订单明细的处理
                            dt.Columns.Add("AUDITING", typeof(string));
                            foreach (DataRow dr in dt.Rows)
                            {
                                IDList.Add(dr["ERPID"].ToString());
                                dr["AUDITING"] = "Y";
                                //应退数量
                                if (dr["CGTHB006"].ToString() == "")
                                {
                                    dr["CGTHB006"] = "0";
                                }
                                else
                                {
                                    double A = Convert.ToDouble(dr["CGTHB006"].ToString());
                                    string B = A.ToString();
                                    dr["CGTHB006"] = B;
                                }
                                //实退数量
                                if (dr["CGTHB007"].ToString() == "")
                                {
                                    dr["CGTHB007"] = "0";
                                }
                                else
                                {
                                    double A = Convert.ToDouble(dr["CGTHB007"].ToString());
                                    string B = A.ToString();
                                    dr["CGTHB007"] = B;
                                }
                                if (dr["CGTHB008"].ToString() == "")
                                {
                                    dr["CGTHB008"] = "0";
                                }
                                else
                                {
                                    double A = Convert.ToDouble(dr["CGTHB008"].ToString());
                                    string B = A.ToString();
                                    dr["CGTHB008"] = B;
                                }
                            }
                            //插入前先删除重复键
                            DeleteDataBeforeInsert("GS_CGTHB", "PID", string.Join("','", IDList), "");
                            //if (!DeleteDataBeforeInsert("PURDDB", "ERPID+DDB002", string.Join("','", IDList), ""))
                            //{
                            //    ErrorMsg = "PURDDB重复键删除失败!";
                            //    return false;
                            //}
                            SqlBulkCopyColumnMapping[] colMapping = new SqlBulkCopyColumnMapping[dt.Columns.Count];
                            colMapping[0] = new SqlBulkCopyColumnMapping("AUDITING", "flagApp");
                            colMapping[1] = new SqlBulkCopyColumnMapping("ERPID", "PID"); //ERPID
                            colMapping[2] = new SqlBulkCopyColumnMapping("CGTHB001", "CGTHB001"); //采购退料通知单号
                            colMapping[3] = new SqlBulkCopyColumnMapping("CGTHB002", "CGTHB002"); //序号
                            colMapping[4] = new SqlBulkCopyColumnMapping("CGTHB003", "CGTHB003"); //物料编码
                            colMapping[5] = new SqlBulkCopyColumnMapping("CGTHB004", "CGTHB004"); //物料名称
                            colMapping[6] = new SqlBulkCopyColumnMapping("CGTHB005", "CGTHB005"); //规格型号
                            colMapping[7] = new SqlBulkCopyColumnMapping("CGTHB006", "CGTHB006"); //申请退料数量
                            colMapping[8] = new SqlBulkCopyColumnMapping("CGTHB007", "CGTHB007"); //补料数量
                            colMapping[9] = new SqlBulkCopyColumnMapping("CGTHB008", "CGTHB008"); //扣款数量
                            colMapping[10] = new SqlBulkCopyColumnMapping("CGTHB009", "CGTHB009"); //库存单位
                            colMapping[11] = new SqlBulkCopyColumnMapping("CGTHB010", "CGTHB010"); //计价单位
                            colMapping[12] = new SqlBulkCopyColumnMapping("CGTHB011", "CGTHB011"); //退货原因
                            colMapping[13] = new SqlBulkCopyColumnMapping("ERP_EntryID", "ID"); //明细ID
                            DataTableToSQLServer(dt, conStr, "GS_CGTHB", colMapping, ref ErrorMsg);
                            #endregion
                        }
                        #endregion
                    }
                    else //DELETE
                    {
                        //ErrorMsg = "执行删除数据表";
                        #region DELETE
                        //if (dt.TableName == "ERPCGA")
                        //{
                        //    foreach (DataRow dr in dt.Rows)
                        //    {
                        //        IDList.Add(dr["ERPID"].ToString());
                        //    }
                        //    sql = string.Format(@" delete from PURDDA where ERPID in ('{0}');  delete from PURDDB where ERPID in ('{0}'); ", string.Join("','", IDList));
                        //}
                        //_sqlHelper.ExecuteNonQuery(sql);
                        #endregion
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                ErrorMsg = "[" + dtName + "]" + ex.Message;
                return false;
            }
        }
        #endregion
        private bool XKY_GET_DHD(DataRow dr, ref string ErrorMsg)
        {