1297 lines
70 KiB
C#
1297 lines
70 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Data.OleDb;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Net.NetworkInformation;
|
||
using System.Threading;
|
||
using System.Windows.Forms;
|
||
using Microsoft.Win32;
|
||
using Oracle.ManagedDataAccess.Client;
|
||
using Sap.Data.SQLAnywhere;
|
||
using SuperMap.RealEstate.Windows.Controls.NetSocket;
|
||
using SuperMap.RealEstate.Windows.Forms;
|
||
using Business = SuperMap.RealEstate.SaleStore.Storage.Business;
|
||
|
||
namespace InventoryTool
|
||
{
|
||
|
||
public partial class InventoryToolMain : FormBase
|
||
{
|
||
BackgroundWorker bgWorker = new BackgroundWorker();
|
||
#region 公用项
|
||
static string dbip = "", dbport = "", dbname = "", dbuser = "", dbpass = "", conname = "", serverpartcode = "", shopcode = "", machinecode = "";
|
||
string SqlString = string.Empty;
|
||
string connString = string.Empty;
|
||
static string cashRegisterIP = "";
|
||
string odbcString = string.Empty;
|
||
string machineName = string.Empty;
|
||
string machineIP = string.Empty;
|
||
string strConnection = string.Empty;
|
||
string endAccountDate = string.Empty;
|
||
string serverpartshop_id = string.Empty;
|
||
string noBarCode = string.Empty;
|
||
string macAddress = string.Empty;
|
||
OleDbConnection con = null;
|
||
#endregion
|
||
#region 初始化页面
|
||
public InventoryToolMain()
|
||
{
|
||
string filePath = Path.GetFullPath("InventoryData.mdb");
|
||
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Persist Security Info=False";
|
||
con = new OleDbConnection(strConnection);
|
||
InitializeComponent();
|
||
|
||
bgWorker.WorkerReportsProgress = true;
|
||
bgWorker.WorkerSupportsCancellation = true;
|
||
bgWorker.DoWork += DoWork_Handler;
|
||
bgWorker.ProgressChanged += ProgressChanged_Handler;
|
||
bgWorker.RunWorkerCompleted += RunWorkerCompleted_Handler;
|
||
|
||
QueryOracle();
|
||
label11.Text = "";
|
||
|
||
|
||
Thread msgthr = new Thread(new ParameterizedThreadStart(msgtxt => { MessageBox.Show((string)msgtxt); }));
|
||
}
|
||
#endregion
|
||
|
||
#region 初始化
|
||
public OracleConnection QueryOracle()
|
||
{
|
||
try
|
||
{
|
||
//判断没有set.ini文件,那么就新建set.ini文件
|
||
if (File.Exists("D:\\HighWayPosSoft\\setup.ini"))
|
||
{
|
||
FileStream fs = new FileStream("D:\\HighWayPosSoft\\setup.ini", FileMode.Open);
|
||
StreamReader m_streamReader = new StreamReader(fs);
|
||
m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
|
||
string strLine = m_streamReader.ReadLine();
|
||
do
|
||
{
|
||
string[] split = strLine.Split('=');
|
||
string b = split[0];
|
||
if (b == "dbip")
|
||
dbip = split[1];
|
||
else if (b == "dbport")
|
||
dbport = split[1];
|
||
else if (b == "dbname")
|
||
dbname = split[1];
|
||
else if (b == "dbuser")
|
||
dbuser = split[1];
|
||
else if (b == "dbpass")
|
||
dbpass = split[1];
|
||
else if (b == "conname")
|
||
conname = split[1];
|
||
else if (b == "serverpartcode")
|
||
serverpartcode = split[1];
|
||
else if (b == "shopcode")
|
||
shopcode = split[1];
|
||
else if (b == "machinecode")
|
||
machinecode = split[1];
|
||
strLine = m_streamReader.ReadLine();
|
||
}
|
||
while (strLine != null);
|
||
m_streamReader.Close();
|
||
fs.Close();
|
||
}
|
||
else if (File.Exists("D:\\HighWayPosSoft\\set.ini"))
|
||
{
|
||
//如果已经存在set.ini文件,则直接读取它信息
|
||
FileStream fs = new FileStream("D:\\HighWayPosSoft\\set.ini", FileMode.Open);
|
||
StreamReader STRreader = new StreamReader(fs);
|
||
STRreader.BaseStream.Seek(0, SeekOrigin.Begin);
|
||
string STRline = STRreader.ReadLine();
|
||
do
|
||
{
|
||
string[] split = STRline.Split('=');
|
||
string i = split[0];
|
||
if (i == "dbip")
|
||
dbip = split[1];
|
||
else if (i == "dbport")
|
||
dbport = split[1];
|
||
else if (i == "dbname")
|
||
dbname = split[1];
|
||
else if (i == "dbuser")
|
||
dbuser = split[1];
|
||
else if (i == "dbpass")
|
||
dbpass = split[1];
|
||
else if (i == "conname")
|
||
conname = split[1];
|
||
else if (i == "serverpartcode")
|
||
serverpartcode = split[1];
|
||
else if (i == "shopcode")
|
||
shopcode = split[1];
|
||
else if (i == "machinecode")
|
||
machinecode = split[1];
|
||
STRline = STRreader.ReadLine();
|
||
}
|
||
while (STRline != null);
|
||
STRreader.Close();
|
||
fs.Close();
|
||
}
|
||
else
|
||
{
|
||
ServerSetting frm = new ServerSetting();
|
||
frm.ShowDialog();
|
||
|
||
if (frm.DialogResult == DialogResult.OK)
|
||
{
|
||
dbip = frm.Serverip;
|
||
dbport = frm.Serverport;
|
||
conname = frm.Connname;
|
||
dbuser = frm.User;
|
||
dbpass = frm.Pass;
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
}
|
||
connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = " + dbip + ")(PORT = " + dbport + "))(CONNECT_DATA = (SERVICE_NAME = " + conname + "))); User Id = " + dbuser + "; Password=" + dbpass + ";";
|
||
OracleConnection conn = new OracleConnection(connString);
|
||
|
||
string MACAddress = GetMACINFO();
|
||
|
||
#region 根据当前的Mac地址获取收银机IP和编号
|
||
//try
|
||
//{
|
||
// conn.Open();
|
||
// string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM HIGHWAY_EXCHANGE.T_MACHINEINFO A WHERE A.SHOPCODE=(" +
|
||
// "SELECT SHOPCODE FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE B.SHOPNAME ='" + cobSHOPCODE.Text + "') ORDER BY MACHINECODE ASC";
|
||
|
||
// ArrayList listCompanyID = new ArrayList();
|
||
// OracleCommand Com = new OracleCommand(comStr, conn);
|
||
// OracleDataReader rd = Com.ExecuteReader();
|
||
// if (rd.HasRows)
|
||
// {
|
||
// while (rd.Read())
|
||
// {
|
||
// listCompanyID.Add(rd["MACHINECODE"].ToString());
|
||
// }
|
||
// listCompanyID.Insert(0, "全部");
|
||
// CobMACHINECODE.DataSource = listCompanyID;
|
||
// rd.Dispose();
|
||
// }
|
||
// conn.Close();
|
||
//}
|
||
//catch (Exception ex)
|
||
//{
|
||
// LogHelper.WriteServiceLog(ex.Message);
|
||
// conn.Close();
|
||
//}
|
||
#endregion
|
||
#region 根据业态获取门店信息
|
||
try
|
||
{
|
||
conn.Open();
|
||
string comStr = "SELECT * FROM T_SHOPMESSAGE WHERE BUSINESSTYPE IN ('1000','1005','9001') ORDER BY SERVERPARTSHOP_ID ASC";
|
||
|
||
ArrayList listshopID = new ArrayList();
|
||
OracleCommand Com = new OracleCommand(comStr, conn);
|
||
OracleDataReader rd = Com.ExecuteReader();
|
||
if (rd.HasRows)
|
||
{
|
||
con.Open();
|
||
while (rd.Read())
|
||
{
|
||
listshopID.Add(rd["SHOPNAME"].ToString());
|
||
string shopnameSql = "SELECT * FROM SHOPMESSAGE WHERE SERVERPARTSHOP_ID=" + Convert.ToInt64(rd["SERVERPARTSHOP_ID"]);
|
||
OleDbCommand comshop = new OleDbCommand(shopnameSql, con);
|
||
OleDbDataReader drshop = comshop.ExecuteReader();
|
||
if (!drshop.HasRows)
|
||
{
|
||
string insert1Sql = "INSERT INTO SHOPMESSAGE (ServerpartShop_id,SHOPCODE,SHOPNAME,BUSINESSTYPE) values (" +
|
||
Convert.ToInt64(rd["SERVERPARTSHOP_ID"]) + ",'" + Convert.ToString(rd["SHOPCODE"]) + "','" +
|
||
Convert.ToString(rd["SHOPNAME"]) + "','" + Convert.ToString(rd["BUSINESSTYPE"]) + "')";
|
||
OleDbCommand com = new OleDbCommand(insert1Sql, con);
|
||
com.ExecuteNonQuery();
|
||
}
|
||
}
|
||
con.Close();
|
||
listshopID.Insert(0, "请选择门店");
|
||
cobSHOPCODE.DataSource = listshopID;
|
||
rd.Dispose();
|
||
}
|
||
conn.Close();
|
||
CommodityInfo.Focus();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
conn.Close();
|
||
}
|
||
#endregion
|
||
CommodityInfo.Focus();
|
||
return conn;
|
||
}
|
||
#endregion
|
||
|
||
#region 清空盘点数据按钮事件
|
||
private void button1_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (bgWorker.IsBusy)
|
||
{
|
||
MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
DialogResult dr = MessageBox.Show("盘点数据清空后将不可恢复!", "清空盘点数据", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
|
||
if (dr == DialogResult.OK)
|
||
{
|
||
con.Open();
|
||
string delSql = "delete * from CommodityInventory;delete * from SHOPMESSAGE";
|
||
OleDbCommand comm = new OleDbCommand(delSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
MessageBox.Show("数据已清空", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
con.Close();
|
||
}
|
||
CommodityInfo.Focus();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 查询
|
||
private void btnSearch_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (bgWorker.IsBusy)
|
||
{
|
||
MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
if (cobSHOPCODE.Text == "请选择门店")
|
||
{
|
||
MessageBox.Show("请先选择门店!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
else if (CobMACHINECODE.Text == "请选择收银机")
|
||
{
|
||
MessageBox.Show("请先选择收银机号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
else
|
||
{
|
||
con.Open();
|
||
string selectSql = @"select ID,CommodityBarCode,CommodityName,
|
||
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
|
||
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory
|
||
where CheckDate='" + AccountDate.Text + "'";
|
||
OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); //创建适配对象
|
||
DataTable dt = new DataTable(); //新建表对象
|
||
da.Fill(dt); //用适配对象填充表对象
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < dt.Rows.Count; i++)
|
||
{
|
||
dt.Rows[i]["ID"] = i + 1;
|
||
}
|
||
}
|
||
dataGridView1.DataSource = dt;
|
||
con.Close();
|
||
dataGridView1.MultiSelect = false;
|
||
dataGridView1.Rows[dataGridView1.RowCount - 1].Selected = true;
|
||
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
|
||
ChangeColor();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
con.Close();
|
||
}
|
||
}
|
||
|
||
private void Search_Click(object sender, EventArgs e)
|
||
{
|
||
if (bgWorker.IsBusy)
|
||
{
|
||
MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
if (cobSHOPCODE.Text == "请选择门店" || CobMACHINECODE.Text == "请选择收银机" || cobSHOPCODE.Text == "" || CobMACHINECODE.Text == "")
|
||
{
|
||
SelectDate frm1 = new SelectDate();
|
||
frm1.Text = "盘点查询门店选择";
|
||
frm1.ShowDialog();
|
||
if (frm1.DialogResult == DialogResult.OK)
|
||
{
|
||
Search.Enabled = false;
|
||
con.Open();
|
||
string selectSql = @"select ID,CommodityBarCode,CommodityName,
|
||
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
|
||
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory
|
||
where CheckDate='" + frm1.CheckDate + "'";
|
||
//MessageBox.Show(selectSql);
|
||
OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); //创建适配对象
|
||
DataTable dt = new DataTable(); //新建表对象
|
||
da.Fill(dt); //用适配对象填充表对象
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
for (int i = 0; i < dt.Rows.Count; i++)
|
||
{
|
||
dt.Rows[i]["ID"] = i + 1;
|
||
}
|
||
dataGridView1.DataSource = dt;
|
||
//MessageBox.Show(dt.Rows.Count.ToString());
|
||
dataGridView1.MultiSelect = false;
|
||
dataGridView1.Rows[dataGridView1.RowCount - 1].Selected = true;
|
||
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
|
||
}
|
||
con.Close();
|
||
CommodityInfo.Focus();
|
||
ChangeColor();
|
||
Search.Enabled = true;
|
||
}
|
||
else
|
||
{
|
||
this.btnSearch_Click(sender, e);
|
||
CommodityInfo.Focus();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
this.btnSearch_Click(sender, e);
|
||
CommodityInfo.Focus();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 扫描枪盘点
|
||
private void CommodityInfo_KeyDown(object sender, KeyEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (e.KeyCode == Keys.Enter)//判断回车键
|
||
{
|
||
if (bgWorker.IsBusy)
|
||
{
|
||
MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
commodityname.Focus();
|
||
commodityname.SelectAll();
|
||
return;
|
||
}
|
||
if (cobSHOPCODE.Text == "请选择门店")
|
||
{
|
||
MessageBox.Show("请先选择门店!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
commodityname.Focus();
|
||
commodityname.SelectAll();
|
||
}
|
||
else if (CobMACHINECODE.Text == "请选择收银机")
|
||
{
|
||
MessageBox.Show("请先选择收银机号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
commodityname.Focus();
|
||
commodityname.SelectAll();
|
||
}
|
||
else if (cobCHECKMODE.Text == "请选择盘点模式")
|
||
{
|
||
MessageBox.Show("请先选择盘点模式!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
commodityname.Focus();
|
||
commodityname.SelectAll();
|
||
}
|
||
else //保存盘点信息
|
||
{
|
||
commodityname.Text = "";
|
||
string commodityInfo = CommodityInfo.Text;
|
||
string[] sArray = commodityInfo.Split(',');
|
||
CommodityBarCode.Text = sArray[0].ToString();
|
||
CommodityNum.Text = sArray[1].ToString();
|
||
InventoryDate.Text = sArray[2].ToString();
|
||
con.Open();
|
||
string selectSql = "select * from CommodityInventory where CommodityBarCode='" + CommodityBarCode.Text +
|
||
"' and CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID = " + serverpartshop_id + "";
|
||
string updateSql = "";
|
||
OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con);
|
||
DataTable dt = new DataTable();
|
||
da.Fill(dt);
|
||
con.Close();
|
||
string barcode = @"select serverpartshop_id,commodity_name from DBA.t_commodityex" +
|
||
" where COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'";
|
||
SAConnection conany = new SAConnection(odbcString);
|
||
conany.Open();
|
||
SACommand _barcode = new SACommand(barcode, conany);
|
||
SADataReader barcodereader = _barcode.ExecuteReader();
|
||
if (barcodereader.HasRows)
|
||
{
|
||
if (barcodereader.Read())
|
||
{
|
||
commodityname.Text = Convert.ToString(barcodereader["commodity_name"]);
|
||
}
|
||
}
|
||
if (cobCHECKMODE.Text == "门店盘点")//门店盘点模式
|
||
{
|
||
string sellDate = @"SELECT SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,Max(SELLDATA_DATE) as InventoryDate
|
||
FROM DBA.t_commodityex a, DBA.t_selldata b WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND
|
||
b.SELLDATA_DATE > '" + AccountDate.Text + "'" + " AND A.SERVERPARTSHOP_ID= " + serverpartshop_id +
|
||
" AND b.SELLDATA_DATE <= '" + InventoryDate.Text + "' AND A.COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'";
|
||
SACommand sellCommand = new SACommand(sellDate, conany);
|
||
SADataReader sellRead = sellCommand.ExecuteReader();
|
||
if (sellRead.HasRows)//判断是否有流水
|
||
{
|
||
if (sellRead.Read())
|
||
{
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow dr in dt.Rows)
|
||
{
|
||
if (Convert.ToDateTime(dr["InventoryDate"]) <= Convert.ToDateTime(InventoryDate.Text))
|
||
{
|
||
updateSql = @"update CommodityInventory set InventoryNum=" +
|
||
(Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) +
|
||
Convert.ToInt32(CommodityNum.Text)) + ",SellCount=" + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) +
|
||
",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) +
|
||
Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
|
||
Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",InventoryDate='" +
|
||
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "' where CommodityBarCode='" +
|
||
CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(updateSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
}
|
||
else
|
||
{
|
||
updateSql = @"update CommodityInventory set InventoryNum=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) +
|
||
Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" :
|
||
dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
|
||
Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) +
|
||
" where CommodityBarCode='" + CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(updateSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
}
|
||
}
|
||
conany.Close();
|
||
}
|
||
else
|
||
{
|
||
string insertSql = "insert into CommodityInventory (CommodityBarCode,CommodityName,InventoryNum,SellCount,TotalCount,InventoryDate,ServerpartShop_id," +
|
||
"CheckDate) values ('" + CommodityBarCode.Text + "','" + commodityname.Text + "'," + CommodityNum.Text + "," +
|
||
Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + "," +
|
||
(Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) +
|
||
",'" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')";
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(insertSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
conany.Close();
|
||
}
|
||
}
|
||
}
|
||
else //没有流水记录
|
||
{
|
||
//string barcode = @"select serverpartshop_id,commodity_name from DBA.t_commodityex
|
||
// where COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'";
|
||
//OdbcCommand _barcode = new OdbcCommand(barcode, conany);
|
||
//OdbcDataReader barcodereader = _barcode.ExecuteReader();
|
||
if (barcodereader.HasRows)
|
||
{
|
||
|
||
string insertSql = @"insert into CommodityInventory (CommodityBarCode,InventoryNum,SellCount,TotalCount,InventoryDate,ServerpartShop_id ,CheckDate)
|
||
values ('" + CommodityBarCode.Text + "'," + CommodityNum.Text + "," + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) +
|
||
"," + (CommodityNum.Text + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",'" +
|
||
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')";
|
||
conany.Close();
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(insertSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
//commodityname.Text = barcodereader["commodity_name"].ToString();
|
||
}
|
||
else
|
||
{
|
||
noBarCode += CommodityBarCode.Text;
|
||
CommodityInfo.Clear();
|
||
CommodityInfo.Focus();
|
||
return;
|
||
}
|
||
|
||
noBarCode += CommodityBarCode.Text;
|
||
CommodityInfo.Clear();
|
||
CommodityInfo.Focus();
|
||
return;
|
||
}
|
||
}
|
||
else //仓库盘点模式
|
||
{
|
||
if (barcodereader.HasRows) //检查条码是否存在
|
||
{
|
||
if (dt.Rows.Count > 0) //有盘点记录
|
||
{
|
||
foreach (DataRow dr in dt.Rows)
|
||
{
|
||
if (Convert.ToDateTime(dr["InventoryDate"]) < Convert.ToDateTime(InventoryDate.Text)) //盘点录入时间大于上一条记录
|
||
{
|
||
|
||
updateSql = "update CommodityInventory set CheckDesc=" + (Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
|
||
Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" :
|
||
dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
|
||
Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + ",InventoryDate='" +
|
||
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "' where CommodityBarCode='" +
|
||
CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(updateSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
}
|
||
else //盘点录入时间小于上一条记录
|
||
{
|
||
updateSql = "update CommodityInventory set CheckDesc=" + (Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
|
||
Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" :
|
||
dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
|
||
Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + " where CommodityBarCode='" +
|
||
CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(updateSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
}
|
||
}
|
||
conany.Close();
|
||
}
|
||
|
||
else //没有盘点记录
|
||
{
|
||
string insertSql = "insert into CommodityInventory (CommodityBarCode,CommodityName,CheckDesc,TotalCount,InventoryDate,ServerpartShop_id ,CheckDate) values ('" +
|
||
CommodityBarCode.Text + "','" + commodityname.Text + "'," + CommodityNum.Text + "," + (Convert.ToInt32(CommodityNum.Text)) + ",'" +
|
||
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')";
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(insertSql, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
conany.Close();
|
||
}
|
||
|
||
this.btnSearch_Click(sender, e);
|
||
CommodityInfo.Clear();
|
||
CommodityInfo.Focus();
|
||
}
|
||
else
|
||
{
|
||
noBarCode += CommodityBarCode.Text;
|
||
CommodityInfo.Clear();
|
||
CommodityInfo.Focus();
|
||
return;
|
||
}
|
||
}
|
||
this.btnSearch_Click(sender, e);
|
||
CommodityInfo.Clear();
|
||
CommodityInfo.Focus();
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
con.Close();
|
||
|
||
}
|
||
CommodityInfo.Focus();
|
||
}
|
||
#endregion
|
||
|
||
#region 数据校对
|
||
private void btnCheck_Click(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (bgWorker.IsBusy)
|
||
{
|
||
MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
return;
|
||
}
|
||
if (cobSHOPCODE.Text == "请选择门店" || cobSHOPCODE.Text == "")
|
||
{
|
||
MessageBox.Show("请先选择门店!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
else if (CobMACHINECODE.Text == "请选择收银机" || CobMACHINECODE.Text == "")
|
||
{
|
||
MessageBox.Show("请先选择收银机号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
else
|
||
{
|
||
SADataReader reader = null;
|
||
SAConnection conany = new SAConnection(odbcString);
|
||
conany.Open();
|
||
|
||
string commodity = @"SELECT a.COMMODITY_NAME AS CommodityName,a.COMMODITY_BARCODE AS CommodityBarCode,0 AS InventoryNum,
|
||
SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,Max(SELLDATA_DATE) as InventoryDate
|
||
FROM DBA.t_commodityex a, DBA.t_selldata b
|
||
WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND SELLDATA_DATE > '" + AccountDate.Text +
|
||
"' AND A.SERVERPARTSHOP_ID='" + serverpartshop_id + "' GROUP BY a.COMMODITY_NAME,a.COMMODITY_BARCODE";
|
||
|
||
SACommand command = new SACommand(commodity, conany);
|
||
reader = command.ExecuteReader();
|
||
DataTable dt = new DataTable(); //新建表对象
|
||
dt.Load(reader);
|
||
|
||
con.Open();
|
||
string selectSql = @"
|
||
select CommodityBarCode,
|
||
iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum,
|
||
iif(isnull(SellCount),0,SellCount) AS SellCount,
|
||
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate
|
||
from CommodityInventory
|
||
where InventoryDate > '" + AccountDate.Text + "'";
|
||
OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con);
|
||
DataTable dtInventory = new DataTable();
|
||
daInventory.Fill(dtInventory);
|
||
foreach (DataRow sell in dt.Rows)
|
||
{
|
||
bool has = false;
|
||
|
||
DataRow[] InvDr = dtInventory.Select("CommodityBarCode='" + sell["CommodityBarCode"].ToString() + "'");
|
||
if (InvDr.Length > 0)
|
||
{
|
||
string sellDate = @"SELECT SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,
|
||
Max(SELLDATA_DATE) as InventoryDate FROM DBA.t_commodityex a, DBA.t_selldata b
|
||
WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND SELLDATA_DATE > '" + AccountDate.Text + "'" +
|
||
"AND A.SERVERPARTSHOP_ID= " + serverpartshop_id + " AND b.SELLDATA_DATE <= '" +
|
||
InvDr[0]["InventoryDate"].ToString() + "' AND A.COMMODITY_BARCODE = '" +
|
||
sell["CommodityBarCode"].ToString() + "'";
|
||
SACommand sellCommand = new SACommand(sellDate, conany);
|
||
SADataReader sellRead = sellCommand.ExecuteReader();
|
||
if (sellRead.HasRows)
|
||
{
|
||
has = true;
|
||
string updateSql = @"update CommodityInventory set SellCount=" +
|
||
Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) +
|
||
",TotalCount=" + (Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" :
|
||
sellRead["SellCount"]) + Convert.ToInt32(InvDr[0]["InventoryNum"])) +
|
||
" where CommodityBarCode='" + sell["CommodityBarCode"].ToString() + "'";
|
||
OleDbCommand comm = new OleDbCommand(updateSql, con);
|
||
comm.ExecuteNonQuery();
|
||
|
||
}
|
||
}
|
||
if (!has)
|
||
{
|
||
string insertSql = @"insert into CommodityInventory
|
||
(CommodityBarCode,CommodityName,InventoryNum,SellCount,TotalCount,InventoryDate,CheckDate)
|
||
values ('" + sell["CommodityBarCode"] + "','" + sell["CommodityName"].ToString() + "',0," + Convert.ToInt32(sell["SellCount"]) +
|
||
"," + Convert.ToInt32(sell["SellCount"]) + ",'" + sell["InventoryDate"] +
|
||
"','" + AccountDate.Text + "')";
|
||
OleDbCommand comm = new OleDbCommand(insertSql, con);
|
||
comm.ExecuteNonQuery();
|
||
}
|
||
|
||
}
|
||
|
||
conany.Close();
|
||
con.Close();
|
||
if (!string.IsNullOrEmpty(noBarCode))
|
||
{
|
||
MessageBox.Show("收银机不存在条码为:'" + noBarCode + "'的商品", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show("数据校验成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
this.btnSearch_Click(sender, e);
|
||
CommodityInfo.Clear();
|
||
CommodityInfo.Focus();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
con.Close();
|
||
CommodityInfo.Focus();
|
||
}
|
||
}
|
||
|
||
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||
{
|
||
CommodityInfo.Focus();
|
||
ChangeColor();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 门店选项改变事件
|
||
private void cobSHOPCODE_SelectedIndexChanged_1(object sender, EventArgs e)
|
||
{
|
||
OracleConnection conn = new OracleConnection(connString);
|
||
#region 根据当前门店获取收银机IP和编号
|
||
try
|
||
{
|
||
if (cobSHOPCODE.Text != "请选择门店")
|
||
{
|
||
conn.Open();
|
||
string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS,MACHINENAME FROM HIGHWAY_EXCHANGE.T_MACHINEINFO A WHERE A.SHOPCODE=(" +
|
||
"SELECT SHOPCODE FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE B.SHOPNAME ='" + cobSHOPCODE.Text + "') ORDER BY MACHINECODE ASC";
|
||
|
||
ArrayList listCompanyID = new ArrayList();
|
||
OracleCommand Com = new OracleCommand(comStr, conn);
|
||
OracleDataReader rd = Com.ExecuteReader();
|
||
if (rd.HasRows)
|
||
{
|
||
while (rd.Read())
|
||
{
|
||
listCompanyID.Add(rd["MACHINECODE"].ToString());
|
||
}
|
||
listCompanyID.Insert(0, "请选择收银机");
|
||
CobMACHINECODE.DataSource = listCompanyID;
|
||
rd.Dispose();
|
||
ArrayList listmode = new ArrayList();
|
||
listmode.Insert(0, "请选择盘点模式");
|
||
listmode.Add("门店盘点");
|
||
listmode.Add("仓库盘点");
|
||
cobCHECKMODE.DataSource = listmode;
|
||
|
||
}
|
||
conn.Close();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
conn.Close();
|
||
}
|
||
#endregion
|
||
CommodityInfo.Focus();
|
||
}
|
||
#endregion
|
||
|
||
#region 收银机号选项改变事件
|
||
private void CobMACHINECODE_SelectedIndexChanged_1(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (CobMACHINECODE.Text != "请选择收银机")
|
||
{
|
||
OracleConnection conn = new OracleConnection(connString);
|
||
conn.Open();
|
||
string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM T_MACHINEINFO WHERE MACHINECODE = '" +
|
||
CobMACHINECODE.Text + "'";
|
||
ArrayList listCompanyID = new ArrayList();
|
||
OracleCommand Com = new OracleCommand(comStr, conn);
|
||
OracleDataReader rd = Com.ExecuteReader();
|
||
if (rd.HasRows)
|
||
{
|
||
while (rd.Read())
|
||
{
|
||
cashRegisterIP = rd["MACHINE_IP"].ToString();
|
||
macAddress = rd["MACHINE_MACADDRESS"].ToString();
|
||
}
|
||
}
|
||
conn.Close();
|
||
|
||
#region 根据Mac地址获取收银机IP和名称
|
||
try
|
||
{
|
||
conn.Open();
|
||
string registerIPSql = "SELECT MACHINE_IP,MACHINENAME,SERVERPARTCODE,SHOPCODE FROM T_MACHINEINFO WHERE MACHINE_MACADDRESS = '" + macAddress + "'";
|
||
|
||
OracleCommand registerIPCom = new OracleCommand(registerIPSql, conn);
|
||
OracleDataReader registerIPrd = registerIPCom.ExecuteReader();
|
||
if (registerIPrd.HasRows)
|
||
{
|
||
while (registerIPrd.Read())
|
||
{
|
||
machineIP = registerIPrd["MACHINE_IP"].ToString();
|
||
machineName = registerIPrd["MACHINENAME"].ToString();
|
||
serverpartcode = registerIPrd["SERVERPARTCODE"].ToString();
|
||
shopcode = registerIPrd["SHOPCODE"].ToString();
|
||
}
|
||
}
|
||
conn.Close();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
conn.Close();
|
||
}
|
||
#endregion
|
||
//odbcString = "DSN=anysql1;UID=dba;PWD=sql;";
|
||
//odbcString = "driver={RY Sybase SQL Anywhere 11.0};Dsn=" + machineName + ";UID=dba;PWD=sql;" +
|
||
// "servername=" + machineName + ";commlinks='SharedMemory,TCPIP{host=" + machineIP + "}'";
|
||
odbcString = "host=" + machineIP + ";server=" + machineName + ";userid=dba;password=sql";
|
||
#region 获取门店编号
|
||
try
|
||
{
|
||
SAConnection conany = new SAConnection(odbcString);
|
||
conany.Open();
|
||
string serverpartshopid = @"select serverpartshop_id from DBA.t_shopmessage
|
||
where serverpartcode='" + serverpartcode + "' and shopcode=" + shopcode + "";
|
||
SACommand _serverpartshopid = new SACommand(serverpartshopid, conany);
|
||
SADataReader shopidreader = _serverpartshopid.ExecuteReader();
|
||
if (shopidreader.HasRows)
|
||
{
|
||
while (shopidreader.Read())
|
||
{
|
||
serverpartshop_id = shopidreader["serverpartshop_id"].ToString();
|
||
}
|
||
}
|
||
conany.Close();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show("收银机连接失败,请重新选择!");
|
||
throw new Exception("shopcode " + ex.Message);
|
||
}
|
||
#endregion
|
||
|
||
#region 获取最近的结账日期
|
||
try
|
||
{
|
||
string checkDate = @"SELECT ENDACCOUNT_DATE FROM DBA.t_endaccount where ENDACCOUNT_DATE > Getdate()-5 ORDER BY ENDACCOUNT_DATE DESC";
|
||
SAConnection conany = new SAConnection(odbcString);
|
||
conany.Open();
|
||
AccountDate.Items.Clear();
|
||
SACommand _checkDate = new SACommand(checkDate, conany);
|
||
SADataReader checkDateRd = _checkDate.ExecuteReader();
|
||
if (checkDateRd.HasRows)
|
||
{
|
||
while (checkDateRd.Read())
|
||
{
|
||
AccountDate.Items.Add(checkDateRd[0].ToString());
|
||
//endAccountDate = Convert.ToDateTime(checkDateRd["ENDACCOUNT_DATE"]).ToString("yyyy/MM/dd HH:mm:ss");
|
||
}
|
||
}
|
||
conany.Close();
|
||
AccountDate.SelectedIndex = 0;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
throw new Exception("endaccount" + ex.Message);
|
||
}
|
||
#endregion
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
}
|
||
CommodityInfo.Focus();
|
||
}
|
||
#endregion
|
||
|
||
private void AccountDate_SelectedIndexChanged_1(object sender, EventArgs e)
|
||
{
|
||
CommodityInfo.Focus();
|
||
}
|
||
|
||
private void cobCHECKMODE_SelectedIndexChanged_1(object sender, EventArgs e)
|
||
{
|
||
CommodityInfo.Focus();
|
||
}
|
||
|
||
#region 获取MAC地址
|
||
public static string GetMACINFO()
|
||
{
|
||
string key = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
|
||
string MacAddress = string.Empty;
|
||
try
|
||
{
|
||
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
|
||
foreach (NetworkInterface adapter in nics)
|
||
{
|
||
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet
|
||
&& adapter.GetPhysicalAddress().ToString().Length != 0)
|
||
{
|
||
string fRegistryKey = key + adapter.Id + "\\Connection";
|
||
RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);
|
||
if (rk != null)
|
||
{
|
||
string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();
|
||
int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
|
||
if (fPnpInstanceID.Length > 3 &&
|
||
fPnpInstanceID.Substring(0, 3) == "PCI")
|
||
{
|
||
MacAddress = adapter.GetPhysicalAddress().ToString();
|
||
for (int i = 1; i < 6; i++)
|
||
{
|
||
MacAddress = MacAddress.Insert(3 * i - 1, ":");
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
//这里写异常的处理
|
||
}
|
||
return MacAddress;
|
||
}
|
||
#endregion
|
||
|
||
#region 上传数据到服务区
|
||
|
||
private void btnUpLoad_Click(object sender, EventArgs e)
|
||
{
|
||
if (!bgWorker.IsBusy)
|
||
{
|
||
bgWorker.RunWorkerAsync();
|
||
}
|
||
#region 改用多线程
|
||
//int temp = 0;
|
||
//int tmp = 0;
|
||
//int i = 0;
|
||
////if (cobSHOPCODE.Text == "请选择门店")
|
||
////{
|
||
//// MessageBox.Show("请先选择门店!");
|
||
////}
|
||
////else if (CobMACHINECODE.Text == "请选择收银机")
|
||
////{
|
||
//// MessageBox.Show("请先选择收银机号!");
|
||
////}
|
||
////else
|
||
////{
|
||
//SelectDate frm1 = new SelectDate();
|
||
//frm1.Text = "盘点上传门店选择";
|
||
//frm1.ShowDialog();
|
||
//if (frm1.DialogResult == DialogResult.OK)
|
||
//{
|
||
|
||
// progressBar1.Visible = true;
|
||
// label11.Visible = true;
|
||
// progressBar1.Value = 0;
|
||
// try
|
||
// {
|
||
// string log = string.Empty;
|
||
// con.Open();
|
||
// string selectSql = @"
|
||
// select CommodityBarCode,iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum,
|
||
// iif(isnull(SellCount),0,SellCount) AS SellCount,
|
||
// iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
// iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,CheckDate
|
||
// from CommodityInventory
|
||
// where CheckDate = '" + frm1.CheckDate + "'";
|
||
// OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con);
|
||
// DataTable dtInventory = new DataTable();
|
||
// daInventory.Fill(dtInventory);
|
||
// con.Close();
|
||
// foreach (DataRow dr in dtInventory.Rows)
|
||
// {
|
||
// string updateSql = @"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A SET A.CUROVERPLUSCOUNT = " + dr["TotalCount"] +
|
||
// ",A.CHECKDESC = '仓库数量:" + dr["CheckDesc"] + "' WHERE COMMODITY_BARCODE = '" + dr["CommodityBarCode"] +
|
||
// "' AND exists(select 1 from SALESTORE_STORAGE.T_CHECKCOMMODITY b where a.CHECKCOMMODITY_ID = b.CHECKCOMMODITY_ID and " +
|
||
// " b.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss') and b.SERVERPARTSHOP_ID = " + frm1.Shop_id +
|
||
// " and b.CHECK_STATE = 0 and b.CHECK_TYPE IN(1000,3000))";
|
||
// string selectStr = @"SELECT A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A ,SALESTORE_STORAGE.T_CHECKCOMMODITY B
|
||
// WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND COMMODITY_BARCODE='" + dr["CommodityBarCode"] +
|
||
// "' AND B.SERVERPARTSHOP_ID=" + frm1.Shop_id + " AND B.CHECK_STATE = 0 AND B.CHECK_TYPE IN(1000,3000)" +
|
||
// " AND B.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss')";
|
||
// Business.CHECKCOMMODITYDETAIL _CHECKCOMMODITYDETAIL = new Business.CHECKCOMMODITYDETAIL(this.Transaction);
|
||
// DataTable dt = _CHECKCOMMODITYDETAIL.ExecuteDataTable(selectStr, null);
|
||
// i++;
|
||
// label11.Text = "正在上传盘点数据,进度:" + (int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100) + "%";
|
||
// //Application.DoEvents();
|
||
// progressBar1.Value = (int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100);
|
||
// if (dt.Rows.Count > 0)
|
||
// {
|
||
// _CHECKCOMMODITYDETAIL.ExecuteNonQuery(updateSql, null);
|
||
// string updateSql1 = "UPDATE CommodityInventory SET Flag = 0 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'";
|
||
// con.Open();
|
||
// OleDbCommand comm = new OleDbCommand(updateSql1, con);
|
||
// comm.ExecuteNonQuery();
|
||
// con.Close();
|
||
// tmp++;
|
||
// }
|
||
// else
|
||
// {
|
||
// string updateSql1 = "UPDATE CommodityInventory SET Flag = 1 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'";
|
||
// con.Open();
|
||
// OleDbCommand comm = new OleDbCommand(updateSql1, con);
|
||
// comm.ExecuteNonQuery();
|
||
// con.Close();
|
||
// log += dr["CommodityBarCode"].ToString() + ",\r\n";
|
||
// temp++;
|
||
// }
|
||
// }
|
||
// // string checkcommodity=@" INSERT INTO SALESTORE_STORAGE.T_CHECKCOMMODITY (CHECKPERSON,CHECKDATE,SERVERPART_ID,
|
||
// // SERVERPARTSHOP_ID,CHECKCOMMODITY_DESC,CHECK_STATE,CHECK_PASSPORT_GUID,CHECK_TYPE)
|
||
// // VALUES ()"
|
||
// Business.CHECKCOMMODITY _CHECKCOMMODITY = new Business.CHECKCOMMODITY(this.Transaction);
|
||
// label11.Text = "盘点数据上传完成!";
|
||
// if (!string.IsNullOrEmpty(log))
|
||
// {
|
||
// MessageBox.Show("盘点数据上传结束!成功" + tmp + "条;失败" + temp + "条;\r\n失败原因:本期盘点无入库记录。点击确定查看失败记录详情");
|
||
// con.Open();
|
||
// string selectSqllocal = @"select ID,CommodityBarCode,CommodityName,
|
||
// iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
|
||
// iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
// iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory
|
||
// where CheckDate='" + frm1.CheckDate + "'AND Flag = 1";
|
||
// OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象
|
||
// DataTable dt1 = new DataTable(); //新建表对象
|
||
// da.Fill(dt1); //用适配对象填充表对象
|
||
// dataGridView1.DataSource = dt1;
|
||
// con.Close();
|
||
// CommodityInfo.Focus();
|
||
// ChangeColor();
|
||
// label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条;失败" + temp + "条,失败原因:无入库记录";
|
||
// progressBar1.Visible = false;
|
||
// }
|
||
// else
|
||
// {
|
||
// MessageBox.Show("盘点数据上传完成!上传成功" + tmp + "条盘点记录");
|
||
// con.Open();
|
||
// string selectSqllocal = @"select ID,CommodityBarCode,CommodityName,
|
||
// iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
|
||
// iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
// iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory
|
||
// where CheckDate='" + frm1.CheckDate + "'";
|
||
// OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象
|
||
// DataTable dt1 = new DataTable(); //新建表对象
|
||
// da.Fill(dt1); //用适配对象填充表对象
|
||
// dataGridView1.DataSource = dt1;
|
||
// con.Close();
|
||
// CommodityInfo.Focus();
|
||
// label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条。";
|
||
// progressBar1.Visible = false;
|
||
// }
|
||
// }
|
||
// catch (Exception ex)
|
||
// {
|
||
// LogHelper.WriteServiceLog(ex.Message);
|
||
// con.Close();
|
||
// }
|
||
//}
|
||
#endregion
|
||
}
|
||
#endregion
|
||
|
||
#region 多线程上传数据,避免程序假死
|
||
private void ProgressChanged_Handler(object sender, ProgressChangedEventArgs args)
|
||
{
|
||
progressBar1.Visible = true;
|
||
label11.Visible = true;
|
||
progressBar1.Value = args.ProgressPercentage;
|
||
label11.Text = "正在上传盘点数据,进度:" + args.ProgressPercentage.ToString() + "%";
|
||
}
|
||
|
||
private void DoWork_Handler(object sender, DoWorkEventArgs args)
|
||
{
|
||
BackgroundWorker worker = sender as BackgroundWorker;
|
||
try
|
||
{
|
||
int temp = 0;
|
||
int tmp = 0;
|
||
int i = 0;
|
||
SelectDate frm1 = new SelectDate();
|
||
frm1.Text = "盘点上传门店选择";
|
||
frm1.ShowDialog();
|
||
if (frm1.DialogResult == DialogResult.OK)
|
||
{
|
||
|
||
string log = string.Empty;
|
||
con.Open();
|
||
string selectSql = @"
|
||
select CommodityBarCode,iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum,
|
||
iif(isnull(SellCount),0,SellCount) AS SellCount,
|
||
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,CheckDate
|
||
from CommodityInventory
|
||
where CheckDate = '" + frm1.CheckDate + "'";
|
||
OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con);
|
||
DataTable dtInventory = new DataTable();
|
||
daInventory.Fill(dtInventory);
|
||
con.Close();
|
||
foreach (DataRow dr in dtInventory.Rows)
|
||
{
|
||
string updateSql = @"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A SET A.CUROVERPLUSCOUNT = " + dr["TotalCount"] +
|
||
",A.CHECKDESC = '仓库数量:" + dr["CheckDesc"] + "' WHERE COMMODITY_BARCODE = '" + dr["CommodityBarCode"] +
|
||
"' AND exists(select 1 from SALESTORE_STORAGE.T_CHECKCOMMODITY b where a.CHECKCOMMODITY_ID = b.CHECKCOMMODITY_ID and " +
|
||
" b.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss') and b.SERVERPARTSHOP_ID = " + frm1.Shop_id +
|
||
" and b.CHECK_STATE = 0 and b.CHECK_TYPE IN(1000,3000))";
|
||
string selectStr = @"SELECT A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A ,SALESTORE_STORAGE.T_CHECKCOMMODITY B
|
||
WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND COMMODITY_BARCODE='" + dr["CommodityBarCode"] +
|
||
"' AND B.SERVERPARTSHOP_ID=" + frm1.Shop_id + " AND B.CHECK_STATE = 0 AND B.CHECK_TYPE IN(1000,3000)" +
|
||
" AND B.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss')";
|
||
Business.CHECKCOMMODITYDETAIL _CHECKCOMMODITYDETAIL = new Business.CHECKCOMMODITYDETAIL(this.Transaction);
|
||
DataTable dt = _CHECKCOMMODITYDETAIL.ExecuteDataTable(selectStr, null);
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
_CHECKCOMMODITYDETAIL.ExecuteNonQuery(updateSql, null);
|
||
string updateSql1 = "UPDATE CommodityInventory SET Flag = 0 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'";
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(updateSql1, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
tmp++;
|
||
}
|
||
else
|
||
{
|
||
string updateSql1 = "UPDATE CommodityInventory SET Flag = 1 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'";
|
||
con.Open();
|
||
OleDbCommand comm = new OleDbCommand(updateSql1, con);
|
||
comm.ExecuteNonQuery();
|
||
con.Close();
|
||
log += dr["CommodityBarCode"].ToString() + ",\r\n";
|
||
temp++;
|
||
}
|
||
i++;
|
||
//label11.Text = "正在上传盘点数据,进度:" + (int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100) + "%";
|
||
//Application.DoEvents();
|
||
worker.ReportProgress((int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100));
|
||
}
|
||
// string checkcommodity=@" INSERT INTO SALESTORE_STORAGE.T_CHECKCOMMODITY (CHECKPERSON,CHECKDATE,SERVERPART_ID,
|
||
// SERVERPARTSHOP_ID,CHECKCOMMODITY_DESC,CHECK_STATE,CHECK_PASSPORT_GUID,CHECK_TYPE)
|
||
// VALUES ()"
|
||
Business.CHECKCOMMODITY _CHECKCOMMODITY = new Business.CHECKCOMMODITY(this.Transaction);
|
||
//label11.Text = "盘点数据上传完成!";
|
||
if (!string.IsNullOrEmpty(log))
|
||
{
|
||
ShowMessage("盘点数据上传结束!成功" + tmp + "条;失败" + temp + "条;\r\n失败原因:本期盘点无入库记录。点击确定查看失败记录详情");
|
||
con.Open();
|
||
string selectSqllocal = @"select ID,CommodityBarCode,CommodityName,
|
||
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
|
||
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory
|
||
where CheckDate='" + frm1.CheckDate + "'AND Flag = 1";
|
||
OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象
|
||
DataTable dt1 = new DataTable(); //新建表对象
|
||
da.Fill(dt1); //用适配对象填充表对象
|
||
if (dt1.Rows.Count > 0)
|
||
{
|
||
for (int r = 0; r < dt1.Rows.Count; r++)
|
||
{
|
||
dt1.Rows[r]["ID"] = r + 1;
|
||
}
|
||
}
|
||
ViewData(dt1, "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条;失败" + temp + "条,失败原因:无入库记录");
|
||
//dataGridView1.DataSource = dt1;
|
||
con.Close();
|
||
CommodityInfo.Focus();
|
||
ChangeColor();
|
||
//label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条;失败" + temp + "条,失败原因:无入库记录";
|
||
//progressBar1.Visible = false;
|
||
}
|
||
else
|
||
{
|
||
ShowMessage("盘点数据上传完成!上传成功" + tmp + "条盘点记录");
|
||
con.Open();
|
||
string selectSqllocal = @"select ID,CommodityBarCode,CommodityName,
|
||
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
|
||
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
|
||
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory
|
||
where CheckDate='" + frm1.CheckDate + "'";
|
||
OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象
|
||
DataTable dt1 = new DataTable(); //新建表对象
|
||
da.Fill(dt1); //用适配对象填充表对象
|
||
if (dt1.Rows.Count > 0)
|
||
{
|
||
for (int r = 0; r < dt1.Rows.Count; r++)
|
||
{
|
||
dt1.Rows[r]["ID"] = r + 1;
|
||
}
|
||
}
|
||
ViewData(dt1, "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条。");
|
||
//dataGridView1.DataSource = dt1;
|
||
con.Close();
|
||
CommodityInfo.Focus();
|
||
//label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条。";
|
||
//progressBar1.Visible = false;
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteServiceLog(ex.Message);
|
||
con.Close();
|
||
}
|
||
}
|
||
#endregion
|
||
public void ShowMessage(string msg)
|
||
{
|
||
this.Invoke(new MessageBoxShow(MessageBoxShow_F), new object[] { msg });
|
||
}
|
||
|
||
delegate void MessageBoxShow(string msg);
|
||
void MessageBoxShow_F(string msg)
|
||
{
|
||
MessageBox.Show(msg, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
public void ViewData(DataTable dt, string msg)
|
||
{
|
||
Invoke(new dataview(dataGridView_D), new object[] { dt, msg });
|
||
}
|
||
delegate void dataview(DataTable dt, string msg);
|
||
void dataGridView_D(DataTable dt, string msg)
|
||
{
|
||
dataGridView1.DataSource = dt;
|
||
dataGridView1.MultiSelect = false;
|
||
dataGridView1.Rows[dataGridView1.RowCount - 1].Selected = true;
|
||
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
|
||
label11.Text = msg;
|
||
progressBar1.Visible = false;
|
||
ChangeColor();
|
||
}
|
||
|
||
private void RunWorkerCompleted_Handler(object sender, RunWorkerCompletedEventArgs args)
|
||
{
|
||
//progressBar1.Value = 0;
|
||
//if (args.Cancelled)
|
||
//{
|
||
// MessageBox.Show("上传任务已取消。", "提示信息");
|
||
//}
|
||
//else
|
||
//{
|
||
// MessageBox.Show("后台任务正常结束。", "消息");
|
||
//}
|
||
}
|
||
|
||
|
||
|
||
#region 上传失败记录显示红色
|
||
public void ChangeColor()
|
||
{
|
||
for (int i = 0; i < dataGridView1.Rows.Count; i++)
|
||
{
|
||
if (dataGridView1.Rows[i].Cells["Flag"].Value.ToString() == "1")
|
||
{
|
||
for (int j = 0; j < dataGridView1.Rows[i].Cells.Count; j++)
|
||
{
|
||
dataGridView1.Rows[i].Cells[j].Style.ForeColor = Color.Red;
|
||
dataGridView1.Rows[i].Cells[j].Style.Font = new Font(dataGridView1.Font, FontStyle.Bold);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 数据窗口添加行号
|
||
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
|
||
{
|
||
//SolidBrush b = new SolidBrush(this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor);
|
||
//e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dataGridView1.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 12, e.RowBounds.Location.Y + 4);
|
||
//Application.DoEvents();
|
||
}
|
||
#endregion
|
||
private void InventoryToolMain_FormClosing(object sender, FormClosingEventArgs e)
|
||
{
|
||
if (bgWorker.IsBusy)
|
||
{
|
||
MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
e.Cancel = true;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
}
|