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

📄 minerelay_unt.pas

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

                               DBLookUpComboBox2.Enabled:=false;
                               DBLookUpComboBox3.Enabled:=false;
                               DBLookUpListBox1.Enabled:=false;
                               Label6.Visible:=false;
                               Label7.Visible:=false;
                               DateTimePicker1.Visible:=false;
                               DateTimePicker2.Visible:=false;
                               exit;
                             end;
                           DBLookUpListBox1.SetFocus;
                           exit;
                        end;
                    end;
                  Base_DataS.DataSet.FieldByName('Face_Lane').AsInteger:=EditFace;
                end; //end:if DBLookUpListBox1.SelectedItem<>''

              //处理时间修改的问题
              if (BeginDateChange)and(not EndDateChange)then//仅仅修改开始时间
                begin
                  Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EditBeginDate;
                  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditBeginDate+Current.TaskTime;
                end;
              if (not BeginDateChange)and(EndDateChange)then//仅仅修改结束时间
                begin
                  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditEndDate;
                end;
              if (BeginDateChange)and(EndDateChange)then //开始和结束时间都修改了
                begin
                  Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EditBeginDate;
                  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditEndDate;
                end;
            try
              Base_DataS.DataSet.Post;
              if(BeginDateChange)or(EndDateChange)then
                begin
                  //计算修改后的结束时间与原结束时间之间的差
                  DelT:=trunc(Base_DataS.DataSet.FieldByName('End_Date').AsDateTime-Current.E_Date);
    //根据当前记录的日期修改,对其后的记录的日期进行相应修改,
    //对于前面的记录则无需修改,因为当前记录的起始日期变化不会影响到前面的工序
                  BK:=Base_DataS.DataSet.GetBookmark;
                  if not IsLast then
                    begin
                      Base_DataS.DataSet.Next;
                      with Base_DataS.DataSet do
                         begin
                             for i:=2 to High(BehindRelay) do //i从2开始是被修改记录的后面的记录
                               begin
                                 if (BehindRelay[i].Project_Id=Current.Project_Id)and(BehindRelay[i].Relay_Route=Current.Relay_Route)
                                   then
                                     begin
                                       Edit;
                                       FieldByName('Begin_Date').AsDateTime:=BehindRelay[i].B_Date+DelT;
                                       FieldByName('End_Date').AsDateTime:=BehindRelay[i].E_Date+DelT;
                                       Post;
                                     end;
                                 next;
                               end;
                         end;
                    end;//end:if not IsLast then
                  Base_DataS.DataSet.GotoBookmark(BK);
                  Base_DataS.DataSet.FreeBookmark(BK);
                end;
            except
              Base_DataS.DataSet.Cancel;
              showmessage('数据更新没有成功!');
            end;
          end;
      if Inf=mrno
        then
          begin
            Base_DataS.DataSet.Cancel;
          end;

      EditMode:=false;
      //设置相应按钮的状态
      BitBtn1.Enabled:=true;
      BitBtn2.Enabled:=true;
      BitBtn4.Enabled:=true;
      BitBtn5.Enabled:=true;
      BitBtn6.Enabled:=true;
      BitBtn7.Enabled:=true;
      BitBtn8.Enabled:=true;
      BitBtn9.Enabled:=true;
      BitBtn10.Enabled:=true;
      BitBtn11.Enabled:=true;
      BitBtn12.Enabled:=true;

      BitBtn3.Enabled:=false;
      DBLookUpComboBox2.Enabled:=false;
      DBLookUpComboBox3.Enabled:=false;
      DBLookUpListBox1.Enabled:=false;
      Label6.Visible:=false;
      Label7.Visible:=false;
      DateTimePicker1.Visible:=false;
      DateTimePicker2.Visible:=false;
      //修改完毕后退出
      Exit;
    end;


//处理添加方案
  if VarIsNull(Base_DataS.DataSet.fieldbyname('Project_Id').Value) then
    begin
      showmessage('请选择一个方案!');
      DBLookUpComboBox1.SetFocus;
      exit;
    end;

  Pro_Id:=Project_DataS.DataSet.fieldbyname('Project_Id').AsInteger;
  for j:=1 to High(Relay) do
    begin

      if Pro_Id=Relay[j].Project_Id then
        begin
          showmessage('该方案已经存在,请按"添加"或者"插入"对该方案安排接替!');
          Base_DataS.DataSet.Cancel;
          BitBtn3.Enabled:=false;
          DBGrid1.ReadOnly:=true;
          BitBtn1.Enabled:=true;
          BitBtn2.Enabled:=true;
          BitBtn4.Enabled:=true;
          BitBtn5.Enabled:=true;
          BitBtn6.Enabled:=true;
          BitBtn7.Enabled:=true;
          BitBtn8.Enabled:=true;
          BitBtn9.Enabled:=true;
          BitBtn10.Enabled:=true;
          BitBtn11.Enabled:=true;
          BitBtn12.Enabled:=true;
          for i:=1 to Panel2.ControlCount do
            begin
              if Panel2.Controls[i-1].Tag>=0 then
                 Panel2.Controls[i-1].Enabled:=false;
            end;
          exit;
        end;
    end;
  if VarIsNull(Base_DataS.DataSet.fieldbyname('WorkGroup').Value) then
    begin
      showmessage('请选择一个施工队!');
      DBLookUpComboBox2.SetFocus;
      exit;
    end;
  if VarIsNull(Base_DataS.DataSet.fieldbyname('Area').Value) then
    begin
      showmessage('请选择一个接替任务范围!');
      DBLookUpComboBox3.SetFocus;
      exit;
    end;
  Base_DataS.DataSet.fieldbyname('Face_Lane').AsInteger:=Face_DataS.DataSet.fieldbyname('Face_Id').AsInteger;
  if VarIsNull(Base_DataS.DataSet.fieldbyname('Face_Lane').Value) then
    begin
      showmessage('请选择一个回采面或者巷道!');
      DBLookUpListBox1.SetFocus;
      exit;
    end;

  //计算添加的回采面的工期AddTaskTime
  Remain:=Face_DataS.DataSet.FieldByName('Remain_Reserve').AsFloat;
  DayOutput:=Face_DataS.DataSet.FieldByName('Day_Output').AsFloat;
  AddTaskTime:=Face_DataS.DataSet.FieldByName('TaskTime').AsInteger;
  {if DayOutput>10E-5
     then AddTaskTime:=round(10000*Remain/DayOutput)
     else
       begin
         AddTaskTime:=1;
         showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
       end;}
   if AddTaskTime<=0 then
     begin
       AddTaskTime:=1;
       showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
     end;

  //调试用
  //showmessage('剩余储量为:'+floattostr(10000*Remain)+',日产量为:'+floattostr(DayOutput)+',预计工期为:'+inttostr(AddTaskTime));


  Base_DataS.DataSet.fieldbyname('Relay_Route').AsInteger:=1;
  Base_DataS.DataSet.fieldbyname('Relay_Id').AsInteger:=1;
  Base_DataS.DataSet.fieldbyname('TaskTime').AsInteger:=AddTaskTime;

  //确定该回采面的开始时间
  //通过界面输入该采煤队的第一个回采面的开始时间
  TimePara_Frm:=TTimePara_Frm.Create(self);
  TimePara_Frm.ShowModal;
  BeginDay:=TimePara_Frm.BeginTime;
  TimePara_Frm.Free;
  TimePara_Frm:=nil;
  Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=BeginDay;
  Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=BeginDay+AddTaskTime;
  inherited;
  BitBtn9.Enabled:=true;
  BitBtn10.Enabled:=true;
  BitBtn11.Enabled:=true;
  BitBtn12.Enabled:=true;
  BitBtn1.SetFocus;
end;

procedure TMineRelay_Frm.AddPost_NewRelayTask;
var
i,r:integer;
Inf1:variant;
AddWorkGroup,AddFace:integer; //新添加的记录的施工队和工作面的编号
AddWorkGroupName,AddFaceName:string; //新添加的记录的施工队和工作面的名称
Remain,DayOutput:single; //新添加的记录的回采面的剩余储量和日产量
AddTaskTime,Interv,BeginDay,EndDay:integer;//新添加的记录的回采面工期,接替间隔时间,开始时间,结束时间
AddTechnicType:integer;//添加的记录的回采面的回采工艺
begin
 if varisnull(Base_DataS.DataSet.FieldByName('WorkGroup').Value) then
   begin
     showmessage('请选择相应的施工队!');
     exit;
   end;
 if varisnull(Base_DataS.DataSet.FieldByName('Area').Value) then
   begin
     showmessage('请选择相应的采区!');
     exit;
   end;
 //读取界面给新添加记录指定的值,这些值可能不符合要求,需要进行调整
 AddWorkGroup:=MineGroup_DataS.DataSet.FieldByName('WorkGroup_Id').AsInteger;
 AddWorkGroupName:=MineGroup_DataS.DataSet.FieldByName('WorkGroup_Name').AsString;
 AddFace:=Face_DataS.DataSet.FieldByName('Face_Id').AsInteger;
 AddFaceName:=Face_DataS.DataSet.FieldByName('Name').AsString;

 //计算添加的回采面的工期AddTaskTime
 Remain:=Face_DataS.DataSet.FieldByName('Remain_Reserve').AsFloat;
 DayOutput:=Face_DataS.DataSet.FieldByName('Day_Output').AsFloat;
 AddTaskTime:=Face_DataS.DataSet.FieldByName('TaskTime').AsInteger;
 {if DayOutput>10E-5
   then AddTaskTime:=round(10000*Remain/DayOutput)
   else
     begin
       AddTaskTime:=1;
       showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
     end;}
 if AddTaskTime<=0 then
   begin
     AddTaskTime:=1;
     showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
   end;
 //找到添加的这个接替面的回采工艺,并得到在这个回采工艺下,接替下一个面时需要间隔的时间
 AllFace_DataS.DataSet.Locate('Face_Id',AddFace,[LoCaseInsensitive]);
 AddTechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;

 for r:=1 to High(IntervalPara) do
   begin
     if IntervalPara[r].MineTechnic=AddTechnicType  then
       begin
         Interv:=IntervalPara[r].IntervalTime;
         break;
       end;
   end;

 //最终确定新添加记录的各个字段值
 Base_DataS.DataSet.FieldByName('Sequence').AsInteger:=LastRelay.Sequence+1;
 Base_DataS.DataSet.FieldByName('Project_Id').AsInteger:=LastRelay.Project_Id;

 //判断同一个方案中的接替面是否有重复,若有重复,则退出添加过程,重新指定接替面
 for i:=1 to High(Relay) do
   begin
     if(Relay[i].Project_Id=LastRelay.Project_Id)and(Relay[i].Face_Lane=AddFace)
      then
        begin
           Inf1:=messagedlg('该方案中不能重复接替 "'+AddFaceName+'",请重新选择回采面!继续请按"yes"!',mtconfirmation,[mbyes,mbno],0);
           if Inf1=mrno then
             begin
               Base_DataS.DataSet.Cancel; //取消添加操作
               AddMode:=false;

               DBGrid1.ReadOnly:=true;
               DBGrid1.Enabled:=true;
               BitBtn1.Enabled:=true;
               BitBtn2.Enabled:=true;
               BitBtn4.Enabled:=true;
               BitBtn5.Enabled:=true;
               BitBtn6.Enabled:=true;
               BitBtn7.Enabled:=true;
               BitBtn8.Enabled:=true;
               BitBtn9.Enabled:=true;
               BitBtn10.Enabled:=true;
               BitBtn11.Enabled:=true;
               BitBtn12.Enabled:=true;

               DBLookUpComboBox2.Enabled:=false;
               DBLookUpComboBox3.Enabled:=false;
               DBLookUpListBox1.Enabled:=false;
               Label5.Caption:='';
               exit;
             end;
           DBLookUpListBox1.SetFocus;
           exit;
        end;
   end;

⌨️ 快捷键说明

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