| | |
| | | using WMS.Entity.Context; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllAsnServer; |
| | | using WMS.BLL.SysServer; |
| | | |
| | | 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); |
| | |
| | | try |
| | | { |
| | | string skuType = string.Empty; |
| | | int IsPack = 0; //0:不管 1:贴 2:不贴 |
| | | /** |
| | | * 成品贴 0 |
| | | * 采购可贴可不贴 1 |
| | | * 中间品不贴 2 |
| | | * 退货贴 3 |
| | | * 余料退回可贴可不贴 4 |
| | | * 其它可贴可不贴 5 |
| | | * 代储不贴 6 |
| | | * 寄存不贴 7 |
| | | */ |
| | | switch (model.Type)//0:原料 1:包材 2:成品 3:耗材 4:半成品 |
| | | { |
| | | case "0"://成品入库 |
| | | case "3"://退货入库 |
| | | case "5"://其它入库 |
| | | case "6"://代储入库 |
| | | skuType = "(2)"; |
| | | IsPack = 1; //贴 |
| | | break; |
| | | case "1"://采购入库 |
| | | case "4"://车间余料退回入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "2"://中间品入库 |
| | | skuType = "(4)"; |
| | | IsPack = 2; //不贴 |
| | | break; |
| | | case "3"://退货入库 |
| | | skuType = "(2)"; |
| | | IsPack = 1; //贴 |
| | | break; |
| | | case "4"://车间余料退回入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "5"://其它入库 |
| | | skuType = "(0,1,3)"; |
| | | break; |
| | | case "6"://代储入库 |
| | | skuType = "(2)"; |
| | | IsPack = 2; //不贴 |
| | | break; |
| | | case "7"://寄存入库 |
| | | skuType = "(0,1,2,3,4)"; |
| | | //skuType = "(3)"; |
| | | IsPack = 2; //不贴 |
| | | break; |
| | | default: //其它 |
| | | skuType = "(0,1,2,3,4)"; |
| | | //skuType = "(0,1,2,3,4)"; |
| | | break; |
| | | } |
| | | |
| | | Expression<Func<SysMaterials, bool>> item = Expressionable.Create<SysMaterials>() |
| | | .AndIF(true, 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 == "") |
| | | .AndIF(true, it => it.IsDel == "0") |
| | | .And(it => it.SkuNo != "100099") |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), |
| | |
| | | .Includes(x => x.UnitInfo) |
| | | .Includes(x => x.PackagInfo) |
| | | .ToList(); |
| | | |
| | | |
| | | |
| | | return data.Select(m => new MaterialsDto() |
| | | { |
| | |
| | | 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 = "1, 2, 5, 6, 7"; //批次可为空单据类型 |
| | | |
| | | try |
| | | { |
| | |
| | | { |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | int isType = 0; |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | isType = 1; |
| | | if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | { |
| | | strMessage = "-1:采购入库或余料退回不可输入批次,不可编辑;"; |
| | |
| | | strMessage = "-1:数量必须大于0;"; |
| | | continue; |
| | | } |
| | | if (string.IsNullOrEmpty(detailModel.LotNo)) |
| | | if (string.IsNullOrEmpty(detailModel.LotNo) && isType != 1) |
| | | { |
| | | strMessage = "-1:批次号不可为空;"; |
| | | continue; |
| | |
| | | |
| | | //判断是否为采购入库单据或车间余料退回入库 |
| | | // 0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 7:寄存入库 |
| | | int notdel = 0; |
| | | if (model.Type == "1" || model.Type == "4") |
| | | { |
| | | //获取单据生成对应标签 |
| | |
| | | sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; |
| | | sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; |
| | | sqlString += $"WHERE ASNNo = '{model.ASNNo}';"; |
| | | notdel = 1; |
| | | } |
| | | Db.Ado.BeginTran(); |
| | | int rowCount = Db.Ado.ExecuteCommand(sqlString); |
| | | if (rowCount < 3) |
| | | if (rowCount < 2 + notdel) |
| | | { |
| | | Db.RollbackTran(); |
| | | return "-1:删除失败!"; |
| | |
| | | //{ |
| | | // throw new Exception("参数异常,请检查状态是否为执行完成"); |
| | | //} |
| | | var palletBind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.Status != "2").ToList(); |
| | | if (palletBind != null && palletBind.Count > 0) |
| | | { |
| | | throw new Exception("存在未入库完成托盘信息,不允许关单"); |
| | | } |
| | | |
| | | var sqlString = ""; |
| | | |
| | |
| | | } |
| | | |
| | | var info = boxInfo.First(m => m.BindNo == item.Id); |
| | | if (!msgS.Contains(info.SkuNo)) |
| | | //获取托盘绑定对应单据 |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(a => a.IsDel == "0" && a.Id == item.ASNDetailNo); |
| | | if (info != null) |
| | | { |
| | | msgS += info.SkuNo + ";"; |
| | | if (!msgS.Contains(info.SkuNo)) |
| | | { |
| | | msgS += info.SkuNo + ";"; |
| | | } |
| | | |
| | | if (!msgL.Contains(info.LotNo)) |
| | | { |
| | | msgL += info.LotNo + ";"; |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (!msgS.Contains(noticeDetail.SkuNo)) |
| | | { |
| | | msgS += noticeDetail.SkuNo + ";"; |
| | | } |
| | | |
| | | if (!msgL.Contains(noticeDetail.LotNo)) |
| | | { |
| | | msgL += noticeDetail.LotNo + ";"; |
| | | |
| | | } |
| | | } |
| | | |
| | | if (!msgL.Contains(info.LotNo)) |
| | | { |
| | | msgL += info.LotNo + ";"; |
| | | |
| | | } |
| | | } |
| | | var time = DateTime.Now; |
| | | var log = new BllAuditLog() |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public ErpModel CreateAsn(AsnInfo model) |
| | | public HttpReturnModel HttpCreateAsn(AsnInfo model) |
| | | { |
| | | try |
| | | { |
| | | var resultModel = new ErpModel() { Success = -1, Message = "" }; |
| | | var resultModel = new HttpReturnModel() { Success = "-1", Message = "" }; |
| | | if (string.IsNullOrEmpty(model.AsnType)) |
| | | { |
| | | resultModel.Message = "单据类型不可为空!"; |
| | |
| | | { |
| | | ASNNo = asnNo, |
| | | Type = model.AsnType, |
| | | Origin = model.Origin, |
| | | Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin, |
| | | CustomerNo = model.Customer, |
| | | CustomerName = CustomerModel.CustomerName, |
| | | OrderCode = model.OrderCode, |
| | |
| | | Db.Insertable(detailModels).ExecuteCommand(); |
| | | Db.CommitTran(); |
| | | |
| | | resultModel.Success = 0; |
| | | 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, int userId) |
| | | { |
| | | try |
| | | { |
| | |
| | | if (notice == null) |
| | | { |
| | | throw new Exception("未查询到单据信息"); |
| | | } |
| | | if (notice.Status != "3") |
| | | { |
| | | throw new Exception("复核失败,单据非关闭状态"); |
| | | } |
| | | var detail = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == notice.ASNNo && m.IsDel == "0").ToList(); |
| | | if (detail.Count == 0) |
| | |
| | | }; |
| | | list.Add(item); |
| | | } |
| | | var soInfo = new AsnInfo() |
| | | var asnInfo = new AsnInfo() |
| | | { |
| | | OrderCode = notice.OrderCode, |
| | | AsnDetails = list |
| | | }; |
| | | |
| | | #region 通过接口发送至erp |
| | | #region 通过接口发送至erp 或 mes |
| | | //系统对接后放开 |
| | | /*var jsonData = JsonConvert.SerializeObject(soInfo); |
| | | 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); |
| | | 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 != "0") |
| | | { |
| | | 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"; |
| | |
| | | } |
| | | } |
| | | |
| | | 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 |
| | | } |
| | | |