| | |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllAsnServer; |
| | | using WMS.BLL.SysServer; |
| | | using System.Threading.Tasks; |
| | | using System.Security.Policy; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.BllQualityEntity; |
| | | using Microsoft.VisualBasic; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | 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 += $"WHERE tb1.ASNNo = '{model.ASNNo}' AND tb1.IsDel = '0' AND tb5.IsDel = '0' order by tb1.SkuNo desc "; |
| | | sqlString += $"offset {((model.Page - 1) * model.Limit)} rows fetch next {rowCount} rows only;"; |
| | | |
| | | var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString); |
| | |
| | | } |
| | | |
| | | //获取入库单明细剩余打印数量 |
| | | public string GetAsnDetailQtyList(int id) |
| | | public LabelPrintInfoDto GetAsnDetailQtyList(int id) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到入库单明细"); |
| | | } |
| | | var data = new LabelPrintInfoDto(); |
| | | |
| | | var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo).First(); |
| | | if (notice != null && notice.Type == "4") //判断是否是余料退回单 |
| | | { |
| | | var noticeStr = Db.Queryable<BllArrivalNotice>().Where(m => m.Type == "1").Select(m => m.ASNNo).ToList(); |
| | | var detailOld = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && noticeStr.Contains(m.ASNNo) && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo).OrderByDescending(m => m.CreateTime).First(); |
| | | if (detailOld != null) |
| | | { |
| | | var boxInfo = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.ASNNo == detailOld.ASNNo); |
| | | if (boxInfo!= null) |
| | | { |
| | | data.ProductionTime = boxInfo.ProductionTime!= null ? ((DateTime)boxInfo.ProductionTime).ToString("yyyy-MM-dd"):""; |
| | | data.ExpirationTime = boxInfo.ExpirationTime != null ? ((DateTime)boxInfo.ExpirationTime).ToString("yyyy-MM-dd") : ""; |
| | | data.StoreTime = boxInfo.StoreTime != null ? ((DateTime)boxInfo.StoreTime).ToString("yyyy-MM-dd") : ""; |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty); |
| | | var qty = detail.Qty - labelQty; |
| | | |
| | | return qty.ToString(); |
| | | data.Qty = qty.ToString(); |
| | | data.SupplierLot = detail.SupplierLot; |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "6"://代储入库 |
| | | skuType = "(2)"; |
| | | IsPack = 2; //不贴 |
| | | skuType = "(0,1,2,3,4)"; |
| | | //IsPack = 2; //不贴 |
| | | break; |
| | | case "7"://寄存入库 |
| | | //skuType = "(3)"; |
| | |
| | | } |
| | | |
| | | Expression<Func<SysMaterials, bool>> item = Expressionable.Create<SysMaterials>() |
| | | .AndIF(model.Type != "7", it => skuType.Contains(it.Type)) |
| | | .AndIF(model.Type != "7", it => skuType.Contains(it.Type) && it.SkuNo != "100088") |
| | | .AndIF(model.Type == "7", it => it.SkuNo == "100088") |
| | | .AndIF(IsPack == 1, it => it.PackagNo != "") |
| | | .AndIF(IsPack == 2, it => it.PackagNo == "") |
| | |
| | | } |
| | | |
| | | //添加入库单据 |
| | | public string AddArrivalNotice(ArrivalNoticeVm model) |
| | | public string AddArrivalNotice(ArrivalNoticeVm model, string url) |
| | | { |
| | | string strMessage = ""; |
| | | string sqlString = string.Empty; |
| | | string sqlDetailStr = string.Empty; |
| | | //0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | var TypeLot = "1, 2, 5, 6, 7"; //批次可为空单据类型 |
| | | var TypeLot = "2, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | var addOder = new List<ResponseOrderTaskModel>(); |
| | | try |
| | | { |
| | | if (model.Origin == "录入") |
| | |
| | | } |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | { |
| | | throw new Exception("采购入库或余料退回不可输入批次,不可编辑!"); |
| | | } |
| | | } |
| | | //if (model.Type == "1" || model.Type == "4") |
| | | //{ |
| | | // if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | // { |
| | | // throw new Exception("采购入库或余料退回不可输入批次,不可编辑!"); |
| | | // } |
| | | //} |
| | | |
| | | sqlString += "Insert into BllArrivalNotice (ASNNo,Type,Origin,CustomerNo,"; |
| | | sqlString += "CustomerName,LotNo,LotText,SupplierLot,CreateUser) values ( "; |
| | |
| | | //判断是否为不限制批次单据 |
| | | if (!TypeLot.Contains(model.Type)) |
| | | { |
| | | strMessage = "-1:批次号不可为空;"; |
| | | strMessage = "-1:进厂编号不可为空;"; |
| | | continue; |
| | | } |
| | | } |
| | | if (!string.IsNullOrEmpty(detailModel.IsBale)) |
| | | { |
| | | detailModel.IsBale = detailModel.IsBale == "是" ? "1" : "0"; |
| | | if (detailModel.IsBale != "1" && detailModel.IsBale != "0") |
| | | { |
| | | //判断是否裹包 |
| | | strMessage = "-1:裹包字段只能录入“是”或“否”;"; |
| | | continue; |
| | | } |
| | | } |
| | | //if (model.Type != "7") |
| | | //{ |
| | | // if (!TypeLot.Contains(model.Type)) |
| | | // { |
| | | // if (detailModel.LotNo.Length != 12 && detailModel.LotNo.Length != 11 && detailModel.LotNo.Length != 10) |
| | | // { |
| | | // strMessage = "-1:进厂编号位数长度有误;"; |
| | | // continue; |
| | | // } |
| | | // } |
| | | |
| | | //} |
| | | |
| | | if (model.Type == "1" && string.IsNullOrWhiteSpace(detailModel.SupplierLot)) //采购到货单原厂批号(供货批次)不能为空 |
| | | { |
| | | strMessage = "-1:原厂批号不可为空;"; |
| | | continue; |
| | | } |
| | | if (model.Type == "2") // 2:中间品入库 |
| | | { |
| | | 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); |
| | | if (com > 0) |
| | | { |
| | | strMessage = "-1:物料和批次号重复;"; |
| | | strMessage = "-1:物料和进厂编号重复;"; |
| | | continue; |
| | | } |
| | | if (detailModel.Price == null) |
| | |
| | | // 计算出总金额 |
| | | 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 += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,Lot1,Lot2,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( "; |
| | | sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', "; |
| | | sqlDetailStr += $"'{detailModel.LotNo}','{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}');"; |
| | | sqlDetailStr += $"'{detailModel.Money}','{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.Lot1}','{detailModel.Lot2}', "; |
| | | sqlDetailStr += $"'{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');"; |
| | | |
| | | if (model.Type == "0")//成品入库单下发WCS信息 |
| | | { |
| | | //计算出总箱数 |
| | | var packmodel = Db.Queryable<SysPackag>().First(w=>w.PackagNo == detailModel.SkuNo); |
| | | int xqty = 0; |
| | | if (packmodel.L1Name == "箱") { |
| | | xqty = (int)detailModel.Qty; |
| | | } |
| | | if (packmodel.L2Name == "箱") |
| | | { |
| | | xqty = (int)(detailModel.Qty / packmodel.L2Num); |
| | | } |
| | | if (packmodel.L3Name == "箱") |
| | | { |
| | | xqty = (int)(detailModel.Qty/ packmodel.L2Num / packmodel.L3Num); |
| | | } |
| | | addOder.Add(new ResponseOrderTaskModel() |
| | | { |
| | | OrderNo = model.ASNNo, |
| | | LotNo = detailModel.LotNo, |
| | | SkuNo = detailModel.SkuNo, |
| | | SkuName = detailModel.SkuName, |
| | | BoxType = detailModel.Standard, |
| | | Qty = xqty, |
| | | TaskType = 0 |
| | | }); |
| | | } |
| | | } |
| | | |
| | | if (sqlDetailStr == string.Empty) |
| | |
| | | if (rowCount > 0 && rowDetailCount > 0) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", model.ASNNo, "添加", $"添加了单据号为{model.ASNNo}的单据信息", Convert.ToInt32(model.CreateUser)); |
| | | |
| | | if (addOder.Count > 0) |
| | | { |
| | | // 正式运行程序放开 |
| | | var jsonData = JsonConvert.SerializeObject(addOder); |
| | | string response = ""; |
| | | |
| | | try |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | //给WCS下发入库单信息 |
| | | response = HttpHelper.DoPost(url, jsonData, "下发给WCS入库命令", "WCS"); |
| | | |
| | | //解析返回数据 |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); |
| | | if (wcsModel.StatusCode == 0) |
| | | { |
| | | |
| | | } |
| | | if (wcsModel.StatusCode == -1) |
| | | { |
| | | throw new Exception($"下发WCS失败:{wcsModel.Msg}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | return strMessage; |
| | | } |
| | | else |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Db.Ado.RollbackTran(); |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | |
| | | strMessage = "-1:上游系统下发的单据,不可编辑;"; |
| | | return strMessage; |
| | | } |
| | | |
| | | |
| | | sqlString += $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isDel = '0';"; |
| | | var asnInfo = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | |
| | | strMessage = "-1:批次号不可为空;"; |
| | | continue; |
| | | } |
| | | if (!string.IsNullOrEmpty(detailModel.IsBale)) |
| | | { |
| | | detailModel.IsBale = detailModel.IsBale == "是" ? "1" : "0"; |
| | | if (detailModel.IsBale != "1" && detailModel.IsBale != "0") |
| | | { |
| | | //判断是否裹包 |
| | | strMessage = "-1:裹包字段只能录入“是”或“否”;"; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | if (model.Type == "2") // 2:中间品入库 |
| | | { |
| | | 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';"; |
| | |
| | | // 计算出总金额 |
| | | 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 += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,Lot1,Lot2,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( "; |
| | | sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', "; |
| | | sqlDetailStr += $"'{detailModel.LotNo}','{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}');"; |
| | | sqlDetailStr += $"'{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.Lot1}','{detailModel.Lot2}', "; |
| | | sqlDetailStr += $"'{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');"; |
| | | |
| | | } |
| | | 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 |
| | |
| | | sqlDetailStr += $"Qty = '{detailModel.Qty}',LotNo = '{detailModel.LotNo}',Money='{detailModel.Money}', "; |
| | | sqlDetailStr += $"LotText = '{detailModel.LotText}',SupplierLot = '{detailModel.SupplierLot}', "; |
| | | sqlDetailStr += $"IsBale = '{detailModel.IsBale}',IsBelt = '{detailModel.IsBelt}', "; |
| | | sqlDetailStr += $" Lot1= '{detailModel.Lot1}',Lot2 = '{detailModel.Lot2}', "; |
| | | 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};"; |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public ErpModel CreateAsn(AsnInfo model) |
| | | public HttpReturnModel HttpCreateAsn(AsnInfo model, string url) |
| | | { |
| | | try |
| | | { |
| | | var resultModel = new ErpModel() { Success = -1, Message = "" }; |
| | | var addOder = new List<ResponseOrderTaskModel>(); |
| | | var resultModel = new HttpReturnModel() { Success = "-1", Message = "" }; |
| | | if (string.IsNullOrEmpty(model.AsnType)) |
| | | { |
| | | resultModel.Message = "单据类型不可为空!"; |
| | | return resultModel; |
| | | } |
| | | if (string.IsNullOrEmpty(model.Customer)) |
| | | { |
| | | resultModel.Message = "客户不可为空!"; |
| | | return resultModel; |
| | | } |
| | | //if (string.IsNullOrEmpty(model.Customer)) |
| | | //{ |
| | | // resultModel.Message = "客户不可为空!"; |
| | | // return resultModel; |
| | | //} |
| | | if (string.IsNullOrEmpty(model.OrderCode)) |
| | | { |
| | | resultModel.Message = "上游系统单号不可为空!"; |
| | |
| | | } |
| | | |
| | | // 根据客户编号获取客户名称 |
| | | var custname = ""; |
| | | var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0"); |
| | | if (CustomerModel == null) |
| | | if (CustomerModel != null) |
| | | { |
| | | resultModel.Message = "客户编号不存在!"; |
| | | return resultModel; |
| | | custname = CustomerModel.CustomerName; |
| | | //CustomerModel.CustomerName = ""; |
| | | //resultModel.Message = "客户编号不存在!"; |
| | | //return resultModel; |
| | | } |
| | | |
| | | // 入库总表信息 |
| | |
| | | Type = model.AsnType, |
| | | Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin, |
| | | CustomerNo = model.Customer, |
| | | CustomerName = CustomerModel.CustomerName, |
| | | CustomerName = custname, |
| | | OrderCode = model.OrderCode, |
| | | Status = "0", |
| | | }; |
| | | |
| | | // 入库明细表信息 |
| | |
| | | LotNo = asnDetailModel.LotNo, |
| | | LotText = "", |
| | | Qty = (decimal)asnDetailModel.Qty, |
| | | PackagNo = asnDetailModel.PackagNo, |
| | | FactQty = 0, |
| | | CompleteQty = 0, |
| | | Price = 0, |
| | | Money = 0, |
| | | IsBale = "", |
| | | IsBelt = "", |
| | | PackagNo = skuModel.PackagNo, |
| | | SupplierLot = asnDetailModel.SupplierLot, |
| | | Status = "0", |
| | | CreateUser = 0 |
| | | |
| | | }; |
| | | |
| | | detailModels.Add(detailModel); |
| | | |
| | | if (model.AsnType == "0")//成品入库单下发WCS信息 |
| | | { |
| | | //计算出总箱数 |
| | | var packmodel = Db.Queryable<SysPackag>().First(w => w.PackagNo == detailModel.SkuNo); |
| | | int xqty = 0; |
| | | if (packmodel.L1Name == "箱") |
| | | { |
| | | xqty = (int)detailModel.Qty; |
| | | } |
| | | if (packmodel.L2Name == "箱") |
| | | { |
| | | xqty = (int)(detailModel.Qty / packmodel.L2Num); |
| | | } |
| | | if (packmodel.L3Name == "箱") |
| | | { |
| | | xqty = (int)(detailModel.Qty / packmodel.L2Num / packmodel.L3Num); |
| | | } |
| | | addOder.Add(new ResponseOrderTaskModel() |
| | | { |
| | | OrderNo = asnNo, |
| | | LotNo = asnDetailModel.LotNo, |
| | | SkuNo = asnDetailModel.SkuNo, |
| | | SkuName = skuModel.SkuName, |
| | | BoxType = skuModel.Standard, |
| | | Qty = (int)asnDetailModel.Qty, |
| | | TaskType = 0 |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | Db.BeginTran(); |
| | | // 插入入库单总表 |
| | |
| | | Db.Insertable(detailModels).ExecuteCommand(); |
| | | Db.CommitTran(); |
| | | |
| | | resultModel.Success = 0; |
| | | |
| | | if (addOder.Count > 0) |
| | | { |
| | | // 正式运行程序放开 |
| | | var jsonData = JsonConvert.SerializeObject(addOder); |
| | | string response = ""; |
| | | |
| | | try |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | //给WCS下发入库单信息 |
| | | response = HttpHelper.DoPost(url, jsonData, "下发给WCS入库命令", "WCS"); |
| | | |
| | | //解析返回数据 |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); |
| | | if (wcsModel.StatusCode == 0) |
| | | { |
| | | |
| | | } |
| | | if (wcsModel.StatusCode == -1) |
| | | { |
| | | throw new Exception($"下发WCS失败:{wcsModel.Msg}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | |
| | | resultModel.Success = "0"; |
| | | resultModel.Message = "成功"; |
| | | return resultModel; |
| | | } |
| | |
| | | } |
| | | |
| | | //订单回传上游系统 |
| | | public bool FinishAsn(int id, string url, int userId) |
| | | public bool FinishAsn(int id, string erpUrl, string mesUrl,string mesTokenUrl,string userNo,string pwd, int userId) |
| | | { |
| | | try |
| | | { |
| | | var loginPwd = Md5Tools.CalcMd5(pwd); |
| | | var date = Db.Queryable<SysUserInfor>().First(m =>m.IsDel=="0" && m.UserName == userNo && m.PassWord == loginPwd); |
| | | |
| | | if (date == null) //账号密码是否正确 |
| | | { |
| | | throw new Exception("账号密码不正确或没有此账号"); |
| | | } |
| | | if (date.Status != "0") //当前账号是否正常启用 |
| | | { |
| | | throw new Exception("当前账号非启用状态"); |
| | | } |
| | | |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(m => m.Id == id && m.IsDel == "0"); |
| | | if (notice == null) |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到单据明细信息"); |
| | | } |
| | | if (userId == notice.UpdateUser) |
| | | if (date.Id == notice.UpdateUser) |
| | | { |
| | | throw new Exception("复核失败,复核人员和关闭订单人员不能相同!"); |
| | | } |
| | | if (date.Id == notice.CreateUser) |
| | | { |
| | | throw new Exception("复核失败,复核人员和创建订单人员不能相同!"); |
| | | } |
| | | //单据类型是 成品入库或采购入库 判断入库物料是否合格 |
| | | if (notice.Type == "0" || notice.Type == "1") |
| | | { |
| | | foreach (var item in detail) |
| | | { |
| | | var instStatus = Db.Queryable<BllQualityInspect>().Count(m => m.IsDel == "0" && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.IsQualified == "1"); |
| | | if (instStatus == 0) |
| | | { |
| | | throw new Exception($"{item.SkuNo}、{item.LotNo}质量状态不是合格的,不能回传!"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | var list = new List<AsnDetail>(); |
| | | foreach (var d in detail) |
| | |
| | | }; |
| | | list.Add(item); |
| | | } |
| | | var soInfo = new AsnInfo() |
| | | var asnInfo = new AsnInfo() |
| | | { |
| | | OrderCode = notice.OrderCode, |
| | | AsnDetails = list |
| | | }; |
| | | |
| | | #region 通过接口发送至erp |
| | | //系统对接后放开 |
| | | /*var jsonData = JsonConvert.SerializeObject(soInfo); |
| | | #region 通过接口发送至erp 或 mes |
| | | ////系统对接后放开 |
| | | var jsonData = JsonConvert.SerializeObject(asnInfo); |
| | | var mesList = new List<string>() { "0", "4" }; //0 成品入库 4余料退回入库 |
| | | var erpList = new List<string>() { "1", "2", "3" }; //1 采购入库 2中间品入库 3 退货入库 |
| | | |
| | | var response = HttpHelper.DoPost(url, jsonData, "入库单完成上传", "ERP"); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据 |
| | | if (obj.Success != 0) |
| | | if (mesList.Contains(notice.Type)) // mes |
| | | { |
| | | throw new Exception("上传失败" + obj.Message); |
| | | }*/ |
| | | //获取令牌 |
| | | //var token = new Token().GetMesToken(mesTokenUrl); //测试不使用TOKEN,正式运行时放开 |
| | | var token = ""; |
| | | Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | { |
| | | {"Authorization",token } |
| | | }; |
| | | var mesData = new FinishAsnModel() |
| | | { |
| | | no = asnInfo.OrderCode, |
| | | qty = asnInfo.AsnDetails.Sum(m => m.Qty) |
| | | }; |
| | | jsonData = JsonConvert.SerializeObject(mesData); |
| | | //调用接口 |
| | | var response = HttpHelper.DoPost(mesUrl, jsonData, "入库单完成上传", "MES", mesDic); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | if (obj.status != "success") |
| | | { |
| | | throw new Exception("上传失败" + obj.message); |
| | | } |
| | | } |
| | | else if (erpList.Contains(notice.Type)) //erp |
| | | { |
| | | var response = HttpHelper.DoPost(erpUrl, jsonData, "入库单完成上传", "ERP"); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据 |
| | | if (obj.Success != 0) |
| | | { |
| | | throw new Exception("上传失败" + obj.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | notice.Status = "4"; |
| | | notice.CheckTime = DateTime.Now; |
| | | notice.CheckUser = userId; |
| | | notice.CheckUser = date.Id; |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", notice.ASNNo, "复核", $"复核了单据号为{notice.ASNNo}的单据信息", userId); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库单据", notice.ASNNo, "复核", $"{date.RealName}复核了单据号为{notice.ASNNo}的单据信息", userId); |
| | | return true; |
| | | } |
| | | catch (Exception e) |
| | |
| | | } |
| | | } |
| | | |
| | | public void UpLocate(string wareNo,string locatNo) |
| | | { |
| | | try |
| | | { |
| | | if (string.IsNullOrWhiteSpace(wareNo) || string.IsNullOrWhiteSpace(locatNo)) |
| | | { |
| | | throw new Exception("仓库或储位不能为空"); |
| | | } |
| | | var locate = Db.Queryable<SysStorageLocat>().First(m=>m.IsDel == "0" && m.LocatNo == locatNo && m.WareHouseNo == wareNo); |
| | | if (locate == null) |
| | | { |
| | | throw new Exception("未查询到储位信息"); |
| | | } |
| | | locate.Status = "0";//储位状态变更空储位 |
| | | Db.Updateable(locate).ExecuteCommand(); |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | |