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

📄 minerelay_unt.pas

📁 煤矿行业采掘接替计划自动生成系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
   BitBtn11.Enabled:=true;
   BitBtn12.Enabled:=true;

   DBLookUpComboBox2.Enabled:=false;
   DBLookUpComboBox3.Enabled:=false;
   DBLookUpListBox1.Enabled:=false;

   Label5.Caption:='';
   BitBtn1.SetFocus;
end;

procedure TMineRelay_Frm.BitBtn8Click(Sender: TObject);
var
i,r:integer;
begin
  inherited;
  //找到被修改的当前记录及其后的接替面的回采工艺,并得到在这个回采工艺下需要间隔的时间,
  for i:=1 to High(BehindRelay) do
    begin
      AllFace_DataS.DataSet.Locate('Face_Id',BehindRelay[i].Face_Lane,[LoCaseInsensitive]);
      BehindRelay[i].TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
      for r:=1 to High(IntervalPara) do
        begin
          if IntervalPara[r].MineTechnic=BehindRelay[i].TechnicType  then
            begin
              BehindRelay[i].Interval:=IntervalPara[r].IntervalTime;
              break;
            end;
        end;
    end;
  Base_DataS.DataSet.Edit;
  DBLookUpComboBox1.Enabled:=false;
  DBLookUpComboBox2.Enabled:=false;
  DBLookUpComboBox3.SetFocus;
  showmessage('修改完成后请按"确定"!');
end;

procedure TMineRelay_Frm.BitBtn9Click(Sender: TObject);
var
i,j,m,n,FaceId:integer;
DayOutput,Remain:single;
begin
  inherited;
  //读取接替面对应的回采工艺,以及接替面回采所需时间
  FaceId:=Current.Face_Lane;
  AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
  Current.TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
  //Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
  //DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
  //if DayOutput>10E-5 then Current.TaskTime:=round(10000*Remain/DayOutPut);

  FaceId:=CurrentPriorRelay.Face_Lane;
  AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
  CurrentPriorRelay.TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
  //Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
  //DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
  //if DayOutput>10E-5 then CurrentPriorRelay.TaskTime:=round(10000*Remain/DayOutPut);

  for i:=1 to High(BehindRelay) do
    begin
      FaceId:=BehindRelay[i].Face_Lane;
      AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
      BehindRelay[i].TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
      //Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
      //DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
      //if DayOutput>10E-5 then BehindRelay[i].TaskTime:=round(10000*Remain/DayOutPut);
    end;

  for i:=1 to High(Relay) do
    begin
      FaceId:=Relay[i].Face_Lane;
      AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
      Relay[i].TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
      //Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
      //DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
      //if DayOutput>10E-5 then Relay[i].TaskTime:=round(10000*Remain/DayOutPut);
    end;
end;

procedure TMineRelay_Frm.BitBtn1Click(Sender: TObject);
var
FaceId:integer;
Remain,DayOutput:single;
begin
  inherited;
  //读取接替面对应的回采工艺,以及接替面回采所需时间

  FaceId:=LastRelay.Face_Lane;
  AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
  LastRelay.TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
  //Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
  //DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
  //if DayOutput>10E-5 then LastRelay.TaskTime:=round(10000*Remain/DayOutPut);
end;

procedure TMineRelay_Frm.N1Click(Sender: TObject);
var
i,n:integer;
begin
MineRelayInterval_Frm:=TMineRelayInterval_Frm.Create(self);
MineRelayInterval_Frm.ShowModal;
n:=MineRelayInterval_Frm.Base_DataS.DataSet.RecordCount;
SetLength(IntervalPara,n+1);
with MineRelayInterval_Frm.Base_DataS.DataSet do
    begin                              
      first;
      for i:=1 to n do
        begin
          IntervalPara[i].MineTechnic:=FieldByName('Technic_Type').AsInteger;
          IntervalPara[i].FixPrepareTime:=FieldByName('FixPrepare_Time').AsInteger;
          IntervalPara[i].IntervalTime:=FieldByName('Interval_Time').AsInteger;
          next;
        end;
    end;
MineRelayInterval_Frm.Free;
MineRelayInterval_Frm:=nil;
end;

procedure TMineRelay_Frm.N2Click(Sender: TObject);
var
str1:string;
Tech:integer;
begin
  if not FaceIsEdit then
    begin
      showmessage('请首先选择采区!');
      exit;
    end;
  MineTechPopup_Frm:=TMineTechPopup_Frm.Create(self);
  if DBLookUpListBox1.SelectedItem<>'' then
    begin
      str1:=DBLookUpListBox1.SelectedItem;
      if AllFace_DataS.DataSet.Locate('Name',str1,[locaseinsensitive]) then
        begin
          Tech:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
          if Data_Frm.MineTech_AdoTab.Locate('MineType_Id',Tech,[locaseinsensitive]) then
             MineTechPopup_Frm.Edit1.Text:=Data_Frm.MineTech_AdoTab.FieldByName('Mine_TypeName').AsString;
        end;
    end;
  MineTechPopup_Frm.ShowModal;
  MineTechPopup_Frm.Free;
  MineTechPopup_Frm:=nil;
end;

procedure TMineRelay_Frm.N3Click(Sender: TObject);
begin
  DrillAssurance_Frm:=TDrillAssurance_Frm.Create(self);
  DrillAssurance_Frm.ShowModal;
  DrillAssurance_Frm.Free;
  DrillAssurance_Frm:=nil;
end;

procedure TMineRelay_Frm.N4Click(Sender: TObject);
begin
FaceInfo_Frm:=TFaceInfo_Frm.Create(self);
FaceInfo_Frm.BorderStyle:=bsSizeable;
FaceInfo_Frm.Align:=alNone;
FaceInfo_Frm.BorderIcons:=[biSystemMenu];
FaceInfo_Frm.ShowModal;
FaceInfo_Frm.Free;
FaceInfo_Frm:=nil;

end;

function TMineRelay_Frm.FaceArrayFinished;
Type
  TProject=record
    Id:integer;
    FaceCount:integer;
  end;
var
i,j,m,ArrayingFaceCount,ArrayedFaceCount,ProjectCount:integer;
ArrayedFace:array of TRelayFaceInfo;
ArrayingFace:array of TRelayFaceInfo;
ArrayedProject:array of TProject; //每个方案中已经安排的回采面个数
str:string;
begin
  //判断待采回采面是否全部安排完毕
  //读取已经安排的回采面,存入ArrayedFace数组中
  //result:=false;
  result:=true; //初始设置已经完成所有待采面的安排
  if Base_DataS.DataSet.Active then Base_DataS.DataSet.Close;
  Base_DataS.DataSet.Open;
  if Base_DataS.DataSet.RecordCount=0 then
    begin
      showmessage('您还没有安排采煤工作面接替!');
      result:=false;
      exit;
    end;
  setlength(ArrayedFace,Base_DataS.DataSet.RecordCount+1);
  with Base_DataS.DataSet do
    begin
      first;
      i:=1;
      while not eof do
        begin
          ArrayedFace[i].Project_Id:=FieldByName('Project_Id').AsInteger;
          ArrayedFace[i].Id:=FieldByName('Face_Lane').AsInteger;
          Data_Frm.Face_AdoTab.Locate('Face_Id',ArrayedFace[i].Id,[locaseinsensitive]);
          ArrayedFace[i].Name:=Data_Frm.Face_AdoTab.FieldByName('Name').AsString;
          next;
          i:=i+1;
        end;
    end;
  //读取所有待安排的回采面,存入ArrayingFace数组中
  With Data_Frm.Face_AdoTab do
    begin
      if not active then open;
      if RecordCount=0 then
        begin
          showmessage('您还没有输入设计的回采面的有关参数!');
          result:=true; //若没有待采面,就不存在没有安排的待采面,所以设置已经全部安排(Result:=true)
          exit;
        end;
      setlength(ArrayingFace,RecordCount+1);
      first;
      i:=1;
      while not eof do
        begin
          if FieldByName('Mined').AsInteger<>0 then
            begin
              ArrayingFace[i].Id:=FieldByName('Face_Id').AsInteger;
              ArrayingFace[i].Name:=FieldByName('Name').AsString;
            end
          else //若是已经回采完毕的工作面,则:ArrayingFace[i].Id:=-1;
            begin
              ArrayingFace[i].Id:=-1;
            end;
          next;
          i:=i+1;
        end;
    end;
  ArrayingFaceCount:=0;
  for i:=1 to High(ArrayingFace) do
    begin
      if ArrayingFace[i].Id>0 then ArrayingFaceCount:=ArrayingFaceCount+1;
    end;
  //计算回采接替计划有几个方案
  ProjectCount:=1;
  for i:=1 to High(ArrayedFace)-1 do
    begin
      if ArrayedFace[i].Project_Id<>ArrayedFace[i+1].Project_Id
        then ProjectCount:=ProjectCount+1;
    end;
  setlength(ArrayedProject,ProjectCount+1);
  //计算各个方案安排的回采面个数
  for i:=1 to ProjectCount do
    begin
      ArrayedProject[i].FaceCount:=0;
    end;
  ArrayedProject[1].Id:=ArrayedFace[1].Project_Id;
  ArrayedProject[1].FaceCount:=1;
  j:=1;
  for i:=2 to High(ArrayedFace) do
    begin
      if ArrayedFace[i].Project_Id<>ArrayedProject[j].Id then
        begin
          ArrayedProject[j+1].Id:=ArrayedFace[i].Project_Id;
          j:=j+1;
        end;
      if ArrayedFace[i].Project_Id=ArrayedProject[j].Id then
        begin
          ArrayedProject[j].FaceCount:=ArrayedProject[j].FaceCount+1;
        end;
    end;
  //检查各个方案安排的回采面个数是否等于待安排的回采面个数
  for m:=1 to ProjectCount do
    begin
        //每一个方案开始,都假设该方案没有安排任何待采工作面
        for i:=1 to High(ArrayingFace) do
          begin
            ArrayingFace[i].Arrayed:=false;
          end;

        if ArrayedProject[m].FaceCount>ArrayingFaceCount then
          begin
            showmessage('有已经采完的回采面被安排进了第'+inttostr(ArrayedProject[m].Id)+'个方案的接替计划,请返回检查!');
            result:=false;
            exit;
          end;
        //检查是哪些待安排的回采面没有被安排
        if ArrayedProject[m].FaceCount<ArrayingFaceCount then
          begin
            for i:=1 to High(ArrayingFace) do
              begin
                for j:=1 to High(ArrayedFace) do
                  begin
                    //若待采面已经安排,则将其数组ArrayingFace中的名称Name置为空
                    if (ArrayedProject[m].Id=ArrayedFace[j].Project_Id)and(ArrayingFace[i].Id=ArrayedFace[j].Id)
                                   then ArrayingFace[i].Arrayed:=true;
                  end;
              end;
            Str:='';
            for i:=1 to High(ArrayingFace) do
              begin
                if (not ArrayingFace[i].Arrayed)and(ArrayingFace[i].Id>0) then Str:=Str+ArrayingFace[i].Name+',';
              end;
            if messagedlg('请注意,第'+inttostr(ArrayedProject[m].Id)+'个方案没有安排回采面:'+Str+'要返回并修改采煤工作面接替计划请按‘yes’',mtconfirmation,[mbyes,mbno],0)=mryes then
              begin
                result:=false;
                exit;
              end;
          end;//end:if ArrayedProject[m].FaceCount<ArrayingFaceCount then
    end

⌨️ 快捷键说明

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