using ICSSoft.ERPWMS.Entity; 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 GetPurchaseStockInInfo { public static Result Get(GetPurchaseStockInCondition condition) { Result res = new Result(); try { if (condition.PageIndex == null) { throw new Exception("页码未传!"); } if (condition.PageSize == null) { throw new Exception("每页数量未传!"); } if (string.IsNullOrWhiteSpace(condition.WorkPoint)) { res.IsSuccess = false; res.Message = "站点参数为空!"; return res; } string WorkPoint = ICSHelper.GetConnectStringTest(condition.WorkPoint); if (WorkPoint == "NotExit") { throw new Exception("站点编码不存在!"); } string sql = @"Select a.ID,a.LotNo as '条码',b.ASNCode as '送货单号',b.Sequence as '送货单行号',c.DNCode as '到货单号',c.Sequence as '到货单行号', n.POCode as '采购订单',n.Sequence as '采购订单行号',a.InvCode as '物料代码',a.Quantity as '入库数量',a.ToWarehouseCode as '入库仓库', a.ToLocationCode as '入库库位',a.ERPCode as '采购入库单号',a.ERPSequence as '采购入库单行号',a.MUSER as '操作人',a.MUSERName as '操作人名称', a.MTIME as '操作时间',a.WorkPoint as '站点' from ICSWareHouseLotInfoLog a inner join ICSASNDETAIL b on a.LotNo = b.LotNo and a.WorkPoint = b.WorkPoint inner join ICSDeliveryNotice c on b.ASNCode = c.ASNCode and b.WorkPoint = c.WorkPoint INNER JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint INNER JOIN ICSInventoryLotDetail m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint INNER JOIN ICSPurchaseOrder n ON m.TransCode =n.POCode AND m.TransSequence=n.Sequence AND c.PODetailID=n.PODetailID AND m.WorkPoint=n.WorkPoint where a.WorkPoint ='{0}' and a.TransType ='2' and a.BusinessCode ='1'"; string sql2 = @"Select a.ID,a.LotNo as '条码',b.ASNCode as '送货单号',b.Sequence as '送货单行号',c.ODNCode as '到货单号',c.Sequence as '到货单行号', n.OOCode as '采购订单',n.Sequence as '采购订单行号',a.InvCode as '物料代码',a.Quantity as '入库数量',a.ToWarehouseCode as '入库仓库', a.ToLocationCode as '入库库位',a.ERPCode as '采购入库单号',a.ERPSequence as '采购入库单行号',a.MUSER as '操作人',a.MUSERName as '操作人名称', a.MTIME as '操作时间',a.WorkPoint as '站点' from ICSWareHouseLotInfoLog a inner join ICSASNDETAIL b on a.LotNo = b.LotNo and a.WorkPoint = b.WorkPoint inner join ICSODeliveryNotice c on b.ASNCode = c.OASNCode and b.WorkPoint = c.WorkPoint INNER JOIN ICSInventoryLot d ON b.LotNo=d.LotNo AND a.InvCode=d.InvCode AND b.WorkPoint=d.WorkPoint INNER JOIN ICSInventoryLotDetail m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint INNER JOIN ICSOutsourcingOrder n ON m.TransCode =n.OOCode AND m.TransSequence=n.Sequence AND c.OODetailID=n.OODetailID AND m.WorkPoint=n.WorkPoint where a.WorkPoint ='{0}' and a.TransType ='2' and a.BusinessCode ='9'"; sql = string.Format(sql, WorkPoint); sql2 = string.Format(sql2, WorkPoint); if (condition.dModifyDateFrom != null) { sql += " and a.Mtime >= '{0}'"; sql = string.Format(sql, condition.dModifyDateFrom); sql2 += " and a.Mtime >= '{0}'"; sql2 = string.Format(sql2, condition.dModifyDateFrom); } if (condition.dModifyDateTo != null) { sql += " and a.Mtime <= '{0}'"; sql = string.Format(sql, condition.dModifyDateTo); sql2 += " and a.Mtime <= '{0}'"; sql2 = string.Format(sql2, condition.dModifyDateTo); } if (condition.ASNCode != null) { sql += " and b.ASNCode like '%{0}%'"; sql = string.Format(sql, condition.ASNCode); sql2 += " and b.ASNCode like '%{0}%'"; sql2 = string.Format(sql2, condition.ASNCode); } if (condition.PO != null) { sql += " and n.POCode like '%{0}%'"; sql = string.Format(sql, condition.PO); sql2 += " and n.OOCode like '%{0}%'"; sql2 = string.Format(sql2, condition.PO); } sql = sql + " Union All " + sql2; string sqlNew = @" select * from (select aa.*,rn=ROW_NUMBER() over(order by ID) from( "; sqlNew += sql; sqlNew += ") aa)bb where bb.rn between {0} and {1} "; sqlNew = string.Format(sqlNew, (condition.PageIndex - 1) * condition.PageSize + 1, condition.PageIndex * condition.PageSize); DataTable dt = ICSHelper.GetDataTable(sqlNew); List entityList = new List(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { GetPurchaseStockInEntity entity = new GetPurchaseStockInEntity(); entity.ID = dr["ID"].ToString(); entity.LotNo = dr["条码"].ToString(); entity.ASNCode = dr["送货单号"].ToString(); entity.ASNLine = string.IsNullOrWhiteSpace(dr["送货单行号"].ToString()) ? 1 : Convert.ToInt32(dr["送货单行号"].ToString()); entity.DNCode = dr["到货单号"].ToString(); entity.DNLine = string.IsNullOrWhiteSpace(dr["到货单行号"].ToString()) ? 1 : Convert.ToInt32(dr["到货单行号"].ToString()); entity.PO = dr["采购订单"].ToString(); entity.POLine = string.IsNullOrWhiteSpace(dr["采购订单行号"].ToString()) ? 1 : Convert.ToInt32(dr["采购订单行号"].ToString()); entity.InvCode = dr["物料代码"].ToString(); entity.Quantity = string.IsNullOrWhiteSpace(dr["入库数量"].ToString()) ? 0.00m : Convert.ToDecimal(dr["入库数量"].ToString()); entity.ToWarehouseCode = dr["入库仓库"].ToString(); entity.ToLocationCode = dr["入库库位"].ToString(); entity.RcvDoc = dr["采购入库单号"].ToString(); entity.RcvDocLine = string.IsNullOrWhiteSpace(dr["采购入库单行号"].ToString()) ? 1 : Convert.ToInt32(dr["采购入库单行号"].ToString()); entity.TransType = "2"; entity.BusinessCode = "1"; entity.MUSER = dr["操作人"].ToString(); entity.MUSERName = dr["操作人名称"].ToString(); if (string.IsNullOrWhiteSpace(dr["操作时间"].ToString())) { entity.dModifyDate = null; } else { entity.dModifyDate = Convert.ToDateTime(dr["操作时间"].ToString()); } entity.WorkPoint = dr["站点"].ToString(); entityList.Add(entity); } res.IsSuccess = true; res.Message = "执行成功!"; res.data = entityList; return res; } else { res.IsSuccess = true; res.Message = "查询无数据!"; res.data = entityList; return res; } } catch (Exception ex) { res.IsSuccess = false; res.Message = ex.Message; return res; } } } }