| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using Curtain.DataAccess;
- /// <summary>
- /// SapFinishMenge 的摘要说明
- /// </summary>
- public class SapFinishMenge
- {
- /// <summary>
- /// 更新sap订单数量
- /// </summary>
- /// <param name="today"></param>
- /// <returns></returns>
- public static string UpdateSapFinishMenge(DateTime today)
- {
- try
- {
- int r = 0;
- using (IDataAccess conn = DataAccess.Create())
- {
- string sqlStr = @"
- SELECT I.EBELP,
- I.EBELN,
- I.FINISHMENGE
- FROM TP_SAP_ITEM I
- INNER JOIN TP_SAP_PLAN P
- ON P.EBELP = I.EBELP
- AND P.EBELN = I.EBELN
- WHERE P.EINDT >= @EINDTFROM@
- AND P.EINDT < @EINDTTO@ ";
- List<CDAParameter> sqlPara = new List<CDAParameter>();
- // 取本月和上月的订单明细
- sqlPara.Add(new CDAParameter("EINDTFROM", today.AddDays(1 - today.Day).AddMonths(-1)));
- sqlPara.Add(new CDAParameter("EINDTTO", today.AddDays(1 - today.Day).AddMonths(1).AddDays(-1)));
- DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
- // 调SAP接口,查完工数量
- if (dt != null && dt.Rows.Count > 0)
- {
- string sqlUpdate = "update TP_SAP_ITEM t set finishmenge = @finishmenge@ where t.EBELN = @EBELN@ AND t.EBELP = @EBELP@";
- List<CDAParameter> sqlParaUpdate = new List<CDAParameter>();
- // 提取采购订单编码
- List<string> ebelns = new List<string>();
- foreach (DataRow row in dt.Rows)
- {
- if (!ebelns.Contains(row["EBELN"] + ""))
- {
- ebelns.Add(row["EBELN"] + "");
- }
- }
- // 查完工量
- DataTable dtSapOrder = null;
- DataTable dtTemp = null;
- string ZTYPE;
- string ZMSG;
- foreach (string ebeln in ebelns)
- {
- dtTemp = SapApi.ZMMFM_MES_POCX(ebeln, out ZTYPE, out ZMSG);
- if (dtSapOrder == null)
- {
- dtSapOrder = dtTemp;
- }
- else
- {
- dtSapOrder.Merge(dtTemp);
- }
- }
- if (dtSapOrder.Rows.Count > 0)
- {
- DataRow[] drs = null;
- foreach (DataRow row in dt.Rows)
- {
- drs = dtSapOrder.Select("EBELN = '" + row["EBELN"] + "' AND EBELP = '" + row["EBELP"] + "'");
- if (drs.Length > 0)
- {
- decimal z = Convert.ToDecimal(drs[0]["ZYSSL"]);
- decimal f = Convert.ToDecimal(row["FINISHMENGE"]);
- if (z != f)
- {
- sqlParaUpdate.Clear();
- sqlParaUpdate.Add(new CDAParameter("finishmenge", z));
- sqlParaUpdate.Add(new CDAParameter("EBELN", row["EBELN"]));
- sqlParaUpdate.Add(new CDAParameter("EBELP", row["EBELP"]));
- r += conn.ExecuteNonQuery(sqlUpdate, sqlParaUpdate.ToArray());
- }
- }
- }
- }
- }
- }
- return "操作成功:" + r;
- }
- catch (Exception e)
- {
- return "操作失败:" + e.Message;
- }
- }
- }
|