TEST2

2014/01/22

private List QueryDataFromDb(List list)
    {
      if (list.Count == 0)
        return list;

      var sql = @"
SELECT F7110.RETAIL_CODE, MST_ST01.STORE_NAME, F7110.DC_CODE, F7101.DC_NAME, MST_ST01.CLOSE_DATE
FROM F7110, F7101,
  (
  SELECT * FROM MST_ST01
  WHERE  (MST_ST01.STORE_NO, MST_ST01.EFF_DATE_TO) IN
      (SELECT STORE_NO, MIN(EFF_DATE_TO) FROM MST_ST01 WHERE EFF_DATE_TO>=TRUNC(SYSDATE) GROUP BY STORE_NO)
  ) MST_ST01
WHERE F7110.DC_CODE=F7101.DC_CODE
    AND F7110.RETAIL_CODE=MST_ST01.STORE_NO
    AND F7110.CUST_CODE='100002'
    AND  F7110.RETAIL_CODE IN ({0})
";
      var allStores = list.GroupBy(p => p.StoreNo).Select(p => p.Key).ToList();
      var sqlCount = allStores.Count() / 1000;
      var allSql = "";
      for (var i = 0; i <= sqlCount; i++)
      {
        var stores = string.Format("'{0}'", string.Join("','", allStores.Skip(i * 1000).Take(1000)));
        allSql += (string.IsNullOrWhiteSpace(allSql) ? "" : "UNION ") + string.Format(sql, stores);
      }

      var dsStores = CommonDataAccessUtility.ExecuteDataSet(allSql);
      var dbData = new List();
      foreach (DataRow row in dsStores.Tables[0].Rows)
      {
        dbData.Add(new DeliveryCheckEntity
        {
          StoreNo = row["RETAIL_CODE"].ToString().Trim(),
          SysStoreName = row["STORE_NAME"].ToString().Trim(),
          DcCode = row["DC_CODE"].ToString().Trim(),
          DcName = row["DC_NAME"].ToString().Trim(),
          CloseDate = Convert.ToDateTime(row["CLOSE_DATE"])
        });
      }

      foreach (var e in list)
      {
        var dbStore = dbData.FirstOrDefault(p => p.StoreNo == e.StoreNo);
        var sameStoreCount = list.Count(p => p.StoreNo == e.StoreNo);
        var msg = "";
        if (dbStore != null)
        {
          //門市存在
          e.SysStoreName = dbStore.SysStoreName;
          e.DcCode = dbStore.DcCode;
          e.DcName = dbStore.DcName;
          e.CloseDate = dbStore.CloseDate;

          if (e.StoreName != e.SysStoreName)
            msg = "店號/店名不符";

        }
        else
        {
          //門市不存在
          msg = "無此店號";
        }

        e.SameStoreCount = sameStoreCount;
        if (sameStoreCount > 1)
          msg += (string.IsNullOrWhiteSpace(msg) ? "" : ",且") + "店號重複";
        e.CheckResult = msg;
      }
      return list;
    }

0 意見 :

張貼留言

 

Copyright © 2011 Mixx Blogger Template - Blogger Templates by BloggerReflex

Sponsored by: Trucks | SUV | Cheap Concert Tickets