using System.Data;
|
using System.Data.SqlClient;
|
using Masuit.Tools;
|
using Microsoft.SqlServer.Server;
|
using NewPdaSqlServer.DB;
|
using NewPdaSqlServer.Dto.service;
|
using NewPdaSqlServer.entity;
|
using NewPdaSqlServer.entity.Base;
|
using SqlSugar;
|
|
namespace NewPdaSqlServer.service.Wom;
|
|
public class WomdaaManager : Repository<Womdaa>
|
{
|
//当前类已经继承了 Repository 增、删、查、改的方法
|
//这里面写的代码不会给覆盖,如果要重新生成请删除 WomdaaManager.cs
|
|
//获取工单号
|
public List<string> GetProductionPickDaa001(WarehouseQuery query)
|
{
|
var sql =
|
"SELECT DAA001 FROM WOMDAA A LEFT JOIN (SELECT COUNT(1) UN_NUM, PID FROM WOMDAB WHERE DAB006 > DAB007 GROUP BY DAB002) B ON A.GUID = B.daaGuid WHERE DAA001 = " +
|
query.daa001 +
|
" and DAA018 != '完工' AND DAA022 = 1 AND UN_NUM > 0 AND ROWNUM <= 10 order by a.id desc";
|
|
return Db.Ado.SqlQuery<string>(sql);
|
}
|
|
//根据工单号返回产品型号和待领物料
|
public ProductionPickDto GetItemsByDaa001(WarehouseQuery query)
|
{
|
return getDaa001(query);
|
}
|
|
public ProductionPickDto ScanCode(WarehouseQuery query)
|
{
|
var _strMsg = "";
|
var _intSum = "";
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
|
if (query.daa001.IsNullOrEmpty()) throw new Exception("领料单号不允许为空");
|
if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
|
|
using (var cmd = new SqlCommand("[prc_pda_SCLL]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@outMsg", SqlDbType.NVarChar, 300),
|
new("@outSum", SqlDbType.NVarChar, 300),
|
new("@barcode_num", SqlDbType.NVarChar, 300),
|
new("@split_num", SqlDbType.NVarChar, 300),
|
new("@c_User", query.userName),
|
new("@p_biLL_no", query.daa001),
|
new("@p_item_barcode", query.barcode)
|
};
|
parameters[0].Direction = ParameterDirection.Output;
|
parameters[1].Direction = ParameterDirection.Output;
|
parameters[2].Direction = ParameterDirection.Output;
|
parameters[3].Direction = ParameterDirection.Output;
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
cmd.ExecuteNonQuery();
|
_strMsg = parameters[0].Value.ToString();
|
_intSum = parameters[1].Value.ToString();
|
|
var barcodeNum = parameters[2].Value.ToString();
|
var splitNum = parameters[3].Value.ToString();
|
|
var result = Convert.ToInt32(_intSum);
|
if (result <= 0) throw new Exception(_strMsg);
|
|
var dto = new ProductionPickDto
|
{
|
daa001 = query.daa001,
|
barcodeNum = barcodeNum,
|
splitNum = splitNum,
|
barcode = query.barcode,
|
strMsg = _strMsg,
|
result = _intSum
|
};
|
|
return dto;
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
}
|
|
//prC_pda_SCLL_CF
|
public ProductionPickDto ScanCodeCF(WarehouseQuery query)
|
{
|
if (query.userName.IsNullOrEmpty()) throw new Exception("用户名不允许为空");
|
if (query.daa001.IsNullOrEmpty()) throw new Exception("领料单号不允许为空");
|
if (query.barcode.IsNullOrEmpty()) throw new Exception("条码不允许为空");
|
|
if (query.Num is null or 0) throw new Exception("条码拆分数不允许为空或者为0");
|
|
var _strMsg = "";
|
var _intSum = "";
|
using (var conn = new SqlConnection(DbHelperSQL.strConn))
|
{
|
using (var cmd = new SqlCommand("[prc_pda_SCLL_CF]", conn))
|
{
|
try
|
{
|
conn.Open();
|
cmd.CommandType = CommandType.StoredProcedure;
|
SqlParameter[] parameters =
|
{
|
new("@outMsg", SqlDbType.NVarChar, 300),
|
new("@outSum", SqlDbType.NVarChar, 300),
|
new("@c_User", query.userName),
|
new("@p_biLL_no", query.daa001),
|
new("@p_item_barcode", query.barcode),
|
new("@num", query.Num)
|
};
|
parameters[0].Direction = ParameterDirection.Output;
|
parameters[1].Direction = ParameterDirection.Output;
|
foreach (var parameter in parameters)
|
cmd.Parameters.Add(parameter);
|
cmd.ExecuteNonQuery();
|
_strMsg = parameters[0].Value.ToString();
|
_intSum = parameters[1].Value.ToString();
|
|
|
var result = Convert.ToInt32(_intSum);
|
if (result <= 0) throw new Exception(_strMsg);
|
|
var dto = new ProductionPickDto
|
{
|
daa001 = query.daa001,
|
barcode = query.barcode
|
};
|
|
return dto;
|
}
|
catch (Exception ex)
|
{
|
throw new Exception(ex.Message);
|
}
|
finally
|
{
|
conn.Close();
|
}
|
}
|
}
|
}
|
|
private ProductionPickDto getDaa001(WarehouseQuery query)
|
{
|
if (string.IsNullOrEmpty(query.daa001)) throw new Exception("工单号为空");
|
|
var womdaa = Db.Queryable<Womdaa, MesItems>((a, i) =>
|
new JoinQueryInfos(JoinType.Left,
|
a.Daa002 == i.ItemId.ToString()))
|
.Where((a, i) => a.Daa001 == query.daa001
|
&& a.Fstatus == 1)
|
.Select((a, i) => new
|
{
|
a.Daa001, a.CaaGuid
|
}).First();
|
|
if (womdaa?.Daa001 == null) throw new Exception("工单号不存在");
|
|
//var womdabs = Db.Queryable<Womdaa, Womdab, MesItems, Womcab>(
|
// (a, b, c, d) =>
|
// new JoinQueryInfos(
|
// JoinType.Left,
|
// a.Guid == b.DaaGuid,
|
// JoinType.Inner,
|
// c.Id.ToString() ==
|
// b.Dab003,
|
// JoinType.Inner, b.Erpid == d.Erpid
|
// ))
|
// .Where((a, b, c, d) =>
|
// a.Daa001 == query.daa001 && d.Iss1ueType == "1")
|
// .Select((a, b, c, d) => new ItemDetailModel
|
// {
|
// ItemNo = c.ItemNo,
|
// ItemName = c.ItemName,
|
// ItemModel = c.ItemModel,
|
// FQty = b.Dab006, // 申请数量
|
// SQty = b.Dab007, // 已扫数量
|
// DSQty = b.Dab006 - b.Dab007, // 已扫数量
|
// })
|
// .ToList();
|
|
var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty ,
|
dbo.F_QX_GETRECODEPOTSE(B.dab003) as RecoKw
|
FROM WOMDAB B
|
LEFT JOIN WOMDAA A ON A.guid = B.daaGuid
|
LEFT JOIN MES_ITEMS C ON B.dab003 = C.item_id
|
LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
|
WHERE daa001 = '{0}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001);
|
|
var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql);
|
|
|
var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
|
|
var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
|
|
var mesInvItemOutCDetailsList = Db
|
.Queryable<MesInvItemOutCDetails, MesItems, MesDepots>
|
((a, b, c) =>
|
new JoinQueryInfos(
|
JoinType.Inner, a.ItemId == b.Id,
|
JoinType.Inner, c.DepotId == a.DepotId
|
))
|
.Where((a, b, c) => a.WorkNo == query.daa001)
|
.Select((a, b, c) => new MesInvItemOutCDetails
|
{
|
ItemName = b.ItemName,
|
ItemNo = b.ItemNo,
|
ItemId = a.ItemId,
|
DepotId = a.DepotId,
|
WorkNo = a.WorkNo,
|
DepotName = c.DepotName,
|
Quantity = a.Quantity
|
})
|
.ToList();
|
|
var womcaa = Db.Queryable<Womcaa>().Where(s => s.Guid == womdaa.CaaGuid)
|
.First();
|
|
if (womcaa == null)
|
{
|
throw new Exception("生产任务单不存在");
|
}
|
|
var dto = new ProductionPickDto
|
{
|
daa001 = womdaa.Daa001,
|
PlanNo = womcaa.Caa020,
|
items = DS_list,
|
Ysitems = YS_list
|
// yisao = mesInvItemOutCDetailsList
|
};
|
|
return dto;
|
}
|
|
/// <summary>
|
/// 获取工单条码信息
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
public dynamic getZsBarInfo(dynamic query)
|
{
|
|
var sql = string.Format(@"SELECT TOP 1 A.barCode AS zsBarcode,
|
D.name AS lineName,
|
D.line_no,
|
B.daa001,
|
C.item_no,
|
C.item_name,
|
C.item_model,
|
A.quantity as barQty,
|
B.daa008 as sumQty,
|
isnull((SELECT count(1) FROM WORK_COLLECT WHERE processNo = '{0}' AND ABOUT_GUID = A.ABOUT_GUID),0) AS finQty,
|
isnull((SELECT TOP 1 processNo FROM WORK_COLLECT WHERE WORK_COLLECT.barCode = '{1}' AND checkResult = '√' ORDER BY WORK_COLLECT.createDate DESC ),'') AS lastGx
|
FROM WORK_TRAC_CODE A
|
LEFT JOIN WOMDAA B ON A.ABOUT_GUID = B.guid
|
LEFT JOIN MES_ITEMS C ON B.daa002 = C.item_id
|
LEFT JOIN MES_WORKSHOP_LINE D ON A.lineId = D.id
|
WHERE A.barCode = '{1}'", query.GX, query.Zsbarcode);
|
|
var ZsBarInfo = Db.Ado.SqlQuery<dynamic>(sql);
|
|
if (ZsBarInfo.Count < 1)
|
{
|
throw new Exception($"该追溯码{query.Zsbarcode}不存在不存在");
|
}
|
|
return ZsBarInfo;
|
}
|
|
//获取生产
|
public dynamic getTraceability(dynamic query)
|
{
|
var sql = string.Format(@"SELECT processNo, A.barCode, B.lineId, line_no, name AS lineName, checkResult, C.USER_NAME
|
FROM WORK_COLLECT A
|
LEFT JOIN WORK_TRAC_CODE B ON A.barCode = B.barCode
|
LEFT JOIN SYS_USER C ON C.ACCOUNT = A.createBy
|
LEFT JOIN MES_WORKSHOP_LINE D ON B.lineId = D.id
|
WHERE A.barCode = '{0}'", query.Zsbarcode);
|
|
var Traceability = Db.Ado.SqlQuery<dynamic>(sql);
|
|
return Traceability;
|
}
|
}
|