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.
246 lines
13 KiB
246 lines
13 KiB
using ICS.WCF.Base;
|
|
using ICSSoft.Entity;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace ICS.LotNoInfoGet
|
|
{
|
|
public class GetLotNoInfo
|
|
{
|
|
/// <summary>
|
|
/// 获取物料条码信息生成条码
|
|
/// </summary>
|
|
public FormICSCreatedArrivalNoticeModel CustGetLotNoInfo(List<LotNoValues> lstl)
|
|
{
|
|
FormICSCreatedArrivalNoticeModel result = new FormICSCreatedArrivalNoticeModel();
|
|
using (SqlConnection conn = new SqlConnection(Appconfig.GetMESStr()))
|
|
{
|
|
conn.Open();
|
|
using (SqlTransaction trans = conn.BeginTransaction())
|
|
{
|
|
try
|
|
{
|
|
string sql = "";
|
|
int flag = 0;
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Connection = conn;
|
|
cmd.Transaction = trans;
|
|
StringBuilder str = new StringBuilder();
|
|
foreach (LotNoValues l in lstl)
|
|
{
|
|
string chksql = @"select * from ICSItemLot where LotNo='{0}' AND WorkPoint='{1}'";
|
|
chksql = string.Format(chksql, l.LotNo, l.WorkPoint);
|
|
DataTable chkdt = SQlReturnData(chksql, cmd);
|
|
if (chkdt.Rows.Count != 0)
|
|
{
|
|
str.AppendLine("传入条码:" + l.LotNo + "已存在");
|
|
continue;
|
|
}
|
|
if (l.LotType == 0)
|
|
{
|
|
foreach (POInfo poinfo in l.PoInfoList)
|
|
{
|
|
chksql = @"select * from ICSPO_PoMain
|
|
where POCode='{0}' AND PORow='{1}'";
|
|
chksql = string.Format(chksql, poinfo.POCode, poinfo.PORow);
|
|
chkdt = SQlReturnData(chksql, cmd);
|
|
if (chkdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception("传入采购订单号:" + poinfo.POCode + ",行号:" + poinfo.PORow + "不存在,无法创建条码!");
|
|
}
|
|
}
|
|
sql = @"INSERT INTO ICSITEMLot
|
|
( ID ,LotNO ,ItemCODE ,TransNO ,TransLine ,VENDORITEMCODE ,VENDORCODE ,
|
|
VenderLotNO ,PRODUCTDATE ,LOTQTY ,ACTIVE ,Exdate ,WorkPoint ,
|
|
MUSER ,MUSERName ,MTIME ,TYPE,ORDERNO)
|
|
SELECT NEWID(),'" + l.LotNo + "',InvCode,'','','',VenCode,'" + l.VendorLot + "',GETDATE(),'" +
|
|
l.LOTQTY + "','Y','2999-12-31 00:00:00.000','" + l.WorkPoint + "','" +
|
|
l.MUSER + "','" + l.MUSERNAME + @"',GETDATE(),'采购原料',ORDERNO
|
|
FROM dbo.ICSPO_PoMain WHERE POCode='" + l.PoInfoList[0].POCode + "' AND PORow='"
|
|
+ l.PoInfoList[0].PORow + "' AND WorkPoint='" + l.WorkPoint + "'";
|
|
cmd.CommandText = sql;
|
|
flag = cmd.ExecuteNonQuery();
|
|
StringBuilder resultlog = new StringBuilder();
|
|
if (flag <= 0)
|
|
{
|
|
resultlog.AppendLine("生成物料条码失败");
|
|
resultlog.AppendLine("查询sql:" + sql);
|
|
Appconfig.WriteLogFile(resultlog.ToString(), "获取生成条码接口日志");
|
|
throw new Exception("生成条码失败");
|
|
}
|
|
foreach (POInfo p in l.PoInfoList)
|
|
{
|
|
sql = @"INSERT INTO ICSLot2Doc (ID,LotNO,DocType,TransNO,TransLine,LinkQty,MTIME,MUSER,MUSERNAME,WorkPoint)
|
|
select NEWID(),LotNO,'采购订单','" + p.POCode + "','" + p.PORow +
|
|
"'," + p.LinkQty + ",MTIME,MUSER,MUSERName,WorkPoint from ICSITEMLot where LotNO='" + l.LotNo + "' ";
|
|
|
|
cmd.CommandText = sql;
|
|
flag = cmd.ExecuteNonQuery();
|
|
if (flag <= 0)
|
|
{
|
|
resultlog.AppendLine("物料内箱信息添加失败");
|
|
resultlog.AppendLine("查询sql:" + sql);
|
|
Appconfig.WriteLogFile(resultlog.ToString(), "获取生成条码接口日志");
|
|
throw new Exception("物料内箱信息添加失败");
|
|
}
|
|
}
|
|
}
|
|
else if (l.LotType == 1)
|
|
{
|
|
string WHID = "";
|
|
string StackID = "";
|
|
string BinCode = fenge(l.BinCode);
|
|
if (!string.IsNullOrWhiteSpace(l.WHCode) && !string.IsNullOrWhiteSpace(BinCode))
|
|
{
|
|
chksql = @"select Serial from ICSStorage
|
|
WHERE StorageCode='{0}' and WorkPoint='{1}'";
|
|
chksql = string.Format(chksql, l.WHCode, l.WorkPoint);
|
|
chkdt = SQlReturnData(chksql, cmd);
|
|
if (chkdt.Rows.Count == 0)
|
|
{
|
|
throw new Exception("传入仓库:" + l.WHCode + "不存在,无法创建条码!");
|
|
}
|
|
else
|
|
{
|
|
WHID = chkdt.Rows[0]["Serial"].ToString();
|
|
}
|
|
chksql = @"select Serial from ICSStack
|
|
WHERE StackCode = '{0}' and Storage_Serial='{1}' and WorkPoint='{2}'";
|
|
chksql = string.Format(chksql, BinCode, WHID, l.WorkPoint);
|
|
chkdt = SQlReturnData(chksql, cmd);
|
|
if (chkdt.Rows.Count == 0)
|
|
{
|
|
str.AppendLine("传入库位:" + BinCode + "不存在!");
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
StackID = chkdt.Rows[0]["Serial"].ToString();
|
|
}
|
|
}
|
|
sql = @"insert into ICSWareHouseLotInfo
|
|
Values
|
|
(NEWID(),'" + l.LotNo + "','" + WHID + "','" + l.WHCode + "','" + StackID + "','"
|
|
+ BinCode + "','1002107293539020','1250020051' ,'" + l.LOTQTY + "',GETDATE(),'" + l.WorkPoint + "','" + l.MUSER + "','"
|
|
+ l.MUSERNAME + "',GETDATE(),'期初',null,0,'')";
|
|
cmd.CommandText = sql;
|
|
flag = cmd.ExecuteNonQuery();
|
|
StringBuilder resultlog = new StringBuilder();
|
|
if (flag <= 0)
|
|
{
|
|
throw new Exception("生成库存失败");
|
|
}
|
|
|
|
sql = @"INSERT INTO ICSITEMLot
|
|
( ID ,LotNO ,ItemCODE ,TransNO ,TransLine ,VENDORITEMCODE ,VENDORCODE ,
|
|
VenderLotNO ,PRODUCTDATE ,LOTQTY ,ACTIVE ,Exdate ,WorkPoint ,
|
|
MUSER ,MUSERName ,MTIME ,EATTRIBUTE1,TYPE,ORDERNO)
|
|
values (NEWID(),'" + l.LotNo + "','1250020051','','','','','" + l.VendorLot + "',GETDATE(),'" +
|
|
l.LOTQTY + "','Y','2999-12-31 00:00:00.000','" + l.WorkPoint + "','" +
|
|
l.MUSER + "','" + l.MUSERNAME + @"',GETDATE(),'期初','原材料','')";
|
|
cmd.CommandText = sql;
|
|
flag = cmd.ExecuteNonQuery();
|
|
resultlog = new StringBuilder();
|
|
if (flag <= 0)
|
|
{
|
|
throw new Exception("生成条码失败");
|
|
}
|
|
if (l.PoInfoList != null && l.PoInfoList.Count > 0)
|
|
{
|
|
foreach (POInfo p in l.PoInfoList)
|
|
{
|
|
sql = @"INSERT INTO ICSLot2Doc (ID,LotNO,DocType,TransNO,TransLine,LinkQty,MTIME,MUSER,MUSERNAME,WorkPoint)
|
|
select NEWID(),LotNO,'期初','" + p.POCode + "','" + p.PORow +
|
|
"'," + p.LinkQty + ",MTIME,MUSER,MUSERName,WorkPoint from ICSITEMLot where LotNO='" + l.LotNo + "' ";
|
|
cmd.CommandText = sql;
|
|
flag = cmd.ExecuteNonQuery();
|
|
if (flag <= 0)
|
|
{
|
|
throw new Exception("物料内箱信息添加失败");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("传入数据错误");
|
|
}
|
|
}
|
|
trans.Commit();
|
|
Appconfig.WriteLogFile(str.ToString(), "获取生成条码接口日志(无效数据)");
|
|
result.Code = 0;
|
|
result.ResMsg = "物料条码生成成功";
|
|
result.ResData = "{}";
|
|
result.IsCompress = false;
|
|
result.IsSuccess = true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
StringBuilder str = new StringBuilder();
|
|
result.Code = -1;
|
|
result.ResMsg = ex.Message;
|
|
result.ResData = "{}";
|
|
result.IsCompress = false;
|
|
result.IsSuccess = true;
|
|
str.AppendLine("物料信息获取失败");
|
|
str.AppendLine("失败原因:" + ex.Message);
|
|
Appconfig.WriteLogFile(str.ToString(), "获取生成条码接口日志");
|
|
trans.Rollback();
|
|
}
|
|
}
|
|
conn.Close();
|
|
}
|
|
return result;
|
|
}
|
|
//库位转换
|
|
public string fenge(string sourceString)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < sourceString.Length; i++)
|
|
{
|
|
if (i == 0 || i == 3)
|
|
{
|
|
sb.Append(sourceString[i].ToString()).Append("-");
|
|
}
|
|
else
|
|
{
|
|
sb.Append(sourceString[i]);
|
|
}
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
/// <summary>
|
|
/// 送货单返回值
|
|
/// </summary>
|
|
public class FormICSCreatedArrivalNoticeModel
|
|
{
|
|
//0 :正常数据,-1:失败。
|
|
public int Code { get; set; }
|
|
public string ResMsg { get; set; }
|
|
public Object ResData { get; set; }
|
|
public bool IsCompress { get; set; }
|
|
public bool IsSuccess { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// SQL执行方法
|
|
/// </summary>
|
|
/// <param name="SQl"></param>
|
|
/// <param name="cmd"></param>
|
|
/// <returns></returns>
|
|
public static DataTable SQlReturnData(string SQl, SqlCommand cmd)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
cmd.CommandText = SQl;
|
|
SqlDataAdapter dr = new System.Data.SqlClient.SqlDataAdapter();
|
|
dr.SelectCommand = cmd;
|
|
dr.Fill(dt);
|
|
return dt;
|
|
}
|
|
|
|
}
|
|
}
|