Browse Source

发货单明细

konghe 1 năm trước cách đây
mục cha
commit
1f15198e64

+ 106 - 4
DK.Basics/Library/SapApi.cs

@@ -121,13 +121,25 @@ public class SapApi
 
         //输入参数
         IRfcTable imTable = rfcApi.GetTable("IT_INPUT");
-        if(matnrs!=null&&matnrs.Count>0)
-        foreach (string MATNR in matnrs)
+        if (matnrs != null && matnrs.Count > 0)
         {
+            foreach (string MATNR in matnrs)
+            {
+                imTable.Append();
+                imTable.SetValue("WERKS", WERKS);
+                imTable.SetValue("MATNR", MATNR);
+                imTable.SetValue("LGORT", LGORT);
+            }
+        }
+        else
+        {
+
             imTable.Append();
             imTable.SetValue("WERKS", WERKS);
-            imTable.SetValue("MATNR", MATNR);
+            imTable.SetValue("MATNR", "");
             imTable.SetValue("LGORT", LGORT);
+
+
         }
 
         //调用接口
@@ -146,6 +158,96 @@ public class SapApi
     }
 
     /// <summary>
+    /// 物料凭证通用接口
+    /// </summary>
+    /// <param name="list">数据</param>
+    /// <param name="ZMSG">消息文本</param>
+    /// <returns></returns>
+    public static DataTable ZMMFM_MES_YCDB(List<SendSendOutGoods> list, out string ZMSG)
+    {
+        RfcConfigParameters rfcPara = new RfcConfigParameters();
+        rfcPara.Add(RfcConfigParameters.AppServerHost, appServerHost);
+        rfcPara.Add(RfcConfigParameters.SystemNumber, systemNumber);
+        rfcPara.Add(RfcConfigParameters.User, user);
+        rfcPara.Add(RfcConfigParameters.Password, password);
+        rfcPara.Add(RfcConfigParameters.Client, client);
+
+        rfcPara.Add(RfcConfigParameters.Name, "CON");
+        rfcPara.Add(RfcConfigParameters.Language, "ZH");
+        rfcPara.Add(RfcConfigParameters.PoolSize, "5");
+        rfcPara.Add(RfcConfigParameters.ConnectionIdleTimeout, "60");
+
+        RfcDestination rfcDest = RfcDestinationManager.GetDestination(rfcPara);
+        RfcRepository rfcRep = rfcDest.Repository;
+
+        //接口API
+        IRfcFunction rfcApi = rfcRep.CreateFunction("ZMMFM_MES_YCDB");
+
+        //输入参数
+        IRfcTable imTable = rfcApi.GetTable("GT_INPUT");
+        if (list != null && list.Count > 0)
+        {
+            foreach (SendSendOutGoods ss in list)
+            {
+                imTable.Append();
+                imTable.SetValue("WERKS", ss.WERKS);
+                imTable.SetValue("MATNR", ss.MATNR);
+                imTable.SetValue("LGORT", ss.LGORT);
+                imTable.SetValue("MESNO", ss.MESNO);
+                imTable.SetValue("MESLINENO", ss.MESLINENO);
+                imTable.SetValue("ZID", ss.ZID);
+                imTable.SetValue("BUDAT", ss.BUDAT);
+                imTable.SetValue("BWART", ss.BWART);
+                imTable.SetValue("PSMNG", ss.PSMNG);
+                imTable.SetValue("MEINS", ss.MEINS);
+                imTable.SetValue("MOVE_MAT", ss.MOVE_MAT);
+                imTable.SetValue("MOVE_STLOC", ss.MOVE_STLOC);
+                imTable.SetValue("MOVE_BATCH", ss.MOVE_BATCH);
+                imTable.SetValue("CHARG", ss.CHARG);
+                imTable.SetValue("CARID", ss.CARID);
+            }
+        }
+
+        //调用接口
+        rfcApi.Invoke(rfcDest);
+        ZMSG = "";
+        //获取输出
+        // ZMSG = rfcApi.GetValue("E_MSG").ToString();
+        IRfcTable table = rfcApi.GetTable("GT_OUTPUT");
+
+        DataTable dt = GetDataTableFromRFCTable(table);
+
+        rfcDest = null;
+        rfcRep = null;
+
+        return dt;
+    }
+    public class SendSendOutGoods
+    {
+        public string MESNO;
+        public string MESLINENO;
+        public string ZID;
+        public string BUDAT;
+        public string HEADER_TXT;
+        public string BWART;
+        public string SOBKZ;
+        public string MOVE_REAS;
+        public string WERKS;
+        public string MATNR;
+        public int PSMNG;
+        public string MEINS;
+        public string LGORT;
+        public string CHARG;
+        public string KDAUF;
+        public int KDPOS;
+        public string MOVE_MAT;
+        public string MOVE_STLOC;
+        public string MOVE_BATCH;
+        public string VAL_SALES_ORD;
+        public int VAL_S_ORD_ITEM;
+        public string CARID;
+    }
+    /// <summary>
     /// 读取库存单价接口(获取库存数量)
     /// </summary>
     /// <param name="WERKS">工厂代号</param>
@@ -448,7 +550,7 @@ public class SapApi
         //获取输出
         ZTYPE = rfcApi.GetValue("ZTYPE").ToString();
         ZMSG = rfcApi.GetValue("ZMSG").ToString();
-        
+
         IRfcTable table = rfcApi.GetTable("IT_OUTPUT");
         DataTable dt = GetDataTableFromRFCTable(table);
         rfcDest = null;

+ 13 - 13
DK.Service/PMModuleLogic/PMModuleLogic.cs

@@ -5152,7 +5152,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                                 where f.BANMA=:BarCode  and FHTIME is not null and SENDOUTFLAG<>1 order by FHTIME desc ";
                 }
                 else {
-                    sql = "select  TP_PM_FINISHEDPRODUCT.* from TP_PM_FINISHEDPRODUCT left join TP_PM_GroutingDailyDetail on TP_PM_GroutingDailyDetail.BARCODE=TP_PM_FINISHEDPRODUCT.BARCODE WHERE TP_PM_GroutingDailyDetail.outlabelcode = :BarCode  order by FHTIME desc ";
+                    sql = "select  TP_PM_FINISHEDPRODUCT.* from TP_PM_FINISHEDPRODUCT left join TP_PM_GroutingDailyDetail on TP_PM_GroutingDailyDetail.GROUTINGDAILYDETAILID=TP_PM_FINISHEDPRODUCT.GROUTINGDAILYDETAILID WHERE TP_PM_GroutingDailyDetail.outlabelcode = :BarCode  order by FHTIME desc ";
                 }
 
                 // where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)";
@@ -5170,15 +5170,15 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
                     // 在产成品表中
                     #region 是否交接过
                     string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
-                    if (dsResult.Tables[0].Rows[0]["SENDOUTFLAG"] == null|| (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SENDOUTFLAG"].ToString())&& dsResult.Tables[0].Rows[0]["SENDOUTFLAG"].ToString()=="0"))
+                    if (dsResult.Tables[0].Rows[0]["SENDOUTFLAG"] != null && !string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SENDOUTFLAG"].ToString())&& dsResult.Tables[0].Rows[0]["SENDOUTFLAG"].ToString()=="1")
                     {
-                        resultEntity.Result = -1; 
+                        resultEntity.Status = Constant.ServiceResultStatus.ValidationFailed; 
                         resultEntity.Message = "此产品【" + barcode + "】已发货,不能进行该操作";
                         return resultEntity;
                     }
                     if (string.IsNullOrEmpty(fhUserCode))
 					{
-						resultEntity.Result = -1; //未交接,不能进行
+						resultEntity.Status = Constant.ServiceResultStatus.DataChanged; //未交接,不能进行
                         resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
 						return resultEntity;
 					}
@@ -5193,7 +5193,7 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 					dsResult = oracleConn.GetSqlResultToDs(sql, paras);
 					if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
 					{
-						resultEntity.Result = -6; //产品已经报损				
+						resultEntity.Status = Constant.ServiceResultStatus.NoSearchResults; //产品已经报损				
 						resultEntity.Message = "此产品【" + barcode + "】已被废弃,不能进行该操作";
 						return resultEntity;
 					}
@@ -5205,13 +5205,13 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 					dsResult = oracleConn.GetSqlResultToDs(sql, paras);
 					if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
 					{
-						resultEntity.Result = -7; //产品未交坏			
+						resultEntity.Status = Constant.ServiceResultStatus.NoModifyData; //产品未交坏			
 						resultEntity.Message = "此产品【" + barcode + "】还未交坯,不能进行该操作";
 						return resultEntity;
 					}
 					else
 					{
-						resultEntity.Result = -8; //无效条码		
+						resultEntity.Status = Constant.ServiceResultStatus.SystemError; //无效条码		
 						resultEntity.Message = "此条码【" + barcode + "】为无效条码,不能进行该操作";
 						return resultEntity;
 					}
@@ -5220,21 +5220,21 @@ namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
 
 
 				#region 查询产品相关信息
-				sql = " select  BANMA,GOODSCODE,MATERIALCODE,MATERIALREMARK,FINISHEDLOADBATCHNO,count(1) Count from TP_PM_FINISHEDPRODUCT where 1=1 ";
-				if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO))
+				sql = @" select  BANMA,TP_PM_FINISHEDPRODUCT.GOODSCODE,MATERIALCODE,MATERIALREMARK,FINISHEDLOADBATCHNO,count(1) Count from TP_PM_FINISHEDPRODUCT  left join TP_PM_GroutingDailyDetail on TP_PM_GroutingDailyDetail.BARCODE=TP_PM_FINISHEDPRODUCT.BARCODE  where 1=1 ";
+				if (!string.IsNullOrEmpty(FINISHEDLOADBATCHNO))
 				{
 					sql += " and FINISHEDLOADBATCHNO='" + FINISHEDLOADBATCHNO + "'";
 				}
-                if (string.IsNullOrWhiteSpace(fhtime))
+                if (!string.IsNullOrEmpty(fhtime))
                 {
                     sql += " and FHTIME=FUN_CMN_GETDATETIME('" + fhtime + "') ";
                 }
-                sql += " group by BANMA,GOODSCODE,MATERIALCODE,MATERIALREMARK,FINISHEDLOADBATCHNO";
+                sql += " group by BANMA,TP_PM_FINISHEDPRODUCT.GOODSCODE,MATERIALCODE,MATERIALREMARK,FINISHEDLOADBATCHNO";
                 dsResult = oracleConn.GetSqlResultToDs(sql);
 				if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
 				{
-					resultEntity.Result = 1;
-					resultEntity.Data = dsResult;
+					resultEntity.Result = dsResult.Tables[0];
+					resultEntity.Status= Constant.ServiceResultStatus.Success;
 				}
 				//else
 				//{

+ 118 - 81
DK.Service/PMModuleLogic/PMModuleLogicDAL.cs

@@ -30997,77 +30997,82 @@ updateuserid=:updateuserid where barcode=:barcode";
         /// <param name="sendoutgoodslogid"></param>
         /// <param name="sUserInfo"></param>
         /// <returns></returns>
-        public static DataSet GetSendOutGoodsLogs(string lgort, string sendoutgoodslogid, SUserInfo sUserInfo)
+        public static List<DataTable> GetSendOutGoodsLogs(string lgort, string sendoutgoodslogid, SUserInfo sUserInfo)
         {
 
             IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
             string mes = "";
+            List<DataTable> tables = new List<DataTable>();
+            DataSet ds = new DataSet();
+            var dt = SapApi.ZMM_WMS016("1000", null, "1350", out mes);
+            DataTable table = new DataTable();
 
-            var dt = SapApi.ZMM_WMS016("", null, lgort, out mes);
+            table.Columns.Add("WERKS", typeof(string));
+            table.Columns.Add("MATNR", typeof(string));
+            table.Columns.Add("LGORT", typeof(string));
+            table.Columns.Add("CHARG", typeof(string));
+            table.Columns.Add("LABST", typeof(string));
+            if (dt != null && dt.Rows.Count > 0)
+            {
+                var drs = dt.Select(" LABST > '0.000' ");
+                drs.ToList().ForEach(m => dt.ImportRow(m));
+                foreach (DataRow dr in drs)
+                {
+
+                    DataRow newRow = table.NewRow();
 
+                    // 设置行的值
+                    newRow["WERKS"] = dr["WERKS"];
+                    newRow["MATNR"] = dr["MATNR"];
+                    newRow["LGORT"] = dr["LGORT"];
+                    newRow["CHARG"] = dr["CHARG"];
+                    newRow["LABST"] = dr["LABST"];
+
+                    // 将新行添加到DataTable中
+                    table.Rows.Add(newRow);
+                }
+            }
+            tables.Add(table);
 
-            string sql = @"select   TP_PM_SENDOUTGOODSLOGDETAIL.* from TP_PM_SENDOUTGOODSLOGDETAIL INNER JOIN TP_PM_SENDOUTGOODSLOG on TP_PM_SENDOUTGOODSLOG.SENDOUTGOODSLOGID=TP_PM_SENDOUTGOODSLOGDETAIL.SENDOUTGOODSLOGID where TP_PM_SENDOUTGOODSLOGDETAIL.SENDOUTGOODSLOGID=:sendoutgoodslogid and TP_PM_SENDOUTGOODSLOG.WAREHOUSINGID= :Lgort";
-            var ds = oracleTrConn.GetSqlResultToDs(sql, new OracleParameter[]{
+            if (string.IsNullOrEmpty(sendoutgoodslogid))
+            {
+                string sql = @"select   TP_PM_SENDOUTGOODSLOGDETAIL.* from TP_PM_SENDOUTGOODSLOGDETAIL INNER JOIN TP_PM_SENDOUTGOODSLOG on TP_PM_SENDOUTGOODSLOG.SENDOUTGOODSLOGID=TP_PM_SENDOUTGOODSLOGDETAIL.SENDOUTGOODSLOGID where TP_PM_SENDOUTGOODSLOGDETAIL.SENDOUTGOODSLOGID=:sendoutgoodslogid and TP_PM_SENDOUTGOODSLOG.WAREHOUSINGID= :Lgort";
+                var dtDetaile = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
                         new OracleParameter(":sendoutgoodslogid",OracleDbType.Varchar2, sendoutgoodslogid,ParameterDirection.Input),
                         new OracleParameter(":Lgort",OracleDbType.Varchar2, lgort,ParameterDirection.Input)
                     });
-            ds.Tables.Add(dt);
-            return ds;
-        }
-        public class SnedSendOutGoods
-        {
-            public string MESNO;
-            public string MESLINENO;
-            public string ZID;
-            public string BUDAT;
-            public string HEADER_TXT;
-            public string BWART;
-            public string SOBKZ;
-            public string MOVE_REAS;
-            public string WERKS;
-            public string MATNR;
-            public int PSMNG;
-            public string MEINS;
-            public string LGORT;
-            public string CHARG;
-            public string KDAUF;
-            public int KDPOS;
-            public string MOVE_MAT;
-            public string MOVE_STLOC;
-            public string MOVE_BATCH;
-            public string VAL_SALES_ORD;
-            public int VAL_S_ORD_ITEM;
-            public string CARID;
+                tables.Add(dtDetaile);
+            }
+            return tables;
         }
-        public static string SaveSendOutGoodsLogs(Dictionary<string, object> data, SUserInfo sUserInfo,out string MSG)
+
+        public static ServiceResultEntity SaveSendOutGoodsLogs(Dictionary<string, object> data, SUserInfo sUserInfo)
         {
             SendOutGoodsEntity send = JsonHelper.FromJson<SendOutGoodsEntity>(data.ElementAt(0).Value.ToString());
             var sendDetail = JsonHelper.FromJson<List<SendOutGoodsDetailEntity>>(data.ElementAt(1).Value.ToString());
             StringBuilder where = new StringBuilder();
+            ServiceResultEntity result = new ServiceResultEntity();
+            result.Status = Constant.ServiceResultStatus.Success;
             sendDetail.ForEach(m => where.Append("'" + m.FINISHEDLOADBATCHNO + "',"));
             string SENDOUTCODE = send.SENDOUTCODE;
             string lgotr = send.WAREHOUSINGID;
-            string WAREHOUSINGID = "";
+            string WAREHOUSINGID = send.WAREHOUSINGID;
             string usercode = send.USERCODE;
+            string createusercode = sUserInfo.UserCode;
             bool isCrete = false;
-            string WERKS = "5000";
+            string WERKS = "1000";
             string LGORT = "1350";
             int resultNumber = 0;
-            MSG = "";
-            OracleParameter[] parmetersSql = new OracleParameter[]
-                {
-                };
-
-
+            OracleParameter[] parmetersSql = new OracleParameter[] { };
             if (SENDOUTCODE == null || string.IsNullOrEmpty(SENDOUTCODE))
             {
                 isCrete = true;
             }
 
             List<string> matnr = sendDetail.Select(m => m.MATERIALCODE).Distinct().ToList();
-            List<SnedSendOutGoods> SnedSendOutGoodsList = new List<SnedSendOutGoods>();
+            List<SapApi.SendSendOutGoods> SnedSendOutGoodsList = new List<SapApi.SendSendOutGoods>();
             //判断发货单号添加或者编辑 删与不删明细 生不生成发货单号 
-            if (sendDetail.Count==0)//明细有没有数据
+            if (sendDetail.Count > 0)//明细有没有数据
             {
 
                 //生成发货单号
@@ -31077,31 +31082,28 @@ updateuserid=:updateuserid where barcode=:barcode";
                 }
 
                 IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
+                oracleTrConn.Connect();
                 var isSend = oracleTrConn.GetSqlResultToDt("select FINISHEDLOADBATCHNO from TP_PM_FINISHEDPRODUCT where SENDOUTFLAG=1 and FINISHEDLOADBATCHNO in (" + where.ToString().TrimEnd(',') + ")", parmetersSql);
-                if (isSend!=null && isSend.Rows.Count > 0)
+                if (isSend != null && isSend.Rows.Count > 0)
                 {
-                    MSG = "存在已发货产品";
-                    string res = "";
-                    foreach (DataRow dr in isSend.Rows)
-                    {
-                        res += "'" + dr["FINISHEDLOADBATCHNO"] + "',";
-                    }
-                    return res.TrimEnd(',');
+                    result.Status = Constant.ServiceResultStatus.Other;// "存在已发货产品";
+                    result.Result = isSend;
+                    return result;
                 }
                 //调用sap筛选库存不足变黄 物料编码够不够 生成sap同步数据
                 string message = "";
                 var dt = SapApi.ZMM_WMS016(WERKS, matnr, LGORT, out message);
-                //dt = "批号 ASC";
+                //dt.sort = "批号 ASC";
                 List<string> countList = new List<string>();
                 for (int i = 0; i < matnr.Count; i++)
                 {
-                    var rows = dt.Select("物料='" + matnr[i] + "'");
-                    var sapCount = rows.Sum(m => Convert.ToDecimal(m["库存数"]));
+                    var rows = dt.Select("LABST > '0.000' and MATNR='" + matnr[i] + "'", "CHARG ASC");
+                    var sapCount = rows.Sum(m => Convert.ToDecimal(m["LABST"]));
                     var apps = sendDetail.Where(m => m.MATERIALCODE == matnr[i]);
                     var appCount = apps.Sum(m => Convert.ToDecimal(m.BINDINGCount));
                     if (appCount > sapCount)
                     {
-                        countList.Add(matnr[i]);
+                        countList.AddRange(apps.Select(m => m.FINISHEDLOADBATCHNO));
                     }
                     else//添加同步信息
                     {
@@ -31109,21 +31111,36 @@ updateuserid=:updateuserid where barcode=:barcode";
                         for (int j = 0; j < rows.Length; j++)
                         {
                             decimal tmp = 0;
-                            if (appCount >= Convert.ToDecimal(rows[j]["库存数"]))
+                            if (appCount >= Convert.ToDecimal(rows[j]["LABST"]))
                             {
-                                tmp = Convert.ToDecimal(rows[j]["库存数"]);
+                                tmp = Convert.ToDecimal(rows[j]["LABST"]);
                             }
                             else
                             {
                                 tmp = appCount;
                             }
-                            appCount = appCount - Convert.ToDecimal(rows[j]["库存数"]);
-                            SnedSendOutGoods ss = new SnedSendOutGoods()
+                            appCount = Convert.ToDecimal(rows[j]["LABST"]) - appCount;
+                            var MEINS = oracleTrConn.GetSqlResultToStr("select  meins from tp_pc_sapbomdetail where matnr='" + rows[j]["MATNR"].ToString() + "'");
+                            var RECEIVE = oracleTrConn.GetSqlResultToStr("select  DICTIONARYVALUE from TP_MST_DATADICTIONARY where dictionaryid='" + send.RECEIVEID + "'");
+                            var CARPLATE = oracleTrConn.GetSqlResultToStr("select  DICTIONARYVALUE from TP_MST_DATADICTIONARY where dictionaryid='" + send.CARPLATEID + "'");
+                            SapApi.SendSendOutGoods ss = new SapApi.SendSendOutGoods()
                             {
-                                LGORT = rows[j]["物料"].ToString(),
-                                MATNR = rows[j]["物料"].ToString(),
-                                CHARG = rows[j]["批号"].ToString(),
-                                CARID = rows[j]["车辆"].ToString(),
+                                MESNO = SENDOUTCODE,
+                                MESLINENO = (i + 1).ToString(),
+                                ZID = SENDOUTCODE + (i + 1),
+                                BUDAT = Convert.ToDateTime(send.ACCOUNTDATE).ToString("yyyyMMdd"),
+                                BWART = "313",
+                                WERKS = "1000",
+                                PSMNG = (int)tmp,
+                                MEINS = MEINS,
+                                MOVE_MAT = rows[j]["MATNR"].ToString(),
+                                MOVE_STLOC = RECEIVE,
+                                MOVE_BATCH = rows[j]["CHARG"].ToString(),
+                                LGORT = rows[j]["LGORT"].ToString(),
+                                MATNR = rows[j]["MATNR"].ToString(),
+                                CHARG = rows[j]["CHARG"].ToString(),
+                                CARID = CARPLATE,
+
                             };
                             SnedSendOutGoodsList.Add(ss);
                         }
@@ -31133,44 +31150,64 @@ updateuserid=:updateuserid where barcode=:barcode";
 
                 if (countList.Count > 0)//返回哪些库存不够(包装批次)
                 {
-                    MSG = "库存不足";
-                    return string.Join(",", countList).TrimEnd(',');
+                    result.Status = Constant.ServiceResultStatus.DataChanged;// "库存不足";
+                    result.Result = countList;
+                    return result;
                 }
                 //成功
                 //同步sap(SnedSendOutGoodsList) 修改产成品sendflag 返回成功失败 
-                var result = SapApi.ZMM_WMS016("", null, lgotr, out message);
-                var SYNCSTATUS = 1;
+                var dt2 = SapApi.ZMMFM_MES_YCDB(SnedSendOutGoodsList, out message);
+                var SYNCSTATUS = 2;
+                string MBLNR = "";
+                if (dt2 != null && dt2.Rows.Count > 0)
+                {
+                    if (dt2.Rows[0]["ZTYPE"].ToString() == "S")
+                    {
+                        SYNCSTATUS = 1;
+                        MBLNR = dt2.Rows[0]["MBLNR"].ToString();
+                    }
+                }
                 try
                 {
-                    oracleTrConn.Connect();
                     string sql = "";
+                    string userid = oracleTrConn.GetSqlResultToStr("(select  USERID from  TP_MST_USER where  USERCODE= '" + usercode + "')", parmetersSql);
+                    string WAREHOUSING = oracleTrConn.GetSqlResultToStr("(select DICTIONARYVALUE  from  TP_MST_DATADICTIONARY where DICTIONARYid = '" + WAREHOUSINGID + "')", parmetersSql);
+                    string RECEIVE = oracleTrConn.GetSqlResultToStr("(select DICTIONARYVALUE from  TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.RECEIVEID + "')", parmetersSql);
+                    string CARPLATE = oracleTrConn.GetSqlResultToStr("(select DICTIONARYVALUE  from  TP_MST_DATADICTIONARY where  DICTIONARYid= '" + send.CARPLATEID + "')", parmetersSql);
                     if (isCrete)
                     {
-                        sql = "INSERT INTO TP_PM_SENDOUTGOODSLOG( SENDOUTCODE, USERID, USERCODE, WAREHOUSINGID, WAREHOUSINGNAME, RECEIVEID, RECEIVENAME, CARPLATEID, CARPLATENAME, ACCOUNTDATE, DELIVERDATE, SYNCSTATUS, SYNCTIME,     ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID , MBLNR) select '" + SENDOUTCODE + "', (select  USERID from  TP_MST_USER where  USERCODE= '" + usercode + "'), '" + usercode + "', '" + WAREHOUSINGID + "', (select DICTIONARYVALUE  from  TP_MST_DATADICTIONARY where DICTIONARYid = '" + WAREHOUSINGID + "'), '" + send.RECEIVEID + "', (select DICTIONARYVALUE from  TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.RECEIVEID + "'), '" + send.CARPLATEID + "', (select DICTIONARYVALUE  from  TP_MST_DATADICTIONARY where  DICTIONARYid= '" + send.CARPLATEID + "'), '" + send.ACCOUNTDATE + "', '" + send.DELIVERDATE + "', '" + SYNCSTATUS + "', SYSDATE,  '1','1', SYSDATE,(select  USERID from  TP_MST_USER where  USERCODE= '" + usercode + "'),NULL from dual;";
+                        int SENDOUTGOODSLOG_ID = Convert.ToInt32(
+                                oracleTrConn.GetSqlResultToStr(@"SELECT SEQ_PM_SENDOUTGOODSLOG_ID.NEXTVAL FROM DUAL"));
+
+                        sql = "INSERT INTO TP_PM_SENDOUTGOODSLOG(SENDOUTGOODSLOGID, SENDOUTCODE, USERID, USERCODE, WAREHOUSINGID, WAREHOUSINGNAME, RECEIVEID, RECEIVENAME, CARPLATEID, CARPLATENAME, ACCOUNTDATE, DELIVERDATE, SYNCSTATUS, SYNCTIME,     ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID ,UPDATETIME,UPDATEUSERID, MBLNR) values (" + SENDOUTGOODSLOG_ID + ", '" + SENDOUTCODE + "'," + userid + ", '" + usercode + "', '" + WAREHOUSINGID + "', '" + WAREHOUSING + "', '" + send.RECEIVEID + "','" + RECEIVE + "', '" + send.CARPLATEID + "', '" + CARPLATE + "', FUN_CMN_GETDATETIME('" + send.ACCOUNTDATE + "'), FUN_CMN_GETDATETIME('" + send.DELIVERDATE + "'), '" + SYNCSTATUS + "', SYSDATE,  '1','1', SYSDATE,'" + userid + "', SYSDATE, '" + userid + "','" + MBLNR + "')";
+                        resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
+                        foreach (var item in sendDetail)
+                        {
+                            sql = "INSERT INTO TP_PM_SENDOUTGOODSLOGDETAIL( SENDOUTGOODSLOGID, FINISHEDLOADBATCHNO, GOODSCODE, MATERIALCODE, MATERIALREMARK, BINDINGCOUNT, BANMA, ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID, UPDATETIME, UPDATEUSERID) VALUES (" + SENDOUTGOODSLOG_ID + ", '" + item.FINISHEDLOADBATCHNO + "', '" + item.GOODSCODE + "', '" + item.MATERIALCODE + "', '" + item.MATERIALREMARK + "', " + (int)decimal.Parse(item.BINDINGCount) + ", '" + (item.Banma == null || item.Banma == "null" ? "" : item.Banma) + "', 1, 1, SYSDATE, '" + userid + "', SYSDATE, '" + userid + "')";
+                            resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
+                        }
                     }
                     else
                     {
-                        sql = "UPDATE TP_PM_SENDOUTGOODSLOG SET WAREHOUSINGID = '" + WAREHOUSINGID + "', WAREHOUSINGNAME = (select DICTIONARYVALUE  from  TP_MST_DATADICTIONARY where DICTIONARYid = '" + WAREHOUSINGID + "'), RECEIVEID = '" + send.RECEIVEID + "', RECEIVENAME = (select DICTIONARYVALUE from  TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.RECEIVEID + "'), CARPLATEID = '" + send.CARPLATEID + "', CARPLATENAME = (select DICTIONARYVALUE from  TP_MST_DATADICTIONARY where DICTIONARYid= '" + send.CARPLATEID + "'), ACCOUNTDATE = '" + send.ACCOUNTDATE + "', DELIVERDATE = '" + send.DELIVERDATE + "', SYNCSTATUS = '" + SYNCSTATUS + "', UPDATETIME =SYSDATE, UPDATEUSERID = (select  USERID from  TP_MST_USER where  USERCODE= '" + usercode + "'),MBLNR = NULL WHERE SENDOUTCODE = '" + SENDOUTCODE + "';";
-                    }
-                    resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
-                    if (!isCrete)
-                    {
-                        sql = "UPDATE TP_PM_SENDOUTGOODSLOGDETAIL set valueflag=0 where SENDOUTCODE='" + SENDOUTCODE + "';";
+                        sql = "UPDATE TP_PM_SENDOUTGOODSLOG SET WAREHOUSINGID = '" + WAREHOUSINGID + "', WAREHOUSINGNAME = '" + WAREHOUSING + "', RECEIVEID = '" + send.RECEIVEID + "', RECEIVENAME = '" + RECEIVE + "', CARPLATEID = '" + send.CARPLATEID + "', CARPLATENAME ='" + CARPLATE + "', ACCOUNTDATE = FUN_CMN_GETDATETIME('" + send.ACCOUNTDATE + "'), DELIVERDATE = FUN_CMN_GETDATETIME('" + send.DELIVERDATE + "'), SYNCSTATUS = '" + SYNCSTATUS + "', UPDATETIME =SYSDATE, UPDATEUSERID = '" + userid + "',MBLNR = '" + MBLNR + "' WHERE SENDOUTCODE = '" + SENDOUTCODE + "'";
                         resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
-                    }
-
-                    foreach (var item in sendDetail)
-                    {
-                        sql = "INSERT INTO TP_PM_SENDOUTGOODSLOGDETAIL( SENDOUTGOODSLOGID, FINISHEDLOADBATCHNO, GOODSCODE, MATERIALCODE, MATERIALREMARK, BINDINGCOUNT, BANMA, ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID, UPDATETIME, UPDATEUSERID) VALUES ((select SENDOUTGOODSLOGID from TP_PM_SENDOUTGOODSLOG where SENDOUTCODE='" + SENDOUTCODE + "'), '" + item.FINISHEDLOADBATCHNO + "', '" + item.GOODSCODE + "', '" + item.MATERIALCODE + "', '" + item.MATERIALREMARK + "', '" + item.BINDINGCount + "', '" + item.Banma + "', 1, 1, SYSDATE, (select  USERID from  TP_MST_USER where  USERCODE= '" + usercode + "'));";
+                        string SENDOUTID = oracleTrConn.GetSqlResultToStr("(select SENDOUTGOODSLOGID from TP_PM_SENDOUTGOODSLOG where SENDOUTCODE='" + SENDOUTCODE + "')", parmetersSql);
+                        sql = "UPDATE TP_PM_SENDOUTGOODSLOGDETAIL set valueflag=0 where SENDOUTCODE='" + SENDOUTCODE + "'";
                         resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
+                        foreach (var item in sendDetail)
+                        {
+                            sql = "INSERT INTO TP_PM_SENDOUTGOODSLOGDETAIL( SENDOUTGOODSLOGID, FINISHEDLOADBATCHNO, GOODSCODE, MATERIALCODE, MATERIALREMARK, BINDINGCOUNT, BANMA, ACCOUNTID, VALUEFLAG, CREATETIME, CREATEUSERID, UPDATETIME, UPDATEUSERID) VALUES (" + SENDOUTID + ", '" + item.FINISHEDLOADBATCHNO + "', '" + item.GOODSCODE + "', '" + item.MATERIALCODE + "', '" + item.MATERIALREMARK + "', " + (int)decimal.Parse(item.BINDINGCount) + ", '" + (item.Banma == null || item.Banma == "null" ? "" : item.Banma) + "', 1, 1, SYSDATE, '" + userid + "', SYSDATE, '" + userid + "')";
+                            resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
+                        }
                     }
+
                     //修改产成品
                     sql = "update TP_PM_FINISHEDPRODUCT set SENDOUTFLAG=1 where FINISHEDLOADBATCHNO in (" + where.ToString().TrimEnd(',') + ")";
                     resultNumber += oracleTrConn.ExecuteNonQuery(sql, parmetersSql);
                     // 没有错误 提交事务
                     if (resultNumber != 0)
                     {
-                        oracleTrConn.Rollback();
+                        oracleTrConn.Commit();
                     }
                 }
                 catch (Exception ex)
@@ -31194,7 +31231,7 @@ updateuserid=:updateuserid where barcode=:barcode";
                 //  插入发货表明细表删除明细 添加新的明细 
 
             }
-            return "";
+            return result;
         }
 
     }

+ 8 - 8
WCF.Service/WCF.Services/PDAModuleService.cs

@@ -10908,7 +10908,7 @@ namespace Dongke.IBOSS.PRD.WCF.Services
                     if (action == "GetSendOutGoodsLogs")
                     {
                         string Lgort = data["Lgort"].ToString();
-                        string sendoutgoodslogid = data["sendoutgoodslogid"].ToString();
+                        string sendoutgoodslogid = data.ContainsKey("sendoutgoodslogid")&& data["sendoutgoodslogid"]!=null? data["sendoutgoodslogid"].ToString() : "";
 
                         var result = PMModuleLogicDAL.GetSendOutGoodsLogs(Lgort, sendoutgoodslogid, sUserInfo);
                         actionResult.Result = JsonHelper.ToJson(result);
@@ -10918,18 +10918,18 @@ namespace Dongke.IBOSS.PRD.WCF.Services
                     if (action == "CheckSendOutBarcode")
                     {
                         var result = PMModuleLogic.CHeckFinishOutlabelCode(data["banma"].ToString(), sUserInfo);
-                        actionResult.Result = JsonHelper.ToJson(result);
-                        actionResult.Status = (int)Constant.PDAResult.Success;
+                        actionResult.Result = JsonHelper.ToJson(result.Result);
+                        actionResult.Status = (int)result.Status;
+                        //actionResult.Message = result.Message;
                         return actionResult;
                     }
 
                     if (action == "SaveSendOutGoods")
                     {
-                        string message = "";
-                        var result = PMModuleLogicDAL.SaveSendOutGoodsLogs(data, sUserInfo,out message);
+                        var result = PMModuleLogicDAL.SaveSendOutGoodsLogs(data, sUserInfo);
                         actionResult.Result = JsonHelper.ToJson(result);
-                        actionResult.Message = message;
-                        actionResult.Status = (int)Constant.PDAResult.Success;
+                        //actionResult.Message = message;
+                        actionResult.Status = (int)result.Status;
                         return actionResult;
                     }
 
@@ -10937,7 +10937,7 @@ namespace Dongke.IBOSS.PRD.WCF.Services
 
                 /*
                 if (module == "FinishedLoading")
-                {
+                {                     
                     // 设定商标
                     if (action == "GetMaxLoadingNo")
                     {