unit U_JNPRT;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
  cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls,
  cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
  cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
  cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
  RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit,
  cxTextEdit, cxPC, cxCheckComboBox, cxDropDownEdit, Menus, RM_e_Xls, TeEngine,
  Series, TeeProcs, Chart, DbChart, cxLookAndFeels, cxLookAndFeelPainters,
  cxNavigator;

type
  TfrmJNPRT = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ToolButton2: TToolButton;
    ADOQueryMain: TADOQuery;
    RM1: TRMGridReport;
    RMDB_Main: TRMDBDataSet;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridLevel1: TcxGridLevel;
    cxGridPopupMenu2: TcxGridPopupMenu;
    DS_HZ: TDataSource;
    CDS_HZ: TClientDataSet;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    v2Column17: TcxGridDBColumn;
    Panel1: TPanel;
    RMXLSExport2: TRMXLSExport;
    v2Column7: TcxGridDBColumn;
    v2Column12: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    ToolButton3: TToolButton;
    ADOQueryPrt: TADOQuery;
    Tv2Column1: TcxGridDBColumn;
    Label2: TLabel;
    Label6: TLabel;
    begdate: TDateTimePicker;
    Enddate: TDateTimePicker;
    Tv2Column2: TcxGridDBColumn;
    Tv2Column3: TcxGridDBColumn;
    Tv2Column4: TcxGridDBColumn;
    Tv2Column5: TcxGridDBColumn;
    Tv2Column6: TcxGridDBColumn;
    Panel2: TPanel;
    Label4: TLabel;
    DYInt: TEdit;
    JNCarNo1: TEdit;
    Label1: TLabel;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
  private
    { Private declarations }
    procedure PrintReport(FZDYNo, MJNCarNo: string);
    procedure InitGrid();
  public
    fFlag: integer;
    { Public declarations }
    RKFlag, FCYID, fmanage: string;
  end;

var
  frmJNPRT: TfrmJNPRT;

implementation

uses
  U_DataLink, U_Fun, U_ZDYHelp;

{$R *.dfm}

procedure TfrmJNPRT.PrintReport(FZDYNo, MJNCarNo: string);
var
  fPrintFile, FFCYID: string;
  i, j: Integer;
  Txt, fImagePath: string;
  Moudle: THandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  if CDS_HZ.IsEmpty then
    Exit;

  ExportFtErpFile('加捻标签.rmf', ADOQueryTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\加捻标签.rmf';
  {with ADOQueryPrt do
  begin
    close;
    sql.Clear;
    sql.Add(' select * from  Machine where MCNO=''' + Trim(FZDYNo) + '''');
    open;
  end;}


  try
    Moudle := LoadLibrary('MakeQRBarcode.dll');
    @Makebar := GetProcAddress(Moudle, 'Make');
    @Mixtext := GetProcAddress(Moudle, 'MixText');
    Txt := Trim(FZDYNo);
    fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp';
    if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then
      CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil);
    if FileExists(fImagePath) then
      DeleteFile(fImagePath);
    Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3);
  except
    CDS_HZ.EnableControls;
    application.MessageBox('条形码生成失败！', '提示信息', MB_ICONERROR);
    exit;
  end;
  RMVariables['QRBARCODE'] := fImagePath;
  RMVariables['JRId'] := FZDYNo;
  RMVariables['JNCarNo'] := MJNCarNo;

  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    Rm1.DefaultCopies := 8;
    RM1.PrintReport;
  //  RM1.ShowReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + fPrintFile + '!'), '提示', 0);
    Exit;
  end;
end;

procedure TfrmJNPRT.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Close;
      SQL.Clear;
      sql.Add(' select A.*,xiangQty=8 from  JN_CR A ');
      sql.Add('where A.Filltime>=''' + FormatDateTime('yyyy-MM-dd', begdate.DateTime) + ''' ');
      sql.Add(' and A.Filltime<''' + FormatDateTime('yyyy-MM-dd', Enddate.DateTime + 1) + ''' ');
      Open;
    end;
    SCreateCDS20(ADOQueryMain, CDS_HZ);
    SInitCDSData20(ADOQueryMain, CDS_HZ);
  finally
    ADOQueryMain.EnableControls;
    ToolButton2.Click;
  end;
end;

procedure TfrmJNPRT.FormDestroy(Sender: TObject);
begin
  frmJNPRT := nil;
end;

procedure TfrmJNPRT.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TfrmJNPRT.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid(Trim(Self.Caption), Tv2, '机台管理');
  Close;
end;

procedure TfrmJNPRT.FormShow(Sender: TObject);
begin
  Enddate.DateTime := SGetServerDate(ADOQueryTemp);
  begdate.DateTime := Enddate.DateTime - 30;
  ReadCxGrid(Trim(Self.Caption), Tv2, '机台管理');
  InitGrid();
end;

procedure TfrmJNPRT.TBRafreshClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmJNPRT.ToolButton2Click(Sender: TObject);
var
  sql: string;
begin
  if ADOQueryMain.Active then
  begin
    sql := SGetFilters(Panel1, 1, 2);
    SDofilter(ADOQueryMain, sql);
    SCreateCDS20(ADOQueryMain, CDS_HZ);
    SInitCDSData20(ADOQueryMain, CDS_HZ);
  end;
end;

procedure TfrmJNPRT.cxTabControl1Change(Sender: TObject);
begin
  InitGrid;
end;

procedure TfrmJNPRT.ToolButton3Click(Sender: TObject);
var
  maxId: string;
  Fint: Integer;
begin
  begdate.SetFocus;
  with ADOQueryTemp do
  begin
    Close;
    sql.Clear;
    sql.Add(' select A.* from  JN_Car A where Valid=''Y''  ');
    sql.Add('and JNCarNo=  ' + quotedstr(JNCarNo1.Text));
    Open;
  end;
  if ADOQueryTemp.IsEmpty then
  begin
    Application.MessageBox('机台号未定义!', '提示', 0);
    Exit;
  end;
  if TryStrToInt(DYInt.Text, Fint) = False then
  begin
    Application.MessageBox('打印组数非法数字!', '提示', 0);
    Exit;
  end;
  for Fint := 1 to StrToInt(DYInt.Text) do
  begin
    if GetLSNo(ADOQueryCmd, maxId, 'JN', 'JN_CR', 4, 1) = False then
    begin
      Application.MessageBox('取最大号失败！', '提示', 0);
      Exit;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('insert into JN_CR(JRId,PRTPerson,JNCarNo,PRTTime) values(' + quotedstr(Trim(maxId)) + ',' + quotedstr(Trim(dname)) + ',' + quotedstr(Trim(JNCarNo1.Text)) + ',getdate() )');
      ExecSQL;
    end;
    PrintReport(Trim(maxId), JNCarNo1.Text);
  end;
end;

end.

