⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cj_main.~pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 ~PAS
📖 第 1 页 / 共 4 页
字号:
unit CJ_Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Grids, DBGrids, Provider, DB, DBClient, ADODB, DateUtils,
  Menus, ShellAPI, ExtCtrls, registry, jpeg, ToolWin, IniFiles;

type
  TSpxx = class(TObject)
    spdl: integer; //商品代号
    spmc: string; //商品名称
    sl: double; //数量
    je: double; //金额
    thflag: Boolean; //退货标志
  end;
  TJyfsList = class(TObject)
    jymc: string; //交易名称
    jyje: double; //交易金额
  end;
  TScxx = class(TObject)
  public
    rq: string; //日期+时间
    xq: word; //星期
    jqh: integer; //机器号
    sjh: integer; //收据号
    fwyh: integer; //服务员号
    fwym: string; //服务员名称
    skyh: integer; //收款员号
    skym: string; //收款员名称
    spsl: integer; //商品数量
    filterflag: Boolean; //该笔交易是否入库成功,真为成功,否为失败
    Spxx: TStrings; //商品信息
    JyfsList: TStrings; //交易方式列表
    zkl: double; //折扣率
    zkflag: integer; //打折标志,1为打折,0为不打折
    zje: double; //总金额
    jyfs: integer; //交易方式
    jyfsm: string; //交易方式名称
    constructor ACreate;
    destructor Destroy; override;
  end;

  CjThread = class(TThread)
  private
    QsDate, ZzDate, Sj: TDate; // 采集起始终止日期,采集的当前时间
    CjLx, jqhm, JqhmQs, JqhmZz: Integer; //采集类型
  protected
    procedure Execute; override;
  public
    myFormCj: TForm;
    procedure ss;
    constructor Create(CjSj, Date1, Date2: TDate; Lx, Jqh1, Jqh2: Integer;
      AFormCj:
      TForm);
  end;

  TFrmCJ_Main = class(TForm)
    Panel2: TPanel;
    Image2: TImage;
    Panel1: TPanel;
    Notebook1: TNotebook;
    GroupBox2: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    GroupBox3: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    DBGrid1: TDBGrid;
    CoolBar2: TCoolBar;
    ToolBar2: TToolBar;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    Panel3: TPanel;
    Panel4: TPanel;
    Label5: TLabel;
    Memo1: TMemo;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    Label6: TLabel;
    Memo2: TMemo;
    Memo3: TMemo;
    Memo4: TMemo;
    Label7: TLabel;
    Memo5: TMemo;
    Memo6: TMemo;
    Label8: TLabel;
    Memo7: TMemo;
    Memo8: TMemo;
    GroupBox4: TGroupBox;
    Button1: TButton;
    Button5: TButton;
    Memo9: TMemo;
    Memo10: TMemo;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    Label9: TLabel;
    Memo11: TMemo;
    Button30: TButton;
    Button40: TButton;
    Button60: TButton;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button70Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure Button60Click(Sender: TObject);
    procedure Button90Click(Sender: TObject);
    procedure Button30Click(Sender: TObject);
    procedure Button40Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    RecordList: TStrings;
    CjCxThread: CjThread;
    CjSuccessFlag: Boolean;
    CancelFlag: Boolean;
    CancelNum: Integer;
    UpdateNum: Integer;
    UpdateFlag: Boolean;
    BackFlag: Boolean;
    function DataCollect(Date1, Date2: TDate; Lx, Jqh: Integer): Boolean;
    function OpenFile(var ATextFile: Textfile; var TextFileName: string; Jqh:
      integer): Boolean;
    function ReadFromDll(czlx: pchar; filename1: pchar;
      WBaud: integer; Wport: smallint; Wmc: smallint; Wtype: smallint;
      Wformx: smallint; Wformy: smallint): smallint;
    procedure CollectDataFromText(jlh: integer; s: string; ItemValue: TStrings);
    function GetName(Bh, lx: integer): string;
    function GetClerkName(skyname: string): string;
    function InsertAllToDb(SelSum: TStrings; Date1, Date2: TDate): Boolean;
    function InsertPartToDb(SelSum: TStrings; Date1, Date2: TDate): Boolean;
    function EmptyMachineRecord(MachineNo: integer; Date1, Date2: TDate):
      Boolean;
    function EmptyTh(MachineNo: integer; Date1, Date2: TDate): Boolean;
    function EmptyJyfs(MachineNo: integer; Date1, Date2: TDate): Boolean;
    function EmptyCurrentRecord(MachineNo, SjNo: integer; Date1, Date2: TDate):
      Boolean;
    function EmptyCurrentTh(MachineNo, SjNo: integer; Date1, Date2: TDate):
      Boolean;
    function EmptyCurrentJyfs(MachineNo, SjNo: integer; Date1, Date2: TDate):
      Boolean;
    function InsertRecord(jlh: integer): Boolean;
    function InsertJyRecord(jlh: integer): Boolean;
    function InsertToTh(jlh, xh: integer): Boolean;
    procedure ResultLog(Sj: TDate; Jqh: integer; StartRq, EndRq: TDate;
      CjResult: string);
    function UpdateZkxx(Date1, Date2: TDate; Lx, Jqhm: Integer): Boolean;
    procedure Checkrq(Date1, Date2: TDate; rqxh, Recordcon: TStrings);
    procedure DeletePart(Jqh: integer; FromDate, ToDate: TDate);
    procedure DeleteAll;
    procedure ShowResult(FromDate, ToDate: TDate; jqh, lx: integer);
    procedure SjScan(FromDate, ToDate: TDate; jqh, jqh1: integer);
    procedure AdjustGrid;
    procedure ClearLS(Jqh: smallint);
    function IfValid: Boolean;
    procedure IniJqList;
  end;

procedure SetWork;

implementation

uses PZ_SJPZ, CJ_DataModule, PublicUnit, Main;

{$R *.DFM}

procedure SetWork;
var
  FrmCJ_Main: TFrmCJ_Main;
begin
  Application.CreateForm(TFrmCJ_Main, FrmCJ_Main);
  FrmCJ_Main.ShowModal;
  FrmCJ_Main.Free;
end;

{-------------------------------------------------------------------------------}

constructor TScxx.ACreate;
begin
  inherited Create;
  Spxx := TStringList.Create;
  JyfsList := TStringList.Create;
  spsl := -1;
end;

destructor Tscxx.destroy;
var
  i: integer;
begin
  for i := 0 to Spxx.Count - 1 do
    if Spxx.Objects[i] <> nil then
      TSpxx(Spxx.Objects[i]).Free;
  for i := 0 to JyfsList.Count - 1 do
    if JyfsList.Objects[i] <> nil then
      TJyfsList(JyfsList.Objects[i]).Free;
  Spxx.Free;
  JyfsList.Free;
  inherited;
end;

{-------------------------------------------------------------------------------}

procedure TFrmCJ_Main.FormShow(Sender: TObject);
begin
  NoteBook1.PageIndex := 0;
  with FrmCJ_DataModule.ADOConnection1 do
  begin
    Close;
    ConnectionString := 'Provider=SqlOLEDB.1;Persist Security Info=True;User ID='
      + PublicUnit.DBUser + ';Password=' + PublicUnit.DBPass +
      ';Initial Catalog='
      + PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName;
    try
      Open;
    except
      ShowMessage('连接业务数据库失败,该系统无法正常工作!');
    end;
  end;
  with FrmCJ_DataModule.ADOConnection2 do
  begin
    { Close;
     ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=DBText';
     try Open;
      except
        ShowMessage('连接文本数据库失败,该系统无法正常工作!');
     end;}
  end;
  RecordList := TStringList.Create;
  DateTimePicker1.DateTime := StrToDateTime('2001-08-27');
  DateTimePicker2.DateTime := Now;
  SjScan(StrToDateTime('2001-08-27'), Now, 1, 9);
  DateTimePicker1.Enabled := False;
  DateTimePicker2.Enabled := False;
  Button1.Enabled := False;
  IniJqList;
  //ComboBox1.ItemIndex := 0;
  //ComboBox2.ItemIndex := 0;
end;

procedure TFrmCJ_Main.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i: integer;
begin
  for i := 0 to RecordList.Count - 1 do
    if RecordList.Objects[i] <> nil then
      TSpxx(RecordList.Objects[i]).Free;
  RecordList.Free;
  FrmCJ_DataModule.ADOQuery1.Close;
  FrmCJ_DataModule.ADOQuery2.Close;
  FrmCJ_DataModule.ADOConnection1.Close;
  FrmCJ_DataModule.ADOConnection2.Close;
end;

{---------------------------------线程有关---------------------------------}

constructor CjThread.Create(CjSj, Date1, Date2: TDate; Lx, Jqh1, Jqh2: Integer;
  AFormCj: TForm);
begin
  inherited Create(False);
  QsDate := Date1;
  ZzDate := Date2;
  CjLx := Lx;
  Sj := CjSj;
  JqhmQs := Jqh1;
  JqhmZz := Jqh2;
  FreeOnTerminate := true;
  myFormCj := AFormCj;
end;

procedure CjThread.ss;
begin
  //TFrmCJ_Main(myFormCj).DataCollect(QsDate,ZzDate,CjLx);
end;

procedure CjThread.Execute;
var
  i: integer;
begin
  for i := JqhmQs to JqhmZz do
    if not TFrmCJ_Main(myFormCj).DataCollect(QsDate, ZzDate, CjLx, i) then
      TFrmCJ_Main(myFormCj).ResultLog(Sj, Jqhm, QsDate, ZzDate, '采集失败')
    else
      TFrmCJ_Main(myFormCj).ResultLog(Sj, Jqhm, QsDate, ZzDate, '采集成功');
  //synchronize(ss);
  if Terminated then
    Exit;
end;

{------------------------采集过程(日期为参数)-----------------}

function TFrmCJ_Main.DataCollect(Date1, Date2: TDate; Lx, Jqh: Integer):
  Boolean;
var
  s, ss, rq: string;
  ATextFile: Textfile;
  TextFileName: string;
  year1, s1, t: word;
  jlh: Integer; {jlh代表交易数}
  CjFlag: Boolean; {采集标志}
  ItemValue, SelSum: TStrings;
  scxx: TScxx;
begin
  Result := False;
  RecordList.Clear;
  Screen.Cursor := crHourGlass;
  if not OpenFile(ATextFile, TextFileName, Jqh) then
    Exit;
  jlh := -1;
  ItemValue := TStringList.Create;
  SelSum := TStringList.Create;
  while not Eof(ATextFile) do
  begin
    Readln(ATextFile, s);
    if s = '' then
      Break;
    if (Trim(Copy(s, 1, pos(',', s) - 1)) = '0') then
    begin
      Inc(jlh);
      CjFlag := False;
      scxx := TScxx.ACreate;
      BackFlag := False;
      scxx.zkflag := 0;
      RecordList.AddObject('', scxx);
      Continue;
    end;
    {采集交易时间}
    if LowerCase(Trim(Copy(s, 1, 4))) = 'time' then
    begin
      rq := Trim(copy(s, pos('=', s) + 1, 10));
      if Lx = 1 then
        CjFlag := True
      else if (Lx = 2) and ((strtodate(rq) >= Date1) and (strtodate(rq) <=
        Date2)) then
        CjFlag := True;
      if CjFlag then
      begin
        SelSum.Add(IntToStr(jlh));
        ss := copy(s, pos('=', s) + 1, 20);
        TScxx(RecordList.Objects[jlh]).rq := trim(ss);
        DecodeDateWeek(strtodatetime(TScxx(RecordList.Objects[jlh]).rq), year1,
          s1, t);
        TScxx(RecordList.Objects[jlh]).xq := t;
      end;
      Continue;
    end;
    if CjFlag then
      CollectDataFromText(jlh, s, ItemValue);
  end;
  CloseFile(ATextFile);
  //if FileExists(TextFileName) then DeleteFile(TextFileName);
  ItemValue.Free;
  //if Lx = 1 then
  //if not InsertAllToDb(SelSum,Date1,Date2) then Exit;
  //if Lx = 2 then
  if not InsertPartToDb(SelSum, Date1, Date2) then
    Exit;
  if not UpdateZkxx(Date1, Date2, Lx, Jqh) then
    Exit;
  SjScan(Date1, Date2, Jqh, Jqh);
  ShowResult(Date1, Date2, Jqh, Lx);
  SelSum.Free;
  Screen.Cursor := crDefault;
  Result := True;
end;

function TFrmCJ_Main.OpenFile(var ATextFile: Textfile; var TextFileName: string;
  Jqh: integer): Boolean;
var
  i, ReturnValue: Integer;
begin
  Result := False;
  TextFileName := ExtractFilePath(Application.ExeName);
  //TextFileName:=Copy(TextFileName,1,Pos('bin',LowerCase(TextFileName))-1)+'Data\dd.dat';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -