Esempio n. 1
0
        static void Main(string[] args)
        {
            // 获取最近结束并且允许发货的流程数据
            DataTable data = SqlHelper.ExecuteDataTableOa(@" select * from SJKeHuFaHuoShenQingView ");

            if (data.Rows.Count > 0)
            {
                var lists = SqlHelper.DataTableToModelList <KeHuFaHuoShenQingModel>(data);

                foreach (var item in lists)
                {
                    // 构造Json数据
                    var org = new OrganizationService().GetOrganizationByNumber(item.OrgNumber);
                    if (org != null)
                    {
                        var requestModel = new K3ApiUpdateRequestModel <CustomerUpdateFStatusModel>
                        {
                            Data = new K3ApiUpdateDataRequestModel <CustomerUpdateFStatusModel>
                            {
                                FNumber = org.FNumber,
                                Data    = new CustomerUpdateFStatusModel {
                                    FNumber = org.FNumber, FName = org.FName, FStatus = new BaseIdNameX {
                                        FID = "ZT01", FName = "使用"
                                    }
                                }
                            }
                        };

                        string postJson = SerializationHelper.ObjectToJson(requestModel);

                        // API插入到后台
                        K3ApiUpdateDataResponseModel response = new K3ApiService().Update("Customer", postJson);

                        // 写后台更改记录
                        SqlHelper.ExecuteNonQueryOa(@" insert into SJOAKeHuFaHuoShenQingLog(FlowId,FlowName,FlowDate,OrgNumber,Permission,OrgSourceStatus,OrgTargetStatus,Data,DataDesc,FItemID,FNumber,FStatus) 
                            values      (@FlowId,@FlowName,@FlowDate,@OrgNumber,@Permission,@OrgSourceStatus,@OrgTargetStatus,@Data,@DataDesc,@FItemID,@FNumber,@FStatus)"
                                                    , new SqlParameter[]
                        {
                            new SqlParameter("@FlowId", item.FlowId),
                            new SqlParameter("@FlowName", item.FlowName),
                            new SqlParameter("@FlowDate", item.FlowDate),
                            new SqlParameter("@OrgNumber", item.OrgNumber),
                            new SqlParameter("@Permission", item.Permission),
                            new SqlParameter("@OrgSourceStatus", org.FStatus),
                            new SqlParameter("@OrgTargetStatus", "ZT01 使用"),
                            new SqlParameter("@Data", response.Data),
                            new SqlParameter("@DataDesc", response.DataDesc),
                            new SqlParameter("@FItemID", response.FItemID),
                            new SqlParameter("@FNumber", response.FNumber),
                            new SqlParameter("@FStatus", response.FStatus)
                        });
                    }
                }
            }
        }
        private void InitCommand()
        {
            DirectorySelectBaseCommand = new DelegateCommand((obj) =>
            {
                // 导出目录选择
                System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();

                if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    HostConfig.HostValue = fbd.SelectedPath;
                    var result           = CommonService.SaveHostConfig(HostConfig);
                    if (result)
                    {
                        HostConfig = CommonService.GetHostConfig(Menu.ID, HostName, User.ID);
                    }
                }
            });

            ExportBaseCommand = new DelegateCommand((obj) =>
            {
                if (Directory.Exists(HostConfig.HostValue))
                {
                    ExportView view = new ExportView(Menu.ID, 3);// Menu.ID-SJExportViewTypedColumn中的ViewGroupId; 3 - 第几个radioButton被默认选中从1开始
                    //Export((type - 导出1 取消0, outputEntity 界面选中的radiobuttion 同上, checkBoxValue 选择分类导出的情况下,选择的类别和, orderedColumns 选择分类导出的情况下,选择类别的顺序列表)
                    (view.DataContext as ExportViewModel).Export((type, outputEntity, checkBoxValue, orderedColumns) =>
                    {
                        view.Close();
                        if (type == 1)
                        {
                            if (outputEntity == 3)
                            {
                                DataTable datatable = _service.GetSJBatchBomRequestDeliveryExportData(GeneralParameter.ParamBeginDate.Value, string.Join(",", orderedColumns));
                                if (datatable.Rows.Count > 0)
                                {
                                    ExportHelper.ExportDeliveryDataToExcel(GeneralParameter.ParamBeginDate.Value, datatable, HostConfig.HostValue, HostConfig.TypeDesciption + CommonService.GetQueryParameterValueString(GeneralParameter)
                                                                           , outputEntity, orderedColumns, true, "$$$发料单", true);
                                    MessageBox.Show("导出成功");
                                }
                                else
                                {
                                    MessageBox.Show($"【{GeneralParameter.ParamBeginDate.Value}】 没有可导出的数据");
                                }
                            }
                            else
                            {
                                DataTable datatable = _service.GeSJBatchBOMSummaryExportData(GeneralParameter.ParamBeginDate.Value);
                                if (datatable.Rows.Count > 0)
                                {
                                    ExportHelper.ExportDataTableToExcel(datatable, HostConfig.HostValue, "物料需求" + CommonService.GetQueryParameterValueString(GeneralParameter), outputEntity, null, false, "物料需求", false);
                                    MessageBox.Show("导出成功");
                                }
                                else
                                {
                                    MessageBox.Show($"【{GeneralParameter.ParamBeginDate.Value}】 没有可导出的数据");
                                }
                            }
                        }
                    });
                    view.ShowDialog();
                }
                else
                {
                    MessageBox.Show("目录不存在,请先选择导出的目录");
                    DirectorySelectBaseCommand.Execute(null);
                }
                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "ExportBaseCommand", ActionDesc = HostConfig.TypeDesciption + HostConfig.TypeId.ToString(), UserId = User.ID, MainMenuId = Menu.ID, PKId = -1, HostName = HostName
                });
            });

            MaterialRequestGenerateCommand = new DelegateCommand((obj) =>
            {
                _service.SplitBatchBomRequest(GeneralParameter.ParamBeginDate.Value);
                QueryBaseCommand.Execute(null);
                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "MaterialRequestGenerateCommand", ActionDesc = "生成物料需求", UserId = User.ID, MainMenuId = Menu.ID, PKId = -1, HostName = HostName
                });
            });

            WorkshopInventoryRefreshCommand = new DelegateCommand((obj) =>
            {
                BatchBomRequestSummaryLists.Clear();
                _service.RefreshWorkshopInventoryQty(CommonService.GetSqlWhereString(Filter));
                QueryBaseCommand.Execute(null);
                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "WorkshopInventoryRefreshCommand", ActionDesc = "获取现场库存", UserId = User.ID, MainMenuId = Menu.ID, PKId = -1, HostName = HostName
                });
            });

            QueryBaseCommand = new DelegateCommand((obj) =>
            {
                BatchBomRequestSummaryLists.Clear();
                InventoryLists.Clear();
                DeliverTransferLists.Clear();
                _service.GetBatchBomRequestDetailSummaryLists(CommonService.GetSqlWhereString(Filter)).ForEach(x => BatchBomRequestSummaryLists.Add(x));
            });

            DeliverCommand = new DelegateCommand((obj) =>
            {
                if (BatchBomRequestSummarySelectedItem != null)
                {
                    if (InventorySelectedItem != null && InventorySelectedItem.TransferingWeight > 0 && InventorySelectedItem.TransferingWeight <= InventorySelectedItem.TotalWeight)
                    {
                        if (_service.InsertDeliverTransfer(InventorySelectedItem))
                        {
                            DeliverTransferLists.Clear();
                            _service.GetDeliverTransferLists(BatchBomRequestSummarySelectedItem).ForEach(x => DeliverTransferLists.Add(x));
                            BatchBomRequestSummarySelectedItem.QtyTransfering = DeliverTransferLists.Where(x => string.IsNullOrEmpty(x.TransferedBillNo)).Sum(x => x.TransferingWeight).Value;
                        }
                    }
                    else
                    {
                        MessageBox.Show("发料数量必须大于0且小于总重量");
                    }
                }
                else
                {
                    MessageBox.Show("先选择主表行数据");
                }
                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "DeliverCommand", ActionDesc = "发料", UserId = User.ID, MainMenuId = Menu.ID, PKId = -1, HostName = HostName
                });
            });

            DeliveryDeleteCommand = new DelegateCommand((obj) =>
            {
                int id = -1;
                if (BatchBomRequestSummarySelectedItem != null)
                {
                    var selectedLists = ((obj as DataGrid).SelectedItems).Cast <MaterialTimelyInventoryModel>().ToList();
                    if (selectedLists.Count == 1)
                    {
                        var model = selectedLists.First();
                        if (_service.DeleteDeliverTransfer(model.Id))
                        {
                            id = model.Id;
                            DeliverTransferLists.Clear();
                            _service.GetDeliverTransferLists(BatchBomRequestSummarySelectedItem).ForEach(x => DeliverTransferLists.Add(x));
                            BatchBomRequestSummarySelectedItem.QtyTransfering = DeliverTransferLists.Sum(x => x.TransferingWeight).Value;
                        }
                    }
                    else
                    {
                        MessageBox.Show("每次必须选中且删除一行记录");
                    }
                }
                else
                {
                    MessageBox.Show("先选择主表行数据");
                }
                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "DeliveryDeleteCommand", ActionDesc = "删除发料", UserId = User.ID, MainMenuId = Menu.ID, PKId = id, HostName = HostName
                });
            });

            TransferDeleteCommand = new DelegateCommand((obj) =>
            {
                if (BatchBomRequestSummarySelectedItem != null)
                {
                    var selectedLists = ((obj as DataGrid).SelectedItems).Cast <MaterialTimelyInventoryModel>().ToList();
                    if (selectedLists.Count == 1)
                    {
                        var model = selectedLists.First();
                        if (!_service.ExistsK3Bill(model.TransferedBillNo))
                        {
                            if (_service.DeleteDeliverTransfer(model.TransferedBillNo))
                            {
                                //重新加载主表格
                                QueryBaseCommand.Execute(null);
                            }
                        }
                        else
                        {
                            MessageBox.Show("请先将选择的调拨单号,在K3里面删除");
                        }
                    }
                    else
                    {
                        MessageBox.Show("每次必须选中且删除一行记录");
                    }
                }
                else
                {
                    MessageBox.Show("先选择主表行数据");
                }
                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "TransferDeleteCommand", ActionDesc = "删除调拨单", UserId = User.ID, MainMenuId = Menu.ID, PKId = -1, HostName = HostName
                });
            });

            SelectionChangedCommand = new DelegateCommand((obj) =>
            {
                if (BatchBomRequestSummarySelectedItem == null)
                {
                    return;
                }
                InventoryLists.Clear();
                _service.GetGetMaterialTimelyInventoryLists(BatchBomRequestSummarySelectedItem.MaterialId, BatchBomRequestSummarySelectedItem.ProductionDate, BatchBomRequestSummarySelectedItem.BatchTypeId, BatchBomRequestSummarySelectedItem.StockId).ForEach(x => InventoryLists.Add(x));
                DeliverTransferLists.Clear();
                _service.GetDeliverTransferLists(BatchBomRequestSummarySelectedItem).ForEach(x => DeliverTransferLists.Add(x));
            });

            BatchNoQtyK3InsertCommand = new DelegateCommand((obj) =>
            {
                // 获取当天所有已发料未调拨数据  var selectedLists = ((obj as DataGrid).SelectedItems).Cast<MaterialTimelyInventoryModel>().ToList();
                var selectedLists = _service.GetK3InsertData(GeneralParameter.ParamBeginDate.Value);
                if (selectedLists.Count > 0)
                {
                    var emp = K3ApiFKService.GetEmployeeByUserName(User.UserName);
                    if (emp != null)
                    {
                        TransferMainModel main = new TransferMainModel
                        {
                            FBillerID = new BaseNumberNameModelX {
                                FNumber = emp.FName, FName = emp.FName
                            },
                            FFManagerID = emp, // BaseNumberNameModelX { FNumber = "111", FName = "吴强" },
                            FSManagerID = emp, // new BaseNumberNameModelX { FNumber = "111", FName = "吴强" },
                            FRefType    = new BaseNumberNameModelX {
                                FNumber = "01", FName = "成本调拨"
                            },
                            FClassTypeID = 41,
                            FDate        = DateTime.Now.Date.ToString("yyyy-MM-dd")
                        };

                        List <TransferSonModel> sons = new List <TransferSonModel>();

                        foreach (MaterialTimelyInventoryModel item in selectedLists)
                        {
                            sons.Add(new TransferSonModel
                            {
                                FItemID = new BaseNumberNameModelX {
                                    FNumber = item.MaterialNumber, FName = item.MaterialName
                                },                                                                                              // K3ApiFKService.GetMaterialById
                                FChkPassItem = new BaseNumberNameModelX {
                                    FNumber = "Y", FName = "是"
                                },
                                FPlanMode = new BaseNumberNameModelX {
                                    FNumber = "MTS", FName = "MTS计划模式"
                                },
                                FDCStockID1 = new BaseNumberNameModelX {
                                    FNumber = item.ParentStockNumber, FName = item.ParentStockName
                                },                                                                                                        //K3ApiFKService.GetStockById(item.ParentStockId),
                                FSCStockID1 = new BaseNumberNameModelX {
                                    FNumber = item.StockNumber, FName = item.StockName
                                },
                                FUnitID = new BaseNumberNameModelX {
                                    FNumber = "kg", FName = "kg"
                                },
                                FAuxQty  = item.TransferingWeight.Value,
                                FQty     = item.TransferingWeight.Value,
                                FBatchNo = item.BatchNo,
                            });
                        }
                        var requestModel = new K3ApiInsertRequestModel <TransferMainModel, TransferSonModel>()
                        {
                            Data = new K3ApiInsertDataRequestModel <TransferMainModel, TransferSonModel>()
                            {
                                Page1 = new List <TransferMainModel> {
                                    main
                                },
                                Page2 = sons
                            }
                        };

                        string postJson = JsonHelper.ObjectToJson(requestModel);
                        K3ApiInsertResponseModel response = K3ApiService.Insert("Transfer", postJson);
                        if (response.StatusCode == 200)
                        {
                            //double totalQty = selectedLists.Sum(x => x.TransferingWeight).Value;
                            string ids = string.Join(",", selectedLists.Select(x => x.Id));
                            if (_service.UpdateBillNo(ids, response.Data.BillNo))
                            {
                                QueryBaseCommand.Execute(null);
                            }
                            else
                            {
                                MessageBox.Show($"插入K3调拨单,更新发料表失败,请联系管理员");
                            }
                        }
                        else
                        {
                            MessageBox.Show($"{response.Message}");
                        }
                    }
                    else
                    {
                        MessageBox.Show($"【{User.UserName}】 在K3里面不存在,或不一致");
                    }
                }
                else
                {
                    MessageBox.Show($"【{GeneralParameter.ParamBeginDate.Value}】 没有已发料且未调拨的数据");
                }

                CommonService.WriteActionLog(new ActionOperationLogModel {
                    ActionName = "BatchNoQtyK3InsertCommand", ActionDesc = "生成调拨单", UserId = User.ID, MainMenuId = Menu.ID, PKId = -1, HostName = HostName
                });
            });
        }
        private void InitCommand()
        {
            ICStockBill29ImportCommand = new DelegateCommand((obj) =>
            {
                System.Windows.Forms.OpenFileDialog opd = new System.Windows.Forms.OpenFileDialog();
                opd.Title  = "选择文件";
                opd.Filter = "EXCEL文件|*.xls*";
                if (opd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    CommonService.ImportExcelToDatabaseTable(opd.FileName, "SJICStockBill29ExcelTemplate");
                    ImportFileFullName = opd.FileName;
                    // 数据验证后加载验证模型列表到表格
                    CheckedICStockBill29VerificationLists.Clear();
                    _stockService.GetICStockBill29ImportVerificationLists().ForEach(x => CheckedICStockBill29VerificationLists.Add(x));
                }
                opd.Dispose();
            });

            ICStockBill1ImportCommand = new DelegateCommand((obj) =>
            {
                System.Windows.Forms.OpenFileDialog opd = new System.Windows.Forms.OpenFileDialog();
                opd.Title  = "选择文件";
                opd.Filter = "EXCEL文件|*.xls*";
                if (opd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    CommonService.ImportExcelToDatabaseTable(opd.FileName, "SJICStockBill1ExcelTemplate");
                    ImportFileFullName1 = opd.FileName;
                    // 数据验证后加载验证模型列表到表格
                    CheckedICStockBill1VerificationLists.Clear();
                    _stockService.GetICStockBill1ImportVerificationLists().ForEach(x => CheckedICStockBill1VerificationLists.Add(x));
                }
                opd.Dispose();
            });

            ICStockBill29InsertK3Command = new DelegateCommand((obj) =>
            {
                if (CheckedICStockBill29VerificationLists.Count == 0)
                {
                    MessageBox.Show("请先导入Excel模板数据");
                }
                else if (CheckedICStockBill29VerificationLists.Where(m => !m.IsPassed).Count() > 0)
                {
                    MessageBox.Show("必须全部数据验证成功才允许导入,请修改Excel数据");
                }
                else
                {
                    var billnos = CheckedICStockBill29VerificationLists.GroupBy(m => m.BillNo);
                    foreach (var item in billnos)
                    {
                        var data  = CheckedICStockBill29VerificationLists.Where(m => m.BillNo == item.Key);
                        var first = data.First();
                        var main  = new MiscellaneousDeliveryMainModel()
                        {
                            Fuse           = "研发领料",
                            FHeadSelfB0939 = first.BillNo,
                            FDate          = DateTime.Now.Date.ToShortDateString(),
                            FDeptID        = new BaseNumberNameModelX()
                            {
                                FNumber = first.DeptFNumber, FName = first.DeptFName
                            },
                            FBillerID = new BaseNumberNameModelX()
                            {
                                FNumber = "何科威", FName = "何科威"
                            },
                            // FFManagerID = new BaseNumberNameModel() { FNumber = "1033", FName = "付志刚" },  领料人
                            FFManagerID = new BaseNumberNameModelX()
                            {
                                FNumber = first.FFManagerFNumber, FName = first.FFManagerName
                            },
                            FSManagerID = new BaseNumberNameModelX()
                            {
                                FNumber = "1033", FName = "付志刚"
                            }
                        };

                        var sons = new List <MiscellaneousDeliverySonModel>();
                        foreach (ICStockBill29ImportVerificationModel entry in data)
                        {
                            var son = new MiscellaneousDeliverySonModel()
                            {
                                FItemID = new BaseNumberNameModelX()
                                {
                                    FNumber = entry.MaterialFNumber, FName = entry.MaterialFName
                                },
                                FUnitID = new BaseNumberNameModelX()
                                {
                                    FNumber = "kg", FName = "kg"
                                },
                                FDCStockID1 = new BaseNumberNameModelX()
                                {
                                    FNumber = entry.StockFNumber, FName = entry.StockFName
                                },
                                FDCSPID = new BaseNumberNameModelX()
                                {
                                    FNumber = entry.StockPlaceFNumber, FName = entry.StockPlaceFName
                                },
                                FPlanMode = new BaseNumberNameModelX()
                                {
                                    FNumber = "MTS", FName = "MTS计划模式"
                                },
                                FQty            = entry.Quantity,
                                FScanQty        = entry.Quantity,
                                Fauxqty         = entry.Quantity,
                                FEntrySelfB0947 = entry.BrandName, //"品牌",
                                FEntrySelfB0948 = entry.CaseName,  //"案子",
                                FBatchNo        = entry.BatchNo,
                                FNote           = entry.FNote
                            };
                            sons.Add(son);
                        }

                        var requestModel = new K3ApiInsertRequestModel <MiscellaneousDeliveryMainModel, MiscellaneousDeliverySonModel>()
                        {
                            Data = new K3ApiInsertDataRequestModel <MiscellaneousDeliveryMainModel, MiscellaneousDeliverySonModel>()
                            {
                                Page1 = new List <MiscellaneousDeliveryMainModel> {
                                    main
                                },
                                Page2 = sons
                            }
                        };

                        string postJson = JsonHelper.ObjectToJson(requestModel);
                        K3ApiInsertResponseModel response = new K3ApiService("Miscellaneous_Delivery").Insert(postJson);
                        if (response.StatusCode == 200)
                        {
                            K3InsertResponseData.BillNo      += response.Data.BillNo + "\t";
                            K3InsertResponseData.BillInterID += response.Data.BillInterID + "\t";
                        }
                        else
                        {
                            MessageBox.Show($"{response.Message}");
                            return;
                        }
                    }
                    MessageBox.Show($"导入成功");
                }
            });

            ICStockBill1InsertK3Command = new DelegateCommand((obj) =>
            {
                if (CheckedICStockBill1VerificationLists.Count == 0)
                {
                    MessageBox.Show("请先导入Excel模板数据");
                }
                else if (CheckedICStockBill1VerificationLists.Where(m => !m.IsPassed).Count() > 0)
                {
                    MessageBox.Show("必须全部数据验证成功才允许导入,请修改Excel数据");
                }
                else
                {
                }
            });
        }
        private void InitCommand()
        {
            AllCheckCommand = new DelegateCommand((obj) =>
            {
                if (IsCheckedAll)
                {
                    foreach (var item in MaterialPlanSeorderLists)
                    {
                        if (!item.IsLocked)
                        {
                            item.IsChecked = true;
                        }
                    }
                }
                else
                {
                    foreach (var item in MaterialPlanSeorderLists)
                    {
                        if (!item.IsLocked)
                        {
                            item.IsChecked = false;
                        }
                    }
                }
            });

            QueryCommand = new DelegateCommand((obj) =>
            {
                MaterialPlanSeOrderFullLists.Clear();
                MaterialPlanSeOrderFullLists = _materialPlanInventoryService.GetMaterialPlanSeorderFullLists(Filter.ParamBeginDate, Filter.ParamEndDate);

                MaterialPlanSeorderLists.Clear();
                MaterialPlanSeOrderFullLists.GroupBy(x => new { x.FCustName, x.FEmpName, x.FDeptName, x.FDate, x.FInterID, x.FBillNo })
                .Select(x => new MaterialPlanSeOrderShowModel {
                    FCustName = x.Key.FCustName, FEmpName = x.Key.FEmpName, FDeptName = x.Key.FDeptName, FDate = x.Key.FDate, FInterID = x.Key.FInterID, FBillNo = x.Key.FBillNo
                })
                .ToList().ForEach(m => MaterialPlanSeorderLists.Add(m));
                MaterialPlanSeOrderEntryLists.Clear();

                _materialPlanInventoryService.DeleteMaterialPlanInventory();
                MaterialPlanInventoryLists.Clear();
            });

            UnLockCommand = new DelegateCommand((obj) =>
            {
                // 将列表的锁定状态归0并且清空原料锁定总数
                MaterialPlanSeOrderEntryLists.Clear();
                foreach (var item in MaterialPlanSeorderLists)
                {
                    item.IsChecked = false;
                    item.IsLocked  = false;
                }
                _materialPlanInventoryService.DeleteMaterialPlanInventory();
                MaterialPlanInventoryLists.Clear();
            });

            CalculateCommand = new DelegateCommand((obj) =>
            {
                //var data = MaterialPlanSeorderLists.Where(x => !x.IsLocked && x.IsChecked).Select(x => x.FDetailId);
                if (MaterialPlanSeOrderEntryLists.Count() > 0)
                {
                    // 将选定计算行,锁定数据
                    string ids = string.Join(",", MaterialPlanSeOrderEntryLists.Select(x => x.FDetailId));
                    MaterialPlanInventoryLists.Clear();
                    _materialPlanInventoryService.GetMaterialPlanInventoryLists(ids).OrderByDescending(x => x.IsVisible).ToList().ForEach(x => MaterialPlanInventoryLists.Add(x));
                    MaterialPlanSeOrderEntryLists.Clear();
                    foreach (var item in MaterialPlanSeorderLists)
                    {
                        if (!item.IsLocked && item.IsChecked)
                        {
                            item.IsLocked = true;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("没有选择最新的数据");
                }
            });

            MouseLeftClickCommand = new DelegateCommand((obj) =>
            {
                MaterialPlanSeOrderShowModel dr = (obj as DataGridRow).Item as MaterialPlanSeOrderShowModel;
                if (!dr.IsLocked)
                {
                    dr.IsChecked = !dr.IsChecked;
                    var cz       = MaterialPlanSeOrderEntryLists.Any(x => x.FBillNo == dr.FBillNo);
                    if (cz)
                    {
                        for (int i = 0; i < MaterialPlanSeOrderEntryLists.Count; i++)
                        {
                            if (MaterialPlanSeOrderEntryLists[i].FBillNo == dr.FBillNo)
                            {
                                MaterialPlanSeOrderEntryLists.RemoveAt(i);
                                i--;
                            }
                        }
                    }
                    else
                    {
                        var entries = MaterialPlanSeOrderFullLists.Where(x => x.FBillNo == dr.FBillNo).Select(x => new MaterialPlanSeOrderEntryShowModel
                        {
                            FBillNo = x.FBillNo, FInterID = x.FInterID, FEntryID = x.FEntryID, FDetailId = x.FDetailId, DeliveryDate = x.DeliveryDate, FitemId = x.FitemId, FName = x.FName, FQty = x.FQty
                        });
                        foreach (var item in entries)
                        {
                            MaterialPlanSeOrderEntryLists.Add(item);
                        }
                    }
                }
            });

            MouseLeftClickCommand1 = new DelegateCommand((obj) =>
            {
                //MaterialBomModel dr = (obj as DataGridRow).Item as MaterialBomModel;
                //dr.IsChecked = !dr.IsChecked;
            });

            ImportCommand = new DelegateCommand((obj) =>
            {
                StringBuilder sb = new StringBuilder();
                //文件选择窗口
                System.Windows.Forms.OpenFileDialog opd = new System.Windows.Forms.OpenFileDialog();
                opd.Title = "选择文件";
                //第一个参数是名称,随意取,第二个是模式匹配, 多个也是用“|”分割
                opd.Filter = "EXCEL文件|*.xls*";

                if (opd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    ImportFileFullName   = opd.FileName;
                    DataTable dataTable1 = new FileHelper().ConvertExcelToDataTable(opd.FileName, true);
                    DataTable dataTable2 = _materialPlanInventoryService.GetMaterialBomLists();

                    var query1 = from a in dataTable1.AsEnumerable()
                                 join b in dataTable2.AsEnumerable()
                                 on a.Field <string>("物料代码") equals b.Field <string>("Number")
                                 into temp
                                 from tt in temp.DefaultIfEmpty()
                                 select new MaterialBomModel
                    {
                        Seq      = Convert.ToInt32(a.Field <string>("Seq")),
                        Number   = a.Field <string>("物料代码"),
                        ItemName = tt == null ? "" : tt.Field <string>("ItemName"),
                        BomCount = tt == null ? 0 : tt.Field <int>("BomCount"),
                        ItemId   = tt == null ? 0 : tt.Field <int>("ItemId")
                    };
                    MaterialBomLists.Clear();
                    MaterialBomLists = new ObservableCollection <MaterialBomModel>(query1);
                }
                opd.Dispose();
            });

            PurchaseRequisitionImportCommand = new DelegateCommand((obj) =>
            {
                StringBuilder sb = new StringBuilder();
                //文件选择窗口
                System.Windows.Forms.OpenFileDialog opd = new System.Windows.Forms.OpenFileDialog();
                opd.Title = "选择文件";
                //第一个参数是名称,随意取,第二个是模式匹配, 多个也是用“|”分割
                opd.Filter = "EXCEL文件|*.xls*";

                if (opd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    ImportFileFullName1 = opd.FileName;

                    // 读取Excel内容到导入Model
                    DataTable dataTable1 = new FileHelper().ConvertExcelToDataTable(opd.FileName, true);

                    // 读取数据库底表,跟上述excel数据做左连接来验证哪些是有合法的
                    DataTable dataTable2 = CommonService.GetAllItems();

                    var query1 = from a in dataTable1.AsEnumerable()
                                 join b in dataTable2.AsEnumerable()
                                 on a.Field <string>("物料代码") equals b.Field <string>("FNumber")
                                 into temp
                                 from tt in temp.DefaultIfEmpty()
                                 select new PurchaseRequisitionImportVerificationModel
                    {
                        Seq      = Convert.ToInt32(a.Field <string>("Seq")),
                        FNumber  = a.Field <string>("物料代码"),
                        Quantity = Convert.ToDouble(a.Field <string>("数量")),
                        FName    = tt == null ? "" : tt.Field <string>("FName"),
                        SystemId = tt == null ? 0 : Convert.ToInt32(tt["FItemID"]),
                        IsPassed = tt == null || string.IsNullOrEmpty(a.Field <string>("物料代码")) || Convert.ToDouble(a.Field <string>("数量")) <= 0 ? false : true
                    };
                    CheckedPurchaseRequisitionMaterialLists.Clear();
                    CheckedPurchaseRequisitionMaterialLists = new ObservableCollection <PurchaseRequisitionImportVerificationModel>(query1);
                }
                opd.Dispose();
            });

            PurchaseRequisitionInsertK3Command = new DelegateCommand((obj) =>
            {
                MessageBoxResult result = System.Windows.MessageBox.Show("验证失败的数据将会被过滤,是否继续?", "【温馨提示】", MessageBoxButton.YesNo);
                if (result == MessageBoxResult.Yes)
                {
                    var sons = new List <PurchaseRequisitionSonModel>();
                    var ss   = CheckedPurchaseRequisitionMaterialLists.AsQueryable().Where(x => x.IsPassed);
                    var emp  = _employeeLists.Where(m => m.FName == User.UserName).FirstOrDefault();
                    foreach (var item in ss)
                    {
                        var refSource = _purchaseRequisitionICItemLists.Where(m => m.FNumber == item.FNumber).FirstOrDefault();
                        if (refSource == null)
                        {
                            MessageBox.Show($" 此物料{item.FNumber}在t_icitem中不存在,请联系管理员");
                            return;
                        }
                        var son = new PurchaseRequisitionSonModel()
                        {
                            FItemID = new BaseNumberNameModel()
                            {
                                FNumber = refSource.FNumber, FName = refSource.FName
                            },
                            FLeadTime   = refSource.FFixLeadTime, //这个字段是根据FNumber带出来的,本身表里面没有是不是不用传递参数?
                            FAPurchTime = DateTime.Now.Date.ToString("yyyy-MM-dd"),
                            FFetchTime  = DateTime.Now.Date.AddDays(refSource.FFixLeadTime).ToString("yyyy-MM-dd"),
                            FAuxPropID  = new BaseNumberNameModel()
                            {
                                FNumber = "", FName = ""
                            },
                            FUnitID     = _measureUnitLists.Where(m => m.FId == refSource.FUnitID).FirstOrDefault(), // FUnitID = new BaseNumberNameModel() { FNumber = "kg", FName = "kg" },
                            FBomInterID = new BaseNumberNameModel()
                            {
                                FNumber = "", FName = ""
                            },
                            FSupplyID = new BaseNumberNameModel()
                            {
                                FNumber = "", FName = ""
                            },
                            FPlanMode = new BaseNumberNameModel()
                            {
                                FNumber = "MTS", FName = "MTS计划模式"
                            },

                            //FItemID = new BaseNumberNameModel() { FNumber = "YL.SC.RJ.00825", FName = "110" },
                            //FAuxPropID = new BaseNumberNameModel() { FNumber = "", FName = "" },
                            //FUnitID = new BaseNumberNameModel() { FNumber = "kg", FName = "kg" },
                            //FBomInterID = new BaseNumberNameModel() { FNumber = "", FName = "" },
                            //FSupplyID = new BaseNumberNameModel() { FNumber = "", FName = "" },
                            //FPlanMode = new BaseNumberNameModel() { FNumber = "MTS", FName = "MTS计划模式" },
                            FQty    = item.Quantity,
                            Fauxqty = item.Quantity,

                            FOrderQty         = 0,
                            Fuse              = "",
                            FNumber           = "",
                            FIsInquiry        = 0,
                            FMTONo            = "",
                            FMrpLockFlag      = 0,
                            FSourceEntryID    = 0,
                            FSourceInterId    = 0,
                            FSourceTranType   = 0,
                            FSourceBillNo     = "",
                            FPlanOrderInterID = 0,
                            FSecQty           = 0,
                            FSecCoefficient   = 0,
                            FSecUnitID        = null,
                            FAuxPropCls       = null
                        };
                        sons.Add(son);
                    }
                    PurchaseRequisitionMainModel main = new PurchaseRequisitionMainModel()
                    {
                        //FHeadSelfP0131 = new BaseNumberNameModel() { FNumber = "10.01", FName = "销售部" },

                        FHeadSelfP0131 = new BaseNumberNameModel()
                        {
                            FNumber = "FSQLX02", FName = "生产部"
                        },
                        FPlanCategory = new BaseNumberNameModel()
                        {
                            FNumber = "STD", FName = "标准"
                        },
                        FBizType = new BaseNumberNameModel()
                        {
                            FNumber = "FPLX01", FName = "外购入库"
                        },
                        FDeptID = new BaseNumberNameModel()
                        {
                            FNumber = "05.04.02", FName = "生产制造组"
                        },
                        //FCheckerID = new BaseNumberNameModel(),
                        FSelTranType = new BaseNumberNameModel()
                        {
                            FNumber = "81", FName = "销售订单"
                        },
                        FRequesterID = new BaseNumberNameModel()
                        {
                            FNumber = emp.FNumber, FName = emp.FName
                        },
                        Fdate              = DateTime.Now.Date.ToString("yyyy-MM-dd"),
                        FMRP               = 0,
                        FTranType          = 70,
                        FGeneratePurBudQty = 0,
                        Fnote              = "",
                        FNumber            = "",
                        FBillerID          = new BaseNumberNameModel {
                            FNumber = emp.FNumber, FName = emp.FName
                        }
                    };

                    var requestModel = new K3ApiInsertRequestModel <PurchaseRequisitionMainModel, PurchaseRequisitionSonModel>()
                    {
                        Data = new K3ApiInsertDataRequestModel <PurchaseRequisitionMainModel, PurchaseRequisitionSonModel>()
                        {
                            Page1 = new List <PurchaseRequisitionMainModel> {
                                main
                            },
                            Page2 = sons
                        }
                    };

                    string postJson = JsonHelper.ObjectToJson(requestModel);
                    K3ApiInsertResponseModel response = new K3ApiService("Purchase_Requisition").Insert(postJson);
                    K3InsertResponseData = response.Data;

                    MessageBox.Show($"{response.Message}");
                }
            });

            PurchaseRequisitionCheckBill1K3Command = new DelegateCommand((obj) =>
            {
                //var check = new K3ApiCheckBillRequestMode()
                //{
                //    Data = new K3ApiCheckBillDataRequestMode()
                //    {
                //        FBillNo = "POREQ005735",
                //        FChecker = "Administrator",
                //        FCheckDirection = 1,// 1 开启多级审核,预审
                //        FDealComment = ""
                //    }
                //};
                //string json = JsonHelper.ObjectToJson(check);
                //var checkRes = new K3ApiService("Purchase_Requisition").CheckBill(json);
            });

            PurchaseRequisitionCheckBill2K3Command = new DelegateCommand((obj) =>
            {
                if (string.IsNullOrEmpty(K3InsertResponseData.BillNo))
                {
                    MessageBox.Show("请生成或者输入单据号");
                    return;
                }

                var check = new K3ApiCheckBillRequestMode()
                {
                    Data = new K3ApiCheckBillDataRequestMode()
                    {
                        FBillNo         = K3InsertResponseData.BillNo,
                        FChecker        = User.UserName,
                        FCheckDirection = 2,// 1 开启多级审核,预审
                        FDealComment    = ""
                    }
                };
                string json  = JsonHelper.ObjectToJson(check);
                var checkRes = new K3ApiService("Purchase_Requisition").CheckBill(json);
                MessageBox.Show(checkRes.Message);
            });
        }
Esempio n. 5
0
 public K3ApiBaseViewModel()
 {
     K3ApiFKService = new K3ApiFKService();
     K3ApiService   = new K3ApiService();
 }