diff --git a/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll b/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll index a51f1c0..21f94c4 100644 Binary files a/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll and b/ICSSoft.FromERP/Root/ICSSoft.Frame.Data.Entity.dll differ diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs index 64e5f3b..7f9e7ad 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs @@ -8280,7 +8280,20 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer } if (!string.IsNullOrEmpty(JsonData.WHCode)) { - sql += $@" AND A.WarehouseCode='{JsonData.WHCode}'"; + string strWhCode = ""; + string[] WHCodeList = JsonData.WHCode.Split(','); + foreach (string WHCode in WHCodeList) + { + if (strWhCode == "") + { + strWhCode += "'" + WHCode + "'"; + } + else + { + strWhCode += ",'" + WHCode + "'"; + } + } + sql += $@" AND A.WarehouseCode IN ({strWhCode})"; } if (!string.IsNullOrEmpty(JsonData.WorkPoint)) { @@ -8363,7 +8376,20 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer } if (!string.IsNullOrEmpty(JsonData.WHCode)) { - sql += $@" AND A.FromWarehouseCode='{JsonData.WHCode}'"; + string strWhCode = ""; + string[] WHCodeList = JsonData.WHCode.Split(','); + foreach (string WHCode in WHCodeList) + { + if (strWhCode == "") + { + strWhCode += "'" + WHCode + "'"; + } + else + { + strWhCode += ",'" + WHCode + "'"; + } + } + sql += $@" AND A.FromWarehouseCode IN ({strWhCode})"; } if (!string.IsNullOrEmpty(JsonData.WorkPoint)) { diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs index 52e1cbc..8a3d771 100644 --- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs +++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs @@ -3213,14 +3213,21 @@ namespace ICSSoft.DataProject /// /// /// - public static void ActionSaveAGVTaskCode(string TaskCode, string ContainerCode, string Location,bool IsOverLoad, string User, string WorkPoint, SqlCommand cmd, Dictionary language) + public static void ActionSaveAGVTaskCode(string TaskCode, string ContainerCode, string Location, bool IsOverLoad, string User, string WorkPoint, SqlCommand cmd, Dictionary language) { try { string sql = @"Insert into ICSAGVTaskLog (ID,TaskCode,ContainerCode,LocationCode,IsOverLoad,UserCode,MTIME,WorkPoint) select NEWID(),'{0}','{1}','{2}','{3}','{4}',GETDATE(),'{5}'"; - sql = string.Format(sql, TaskCode, ContainerCode, Location, IsOverLoad, User, WorkPoint); + if (IsOverLoad == true) + { + sql = string.Format(sql, TaskCode, ContainerCode, Location, "是", User, WorkPoint); + } + else + { + sql = string.Format(sql, TaskCode, ContainerCode, Location, "否", User, WorkPoint); + } DataTable dt = DBHelper.SQlReturnData(sql, cmd); if (dt.Rows.Count == 0) { @@ -3245,8 +3252,112 @@ namespace ICSSoft.DataProject try { #region 根据任务ID查询是否需要超托入库 - string sql = @""; + bool OverLoad = false; + string ContainerCode = ""; + string InWHCode = ""; + string InLocationCode = ""; + string sql = @"select ContainerCode,LocationCode,IsOverLoad from ICSAGVTaskLog + where TaskCode='{0}'"; + sql = string.Format(sql, reqCode); DataTable dt = DBHelper.SQlReturnData(sql, cmd); + if (dt.Rows.Count == 0) + { + throw new Exception("未查询到对应的任务ID:" + reqCode + "!"); + } + else + { + if (dt.Rows[0]["IsOverLoad"].ToString() == "是") + { + OverLoad = true; + } + ContainerCode = dt.Rows[0]["IsOverLoad"].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 + INNER JOIN ICSInventoryDetail C ON C.INVCode=B.InvCode AND C.WHCode=B.WHCode AND C.WorkPoint=B.WorkPoint + WHERE A.LotNo=(select top 1 LotNo from ICSContainerLot A + INNER JOIN ICSContainer B ON B.ID=A.ContainerID + WHERE B.ContainerCode='{0}') + UNION ALL + SELECT C.WHCode,C.LocationCode FROM ICSInventoryLotDetail A + INNER JOIN ICSMOApplyNegDetail B ON B.ApplyNegCode=A.TransCode AND B.Sequence=A.TransSequence AND B.WorkPoint=A.WorkPoint + INNER JOIN ICSInventoryDetail C ON C.INVCode=B.InvCode AND C.WHCode=B.WHCode AND C.WorkPoint=B.WorkPoint + WHERE A.LotNo=(select top 1 LotNo from ICSContainerLot A + INNER JOIN ICSContainer B ON B.ID=A.ContainerID + WHERE B.ContainerCode='{0}')"; + sql = string.Format(sql, ContainerCode); + dt = DBHelper.SQlReturnData(sql, cmd); + if (dt.Rows.Count == 0) + { + throw new Exception("未查询到料架:" + ContainerCode + ",对应的入库区域和仓库!"); + } + else + { + InWHCode = dt.Rows[0]["WHCode"].ToString(); + InLocationCode = dt.Rows[0]["LocationCode"].ToString(); + #region 根据入库仓库和区域获取按库位编码排序后可以入库的下一个库位 + if (OverLoad == false) + { + #region 正常入库 + sql = @"select TOP 1 A.LocationCode from ICSLocation A + LEFT JOIN ICSWareHouseLotInfo B ON B.LocationCode=A.LocationCode AND B.WorkPoint=A.WorkPoint AND B.Quantity>0 + where B.LocationCode IS NULL AND A.LocationCode like ('{0}'+'-'+'{1}%') + ORDER BY A.LocationCode"; + sql = string.Format(sql, InWHCode, InLocationCode); + dt = DBHelper.SQlReturnData(sql, cmd); + if (dt.Rows.Count == 0) + { + throw new Exception("仓库:" + InWHCode + ",区域:" + InLocationCode + "无可用库位,无法入库!"); + } + else + { + 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 Pre = "CC" + Year + Month + Day; + string serialsql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}"; + serialsql = string.Format(serialsql, "1701", "ICSForkLiftTaskLog", "TaskCode", Pre, 4); + 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 += "\"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); + ForkLiftStartTaskResultModel result = JsonConvert.DeserializeObject(strResult); + if (result.Ret == 1) + { + #region 记录叉车的任务编号及相关信息 + #endregion + 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); + } + } + } + #endregion + } + #endregion + } + #endregion + } #endregion } catch (Exception ex)