| | |
| | | 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; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | CustomerName = tb1.CustomerName, |
| | | LotNo = tb1.LotNo, |
| | | LotText = tb1.LotText, |
| | | CheckTime = tb1.CheckTime.ToString(), |
| | | CheckTime = ((DateTime)tb1.CheckTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CheckUserName = tb5.RealName, |
| | | SupplierLot = tb1.SupplierLot, |
| | | Demo = tb1.Demo, |
| | |
| | | CompleteTime = tb1.CompleteTime, |
| | | CreateTime = tb1.CreateTime, |
| | | CreateUserName = tb3.RealName, |
| | | UpdateTime = tb1.UpdateTime.ToString(), |
| | | UserName=tb1.UserName, |
| | | UpdateTime = ((DateTime)tb1.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | UpdateUserName = tb4.RealName |
| | | |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | |
| | | .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) |
| | | .LeftJoin<SysMaterials>((tb1, tb2, tb3, tb4,tb5) => tb1.SkuNo == tb5.SkuNo && tb5.IsDel == "0") |
| | | .LeftJoin<SysUnit>((tb1, tb2, tb3, tb4, tb5,tb6) => tb5.UnitNo == tb6.UnitNo && tb6.IsDel == "0") |
| | | .LeftJoin<SysPackag>((tb1, tb2, tb3, tb4, tb5, tb6,tb7) => tb1.PackagNo == tb7.PackagNo && tb7.IsDel == "0") |
| | | .Select((tb1, tb2, tb3, tb4, tb5,tb6, tb7) => new ArrivalNoticeDetailDto() |
| | | { |
| | | Id = tb1.Id, |
| | |
| | | Status = tb1.Status, |
| | | AsnType = tb2.Type, |
| | | AsnStatus = tb2.Status, |
| | | Lot1 = tb1.Lot1, |
| | | Lot2 = tb1.Lot2, |
| | | UDF1 = tb1.UDF1, |
| | | UDF2 = tb1.UDF2, |
| | | UDF3 = tb1.UDF3, |
| | |
| | | CompleteTime = tb1.CompleteTime, |
| | | CreateTime = tb1.CreateTime, |
| | | CreateUserName = tb3.RealName, |
| | | UpdateTime = tb1.UpdateTime.ToString(), |
| | | UpdateUserName = tb4.RealName |
| | | UpdateTime = ((DateTime)tb1.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss"), |
| | | UpdateUserName = tb4.RealName |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | 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>(); |
| | | var maxLotNo = ""; |
| | | foreach (ArrivalNoticeDetailVm detailModel in detailModels) |
| | | { |
| | | if (string.IsNullOrEmpty(detailModel.SkuNo)) |
| | |
| | | } |
| | | } |
| | | |
| | | if (TypeLot.Contains(model.Type)) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(detailModel.Lot1)) |
| | | { |
| | | throw new Exception("生产日期不可为空!"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(detailModel.Lot2)) |
| | | { |
| | | 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); |
| | | 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:物料和批次号重复;"; |
| | |
| | | if (detailModel.Id == 0 || detailModel.Id == null || string.IsNullOrWhiteSpace(detailModel.LotNo)) |
| | | { |
| | | var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList(); |
| | | var maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m=>m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m=>m.LotNo); |
| | | if (string.IsNullOrWhiteSpace(maxLotNo)) |
| | | { |
| | | maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(maxLotNo)) |
| | | { |
| | | maxLotNo = toDayTime.Substring(2, 6) + "0001"; |
| | |
| | | } |
| | | // 计算出总金额 |
| | | 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", |
| | | Lot1 = detailModel.Lot1, |
| | | Lot2 = detailModel.Lot2, |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | | UDF4 = detailModel.UDF4, |
| | | UDF5 = detailModel.UDF5, |
| | | CreateUser=(int)model.CreateUser |
| | | }; |
| | | addDetails.Add(addModel); |
| | | } |
| | | else |
| | | { |
| | |
| | | && it.SupplierLot == detailModel.SupplierLot |
| | | && it.IsBale == detailModel.IsBale |
| | | && it.IsBelt == detailModel.IsBelt |
| | | && it.Lot1 == detailModel.Lot1 // 生产日期 |
| | | && it.Lot2 == detailModel.Lot2 // 过期日期 |
| | | && it.UDF1 == detailModel.UDF1 |
| | | && it.UDF2 == detailModel.UDF2 |
| | | && it.UDF3 == detailModel.UDF3 |
| | |
| | | { |
| | | 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) |
| | | { |
| | | strMessage = "-1:当前单据类型不可更改批次,只可编辑数量;"; |
| | | strMessage = "-1:当前单据类型不可更改批次;"; |
| | | continue; |
| | | } |
| | | } |
| | |
| | | } |
| | | // 计算出总金额 |
| | | 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.Lot1 = detailModel.Lot1; |
| | | dbDetail.Lot2 = detailModel.Lot2; |
| | | 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 = "1"; |
| | | 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) |
| | | { |
| | |
| | | #region 采购计划,若是采购订单根据采购计划单自动生成入库单信息 |
| | | if (notice.Type == "1" && !string.IsNullOrEmpty(notice.OrderCode)) |
| | | { |
| | | // 获取采购总单信息 |
| | | var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0"); |
| | | //入库单明细 |
| | | var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList(); |
| | | var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList(); |
| | | foreach (var item in noticeDetailList) |
| | | { |
| | | //采购单明细 |
| | | var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>().First(it => it.OrderDetailCode == item.OrderDetailCode && it.IsDel == "0"); |
| | | var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>() |
| | | .First(it => it.ParentId == planOrd.Id && it.SkuNo == item.SkuNo && it.IsDel == "0"); |
| | | planDetail.CompleteQty += item.CompleteQty; |
| | | if (planDetail.CompleteQty >= planDetail.Qty) |
| | | { |
| | |
| | | } |
| | | Db.Updateable(planDetail).ExecuteCommand(); |
| | | } |
| | | //采购总单信息 |
| | | var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0"); |
| | | // 维护采购总单信息 |
| | | var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>().Count(m => m.IsDel == "0" && m.ParentId == planOrd.Id && m.Status != "2"); |
| | | if (planDetailNum == 0) |
| | | { |
| | |
| | | } |
| | | } |
| | | //采购单明细 |
| | | var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>().Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList(); |
| | | var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>() |
| | | .Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList(); |
| | | foreach (var item in planDetailList) |
| | | { |
| | | //判断有无正在执行的 |
| | |
| | | } |
| | | // 入库总表信息 |
| | | 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() |
| | | { |
| | |
| | | CustomerNo = model.Customer, |
| | | CustomerName = CustomerModel.CustomerName, |
| | | OrderCode = model.OrderCode, |
| | | UserName = model.Username |
| | | }; |
| | | |
| | | // 入库明细表信息 |