📄 loadclass.cpp
字号:
// LoadClass.cpp : implementation file
//
#include "stdafx.h"
#include "CTSClient.h"
#include "LoadClass.h"
#include "LoadApplyCheck.h"
#include "LoadDisrepairRecord.h"
#include "LOAD_OPERATION_DETAIL.h"
#include "LoadBayNoListInfo.h"
#include "LoadContainerLocation.h"
#include "LoadArriveCheckNoQuery.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern SOCKET clientSocket;
extern CString voyageNoQuery;
extern int currentRow;
extern CString deliveryOrdischarge;
extern CString workDate;
extern CString workOrders;
/////////////////////////////////////////////////////////////////////////////
extern BOOL socketconnect;
/////////////////////////////////////////////////////////////////////////////
extern char recvbuf[10240];
extern char recvbuf2[3072];
extern char rectemp[50];
/////////////////////////////////////////////////////////////////////////////
// LoadClass dialog
LoadClass::LoadClass(CWnd* pParent /*=NULL*/)
: CDialog(LoadClass::IDD, pParent)
{
//{{AFX_DATA_INIT(LoadClass)
m_loadclass_containerNo = _T("");
m_shipName = _T("");
m_load_voyageNo = _T("");
m_deliveryPortNameC = _T("");
m_dischargePortNameC = _T("");
m_containerSize = _T("");
m_containerStatus = _T("");
m_containerType = _T("");
m_cargoWeight = _T("");
arriveCheckNo = _T("");
tallyListObjId = _T("");
tallyListItemObjectId = _T("");
containerNo = _T("");
sealNo = _T("");
containerSize = _T("");
containerStatus = _T("");
containerType = _T("");
cargoWeight = _T("");
dischargePortNameC = _T("");
deliveryPortNameC = _T("");
objectId = _T("");
//}}AFX_DATA_INIT
}
void LoadClass::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(LoadClass)
DDX_Control(pDX, IDC_LIST1, m_list_load);
DDX_Text(pDX, IDC_EDIT2, m_loadclass_containerNo);
DDX_Text(pDX, IDC_SHIPNAME, m_shipName);
DDX_Text(pDX, IDC_VOYAGENO, m_load_voyageNo);
DDX_Text(pDX, IDC_EDIT1, m_deliveryPortNameC);
DDX_Text(pDX, IDC_EDIT4, m_dischargePortNameC);
DDX_Text(pDX, IDC_EDIT8, m_containerSize);
DDX_Text(pDX, IDC_EDIT9, m_containerStatus);
DDX_Text(pDX, IDC_EDIT12, m_containerType);
DDX_Text(pDX, IDC_EDIT13, m_cargoWeight);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(LoadClass, CDialog)
//{{AFX_MSG_MAP(LoadClass)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_NOTIFY(HDN_BEGINDRAG, IDC_LIST1, OnBegindragList1)
ON_BN_CLICKED(IDC_BUTTON2, OnBtnSearch)
ON_BN_CLICKED(IDC_BUTTON3, OnBtnOperation)
ON_BN_CLICKED(IDC_BUTTON10, OnApplyCheck)
ON_BN_CLICKED(IDC_BUTTON9, OnDisrepairRecord)
ON_BN_CLICKED(IDC_BUTTON1, OnContainerOperation)
ON_BN_CLICKED(IDC_BUTTON11, OnLoadArriveCheckNoQuery)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// LoadClass message handlers
void LoadClass::InitLoadListCaption()
{
DWORD dwStyle=LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EDITLABELS;
m_list_load.SetExtendedStyle(dwStyle);
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
lvc.fmt=LVCFMT_CENTER;
RECT rect;
m_list_load.GetWindowRect(&rect);
int wid=rect.right-rect.left;
lvc.iSubItem = 0;
lvc.pszText = _T("目的港");
lvc.cx = 1;
m_list_load.InsertColumn(0,&lvc);
lvc.iSubItem = 1;
lvc.pszText = _T("主表流水号");
lvc.cx = 1;
m_list_load.InsertColumn(1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = _T("从表流水号");
lvc.cx = 1;
m_list_load.InsertColumn(2,&lvc);
lvc.iSubItem = 3;
lvc.pszText = _T("箱号");
lvc.cx = wid;
m_list_load.InsertColumn(3,&lvc);
lvc.iSubItem = 4;
lvc.pszText = _T("箱体尺寸");
lvc.cx = 1;
m_list_load.InsertColumn(4,&lvc);
lvc.iSubItem = 5;
lvc.pszText = _T("箱型");
lvc.cx = 1;
m_list_load.InsertColumn(5,&lvc);
lvc.iSubItem = 6;
lvc.pszText = _T("重量");
lvc.cx = 1;
m_list_load.InsertColumn(6,&lvc);
lvc.iSubItem = 7;
lvc.pszText = _T("中转港");
lvc.cx = 1;
m_list_load.InsertColumn(7,&lvc);
lvc.iSubItem = 8;
lvc.pszText = _T("铅封号");
lvc.cx = 1;
m_list_load.InsertColumn(8,&lvc);
lvc.iSubItem = 9;
lvc.pszText = _T("箱类");
lvc.cx = 1;
m_list_load.InsertColumn(9,&lvc);
lvc.iSubItem = 10;
lvc.pszText = _T("港口类型");
lvc.cx = 1;
m_list_load.InsertColumn(10,&lvc);
CImageList img;
img.Create(1,25,ILC_MASK,2,2);
m_list_load.SetImageList(&img,LVSIL_SMALL);
m_list_load.SetBkColor(RGB(247,247,255));
m_list_load.SetTextColor(RGB(0,0,255));
m_list_load.SetTextBkColor(RGB(247,247,255));
}
BOOL LoadClass::OnInitDialog()
{
CDialog::OnInitDialog();
InitLoadListCaption();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
const char* LoadClass::newGUID()
{
static char buf[38] = {0};
GUID guid;
if (S_OK == ::CoCreateGuid(&guid))
{
_snprintf(buf, sizeof(buf)
, "{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"
, guid.Data1
, guid.Data2
, guid.Data3
, guid.Data4[0], guid.Data4[1]
, guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5]
, guid.Data4[6], guid.Data4[7]
);
}
return (const char*)buf;
}
void LoadClass::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int iPos=m_list_load.GetSelectionMark();
m_deliveryPortNameC=m_list_load.GetItemText(iPos,0);
deliveryPortNameC=m_list_load.GetItemText(iPos,0);
tallyListItemObjectId=m_list_load.GetItemText(iPos,1);
tallyListObjId=m_list_load.GetItemText(iPos,2);
containerNo=m_list_load.GetItemText(iPos,3);
containerSize=m_list_load.GetItemText(iPos,4);
m_containerSize=m_list_load.GetItemText(iPos,4);
containerStatus=m_list_load.GetItemText(iPos,5);
m_containerStatus=m_list_load.GetItemText(iPos,5);
cargoWeight=m_list_load.GetItemText(iPos,6);
m_cargoWeight=m_list_load.GetItemText(iPos,6);
m_dischargePortNameC=m_list_load.GetItemText(iPos,7);
dischargePortNameC=m_list_load.GetItemText(iPos,7);
sealNo=m_list_load.GetItemText(iPos,8);
containerType=m_list_load.GetItemText(iPos,9);
m_containerType=m_list_load.GetItemText(iPos,9);
UpdateData(FALSE);
}
void LoadClass::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult)
{
HD_NOTIFY * phdn = (HD_NOTIFY *) pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void LoadClass::OnBtnSearch()
{
// TODO: Add your control notification handler code here
/////////////////////////////////////////////////////////////////////////////////////
if (!socketconnect)
{
MessageBox(_T("与服务器连接中断,请检查网络后重新登录该系统!"),_T("出错提示"));
return;
}
/////////////////////////////////////////////////////////////////////////////////////
UpdateData(true);
if (m_shipName== VT_EMPTY){
MessageBox(_T("请先查询船舶!"),_T("出错提示"));
return;
}
if (m_loadclass_containerNo == VT_EMPTY){
MessageBox(_T("请输入箱号!"),_T("出错提示"));
return;
}
if (m_loadclass_containerNo.GetLength() < 4){
MessageBox(_T("请输入箱号的后四位!!!"),_T("出错提示"));
m_loadclass_containerNo = _T("");
UpdateData(false);
return;
}
CString LLCSSQL = _T("");
LLCSSQL = " select f.portNameC,e.* from (select b.objectId, d.portNameC from tallylistitem b,region d where b.placeOfDeliveryObjId = d.objectId) f,(select b.objectId,b.masterObjId,b.containerNo,c.containerSize,b.containerStatus,b.cargoWeight,d.portNameC,b.sealNo,c.containerType,a.deliveryOrdischarge from tallylist a ,tallylistitem b,isoCode c,region d where a.objectID = b.masterObjId and c.objectId = b.isoCodeObjId and (b.portOfDischargeObjId = d.objectId ) and a.isLoad = '1' and a.objectId = '"+objectId+"' and b.containerNo like \'" + "%" + m_loadclass_containerNo + "\' ) e where e.objectId = f.objectId ";
LLCSSQL=" "+LLCSSQL+'\0';
int iSize = 0;
char* pszMultiByte;
iSize = WideCharToMultiByte(CP_ACP, 0, LLCSSQL, -1, NULL, 0, NULL, NULL);
pszMultiByte = (char*)malloc((iSize+1)*sizeof(char));
WideCharToMultiByte(CP_ACP, 0, LLCSSQL, -1, pszMultiByte, iSize, NULL, NULL);
*pszMultiByte=3;
pszMultiByte++;
*pszMultiByte=iSize/256;
pszMultiByte++;
*pszMultiByte=iSize%256;
pszMultiByte=pszMultiByte-2;
int i = 0,j = 0;
int retint = 0;
int totalnum = 0;
int itemcount = m_list_load.GetItemCount();
for (j=0;j<itemcount;j++)
m_list_load.DeleteItem(itemcount-1-j);
int mint=send(clientSocket,pszMultiByte,iSize,0);
free(pszMultiByte);
delete pszMultiByte;
int temp1 = 0,temp2 = 0,actint = 0;
retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
if (recvbuf2[0]==8 && retint==1)
{
MessageBox(_T("网络传输出错,请重新点击按钮再试一次!!!"),_T("提示"));
return;
}
if (recvbuf2[0]==27)
{
int itemcount = m_list_load.GetItemCount();
for (j=0;j<itemcount;j++)
m_list_load.DeleteItem(itemcount-1-j);
m_loadclass_containerNo= _T("");
m_deliveryPortNameC= _T("");
m_dischargePortNameC= _T("");
m_containerSize = _T("");
m_containerStatus = _T("");
m_containerType = _T("");
m_cargoWeight = _T("");
UpdateData(false);
MessageBox(_T("数据库中无此记录!"),_T("出错提示"),MB_OK);
return;
}
temp1=recvbuf2[0];
if (temp1<0)
temp1=temp1+256;
temp2=recvbuf2[1];
if (temp2<0)
temp2=temp2+256;
actint=temp1*256+temp2;
totalnum=0;
for (i=0;i<retint;i++)
recvbuf[totalnum+i]=recvbuf2[i];
recvbuf[0]=32;
recvbuf[1]=32;
totalnum+=retint;
while(totalnum!=actint)
{
retint=recv(clientSocket,recvbuf2,sizeof(recvbuf2),0);
for (i=0;i<retint;i++)
recvbuf[totalnum+i]=recvbuf2[i];
totalnum+=retint;
}
CString strtemp;
int rowcount,colcount;
char* ptch;
j=0;
rowcount=0;
colcount=0;
strtemp="";
m_list_load.InsertItem(rowcount,(LPCTSTR)strtemp);
for (i=0;i<totalnum;i++)
{
if (recvbuf[i]!=26 && recvbuf[i]!=27)
{
rectemp[j]=recvbuf[i];
j++;
}
if (recvbuf[i]==26 && j!=0)
{
rectemp[j]='\0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -