private bool process_Attribute(List customerMstList, List origCustEntityList)
{
#region 变量定义
CustmerMstEntity custmerErrorLog = new CustmerMstEntity();//用于记录出错行数
string custmerFieldName = string.Empty;//待处理顾客字段名称
string temporaryValue = string.Empty;// 临时字符
List custmerCodeList = new List();//取得所有使用的custcode值
List unusedCustmerCodeList = new List();//取得所有未使用的custcode值
int custmerCode = 0;//顾客编码
int custmerCodeMax = customerMstList.Select(t => int.Parse(t.CustCd.Value)).Max();// 利用済み最大のcustCode
#endregion
try
{
// 100万件のcodeを作成します
for (int i = 1; i <= 1000000; i++)
{
unusedCustmerCodeList.Add(i);
}
foreach (var item in customerMstList)
{
custmerCodeList.Add(int.TryParse(item.CustCd.Value, out custmerCode) ? 0 : int.Parse(item.CustCd.Value));
}
unusedCustmerCodeList = unusedCustmerCodeList.Except(custmerCodeList).ToList().Sort();//消除可用顾客Code
foreach (CustmerMstEntity custMstEntity in customerMstList)
{
custmerErrorLog = custMstEntity;//定义行数用于出错时记录Log
//CustCd + SeikyuCd
custmerFieldName = "CustCd + SeikyuCd";
// 入力資料に値がない:"0"(上様)をセット
if (!string.IsNullOrEmpty(custMstEntity.CustCd.Value))
{
//整数以外の文字を使用:使用済み数値の最大値の次の数値
if (!CarCvrt.IsNumber(custMstEntity.CustCd.Value))
{
//0以下または1000000以上の数値:使用済み数値の最大値の次の数値
if (custmerCode < 0 || custmerCode > 1000000)
{
++custmerCodeMax;
// 1000000以上の数値未使用の数値の中の最小値
if (custmerCodeMax > 1000000)
{
custMstEntity.CustCd.Value = unusedCustmerCodeList[0].ToString();
custMstEntity.CustCd.Comment = ConstMGT.Comment_Error;
unusedCustmerCodeList.RemoveAt(0);
}
else
{
custMstEntity.CustCd.Value = custmerCodeMax.ToString();
custMstEntity.CustCd.Comment = ConstMGT.Comment_Error;
unusedCustmerCodeList.Remove(custmerCodeMax);
}
}
}
else
{
++custmerCodeMax;
// 1000000以上の数値未使用の数値の中の最小値
if (custmerCodeMax > 1000000)
{
custMstEntity.CustCd.Value = unusedCustmerCodeList[0].ToString();
custMstEntity.CustCd.Comment = ConstMGT.Comment_Error;
unusedCustmerCodeList.RemoveAt(0);
}
else
{
custMstEntity.CustCd.Value = custmerCodeMax.ToString();
custMstEntity.CustCd.Comment = ConstMGT.Comment_Error;
unusedCustmerCodeList.Remove(custmerCodeMax);
}
}
}
else
{
custMstEntity.CustCd.Value = "0";
}
custMstEntity.SeikyuCd.Value = custMstEntity.CustCd.Value;
//CustKanjiName1
custmerFieldName = "CustKanjiName1";
custMstEntity.CustKanjiName1 = KanjiValueConvert(custMstEntity.CustKanjiName1, compList, kshoList, 50);
//CustKanaName
custmerFieldName = "CustKanaName";
custMstEntity.CustKanaName = KanaValueConvert(custMstEntity.CustKanaName.Value, 50);
//CustKsho
custmerFieldName = "CustKsho";
bool flag = false;
//半角转换为全角
temporaryValue = ConvertEX.ToDBC(custMstEntity.CustKanjiName1.Value);
foreach (CompanyTypeEntity cte in compList)
{
//法人種類略称判断
if (temporaryValue.Contains(cte.Simple))
{
flag = true;
custMstEntity.CustKsho.Value = "御中";
break;
}
//法人種類全称判断
if (temporaryValue.Contains(cte.Detail))
{
flag = true;
custMstEntity.CustKsho.Value = "御中";
break;
}
}
if (!flag)
{
custMstEntity.CustKsho.Value = "様";
}
//CustPostNo
custmerFieldName = "CustPostNo";
custMstEntity.CustPostNo = CustPostNoDataConvert(custMstEntity.CustPostNo);
//CustAdr1 + CustAdr2
custmerFieldName = "CustAdr1 + CustAdr2";
custmerFieldName = "CustAdr1 + CustAdr2";
List<DefineType> custAdrList = CustAdrConvert(custMstEntity.CustAdr1, custMstEntity.CustAdr2, 50);
custMstEntity.CustAdr1 = custAdrList[0];
custMstEntity.CustAdr2 = custAdrList[1];
//CustKanaAdr1 + CustKanaAdr2
custmerFieldName = "CustKanaAdr1 + CustKanaAdr2";
if (!CustAdrKanaConvert(customerMstList, adrList))
{
return false;
}
//CustTel
custmerFieldName = "CustTel";
custMstEntity.CustTel = CustDataConvert(custMstEntity.CustTel, 16);
//CustKeitai
custmerFieldName = "CustKeitai";
custMstEntity.CustKeitai = CustDataConvert(custMstEntity.CustKeitai, 16);
//CustFax
custmerFieldName = "CustFax";
custMstEntity.CustFax = CustDataConvert(custMstEntity.CustFax, 16);
//ShimeMM1
custmerFieldName = "ShimeMM1";
//先全部转为半角
temporaryValue = ConvertEX.ToDBC(custMstEntity.ShimeMM1.Value);
if (int.TryParse(temporaryValue, out int result))
{
if (result < 1 || result > 12)
{
custMstEntity.ShimeMM1 = new DefineType() { Value = "0", Comment = ConstMGT.Comment_Error };
}
else
{
custMstEntity.ShimeMM1.Value = temporaryValue;
}
}
//ShimeDD
custmerFieldName = "ShimeDD";
//先全部转为半角
temporaryValue = ConvertEX.ToDBC(custMstEntity.ShimeDD.Value);
int intTemp = -99;
//超范围
if (!int.TryParse(temporaryValue, out intTemp) || intTemp < 1 || intTemp > 28)
{
custMstEntity.ShimeDD.Value = "99";
}
else
{
custMstEntity.ShimeDD.Value = temporaryValue;
}
}
}
catch (Exception ex)
{
LogFile.writeLog_Msg($"{ex.Message}\r\n(custMst.csv)源Excel文件中第{custmerErrorLog.Rows.ToString()}行中的 “" + custmerFieldName + "” 出错!");
return false;
}
finally
{
custmerErrorLog = null;
temporaryValue = string.Empty;
}
return true;
}