Browse Source

WMS窄巷道区域拣料后调用叉车接口搬运功能开发

master
陆晔 2 years ago
parent
commit
12de336e5a
  1. 108
      WMS-BS/NFine.Application/WMS/PickMaterialApp.cs
  2. 20
      WMS-BS/NFine.Domain/03 Entity/WMS/ForkLiftResult.cs
  3. 1
      WMS-BS/NFine.Domain/NFine.Domain.csproj
  4. 4
      WMS-BS/NFine.Web/Configs/system.config

108
WMS-BS/NFine.Application/WMS/PickMaterialApp.cs

@ -2536,6 +2536,9 @@ a.Sequence,
if (table.Rows.Count != 0)
{
#region 拣料时增加条码出入库记录,修改库存锁定数量,以作占料处理
string ccInspectJosn = "";
string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"];
string cclogsql = @"";
int Count = 1;
string BusinessCode = string.Empty;
string TransType = "";
@ -2549,7 +2552,52 @@ a.Sequence,
var pikTbLogTime = DateTime.Now;
string pikTbLogsql = string.Empty;
List<string> DocNoList = new List<string>();
if (Type == "2" || Type == "12" || Type == "5")
{
string ccsql = @"select B.F_Id from ICSInventoryDetail A
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}' AND B.F_ItemCode Like 'ForkLiftAreaConfig%'";
ccsql = string.Format(ccsql, table.Rows[0]["InvCode"].ToString(), table.Rows[0]["WarehouseCode"].ToString()
, WorkPoint);
var ccds = Repository().FindDataSetBySql(ccsql);
DataTable cctable = ccds.Tables[0];
if (cctable.Rows.Count != 0)
{
List<string> SourceBinList = new List<string>();
#region 窄巷道
foreach (DataRow dr in table.Rows)
{
if (!SourceBinList.Contains(dr["LocationCode"].ToString()))
{
SourceBinList.Add(dr["LocationCode"].ToString());
if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"]))
{
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.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 += "\"TaskType\": \"PTWY\",";//任务类型
ccInspectJosn += "\"SourceBin\": \"" + dr["LocationCode"].ToString() + "\",";//起始点位
ccInspectJosn += "}";
#region 记录叉车的任务编号及相关信息
#endregion
cclogsql += @"INSERT INTO ICSForkLiftTaskLog
(ID,TaskCode,ContainerCode,TaskType,StartLocation,EndLocation,MTIME,WorkPoint)
select NEWID(),'{0}','','PICK','{1}','',GETDATE(),'1701'";
cclogsql = string.Format(cclogsql, TaskCode, dr["LocationCode"].ToString());
}
}
}
#endregion
}
else
{
#region 货柜
string InspectJosn = "";
@ -2647,6 +2695,7 @@ a.Sequence,
}
#endregion
}
}
foreach (DataRow PickLog in table.Rows)
{
pikTbLogsql += @" IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{9}' AND WorkPoint='{8}' AND TransType='15')
@ -2670,7 +2719,7 @@ a.Sequence,
pikTbLogsql = string.Format(pikTbLogsql, Identification, PickLog["Code"].ToString(), PickLog["Sequence"].ToString(), PickLog["SendQTY"].ToString()
, BusinessCode, MUSER, MUSERNAME, pikTbLogTime, WorkPoint, PickLog["LotNO"].ToString());
}
SqlHelper.CmdExecuteNonQueryLi(pikTbLogsql);
CmdExecuteNonQueryWithAPI(pikTbLogsql, cclogsql, ccInspectJosn, ForkLiftUrl);
#endregion
}
@ -3850,7 +3899,62 @@ b.InvUnit,
}
//事务中执行SQL及调用接口
public static int CmdExecuteNonQueryWithAPI(string sql, string ccsql, string InputJson, string PostUrl, params SqlParameter[] spArr)
{
using (SqlConnection conn = SqlHelper.GetDataCenterConn())
{
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
if (ccsql == "")
{
cmd.CommandText = sql;
int RES = cmd.ExecuteNonQuery();
cmd.Transaction.Commit();
return RES;
}
else
{
cmd.CommandText = sql;
int RES = cmd.ExecuteNonQuery();
cmd.CommandText = ccsql;
RES = cmd.ExecuteNonQuery();
#region 叉车接口调用(写进事务中,报错可以回滚,保证数据正确)
string rest = HTTPHelper.HttpPost("WMS调用叉车接口出库", PostUrl, InputJson);
ForkLiftResult result = JsonConvert.DeserializeObject<ForkLiftResult>(rest);
if (result.Ret == 1)
{
cmd.Transaction.Commit();
return RES;
}
else
{
throw new Exception(result.RetMsg);
}
#endregion
}
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
throw new Exception(ex.Message);
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
conn.Dispose();
}
}
return 0;
}
}

20
WMS-BS/NFine.Domain/03 Entity/WMS/ForkLiftResult.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NFine.Domain._03_Entity.WMS
{
public class ForkLiftResult
{
/// <summary>
/// 结果编码(0:成功)
/// </summary>
public int Ret { get; set; }
/// <summary>
/// 返回信息
/// </summary>
public string RetMsg { get; set; }
}
}

1
WMS-BS/NFine.Domain/NFine.Domain.csproj

@ -67,6 +67,7 @@
<Compile Include="03 Entity\SystemSecurity\FilterIPEntity.cs" />
<Compile Include="03 Entity\SystemSecurity\LogEntity.cs" />
<Compile Include="02 ViewModel\AuthorizeActionModel.cs" />
<Compile Include="03 Entity\WMS\ForkLiftResult.cs" />
<Compile Include="03 Entity\WMS\ICSHGResult.cs" />
<Compile Include="03 Entity\WMS\ICSInventoryLot.cs" />
<Compile Include="03 Entity\WMS\ICSMTDOC.cs" />

4
WMS-BS/NFine.Web/Configs/system.config

@ -29,11 +29,13 @@
<add key="MailHost" value="smtp.ym.163.com" />
<!--是否打开接口-->
<add key="UploadERP" value="true"/>
<!--是否打开叉车接口-->
<add key="UploadForkLift" value="true"/>
<!--货柜单据传输接口地址-->
<add key="HGDocpostUrlStr" value="http://192.168.21.109:8382/api/jobs/CFG-IMP-ORDINI"/>
<!--<add key="HGDocpostUrlStr" value="http://192.168.0.229:3001/api/jobs/CFG-IMP-ORDINI"/>-->
<!--WMS货柜用API接口地址-->
<add key="WMSpostUrlStr" value="http://192.168.0.191:8085/api/LOTStockDownHG/Create"/>
<!--WMS拣料调用叉车API接口地址-->
<add key="ForkLiftOutUrl" value="http://192.168.1.240:9002/VnaService?wsdl"/>
<add key="ForkLiftUrl" value="http://192.168.1.240:9002/VnaService?wsdl"/>
</appSettings>
Loading…
Cancel
Save