diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs index 7d80b48..1fe8b2a 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs @@ -7152,10 +7152,10 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer { msg = string.Format(language.GetNameByCode("WMSAPIInfo203"));//"推荐库位不能为空!" } - if (item.LocationCode == "" && item.ContainerType != "窄巷道叉车(木托盘)") - { - msg = string.Format(language.GetNameByCode("WMSAPIInfo206"));//"位置编码不能为空!" - } + //if (item.LocationCode == "" && item.ContainerType != "窄巷道叉车(木托盘)") + //{ + // msg = string.Format(language.GetNameByCode("WMSAPIInfo206"));//"位置编码不能为空!" + //} if (item.ContainerCode != fistContainerCode) { msg = string.Format(language.GetNameByCode("WMSAPIInfo474"));//"所传的料架编码不一致,调用失败!" @@ -7428,10 +7428,10 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer { msg = string.Format(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!" } - if (item.LocationCode == "") - { - msg = string.Format(language.GetNameByCode("WMSAPIInfo206"));//"位置编码不能为空!" - } + //if (item.LocationCode == "") + //{ + // msg = string.Format(language.GetNameByCode("WMSAPIInfo206"));//"位置编码不能为空!" + //} if (msg != "") { res.Success = false; @@ -7441,7 +7441,7 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer else { //呼叫AGV开始搬运任务 - PostionCode = ICSWareHouseLotInfoService.GetAGVTaskPosition(item.LocationCode, item.User, item.WorkPoint, cmd, language); + PostionCode = ICSWareHouseLotInfoService.GetAGVTaskPosition(item.ContainerCode, item.User, item.WorkPoint, cmd, language); } } res.Success = true; @@ -7586,7 +7586,7 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer } else { - ICSWareHouseLotInfoService.ActionAGVTaskEnd(JsonData.reqCode, JsonData.currentPositionCode, JsonData.taskCode, JsonData.action, JsonData.podCode, cmd, language); + ICSWareHouseLotInfoService.ActionAGVTaskEnd(JsonData.taskCode, JsonData.currentPositionCode, JsonData.taskCode, JsonData.action, JsonData.podCode, cmd, language); } res.code = "0"; res.message = "成功";// "接口调用成功!"; @@ -7631,7 +7631,9 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString)) { conn.Open(); + SqlTransaction sqlTran = conn.BeginTransaction(); SqlCommand cmd = new SqlCommand(); + cmd.Transaction = sqlTran; cmd.Connection = conn; try { @@ -7669,14 +7671,14 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer } catch (Exception ex) { + if (cmd.Transaction != null) + cmd.Transaction.Rollback(); #region 更新叉车回调日志 string logsql = @"update ICSForkLiftCallBackLog set Result='失败',Message='{1}' where TaskID='{0}'"; logsql = string.Format(logsql, JsonData.TaskID, ex.Message); DBHelper.ExecuteNonQuery(connString, CommandType.Text, logsql); #endregion - if (cmd.Transaction != null) - cmd.Transaction.Rollback(); log.Error(ex.Message); ForkLiftResult res = new ForkLiftResult(); res.Ret = 0; @@ -8737,7 +8739,7 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer { throw new Exception(language.GetNameByCode("WMSAPIInfo004"));//"站点不能为空!" } - string sql = @"select EATTRIBUTE5 from ICSContainerReceiptsNumber + string sql = @"select ContainerCode,EATTRIBUTE5 from ICSContainerReceiptsNumber where ContainerCode=(select TOP 1 ContainerCode from ICSContainerReceiptsNumber where TransCode='{0}' order by MTIME desc)"; sql = string.Format(sql, JsonData.TransCode); diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs index dc19c8c..afe6f85 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs @@ -2946,42 +2946,42 @@ namespace ICSSoft.DataProject { throw new Exception("容器:" + ContainerCode + "与条码:" + LotNo + "绑定失败!"); } - if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"])) - { - string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"]; - string Year = DateTime.Now.Year.ToString(); - string Month = DateTime.Now.Month.ToString().PadLeft(2, '0'); - string Day = DateTime.Now.Day.ToString().PadLeft(2, '0'); - string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0'); - string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0'); - string Second = DateTime.Now.Second.ToString().PadLeft(2, '0'); - string InspectJosn = "{"; - InspectJosn += "\"ID\":\"" + Year + Month + Day + Hour + Minute + Second + "\","; - InspectJosn += "\"PalletID\": \"" + ContainerCode + "\","; - InspectJosn += "\"LaneCode\": \"\","; - InspectJosn += "\"TaskType\": \"PTWY\","; - InspectJosn += "\"SourceBin\": \"\","; - InspectJosn += "\"DestBin\": \"" + RecomendBinCode + "\""; - InspectJosn += "}"; - RestHelper rest = new RestHelper(ForkLiftUrl, HttpVerb.POST); - rest.PostData = InspectJosn; - string strResult = rest.MakeRequest(); - //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn); - ForkLiftResult result = JsonConvert.DeserializeObject(strResult); - if (result.Ret == 1) - { - sql = @"update ICSContainer set LocationCode='{2}',EATTRIBUTE1='已搬运' where ContainerCode='{0}' AND WorkPoint='{1}'"; - sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode); - if (!DBHelper.ExecuteNonQuery(sql, cmd)) - { - throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败 - } - } - else - { - throw new Exception(result.RetMsg); - } - } + //if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"])) + //{ + // string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"]; + // string Year = DateTime.Now.Year.ToString(); + // string Month = DateTime.Now.Month.ToString().PadLeft(2, '0'); + // string Day = DateTime.Now.Day.ToString().PadLeft(2, '0'); + // string Hour = DateTime.Now.Hour.ToString().PadLeft(2, '0'); + // string Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0'); + // string Second = DateTime.Now.Second.ToString().PadLeft(2, '0'); + // string InspectJosn = "{"; + // InspectJosn += "\"ID\":\"" + Year + Month + Day + Hour + Minute + Second + "\","; + // InspectJosn += "\"PalletID\": \"" + ContainerCode + "\","; + // InspectJosn += "\"LaneCode\": \"\","; + // InspectJosn += "\"TaskType\": \"PTWY\","; + // InspectJosn += "\"SourceBin\": \"\","; + // InspectJosn += "\"DestBin\": \"" + RecomendBinCode + "\""; + // InspectJosn += "}"; + // RestHelper rest = new RestHelper(ForkLiftUrl, HttpVerb.POST); + // rest.PostData = InspectJosn; + // string strResult = rest.MakeRequest(); + // //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn); + // ForkLiftResult result = JsonConvert.DeserializeObject(strResult); + // if (result.Ret == 1) + // { + // sql = @"update ICSContainer set LocationCode='{2}',EATTRIBUTE1='已搬运' where ContainerCode='{0}' AND WorkPoint='{1}'"; + // sql = string.Format(sql, ContainerCode, WorkPoint, LocationCode); + // if (!DBHelper.ExecuteNonQuery(sql, cmd)) + // { + // throw new Exception(language.GetNameByCode("WMSAPIInfo207"));//料架状态更新失败 + // } + // } + // else + // { + // throw new Exception(result.RetMsg); + // } + //} } //else //{ @@ -3192,18 +3192,26 @@ namespace ICSSoft.DataProject { try { - string sql = @"select Define1 from Sys_EnumValues - where EnumKey='00011' AND EnumText='{0}' AND WorkPointCode='{1}'"; - sql = string.Format(sql, LocationCode, WorkPoint); - DataTable dt = DBHelper.SQlReturnData(sql, cmd); - if (dt.Rows.Count == 0) - { - return ""; - } - else - { - return dt.Rows[0]["Define1"].ToString(); - } + //string sql = @" select TOP 1 B.LotNo from ICSContainer A + // INNER JOIN ICSContainerLot B ON B.ContainerID=A.ID AND B.WorkPoint=A.WorkPoint + // ORDER BY B.MTIME DESC"; + //sql = string.Format(sql, LocationCode, WorkPoint); + //DataTable dt = DBHelper.SQlReturnData(sql, cmd); + //if (dt.Rows.Count == 0) + //{ + // return ""; + //} + //else + //{ + // sql = @"SELECT A.WHCode,C.LocationCode FROM ICSDeliveryNotice A + // INNER JOIN ICSInventoryLotDetail B ON B.TransCode=A.DNCode AND B.TransSequence=A.Sequence AND B.WorkPoint=A.WorkPoint + // INNER JOIN ICSInventoryDetail C ON C.INVCode=A.InvCode AND C.WHCode=A.WHCode AND C.WorkPoint=A.WorkPoint + // WHERE B.LotNo='{0}' AND B.WorkPoint='{1}'"; + // sql = string.Format(sql, dt.Rows[0]["LotNo"].ToString(), WorkPoint); + + // return dt.Rows[0]["Define1"].ToString(); + //} + return "S02"; } catch (Exception) { @@ -3275,7 +3283,7 @@ namespace ICSSoft.DataProject { OverLoad = true; } - ContainerCode = dt.Rows[0]["IsOverLoad"].ToString(); + ContainerCode = dt.Rows[0]["ContainerCode"].ToString(); #region 查询料架中条码对应单据的仓库及条码对应物料的区域(绑定时已做卡控,一个料架只能绑定同仓库区域的条码,故只要通过其中一个条码来判断) sql = @"SELECT C.WHCode,C.LocationCode FROM ICSInventoryLotDetail A INNER JOIN ICSDeliveryNotice B ON B.DNCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint @@ -3328,7 +3336,14 @@ namespace ICSSoft.DataProject where B.LocationCode IS NULL AND A.LocationCode like ('{0}'+'-'+'{1}%') AND ISNULL(A.EATTRIBUTE1,'')='' AND A.LocationCode NOT IN ({2}) ORDER BY A.LocationCode"; - sql = string.Format(sql, InWHCode, InLocationCode, LocationIsTaken); + if (LocationIsTaken == "") + { + sql = string.Format(sql, InWHCode, InLocationCode, "''"); + } + else + { + sql = string.Format(sql, InWHCode, InLocationCode, LocationIsTaken); + } dt = DBHelper.SQlReturnData(sql, cmd); if (dt.Rows.Count == 0) { @@ -3348,17 +3363,16 @@ namespace ICSSoft.DataProject string TaskCode = DBHelper.SQlReturnData(serialsql, cmd).Rows[0][0].ToString(); string SerialNum = DateTime.Now.Hour.ToString().PadLeft(2, '0'); string InspectJosn = "{"; - InspectJosn += "\"ID\":\"" + TaskCode + "\",";//任务编号 + InspectJosn += "\"TaskID\":\"" + TaskCode + "\",";//任务编号 InspectJosn += "\"PalletID\": \"" + ContainerCode + "\",";//料架号 //InspectJosn += "\"LaneCode\": \"\","; InspectJosn += "\"TaskType\": \"PTWY\",";//任务类型 InspectJosn += "\"SourceBin\": \"" + currentPositionCode + "\",";//起始点位 InspectJosn += "\"DestBin\": \"" + dt.Rows[0]["LocationCode"].ToString() + "\"";//目标点位 InspectJosn += "}"; - RestHelper rest = new RestHelper(ForkLiftUrl, HttpVerb.POST); - rest.PostData = InspectJosn; - string strResult = rest.MakeRequest(); - //string resultstr = HTTPHelper.Post(ERPUrl.AGVBineURL, InspectJosn); + //RestHelper rest = new RestHelper(ForkLiftUrl, HttpVerb.POST); + //rest.PostData = InspectJosn; + string strResult = HTTPHelper.Post(ForkLiftUrl, InspectJosn); ForkLiftResult result = JsonConvert.DeserializeObject(strResult); if (result.Ret == 1) { @@ -3519,13 +3533,13 @@ namespace ICSSoft.DataProject #region 根据条码获取入库单据信息 string chksql = @"select COUNT(B.LotNo) AS LotCount from ICSContainer A - INNER JOIN ICSContainerLot B ON B.ContainerID=A.ContainerID AND B.WorkPoint=A.WorkPoint + INNER JOIN ICSContainerLot B ON B.ContainerID=A.ID AND B.WorkPoint=A.WorkPoint WHERE ContainerCode='{0}'"; chksql = string.Format(chksql, ContainerCode); DataTable chkdt = DBHelper.SQlReturnData(chksql, cmd); sql = @"select E.DNCode AS TransNO,E.Sequence AS TransLine,C.LotNo,C.Quantity,'采购入库' AS DocType ,A.WorkPoint,C.InvCode from ICSContainer A - INNER JOIN ICSContainerLot B ON B.ContainerID=A.ContainerID AND B.WorkPoint=A.WorkPoint + INNER JOIN ICSContainerLot B ON B.ContainerID=A.ID AND B.WorkPoint=A.WorkPoint INNER JOIN ICSInventoryLot C ON C.LotNo=B.LotNo AND C.WorkPoint=B.WorkPoint INNER JOIN ICSInventoryLotDetail D ON D.LotNo=C.LotNo AND D.WorkPoint=C.WorkPoint INNER JOIN ICSDeliveryNotice E ON E.DNCode=D.TransCode AND E.Sequence=D.TransSequence AND E.WorkPoint=D.WorkPoint @@ -3533,14 +3547,14 @@ namespace ICSSoft.DataProject UNION ALL select E.ApplyNegCode AS TransNO,E.Sequence AS TransLine,C.LotNo,C.Quantity,'生产退料' AS DocType ,A.WorkPoint,C.InvCode from ICSContainer A - INNER JOIN ICSContainerLot B ON B.ContainerID=A.ContainerID AND B.WorkPoint=A.WorkPoint + INNER JOIN ICSContainerLot B ON B.ContainerID=A.ID AND B.WorkPoint=A.WorkPoint INNER JOIN ICSInventoryLot C ON C.LotNo=B.LotNo AND C.WorkPoint=B.WorkPoint INNER JOIN ICSInventoryLotDetail D ON D.LotNo=C.LotNo AND D.WorkPoint=C.WorkPoint INNER JOIN ICSMOApplyNegDetail E ON E.ApplyNegCode=D.TransCode AND E.Sequence=D.TransSequence AND E.WorkPoint=D.WorkPoint where A.ContainerCode='{0}'"; sql = string.Format(sql, ContainerCode); dt = DBHelper.SQlReturnData(sql, cmd); - if (chkdt.Rows.Count != dt.Rows.Count) + if (Convert.ToInt32(chkdt.Rows[0]["LotCount"]) != dt.Rows.Count) { throw new Exception("料架:" + ContainerCode + ",绑定条码的数量与实际查到的条码单据关联数据不符,请确认条码信息!"); } diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs index 5917e95..42cd667 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs @@ -2822,12 +2822,13 @@ namespace ICSSoft.WebAPI.Controllers catch (Exception ex) { log.Error("转换失败:" + ex.ToString()); - res.Success = false; - res.Message = ex.Message; + agvres.code = "1"; + agvres.message = ex.Message; + agvres.reqCode = ""; } finally { - str = JsonConvert.SerializeObject(res); + str = JsonConvert.SerializeObject(agvres); result.Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json"); } return result; diff --git a/WMS-BS/NFine.Application/WMS/PickMaterialApp.cs b/WMS-BS/NFine.Application/WMS/PickMaterialApp.cs index a930136..5fdef7e 100644 --- a/WMS-BS/NFine.Application/WMS/PickMaterialApp.cs +++ b/WMS-BS/NFine.Application/WMS/PickMaterialApp.cs @@ -2582,7 +2582,7 @@ a.Sequence, string TaskCode = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, serialsql, true, null).Rows[0][0].ToString(); string SerialNum = DateTime.Now.Hour.ToString().PadLeft(2, '0'); ccInspectJosn += "{"; - ccInspectJosn += "\"ID\":\"" + TaskCode + "\",";//任务编号 + ccInspectJosn += "\"TaskID\":\"" + TaskCode + "\",";//任务编号 ccInspectJosn += "\"TaskType\": \"PTWY\",";//任务类型 ccInspectJosn += "\"SourceBin\": \"" + dr["LocationCode"].ToString() + "\",";//起始点位 ccInspectJosn += "}";