|
|
using NFine.Code;using NFine.Data.Extensions;using NFine.Domain._03_Entity.SRM;using NFine.Repository;using System;using System.Collections.Generic;using System.Data;using System.Data.Common;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace NFine.Application.DHAY{ public class FullProcessTraceabilityApp : RepositoryFactory<ICSVendor> { public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam) { DataTable dt = new DataTable(); var queryParam = queryJson.ToJObject(); List<DbParameter> parameter = new List<DbParameter>(); #region [SQL]
string sql = @"select distinct a.MOCode,a.InvCode,inv.InvName,inv.InvStd,b.BatchCode,b.RKMtime,b.RKQTY,c.CKMtime,c.CKQTY from dbo.ICSMO a
left join dbo.ICSInventory inv on a.InvCode=inv.InvCode and a.WorkPoint=inv.WorkPoint
left join (select a.TransCode,c.BatchCode,a.WorkPoint, FORMAT(a.MTIME, 'yyyy-MM-dd') as RKMtime,sum(a.Quantity) as RKQTY from dbo.ICSWareHouseLotInfoLog a left join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPointleft join dbo.ICSExtension c on b.ExtensionID=c.ID and a.WorkPoint=c.WorkPointwhere a.BusinessCode='17' group by a.TransCode,c.BatchCode,a.WorkPoint,format(a.MTIME, 'yyyy-MM-dd') )b on a.MOCode=b.TransCode and a.WorkPoint=b.WorkPoint
left join (select d.TransCode,c.BatchCode,a.WorkPoint, FORMAT(a.MTIME, 'yyyy-MM-dd') as CKMtime,sum(a.Quantity) as CKQTY from dbo.ICSWareHouseLotInfoLog a left join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPointleft join dbo.ICSInventoryLotDetail d on b.LotNo=d.LotNo and a.WorkPoint=d.WorkPointleft join dbo.ICSExtension c on b.ExtensionID=c.ID and a.WorkPoint=c.WorkPointwhere a.BusinessCode='19'group by d.TransCode,c.BatchCode,a.WorkPoint,format(a.MTIME, 'yyyy-MM-dd') )c on a.MOCode=c.TransCode and a.WorkPoint=c.WorkPoint and b.BatchCode=c.BatchCode
where a.MOCode='" + queryParam["Code"].ToString() + "'";
#endregion
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam); }
public DataTable GetGridJso2(string queryJson, ref Pagination jqgridparam) { string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(','); //DataTable dt = new DataTable();
var queryParam = queryJson.ToJObject(); List<DbParameter> parameter = new List<DbParameter>(); #region [旧SQL]
// string sql = @"
//select b.TransCode,a.InvCode,sum(a.Quantity) as RKQTY ,isnull(cc.BatchCode,'') BatchCode,a.lotno
//INTO #TempMoPickFL
//from dbo.ICSInventoryLot a
//left join dbo.ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
//left join dbo.ICSExtension cc on a.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPoint
//group by b.TransCode,a.InvCode,cc.BatchCode,a.lotno
//--查询工单领料的所有条码
//select ROW_NUMBER() OVER (partition by a.ID ORDER BY a.Sequence) AS SortSeq,c.LotNo,isnull(cc.BatchCode,'') BatchCode, b.InvCode, c.LLQTY as LLQTY ,a.MOCode,po.POCode PODocNo,o.InCode
//INTO #TempMoPickInv
//from dbo.ICSMO a
//left join dbo.ICSMOPick b on a.MODetailID= b.MODetailID and a.WorkPoint=b.WorkPoint
//left join (
// select a.TransCode,a.TransSequence,a.LotNo,sum(a.Quantity) as LLQTY from dbo.ICSWareHouseLotInfoLog a
// where a.BusinessCode='13'
// group by a.TransCode,a.TransSequence,a.LotNo) c on a.MOCode=c.TransCode and a.Sequence+'~'+b.Sequence =c.TransSequence
//left join dbo.ICSInventory inv on a.InvCode=inv.InvCode and a.WorkPoint=inv.WorkPoint
//left join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint
//left join dbo.ICSExtension cc on lot.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPoint
//left join dbo.ICSInventoryLotDetail dd on C.LotNo=dd.LotNo
//left join dbo.ICSPurchaseOrder po on dd.TransCode=po.POCode and dd.TransSequence = po.Sequence and a.WorkPoint=po.WorkPoint
// LEFT JOIN ICSOtherIn o ON dd.TransCode = o.InCode AND dd.TransSequence = o.Sequence
// where c.LotNo is not null
//;
//select a.lotno Cominlotno,c.lotno IssueLotNo,C.SortSeq,C.MOCODE,c.InvCode ,c.BatchCode
//into #Temp3333 from #TempMoPickInv c
//inner join #TempMoPickFL a on a.TransCode=c.mocode
//;
//WITH ICSMoALL AS
//(
// select
// 1 AS [Level],
// CAST(ii.SortSeq AS nvarchar(MAX)) AS SortSeq,
// CAST(REPLICATE('0',5-len(ii.SortSeq))+ii.SortSeq AS nvarchar(MAX)) AS Sort,
// ii.mocode tmocode,
// cast( ii.mocode as nvarchar(400)) Pmocode,
// cast( rr.TransCode as nvarchar(400)) mocode,
// ii.invcode tinvcode,
// ii.invcode Pivcode,
// ii.invcode invcode,
// ii.BatchCode tBatchCode,
// ii.BatchCode PBatchCode,
// ii.BatchCode BatchCode,
// ii.lotno Tlotno,
//ii.LOTNO PLOTNO,
// ii.lotno
// FROM #TempMoPickInv ii
//left join #TempMoPickFL rr on ii.lotno=rr.lotno where ii.mOCode='{0}'
//UNION ALL
// select
// b.[Level]+1 AS [Level],
// CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(c.SortSeq AS nvarchar(MAX)) AS SortSeq,
// CAST(b.Sort+'.'+REPLICATE('0',5-len(c.SortSeq))+CAST(c.SortSeq AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort,
// b.tmocode,
// cast(B.MOCODE as nvarchar(400)) PMOCODE,
// cast(C.MOCODE as nvarchar(400)) MOCODE,
// b.tinvcode,
// B.invcode Pinvcode,
// C.invcode,
// b.tBatchCode,
// B.BatchCode PBatchCode,
// C.BatchCode,
//b.tlotno,
//C.Cominlotno PLOTNO,
// C.IssueLotNo lotno
// FROM #Temp3333 c --工单入---工单领加
// INNER JOIN ICSMoALL b ON b.lotno=C.Cominlotno --上层领料=c.入条码
//where b.[Level]<10
//)
//SELECT * into #Temp444
//FROM ICSMoALL a
// select ff.invcode ,ff.lotno,ii.LLQTY , ff.BatchCode,ii.PODocNo,ii.InCode,ii2. mocode,ii3.RKQTY,ff.SortSeq,ff.Sort
// into #Tempgggg
//from #Temp444 ff left join #TempMoPickInv ii on ii.lotno=ff.lotno
//left join #Temp3333 ii2 on ii2.Cominlotno=ff.lotno
//left join #TempMoPickFL ii3 on ii3.lotno=ff.lotno
//select aa.invcode ,aa.BatchCode,aa.sortseq,aa.sort,inv.InvName,inv.InvStd ,bb.llqty,bb2.RKQTY,
//STUFF((select',' + PODocNo from (SELECT DISTINCT PODocNo FROM #Tempgggg gg
//where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode ) DD for xml path('')),1,1,'') PODocNo
//,
//STUFF((select',' + InCode from (SELECT DISTINCT InCode FROM #Tempgggg gg
//where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode ) DD for xml path('')),1,1,'') InCode
//,
//STUFF((select',' + mocode from (SELECT DISTINCT mocode FROM #Tempgggg gg
//where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode ) DD for xml path('')),1,1,'') mocode
//from ( select invcode ,BatchCode, sortseq,Sort from #Temp444 ) aa
//left join ( select invcode ,BatchCode,sortseq,sum(llqty) llqty from (select * from #Tempgggg ) hh group by invcode,BatchCode,sortseq ) bb
//on aa.invcode=bb.invcode and aa.BatchCode=bb.BatchCode and aa.sortseq=bb.sortseq
//left join ( select invcode ,BatchCode,sortseq,sum(RKQTY) RKQTY from (select * from #Tempgggg ) hh group by invcode,BatchCode,sortseq ) bb2
//on aa.invcode=bb2.invcode and aa.BatchCode=bb2.BatchCode and aa.sortseq=bb2.sortseq
//left join dbo.ICSInventory inv on inv.InvCode=aa.invcode
//order by aa.sort
//DROP TABLE #TempMoPickInv
//DROP TABLE #TempMoPickFL
//DROP table #Temp444
//DROP table #Temp3333
//DROP table #Tempgggg
//";
//string sql2 = string.Format(sql, queryParam["Code"].ToString());
#endregion
#region {SQL}
string sql = @"select b.TransCode,a.InvCode,sum(a.Quantity) as RKQTY ,isnull(cc.BatchCode,'') BatchCode,a.lotno
INTO #TempMoPickFLfrom dbo.ICSInventoryLot aleft join dbo.ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPointleft join dbo.ICSExtension cc on a.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPointgroup by b.TransCode,a.InvCode,cc.BatchCode,a.lotno
--查询工单领料的所有条码 select ROW_NUMBER() OVER (partition by a.ID ORDER BY a.Sequence) AS SortSeq,c.LotNo,isnull(cc.BatchCode,'') BatchCode, b.InvCode, c.LLQTY as LLQTY ,a.MOCode,po.POCode PODocNo,o.InCodeINTO #TempMoPickInvfrom dbo.ICSMO aleft join dbo.ICSMOPick b on a.MODetailID= b.MODetailID and a.WorkPoint=b.WorkPointleft join ( select a.TransCode,a.TransSequence,a.LotNo,sum(a.Quantity) as LLQTY from dbo.ICSWareHouseLotInfoLog a where a.BusinessCode='13' group by a.TransCode,a.TransSequence,a.LotNo) c on a.MOCode=c.TransCode and a.Sequence+'~'+b.Sequence =c.TransSequenceleft join dbo.ICSInventory inv on a.InvCode=inv.InvCode and a.WorkPoint=inv.WorkPoint left join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPointleft join dbo.ICSExtension cc on lot.ExtensionID=cc.ID and a.WorkPoint=cc.WorkPointleft join dbo.ICSInventoryLotDetail dd on C.LotNo=dd.LotNo left join dbo.ICSPurchaseOrder po on dd.TransCode=po.POCode and dd.TransSequence = po.Sequence and a.WorkPoint=po.WorkPointLEFT JOIN ICSOtherIn o ON dd.TransCode = o.InCode AND dd.TransSequence = o.Sequence where c.LotNo is not null ;
select a.lotno Cominlotno,c.lotno IssueLotNo,C.SortSeq,C.MOCODE,c.InvCode ,c.BatchCode into #Temp3333 from #TempMoPickInv c inner join #TempMoPickFL a on a.TransCode=c.mocode;
WITH ICSMoALL AS( select 1 AS [Level], CAST(ii.SortSeq AS nvarchar(MAX)) AS SortSeq, -- 初始层级:SortSeq补零到5位(如1→00001,10→00010) CAST(REPLICATE('0', 5 - LEN(CAST(ii.SortSeq AS VARCHAR))) + CAST(ii.SortSeq AS VARCHAR) AS nvarchar(MAX)) AS Sort, ii.mocode tmocode, cast(ii.mocode as nvarchar(400)) Pmocode, cast(rr.TransCode as nvarchar(400)) mocode, ii.invcode tinvcode, ii.invcode Pivcode, ii.invcode invcode, ii.BatchCode tBatchCode, ii.BatchCode PBatchCode, ii.BatchCode BatchCode, ii.lotno Tlotno, ii.LOTNO PLOTNO, ii.lotno FROM #TempMoPickInv ii left join #TempMoPickFL rr on ii.lotno=rr.lotno where ii.mOCode='{0}'
UNION ALL
select b.[Level]+1 AS [Level], -- 拼接层级序号(如1.1,10.2) CAST(b.SortSeq AS nvarchar(MAX)) + '.' + CAST(c.SortSeq AS nvarchar(MAX)) AS SortSeq, -- 核心修改:每一级都补零后拼接(如00001.00001,00010.00002) CAST(b.Sort + '.' + REPLICATE('0', 5 - LEN(CAST(c.SortSeq AS VARCHAR))) + CAST(c.SortSeq AS VARCHAR) AS nvarchar(MAX)) AS Sort, b.tmocode, cast(B.MOCODE as nvarchar(400)) PMOCODE, cast(C.MOCODE as nvarchar(400)) MOCODE, b.tinvcode, B.invcode Pinvcode, C.invcode, b.tBatchCode, B.BatchCode PBatchCode, C.BatchCode, b.tlotno, C.Cominlotno PLOTNO, C.IssueLotNo lotno FROM #Temp3333 c --工单入---工单领加 INNER JOIN ICSMoALL b ON b.lotno=C.Cominlotno --上层领料=c.入条码 where b.[Level]<10)
SELECT * into #Temp444FROM ICSMoALL a
select ff.invcode ,ff.lotno,ii.LLQTY , ff.BatchCode,ii.PODocNo,ii.InCode,ii2.mocode,ii3.RKQTY,ff.SortSeq,ff.Sortinto #Tempggggfrom #Temp444 ff left join #TempMoPickInv ii on ii.lotno=ff.lotno left join #Temp3333 ii2 on ii2.Cominlotno=ff.lotno left join #TempMoPickFL ii3 on ii3.lotno=ff.lotno
-- 最终查询:直接按修正后的Sort字段排序(字符串排序即对应数值层级)select aa.invcode, aa.BatchCode, aa.sortseq, aa.sort, inv.InvName, inv.InvStd, bb.llqty, bb2.RKQTY, -- 合并PO单号(去重) STUFF((select',' + PODocNo from (SELECT DISTINCT PODocNo FROM #Tempgggg gg where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode) DD for xml path('')),1,1,'') PODocNo, -- 合并入库单号(去重) STUFF((select',' + InCode from (SELECT DISTINCT InCode FROM #Tempgggg gg where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode) DD for xml path('')),1,1,'') InCode, -- 合并工单号(去重) STUFF((select',' + mocode from (SELECT DISTINCT mocode FROM #Tempgggg gg where aa.invcode=gg.invcode and aa.BatchCode=gg.BatchCode) DD for xml path('')),1,1,'') mocodefrom (select invcode, BatchCode, sortseq, Sort from #Temp444) aaleft join (select invcode, BatchCode, sortseq, sum(llqty) llqty from (select * from #Tempgggg) hh group by invcode, BatchCode, sortseq) bb on aa.invcode=bb.invcode and aa.BatchCode=bb.BatchCode and aa.sortseq=bb.sortseqleft join (select invcode, BatchCode, sortseq, sum(RKQTY) RKQTY from (select * from #Tempgggg) hh group by invcode, BatchCode, sortseq) bb2 on aa.invcode=bb2.invcode and aa.BatchCode=bb2.BatchCode and aa.sortseq=bb2.sortseqleft join dbo.ICSInventory inv on inv.InvCode=aa.invcode -- 直接按修正后的Sort字段排序(无需再处理层级,字符串排序即正确)order by aa.sort
-- 清理临时表DROP TABLE #TempMoPickInvDROP TABLE #TempMoPickFLDROP table #Temp444DROP table #Temp3333DROP table #Tempgggg";
#endregion
sql = string.Format(sql, queryParam["Code"].ToString()); //return Repository().FindTableBySql(sql2.ToString());
DataTable dt = SqlHelper.GetDataTableBySqlDH(sql); return dt; }
}}
|