Browse Source

窄巷道叉车出入库逻辑修改

master
陆晔 2 years ago
parent
commit
4c66beec6b
  1. 28
      ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
  2. 132
      ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
  3. 7
      ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
  4. 2
      WMS-BS/NFine.Application/WMS/PickMaterialApp.cs

28
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);

132
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<ForkLiftResult>(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<ForkLiftResult>(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<ForkLiftResult>(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 + ",绑定条码的数量与实际查到的条码单据关联数据不符,请确认条码信息!");
}

7
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;

2
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 += "}";

Loading…
Cancel
Save