/// <summary> /// VmiPullOrderInfo -> VmiShippingPartInfo /// </summary> /// <param name="vmiPullOrderInfo"></param> /// <param name="info"></param> public static void GetVmiShippingPartInfo(VmiPullOrderInfo vmiPullOrderInfo, ref VmiShippingPartInfo info) { if (vmiPullOrderInfo == null) { return; } ///PULL_MODE,拉动模式 info.PullMode = vmiPullOrderInfo.PullMode; ///PART_BOX_CODE,零件类代码 info.PartBoxCode = vmiPullOrderInfo.PartBoxCode; ///ROUTE_CODE,路径代码 info.RouteCode = vmiPullOrderInfo.RouteCode; ///PLANT,工厂 info.Plant = vmiPullOrderInfo.Plant; ///S_WM_NO,来源仓库 info.SWmNo = vmiPullOrderInfo.SWmNo; ///S_ZONE_NO,来源存储区 info.SZoneNo = vmiPullOrderInfo.SZoneNo; ///T_WM_NO,目标仓库 info.TWmNo = vmiPullOrderInfo.TWmNo; ///T_ZONE_NO,目标存储区 info.TZoneNo = vmiPullOrderInfo.TZoneNo; ///T_DOCK,目标道口 info.TDock = vmiPullOrderInfo.Dock; }
/// <summary> /// Create VmiShippingPartInfo /// </summary> /// <param name="loginUser"></param> /// <returns>VmiShippingPartInfo</returns> public static VmiShippingPartInfo CreateVmiShippingPartInfo(string loginUser) { VmiShippingPartInfo info = new VmiShippingPartInfo(); ///FID, info.Fid = Guid.NewGuid(); ///VALID_FLAG,逻辑删除标记 info.ValidFlag = true; ///CREATE_DATE,创建时间 info.CreateDate = DateTime.Now; ///CREATE_USER,创建用户 info.CreateUser = loginUser; ///MODIFY_DATE,最后修改时间 info.ModifyDate = null; ///MODIFY_USER,最后修改用户 info.ModifyUser = null; ///ASN_CONFIRM_QTY,ASN确认物料数量 info.AsnConfirmQty = null; ///ACTUAL_PACKAGE_QTY,实际包装数 info.ActualPackageQty = null; ///ACTUAL_PART_QTY,实际物料数量 info.ActualPartQty = null; return(info); }
/// <summary> /// 批量从购物车移除 /// </summary> public bool BatchdeletingInfos(List <string> rowsKeyValues, string loginUser) { if (rowsKeyValues.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } List <VmiShippingPartInfo> vmiShippingPartInfos = new List <VmiShippingPartInfo>(); foreach (var rowsKeyValue in rowsKeyValues) { string[] keyValues = rowsKeyValue.Split(new char[] { '^' }, StringSplitOptions.RemoveEmptyEntries); if (keyValues.Length == 0) { throw new Exception("MC:0x00000084");///数据错误 } if (keyValues.Length == 1) { throw new Exception("MC:0x00000496");///预发货数量不能为空 } VmiShippingPartInfo vmiShippingPartInfo = new VmiShippingPartInfo(); vmiShippingPartInfo.Id = Convert.ToInt64(keyValues[0]); vmiShippingPartInfo.AsnDraftQty = Convert.ToDecimal(keyValues[1]); vmiShippingPartInfos.Add(vmiShippingPartInfo); } List <VmiShippingPartInfo> vmiShippingParts = dal.GetList("[ID] in (" + string.Join(",", vmiShippingPartInfos.Select(d => d.Id).ToArray()) + ")", string.Empty); if (vmiShippingParts.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } StringBuilder @string = new StringBuilder(); foreach (var vmiShippingPart in vmiShippingParts) { ///从购物车删除 @string.AppendLine("update [LES].[TE_MPM_VMI_SHIPPING_PART] " + "set [VALID_FLAG] = 0,[MODIFY_USER] = N'" + loginUser + "',[MODIFY_DATE] = GETDATE() " + "where [ID] = " + vmiShippingPart.Id + ";"); ///草稿数量退回拉动单 @string.AppendLine("update [LES].[TT_MPM_VMI_PULL_ORDER_DETAIL] " + "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) - " + vmiShippingPart.AsnDraftQty.GetValueOrDefault() + ",[MODIFY_USER] = N'" + loginUser + "',[MODIFY_DATE] = GETDATE() " + "where [FID] = N'" + vmiShippingPart.Fid.GetValueOrDefault() + "';"); } ///执行 using (TransactionScope trans = new TransactionScope()) { if (@string.Length > 0) { CommonDAL.ExecuteNonQueryBySql(@string.ToString()); } trans.Complete(); } return(true); }
/// <summary> /// VmiShippingPartInfo -> VmiOutputDetailInfo /// </summary> /// <param name="vmiShippingPartInfo"></param> /// <param name="info"></param> public static void GetVmiOutputDetailInfo(VmiShippingPartInfo vmiShippingPartInfo, ref VmiOutputDetailInfo info) { if (vmiShippingPartInfo == null) { return; } ///SUPPLIER_NUM,基础数据_供应商 info.SupplierNum = vmiShippingPartInfo.SupplierNum; ///PART_NO,车辆模型_零件号 info.PartNo = vmiShippingPartInfo.PartNo; ///PART_CNAME,车辆模型_零件中文名 info.PartCname = vmiShippingPartInfo.PartCname; ///REQUIRED_QTY,需求数量 info.RequiredQty = vmiShippingPartInfo.RequiredPartQty; ///RUNSHEET_NO,拉动单号 info.RunsheetNo = vmiShippingPartInfo.OrderCode; ///COMMENTS,备注 info.Comments = vmiShippingPartInfo.Comments; }
/// <summary> /// 加入VMI物料购物车 /// </summary> /// <returns></returns> public static void AddCartVmiShippingPartInfo(List <VmiPullOrderDetailInfo> vmiPullOrderDetailInfos, string loginUser) { if (vmiPullOrderDetailInfos.Count == 0) { throw new Exception("MC:3x00000027");///传入参数异常 } ///现有数据库中的VMI拉动单明细 List <VmiPullOrderDetailInfo> vmiPullOrderDetails = new VmiPullOrderDetailDAL().GetList("" + "[ID] in (" + string.Join(",", vmiPullOrderDetailInfos.Select(w => w.Id).ToArray()) + ")", string.Empty); if (vmiPullOrderDetails.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } List <VmiPullOrderInfo> vmiPullOrderInfos = new VmiPullOrderDAL().GetList("" + "[FID] in ('" + string.Join("','", vmiPullOrderDetails.Select(d => d.OrderFid.GetValueOrDefault()).ToArray()) + "')", string.Empty); if (vmiPullOrderInfos.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } ///当前登录用户的预发货集合 List <VmiShippingPartInfo> vmiShippingPartInfos = new VmiShippingPartDAL().GetList("[CREATE_USER] = N'" + loginUser + "'", string.Empty); StringBuilder @string = new StringBuilder(); foreach (var vmiPullOrderDetail in vmiPullOrderDetails) { ///本次预发货数量 VmiPullOrderDetailInfo orderDetailInfo = vmiPullOrderDetailInfos.FirstOrDefault(d => d.Id == vmiPullOrderDetail.Id); if (orderDetailInfo == null) { throw new Exception("MC:0x00000084");///数据错误 } VmiPullOrderInfo vmiPullOrderInfo = vmiPullOrderInfos.FirstOrDefault(d => d.Fid.GetValueOrDefault() == vmiPullOrderDetail.OrderFid.GetValueOrDefault()); if (vmiPullOrderInfo == null) { throw new Exception("MC:0x00000084");///数据错误 } if (vmiPullOrderDetail.RequiredPartQty.GetValueOrDefault() - vmiPullOrderDetail.AsnDraftQty.GetValueOrDefault() - vmiPullOrderDetail.AsnConfirmQty.GetValueOrDefault() - orderDetailInfo.AsnQty < 0) { throw new Exception("MC:0x00000497");///需求数量扣除草稿数量以及确认数量后不够本次预发货数量 } ///更新VMI拉动单草稿数量 @string.AppendLine("update [LES].[TT_MPM_VMI_PULL_ORDER_DETAIL] " + "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) + " + orderDetailInfo.AsnQty + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " + "where [ID] = " + orderDetailInfo.Id + ";"); ///预发货集合中是否已存在拉动单明细,存在则累加数量 VmiShippingPartInfo vmiShippingPartInfo = vmiShippingPartInfos.FirstOrDefault(d => d.Fid.GetValueOrDefault() == vmiPullOrderDetail.Fid.GetValueOrDefault()); if (vmiShippingPartInfo == null) { /// vmiShippingPartInfo = CreateVmiShippingPartInfo(loginUser); GetVmiShippingPartInfo(vmiPullOrderDetail, ref vmiShippingPartInfo); GetVmiShippingPartInfo(vmiPullOrderInfo, ref vmiShippingPartInfo); ///ASN_DRAFT_QTY,ASN草稿物料数量 vmiShippingPartInfo.AsnDraftQty = orderDetailInfo.AsnQty; @string.AppendLine(VmiShippingPartDAL.GetInsertSql(vmiShippingPartInfo)); } else { @string.AppendLine("update [LES].[TE_MPM_VMI_SHIPPING_PART] " + "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) + " + orderDetailInfo.AsnQty + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " + "where [ID] = " + vmiShippingPartInfo.Id + ";"); } } ///执行 using (TransactionScope trans = new TransactionScope()) { if (@string.Length > 0) { CommonDAL.ExecuteNonQueryBySql(@string.ToString()); } trans.Complete(); } }
/// <summary> /// /// </summary> /// <param name="info"></param> public static void GetVmiShippingPartInfo(ref VmiShippingPartInfo info) { }
public long InsertInfo(VmiShippingPartInfo info) { return(dal.Add(info)); }
/// <summary> /// VmiPullOrderDetailInfo -> VmiShippingPartInfo /// </summary> /// <param name="vmiPullOrderDetailInfo"></param> /// <param name="vmiShippingPartInfo"></param> public static void GetVmiShippingPartInfo(VmiPullOrderDetailInfo vmiPullOrderDetailInfo, ref VmiShippingPartInfo info) { if (vmiPullOrderDetailInfo == null) { return; } ///FID, info.Fid = vmiPullOrderDetailInfo.Fid; ///ORDER_FID,拉动单外键 info.OrderFid = vmiPullOrderDetailInfo.OrderFid; ///ORDER_CODE,拉动单号 info.OrderCode = vmiPullOrderDetailInfo.OrderCode; ///ROW_NO,行号 info.RowNo = vmiPullOrderDetailInfo.RowNo; ///SUPPLIER_NUM,供应商代码 info.SupplierNum = vmiPullOrderDetailInfo.SupplierNum; ///WORKSHOP_SECTION,工段 info.WorkshopSection = vmiPullOrderDetailInfo.WorkshopSection; ///LOCATION,工位 info.Location = vmiPullOrderDetailInfo.Location; ///PART_NO,物料号 info.PartNo = vmiPullOrderDetailInfo.PartNo; ///PART_VERSION,物料版本 info.PartVersion = vmiPullOrderDetailInfo.PartVersion; ///PART_CNAME,物料中文描述 info.PartCname = vmiPullOrderDetailInfo.PartCname; ///PART_ENAME,物料英文描述 info.PartEname = vmiPullOrderDetailInfo.PartEname; ///MEASURING_UNIT_NO,单位 info.MeasuringUnitNo = vmiPullOrderDetailInfo.MeasuringUnitNo; ///PACKAGE,单包装数量 info.Package = vmiPullOrderDetailInfo.Package; ///PACKAGE_MODEL,包装编号 info.PackageModel = vmiPullOrderDetailInfo.PackageModel; ///REQUIRED_PACKAGE_QTY,需求包装数 info.RequiredPackageQty = vmiPullOrderDetailInfo.RequiredPackageQty; ///REQUIRED_PART_QTY,需求物料数量 info.RequiredPartQty = vmiPullOrderDetailInfo.RequiredPartQty; ///COMMENTS,备注 info.Comments = vmiPullOrderDetailInfo.Comments; }
/// <summary> /// 发货(提交) /// </summary> /// <param name="rowsKeyValues"></param> /// <param name="loginUser"></param> /// <returns></returns> public bool ReleaseInfos(List <string> rowsKeyValues, string loginUser) { if (rowsKeyValues.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } List <VmiShippingPartInfo> vmiShippingPartInfos = new List <VmiShippingPartInfo>(); foreach (var rowsKeyValue in rowsKeyValues) { string[] keyValues = rowsKeyValue.Split(new char[] { '^' }, StringSplitOptions.RemoveEmptyEntries); if (keyValues.Length == 0) { throw new Exception("MC:0x00000084");///数据错误 } if (keyValues.Length == 1) { throw new Exception("MC:0x00000496");///预发货数量不能为空 } VmiShippingPartInfo vmiShippingPartInfo = new VmiShippingPartInfo(); vmiShippingPartInfo.Id = Convert.ToInt64(keyValues[0]); vmiShippingPartInfo.AsnConfirmQty = Convert.ToDecimal(keyValues[1]); vmiShippingPartInfos.Add(vmiShippingPartInfo); } List <VmiShippingPartInfo> vmiShippingParts = dal.GetList("[ID] in (" + string.Join(",", vmiShippingPartInfos.Select(d => d.Id).ToArray()) + ")", string.Empty); if (vmiShippingParts.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } List <VmiPullOrderInfo> vmiPullOrderInfos = new VmiPullOrderDAL().GetList("" + "[FID] in ('" + string.Join("','", vmiShippingParts.Select(d => d.OrderFid.GetValueOrDefault().ToString()).ToArray()) + "') and " + "[ORDER_STATUS] <> " + (int)PullOrderStatusConstants.Released + "", string.Empty); if (vmiPullOrderInfos.Count > 0) { throw new Exception("MC:0x00000378");///状态为已发布时才能进行发货操作 } ///TODO:此时对应购物车中的相关数据是否需要清理 ///预执行SQL脚本 StringBuilder @string = new StringBuilder(); ///根据零件类、拉动模式等条件分组 var vmiShippingPartBoxs = vmiShippingParts. GroupBy(d => new { d.PartBoxCode, d.PullMode, d.RouteCode, d.Plant, d.SWmNo, d.SZoneNo, d.TWmNo, d.TZoneNo, d.TDock }). Select(d => new { d.Key }).ToList(); ///获取零件仓储信息集合 List <PartsStockInfo> partsStockInfos = new PartsStockDAL().GetList("[PART_NO] in ('" + string.Join("','", vmiShippingParts.Select(d => d.PartNo).ToArray()) + "')", string.Empty); ///发布VMI出库单时实发数量等于需求数量 string release_vmi_output_actual_qty_equals_required = new ConfigDAL().GetValueByCode("RELEASE_VMI_OUTPUT_ACTUAL_QTY_EQUALS_REQUIRED"); ///遍历零件类 foreach (var vmiShippingPartBox in vmiShippingPartBoxs) { /// List <VmiShippingPartInfo> partInfos = vmiShippingParts.Where(d => d.PartBoxCode == vmiShippingPartBox.Key.PartBoxCode && d.PullMode == vmiShippingPartBox.Key.PullMode && d.RouteCode == vmiShippingPartBox.Key.RouteCode && d.Plant == vmiShippingPartBox.Key.Plant && d.SWmNo == vmiShippingPartBox.Key.SWmNo && d.SZoneNo == vmiShippingPartBox.Key.SZoneNo && d.TWmNo == vmiShippingPartBox.Key.TWmNo && d.TZoneNo == vmiShippingPartBox.Key.TZoneNo && d.TDock == vmiShippingPartBox.Key.TDock).ToList(); if (partInfos.Count == 0) { throw new Exception("MC:0x00000084");///数据错误 } /// VmiOutputInfo vmiOutputInfo = VmiOutputBLL.CreateVmiOutputInfo(loginUser); ///OUTPUT_NO,出库单号 vmiOutputInfo.OutputNo = new SeqDefineDAL().GetCurrentCode("VMI_OUTPUT_NO"); ///ASN_NO,ASN编号,TODO:目前以是否写入了ASN_NO作为区别是否编辑ASN的分类,后续考虑增加字段ASN_FLAG? vmiOutputInfo.AsnNo = vmiOutputInfo.OutputNo; ///WM_NO,仓库编码 vmiOutputInfo.WmNo = vmiShippingPartBox.Key.SWmNo; ///ZONE_NO,存贮区编码 vmiOutputInfo.ZoneNo = vmiShippingPartBox.Key.SZoneNo; ///T_WM_NO,目标仓库代码 vmiOutputInfo.TWmNo = vmiShippingPartBox.Key.TWmNo; ///T_ZONE_NO,目标存储区代码 vmiOutputInfo.TZoneNo = vmiShippingPartBox.Key.TZoneNo; ///T_DOCK,目标道口代码 vmiOutputInfo.TDock = vmiShippingPartBox.Key.TDock; ///PART_BOX_CODE,零件类代码 vmiOutputInfo.PartBoxCode = vmiShippingPartBox.Key.PartBoxCode; ///ROUTE,送货路径 vmiOutputInfo.Route = vmiShippingPartBox.Key.RouteCode; ///PULL_MODE,拉动方式 vmiOutputInfo.PullMode = vmiShippingPartBox.Key.PullMode; ///OUTPUT_TYPE,出库类型 vmiOutputInfo.OutputType = (int)VmiOutputTypeConstants.PullingOutbound; ///SEND_TIME,发送时间 vmiOutputInfo.SendTime = DateTime.Now; ///STATUS,出库单状态 vmiOutputInfo.Status = (int)WmmOrderStatusConstants.Published; /// @string.AppendLine(VmiOutputDAL.GetInsertSql(vmiOutputInfo)); ///行号 int rowNo = 0; foreach (var partInfo in partInfos) { VmiShippingPartInfo shippingPartInfo = vmiShippingPartInfos.FirstOrDefault(d => d.Id == partInfo.Id); if (shippingPartInfo == null) { throw new Exception("MC:0x00000084");///数据错误 } if (partInfo.AsnDraftQty.GetValueOrDefault() < shippingPartInfo.AsnConfirmQty.GetValueOrDefault()) { throw new Exception("MC:0x00000501");///发货数量不能超过预发货数量 } ///获取对应零件仓储信息 PartsStockInfo partsStockInfo = partsStockInfos.FirstOrDefault(d => d.WmNo == partInfo.TWmNo && d.ZoneNo == partInfo.TZoneNo && d.PartNo == partInfo.PartNo && d.SupplierNum == partInfo.SupplierNum); if (partsStockInfo == null) { throw new Exception("MC:0x00000451");///物料仓储信息错误 } ///页面提交来的发货数量 partInfo.RequiredPartQty = shippingPartInfo.AsnConfirmQty; /// VmiOutputDetailInfo vmiOutputDetailInfo = VmiOutputDetailBLL.CreateVmiOutputDetailInfo(loginUser); ///ROW_NO,行号 vmiOutputDetailInfo.RowNo = ++rowNo; VmiOutputDetailBLL.GetVmiOutputDetailInfo(partInfo, ref vmiOutputDetailInfo); VmiOutputDetailBLL.GetVmiOutputDetailInfo(vmiOutputInfo, ref vmiOutputDetailInfo); VmiOutputDetailBLL.GetVmiOutputDetailInfo(partsStockInfo, ref vmiOutputDetailInfo); VmiOutputDetailBLL.GetVmiOutputDetailInfo(ref vmiOutputDetailInfo); if (!string.IsNullOrEmpty(release_vmi_output_actual_qty_equals_required) && release_vmi_output_actual_qty_equals_required.ToLower() == "true") { ///ACTUAL_BOX_NUM,实际包装数 vmiOutputDetailInfo.ActualBoxNum = vmiOutputDetailInfo.RequiredBoxNum; ///ACTUAL_QTY,实际数量 vmiOutputDetailInfo.ActualQty = vmiOutputDetailInfo.RequiredQty; } @string.AppendLine(VmiOutputDetailDAL.GetInsertSql(vmiOutputDetailInfo)); /// string validFlagSql = string.Empty; if (partInfo.AsnDraftQty.GetValueOrDefault() == shippingPartInfo.AsnConfirmQty.GetValueOrDefault()) { validFlagSql = ",[VALID_FLAG] = 0"; } /// @string.AppendLine("update [LES].[TE_MPM_VMI_SHIPPING_PART] " + "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) - " + shippingPartInfo.AsnConfirmQty.GetValueOrDefault() + "" + validFlagSql + ",[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " + "where [ID] = " + shippingPartInfo.Id + ";"); /// @string.AppendLine("update [LES].[TT_MPM_VMI_PULL_ORDER_DETAIL] " + "set [ASN_DRAFT_QTY] = isnull([ASN_DRAFT_QTY],0) - " + shippingPartInfo.AsnConfirmQty.GetValueOrDefault() + "," + "[ASN_CONFIRM_QTY] = isnull([ASN_CONFIRM_QTY],0) + " + shippingPartInfo.AsnConfirmQty.GetValueOrDefault() + "," + "[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'" + loginUser + "' " + "where [FID] = N'" + partInfo.Fid.GetValueOrDefault() + "';"); } } /// using (var trans = new TransactionScope()) { if (!CommonDAL.ExecuteNonQueryBySql(@string.ToString())) { throw new Exception("MC:0x00000173");///操作失败 } trans.Complete(); } return(true); }