📄 dfjs.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Math.h"
#pragma hdrstop
#include "DFJS.h"
#include "YDdatam.h"
#include "YDmain.h"
#include "YDjstj.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFdfjs *Fdfjs;
//---------------------------------------------------------------------------
__fastcall TFdfjs::TFdfjs(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------
void __fastcall TFdfjs::FormCreate(TObject *Sender)
{
YDData->TByhda->Open();
YDData->TByhda->First();
YDData->TBdbda->Open();
YDData->TBdjkp->Open();
YDData->TBfjjj->Open();
YDData->TBxlcs->Open();
while (!YDData->TBxlcs->Eof)
{
ComboBox1->Items->Add(YDData->TBxlcs->FieldByName("xlmc")->AsString);
YDData->TBxlcs->Next();
}
YDData->TBpqdm->Open();
while (!YDData->TBpqdm->Eof)
{
ComboBox2->Items->Add(Trim(YDData->TBpqdm->FieldByName("pqdm")->AsString)+":"+YDData->TBpqdm->FieldByName("pqmc")->AsString);
YDData->TBpqdm->Next();
}
YDData->TBxtcs->Open();
Caption=YDData->TBxtcs->FieldByName("XT_HSQX")->AsString.SubString(1,4)+"年"+
YDData->TBxtcs->FieldByName("XT_HSQX")->AsString.SubString(6,2)+"月电费计算";
}
//-------------------------------------------------
//------------------------------------------
void TFdfjs::fd_p()
{
TQuery *Query3=new TQuery(this);
Query3->DatabaseName="YDDB";
AnsiString sql;
double fbxs=0;
double fbdl=0;
if (jsfsp=="定量")
{
fbxs=StrToFloat(pdbl);
if (fbxs>YDData->TBdbda->FieldByName("hjdl")->AsFloat)
{
fbdl=YDData->TBdbda->FieldByName("hjdl")->AsFloat;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=0;
YDData->TBdbda->Post();
}
else
{
fbdl=fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat-fbdl;
YDData->TBdbda->Post();
}
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
if (jsfsp=="定比")
{
fbxs=StrToFloat(pdbl)/100;
fbdl=(YDData->TBdbda->FieldByName("zdl")->AsFloat-zdl_j)*fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat-fbdl;
YDData->TBdbda->Post();
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
if (jsfsp=="转变基数")
{
fbxs=StrToFloat(pdbl)/100;
fbdl=(YDData->TBdbda->FieldByName("zdl")->AsFloat-zdl_j)*fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat-fbdl;
YDData->TBdbda->Post();
zdl_j=zdl_j+fbdl;
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
if (jsfsp=="不计变损")
{
fbxs=StrToFloat(pdbl)/100;
fbdl=(YDData->TBdbda->FieldByName("zdl")->AsFloat-zdl_j-YDData->TBdbda->FieldByName("bsdl")->AsFloat)*fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat-fbdl;
YDData->TBdbda->Post();
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
if (jsfsp=="跨越时段")
{
double fbxsp=StrToFloat(pdbl.SubString(1,3))/100 ;
double fbxsf=StrToFloat(pdbl.SubString(4,3))/100 ;
double fbxsg=StrToFloat(pdbl.SubString(7,3))/100 ;
double fbdlp=fbxsp*YDData->TBdbda->FieldByName("zdl")->AsFloat;
double fbdlf=fbxsf*YDData->TBdbda->FieldByName("zdlf")->AsFloat;
double fbdlg=fbxsg*YDData->TBdbda->FieldByName("zdlg")->AsFloat;
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=fbdlp+fbdlf+fbdlg;
YDData->TBdjkp->Post();
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat-fbdlp;
YDData->TBdbda->FieldByName("hjdlf")->AsFloat=YDData->TBdbda->FieldByName("hjdlf")->AsFloat-fbdlf;
YDData->TBdbda->FieldByName("hjdlg")->AsFloat=YDData->TBdbda->FieldByName("hjdlg")->AsFloat-fbdlg;
YDData->TBdbda->Post();
}
if (jsfsp=="居民优待"||jsfsp=="职工优待")
{
if (jsfsp=="居民优待")
sql="select * from djsjk where lb like '%居民优待%'";
else
sql="select * from djsjk where lb like '%职工优待%'";
Query3->Close();
Query3->SQL->Clear();
Query3->SQL->Add(sql);
Query3->ExecSQL();
Query3->Open();
int djs=Query3->RecordCount;
if (djs==0)
{
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat;
YDData->TBdjkp->FieldByName("jep")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat*
YDData->TBdjkp->FieldByName("djp")->AsFloat;
YDData->TBdjkp->Post();
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=0;
YDData->TBdbda->Post();
return;
}
double dj[9];
int y=0;
Query3->First();
while (!Query3->Eof)
{
if (YDData->TBdjkp->FieldByName("gddy")->AsString=="不满1千伏")
dj[y]=Query3->FieldByName("dj1")->AsFloat;
if (YDData->TBdjkp->FieldByName("gddy")->AsString=="1-10千伏")
dj[y]=Query3->FieldByName("dj2")->AsFloat;
if (YDData->TBdjkp->FieldByName("gddy")->AsString=="35千伏及以上")
dj[y]=Query3->FieldByName("dj3")->AsFloat;
if (YDData->TBdjkp->FieldByName("gddy")->AsString=="110千伏及以上")
dj[y]=Query3->FieldByName("dj4")->AsFloat;
Query3->Next();
y++;
}
double zydl=YDData->TBdbda->FieldByName("hjdl")->AsFloat;
double dfje;
if (zydl>=StrToFloat(YDData->TBdjkp->FieldByName("pdbl")->AsString))
{
dfje=StrToFloat(YDData->TBdjkp->FieldByName("pdbl")->AsString)*YDData->TBdjkp->FieldByName("djp")->AsFloat;
zydl=zydl-StrToFloat(YDData->TBdjkp->FieldByName("pdbl")->AsString);
for (int x=0;zydl>0;)
{
if (zydl>=StrToFloat(YDData->TBdjkp->FieldByName("pdbl")->AsString)&&x<djs-1)
{
dfje=dfje+StrToFloat(YDData->TBdjkp->FieldByName("pdbl")->AsString)*dj[x];
zydl=zydl-StrToFloat(YDData->TBdjkp->FieldByName("pdbl")->AsString);
}
else
{
dfje=dfje+zydl*dj[x];
break;
}
if (x<djs-1)
x++;
}
}
else
{
dfje=zydl*YDData->TBdjkp->FieldByName("djp")->AsFloat;
}
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat;
YDData->TBdjkp->FieldByName("jep")->AsFloat=dfje;
YDData->TBdjkp->Post();
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=0;
YDData->TBdbda->Post();
}
delete Query3;
}
//----------------------------------------
void TFdfjs::fd_f()
{
double fbxs=0;
double fbdl=0;
if (jsfsf=="定量")
{
fbxs=StrToFloat(gfbl);
if (fbxs>YDData->TBdbda->FieldByName("hjdlf")->AsFloat)
{
fbdl=YDData->TBdbda->FieldByName("hjdlf")->AsFloat;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlf")->AsFloat=0;
YDData->TBdbda->Post();
}
else
{
fbdl=fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlf")->AsFloat=YDData->TBdbda->FieldByName("hjdlf")->AsFloat-fbdl;
YDData->TBdbda->Post();
}
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlf")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
if (jsfsf=="定比")
{
fbxs=StrToFloat(gfbl)/100;
fbdl=(YDData->TBdbda->FieldByName("zdlf")->AsFloat)*fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlf")->AsFloat=YDData->TBdbda->FieldByName("hjdlf")->AsFloat-fbdl;
YDData->TBdbda->Post();
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlf")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
}
//--------------------------------------------
void TFdfjs::fd_g()
{
double fbxs=0;
double fbdl=0;
if (jsfsg=="定量")
{
fbxs=StrToFloat(dgbl);
if (fbxs>YDData->TBdbda->FieldByName("hjdlg")->AsFloat)
{
fbdl=YDData->TBdbda->FieldByName("hjdlg")->AsFloat;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlg")->AsFloat=0;
YDData->TBdbda->Post();
}
else
{
fbdl=fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlg")->AsFloat=YDData->TBdbda->FieldByName("hjdlg")->AsFloat-fbdl;
YDData->TBdbda->Post();
}
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlg")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
if (jsfsg=="定比")
{
fbxs=StrToFloat(dgbl)/100;
fbdl=(YDData->TBdbda->FieldByName("zdlg")->AsFloat)*fbxs;
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlg")->AsFloat=YDData->TBdbda->FieldByName("hjdlg")->AsFloat-fbdl;
YDData->TBdbda->Post();
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlg")->AsFloat=fbdl;
YDData->TBdjkp->Post();
}
}
//---------------------------------------------------------------------------
void TFdfjs::dfjs()
{
TQuery *Query1=new TQuery(this);
Query1->DatabaseName="YDDB";
AnsiString sql;
AnsiString hhhh=YDData->TByhda->FieldByName("hhhh")->AsString;
AnsiString hsqx=YDData->TBxtcs->FieldByName("xt_hsqx")->AsString;
double sycj,bycj,cs,bjdl,hjdl;
YDData->TBdbda->First();
while (!YDData->TBdbda->Eof)
{
YDData->TBdjkp->First();
while (!YDData->TBdjkp->Eof)
{
pdbl=YDData->TBdjkp->FieldByName("pdbl")->AsString;
gfbl=YDData->TBdjkp->FieldByName("gfbl")->AsString;
dgbl=YDData->TBdjkp->FieldByName("dgbl")->AsString;
jsfsp=YDData->TBdjkp->FieldByName("jsfsp")->AsString;
jsfsf=YDData->TBdjkp->FieldByName("jsfsf")->AsString;
jsfsg=YDData->TBdjkp->FieldByName("jsfsg")->AsString;
if (jsfsp!="收容"&&pdbl!="")
fd_p();
else
{
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlp")->AsFloat=YDData->TBdbda->FieldByName("hjdl")->AsFloat;
YDData->TBdjkp->Post();
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdl")->AsFloat=0;
YDData->TBdbda->Post();
}
if (jsfsf!="收容"&&gfbl!="")
fd_f();
else
{
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlf")->AsFloat=YDData->TBdbda->FieldByName("hjdlf")->AsFloat;
YDData->TBdjkp->Post();
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlf")->AsFloat=0;
YDData->TBdbda->Post();
}
if (jsfsg!="收容"&&dgbl!="")
fd_g();
else
{
YDData->TBdjkp->Edit();
YDData->TBdjkp->FieldByName("dlg")->AsFloat=YDData->TBdbda->FieldByName("hjdlg")->AsFloat;
YDData->TBdjkp->Post();
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("hjdlg")->AsFloat=0;
YDData->TBdbda->Post();
}
YDData->TBdjkp->Next();
}
YDData->TBdbda->Edit();
YDData->TBdbda->FieldByName("cszt")->AsString="2";
YDData->TBdbda->Post();
YDData->TBdbda->Next();
}
YDData->TBfjjj->First();
while (!YDData->TBfjjj->Eof)
{
YDData->TBfjjj->Edit();
YDData->TBfjjj->FieldByName("fj_dl")->AsFloat=YDData->TByhda->FieldByName("zjygdl")->AsFloat;
YDData->TBfjjj->FieldByName("fj_je")->AsFloat=
YDData->TByhda->FieldByName("zjygdl")->AsFloat*YDData->TBfjjj->FieldByName("fj_dj")->AsFloat;
YDData->TBfjjj->Post();
YDData->TBfjjj->Next();
}
Query1->SQL->Clear();
sql="select 'fjf'=sum(fj_je) from fjjj0000 where fj_hhhh='"+hhhh+"'";
Query1->SQL->Add(sql);
Query1->ExecSQL();
Query1->Open();
YDData->TByhda->Edit();
YDData->TByhda->FieldByName("fjf")->AsFloat=Query1->FieldByName("fjf")->AsFloat;
YDData->TByhda->Post();
Query1->Close();
Query1->SQL->Clear();
sql="update djkp0000 set jep=dlp*djp,jef=dlf*djf,jeg=dlg*djg where jsfsp<>'居民优待'and jsfsp<>'职工优待' and hhhh='"+hhhh+"'";
Query1->SQL->Add(sql);
Query1->ExecSQL();
Query1->SQL->Clear();
sql="select 'dddf'=sum(jep)+sum(jef)+sum(jeg) from djkp0000 where hhhh='"+hhhh+"'";
Query1->SQL->Add(sql);
Query1->ExecSQL();
Query1->Open();
YDData->TByhda->Edit();
YDData->TByhda->FieldByName("dddf")->AsFloat=Query1->FieldByName("dddf")->AsFloat;
YDData->TByhda->FieldByName("www")->AsFloat=YDData->TByhda->FieldByName("zjygdl")->AsFloat*YDData->TBxtcs->FieldByName("xt_wgfdj")->AsFloat;
YDData->TByhda->Post();
YDData->TByhda->Refresh();
if (YDData->TByhda->FieldByName("jbdj")->AsFloat>0&&YDData->TByhda->FieldByName("yxts")->AsFloat>0)
{
YDData->TByhda->Edit();
YDData->TByhda->FieldByName("jbdf")->AsFloat=YDData->TByhda->FieldByName("jbdj")->AsFloat*
YDData->TByhda->FieldByName("syrl")->AsFloat;
YDData->TByhda->Post();
}
else
{
YDData->TByhda->Edit();
YDData->TByhda->FieldByName("jbdf")->AsFloat=0;
YDData->TByhda->Post();
}
double llyg,llwg,sjll,jfbl;
llyg=YDData->TByhda->FieldByName("zjygdl")->AsFloat;
llwg=YDData->TByhda->FieldByName("zjwgdl")->AsFloat;
if (llyg!=0&&llwg!=0)
{
sjll=llyg/sqrt(llyg*llyg+llwg*llwg);
jfbl=jfbljs(sjll,YDData->TByhda->FieldByName("BZLL")->AsFloat);
YDData->TByhda->Edit();
YDData->TByhda->FieldByName("lldf")->AsFloat=Query1->FieldByName("dddf")->AsFloat*jfbl/100;
YDData->TByhda->FieldByName("jfbl")->AsFloat=jfbl;
YDData->TByhda->FieldByName("byll")->AsFloat=sjll;
YDData->TByhda->Post();
}
else
{
YDData->TByhda->Edit();
YDData->TByhda->FieldByName("lldf")->AsFloat=0;
YDData->TByhda->FieldByName("jfbl")->AsFloat=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -