unit U_MachTaskList; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinWXI, cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, dxDateRanges, dxScrollbarAnnotations, Data.DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomView, cxGrid, Vcl.ComCtrls, Vcl.ToolWin, Data.Win.ADODB, Vcl.ExtCtrls, cxContainer, cxTextEdit, Vcl.StdCtrls, cxMaskEdit, cxButtonEdit, Vcl.Menus, cxButtons, dxSkinsDefaultPainters; type TfrmMachTaskList = class(TForm) cxGrid1: TcxGrid; tv1: TcxGridDBTableView; tv1pcid: TcxGridDBColumn; tv1CarNo: TcxGridDBColumn; tv1custName: TcxGridDBColumn; tv1OrderNo: TcxGridDBColumn; tv1C_name: TcxGridDBColumn; tv1c_color: TcxGridDBColumn; tv1taskDate: TcxGridDBColumn; tv1taskRollNum: TcxGridDBColumn; tv1taskQty: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; ToolBar3: TToolBar; Trefresh: TToolButton; Tconfirm: TToolButton; Tclose: TToolButton; DataSource1: TDataSource; ADOQueryList: TADOQuery; Panel1: TPanel; Label1: TLabel; pcid: TcxTextEdit; Label2: TLabel; machName: TcxTextEdit; ADOQueryTmp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryCard: TADOQuery; ADOQueryMach: TADOQuery; TBDel: TToolButton; tv1Column1: TcxGridDBColumn; tv1Column2: TcxGridDBColumn; tv1Column3: TcxGridDBColumn; tv1Column4: TcxGridDBColumn; ToolButton1: TToolButton; ToolButton2: TToolButton; procedure TcloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure TconfirmClick(Sender: TObject); procedure TrefreshClick(Sender: TObject); procedure pcidKeyPress(Sender: TObject; var Key: Char); procedure TBDelClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); private procedure initGrid(); public fcurMachId: string; end; var frmMachTaskList: TfrmMachTaskList; implementation uses U_dataLink, U_rtFun, U_globalVar; {$R *.dfm} procedure TfrmMachTaskList.FormCreate(Sender: TObject); begin cxgrid1.Align := alClient; end; procedure TfrmMachTaskList.TBDelClick(Sender: TObject); begin try with ADOQueryCmd do begin close; sql.Clear; sql.Add('exec p_delete_machTask'); sql.Add('@ids=' + quotedstr(Trim(ADOQueryList.FieldByName('taskid').AsString))); sql.Add(',@user=' + quotedstr(gUserId)); ExecSql; end; except application.MessageBox('删除记录失败!', '提示信息', 0); end; initGrid(); end; procedure TfrmMachTaskList.TcloseClick(Sender: TObject); begin close; end; procedure TfrmMachTaskList.TconfirmClick(Sender: TObject); begin WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '机台扫描排缸'); end; procedure TfrmMachTaskList.ToolButton1Click(Sender: TObject); var FTaskID: string; begin if ADOQueryList.IsEmpty then Exit; FTaskID := ADOQueryList.FieldByName('taskid').AsString; try with ADOQueryCmd do begin close; SQL.Clear; sql.Add('exec P_UpDown_MD_Machine_Task '); sql.Add('@ids=' + quotedstr(Trim(ADOQueryList.FieldByName('taskid').AsString))); sql.Add(',@flag=0 '); ExecSQL; end; except application.MessageBox('操作失败!', '提示信息', 0); end; initGrid(); ADOQueryList.Locate('taskid', FTaskID, []); end; procedure TfrmMachTaskList.ToolButton2Click(Sender: TObject); var FTaskID: string; begin if ADOQueryList.IsEmpty then Exit; FTaskID := ADOQueryList.FieldByName('taskid').AsString; try with ADOQueryCmd do begin close; SQL.Clear; sql.Add('exec P_UpDown_MD_Machine_Task '); sql.Add('@ids=' + quotedstr(Trim(ADOQueryList.FieldByName('taskid').AsString))); sql.Add(',@flag=1 '); ExecSQL; end; except application.MessageBox('操作失败!', '提示信息', 0); end; initGrid(); ADOQueryList.Locate('taskid', FTaskID, []); end; procedure TfrmMachTaskList.TrefreshClick(Sender: TObject); begin initGrid(); end; //////////////////////////////////////////// /// procedure TfrmMachTaskList.FormShow(Sender: TObject); begin ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '机台扫描排缸'); initGrid(); end; procedure TfrmMachTaskList.initGrid(); begin try ADOQueryList.DisableControls; with ADOQueryList do begin close; sql.Clear; sql.Add('select a.*,b.custName,b.orderno,B.c_color,B.c_name,B.PCID,B.C_ColorNo'); sql.Add('from MD_Machine_Task a'); sql.Add('inner join Dye_Plan_Card b on b.pcid=a.pcid'); sql.Add('where a.status=''0'''); sql.Add('and A.mcid=' + quotedstr(fcurMachId)); sql.Add('and not EXISTS(select 1 from Dye_Cloth_Stock X where X.pcid=B.pcid)'); sql.add('and not EXISTS(select 1 from Dye_Plan_Card_Move X where X.FromID= B.pcid)'); sql.Add('order by a.order_idx '); // ShowMessage(SQL.Text); // a.taskDate, open; end; finally ADOQueryList.EnableControls; tv1.ApplyBestFit(); end; end; procedure TfrmMachTaskList.pcidKeyPress(Sender: TObject; var Key: Char); var glideIds: string; begin if Key = #13 then begin try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCard do begin close; sql.clear; sql.add(' select top 1 A.OrderNo,A.workShop,A.PSC_StkPiece,A.PSC_StkQty,B.GlideId,B.GlideNo,B.GlideName '); sql.add(' from Dye_Plan_Card A '); sql.add(' left join Dye_Plan_Glide B on A.pcid=B.pcid '); sql.add(' where A.pcid= ' + QuotedStr(Trim(pcid.Text))); // sql.add(' and B.Completeness < 100 '); sql.add(' and not exists(select * from Dye_Plan_Glide_output e where e.glideno=b.glideno and e.pcid=a.pcid)'); sql.add(' order by B.GlideNo '); open; end; if ADOQueryCard.RecordCount = 0 then begin raise Exception.Create('未找到流程卡或流程卡未安排工序!'); end; with ADOQueryMach do begin close; sql.clear; sql.add(' select A.* from Bs_Machine A '); sql.add(' where A.mcid= ' + QuotedStr(Trim(fcurMachId))); open; end; if ADOQueryMach.RecordCount = 0 then begin raise Exception.Create('未找到机台!'); end; with ADOQueryCmd do begin close; sql.clear; sql.add('select * from MD_Machine_Task '); sql.add('where 1=2'); open; append; fieldByName('mcId').value := Trim(fcurMachId); fieldByName('mcNo').value := Trim(ADOQueryMach.FieldByName('mcno').AsString); fieldByName('taskDate').value := SGetServerDate(ADOQueryTmp); fieldByName('orderNo').value := trim(ADOQueryCard.FieldByName('orderNo').AsString); fieldByName('pcId').value := Trim(pcid.Text); fieldByName('status').value := '0'; fieldByName('glideGroup').value := ''; fieldByName('machGroupNo').value := ''; fieldByName('workShop').value := trim(ADOQueryCard.FieldByName('workShop').AsString); fieldByName('taskRollNum').value := ADOQueryCard.FieldByName('PSC_StkPiece').AsFloat; fieldByName('taskQty').value := ADOQueryCard.FieldByName('PSC_StkQty').AsFloat; fieldByName('taskType').value := '手动'; fieldByName('curGlideName').value := trim(ADOQueryCard.FieldByName('glideName').AsString); fieldByName('curGlide').value := trim(ADOQueryCard.FieldByName('glideName').AsString); fieldByName('GlideId').value := trim(ADOQueryCard.FieldByName('GlideId').AsString); fieldByName('deleted').value := 0; fieldByName('filler').value := gUserName; post; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('update MD_Machine_Task set order_idx=isnull((select floor(max(order_idx)) from MD_Machine_Task X where X.mcNo=MD_Machine_Task.mcNo),0)+1'); sql.Add('where order_idx is null'); ExecSql; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('update dye_plan_glide set pc_flag=1'); sql.Add('where glideId =' + quotedstr(trim(ADOQueryCard.FieldByName('GlideId').AsString))); ExecSql; end; ADOQueryCmd.Connection.CommitTrans; except if ADOQueryCmd.Connection.InTransaction then ADOQueryCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // showMessage('插入任务数据时发生错误!'); end; initGrid(); end; end; end.