You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
6.1 KiB

using ICSSoft.ERPWMS.Entity;
using Microsoft.Data.SqlClient;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ICSSoft.ERPWMS.SQL
{
public class DeleteInventoryLot
{
public static Result Delete(List<DeleteInventoryEntity> entityList)
{
Result res = new Result();
try
{
string jsonstr = JsonConvert.SerializeObject(entityList);
Log.WriteLogFile(jsonstr, "删除条码日志");
StringBuilder sb = new StringBuilder();//接口返回Message
foreach (DeleteInventoryEntity entity in entityList)
{
SqlConnection conn = new SqlConnection(ICSHelper.ReadConfig(ICSHelper.FileNameCompanyCon)["WMS"].ToString());
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
if (string.IsNullOrWhiteSpace(entity.LotNo))
{
throw new Exception("存在物料条码为空!");
}
if (string.IsNullOrWhiteSpace(entity.WorkPoint))
{
throw new Exception("站点为空!");
}
string WorkPoint = ICSHelper.GetConnectStringTest(entity.WorkPoint);
if (WorkPoint == "NotExit")
{
throw new Exception("站点编码不存在!");
}
string sqlLot = "Select LotNo,ExtensionID from ICSInventoryLot where workpoint='{0}' and LotNo='{1}'";
sqlLot = string.Format(sqlLot, WorkPoint, entity.LotNo);
DataTable dtLot = ICSHelper.SQlReturnData(sqlLot, cmd);
if (dtLot != null && dtLot.Rows.Count > 0)
{
//检查条码是否绑定送货单,若绑定则不能删除
string sqlASN = "Select LotNo from ICSASNDetail Where workpoint='{0}' and LotNo ='{1}'";
sqlASN = string.Format(sqlASN, WorkPoint, entity.LotNo);
DataTable dtASN = ICSHelper.SQlReturnData(sqlASN, cmd);
if (dtASN != null && dtASN.Rows.Count > 0)
{
throw new Exception("条码已绑定送货单,不能删除!");
}
//删除条码表表头
string sqlLotDelete = "Delete ICSInventoryLot where workpoint='{0}' and LotNo='{1}'";
sqlLotDelete = string.Format(sqlLotDelete, WorkPoint, dtLot.Rows[0]["LotNo"].ToString());
Log.WriteLogFile(sqlLotDelete, "删除条码SQL日志");
if (!ICSHelper.ExecuteNonQuery(sqlLotDelete, cmd))
{
throw new Exception("删除条码表表头失败!");
}
//删除条码表表体
string sqlLotDetailDelete = "Delete ICSInventoryLotDetail where workpoint='{0}' and LotNo='{1}'";
sqlLotDetailDelete = string.Format(sqlLotDetailDelete, WorkPoint, dtLot.Rows[0]["LotNo"].ToString());
Log.WriteLogFile(sqlLotDetailDelete, "删除条码SQL日志");
if (!ICSHelper.ExecuteNonQuery(sqlLotDetailDelete, cmd))
{
throw new Exception("删除条码表表体失败!");
}
//删除自由项表
//string sqlCheck = "Select * from ICSInventoryLot where ExtensionID ='" + dtLot.Rows[0]["ExtensionID"].ToString() + "'";
//DataTable dtCheck = ICSHelper.SQlReturnData(sqlCheck, cmd);
//if (dtCheck.Rows.Count<1)
//{
// string sqlFreeDelete = "Delete ICSExtension where workpoint='{0}' and ID ='{1}'";
// sqlFreeDelete = string.Format(sqlFreeDelete, WorkPoint, dtLot.Rows[0]["ExtensionID"].ToString());
// Log.WriteLogFile(sqlFreeDelete, "删除条码SQL日志");
// if (!ICSHelper.ExecuteNonQuery(sqlFreeDelete, cmd))
// {
// throw new Exception("删除自由项表失败!");
// }
//}
}
cmd.Transaction.Commit();
}
catch (Exception ex)
{
cmd.Transaction.Rollback();
sb.Append("执行报错,条码为:" + entity.LotNo + ",报错信息:" + ex.Message + "!!!");
continue;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
}
if (sb.Length > 0)
{
res.IsSuccess = false;
res.Message = sb.ToString();
}
else
{
res.IsSuccess = true;
res.Message = "执行成功!";
}
return res;
}
catch (Exception ex)
{
res.IsSuccess = false;
res.Message = ex.Message;
return res;
}
}
}
}