diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
index 36b8d8b..64e5f3b 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
@@ -7098,8 +7098,11 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer
using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
{
conn.Open();
+
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
+ SqlTransaction sqlTran = conn.BeginTransaction();
+ cmd.Transaction = sqlTran;
try
{
Result res = new Result();
@@ -7107,6 +7110,17 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer
{
msg = string.Format(language.GetNameByCode("WMSAPIInfo007"));//"传入数据为空!"
}
+ //获取第一个数据的料架编码
+ string fistContainerCode = JsonData.FirstOrDefault().ContainerCode;
+ //获取第一个条码数据
+ string fistLotNO= JsonData.FirstOrDefault().LotNo;
+ //查询第一个条码的仓库和库位信息
+ var tableData=ICSWareHouseLotInfoService.GetWHCodeArea(fistLotNO, cmd);
+ if (tableData.Rows.Count==0)
+ {
+ throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo038"), fistLotNO));
+ }
+
foreach (ICSContainerBind item in JsonData)
{
string TransType = item.TransType;
@@ -7134,6 +7148,10 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer
{
msg = string.Format(language.GetNameByCode("WMSAPIInfo206"));//"位置编码不能为空!"
}
+ if (item.ContainerCode!=fistContainerCode)
+ {
+ msg = string.Format(language.GetNameByCode("WMSAPIInfo474"));//"所传的料架编码不一致,调用失败!"
+ }
if (msg != "")
{
res.Success = false;
@@ -7144,8 +7162,26 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer
{
if (TransType == TransTypeEnum.ContainerBind.GetDescription())
{
- //料架条码绑定
- ICSWareHouseLotInfoService.ContainerBind(item.LotNo, item.ContainerCode, item.ContainerType, item.LocationCode, item.RecomendBinCode, item.User, item.WorkPoint, cmd, language);
+ var tableModel = ICSWareHouseLotInfoService.GetWHCodeArea(item.LotNo, cmd);
+ if (tableModel.Rows.Count == 0)
+ {
+ throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo038"), item.LotNo));
+ }
+ else if (tableModel.Rows[0]["WHCode"].ToString()!= tableData.Rows[0]["WHCode"].ToString())
+ {
+ throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo475"), item.LotNo));
+ }
+ else if (tableModel.Rows[0]["LocationCode"].ToString() != tableData.Rows[0]["LocationCode"].ToString())
+ {
+ throw new Exception(string.Format(language.GetNameByCode("WMSAPIInfo476"), item.LotNo));
+ }
+ else
+ {
+ //料架条码绑定
+ ICSWareHouseLotInfoService.ContainerBind(item.LotNo, item.ContainerCode, item.ContainerType, item.LocationCode, item.RecomendBinCode, item.User, item.WorkPoint, cmd, language);
+
+ }
+
}
else
{
@@ -7156,6 +7192,7 @@ WHERE WorkPoint='{0}' AND Quantity>ISNULL(TransferQuantity, 0) order by Transfer
}
res.Success = true;
res.Message = msg;// "接口调用成功!";
+ cmd.Transaction.Commit();
return res;
}
catch (Exception ex)
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
index 70d2de3..52e1cbc 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
@@ -2878,23 +2878,33 @@ namespace ICSSoft.DataProject
BEGIN
RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{3}") + @"',16,1);
RETURN
+ END
+ IF NOT EXISTS(SELECT ID FROM ICSInventoryLot WHERE LotNO='{0}')
+ BEGIN
+ RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo038"), "{0}") + @"',16,1);
+ RETURN
+ END
+ IF NOT EXISTS(SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
+ BEGIN
+ RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo473"), "{2}", "{1}") + @"',16,1);
+ RETURN
END
IF NOT EXISTS (SELECT * FROM ICSContainerLot WHERE ContainerID=
- (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}'))
+ (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}') AND LotNo='{0}')
BEGIN
- update ICSContainer set LocationCode='{4}',EATTRIBUTE1='已绑定' where ContainerCode='{1}' AND WorkPoint='{2}'
+ -- update ICSContainer set EATTRIBUTE1='已绑定' where ContainerCode='{1}' AND WorkPoint='{2}'
INSERT INTO ICSContainerLot
(ID,ContainerID,LotNo,MUSER,MUSERName,WorkPoint,MTIME,EATTRIBUTE1)
SELECT NEWID(),ID,'{0}','{3}'
- ,(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}'),'{2}',GETDATE(),'{4}' FROM ICSContainer
+ ,(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{3}' AND F_Location='{2}'),'{2}',GETDATE(),'' FROM ICSContainer
WHERE ContainerCode='{1}' AND WorkPoint='{2}'
END
- ELSE
- BEGIN
- update ICSContainer set LocationCode='{4}',EATTRIBUTE1='已绑定' where ContainerCode='{1}' AND WorkPoint='{2}'
- UPDATE ICSContainerLot SET LotNo='{0}' WHERE ContainerID=
- (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
- END
+ -- ELSE
+ -- BEGIN
+ -- update ICSContainer set LocationCode='{4}',EATTRIBUTE1='已绑定' where ContainerCode='{1}' AND WorkPoint='{2}'
+ -- UPDATE ICSContainerLot SET LotNo='{0}' WHERE ContainerID=
+ -- (SELECT ID FROM ICSContainer WHERE ContainerCode='{1}' AND WorkPoint='{2}')
+ -- END
";
sql = string.Format(sql, LotNo, ContainerCode, WorkPoint, User, LocationCode);
@@ -3244,5 +3254,33 @@ namespace ICSSoft.DataProject
throw new Exception(ex.Message);
}
}
+ ///
+ /// 根据条码获取仓库和区域信息
+ ///
+ ///
+ ///
+ public static DataTable GetWHCodeArea(string LotNo,SqlCommand cmd)
+ {
+ try
+ {
+ string check = $@"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='{LotNo}'
+ 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='{LotNo}'";
+ var table = DBHelper.SQlReturnData(check, cmd);
+ return table;
+
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
}
}