| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using Model.ModelVm.BllAsnVm; |
| | | using Newtonsoft.Json; |
| | | using Utility.Tools; |
| | | using System.Threading.Tasks; |
| | | using WMS.BLL.LogServer; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllAsnEntity; |
| | | using WMS.Entity.BllSoEntity; |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllAsnServer; |
| | | using WMS.Entity.BllSoEntity; |
| | | using WMS.Entity.DataEntity; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | #endregion |
| | | |
| | | #region 事件方法 |
| | | public List<ArrivalNoticeDto> GetArrivalNoticeList(ArrivalNoticeVm model, out int count) |
| | | public async Task<List<ArrivalNoticeDto>> GetArrivalNoticeList(ArrivalNoticeVm model, RefAsync<int> count) |
| | | { |
| | | string sqlString = string.Empty; |
| | | string sqlCount = string.Empty; |
| | | string sqlPub = string.Empty; |
| | | try |
| | | { |
| | | sqlCount += "SELECT DISTINCT COUNT(tb1.ID) FROM BllArrivalNotice AS tb1 "; |
| | | sqlString += "SELECT DISTINCT tb1.*,tb3.RealName as CreateUserName,tb4.RealName as UpdateUserName,tb5.RealName as CheckUserName FROM BllArrivalNotice AS tb1 "; |
| | | sqlPub += "LEFT JOIN BllArrivalNoticeDetail AS tb2 ON tb1.ASNNo = tb2.ASNNo "; |
| | | sqlPub += "LEFT JOIN SysUserInfor AS tb3 ON tb1.CreateUser = tb3.Id "; |
| | | sqlPub += "LEFT JOIN SysUserInfor AS tb4 ON tb1.UpdateUser = tb4.Id "; |
| | | sqlPub += "LEFT JOIN SysUserInfor AS tb5 ON tb1.CheckUser = tb5.Id "; |
| | | sqlPub += $"WHERE tb1.ASNNo LIKE '%{model.ASNNo}%' AND tb2.LotNo LIKE '%{model.LotNo}%' "; |
| | | sqlPub += $"AND tb2.SkuNo LIKE '%{model.SkuNo}%' AND tb2.SkuName LIKE '%{model.SkuName}%' "; |
| | | sqlPub += $"AND tb1.CustomerName LIKE '%{model.CustomerName}%' "; |
| | | if (!string.IsNullOrEmpty(model.OrderCode)) |
| | | var modelList = await Db.Queryable<BllArrivalNotice,BllArrivalNoticeDetail, SysUserInfor, SysUserInfor, |
| | | SysUserInfor>((tb1, tb2, tb3, tb4,tb5) => new JoinQueryInfos( |
| | | JoinType.Left, tb1.ASNNo == tb2.ASNNo, |
| | | JoinType.Left, tb1.CreateUser == tb3.Id, |
| | | JoinType.Left, tb1.UpdateUser == tb4.Id, |
| | | JoinType.Left, tb1.CheckUser == tb5.Id)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.ASNNo), tb1 => tb1.ASNNo.Contains(model.ASNNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.LotNo), (tb1,tb2) => tb2.LotNo.Contains(model.LotNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.SkuNo), (tb1,tb2) => tb2.SkuNo.Contains(model.SkuNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.SkuName), (tb1,tb2) => tb2.SkuName.Contains(model.SkuName)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.CustomerName), tb1 => tb1.CustomerName.Contains(model.CustomerName)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.OrderCode), tb1 => tb1.OrderCode.Contains(model.OrderCode)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.Status), tb1 => tb1.Status == model.Status) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.Type), tb1 => tb1.Type == model.Type) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.StartTime), tb1 => tb1.CreateTime >= Convert.ToDateTime(model.StartTime)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.EndTime), tb1 => tb1.CreateTime <= Convert.ToDateTime(model.EndTime).AddDays(1)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(model.CustomerName), tb1 => tb1.CustomerName.Contains(model.CustomerName)) |
| | | .Where(tb1 => tb1.IsDel == "0") |
| | | .OrderByDescending(tb1 => tb1.ASNNo) |
| | | .Distinct() |
| | | .Select((tb1, tb2, tb3, tb4, tb5) => new ArrivalNoticeDto() |
| | | { |
| | | sqlPub += $"AND tb1.OrderCode LIKE '%{model.OrderCode}%' "; |
| | | } |
| | | if (!string.IsNullOrEmpty(model.Status)) |
| | | { |
| | | sqlPub += $"AND tb1.Status = '{model.Status}' "; |
| | | } |
| | | if (!string.IsNullOrEmpty(model.Type)) |
| | | { |
| | | if (model.Type == "3") |
| | | { |
| | | sqlPub += $"AND tb1.Type = '{model.Type}' "; |
| | | } |
| | | else |
| | | { |
| | | sqlPub += $"AND tb1.Type = '{model.Type}' AND tb1.Type != '3' "; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | sqlPub += " AND tb1.Type != '3'"; |
| | | Id = tb1.Id, |
| | | ASNNo = tb1.ASNNo, |
| | | Type = tb1.Type, |
| | | Status = tb1.Status, |
| | | Origin = tb1.Origin, |
| | | CustomerNo = tb1.CustomerNo, |
| | | CustomerName = tb1.CustomerName, |
| | | LotNo = tb1.LotNo, |
| | | LotText = tb1.LotText, |
| | | CheckTime = ((DateTime)tb1.CheckTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CheckUserName = tb5.RealName, |
| | | SupplierLot = tb1.SupplierLot, |
| | | Demo = tb1.Demo, |
| | | OrderCode = tb1.OrderCode, |
| | | CompleteTime = tb1.CompleteTime, |
| | | CreateTime = tb1.CreateTime, |
| | | CreateUserName = tb3.RealName, |
| | | UpdateTime = ((DateTime)tb1.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | UpdateUserName = tb4.RealName |
| | | |
| | | } |
| | | if (!string.IsNullOrEmpty(model.StartTime)) |
| | | { |
| | | sqlPub += $"AND tb1.CreateTime >= '{model.StartTime}' "; |
| | | } |
| | | if (!string.IsNullOrEmpty(model.EndTime)) |
| | | { |
| | | sqlPub += $"AND tb1.CreateTime <= '{model.EndTime}' "; |
| | | } |
| | | sqlCount += sqlPub + "AND tb1.IsDel = '0' "; |
| | | sqlPub += "AND tb1.IsDel = '0' order by tb1.ASNNo desc "; |
| | | if (model.Page == 0) |
| | | { |
| | | model.Page = 1; |
| | | } |
| | | sqlString += sqlPub + $" offset {((model.Page - 1) * model.Limit)} rows fetch next {model.Limit} rows only;"; |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | var com = new Common(); |
| | | count = com.GetRowCount(sqlCount); |
| | | |
| | | var modelList = Db.Ado.SqlQuery<ArrivalNoticeDto>(sqlString); |
| | | |
| | | return modelList; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | return modelList; |
| | | } |
| | | |
| | | public List<ArrivalNoticeDetailDto> GetArrivalNoticeDetailList(ArrivalNoticeDetailVm model, out int count) |
| | | public async Task<List<ArrivalNoticeDetailDto>> GetArrivalNoticeDetailList(ArrivalNoticeDetailVm model, RefAsync<int> count) |
| | | { |
| | | string sqlString = string.Empty; |
| | | string sqlCount = string.Empty; |
| | | int rowCount = 1; |
| | | try |
| | | { |
| | | if (model.Page == 0) |
| | | { |
| | | model.Page = 1; |
| | | } |
| | | sqlCount += $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' and isdel = '0';"; |
| | | var com = new Common(); |
| | | count = com.GetRowCount(sqlCount); |
| | | if (count != 0) |
| | | { |
| | | rowCount = count; |
| | | } |
| | | var item = Expressionable.Create<BllArrivalNoticeDetail>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.ASNNo), it => it.ASNNo == model.ASNNo) |
| | | .AndIF(true, it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | sqlString += "SELECT DISTINCT tb1.*,tb2.Type as AsnType,tb2.Status as AsnStatus,tb3.RealName as CreateUserName, "; |
| | | sqlString += "tb4.RealName as UpdateUserName,isnull(tb6.UnitName,tb5.UnitNo) as UnitName,tb7.PackagName,tb5.IsPasteCode "; |
| | | sqlString += "FROM BllArrivalNoticeDetail AS tb1 "; |
| | | sqlString += "LEFT JOIN BllArrivalNotice AS tb2 ON tb1.ASNNo = tb2.ASNNo "; |
| | | sqlString += "LEFT JOIN SysUserInfor AS tb3 ON tb1.CreateUser = tb3.Id "; |
| | | sqlString += "LEFT JOIN SysUserInfor AS tb4 ON tb1.UpdateUser = tb4.Id "; |
| | | sqlString += "LEFT JOIN SysMaterials AS tb5 on tb1.SkuNo = tb5.SkuNo "; |
| | | sqlString += "LEFT JOIN SysUnit AS tb6 on tb5.UnitNo = tb6.UnitNo "; |
| | | sqlString += "LEFT JOIN SysPackag AS tb7 on tb1.PackagNo = tb7.PackagNo "; |
| | | sqlString += $"WHERE tb1.ASNNo = '{model.ASNNo}' AND tb1.IsDel = '0' order by tb1.SkuNo desc "; |
| | | sqlString += $"offset {((model.Page - 1) * model.Limit)} rows fetch next {rowCount} rows only;"; |
| | | var modelList = await Db.Queryable<BllArrivalNoticeDetail>().Where(item) |
| | | .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo) |
| | | .LeftJoin<SysUserInfor>((tb1, tb2,tb3) => tb1.CreateUser == tb3.Id) |
| | | .LeftJoin<SysUserInfor>((tb1,tb2,tb3,tb4) => tb1.UpdateUser == tb4.Id) |
| | | .LeftJoin<SysMaterials>((tb1, tb2, tb3, tb4,tb5) => tb1.SkuNo == tb5.SkuNo) |
| | | .LeftJoin<SysUnit>((tb1, tb2, tb3, tb4, tb5,tb6) => tb5.UnitNo == tb6.UnitNo) |
| | | .LeftJoin<SysPackag>((tb1, tb2, tb3, tb4, tb5, tb6,tb7) => tb1.PackagNo == tb7.PackagNo) |
| | | .Select((tb1, tb2, tb3, tb4, tb5,tb6, tb7) => new ArrivalNoticeDetailDto() |
| | | { |
| | | Id = tb1.Id, |
| | | ASNNo = tb1.ASNNo, |
| | | SkuNo = tb1.SkuNo, |
| | | SkuName = tb1.SkuName, |
| | | Standard = tb1.Standard, |
| | | LotNo = tb1.LotNo, |
| | | LotText = tb1.LotText, |
| | | Qty = tb1.Qty, |
| | | FactQty = tb1.FactQty, |
| | | CompleteQty = tb1.CompleteQty, |
| | | IsSampling = tb1.IsSampling, |
| | | InspectStatus = tb1.InspectStatus, |
| | | PackagNo = tb1.PackagNo, |
| | | PackagName = tb7.PackagName, |
| | | UnitName = tb6.UnitName, |
| | | IsBale = tb1.IsBale, |
| | | IsBelt = tb1.IsBelt, |
| | | SupplierLot = tb1.SupplierLot, |
| | | Status = tb1.Status, |
| | | AsnType = tb2.Type, |
| | | AsnStatus = tb2.Status, |
| | | UDF1 = tb1.UDF1, |
| | | UDF2 = tb1.UDF2, |
| | | UDF3 = tb1.UDF3, |
| | | UDF4 = tb1.UDF4, |
| | | UDF5 = tb1.UDF5, |
| | | CompleteTime = tb1.CompleteTime, |
| | | CreateTime = tb1.CreateTime, |
| | | CreateUserName = tb3.RealName, |
| | | UpdateTime = ((DateTime)tb1.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | UpdateUserName = tb4.RealName |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString); |
| | | |
| | | return modelList; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | return modelList; |
| | | } |
| | | |
| | | //获取入库单明细剩余打印数量 |
| | |
| | | { |
| | | string skuType = string.Empty; |
| | | int IsPack = 2; // 0:不贴 1:贴 2:不管 |
| | | /** |
| | | * 成品贴 0 |
| | | * 采购可贴可不贴 1 |
| | | /** model.type (单据类型) |
| | | * 成品入库 0 |
| | | * 采购入库 1 |
| | | * 中间品不贴 2 |
| | | * 退货贴 3 |
| | | * 余料退回可贴可不贴 4 |
| | | * 其它可贴可不贴 5 |
| | | * 代储不贴 6 |
| | | * 寄存不贴 7 |
| | | * 退货入库 3 |
| | | * 余料退回入库 4 |
| | | */ |
| | | switch (model.Type)//0:原料 1:包材 2:成品 3:耗材 4:半成品 |
| | | { |
| | | case "0"://成品入库 |
| | | skuType = "(2)"; |
| | | IsPack = 1; //贴 |
| | | break; |
| | | case "1"://采购入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "2"://中间品入库 |
| | | skuType = "(4)"; |
| | | IsPack = 0; //不贴 |
| | | break; |
| | | case "3"://退货入库 |
| | | skuType = "(0,2)"; |
| | | IsPack = 1; //贴 |
| | | skuType = "(2)"; |
| | | break; |
| | | case "4"://车间余料退回入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "5"://其它入库 |
| | | skuType = "(0,1,2,3,4)"; |
| | | break; |
| | | case "6"://代储入库 |
| | | skuType = "(2)"; |
| | | IsPack = 0; //不贴 |
| | | break; |
| | | case "7"://寄存入库 |
| | | //skuType = "(3)"; |
| | | IsPack = 0; //不贴 |
| | | skuType = "(0,1,2,3)"; |
| | | break; |
| | | default: //其它 |
| | | //skuType = "(0,1,2,3,4)"; |
| | | skuType = "(0,1,2,3,4)"; |
| | | break; |
| | | } |
| | | |
| | |
| | | .Includes(x => x.UnitInfo) |
| | | .Includes(x => x.PackagInfo) |
| | | .ToList(); |
| | | |
| | | |
| | | |
| | | return data.Select(m => new MaterialsDto() |
| | | { |
| | |
| | | public string AddArrivalNotice(ArrivalNoticeVm model) |
| | | { |
| | | string strMessage = ""; |
| | | string sqlString = string.Empty; |
| | | string sqlDetailStr = string.Empty; |
| | | //0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | var TypeLot = "1, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | /** model.type (单据类型) |
| | | * 成品入库 0 |
| | | * 采购入库 1 |
| | | * 中间品不贴 2 |
| | | * 退货入库 3 |
| | | * 余料退回入库 4 |
| | | */ |
| | | var TypeLot = "1, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | try |
| | | { |
| | |
| | | |
| | | lock (AsnLock) |
| | | { |
| | | sqlString += "Insert into BllArrivalNotice (ASNNo,Type,Origin,CustomerNo,"; |
| | | sqlString += "CustomerName,LotNo,LotText,SupplierLot,CreateUser) values ( "; |
| | | sqlString += $"'{model.ASNNo}','{model.Type}','{model.Origin}','{model.CustomerNo}', "; |
| | | sqlString += $"'{model.CustomerName}','{model.LotNo}','{model.LotText}','{model.SupplierLot}','{model.CreateUser}');"; |
| | | // 总表实体赋值 |
| | | BllArrivalNotice ASNModel = new BllArrivalNotice() |
| | | { |
| | | ASNNo = model.ASNNo, |
| | | Type = model.Type, |
| | | Origin = model.Origin, |
| | | CustomerNo = model.CustomerNo, |
| | | CustomerName = model.CustomerName, |
| | | Status = "0", |
| | | LotNo = model.LotNo, |
| | | LotText = model.LotText, |
| | | SupplierLot = model.SupplierLot, |
| | | CreateUser = (int)model.CreateUser |
| | | }; |
| | | |
| | | var detailModels = model.AsnDetail; |
| | | |
| | | foreach (ArrivalNoticeDetailVm detailModel in detailModels) |
| | | List<BllArrivalNoticeDetail> details = new List<BllArrivalNoticeDetail>(); |
| | | foreach (ArrivalNoticeDetailVm detailModel in model.AsnDetail) |
| | | { |
| | | if (string.IsNullOrEmpty(detailModel.SkuNo)) |
| | | { |
| | |
| | | strMessage = "-1:数量必须大于0;"; |
| | | continue; |
| | | } |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | |
| | | if (model.Type == "1" || model.Type == "5" || model.Type == "6" || model.Type == "7") |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(detailModel.LotNo)) |
| | |
| | | throw new Exception("当前单据类型批次不可为空!"); |
| | | } |
| | | } |
| | | |
| | | // 判断是否已存在当前明细 |
| | | string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' "; |
| | | sqlCount += $"and SkuNo ='{detailModel.SkuNo}' and LotNo = '{detailModel.LotNo}' and id != '{detailModel.Id}' and isdel = '0';"; |
| | | var com = new Common().GetRowCount(sqlCount); |
| | | int com = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.ASNNo == model.ASNNo |
| | | && m.SkuNo == detailModel.SkuNo |
| | | && m.LotNo == detailModel.LotNo |
| | | && m.Id != (int)detailModel.Id |
| | | && m.IsDel == "0").ToList().Count(); |
| | | if (com > 0) |
| | | { |
| | | strMessage = "-1:物料和批次号重复;"; |
| | |
| | | } |
| | | // 计算出总金额 |
| | | detailModel.Money = detailModel.Price * detailModel.Qty; |
| | | sqlDetailStr += "Insert into BllArrivalNoticeDetail (ASNNo,SkuNo,SkuName,Standard,"; |
| | | sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,IsSampling,InspectStatus,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( "; |
| | | sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', "; |
| | | sqlDetailStr += $"'{detailModel.LotNo.Trim()}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', "; |
| | | sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','0','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');"; |
| | | } |
| | | BllArrivalNoticeDetail detail = new BllArrivalNoticeDetail() |
| | | { |
| | | ASNNo = model.ASNNo, |
| | | SkuNo = detailModel.SkuNo, |
| | | SkuName = detailModel.SkuName, |
| | | Standard = detailModel.Standard, |
| | | LotNo = detailModel.LotNo.Trim(), |
| | | LotText = detailModel.LotText, |
| | | Qty = (decimal)detailModel.Qty, |
| | | PackagNo = detailModel.PackagNo, |
| | | FactQty = 0, // 已组数量 |
| | | CompleteQty = 0, // 完成数量 |
| | | Price = detailModel.Price, |
| | | Money = detailModel.Money, |
| | | IsBale = detailModel.IsBale, |
| | | IsBelt = detailModel.IsBelt, |
| | | SupplierLot = detailModel.SupplierLot, |
| | | Status = "0", |
| | | IsSampling = "0", |
| | | InspectStatus = "0", |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | | UDF4 = detailModel.UDF4, |
| | | UDF5 = detailModel.UDF5, |
| | | CreateUser = (int)model.CreateUser, |
| | | }; |
| | | |
| | | if (sqlDetailStr == string.Empty) |
| | | details.Add(detail); |
| | | } |
| | | |
| | | // 判断是否存在被过滤掉的明细 |
| | | if (details.Count <= 0) |
| | | { |
| | | return strMessage; |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | var rowDetailCount = 1; |
| | | if (sqlDetailStr.Length > 0) |
| | | var rowCount = Db.Insertable(ASNModel).ExecuteCommand(); |
| | | |
| | | var rowDetailCount = 0; |
| | | if (details.Count > 0) |
| | | { |
| | | rowDetailCount = Db.Ado.ExecuteCommand(sqlDetailStr); |
| | | rowDetailCount = Db.Insertable(details).ExecuteCommand(); |
| | | } |
| | | Db.Ado.CommitTran(); |
| | | |
| | | if (rowCount > 0 && rowDetailCount > 0) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "添加", $"添加了单据号为{model.ASNNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | |
| | | //7 必须为空 |
| | | var TypeLot = "1, 5, 6, 7"; //批次为生成批次单据类型 |
| | | |
| | | //if (model.Origin != "录入") |
| | | //{ |
| | | // strMessage = "-1:上游系统下发的单据,不可编辑;"; |
| | | // return strMessage; |
| | | //} |
| | | |
| | | sqlString += $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isDel = '0';"; |
| | | var asnInfo = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | var asnInfo = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0"); |
| | | if (asnInfo == null) |
| | | { |
| | | strMessage = "-1:单号不存在,或已删除!;"; |
| | | return strMessage; |
| | | } |
| | | if (asnInfo.Status != "0") |
| | | { |
| | | strMessage = "-1:单据状态变更,不可编辑;"; |
| | | return strMessage; |
| | | } |
| | | |
| | | sqlString = "UPDATE BllArrivalNotice SET "; |
| | | sqlString += $"CustomerNo = '{model.CustomerNo}',CustomerName = '{model.CustomerName}',"; |
| | | sqlString += $"LotNo = '{model.LotNo}',LotText = '{model.LotText}',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}'"; |
| | | var dateTime = DateTime.Now; |
| | | // 编辑总单 |
| | | asnInfo.CustomerNo = model.CustomerNo; |
| | | asnInfo.CustomerName = model.CustomerName; |
| | | asnInfo.LotNo = model.LotNo; |
| | | asnInfo.LotText = model.LotText; |
| | | asnInfo.UpdateTime = dateTime; |
| | | asnInfo.UpdateUser = model.CreateUser; |
| | | |
| | | var detailModels = model.AsnDetail; |
| | | sqlDetailStr += $"SELECT * FROM BllArrivalNoticeDetail WHERE ASNNo = '{model.ASNNo}' and isDel = '0';"; |
| | | var dbDetailModels = DataContext.Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sqlDetailStr); |
| | | //var dbDetailModels = DataContext.Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sqlDetailStr); |
| | | var dbDetailModels = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0").ToList(); |
| | | |
| | | sqlDetailStr = string.Empty; |
| | | // 处理已删除的明细 |
| | |
| | | { |
| | | if (detailModels.Count(it => it.Id == dbDetailModel.Id) == 0) |
| | | { |
| | | sqlDetailStr += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlDetailStr += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlDetailStr += $"WHERE Id = {dbDetailModel.Id};"; |
| | | dbDetailModel.IsDel = "1"; |
| | | dbDetailModel.UpdateTime = dateTime; |
| | | dbDetailModel.UpdateUser = model.CreateUser; |
| | | } |
| | | } |
| | | string toDayTime = DateTime.Now.ToString("yyyyMMdd"); |
| | | |
| | | // 处理修改和添加的明细 |
| | | string toDayTime = dateTime.ToString("yyyymmdd"); |
| | | List<BllArrivalNoticeDetail> addDetails = new List<BllArrivalNoticeDetail>(); |
| | | List<BllArrivalNoticeDetail> editDetails = new List<BllArrivalNoticeDetail>(); |
| | | foreach (ArrivalNoticeDetailVm detailModel in detailModels) |
| | | { |
| | | if (string.IsNullOrEmpty(detailModel.SkuNo)) |
| | |
| | | } |
| | | |
| | | // 判断是否已存在当前明细 |
| | | string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' "; |
| | | sqlCount += $"and SkuNo ='{detailModel.SkuNo}' and LotNo = '{detailModel.LotNo}' and id != '{detailModel.Id}' and isdel = '0';"; |
| | | var com = new Common().GetRowCount(sqlCount); |
| | | var com = dbDetailModels.Where(m => m.SkuNo == detailModel.SkuNo && m.LotNo == detailModel.LotNo && m.Id != detailModel.Id && m.IsDel == "0").Count(); |
| | | if (com > 0) |
| | | { |
| | | strMessage = "-1:物料和批次号重复;"; |
| | |
| | | } |
| | | // 计算出总金额 |
| | | detailModel.Money = detailModel.Price * detailModel.Qty; |
| | | sqlDetailStr += "Insert into BllArrivalNoticeDetail (ASNNo,SkuNo,SkuName,Standard,"; |
| | | sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( "; |
| | | sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', "; |
| | | sqlDetailStr += $"'{detailModel.LotNo.Trim()}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', "; |
| | | sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');"; |
| | | |
| | | |
| | | |
| | | BllArrivalNoticeDetail addModel = new BllArrivalNoticeDetail() |
| | | { |
| | | ASNNo = model.ASNNo, |
| | | SkuNo = detailModel.SkuNo, |
| | | SkuName = detailModel.SkuName, |
| | | Standard = detailModel.Standard, |
| | | LotNo = detailModel.LotNo.Trim(), |
| | | LotText = detailModel.LotText, |
| | | Qty = (decimal)detailModel.Qty, |
| | | PackagNo = detailModel.PackagNo, |
| | | Price = detailModel.Price, |
| | | Money = detailModel.Money, |
| | | FactQty = 0, // 已组数量 |
| | | CompleteQty = 0, // 完成数量 |
| | | IsBale = detailModel.IsBale, |
| | | IsBelt = detailModel.IsBelt, |
| | | SupplierLot = detailModel.SupplierLot, |
| | | Status = "0", |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | | UDF4 = detailModel.UDF4, |
| | | UDF5 = detailModel.UDF5, |
| | | CreateUser=(int)model.CreateUser |
| | | }; |
| | | addDetails.Add(addModel); |
| | | } |
| | | else |
| | | { |
| | |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | var dbDetail = dbDetailModels.First(m => m.Id == detailModel.Id); |
| | | if (TypeLot.Contains(model.Type)) |
| | | { |
| | | var dbDetail = dbDetailModels.First(m=>m.Id == detailModel.Id); |
| | | if (!string.IsNullOrWhiteSpace(dbDetail.LotNo)) |
| | | { |
| | | if (dbDetail.LotNo != detailModel.LotNo) |
| | |
| | | } |
| | | // 计算出总金额 |
| | | detailModel.Money = detailModel.Price * detailModel.Qty; |
| | | sqlDetailStr += $"UPDATE BllArrivalNoticeDetail SET "; |
| | | sqlDetailStr += $"Qty = '{detailModel.Qty}',LotNo = '{detailModel.LotNo.Trim()}',Money='{detailModel.Money}', "; |
| | | sqlDetailStr += $"LotText = '{detailModel.LotText}',SupplierLot = '{detailModel.SupplierLot}', "; |
| | | sqlDetailStr += $"IsBale = '{detailModel.IsBale}',IsBelt = '{detailModel.IsBelt}', "; |
| | | sqlDetailStr += $"UDF1 = '{detailModel.UDF1}',UDF2 = '{detailModel.UDF2}',UDF3 = '{detailModel.UDF3}',UDF4 = '{detailModel.UDF4}',UDF5 = '{detailModel.UDF5}',"; |
| | | sqlDetailStr += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlDetailStr += $"WHERE Id = {detailModel.Id};"; |
| | | |
| | | dbDetail.Qty = (decimal)detailModel.Qty; |
| | | dbDetail.LotNo = detailModel.LotNo; |
| | | dbDetail.Money = detailModel.Money; |
| | | dbDetail.LotText = detailModel.LotText; |
| | | dbDetail.SupplierLot = detailModel.SupplierLot; |
| | | dbDetail.IsBale = detailModel.IsBale; |
| | | dbDetail.UDF1 = detailModel.UDF1; |
| | | dbDetail.UDF2 = detailModel.UDF2; |
| | | dbDetail.UDF3 = detailModel.UDF3; |
| | | dbDetail.UDF4 = detailModel.UDF4; |
| | | dbDetail.UDF5 = detailModel.UDF5; |
| | | dbDetail.UpdateTime = dateTime; |
| | | dbDetail.UpdateUser = model.CreateUser; |
| | | |
| | | editDetails.Add(dbDetail); |
| | | } |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | Db.Updateable(dbDetailModels).ExecuteCommand(); |
| | | int rowCount = Db.Updateable(asnInfo).ExecuteCommand(); |
| | | var rowDetailCount = 1; |
| | | if (sqlDetailStr.Length > 0) |
| | | if (addDetails.Count > 0) |
| | | { |
| | | rowDetailCount = Db.Ado.ExecuteCommand(sqlDetailStr); |
| | | rowDetailCount = Db.Insertable(addDetails).ExecuteCommand(); |
| | | } |
| | | if (editDetails.Count > 0) |
| | | { |
| | | rowDetailCount += Db.Updateable(editDetails).ExecuteCommand(); |
| | | } |
| | | |
| | | Db.Ado.CommitTran(); |
| | | if (rowCount > 0 && rowDetailCount > 0) |
| | | { |
| | |
| | | { |
| | | try |
| | | { |
| | | var sqlString = $"SELECT * FROM BllArrivalNotice WHERE ASNNo = '{model.ASNNo}' AND IsDel = 0 AND Status = '0';"; |
| | | var asnModel = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | |
| | | var asnModel = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Status == "0"); |
| | | if (asnModel == null) |
| | | { |
| | | return "-1:入库单状态已变更,不可删除!"; |
| | |
| | | } |
| | | |
| | | // 删除总单 |
| | | sqlString = $"UPDATE BllArrivalNotice SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | var editDateTime = DateTime.Now; |
| | | asnModel.IsDel = "1"; |
| | | asnModel.UpdateTime = editDateTime; |
| | | asnModel.UpdateUser = model.CreateUser; |
| | | |
| | | // 删除明细单 |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | var asnDetails = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == model.ASNNo && m.IsDel =="0").ToList(); |
| | | foreach (BllArrivalNoticeDetail asnDetail in asnDetails) |
| | | { |
| | | asnDetail.IsDel = "1"; |
| | | asnDetail.UpdateTime = editDateTime; |
| | | asnDetail.UpdateUser = model.CreateUser; |
| | | } |
| | | |
| | | #region liudl Edit JC26物料不贴吗无需删除 |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | int notdel = 0; |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | //获取单据生成对应标签 |
| | | var list = Db.Queryable<BllBoxInfo>().Where(a => a.IsDel == "0" && a.Status == "0" && a.BindNo == null); |
| | | //int notdel = 0; |
| | | //if (model.Type == "1" || model.Type == "4") |
| | | //{ |
| | | // //获取单据生成对应标签 |
| | | // var list = Db.Queryable<BllBoxInfo>().Where(a => a.IsDel == "0" && a.Status == "0" && a.BindNo == null); |
| | | |
| | | //验证对应箱支信息是否存在 |
| | | if (list == null) |
| | | { |
| | | return "-1:已有箱码已绑定托盘或已入库,不可删除!"; |
| | | } |
| | | // //验证对应箱支信息是否存在 |
| | | // if (list == null) |
| | | // { |
| | | // return "-1:已有箱码已绑定托盘或已入库,不可删除!"; |
| | | // } |
| | | |
| | | // 删除对应箱支信息 |
| | | sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | notdel = 1; |
| | | } |
| | | // // 删除对应箱支信息 |
| | | // sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | // sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | // sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | // notdel = 1; |
| | | //} |
| | | #endregion |
| | | |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | if (rowCount < 2 + notdel) |
| | | { |
| | | Db.RollbackTran(); |
| | | return "-1:删除失败!"; |
| | | } |
| | | //int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | int rowCount = Db.Updateable(asnModel).ExecuteCommand(); |
| | | rowCount += Db.Updateable(asnDetails).ExecuteCommand(); |
| | | |
| | | Db.Ado.CommitTran(); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "删除", $"删除了单据号为{model.ASNNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | | return ""; |
| | |
| | | string sqlString = string.Empty; |
| | | try |
| | | { |
| | | sqlString = $"SELECT * FROM BllArrivalNotice WHERE ASNNo = '{model.ASNNo}' AND IsDel = 0 AND Status = '0';"; |
| | | var asnModel = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | var asnModel = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Status == "0"); |
| | | |
| | | if (asnModel == null) |
| | | { |
| | |
| | | |
| | | } |
| | | |
| | | sqlString = $"SELECT * FROM BllArrivalNoticeDetail WHERE ASNNo = '{model.ASNNo}' and Id <> {model.Id};"; |
| | | var detailModel = Db.Ado.SqlQuery<ArrivalNoticeDetailVm>(sqlString); |
| | | var asnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Id == model.Id); |
| | | if (asnDetail == null) |
| | | { |
| | | return "-1:明细状态已变更,不可删除!"; |
| | | } |
| | | |
| | | var detailModel = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0" && m.Id != model.Id).ToList(); |
| | | var editDateTime = DateTime.Now; |
| | | if (detailModel.Count <= 0) |
| | | { |
| | | sqlString = $"UPDATE BllArrivalNotice SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | asnModel.IsDel = "1"; |
| | | asnModel.UpdateTime = editDateTime; |
| | | asnModel.UpdateUser = model.CreateUser; |
| | | } |
| | | else |
| | | { |
| | | sqlString = $"UPDATE BllArrivalNotice SET "; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | asnModel.UpdateTime = editDateTime; |
| | | asnModel.UpdateUser = model.CreateUser; |
| | | } |
| | | |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE Id = '{model.Id}';"; |
| | | asnDetail.IsDel = "0"; |
| | | asnDetail.UpdateTime = editDateTime; |
| | | asnDetail.UpdateUser = model.CreateUser; |
| | | |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | int rowCount = Db.Updateable(asnModel).ExecuteCommand(); |
| | | rowCount += Db.Updateable(asnDetail).ExecuteCommand(); |
| | | |
| | | if (rowCount < 2) |
| | | { |
| | |
| | | return "-1:删除失败!"; |
| | | } |
| | | Db.Ado.CommitTran(); |
| | | |
| | | var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == model.Id); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "删除", $"删除了单据号为{model.ASNNo}、物料为{detail.SkuNo}、批次号为{detail.LotNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "删除", |
| | | $"删除了单据号为{model.ASNNo}、物料为{detail.SkuNo}、批次号为{detail.LotNo}的单据信息", |
| | | Convert.ToInt32(model.CreateUser)); |
| | | |
| | | return ""; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | //关闭入库单 |
| | | public string CloseArrivalNotice(int id, int userId) |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到入库单据信息"); |
| | | } |
| | | //if (notice.Status != "2") |
| | | //{ |
| | | // throw new Exception("参数异常,请检查状态是否为执行完成"); |
| | | //} |
| | | var palletBind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.Status != "2" && m.Status != "3").ToList(); |
| | | |
| | | var palletBind = Db.Queryable<BllPalletBind>() |
| | | .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo |
| | | && m.Status != "2" && m.Status != "3").ToList(); |
| | | |
| | | if (palletBind != null && palletBind.Count > 0) |
| | | { |
| | | throw new Exception("存在未入库完成托盘信息,不允许关单"); |
| | | } |
| | | var comTime = DateTime.Now; |
| | | var sqlString = ""; |
| | | |
| | | // 总单关单 |
| | | sqlString = $"UPDATE BllArrivalNotice SET Status = '3',"; |
| | | sqlString += $"CompleteTime = GETDATE(),UpdateTime = GETDATE(),UpdateUser = '{userId}' "; |
| | | sqlString += $"WHERE Id = '{id}';"; |
| | | |
| | | var asnModel = Db.Queryable<BllArrivalNotice>().First(m => m.Id == id); |
| | | if (asnModel != null) |
| | | { |
| | | asnModel.Status = "3"; |
| | | asnModel.CompleteTime = comTime; |
| | | asnModel.UpdateTime = comTime; |
| | | asnModel.UpdateUser = userId; |
| | | } |
| | | // 将未完成的明细改为已完成 |
| | | sqlString += $"UPDATE BllArrivalNoticeDetail SET Status = '2',"; |
| | | sqlString += $"CompleteTime = GETDATE(),UpdateTime = GETDATE(),UpdateUser = '{userId}' "; |
| | | sqlString += $"WHERE Id = '{id}' and Status <> '2';"; |
| | | var asnDetails = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.Id == id && m.Status == "2").ToList(); |
| | | foreach (BllArrivalNoticeDetail asnDetail in asnDetails) |
| | | { |
| | | asnDetail.Status = "2"; |
| | | asnDetail.CompleteTime = comTime; |
| | | asnDetail.UpdateTime = comTime; |
| | | asnDetail.UpdateUser = userId; |
| | | } |
| | | |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | int rowCount = Db.Updateable(asnModel).ExecuteCommand(); |
| | | rowCount += Db.Updateable(asnDetails).ExecuteCommand(); |
| | | |
| | | if (rowCount <= 0) |
| | | { |
| | |
| | | } |
| | | // 入库总表信息 |
| | | string asnNo = new Common().GetMaxNo("ASN"); |
| | | var asnModel = new BllArrivalNotice() |
| | | var asnModel1 = new BllArrivalNotice() |
| | | { |
| | | ASNNo = asnNo, |
| | | Status = "0",//执行状态,0:等待执行 |
| | |
| | | CreateUser = 0 |
| | | }; |
| | | // 插入入库总表信息 |
| | | Db.Insertable(asnModel).ExecuteCommand(); |
| | | Db.Insertable(asnModel1).ExecuteCommand(); |
| | | //入库单明细 |
| | | var arrDetailModel = new BllArrivalNoticeDetail() |
| | | { |